diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C index 56407ef4..422cd839 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C @@ -51,7 +51,8 @@ Foam::chemistryModel::chemistryModel nSpecie_(Y_.size()), nReaction_(reactions_.size()), - RR_(nSpecie_) + RR_(nSpecie_), + eRR_(nSpecie_) { // create the fields for the chemistry sources forAll(RR_, fieldI) @@ -73,10 +74,45 @@ Foam::chemistryModel::chemistryModel dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0) ) ); + + eRR_.set + ( + fieldI, + new DimensionedField + ( + IOobject + ( + "eRR." + Y_[fieldI].name(), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0) + ) + ); } Info<< "chemistryModel: Number of species = " << nSpecie_ << " and reactions = " << nReaction_ << endl; + + label neReactions_ = 0; + + for (label i=0; i Foam::scalar Foam::chemistryModel::omegaI ( @@ -576,7 +659,8 @@ Foam::chemistryModel::Sh() const forAll(Sh, cellI) { const scalar hi = specieThermo_[i].Hc(); - Sh[cellI] -= hi*RR_[i][cellI]; + Sh[cellI] -= hi*(RR_[i][cellI]-eRR_[i][cellI]); + // Sh[cellI] -= hi*(RR_[i][cellI]); } } } @@ -769,7 +853,8 @@ void Foam::chemistryModel::calculate() for (label i=0; i::calculate() } const scalarField dcdt(omega(c, Ti, pi)); + const scalarField dcdte(eomega(c, Ti, pi)); for (label i=0; i::solve for (label i=0; i > RR_; + //- List of source rate per specie by electron reactions [kg/m3/s] + PtrList > eRR_; + // Protected Member Functions @@ -107,6 +110,10 @@ protected: // (e.g. for multi-chemistry model) inline PtrList >& RR(); + //- Write access to chemical source terms + // (e.g. for multi-chemistry model) + inline PtrList >& eRR(); + public: @@ -146,6 +153,14 @@ public: const scalar p ) const; + //- rate of change in concentration, for each species, by electron reactions + tmp eomega + ( + const scalarField& c, + const scalar T, + const scalar p + ) const; + //- Return the reaction rate for reaction r and the reference // species and charateristic times virtual scalar omega @@ -198,6 +213,18 @@ public: const label i ); + //- Return const access to the chemical source terms for specie, i + inline const DimensionedField& eRR + ( + const label i + ) const; + + //- Return non const access to chemical source terms [kg/m3/s] + virtual DimensionedField& eRR + ( + const label i + ); + //- Return reaction rate of the specieI in reactionI virtual tmp > calculateRR ( diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H index c009a11e..ec8791a2 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H @@ -89,4 +89,33 @@ Foam::chemistryModel::RR } +template +inline Foam::PtrList >& +Foam::chemistryModel::eRR() +{ + return eRR_; +} + + +template +inline const Foam::DimensionedField& +Foam::chemistryModel::eRR +( + const label i +) const +{ + return eRR_[i]; +} + +template +Foam::DimensionedField& +Foam::chemistryModel::eRR +( + const label i +) +{ + return eRR_[i]; +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/specie/specie/specie.C b/src/thermophysicalModels/specie/specie/specie.C index 52799c4b..95a7ea96 100644 --- a/src/thermophysicalModels/specie/specie/specie.C +++ b/src/thermophysicalModels/specie/specie/specie.C @@ -44,6 +44,9 @@ const Foam::scalar Foam::specie::e = constant::electromagnetic::e.value(); //- Avogadro number (default in [1/mol]) const Foam::scalar Foam::specie::NA = constant::physicoChemical::NA.value()*1000; +//- Boltzmann constant (default in [J/K]) +const Foam::scalar Foam::specie::k = constant::physicoChemical::k.value(); + namespace Foam { defineTypeNameAndDebug(specie, 0); diff --git a/src/thermophysicalModels/specie/specie/specie.H b/src/thermophysicalModels/specie/specie/specie.H index 3b1a4838..8e555f3d 100644 --- a/src/thermophysicalModels/specie/specie/specie.H +++ b/src/thermophysicalModels/specie/specie/specie.H @@ -94,6 +94,9 @@ public: //- Avogadro number [1/kmol] static const scalar NA; + //- Boltzmann constant [J/K] + static const scalar k; + // Constructors