mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Updated heat of reaction for surface reaction models
This commit is contained in:
@ -160,12 +160,12 @@ Foam::scalar Foam::COxidationDiffusionLimitedRate<CloudType>::calculate
|
|||||||
dMassSRCarrier[O2GlobalId_] -= dmO2;
|
dMassSRCarrier[O2GlobalId_] -= dmO2;
|
||||||
dMassSRCarrier[CO2GlobalId_] += dmCO2;
|
dMassSRCarrier[CO2GlobalId_] += dmCO2;
|
||||||
|
|
||||||
const scalar HC = thermo.solids().properties()[CsLocalId_].H(T);
|
const scalar HsC = thermo.solids().properties()[CsLocalId_].Hs(T);
|
||||||
const scalar HCO2 = thermo.carrier().H(CO2GlobalId_, T);
|
|
||||||
const scalar HO2 = thermo.carrier().H(O2GlobalId_, T);
|
|
||||||
|
|
||||||
// Heat of reaction [J]
|
// 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_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -36,12 +36,8 @@ COxidationKineticDiffusionLimitedRate
|
|||||||
CloudType& owner
|
CloudType& owner
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
SurfaceReactionModel<CloudType>
|
SurfaceReactionModel<CloudType>(dict, owner, typeName),
|
||||||
(
|
Sb_(readScalar(this->coeffDict().lookup("Sb"))),
|
||||||
dict,
|
|
||||||
owner,
|
|
||||||
typeName
|
|
||||||
),
|
|
||||||
C1_(readScalar(this->coeffDict().lookup("C1"))),
|
C1_(readScalar(this->coeffDict().lookup("C1"))),
|
||||||
C2_(readScalar(this->coeffDict().lookup("C2"))),
|
C2_(readScalar(this->coeffDict().lookup("C2"))),
|
||||||
E_(readScalar(this->coeffDict().lookup("E"))),
|
E_(readScalar(this->coeffDict().lookup("E"))),
|
||||||
@ -76,6 +72,7 @@ COxidationKineticDiffusionLimitedRate
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
SurfaceReactionModel<CloudType>(srm),
|
SurfaceReactionModel<CloudType>(srm),
|
||||||
|
Sb_(srm.Sb_),
|
||||||
C1_(srm.C1_),
|
C1_(srm.C1_),
|
||||||
C2_(srm.C2_),
|
C2_(srm.C2_),
|
||||||
E_(srm.E_),
|
E_(srm.E_),
|
||||||
@ -83,7 +80,8 @@ COxidationKineticDiffusionLimitedRate
|
|||||||
O2GlobalId_(srm.O2GlobalId_),
|
O2GlobalId_(srm.O2GlobalId_),
|
||||||
CO2GlobalId_(srm.CO2GlobalId_),
|
CO2GlobalId_(srm.CO2GlobalId_),
|
||||||
WC_(srm.WC_),
|
WC_(srm.WC_),
|
||||||
WO2_(srm.WO2_)
|
WO2_(srm.WO2_),
|
||||||
|
HcCO2_(srm.HcCO2_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -153,10 +151,10 @@ Foam::scalar Foam::COxidationKineticDiffusionLimitedRate<CloudType>::calculate
|
|||||||
const scalar dOmega = dmC/WC_;
|
const scalar dOmega = dmC/WC_;
|
||||||
|
|
||||||
// Change in O2 mass [kg]
|
// Change in O2 mass [kg]
|
||||||
const scalar dmO2 = dOmega*WO2_;
|
const scalar dmO2 = dOmega*Sb_*WO2_;
|
||||||
|
|
||||||
// Mass of newly created CO2 [kg]
|
// Mass of newly created CO2 [kg]
|
||||||
const scalar dmCO2 = dOmega*(WC_ + WO2_);
|
const scalar dmCO2 = dOmega*(WC_ + Sb_*WO2_);
|
||||||
|
|
||||||
// Update local particle C mass
|
// Update local particle C mass
|
||||||
dMassSolid[CsLocalId_] += dOmega*WC_;
|
dMassSolid[CsLocalId_] += dOmega*WC_;
|
||||||
@ -165,12 +163,12 @@ Foam::scalar Foam::COxidationKineticDiffusionLimitedRate<CloudType>::calculate
|
|||||||
dMassSRCarrier[O2GlobalId_] -= dmO2;
|
dMassSRCarrier[O2GlobalId_] -= dmO2;
|
||||||
dMassSRCarrier[CO2GlobalId_] += dmCO2;
|
dMassSRCarrier[CO2GlobalId_] += dmCO2;
|
||||||
|
|
||||||
const scalar HC = thermo.solids().properties()[CsLocalId_].H(T);
|
const scalar HsC = thermo.solids().properties()[CsLocalId_].Hs(T);
|
||||||
const scalar HCO2 = thermo.carrier().H(CO2GlobalId_, T);
|
|
||||||
const scalar HO2 = thermo.carrier().H(O2GlobalId_, T);
|
|
||||||
|
|
||||||
// Heat of reaction [J]
|
// 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_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -61,6 +61,9 @@ class COxidationKineticDiffusionLimitedRate
|
|||||||
|
|
||||||
// Model constants
|
// Model constants
|
||||||
|
|
||||||
|
//- Stoichiometry of reaction
|
||||||
|
const scalar Sb_;
|
||||||
|
|
||||||
//- Mass diffusion limited rate constant, C1
|
//- Mass diffusion limited rate constant, C1
|
||||||
const scalar C1_;
|
const scalar C1_;
|
||||||
|
|
||||||
|
|||||||
@ -44,12 +44,7 @@ Foam::COxidationMurphyShaddix<CloudType>::COxidationMurphyShaddix
|
|||||||
CloudType& owner
|
CloudType& owner
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
SurfaceReactionModel<CloudType>
|
SurfaceReactionModel<CloudType>(dict, owner, typeName),
|
||||||
(
|
|
||||||
dict,
|
|
||||||
owner,
|
|
||||||
typeName
|
|
||||||
),
|
|
||||||
D0_(readScalar(this->coeffDict().lookup("D0"))),
|
D0_(readScalar(this->coeffDict().lookup("D0"))),
|
||||||
rho0_(readScalar(this->coeffDict().lookup("rho0"))),
|
rho0_(readScalar(this->coeffDict().lookup("rho0"))),
|
||||||
T0_(readScalar(this->coeffDict().lookup("T0"))),
|
T0_(readScalar(this->coeffDict().lookup("T0"))),
|
||||||
@ -62,7 +57,8 @@ Foam::COxidationMurphyShaddix<CloudType>::COxidationMurphyShaddix
|
|||||||
O2GlobalId_(owner.composition().globalCarrierId("O2")),
|
O2GlobalId_(owner.composition().globalCarrierId("O2")),
|
||||||
CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
|
CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
|
||||||
WC_(0.0),
|
WC_(0.0),
|
||||||
WO2_(0.0)
|
WO2_(0.0),
|
||||||
|
HcCO2_(0.0)
|
||||||
{
|
{
|
||||||
// Determine Cs ids
|
// Determine Cs ids
|
||||||
label idSolid = owner.composition().idSolid();
|
label idSolid = owner.composition().idSolid();
|
||||||
@ -72,6 +68,7 @@ Foam::COxidationMurphyShaddix<CloudType>::COxidationMurphyShaddix
|
|||||||
WO2_ = owner.thermo().carrier().W(O2GlobalId_);
|
WO2_ = owner.thermo().carrier().W(O2GlobalId_);
|
||||||
const scalar WCO2 = owner.thermo().carrier().W(CO2GlobalId_);
|
const scalar WCO2 = owner.thermo().carrier().W(CO2GlobalId_);
|
||||||
WC_ = WCO2 - WO2_;
|
WC_ = WCO2 - WO2_;
|
||||||
|
HcCO2_ = owner.thermo().carrier().Hc(CO2GlobalId_);
|
||||||
|
|
||||||
const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_];
|
const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_];
|
||||||
const scalar YSolidTot = owner.composition().YMixture0()[idSolid];
|
const scalar YSolidTot = owner.composition().YMixture0()[idSolid];
|
||||||
@ -98,7 +95,8 @@ Foam::COxidationMurphyShaddix<CloudType>::COxidationMurphyShaddix
|
|||||||
O2GlobalId_(srm.O2GlobalId_),
|
O2GlobalId_(srm.O2GlobalId_),
|
||||||
CO2GlobalId_(srm.CO2GlobalId_),
|
CO2GlobalId_(srm.CO2GlobalId_),
|
||||||
WC_(srm.WC_),
|
WC_(srm.WC_),
|
||||||
WO2_(srm.WO2_)
|
WO2_(srm.WO2_),
|
||||||
|
HcCO2_(srm.HcCO2_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -225,12 +223,12 @@ Foam::scalar Foam::COxidationMurphyShaddix<CloudType>::calculate
|
|||||||
// Add to particle mass transfer
|
// Add to particle mass transfer
|
||||||
dMassSolid[CsLocalId_] += dOmega*WC_;
|
dMassSolid[CsLocalId_] += dOmega*WC_;
|
||||||
|
|
||||||
const scalar HC = thermo.solids().properties()[CsLocalId_].H(T);
|
const scalar HsC = thermo.solids().properties()[CsLocalId_].Hs(T);
|
||||||
const scalar HCO2 = thermo.carrier().H(CO2GlobalId_, T);
|
|
||||||
const scalar HO2 = thermo.carrier().H(O2GlobalId_, T);
|
|
||||||
|
|
||||||
// Heat of reaction
|
// 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 dOmega*(WC_*HsC - (WC_ + WO2_)*HcCO2_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -115,6 +115,9 @@ class COxidationMurphyShaddix
|
|||||||
//- Molecular weight of O2 [kg/kmol]
|
//- Molecular weight of O2 [kg/kmol]
|
||||||
scalar WO2_;
|
scalar WO2_;
|
||||||
|
|
||||||
|
//- Chemical enthalpy of CO2 [J/kg]
|
||||||
|
scalar HcCO2_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user