sandbox/ecipriano/src/spark.h
Spark Model
This module defines a spark (hot spot) which is useful for the ingition of fuel-oxidizer mixtures in combustion simulations. The idea, based on the implementation of Cuoci et al. 2013, is to increase the temperature in a small spherical region of domain defined by the user. \displaystyle T = T_s - (T_s - 300.)e^{-30(t-t_s)} where T_s is the peak spark temperature, while t_s is the time of activation of the spark.
#define SPARK
User data
We define a struct that gathers all the data required by the spark model. The spark must be applied on a temperature field which must be provided as spark.T.
struct SparkModel {
coord position;
double time;
double duration;
double temperature;
double diameter;
scalar T;
};
struct SparkModel spark = {
.position = {0.,0.,0.}, // Coordinate of the ignition point
.time = 0., // Time at which the ignition starts
.duration = 0., // Duration of the spark
.temperature = 0., // Maximum temperature of the spark
.diameter = 0., // Diameter of the spark
};
Implementation
Main spark event, where the cells included by the spark diameter are identified, and the temperature increase is applied on these cells.
event set_spark (i++) {
if (t >= spark.time && t <= (spark.time + spark.duration)) {
scalar spark_T = spark.T;
foreach () {
double dist = 0.;
dist = sq (x - spark.position.x);
#if dimension > 1
dist += sq (y - spark.position.y);
#endif
#if dimension > 2
dist += sq (z - spark.position.z);
#endif
dist = sqrt (dist);
if (dist < 0.5*spark.diameter && spark_T[] < spark.temperature) {
spark_T[] = spark.temperature -
(spark.temperature - 300.)*exp (-30.*(t - spark.time));
}
}
}
}
References
[cuoci2013numerical] |
Alberto Cuoci, Alessio Frassoldati, Tiziano Faravelli, and Eliseo Ranzi. Numerical modeling of laminar flames with detailed kinetics based on the operator-splitting method. Energy & fuels, 27(12):7730–7753, 2013. |