From 796b53d4f6f24d3340fea28e0f97fcbc3eeb75ba Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Wed, 7 Jun 2023 10:01:10 +0800 Subject: [PATCH 01/12] Update dfChemistryModel.H --- src/dfChemistryModel/dfChemistryModel.H | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dfChemistryModel/dfChemistryModel.H b/src/dfChemistryModel/dfChemistryModel.H index b1554042a..16aa5f52e 100644 --- a/src/dfChemistryModel/dfChemistryModel.H +++ b/src/dfChemistryModel/dfChemistryModel.H @@ -107,6 +107,8 @@ public IOdictionary PtrList rhoD_; // species absolute enthalpy, [J/kg] PtrList hai_; + // enthalpy field, [J/kg] + volScalarField& ha_; // species chemistry enthalpy, [J/kg] scalarList hc_; // temp mass fraction From dec763e6838143bb4c02de9b7235e103addf51e4 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Wed, 7 Jun 2023 10:29:27 +0800 Subject: [PATCH 02/12] Update dfChemistryModel.C --- src/dfChemistryModel/dfChemistryModel.C | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/dfChemistryModel/dfChemistryModel.C b/src/dfChemistryModel/dfChemistryModel.C index 19fcc5577..daf22291f 100644 --- a/src/dfChemistryModel/dfChemistryModel.C +++ b/src/dfChemistryModel/dfChemistryModel.C @@ -87,6 +87,18 @@ Foam::dfChemistryModel::dfChemistryModel mesh_, dimensionedScalar(dimEnergy/dimVolume/dimTime, 0) ), + ha_ + ( + IOobject + ( + "ha", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + this->thermo().he() + ), selectDNN_ ( IOobject From 0500ccd34429bfd896cfe02a4a2f59b31e865e68 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Wed, 7 Jun 2023 10:31:07 +0800 Subject: [PATCH 03/12] Update dfChemistryModel.H --- src/dfChemistryModel/dfChemistryModel.H | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dfChemistryModel/dfChemistryModel.H b/src/dfChemistryModel/dfChemistryModel.H index 16aa5f52e..1fc0e07fc 100644 --- a/src/dfChemistryModel/dfChemistryModel.H +++ b/src/dfChemistryModel/dfChemistryModel.H @@ -107,8 +107,6 @@ public IOdictionary PtrList rhoD_; // species absolute enthalpy, [J/kg] PtrList hai_; - // enthalpy field, [J/kg] - volScalarField& ha_; // species chemistry enthalpy, [J/kg] scalarList hc_; // temp mass fraction @@ -130,6 +128,8 @@ public IOdictionary volScalarField& psi_; // heat release rate, [J/m^3/s] volScalarField Qdot_; + // enthalpy field, [m^2/s^2] + volScalarField& ha_; // DNN selection fields volScalarField selectDNN_; From 2b3808a700807b7aed9246230af580b784a08a8f Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Wed, 7 Jun 2023 10:53:38 +0800 Subject: [PATCH 04/12] Update dfChemistryModel.C --- src/dfChemistryModel/dfChemistryModel.C | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/dfChemistryModel/dfChemistryModel.C b/src/dfChemistryModel/dfChemistryModel.C index daf22291f..efeb2bff4 100644 --- a/src/dfChemistryModel/dfChemistryModel.C +++ b/src/dfChemistryModel/dfChemistryModel.C @@ -97,7 +97,8 @@ Foam::dfChemistryModel::dfChemistryModel IOobject::NO_READ, IOobject::AUTO_WRITE ), - this->thermo().he() + mesh_, + dimensionedScalar("ha", dimensionSet(0,2,-2,0,0,0,0), 0) ), selectDNN_ ( @@ -386,6 +387,9 @@ void Foam::dfChemistryModel::setNumerics(Cantera::ReactorNet &sim) template void Foam::dfChemistryModel::correctThermo() { + // update enthalpy + ha_ = this->thermo().he(); + try { psi_.oldTime(); From 53918e136210e4d970dfd1f0fddd0586bb6dfbbc Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Wed, 7 Jun 2023 11:06:41 +0800 Subject: [PATCH 05/12] Update dfChemistryModel.H --- src/dfChemistryModel/dfChemistryModel.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dfChemistryModel/dfChemistryModel.H b/src/dfChemistryModel/dfChemistryModel.H index 1fc0e07fc..c1c13ec04 100644 --- a/src/dfChemistryModel/dfChemistryModel.H +++ b/src/dfChemistryModel/dfChemistryModel.H @@ -129,7 +129,7 @@ public IOdictionary // heat release rate, [J/m^3/s] volScalarField Qdot_; // enthalpy field, [m^2/s^2] - volScalarField& ha_; + volScalarField ha_; // DNN selection fields volScalarField selectDNN_; From 9608e12807b95e7ce9824dc425d659e986c3c060 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:49:32 +0800 Subject: [PATCH 06/12] Update PaSR.C --- src/dfCombustionModels/PaSR/PaSR.C | 80 +++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 8 deletions(-) diff --git a/src/dfCombustionModels/PaSR/PaSR.C b/src/dfCombustionModels/PaSR/PaSR.C index 30f04e51f..a171e7b3c 100644 --- a/src/dfCombustionModels/PaSR/PaSR.C +++ b/src/dfCombustionModels/PaSR/PaSR.C @@ -274,11 +274,11 @@ void Foam::combustionModels::PaSR::correct() const volScalarField& YCO2 = this->chemistryPtr_->Y()[specieCO2]; const volScalarField& YH2 = this->chemistryPtr_->Y()[specieH2]; - //- initialize fuel and oxidizer chemitry time scale + //- initialize fuel and oxidizer chemistry time scale volScalarField t_fuel=tc_; - volScalarField t_oxidizer=tc_; - volScalarField t_CO2=tc_; - volScalarField t_H2=tc_; + volScalarField t_oxidizer=tc_; + volScalarField t_CO2=tc_; + volScalarField t_H2=tc_; forAll(rho,cellI) { @@ -303,25 +303,89 @@ void Foam::combustionModels::PaSR::correct() t_CO2[cellI] = rho[cellI] * YCO2[cellI]/(RR_CO2); } - if ( (RR_H2 < 0.0) && (YH2[cellI] > 1e-10)) + if( (RR_H2 < 0.0) && (YH2[cellI] > 1e-10)) { t_H2[cellI] = -rho[cellI] * YH2[cellI]/(RR_H2); } tc_[cellI] = max(t_oxidizer[cellI],t_fuel[cellI]); - tc_[cellI] = max(t_CO2[cellI],tc_[cellI]); + tc_[cellI] = max(t_CO2[cellI],tc_[cellI]); - tc_[cellI] = max(t_H2[cellI],tc_[cellI]); + tc_[cellI] = max(t_H2[cellI],tc_[cellI]); } } - if(chemistryScaleType_=="formationRate") + else if(chemistryScaleType_=="formationRate") { tc_ = this->tc(); } + else if(chemistryScaleType_=="reactionRate") + { + PtrList& Y = this->chemistryPtr_->Y(); + + doublereal fwdRate[mixture_.nReactions()]; + doublereal revRate[mixture_.nReactions()]; + doublereal X[mixture_.nSpecies()]; + + forAll(rho, celli) + { + const scalar rhoi = rho[celli]; + const scalar Ti = T_[celli]; + const scalar pi = p_[celli]; + + scalar cSum = 0; + + for (label i=0; i< mixture_.nSpecies(); i++) + { + X[i] = rhoi*Y[i][celli]/mixture_.CanteraGas()->molecularWeight(i); + cSum += X[i]; + } + + mixture_.CanteraGas()->setState_TPX(Ti, pi, X); + mixture_.CanteraKinetics()->getFwdRatesOfProgress(fwdRate); + mixture_.CanteraKinetics()->getRevRatesOfProgress(revRate); + + scalar sumW = 0, sumWRateByCTot = 0; + + for (label i=0; i< mixture_.nReactions(); i++) + { + + std::shared_ptr R(mixture_.CanteraKinetics()->reaction(i)); + + scalar wf = 0; + for (const auto& sp : R->products) + { + wf += sp.second*fwdRate[i]; + } + sumW += wf; + sumWRateByCTot += sqr(wf); + + scalar wr = 0; + for (const auto& sp : R->reactants) + { + wr += sp.second*revRate[i]; + } + sumW += wr; + sumWRateByCTot += sqr(wr); + } + + tc_[celli] = sumWRateByCTot == 0 ? vGreat : sumW/sumWRateByCTot*cSum; + } + + tc_.correctBoundaryConditions(); + } + + else + { + FatalErrorInFunction + << "Unknown chemicalScaleType type " + << chemistryScaleType_ + << ", not in table" << nl << nl + << exit(FatalError); + } forAll(kappa_, cellI) { From b05d581959b9a3b3689092b57c4dcf5dd3d5b9d7 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:56:45 +0800 Subject: [PATCH 07/12] Update dfChemistryModel.H --- src/dfChemistryModel/dfChemistryModel.H | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/dfChemistryModel/dfChemistryModel.H b/src/dfChemistryModel/dfChemistryModel.H index c1c13ec04..b1554042a 100644 --- a/src/dfChemistryModel/dfChemistryModel.H +++ b/src/dfChemistryModel/dfChemistryModel.H @@ -128,8 +128,6 @@ public IOdictionary volScalarField& psi_; // heat release rate, [J/m^3/s] volScalarField Qdot_; - // enthalpy field, [m^2/s^2] - volScalarField ha_; // DNN selection fields volScalarField selectDNN_; From f82a1d674dad960778c2918e2f12d68bf090fb59 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:57:09 +0800 Subject: [PATCH 08/12] Update dfChemistryModel.C --- src/dfChemistryModel/dfChemistryModel.C | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/dfChemistryModel/dfChemistryModel.C b/src/dfChemistryModel/dfChemistryModel.C index dd57e9ae7..cced9b813 100644 --- a/src/dfChemistryModel/dfChemistryModel.C +++ b/src/dfChemistryModel/dfChemistryModel.C @@ -87,19 +87,6 @@ Foam::dfChemistryModel::dfChemistryModel mesh_, dimensionedScalar(dimEnergy/dimVolume/dimTime, 0) ), - ha_ - ( - IOobject - ( - "ha", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh_, - dimensionedScalar("ha", dimensionSet(0,2,-2,0,0,0,0), 0) - ), selectDNN_ ( IOobject From f0710d19255ba613f24122b65075f0404ad6b937 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:59:14 +0800 Subject: [PATCH 09/12] Update dfChemistryModel.C --- src/dfChemistryModel/dfChemistryModel.C | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/dfChemistryModel/dfChemistryModel.C b/src/dfChemistryModel/dfChemistryModel.C index cced9b813..ef3bc8bb9 100644 --- a/src/dfChemistryModel/dfChemistryModel.C +++ b/src/dfChemistryModel/dfChemistryModel.C @@ -373,10 +373,7 @@ void Foam::dfChemistryModel::setNumerics(Cantera::ReactorNet &sim) template void Foam::dfChemistryModel::correctThermo() -{ - // update enthalpy - ha_ = this->thermo().he(); - +{ try { psi_.oldTime(); From ede75104be9c46176704c1a5f9d3c23493fb64eb Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Fri, 23 Jun 2023 15:06:04 +0800 Subject: [PATCH 10/12] Update PaSR.C --- src/dfCombustionModels/PaSR/PaSR.C | 54 +++++++++++++++--------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/dfCombustionModels/PaSR/PaSR.C b/src/dfCombustionModels/PaSR/PaSR.C index a171e7b3c..918fbf953 100644 --- a/src/dfCombustionModels/PaSR/PaSR.C +++ b/src/dfCombustionModels/PaSR/PaSR.C @@ -280,39 +280,39 @@ void Foam::combustionModels::PaSR::correct() volScalarField t_CO2=tc_; volScalarField t_H2=tc_; - forAll(rho,cellI) - { - - scalar RR_fuel = this->chemistryPtr_->RR(specieFuel)[cellI]; - scalar RR_oxidizer = this->chemistryPtr_->RR(specieOxidizer)[cellI]; - scalar RR_CO2 = this->chemistryPtr_->RR(specieCO2)[cellI]; - scalar RR_H2 = this->chemistryPtr_->RR(specieH2)[cellI]; - - if( (RR_oxidizer < 0.0) && (Yoxidizer[cellI] > 1e-10) ) - { - t_oxidizer[cellI] = -rho[cellI] * Yoxidizer[cellI]/(RR_oxidizer); - } + forAll(rho,cellI) + { + + scalar RR_fuel = this->chemistryPtr_->RR(specieFuel)[cellI]; + scalar RR_oxidizer = this->chemistryPtr_->RR(specieOxidizer)[cellI]; + scalar RR_CO2 = this->chemistryPtr_->RR(specieCO2)[cellI]; + scalar RR_H2 = this->chemistryPtr_->RR(specieH2)[cellI]; + + if( (RR_oxidizer < 0.0) && (Yoxidizer[cellI] > 1e-10) ) + { + t_oxidizer[cellI] = -rho[cellI] * Yoxidizer[cellI]/(RR_oxidizer); + } - if ( (RR_fuel < 0.0) && (Yfuel[cellI] > 1e-10)) - { - t_fuel[cellI] = -rho[cellI] * Yfuel[cellI]/(RR_fuel); - } + if ( (RR_fuel < 0.0) && (Yfuel[cellI] > 1e-10)) + { + t_fuel[cellI] = -rho[cellI] * Yfuel[cellI]/(RR_fuel); + } - if ( (RR_CO2 > 0.0) && (YCO2[cellI] > 1e-10)) - { - t_CO2[cellI] = rho[cellI] * YCO2[cellI]/(RR_CO2); - } + if ( (RR_CO2 > 0.0) && (YCO2[cellI] > 1e-10)) + { + t_CO2[cellI] = rho[cellI] * YCO2[cellI]/(RR_CO2); + } - if( (RR_H2 < 0.0) && (YH2[cellI] > 1e-10)) - { - t_H2[cellI] = -rho[cellI] * YH2[cellI]/(RR_H2); - } + if( (RR_H2 < 0.0) && (YH2[cellI] > 1e-10)) + { + t_H2[cellI] = -rho[cellI] * YH2[cellI]/(RR_H2); + } - tc_[cellI] = max(t_oxidizer[cellI],t_fuel[cellI]); + tc_[cellI] = max(t_oxidizer[cellI],t_fuel[cellI]); - tc_[cellI] = max(t_CO2[cellI],tc_[cellI]); + tc_[cellI] = max(t_CO2[cellI],tc_[cellI]); - tc_[cellI] = max(t_H2[cellI],tc_[cellI]); + tc_[cellI] = max(t_H2[cellI],tc_[cellI]); } } From e94b92fe1ca31fd3a34e4bf1da6a7a8551c94fb3 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:08:28 +0800 Subject: [PATCH 11/12] Update PaSR.H --- src/dfCombustionModels/PaSR/PaSR.H | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dfCombustionModels/PaSR/PaSR.H b/src/dfCombustionModels/PaSR/PaSR.H index ccad40c84..f65e83021 100644 --- a/src/dfCombustionModels/PaSR/PaSR.H +++ b/src/dfCombustionModels/PaSR/PaSR.H @@ -58,7 +58,8 @@ class PaSR public laminar { // Private Data - + CanteraMixture& mixture_; + //- thermo mu volScalarField& mu_; From 122376a802fa34c3d90f40b41b576a8e3402cb56 Mon Sep 17 00:00:00 2001 From: minzhang0929 <78373564+minzhang0929@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:09:04 +0800 Subject: [PATCH 12/12] Update PaSR.C --- src/dfCombustionModels/PaSR/PaSR.C | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dfCombustionModels/PaSR/PaSR.C b/src/dfCombustionModels/PaSR/PaSR.C index 918fbf953..a548084cd 100644 --- a/src/dfCombustionModels/PaSR/PaSR.C +++ b/src/dfCombustionModels/PaSR/PaSR.C @@ -37,6 +37,7 @@ Foam::combustionModels::PaSR::PaSR ) : laminar(modelType, thermo, turb, combustionProperties), + mixture_(dynamic_cast(thermo)), // mu_(const_cast(dynamic_cast(thermo).mu()())), mu_(const_cast(dynamic_cast(thermo).mu()())), p_(this->thermo().p()),