From 6f1b95f833eaf1ae08b781c96845143ab62bf2c2 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Sun, 10 May 2015 12:31:17 +0100 Subject: [PATCH] chemistryModel: Added optional Treact to reduce the time of chemistry evaluation Treact: Temperature below which the reaction rates are assumed 0 --- .../chemistryModel/chemistryModel.C | 50 ++++++++++++------- .../chemistryModel/chemistryModel.H | 9 ++++ .../chemistryModel/chemistryModelI.H | 16 ++++++ 3 files changed, 56 insertions(+), 19 deletions(-) diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C index 4347fcf6424..8b2c308d265 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 ee5482ecde7..dfcea6c611f 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 c009a11e469..9a97c8a3901 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 -- GitLab