Go to the documentation of this file.
29 #include "phasePair.H"
30 #include "phaseSystem.H"
48 Foam::dragModels::AttouFerschneider::KGasLiquid
50 const phaseModel& gas,
51 const phaseModel& liquid
54 const phaseModel& solid = gas.fluid().phases()[solidName_];
59 cbrt(
max(solid, solid.residualAlpha())/oneMinusGas)
64 E2_*gas.mu()*
sqr(oneMinusGas/solid.d())*
sqr(cbrtR)
65 /
max(gas, gas.residualAlpha())
66 + E2_*gas.rho()*magURel*(1 - gas)/solid.d()*cbrtR;
71 Foam::dragModels::AttouFerschneider::KGasSolid
73 const phaseModel& gas,
74 const phaseModel& solid
80 cbrt(
max(solid, solid.residualAlpha())/oneMinusGas)
84 E1_*gas.mu()*
sqr(oneMinusGas/solid.d())*
sqr(cbrtR)
85 /
max(gas, gas.residualAlpha())
86 + E2_*gas.rho()*
mag(gas.U())*(1 - gas)/solid.d()*cbrtR;
91 Foam::dragModels::AttouFerschneider::KLiquidSolid
93 const phaseModel& liquid,
94 const phaseModel& solid
97 const phaseModel& gas = liquid.fluid().phases()[gasName_];
100 E1_*liquid.mu()*
sqr(
max(solid, solid.residualAlpha())/solid.d())
101 /
max(liquid, liquid.residualAlpha())
102 + E2_*liquid.rho()*
mag(gas.U())*solid/solid.d();
112 const bool registerObject
116 gasName_(
dict.lookup(
"gas")),
117 liquidName_(
dict.lookup(
"liquid")),
118 solidName_(
dict.lookup(
"solid")),
136 <<
"Not implemented."
137 <<
"Drag coefficient is not defined for the AttouFerschneider model."
150 return KGasLiquid(pair_.phase1(), pair_.phase2());
152 return KGasLiquid(pair_.phase2(), pair_.phase1());
158 return KGasSolid(pair_.phase1(), pair_.phase2());
160 return KGasSolid(pair_.phase2(), pair_.phase1());
166 return KLiquidSolid(pair_.phase1(), pair_.phase2());
168 return KLiquidSolid(pair_.phase2(), pair_.phase1());
172 <<
"The pair does not contain two of out of the gas, liquid and solid "
AttouFerschneider(const dictionary &dict, const phasePair &pair, const bool registerObject)
Construct from a dictionary and a phase pair.
virtual tmp< surfaceScalarField > Kf() const
The drag coefficient used in the face-momentum equations.
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
Dimensionless.
A class for managing temporary objects.
virtual tmp< volScalarField > K() const
The drag coefficient used in the momentum equation.
defineTypeNameAndDebug(AttouFerschneider, 0)
CGAL::Exact_predicates_exact_constructions_kernel K
virtual tmp< volScalarField > CdRe() const
Drag coefficient.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Macros for easy insertion into run-time selection tables.
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &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)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
An ordered pair of two objects of type <T> with first() and second() elements.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
addToRunTimeSelectionTable(dragModel, AttouFerschneider, dictionary)
virtual ~AttouFerschneider()
Destructor.
Attou and Ferschneider's Drag model for film flow through packed beds. The implementation follows the...
dimensionedScalar cbrt(const dimensionedScalar &ds)