diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C index 516554874cdaf1f5fcdab8f2a0375892952bfee4..e86391182fcf8800b65d7795c7b6401745a82f63 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C @@ -43,17 +43,12 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()), D_(dimensionedScalar(this->coeffDict().lookup("D")).value()), CsLocalId_(-1), - O2GlobalId_(-1), - CO2GlobalId_(-1), + O2GlobalId_(owner.composition().globalCarrierId("O2")), + CO2GlobalId_(owner.composition().globalCarrierId("CO2")), WC_(0.0), WO2_(0.0), HcCO2_(0.0) { - // Determine carrier phase Ids of reactants/products - label idGas = owner.composition().idGas(); - O2GlobalId_ = owner.composition().globalId(idGas, "O2"); - CO2GlobalId_ = owner.composition().globalId(idGas, "CO2"); - // Determine Cs ids label idSolid = owner.composition().idSolid(); CsLocalId_ = owner.composition().localId(idSolid, "C"); @@ -73,7 +68,7 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate "const dictionary&, " "ReactingMultiphaseCloud<coalParcel>&" ")" - ) << "Stoichiometry, Sb, must be greater than zero" << nl + ) << "Stoichiometry of reaction, Sb, must be greater than zero" << nl << exit(FatalError); } } diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C index eb44c6391afaf52dc186b2a30acad79ffcb1ad40..bb3e28ae56e00aaa99ce15abb7487f93b538fcb4 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C @@ -46,17 +46,12 @@ COxidationKineticDiffusionLimitedRate C2_(dimensionedScalar(this->coeffDict().lookup("C2")).value()), E_(dimensionedScalar(this->coeffDict().lookup("E")).value()), CsLocalId_(-1), - O2GlobalId_(-1), - CO2GlobalId_(-1), + O2GlobalId_(owner.composition().globalCarrierId("O2")), + CO2GlobalId_(owner.composition().globalCarrierId("CO2")), WC_(0.0), WO2_(0.0), HcCO2_(0.0) { - // Determine carrier phase Ids of reactants/products - label idGas = owner.composition().idGas(); - O2GlobalId_ = owner.composition().globalId(idGas, "O2"); - CO2GlobalId_ = owner.composition().globalId(idGas, "CO2"); - // Determine Cs ids label idSolid = owner.composition().idSolid(); CsLocalId_ = owner.composition().localId(idSolid, "C"); @@ -76,7 +71,7 @@ COxidationKineticDiffusionLimitedRate "const dictionary&, " "ReactingMultiphaseCloud<coalParcel>&" ")" - ) << "Stoichiometry, Sb, must be greater than zero" << nl + ) << "Stoichiometry of reaction, Sb, must be greater than zero" << nl << exit(FatalError); } } diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C index c9e5ddfa49ab3e2ff13832bb302da59fa459afaa..128c5d64e962f326f3cd05240bcc2b6f182a5b28 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C @@ -55,20 +55,22 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix E_(dimensionedScalar(this->coeffDict().lookup("E")).value()), n_(dimensionedScalar(this->coeffDict().lookup("n")).value()), WVol_(dimensionedScalar(this->coeffDict().lookup("WVol")).value()), - dH0_(dimensionedScalar(this->coeffDict().lookup("dH0")).value()), - TMaxdH_(dimensionedScalar(this->coeffDict().lookup("TmaxdH")).value()), CsLocalId_(-1), - O2GlobalId_(-1), - CO2GlobalId_(-1) + O2GlobalId_(owner.composition().globalCarrierId("O2")), + CO2GlobalId_(owner.composition().globalCarrierId("CO2")), + WC_(0.0), + WO2_(0.0), + HcCO2_(0.0) { - // Determine carrier phase Ids of reactants/products - label idGas = owner.composition().idGas(); - O2GlobalId_ = owner.composition().globalId(idGas, "O2"); - CO2GlobalId_ = owner.composition().globalId(idGas, "CO2"); - // Determine Cs ids label idSolid = owner.composition().idSolid(); CsLocalId_ = owner.composition().localId(idSolid, "Cs"); + + // Set local copies of thermo properties + WO2_ = owner.composition().carrierSpecies()[O2GlobalId_].W(); + scalar WCO2 = owner.composition().carrierSpecies()[CO2GlobalId_].W(); + WC_ = WCO2 - WO2_; + HcCO2_ = owner.composition().carrierSpecies()[CO2GlobalId_].Hc(); } @@ -118,8 +120,7 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate // Cell carrier phase O2 species density [kg/m^3] const scalar rhoO2 = - owner().carrierThermo().composition().Y(O2GlobalId_)[cellI] - *rhoc; + rhoc*owner().carrierThermo().composition().Y(O2GlobalId_)[cellI]; if (rhoO2 < SMALL) { @@ -129,25 +130,12 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate // Particle surface area [m^2] const scalar Ap = mathematicalConstant::pi*sqr(d); -// // Film temperature [K] -// const scalar Tf = (T + Tc)/2; - // Calculate diffision constant at continuous phase temperature // and density [m^2/s] const scalar D = D0_*(rho0_/rhoc)*pow(Tc/T0_, Dn_); - // Molecular weight of O2 [kg/kmol] - const scalar WO2 = owner().composition().carrierSpecies()[O2GlobalId_].W(); - - // Molecular weight of CO2 [kg/kmol] - const scalar WCO2 = - owner().composition().carrierSpecies()[CO2GlobalId_].W(); - - // Molecular weight of C [kg/kmol] - const scalar WC = WCO2 - WO2; - // Far field partial pressure O2 [Pa] - const scalar ppO2 = rhoO2/WO2*specie::RR*Tc; + const scalar ppO2 = rhoO2/WO2_*specie::RR*Tc; // Molar emission rate of volatiles per unit surface area const scalar qVol = sum(dMassVolatile)/(WVol_*Ap); @@ -159,7 +147,6 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate { Pout<< "mass = " << mass << nl << "fComb = " << fComb << nl - << "WC = " << WC << nl << "Ap = " << Ap << nl << "dt = " << dt << nl << "C = " << C << nl @@ -170,7 +157,7 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate scalar qCsOld = 0; scalar qCs = 1; - const scalar qCsLim = mass*fComb/(WC*Ap*dt); + const scalar qCsLim = mass*fComb/(WC_*Ap*dt); if (debug) { @@ -207,14 +194,14 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate scalar dOmega = qCs*Ap*dt; // Add to carrier phase mass transfer - dMassSRCarrier[O2GlobalId_] += -dOmega*WO2; - dMassSRCarrier[CO2GlobalId_] += dOmega*WCO2; + dMassSRCarrier[O2GlobalId_] += -dOmega*WO2_; + dMassSRCarrier[CO2GlobalId_] += dOmega*(WC_ + WO2_); // Add to particle mass transfer - dMassSolid[CsLocalId_] = dOmega*WC; + dMassSolid[CsLocalId_] += dOmega*WC_; // Heat of reaction - return dOmega*dH0_*cos(mathematicalConstant::pi/2*T/TMaxdH_); + return HcCO2_*dOmega*WC_; } diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H index 5811fc085c4f4ebe0bf0c4622022cc1f9d086b8b..bc026db3646680cd1d9bac14d0f6f65d702c6544 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H @@ -26,7 +26,6 @@ Class COxidationMurphyShaddix Description - Kinetics/diffusion limited rate surface reaction model for coal parcel Limited to C(s) + O2 -> CO2 \*---------------------------------------------------------------------------*/ @@ -77,12 +76,6 @@ class COxidationMurphyShaddix //- Effective molecular weight of gaseous volatiles const scalar WVol_; - //- Enthalpy retained by particle during surface combustion - const scalar dH0_; - - //- TdHMax: dH = dH0_*cos(pi/2*Tp/TMaxdH_) - const scalar TMaxdH_; - // Static constants @@ -105,6 +98,18 @@ class COxidationMurphyShaddix label CO2GlobalId_; + // Local copies of thermo properties + + //- Molecular weight of C [kg/kmol] + scalar WC_; + + //- Molecular weight of O2 [kg/kmol] + scalar WO2_; + + //- Chemical enthalpy of CO2 [J/kg] + scalar HcCO2_; + + public: //- Runtime type information