52 void Foam::fv::KochFriedlanderSintering::readCoeffs(
const dictionary&
dict)
54 if (
dict.lookup<word>(
"populationBalance") != popBal_.name())
57 <<
"Cannot change the population balance of a " <<
type()
61 n_ =
dict.lookup<scalar>(
"n");
62 m_ =
dict.lookup<scalar>(
"m");
63 Cs_.read(
dict, CsDims());
65 dpMin_.readIfPresent(
dict);
74 const word& modelType,
82 mesh().lookupObject<diameterModels::populationBalanceModel>
84 coeffs(
dict).lookup(
"populationBalance")
87 n_(coeffs(
dict).lookup<scalar>(
"n")),
88 m_(coeffs(
dict).lookup<scalar>(
"m")),
89 Cs_(
"Cs", CsDims(), coeffs(
dict)),
100 if (!isA<diameterModels::shapeModels::fractal>(shapeModel))
continue;
103 refCast<const diameterModels::shapeModels::fractal>(shapeModel);
105 kappaNameToSizeGroupIndices_.
insert(fractal.
fld().
name(), sizeGroupi);
114 const word& fieldName
117 return kappaNameToSizeGroupIndices_.found(fieldName);
128 popBal_.sizeGroups()[kappaNameToSizeGroupIndices_[
kappa.
name()]];
134 return Cs_*
pow(dp, n_)*
pow(
T, m_)*
exp(Ta_/
T*(1 - dpMin_/dp));
147 popBal_.sizeGroups()[kappaNameToSizeGroupIndices_[
kappa.
name()]];
177 readCoeffs(coeffs(
dict));
#define forAll(list, i)
Loop across all elements in list.
Macros for easy insertion into run-time selection tables.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic GeometricField class.
bool insert(const Key &, const T &newElmt)
Insert a new hashedEntry.
const word & name() const
Return name.
virtual const volScalarField & T() const =0
Temperature [K].
const UPtrList< sizeGroup > & sizeGroups() const
Return the size groups belonging to this populationBalance.
Base class for modelling the shape of the particles belonging to a size class through alternative dia...
Class for modelling the shape of particle aggregates using the concept of fractal geometry....
virtual const volScalarField & fld() const
Return reference to secondary property field.
Single size class fraction field representing a fixed particle volume as defined by the user through ...
const dimensionedScalar & dSph() const
Return representative spherical diameter of the sizeGroup.
const phaseModel & phase() const
Return const-reference to the phase.
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Dimension set for the base types.
const word & name() const
Return const reference to name.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Mesh data needed to do the Finite Volume discretisation.
Finite volume model abstract base class.
static const dictionary & coeffs(const word &modelType, const dictionary &)
Return the coefficients sub-dictionary for a given model type.
virtual bool read(const dictionary &dict)
Read source dictionary.
Sintering model of Koch and Friedlander (1990). The characteristic time for sintering is given by.
virtual bool movePoints()
Update for mesh motion.
virtual tmp< volScalarField::Internal > tau(const volScalarField::Internal &kappa) const
Return the characteristic time for sintering.
void addSup(const volScalarField &alphaFi, const volScalarField &rho, const volScalarField &kappa, fvMatrix< scalar > &eqn) const
Add a source term to the surface-area-volume-ratio equation.
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
KochFriedlanderSintering(const word &name, const word &modelType, const fvMesh &mesh, const dictionary &dict)
Construct from explicit source name and mesh.
virtual bool read(const dictionary &dict)
Read source dictionary.
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
virtual bool addsSupToField(const word &fieldName) const
Return true if the fvModel adds a source term to the given.
virtual const rhoThermo & thermo() const =0
Return the thermophysical model.
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
Class containing mesh-to-mesh mapping information.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
A class for managing temporary objects.
A class for handling words, derived from string.
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Calculate the matrix for implicit and explicit sources.
const dimensionedScalar kappa
Coulomb constant: default SI units: [N.m2/C2].
addToRunTimeSelectionTable(fvConstraint, bound, dictionary)
defineTypeNameAndDebug(bound, 0)
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const VolField< Type > &)
errorManipArg< error, int > exit(error &err, const int errNo=1)
dimensionedScalar exp(const dimensionedScalar &ds)
void T(LagrangianPatchField< Type > &f, const LagrangianPatchField< Type > &f1)
const dimensionSet dimLength
const dimensionSet dimTemperature
const dimensionSet dimTime
void pow(LagrangianPatchField< typename powProduct< Type, r >::type > &f, const LagrangianPatchField< Type > &f1)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
static scalar R(const scalar a, const scalar x)
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.