44 namespace diameterModels
60 >::names[] = {
"hardSphere",
"ParkRogak",
"conserved"};
76 const dictionary& dict,
77 const sizeGroup& group
80 SecondaryPropertyModel<shapeModel>(dict, group),
85 "kappa" + group.
name().substr(1),
88 IOobject::READ_IF_PRESENT,
98 group.VelocityGroup().
f().boundaryField().types()
100 Df_(
"Df",
dimless, group.dict()),
101 alphaC_(
"alphaC",
dimless, group.dict()),
106 "dColl" + group.
name().substr(1),
116 IOobject::groupName(
"Su", kappa_.
name()),
127 typedef mixedFvPatchField<scalar> mixedFvPatchScalarField;
131 isA<mixedFvPatchScalarField>(kappa_.boundaryFieldRef()[
patchi])
134 mixedFvPatchScalarField& kappa =
135 refCast<mixedFvPatchScalarField>
137 kappa_.boundaryFieldRef()[
patchi]
140 kappa.refValue() = sizeGroup_.dict().lookup<scalar>(
"kappa");
172 Foam::diameterModels::shapeModels::fractal::dColl()
const 174 tmp<volScalarField> tDColl
188 *
pow(sizeGroup_.x()*
pow3(kappa_)/(36*
pi*alphaC_), 1/Df_);
196 const sizeGroup& fi = sizeGroup_;
197 const phaseModel& phase = fi.phase();
200 const populationBalanceModel& popBal =
201 sizeGroup_.
mesh().lookupObject<populationBalanceModel>
203 sizeGroup_.VelocityGroup().popBalName()
217 - sinteringModel_->R()
219 -
fvm::Sp(popBal.Sp(fi.i()())*fi, kappa_)
220 +
fvc::ddt(fi.phase().residualAlpha(), kappa_)
221 -
fvm::ddt(fi.phase().residualAlpha(), kappa_)
233 max(kappa_, 6/sizeGroup_.dSph()),
234 6/popBal.sizeGroups().first().dSph()
237 kappa_.correctBoundaryConditions();
247 return kappa_*sizeGroup_.x();
255 const driftModel &model
258 surfaceGrowthTypes sgType
262 model.dict().lookup(
"surfaceGrowthType")
267 SecondaryPropertyModelTable()[SecondaryPropertyName(fu)]->fld();
273 Su_ += sourceKappa*fu.dSph()/sizeGroup_.dSph()*
Su;
280 const fractal& sourceShape =
281 refCast<const fractal>
295 + sourceShape.Df_*(1/sourceShape.d() - 1/dp)
299 dp += 6*(dv*a - fu.x()*da1)/
sqr(a);
306 dv*(4/dp + 2*Df_/3*(1/dc - 1/dp))
309 Su_ += (a + 0.5*da1 + 0.5*da2)/sizeGroup_.x()*
Su;
316 SecondaryPropertyModel::addDrift(Su, fu, model);
324 <<
"Unknown surface growth type. Valid types are:"
surfaceGrowthTypes
Surface growth type enumeration.
fvMatrix< scalar > fvScalarMatrix
#define forAll(list, i)
Loop across all elements in list.
errorManipArg< error, int > exit(error &err, const int errNo=1)
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
fractal(const dictionary &dict, const sizeGroup &group)
Construct from dictionary and sizeGroup.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
tmp< GeometricField< Type, fvPatchField, volMesh > > div(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
virtual void correct()
Correct the collisional diameter.
dimensionedSphericalTensor inv(const dimensionedSphericalTensor &dt)
virtual const volScalarField & fld() const
Return reference to secondary property field.
const dimensionSet dimless
static const NamedEnum< surfaceGrowthTypes, 3 > sgTypeNames_
Surface growth type names.
Initialise the NamedEnum HashTable from the static list of names.
Macros for easy insertion into run-time selection tables.
const dimensionSet dimLength
tmp< GeometricField< Type, fvPatchField, volMesh > > ddt(const dimensioned< Type > dt, const fvMesh &mesh)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Calculate the first temporal derivative.
const dimensionSet dimTime
virtual const tmp< volScalarField > a() const
Return representative surface area of the sizeGroup.
autoPtr< BasicCompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const typename BasicCompressibleMomentumTransportModel::transportModel &transport)
virtual volScalarField & src()
Access to secondary property source.
Calculate the matrix for the first temporal derivative.
Calculate the field for explicit evaluation of implicit and explicit sources.
Calculate the divergence of the given field.
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
const Mesh & mesh() const
Return mesh.
defineTypeNameAndDebug(combustionModel, 0)
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
word name(const complex &)
Return a string representation of a complex.
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.
const tmp< volScalarField::Internal > & Sp
Internal & ref()
Return a reference to the dimensioned internal field.
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
Calculate the matrix for the divergence of the given field and flux.
dimensionedScalar pow3(const dimensionedScalar &ds)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
const tmp< volScalarField::Internal > & Su
A class for managing temporary objects.
virtual void addDrift(const volScalarField &Su, const sizeGroup &fu, const driftModel &model)
Add drift contribution to secondary property source.
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Calculate the matrix for implicit and explicit sources.
virtual ~fractal()
Destructor.