diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C index 98e357950d8c3e1a6ccc7610bae5bfe145c76f3e..e610f956b6d32415673c44942fd4528a92ecd0ef 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C @@ -151,48 +151,8 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::cellValueSourceCorrection const label cellI ) { - scalar massCell = this->massCell(cellI); - - scalar addedMass = 0.0; - forAll(td.cloud().rhoTrans(), i) - { - addedMass += td.cloud().rhoTrans(i)[cellI]; - } - - this->rhoc_ += addedMass/td.cloud().pMesh().cellVolumes()[cellI]; - - scalar massCellNew = massCell + addedMass; - this->Uc_ += td.cloud().UTrans()[cellI]/massCellNew; - - scalar CpEff = 0; - if (addedMass > ROOTVSMALL) - { - forAll(td.cloud().rhoTrans(), i) - { - scalar Y = td.cloud().rhoTrans(i)[cellI]/addedMass; - CpEff += Y*td.cloud().thermo().carrier().Cp(i, this->Tc_); - } - } - const scalar Cpc = td.CpInterp().psi()[cellI]; - this->Cpc_ = (massCell*Cpc + addedMass*CpEff)/massCellNew; - - this->Tc_ += td.cloud().hsTrans()[cellI]/(this->Cpc_*massCellNew); - - if (this->Tc_ < td.cloud().constProps().TMin()) - { - WarningIn - ( - "void Foam::ReactingParcel<ParcelType>::cellValueSourceCorrection" - "(" - "TrackData&, " - "const scalar, " - "const label" - ")" - ) << "Limiting observed temperature in cell " << cellI << " to " - << td.cloud().constProps().TMin() << nl << endl; - - this->Tc_ = td.cloud().constProps().TMin(); - } + // Re-use correction from reacting parcel + ReactingParcel<ParcelType>::cellValueSourceCorrection(td, dt, cellI); } diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C index 2c05144d9d3bf7c8bffa5ce03c9b6d9b2c76a461..b5199b3465222f03cd452dec88dbdba2cec58ce7 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -75,28 +75,43 @@ void Foam::ReactingParcel<ParcelType>::cellValueSourceCorrection const label cellI ) { - scalar massCell = this->massCell(cellI); - scalar addedMass = 0.0; forAll(td.cloud().rhoTrans(), i) { addedMass += td.cloud().rhoTrans(i)[cellI]; } - this->rhoc_ += addedMass/td.cloud().pMesh().cellVolumes()[cellI]; + if (addedMass < ROOTVSMALL) + { + return; + } + + scalar massCell = this->massCell(cellI); + + const scalar V = td.cloud().pMesh().cellVolumes()[cellI]; + this->rhoc_ += addedMass/V; scalar massCellNew = massCell + addedMass; this->Uc_ += td.cloud().UTrans()[cellI]/massCellNew; - scalar CpEff = 0; + scalar CpEff = 0.0; + scalar CsEff = 0.0; + scalar Csc = 0.0; if (addedMass > ROOTVSMALL) { forAll(td.cloud().rhoTrans(), i) { scalar Y = td.cloud().rhoTrans(i)[cellI]/addedMass; CpEff += Y*td.cloud().composition().carrier().Cp(i, this->Tc_); + + scalar W = td.cloud().composition().carrier().W(i); + CsEff += td.cloud().rhoTrans(i)[cellI]/V*Y/W; + scalar Yc = td.cloud().composition().carrier().Y(i)[cellI]; + Csc += massCell/V*Yc/W; } } + CsEff = (massCell*Csc + addedMass*CsEff)/massCellNew; + const scalar Cpc = td.CpInterp().psi()[cellI]; this->Cpc_ = (massCell*Cpc + addedMass*CpEff)/massCellNew; @@ -117,6 +132,8 @@ void Foam::ReactingParcel<ParcelType>::cellValueSourceCorrection this->Tc_ = td.cloud().constProps().TMin(); } + + this->pc_ = CsEff*specie::RR*this->Tc_; }