mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
adding new coal-based surface reaction moodels
This commit is contained in:
@ -0,0 +1,155 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd.
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "COxidationDiffusionLimitedRate.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
ReactingMultiphaseCloud<coalParcel>& owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
|
||||||
|
(
|
||||||
|
dict,
|
||||||
|
owner,
|
||||||
|
typeName
|
||||||
|
),
|
||||||
|
Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
|
||||||
|
D_(dimensionedScalar(this->coeffDict().lookup("D")).value()),
|
||||||
|
CsLocalId_(-1),
|
||||||
|
O2GlobalId_(-1),
|
||||||
|
CO2GlobalId_(-1),
|
||||||
|
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");
|
||||||
|
|
||||||
|
// Set local copies of thermo properties
|
||||||
|
WO2_ = owner().composition().gases()[O2GlobalId_].W();
|
||||||
|
scalar WCO2 = owner().composition().gases()[CO2GlobalId_].W();
|
||||||
|
WC_ = WCO2 - WO2_;
|
||||||
|
HcCO2_ = owner().composition().gases()[CO2GlobalId_].Hc();
|
||||||
|
|
||||||
|
if (Sb_ < 0)
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"COxidationDiffusionLimitedRate"
|
||||||
|
"("
|
||||||
|
"const dictionary&, "
|
||||||
|
"ReactingMultiphaseCloud<coalParcel>&"
|
||||||
|
")"
|
||||||
|
) << "Stoichiometry, Sb, must be greater than zero" << nl
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::COxidationDiffusionLimitedRate::~COxidationDiffusionLimitedRate()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
bool Foam::COxidationDiffusionLimitedRate::active() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::scalar Foam::COxidationDiffusionLimitedRate::calculate
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const scalar d,
|
||||||
|
const scalar T,
|
||||||
|
const scalar Tc,
|
||||||
|
const scalar pc,
|
||||||
|
const scalar rhoc,
|
||||||
|
const scalar mass,
|
||||||
|
const scalarField& YGas,
|
||||||
|
const scalarField& YLiquid,
|
||||||
|
const scalarField& YSolid,
|
||||||
|
const scalarField& YMixture,
|
||||||
|
const scalarField& dMassVolatile,
|
||||||
|
scalarField& dMassGas,
|
||||||
|
scalarField& dMassLiquid,
|
||||||
|
scalarField& dMassSolid,
|
||||||
|
scalarField& dMassSRCarrier
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Fraction of remaining combustible material
|
||||||
|
const scalar fComb = YMixture[coalParcel::SLD]*YSolid[CsLocalId_];
|
||||||
|
|
||||||
|
// Surface combustion active combustible fraction is consumed
|
||||||
|
if (fComb < SMALL)
|
||||||
|
{
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Local mass fraction of O2 in the carrier phase
|
||||||
|
const scalar YO2 =
|
||||||
|
owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
|
||||||
|
|
||||||
|
// Change in C mass [kg]
|
||||||
|
scalar dmC =
|
||||||
|
4.0*mathematicalConstant::pi*d*D_*YO2*Tc*rhoc/(Sb_*(T + Tc))*dt;
|
||||||
|
|
||||||
|
// Limit mass transfer by availability of C
|
||||||
|
dmC = min(mass*fComb, dmC);
|
||||||
|
|
||||||
|
// Change in O2 mass [kg]
|
||||||
|
const scalar dmO2 = dmC/WC_*Sb_*WO2_;
|
||||||
|
|
||||||
|
// Mass of newly created CO2 [kg]
|
||||||
|
const scalar dmCO2 = dmC + dmO2;
|
||||||
|
|
||||||
|
// Update local particle C mass
|
||||||
|
dMassSolid[CsLocalId_] += dmC;
|
||||||
|
|
||||||
|
// Update carrier O2 and CO2 mass
|
||||||
|
dMassSRCarrier[O2GlobalId_] -= dmO2;
|
||||||
|
dMassSRCarrier[CO2GlobalId_] += dmCO2;
|
||||||
|
|
||||||
|
// Heat of reaction [J]
|
||||||
|
return HcCO2_*dmCO2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,147 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd.
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Class
|
||||||
|
COxidationDiffusionLimitedRate
|
||||||
|
|
||||||
|
Description
|
||||||
|
Diffusion limited rate surface reaction model for coal parcels. Limited to:
|
||||||
|
|
||||||
|
C(s) + Sb*O2 -> CO2
|
||||||
|
|
||||||
|
where Sb is the stoichiometry of the reaction
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef COxidationDiffusionLimitedRate_H
|
||||||
|
#define COxidationDiffusionLimitedRate_H
|
||||||
|
|
||||||
|
#include "SurfaceReactionModel.H"
|
||||||
|
#include "coalParcel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class COxidationDiffusionLimitedRate Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class COxidationDiffusionLimitedRate
|
||||||
|
:
|
||||||
|
public SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
// Model constants
|
||||||
|
|
||||||
|
//- Stoichiometry of reaction
|
||||||
|
const scalar Sb_;
|
||||||
|
|
||||||
|
//- Diffusion coefficient of oxidants [m2/s]
|
||||||
|
const scalar D_;
|
||||||
|
|
||||||
|
|
||||||
|
// 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_;
|
||||||
|
|
||||||
|
|
||||||
|
// Addressing
|
||||||
|
|
||||||
|
//- Cs positions in global/local lists
|
||||||
|
label CsLocalId_;
|
||||||
|
|
||||||
|
//- O2 position in global list
|
||||||
|
label O2GlobalId_;
|
||||||
|
|
||||||
|
//- CO2 positions in global list
|
||||||
|
label CO2GlobalId_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("COxidationDiffusionLimitedRate");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
COxidationDiffusionLimitedRate
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
ReactingMultiphaseCloud<coalParcel>& owner
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~COxidationDiffusionLimitedRate();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Flag to indicate whether model activates surface reaction model
|
||||||
|
virtual bool active() const;
|
||||||
|
|
||||||
|
//- Update surface reactions
|
||||||
|
virtual scalar calculate
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const scalar d,
|
||||||
|
const scalar T,
|
||||||
|
const scalar Tc,
|
||||||
|
const scalar pc,
|
||||||
|
const scalar rhoc,
|
||||||
|
const scalar mass,
|
||||||
|
const scalarField& YGas,
|
||||||
|
const scalarField& YLiquid,
|
||||||
|
const scalarField& YSolid,
|
||||||
|
const scalarField& YMixture,
|
||||||
|
const scalarField& dMassVolatile,
|
||||||
|
scalarField& dMassGas,
|
||||||
|
scalarField& dMassLiquid,
|
||||||
|
scalarField& dMassSolid,
|
||||||
|
scalarField& dMassSRCarrier
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,167 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd.
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "COxidationKineticDiffusionLimitedRate.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::COxidationKineticDiffusionLimitedRate::
|
||||||
|
COxidationKineticDiffusionLimitedRate
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
ReactingMultiphaseCloud<coalParcel>& owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
|
||||||
|
(
|
||||||
|
dict,
|
||||||
|
owner,
|
||||||
|
typeName
|
||||||
|
),
|
||||||
|
Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
|
||||||
|
C1_(dimensionedScalar(this->coeffDict().lookup("C1")).value()),
|
||||||
|
C2_(dimensionedScalar(this->coeffDict().lookup("C2")).value()),
|
||||||
|
E_(dimensionedScalar(this->coeffDict().lookup("E")).value()),
|
||||||
|
CsLocalId_(-1),
|
||||||
|
O2GlobalId_(-1),
|
||||||
|
CO2GlobalId_(-1),
|
||||||
|
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");
|
||||||
|
|
||||||
|
// Set local copies of thermo properties
|
||||||
|
WO2_ = owner().composition().gases()[O2GlobalId_].W();
|
||||||
|
scalar WCO2 = owner().composition().gases()[CO2GlobalId_].W();
|
||||||
|
WC_ = WCO2 - WO2_;
|
||||||
|
HcCO2_ = owner().composition().gases()[CO2GlobalId_].Hc();
|
||||||
|
|
||||||
|
if (Sb_ < 0)
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"COxidationKineticDiffusionLimitedRate"
|
||||||
|
"("
|
||||||
|
"const dictionary&, "
|
||||||
|
"ReactingMultiphaseCloud<coalParcel>&"
|
||||||
|
")"
|
||||||
|
) << "Stoichiometry, Sb, must be greater than zero" << nl
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::COxidationKineticDiffusionLimitedRate::
|
||||||
|
~COxidationKineticDiffusionLimitedRate()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
bool Foam::COxidationKineticDiffusionLimitedRate::active() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const scalar d,
|
||||||
|
const scalar T,
|
||||||
|
const scalar Tc,
|
||||||
|
const scalar pc,
|
||||||
|
const scalar rhoc,
|
||||||
|
const scalar mass,
|
||||||
|
const scalarField& YGas,
|
||||||
|
const scalarField& YLiquid,
|
||||||
|
const scalarField& YSolid,
|
||||||
|
const scalarField& YMixture,
|
||||||
|
const scalarField& dMassVolatile,
|
||||||
|
scalarField& dMassGas,
|
||||||
|
scalarField& dMassLiquid,
|
||||||
|
scalarField& dMassSolid,
|
||||||
|
scalarField& dMassSRCarrier
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Fraction of remaining combustible material
|
||||||
|
const scalar fComb = YMixture[coalParcel::SLD]*YSolid[CsLocalId_];
|
||||||
|
|
||||||
|
// Surface combustion active combustible fraction is consumed
|
||||||
|
if (fComb < SMALL)
|
||||||
|
{
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Local mass fraction of O2 in the carrier phase
|
||||||
|
const scalar YO2 =
|
||||||
|
owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
|
||||||
|
|
||||||
|
// Diffusion rate coefficient
|
||||||
|
const scalar D0 = C1_/d*pow(0.5*(T + Tc), 0.75);
|
||||||
|
|
||||||
|
// Kinetic rate
|
||||||
|
const scalar Rk = C2_*exp(-E_/(specie::RR*Tc));
|
||||||
|
|
||||||
|
// Particle surface area
|
||||||
|
const scalar Ap = mathematicalConstant::pi*sqr(d);
|
||||||
|
|
||||||
|
// Change in C mass [kg]
|
||||||
|
scalar dmC = Ap*rhoc*specie::RR*Tc*YO2/WO2_*D0*Rk/(D0 + Rk);
|
||||||
|
|
||||||
|
// Limit mass transfer by availability of C
|
||||||
|
dmC = min(mass*fComb, dmC);
|
||||||
|
|
||||||
|
// Change in O2 mass [kg]
|
||||||
|
const scalar dmO2 = dmC/WC_*Sb_*WO2_;
|
||||||
|
|
||||||
|
// Mass of newly created CO2 [kg]
|
||||||
|
const scalar dmCO2 = dmC + dmO2;
|
||||||
|
|
||||||
|
// Update local particle C mass
|
||||||
|
dMassSolid[CsLocalId_] += dmC;
|
||||||
|
|
||||||
|
// Update carrier O2 and CO2 mass
|
||||||
|
dMassSRCarrier[O2GlobalId_] -= dmO2;
|
||||||
|
dMassSRCarrier[CO2GlobalId_] += dmCO2;
|
||||||
|
|
||||||
|
// Heat of reaction [J]
|
||||||
|
return HcCO2_*dmCO2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,154 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd.
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Class
|
||||||
|
COxidationKineticDiffusionLimitedRate
|
||||||
|
|
||||||
|
Description
|
||||||
|
Kinetic/diffusion limited rate surface reaction model for coal parcels.
|
||||||
|
Limited to:
|
||||||
|
|
||||||
|
C(s) + Sb*O2 -> CO2
|
||||||
|
|
||||||
|
where Sb is the stoichiometry of the reaction
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef COxidationKineticDiffusionLimitedRate_H
|
||||||
|
#define COxidationKineticDiffusionLimitedRate_H
|
||||||
|
|
||||||
|
#include "SurfaceReactionModel.H"
|
||||||
|
#include "coalParcel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class COxidationKineticDiffusionLimitedRate Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class COxidationKineticDiffusionLimitedRate
|
||||||
|
:
|
||||||
|
public SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
// Model constants
|
||||||
|
|
||||||
|
//- Stoichiometry of reaction
|
||||||
|
const scalar Sb_;
|
||||||
|
|
||||||
|
//- Mass diffusion limited rate constant, C1
|
||||||
|
const scalar C1_;
|
||||||
|
|
||||||
|
//- Kinetics limited rate pre-exponential constant, C2
|
||||||
|
const scalar C2_;
|
||||||
|
|
||||||
|
//- Kinetics limited rate activation energy
|
||||||
|
const scalar E_;
|
||||||
|
|
||||||
|
|
||||||
|
// 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_;
|
||||||
|
|
||||||
|
|
||||||
|
// Addressing
|
||||||
|
|
||||||
|
//- Cs positions in global/local lists
|
||||||
|
label CsLocalId_;
|
||||||
|
|
||||||
|
//- O2 position in global list
|
||||||
|
label O2GlobalId_;
|
||||||
|
|
||||||
|
//- CO2 positions in global list
|
||||||
|
label CO2GlobalId_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("COxidationKineticDiffusionLimitedRate");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
COxidationKineticDiffusionLimitedRate
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
ReactingMultiphaseCloud<coalParcel>& owner
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~COxidationKineticDiffusionLimitedRate();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Flag to indicate whether model activates surface reaction model
|
||||||
|
virtual bool active() const;
|
||||||
|
|
||||||
|
//- Update surface reactions
|
||||||
|
virtual scalar calculate
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label cellI,
|
||||||
|
const scalar d,
|
||||||
|
const scalar T,
|
||||||
|
const scalar Tc,
|
||||||
|
const scalar pc,
|
||||||
|
const scalar rhoc,
|
||||||
|
const scalar mass,
|
||||||
|
const scalarField& YGas,
|
||||||
|
const scalarField& YLiquid,
|
||||||
|
const scalarField& YSolid,
|
||||||
|
const scalarField& YMixture,
|
||||||
|
const scalarField& dMassVolatile,
|
||||||
|
scalarField& dMassGas,
|
||||||
|
scalarField& dMassLiquid,
|
||||||
|
scalarField& dMassSolid,
|
||||||
|
scalarField& dMassSRCarrier
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
Reference in New Issue
Block a user