45 Foam::dragModels::AttouFerschneider::KGasLiquid
47 const phaseModel& gas,
48 const phaseModel& liquid
51 const phaseModel& solid = gas.fluid().phases()[solidName_];
56 cbrt(
max(solid, solid.residualAlpha())/oneMinusGas)
61 E2_*gas.fluidThermo().mu()*
sqr(oneMinusGas/solid.d())*
sqr(cbrtR)
62 /
max(gas, gas.residualAlpha())
63 + E2_*gas.rho()*magURel*(1 - gas)/solid.d()*cbrtR;
68 Foam::dragModels::AttouFerschneider::KGasSolid
70 const phaseModel& gas,
71 const phaseModel& solid
77 cbrt(
max(solid, solid.residualAlpha())/oneMinusGas)
81 E1_*gas.fluidThermo().mu()*
sqr(oneMinusGas/solid.d())*
sqr(cbrtR)
82 /
max(gas, gas.residualAlpha())
83 + E2_*gas.rho()*
mag(gas.U())*(1 - gas)/solid.d()*cbrtR;
88 Foam::dragModels::AttouFerschneider::KLiquidSolid
90 const phaseModel& liquid,
91 const phaseModel& solid
94 const phaseModel& gas = liquid.fluid().phases()[gasName_];
97 E1_*liquid.fluidThermo().mu()
98 *
sqr(
max(solid, solid.residualAlpha())/solid.d())
99 /
max(liquid, liquid.residualAlpha())
100 + E2_*liquid.rho()*
mag(gas.U())*solid/solid.d();
110 const bool registerObject
114 interface_(interface),
115 gasName_(
dict.lookup(
"gas")),
116 liquidName_(
dict.lookup(
"liquid")),
117 solidName_(
dict.lookup(
"solid")),
138 if (interface_.contains(gas) && interface_.contains(
liquid))
140 return KGasLiquid(gas,
liquid);
142 if (interface_.contains(gas) && interface_.contains(solid))
144 return KGasSolid(gas, solid);
146 if (interface_.contains(
liquid) && interface_.contains(solid))
148 return KLiquidSolid(
liquid, solid);
152 <<
"The interface " << interface_.name() <<
" does not contain two "
153 <<
"out of the gas, liquid and solid phase models."
Macros for easy insertion into run-time selection tables.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Model for drag between phases.
Attou and Ferschneider's Drag model for film flow through packed beds. The implementation follows the...
virtual tmp< surfaceScalarField > Kf() const
The drag coefficient used in the face-momentum equations.
AttouFerschneider(const dictionary &dict, const phaseInterface &interface, const bool registerObject)
Construct from a dictionary and an interface.
virtual tmp< volScalarField > K() const
The drag coefficient used in the momentum equation.
virtual ~AttouFerschneider()
Destructor.
Generic thermophysical properties class for a liquid in which the functions and coefficients for each...
Class to represent an interface between phases. Derivations can further specify the configuration of ...
const phaseSystem & fluid() const
Return the system to which this phase belongs.
const phaseModelList & phases() const
Return the phase models.
A class for managing temporary objects.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
defineTypeNameAndDebug(aerosolDrag, 0)
addToRunTimeSelectionTable(dragModel, aerosolDrag, dictionary)
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
errorManipArg< error, int > exit(error &err, const int errNo=1)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimless
VolField< scalar > volScalarField
dimensioned< scalar > mag(const dimensioned< Type > &)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
dimensionedScalar cbrt(const dimensionedScalar &ds)