diff --git a/src/dfChemistryModel/dfChemistryModel.C b/src/dfChemistryModel/dfChemistryModel.C index c3d62f644..cf7b00733 100644 --- a/src/dfChemistryModel/dfChemistryModel.C +++ b/src/dfChemistryModel/dfChemistryModel.C @@ -65,6 +65,7 @@ Foam::dfChemistryModel::dfChemistryModel hrtTemp_(mixture_.nSpecies()), cTemp_(mixture_.nSpecies()), RR_(mixture_.nSpecies()), + wrate_(mixture_.nSpecies()), alpha_(const_cast(thermo.alpha())), T_(thermo.T()), p_(thermo.p()), @@ -231,7 +232,26 @@ Foam::dfChemistryModel::dfChemistryModel ) ); } - + forAll(wrate_, fieldi) + { + wrate_.set + ( + fieldi, + new volScalarField::Internal + ( + IOobject + ( + "wrate." + Y_[fieldi].name(), + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensionedScalar(dimMass/dimVolume/dimTime, 0) + ) + ); + } forAll(rhoD_, i) { rhoD_.set @@ -727,6 +747,34 @@ Foam::dfChemistryModel::updateReactionRates return deltaTMin; } +template +void Foam::dfChemistryModel::calculateW() +{ + doublereal Yi[mixture_.nSpecies()]; + doublereal twrate[mixture_.nSpecies()]; + + forAll(rho_, celli) + { + const scalar rhoi = rho_[celli]; + const scalar Ti = T_[celli]; + const scalar pi = p_[celli]; + + for (label i=0; isetState_TPY(Ti, pi, Yi); + + CanteraKinetics_->getNetProductionRates(twrate); + + for (label i=0; imolecularWeight(i); + } + } +} + template Foam::tmp> Foam::dfChemistryModel::calculateRR diff --git a/src/dfChemistryModel/dfChemistryModel.H b/src/dfChemistryModel/dfChemistryModel.H index b1554042a..f514f91c2 100644 --- a/src/dfChemistryModel/dfChemistryModel.H +++ b/src/dfChemistryModel/dfChemistryModel.H @@ -119,6 +119,8 @@ public IOdictionary mutable scalarList cTemp_; // mass change rate, [kg/m^3/s] PtrList RR_; + // net production rates, [kg/m^3/s] + PtrList wrate_; hashedWordList species_; volScalarField& alpha_; volScalarField& T_; @@ -285,6 +287,10 @@ public: //- Return access to chemical source terms [kg/m^3/s] volScalarField::Internal& RR(const label i) {return RR_[i];} + void calculateW(); + + volScalarField::Internal& wrate(const label i) {return wrate_[i];} + tmp calculateRR ( const label reactionI,