diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C index 4347fcf6424651df7be45774563f5fc1777f57cf..8b2c308d265e6872d9a44a3b32bab76ec6c6acaf 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C @@ -51,7 +51,7 @@ Foam::chemistryModel<CompType, ThermoType>::chemistryModel nSpecie_(Y_.size()), nReaction_(reactions_.size()), - + Treact_(CompType::template lookupOrDefault<scalar>("Treact", 0.0)), RR_(nSpecie_) { // create the fields for the chemistry sources @@ -796,32 +796,44 @@ Foam::scalar Foam::chemistryModel<CompType, ThermoType>::solve forAll(rho, celli) { - const scalar rhoi = rho[celli]; - scalar pi = p[celli]; scalar Ti = T[celli]; - for (label i=0; i<nSpecie_; i++) + if (Ti > Treact_) { - c[i] = rhoi*Y_[i][celli]/specieThermo_[i].W(); - c0[i] = c[i]; - } + const scalar rhoi = rho[celli]; + scalar pi = p[celli]; - // Initialise time progress - scalar timeLeft = deltaT[celli]; + for (label i=0; i<nSpecie_; i++) + { + c[i] = rhoi*Y_[i][celli]/specieThermo_[i].W(); + c0[i] = c[i]; + } - // Calculate the chemical source terms - while (timeLeft > SMALL) - { - scalar dt = timeLeft; - this->solve(c, Ti, pi, dt, this->deltaTChem_[celli]); - timeLeft -= dt; - } + // Initialise time progress + scalar timeLeft = deltaT[celli]; + + // Calculate the chemical source terms + while (timeLeft > SMALL) + { + scalar dt = timeLeft; + this->solve(c, Ti, pi, dt, this->deltaTChem_[celli]); + timeLeft -= dt; + } - deltaTMin = min(this->deltaTChem_[celli], deltaTMin); + deltaTMin = min(this->deltaTChem_[celli], deltaTMin); - for (label i=0; i<nSpecie_; i++) + for (label i=0; i<nSpecie_; i++) + { + RR_[i][celli] = + (c[i] - c0[i])*specieThermo_[i].W()/deltaT[celli]; + } + } + else { - RR_[i][celli] = (c[i] - c0[i])*specieThermo_[i].W()/deltaT[celli]; + for (label i=0; i<nSpecie_; i++) + { + RR_[i][celli] = 0; + } } } diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H index ee5482ecde71ad5c5c4ca155d176c56a095cec65..dfcea6c611f1f93eff8c007a24e58b43fabc6416 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H @@ -97,6 +97,9 @@ protected: //- Number of reactions label nReaction_; + //- Temperature below which the reaction rates are assumed 0 + scalar Treact_; + //- List of reaction rate per specie [kg/m3/s] PtrList<DimensionedField<scalar, volMesh> > RR_; @@ -138,6 +141,12 @@ public: //- The number of reactions inline label nReaction() const; + //- Temperature below which the reaction rates are assumed 0 + inline scalar Treact() const; + + //- Temperature below which the reaction rates are assumed 0 + inline scalar& Treact(); + //- dc/dt = omega, rate of change in concentration, for each species virtual tmp<scalarField> omega ( diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H index c009a11e4695e0e4f3188092129b1475d3857d92..9a97c8a39013631ce6784ad00a3ff1cebe272e6b 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H @@ -68,6 +68,22 @@ Foam::chemistryModel<CompType, ThermoType>::nReaction() const } +template<class CompType, class ThermoType> +inline Foam::scalar +Foam::chemistryModel<CompType, ThermoType>::Treact() const +{ + return Treact_; +} + + +template<class CompType, class ThermoType> +inline Foam::scalar& +Foam::chemistryModel<CompType, ThermoType>::Treact() +{ + return Treact_; +} + + template<class CompType, class ThermoType> inline const Foam::DimensionedField<Foam::scalar, Foam::volMesh>& Foam::chemistryModel<CompType, ThermoType>::RR