38 namespace diameterModels
54 >::names[] = {
"hardSphere",
"ParkRogak",
"conserved"};
70 const dictionary& dict,
71 const sizeGroup& group
74 SecondaryPropertyModel<shapeModel>(dict, group),
79 "kappa" + group.
name().substr(1),
82 IOobject::READ_IF_PRESENT,
92 group.VelocityGroup().
f().boundaryField().types()
94 Df_(
"Df",
dimless, group.dict()),
95 alphaC_(
"alphaC",
dimless, group.dict()),
100 "dColl" + group.
name().substr(1),
110 IOobject::groupName(
"Su", kappa_.
name()),
121 typedef mixedFvPatchField<scalar> mixedFvPatchScalarField;
125 isA<const mixedFvPatchScalarField>(kappa_.boundaryField()[
patchi])
128 mixedFvPatchScalarField& kappa =
129 refCast<mixedFvPatchScalarField>
131 kappa_.boundaryFieldRef()[
patchi]
134 kappa.refValue() = sizeGroup_.dict().lookup<scalar>(
"kappa");
166 Foam::diameterModels::shapeModels::fractal::dColl()
const 168 tmp<volScalarField> tDColl
182 *
pow(sizeGroup_.x()*
pow3(kappa_)/(36*
pi*alphaC_), 1/Df_);
190 const sizeGroup& fi = sizeGroup_;
191 const phaseModel& phase = fi.phase();
194 const populationBalanceModel& popBal =
195 sizeGroup_.
mesh().lookupObject<populationBalanceModel>
197 sizeGroup_.VelocityGroup().popBalName()
211 - sinteringModel_->R()
213 -
fvm::Sp(popBal.Sp(fi.i())*fi, kappa_)
218 max(phase.residualAlpha() - alpha*fi, scalar(0))
219 /sizeGroup_.mesh().time().deltaT(),
234 max(kappa_, 6/sizeGroup_.dSph()),
235 6/popBal.sizeGroups().first().dSph()
238 kappa_.correctBoundaryConditions();
248 return kappa_*sizeGroup_.x();
256 const driftModel &model
259 surfaceGrowthTypes sgType
263 model.dict().lookup(
"surfaceGrowthType")
268 SecondaryPropertyModelTable()[SecondaryPropertyName(fu)]->fld();
274 Su_ += sourceKappa*fu.dSph()/sizeGroup_.dSph()*
Su;
281 const fractal& sourceShape =
282 refCast<const fractal>
296 + sourceShape.Df_*(1/sourceShape.d() - 1/dp)
300 dp += 6*(dv*a - fu.x()*da1)/
sqr(a);
307 dv*(4/dp + 2*Df_/3*(1/dc - 1/dp))
310 Su_ += (a + 0.5*da1 + 0.5*da2)/sizeGroup_.x()*
Su;
317 SecondaryPropertyModel::addDrift(Su, fu, model);
325 <<
"Unknown surface growth type. Valid types are:" surfaceGrowthTypes
Surface growth type enumeration.
tmp< fvMatrix< Type > > correction(const fvMatrix< Type > &)
Return the correction form of the given matrix.
fvMatrix< scalar > fvScalarMatrix
#define forAll(list, i)
Loop across all elements in list.
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
errorManipArg< error, int > exit(error &err, const int errNo=1)
#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
const dimensionSet dimTime
virtual const tmp< volScalarField > a() const
Return representative surface area of the sizeGroup.
virtual volScalarField & src()
Access to secondary property source.
Calculate the matrix for the first temporal derivative.
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
const Mesh & mesh() const
Return mesh.
defineTypeNameAndDebug(combustionModel, 0)
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.