From 496a2f0c56eb99890de7f83925197dbed698e62c Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 10 Jan 2011 10:41:42 +0000 Subject: [PATCH] ENH: Updated heat of reaction for surface reaction models --- .../COxidationDiffusionLimitedRate.C | 8 +++---- .../COxidationKineticDiffusionLimitedRate.C | 24 +++++++++---------- .../COxidationKineticDiffusionLimitedRate.H | 3 +++ .../COxidationMurphyShaddix.C | 24 +++++++++---------- .../COxidationMurphyShaddix.H | 3 +++ 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C index 129b6b39ab..f85f87740f 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C @@ -160,12 +160,12 @@ Foam::scalar Foam::COxidationDiffusionLimitedRate::calculate dMassSRCarrier[O2GlobalId_] -= dmO2; dMassSRCarrier[CO2GlobalId_] += dmCO2; - const scalar HC = thermo.solids().properties()[CsLocalId_].H(T); - const scalar HCO2 = thermo.carrier().H(CO2GlobalId_, T); - const scalar HO2 = thermo.carrier().H(O2GlobalId_, T); + const scalar HsC = thermo.solids().properties()[CsLocalId_].Hs(T); // Heat of reaction [J] - return dmC*HC + dmO2*HO2 - dmCO2*HCO2; + // Sensible enthalpy contributions due to O2 depletion and CO2 generation + // handled by particle transfer terms + return dmC*HsC - dmCO2*HcCO2_; } diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C index d7282e88b9..7da88f7118 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C @@ -36,12 +36,8 @@ COxidationKineticDiffusionLimitedRate CloudType& owner ) : - SurfaceReactionModel - ( - dict, - owner, - typeName - ), + SurfaceReactionModel(dict, owner, typeName), + Sb_(readScalar(this->coeffDict().lookup("Sb"))), C1_(readScalar(this->coeffDict().lookup("C1"))), C2_(readScalar(this->coeffDict().lookup("C2"))), E_(readScalar(this->coeffDict().lookup("E"))), @@ -76,6 +72,7 @@ COxidationKineticDiffusionLimitedRate ) : SurfaceReactionModel(srm), + Sb_(srm.Sb_), C1_(srm.C1_), C2_(srm.C2_), E_(srm.E_), @@ -83,7 +80,8 @@ COxidationKineticDiffusionLimitedRate O2GlobalId_(srm.O2GlobalId_), CO2GlobalId_(srm.CO2GlobalId_), WC_(srm.WC_), - WO2_(srm.WO2_) + WO2_(srm.WO2_), + HcCO2_(srm.HcCO2_) {} @@ -153,10 +151,10 @@ Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate const scalar dOmega = dmC/WC_; // Change in O2 mass [kg] - const scalar dmO2 = dOmega*WO2_; + const scalar dmO2 = dOmega*Sb_*WO2_; // Mass of newly created CO2 [kg] - const scalar dmCO2 = dOmega*(WC_ + WO2_); + const scalar dmCO2 = dOmega*(WC_ + Sb_*WO2_); // Update local particle C mass dMassSolid[CsLocalId_] += dOmega*WC_; @@ -165,12 +163,12 @@ Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate dMassSRCarrier[O2GlobalId_] -= dmO2; dMassSRCarrier[CO2GlobalId_] += dmCO2; - const scalar HC = thermo.solids().properties()[CsLocalId_].H(T); - const scalar HCO2 = thermo.carrier().H(CO2GlobalId_, T); - const scalar HO2 = thermo.carrier().H(O2GlobalId_, T); + const scalar HsC = thermo.solids().properties()[CsLocalId_].Hs(T); // Heat of reaction [J] - return dOmega*(WC_*HC + WO2_*HO2 - (WC_ + WO2_)*HCO2); + // Sensible enthalpy contributions due to O2 depletion and CO2 generation + // handled by particle transfer terms + return dmC*HsC - dmCO2*HcCO2_; } diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H index dd7d6d0ab2..3d9bf041f1 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H @@ -61,6 +61,9 @@ class COxidationKineticDiffusionLimitedRate // Model constants + //- Stoichiometry of reaction + const scalar Sb_; + //- Mass diffusion limited rate constant, C1 const scalar C1_; diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C index 3f8ef79944..8bd3b52c59 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C @@ -44,12 +44,7 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix CloudType& owner ) : - SurfaceReactionModel - ( - dict, - owner, - typeName - ), + SurfaceReactionModel(dict, owner, typeName), D0_(readScalar(this->coeffDict().lookup("D0"))), rho0_(readScalar(this->coeffDict().lookup("rho0"))), T0_(readScalar(this->coeffDict().lookup("T0"))), @@ -62,7 +57,8 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix O2GlobalId_(owner.composition().globalCarrierId("O2")), CO2GlobalId_(owner.composition().globalCarrierId("CO2")), WC_(0.0), - WO2_(0.0) + WO2_(0.0), + HcCO2_(0.0) { // Determine Cs ids label idSolid = owner.composition().idSolid(); @@ -72,6 +68,7 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix WO2_ = owner.thermo().carrier().W(O2GlobalId_); const scalar WCO2 = owner.thermo().carrier().W(CO2GlobalId_); WC_ = WCO2 - WO2_; + HcCO2_ = owner.thermo().carrier().Hc(CO2GlobalId_); const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_]; const scalar YSolidTot = owner.composition().YMixture0()[idSolid]; @@ -98,7 +95,8 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix O2GlobalId_(srm.O2GlobalId_), CO2GlobalId_(srm.CO2GlobalId_), WC_(srm.WC_), - WO2_(srm.WO2_) + WO2_(srm.WO2_), + HcCO2_(srm.HcCO2_) {} @@ -225,12 +223,12 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate // Add to particle mass transfer dMassSolid[CsLocalId_] += dOmega*WC_; - const scalar HC = thermo.solids().properties()[CsLocalId_].H(T); - const scalar HCO2 = thermo.carrier().H(CO2GlobalId_, T); - const scalar HO2 = thermo.carrier().H(O2GlobalId_, T); + const scalar HsC = thermo.solids().properties()[CsLocalId_].Hs(T); - // Heat of reaction - return dOmega*(WC_*HC + WO2_*HO2 - (WC_ + WO2_)*HCO2); + // Heat of reaction [J] + // Sensible enthalpy contributions due to O2 depletion and CO2 generation + // handled by particle transfer terms + return dOmega*(WC_*HsC - (WC_ + WO2_)*HcCO2_); } diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H index 4d9f6b6f1f..8b9d40b521 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H @@ -115,6 +115,9 @@ class COxidationMurphyShaddix //- Molecular weight of O2 [kg/kmol] scalar WO2_; + //- Chemical enthalpy of CO2 [J/kg] + scalar HcCO2_; + public: