From 947dd441888c53f521eb08d77a76e2c6aa6cb010 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Wed, 6 Dec 2023 17:13:25 +0000 Subject: [PATCH] multicomponentThermo: Dimensioned constant specie properties The specie molecular mass (Wi) and formation enthalpy (hfi) methods now return dimensioned scalars. This permits their direct inclusion into dimensioned field expressions. Non-dimensioned methods have been retained with a "Value" suffix (i.e., WiValue and hfiValue). --- .../nonRandomTwoLiquid/nonRandomTwoLiquid.C | 18 ++-------- .../saturated/saturated.C | 9 +---- .../solvers/chemFoam/thermoTypeFunctions.H | 2 +- .../fluid/laminar/Fickian/Fickian.C | 19 ++-------- .../laminar/MaxwellStefan/MaxwellStefan.C | 2 +- .../mixtureFraction/mixtureFraction.C | 4 +-- .../singleStepCombustion.C | 22 ++++++------ .../ReactingMultiphaseParcel.C | 2 +- .../Templates/ReactingParcel/ReactingParcel.C | 8 ++--- .../CompositionModel/CompositionModel.C | 2 +- .../LiquidEvaporation/LiquidEvaporation.C | 2 +- .../LiquidEvaporationBoil.C | 2 +- .../COxidationDiffusionLimitedRate.C | 6 ++-- .../COxidationHurtMitchell.C | 6 ++-- .../COxidationIntrinsicRate.C | 6 ++-- .../COxidationKineticDiffusionLimitedRate.C | 6 ++-- .../COxidationMurphyShaddix.C | 6 ++-- .../greyMean/greyMean.C | 8 +++-- .../wideBand/wideBand.C | 4 +-- ...adsorptionMassFractionFvPatchScalarField.C | 2 +- ...ableBaffleMassFractionFvPatchScalarField.C | 2 +- .../massFractions/massFractions.C | 5 ++- .../moleFractions/moleFractions.C | 9 +---- .../MulticomponentThermo.C | 36 +++++++++++++++++-- .../MulticomponentThermo.H | 10 ++++-- .../multicomponentThermo.H | 12 +++++-- 26 files changed, 107 insertions(+), 103 deletions(-) diff --git a/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/nonRandomTwoLiquid/nonRandomTwoLiquid.C b/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/nonRandomTwoLiquid/nonRandomTwoLiquid.C index 14c1aa6967..756dc14c7e 100644 --- a/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/nonRandomTwoLiquid/nonRandomTwoLiquid.C +++ b/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/nonRandomTwoLiquid/nonRandomTwoLiquid.C @@ -171,26 +171,12 @@ void Foam::interfaceCompositionModels::nonRandomTwoLiquid::update const volScalarField X1 ( - thermo().Y(species1Index_) - *W - /dimensionedScalar - ( - "W", - dimMass/dimMoles, - thermo().Wi(species1Index_) - ) + thermo().Y(species1Index_)*W/thermo().Wi(species1Index_) ); const volScalarField X2 ( - thermo().Y(species2Index_) - *W - /dimensionedScalar - ( - "W", - dimMass/dimMoles, - thermo().Wi(species2Index_) - ) + thermo().Y(species2Index_)*W/thermo().Wi(species2Index_) ); const volScalarField alpha12(alpha12_ + Tf*beta12_); diff --git a/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/saturated/saturated.C b/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/saturated/saturated.C index f7a8841b02..b3371f17dd 100644 --- a/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/saturated/saturated.C +++ b/applications/modules/multiphaseEuler/interfacialModels/interfaceCompositionModels/saturated/saturated.C @@ -48,14 +48,7 @@ namespace interfaceCompositionModels Foam::tmp Foam::interfaceCompositionModels::saturated::wRatioByP() const { - const dimensionedScalar Wi - ( - "W", - dimMass/dimMoles, - thermo().Wi(saturatedIndex_) - ); - - return Wi/thermo().W()/thermo().p(); + return thermo().Wi(saturatedIndex_)/thermo().W()/thermo().p(); } diff --git a/applications/solvers/chemFoam/thermoTypeFunctions.H b/applications/solvers/chemFoam/thermoTypeFunctions.H index e82408209e..31214cfec9 100644 --- a/applications/solvers/chemFoam/thermoTypeFunctions.H +++ b/applications/solvers/chemFoam/thermoTypeFunctions.H @@ -32,7 +32,7 @@ scalarList W(const fluidMulticomponentThermo& thermo) forAll(W, i) { - W[i] = thermo.Wi(i); + W[i] = thermo.Wi(i).value(); } return W; diff --git a/src/ThermophysicalTransportModels/fluid/laminar/Fickian/Fickian.C b/src/ThermophysicalTransportModels/fluid/laminar/Fickian/Fickian.C index 4bded5aa93..d67a2830b6 100644 --- a/src/ThermophysicalTransportModels/fluid/laminar/Fickian/Fickian.C +++ b/src/ThermophysicalTransportModels/fluid/laminar/Fickian/Fickian.C @@ -78,12 +78,7 @@ void Fickian::updateDm() const sumXbyD += Y[j] /( - dimensionedScalar - ( - "Wj", - Wm.dimensions(), - this->thermo().Wi(j) - ) + this->thermo().Wi(j) *( i < j ? evaluate(DFuncs_[i][j], dimViscosity, p, T) @@ -96,16 +91,8 @@ void Fickian::updateDm() const Dm_.set ( i, - ( - 1/Wm - - Y[i] - /dimensionedScalar - ( - "Wi", - Wm.dimensions(), - this->thermo().Wi(i) - ) - )/max(sumXbyD, dimensionedScalar(sumXbyD.dimensions(), small)) + (1/Wm - Y[i]/this->thermo().Wi(i)) + /max(sumXbyD, dimensionedScalar(sumXbyD.dimensions(), small)) ); } } diff --git a/src/ThermophysicalTransportModels/fluid/laminar/MaxwellStefan/MaxwellStefan.C b/src/ThermophysicalTransportModels/fluid/laminar/MaxwellStefan/MaxwellStefan.C index 43aec6428e..439bf4c4ce 100644 --- a/src/ThermophysicalTransportModels/fluid/laminar/MaxwellStefan/MaxwellStefan.C +++ b/src/ThermophysicalTransportModels/fluid/laminar/MaxwellStefan/MaxwellStefan.C @@ -384,7 +384,7 @@ MaxwellStefan::MaxwellStefan // Set the molecular weights of the species forAll(W, i) { - W[i] = this->thermo().Wi(i); + W[i] = this->thermo().Wi(i).value(); } } diff --git a/src/combustionModels/radiationModels/sootModels/mixtureFraction/mixtureFraction.C b/src/combustionModels/radiationModels/sootModels/mixtureFraction/mixtureFraction.C index b92f632dfe..8b0251f202 100644 --- a/src/combustionModels/radiationModels/sootModels/mixtureFraction/mixtureFraction.C +++ b/src/combustionModels/radiationModels/sootModels/mixtureFraction/mixtureFraction.C @@ -106,7 +106,7 @@ Foam::radiationModels::sootModels::mixtureFraction::mixtureFraction const label speciei = singleReaction.rhs()[i].index; const scalar stoichCoeff = singleReaction.rhs()[i].stoichCoeff; Xi[i] = mag(stoichCoeff)/totalMol; - Wm += Xi[i]*combustion.thermo().Wi(speciei); + Wm += Xi[i]*combustion.thermo().WiValue(speciei); } scalarList Yprod0(combustion.thermo().species().size(), 0.0); @@ -114,7 +114,7 @@ Foam::radiationModels::sootModels::mixtureFraction::mixtureFraction forAll(singleReaction.rhs(), i) { const label speciei = singleReaction.rhs()[i].index; - Yprod0[speciei] = combustion.thermo().Wi(speciei)/Wm*Xi[i]; + Yprod0[speciei] = combustion.thermo().WiValue(speciei)/Wm*Xi[i]; } const scalar XSoot = nuSoot_/totalMol; diff --git a/src/combustionModels/singleStepCombustion/singleStepCombustion.C b/src/combustionModels/singleStepCombustion/singleStepCombustion.C index 2f2975e9d5..0b41c06fd3 100644 --- a/src/combustionModels/singleStepCombustion/singleStepCombustion.C +++ b/src/combustionModels/singleStepCombustion/singleStepCombustion.C @@ -32,7 +32,7 @@ License void Foam::combustionModels::singleStepCombustion::calculateqFuel() { - const scalar Wu = thermo_.Wi(fuelIndex_); + const scalar Wu = thermo_.WiValue(fuelIndex_); forAll(reaction_.lhs(), i) { @@ -40,7 +40,7 @@ void Foam::combustionModels::singleStepCombustion::calculateqFuel() const scalar stoichCoeff = reaction_.lhs()[i].stoichCoeff; specieStoichCoeffs_[speciei] = -stoichCoeff; qFuel_.value() += - thermo_.hfi(speciei)*thermo_.Wi(speciei)*stoichCoeff/Wu; + thermo_.hfiValue(speciei)*thermo_.WiValue(speciei)*stoichCoeff/Wu; } forAll(reaction_.rhs(), i) @@ -49,7 +49,7 @@ void Foam::combustionModels::singleStepCombustion::calculateqFuel() const scalar stoichCoeff = reaction_.rhs()[i].stoichCoeff; specieStoichCoeffs_[speciei] = stoichCoeff; qFuel_.value() -= - thermo_.hfi(speciei)*thermo_.Wi(speciei)*stoichCoeff/Wu; + thermo_.hfiValue(speciei)*thermo_.WiValue(speciei)*stoichCoeff/Wu; specieProd_[speciei] = -1; } @@ -60,16 +60,16 @@ void Foam::combustionModels::singleStepCombustion::calculateqFuel() void Foam::combustionModels::singleStepCombustion::massAndAirStoichRatios() { const label O2Index = thermo_.species()["O2"]; - const scalar Wu = thermo_.Wi(fuelIndex_); + const scalar Wu = thermo_.WiValue(fuelIndex_); stoicRatio_ = ( - thermo_.Wi(thermo_.defaultSpecie()) + thermo_.WiValue(thermo_.defaultSpecie()) *specieStoichCoeffs_[thermo_.defaultSpecie()] - + thermo_.Wi(O2Index)*mag(specieStoichCoeffs_[O2Index]) + + thermo_.WiValue(O2Index)*mag(specieStoichCoeffs_[O2Index]) )/(Wu*mag(specieStoichCoeffs_[fuelIndex_])); - s_ = thermo_.Wi(O2Index)*mag(specieStoichCoeffs_[O2Index]) + s_ = thermo_.WiValue(O2Index)*mag(specieStoichCoeffs_[O2Index]) /(Wu*mag(specieStoichCoeffs_[fuelIndex_])); Info << "stoichiometric air-fuel ratio: " << stoicRatio_.value() << endl; @@ -93,13 +93,13 @@ void Foam::combustionModels::singleStepCombustion::calculateMaxProducts() { const label speciei = reaction_.rhs()[i].index; Xi[i] = mag(specieStoichCoeffs_[speciei])/totalMol; - Wm += Xi[i]*thermo_.Wi(speciei); + Wm += Xi[i]*thermo_.WiValue(speciei); } forAll(reaction_.rhs(), i) { const label speciei = reaction_.rhs()[i].index; - Yprod0_[speciei] = thermo_.Wi(speciei)/Wm*Xi[i]; + Yprod0_[speciei] = thermo_.WiValue(speciei)/Wm*Xi[i]; } Info << "Maximum products mass concentrations: " << nl; @@ -115,8 +115,8 @@ void Foam::combustionModels::singleStepCombustion::calculateMaxProducts() forAll(specieStoichCoeffs_, i) { specieStoichCoeffs_[i] = - specieStoichCoeffs_[i]*thermo_.Wi(i) - /(thermo_.Wi(fuelIndex_)*mag(specieStoichCoeffs_[fuelIndex_])); + specieStoichCoeffs_[i]*thermo_.WiValue(i) + /(thermo_.WiValue(fuelIndex_)*mag(specieStoichCoeffs_[fuelIndex_])); } } diff --git a/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C index c30b724d0a..5397e80320 100644 --- a/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C +++ b/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C @@ -599,7 +599,7 @@ void Foam::ReactingMultiphaseParcel::calcDevolatilisation { const label id = composition.localToCarrierId(GAS, i); const scalar Cp = composition.carrier().Cpi(id, td.pc(), Ts); - const scalar W = composition.carrier().Wi(id); + const scalar W = composition.carrier().WiValue(id); const scalar Ni = dMassDV[i]/(this->areaS(d)*dt*W); // Dab calc'd using API vapour mass diffusivity function diff --git a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C index 3646a477b7..854644b2e9 100644 --- a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -133,7 +133,7 @@ void Foam::ReactingParcel::calcPhaseChange const label cid = composition.localToCarrierId(idPhase, i); const scalar Cp = composition.carrier().Cpi(cid, td.pc(), Tsdash); - const scalar W = composition.carrier().Wi(cid); + const scalar W = composition.carrier().WiValue(cid); const scalar Ni = dMassPC[i]/(this->areaS(d)*dt*W); const scalar Dab = @@ -304,7 +304,7 @@ void Foam::ReactingParcel::correctSurfaceValues forAll(Xinf, i) { - Xinf[i] = carrierThermo.Y(i)[this->cell()]/carrierThermo.Wi(i); + Xinf[i] = carrierThermo.Y(i)[this->cell()]/carrierThermo.WiValue(i); } Xinf /= sum(Xinf); @@ -326,7 +326,7 @@ void Foam::ReactingParcel::correctSurfaceValues const scalar Csi = Cs[i] + Xsff*Xinf[i]*CsTot; Xs[i] = (2.0*Csi + Xinf[i]*CsTot)/3.0; - Ys[i] = Xs[i]*carrierThermo.Wi(i); + Ys[i] = Xs[i]*carrierThermo.WiValue(i); } Xs /= sum(Xs); Ys /= sum(Ys); @@ -341,7 +341,7 @@ void Foam::ReactingParcel::correctSurfaceValues forAll(Ys, i) { - const scalar W = carrierThermo.Wi(i); + const scalar W = carrierThermo.WiValue(i); const scalar sqrtW = sqrt(W); const scalar cbrtW = cbrt(W); diff --git a/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C b/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C index 01178588d5..f5f9886355 100644 --- a/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C +++ b/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C @@ -279,7 +279,7 @@ Foam::scalarField Foam::CompositionModel::X forAll(Y, i) { label cid = props.carrierId(i); - X[i] = Y[i]/carrierMcThermoPtr_->Wi(cid); + X[i] = Y[i]/carrierMcThermoPtr_->WiValue(cid); WInv += X[i]; } break; diff --git a/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C b/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C index dfb8bb963d..f07aa1783b 100644 --- a/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C +++ b/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C @@ -42,7 +42,7 @@ Foam::tmp Foam::LiquidEvaporation::calcXc { Xc[i] = this->owner().composition().carrier().Y()[i][celli] - /this->owner().composition().carrier().Wi(i); + /this->owner().composition().carrier().WiValue(i); } return Xc/sum(Xc); diff --git a/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C b/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C index 672e2c2aaf..1a72f99560 100644 --- a/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C +++ b/src/lagrangian/parcel/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C @@ -43,7 +43,7 @@ Foam::tmp Foam::LiquidEvaporationBoil::calcXc { Xc[i] = this->owner().composition().carrier().Y()[i][celli] - /this->owner().composition().carrier().Wi(i); + /this->owner().composition().carrier().WiValue(i); } return Xc/sum(Xc); diff --git a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C index 188c7bf67c..4f1f592884 100644 --- a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C +++ b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C @@ -52,11 +52,11 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate CsLocalId_ = owner.composition().localId(idSolid, "C"); // Set local copies of thermo properties - WO2_ = owner.composition().carrier().Wi(O2GlobalId_); - const scalar WCO2 = owner.composition().carrier().Wi(CO2GlobalId_); + WO2_ = owner.composition().carrier().WiValue(O2GlobalId_); + const scalar WCO2 = owner.composition().carrier().WiValue(CO2GlobalId_); WC_ = WCO2 - WO2_; - HcCO2_ = owner.composition().carrier().hfi(CO2GlobalId_); + HcCO2_ = owner.composition().carrier().hfiValue(CO2GlobalId_); if (Sb_ < 0) { diff --git a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationHurtMitchell/COxidationHurtMitchell.C b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationHurtMitchell/COxidationHurtMitchell.C index c21a381bfc..0f936e41fc 100644 --- a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationHurtMitchell/COxidationHurtMitchell.C +++ b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationHurtMitchell/COxidationHurtMitchell.C @@ -52,11 +52,11 @@ Foam::COxidationHurtMitchell::COxidationHurtMitchell ashLocalId_ = owner.composition().localId(idSolid, "ash", true); // Set local copies of thermo properties - WO2_ = owner.composition().carrier().Wi(O2GlobalId_); - const scalar WCO2 = owner.composition().carrier().Wi(CO2GlobalId_); + WO2_ = owner.composition().carrier().WiValue(O2GlobalId_); + const scalar WCO2 = owner.composition().carrier().WiValue(CO2GlobalId_); WC_ = WCO2 - WO2_; - HcCO2_ = owner.composition().carrier().hfi(CO2GlobalId_); + HcCO2_ = owner.composition().carrier().hfiValue(CO2GlobalId_); const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_]; const scalar YSolidTot = owner.composition().YMixture0()[idSolid]; diff --git a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationIntrinsicRate/COxidationIntrinsicRate.C b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationIntrinsicRate/COxidationIntrinsicRate.C index b15778cc1b..ae9450d5d2 100644 --- a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationIntrinsicRate/COxidationIntrinsicRate.C +++ b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationIntrinsicRate/COxidationIntrinsicRate.C @@ -58,11 +58,11 @@ Foam::COxidationIntrinsicRate::COxidationIntrinsicRate CsLocalId_ = owner.composition().localId(idSolid, "C"); // Set local copies of thermo properties - WO2_ = owner.composition().carrier().Wi(O2GlobalId_); - const scalar WCO2 = owner.composition().carrier().Wi(CO2GlobalId_); + WO2_ = owner.composition().carrier().WiValue(O2GlobalId_); + const scalar WCO2 = owner.composition().carrier().WiValue(CO2GlobalId_); WC_ = WCO2 - WO2_; - HcCO2_ = owner.composition().carrier().hfi(CO2GlobalId_); + HcCO2_ = owner.composition().carrier().hfiValue(CO2GlobalId_); if (Sb_ < 0) { diff --git a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C index 296575b893..2de81dc570 100644 --- a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C +++ b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C @@ -53,11 +53,11 @@ COxidationKineticDiffusionLimitedRate CsLocalId_ = owner.composition().localId(idSolid, "C"); // Set local copies of thermo properties - WO2_ = owner.composition().carrier().Wi(O2GlobalId_); - const scalar WCO2 = owner.composition().carrier().Wi(CO2GlobalId_); + WO2_ = owner.composition().carrier().WiValue(O2GlobalId_); + const scalar WCO2 = owner.composition().carrier().WiValue(CO2GlobalId_); WC_ = WCO2 - WO2_; - HcCO2_ = owner.composition().carrier().hfi(CO2GlobalId_); + HcCO2_ = owner.composition().carrier().hfiValue(CO2GlobalId_); const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_]; const scalar YSolidTot = owner.composition().YMixture0()[idSolid]; diff --git a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C index d11a07692f..57a58f98b7 100644 --- a/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C +++ b/src/lagrangian/parcel/submodels/ReactingMultiphase/SurfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C @@ -65,11 +65,11 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix CsLocalId_ = owner.composition().localId(idSolid, "C"); // Set local copies of thermo properties - WO2_ = owner.composition().carrier().Wi(O2GlobalId_); - const scalar WCO2 = owner.composition().carrier().Wi(CO2GlobalId_); + WO2_ = owner.composition().carrier().WiValue(O2GlobalId_); + const scalar WCO2 = owner.composition().carrier().WiValue(CO2GlobalId_); WC_ = WCO2 - WO2_; - HcCO2_ = owner.composition().carrier().hfi(CO2GlobalId_); + HcCO2_ = owner.composition().carrier().hfiValue(CO2GlobalId_); const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_]; const scalar YSolidTot = owner.composition().YMixture0()[idSolid]; diff --git a/src/radiationModels/absorptionEmissionModels/greyMean/greyMean.C b/src/radiationModels/absorptionEmissionModels/greyMean/greyMean.C index 11a65e286b..afbe3b3342 100644 --- a/src/radiationModels/absorptionEmissionModels/greyMean/greyMean.C +++ b/src/radiationModels/absorptionEmissionModels/greyMean/greyMean.C @@ -221,11 +221,13 @@ Foam::radiationModels::absorptionEmissionModels::greyMean::aCont scalar invWt = 0.0; forAll(mcThermo.Y(), s) { - invWt += mcThermo.Y(s)[celli]/mcThermo.Wi(s); + invWt += mcThermo.Y(s)[celli]/mcThermo.WiValue(s); } - label index = mcThermo.species()[iter.key()]; - scalar Xk = mcThermo.Y(index)[celli]/(mcThermo.Wi(index)*invWt); + const label index = mcThermo.species()[iter.key()]; + + const scalar Xk = + mcThermo.Y(index)[celli]/(mcThermo.WiValue(index)*invWt); Xipi = Xk*paToAtm(p[celli]); } diff --git a/src/radiationModels/absorptionEmissionModels/wideBand/wideBand.C b/src/radiationModels/absorptionEmissionModels/wideBand/wideBand.C index 0b921fbbaf..cf9c105cbf 100644 --- a/src/radiationModels/absorptionEmissionModels/wideBand/wideBand.C +++ b/src/radiationModels/absorptionEmissionModels/wideBand/wideBand.C @@ -241,13 +241,13 @@ Foam::radiationModels::absorptionEmissionModels::wideBand::aCont scalar invWt = 0; forAll(mcThermo.Y(), s) { - invWt += mcThermo.Y(s)[celli]/mcThermo.Wi(s); + invWt += mcThermo.Y(s)[celli]/mcThermo.WiValue(s); } const label index = mcThermo.species()[iter.key()]; const scalar Xk = - mcThermo.Y(index)[celli]/(mcThermo.Wi(index)*invWt); + mcThermo.Y(index)[celli]/(mcThermo.WiValue(index)*invWt); Xipi = Xk*paToAtm(p[celli]); } diff --git a/src/specieTransfer/derivedFvPatchFields/adsorptionMassFraction/adsorptionMassFractionFvPatchScalarField.C b/src/specieTransfer/derivedFvPatchFields/adsorptionMassFraction/adsorptionMassFractionFvPatchScalarField.C index 0194db004a..ee4f8996ff 100644 --- a/src/specieTransfer/derivedFvPatchFields/adsorptionMassFraction/adsorptionMassFractionFvPatchScalarField.C +++ b/src/specieTransfer/derivedFvPatchFields/adsorptionMassFraction/adsorptionMassFractionFvPatchScalarField.C @@ -101,7 +101,7 @@ Foam::adsorptionMassFractionFvPatchScalarField::calcPhiYp() const if (property_ != massFraction) { const fluidMulticomponentThermo& thermo = this->thermo(db()); - Wi = thermo.Wi(thermo.species()[YName]); + Wi = thermo.Wi(thermo.species()[YName]).value(); } // Get the mixture molecular weights, if needed diff --git a/src/specieTransfer/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C b/src/specieTransfer/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C index ad64731131..4397facb92 100644 --- a/src/specieTransfer/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C +++ b/src/specieTransfer/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C @@ -135,7 +135,7 @@ Foam::semiPermeableBaffleMassFractionFvPatchScalarField::calcPhiYp() const if (property_ != massFraction) { const fluidMulticomponentThermo& thermo = this->thermo(db()); - Wi = thermo.Wi(thermo.species()[YName]); + Wi = thermo.Wi(thermo.species()[YName]).value(); } // Get the mixture molecular weights, if needed diff --git a/src/thermophysicalModels/multicomponentThermo/functionObjects/massFractions/massFractions.C b/src/thermophysicalModels/multicomponentThermo/functionObjects/massFractions/massFractions.C index 1dc7d54b85..7183b6e005 100644 --- a/src/thermophysicalModels/multicomponentThermo/functionObjects/massFractions/massFractions.C +++ b/src/thermophysicalModels/multicomponentThermo/functionObjects/massFractions/massFractions.C @@ -145,7 +145,7 @@ bool Foam::functionObjects::massFractions::execute() // Construct lists of specie molar mass, fields of specie mass, and a field // of total mass - List W(Y.size()); + PtrList W(Y.size()); PtrList m(Y.size()); volScalarField mTotal ( @@ -156,8 +156,7 @@ bool Foam::functionObjects::massFractions::execute() bool fromMoleFractions = false, fromMoles = false; forAll(Y, i) { - W[i].dimensions().reset(dimMass/dimMoles); - W[i].value() = thermo.Wi(i); + W.set(i, new dimensionedScalar(thermo.Wi(i))); typeIOobject YIo ( diff --git a/src/thermophysicalModels/multicomponentThermo/functionObjects/moleFractions/moleFractions.C b/src/thermophysicalModels/multicomponentThermo/functionObjects/moleFractions/moleFractions.C index ff6d9b3ddb..b133be4093 100644 --- a/src/thermophysicalModels/multicomponentThermo/functionObjects/moleFractions/moleFractions.C +++ b/src/thermophysicalModels/multicomponentThermo/functionObjects/moleFractions/moleFractions.C @@ -116,14 +116,7 @@ bool Foam::functionObjects::moleFractions::execute() // Calculate the mole fractions forAll(Y, i) { - const dimensionedScalar Wi - ( - "Wi", - dimMass/dimMoles, - thermo.Wi(i) - ); - - X_[i] = Y[i]*W/Wi; + X_[i] = Y[i]*W/thermo.Wi(i); } return true; diff --git a/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.C b/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.C index f3b4a1ea86..624a172b85 100644 --- a/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.C +++ b/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.C @@ -128,7 +128,7 @@ Foam::MulticomponentThermo::~MulticomponentThermo() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -Foam::scalar Foam::MulticomponentThermo::Wi +Foam::scalar Foam::MulticomponentThermo::WiValue ( const label speciei ) const @@ -137,6 +137,22 @@ Foam::scalar Foam::MulticomponentThermo::Wi } +template +Foam::dimensionedScalar Foam::MulticomponentThermo::Wi +( + const label speciei +) const +{ + return + dimensionedScalar + ( + "W", + dimMass/dimMoles, + this->specieThermo(speciei).W() + ); +} + + template Foam::scalar Foam::MulticomponentThermo::rhoi ( @@ -357,7 +373,23 @@ Foam::MulticomponentThermo::hai template -Foam::scalar Foam::MulticomponentThermo::hfi +Foam::dimensionedScalar Foam::MulticomponentThermo::hfi +( + const label speciei +) const +{ + return + dimensionedScalar + ( + "hf", + dimEnergy/dimMass, + this->specieThermo(speciei).hf() + ); +} + + +template +Foam::scalar Foam::MulticomponentThermo::hfiValue ( const label speciei ) const diff --git a/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.H b/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.H index 850219e9cf..167e1fc925 100644 --- a/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.H +++ b/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/MulticomponentThermo.H @@ -97,7 +97,10 @@ public: // Specie molecular properties //- Molecular weight [kg/kmol] - virtual scalar Wi(const label speciei) const; + virtual scalar WiValue(const label speciei) const; + + //- Molecular weight [kg/kmol] + virtual dimensionedScalar Wi(const label speciei) const; // Specie thermodynamic properties @@ -207,7 +210,10 @@ public: ) const; //- Enthalpy of formation [J/kg] - virtual scalar hfi(const label speciei) const; + virtual scalar hfiValue(const label speciei) const; + + //- Enthalpy of formation [J/kg] + virtual dimensionedScalar hfi(const label speciei) const; // Specie transport properties diff --git a/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/multicomponentThermo.H b/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/multicomponentThermo.H index bf88994716..31d0581b39 100644 --- a/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/multicomponentThermo.H +++ b/src/thermophysicalModels/multicomponentThermo/multicomponentThermo/multicomponentThermo.H @@ -132,10 +132,10 @@ public: // Specie molecular properties //- Molecular weight [kg/kmol] - virtual scalar Wi(const label speciei) const = 0; + virtual scalar WiValue(const label speciei) const = 0; - //- Enthalpy of formation [J/kg] - virtual scalar hfi(const label speciei) const = 0; + //- Molecular weight [kg/kmol] + virtual dimensionedScalar Wi(const label speciei) const = 0; // Specie thermodynamic properties @@ -244,6 +244,12 @@ public: const volScalarField& T ) const = 0; + //- Enthalpy of formation [J/kg] + virtual scalar hfiValue(const label speciei) const = 0; + + //- Enthalpy of formation [J/kg] + virtual dimensionedScalar hfi(const label speciei) const = 0; + // Specie transport properties