55 { thermoMode::mdThermo,
"thermo" },
56 { thermoMode::mdLookup,
"lookup" },
63 Foam::fv::solidificationMeltingSource::Cp()
const 77 if (CpName_ ==
"CpRef")
79 const scalar CpRef =
coeffs_.
get<scalar>(
"CpRef");
120 void Foam::fv::solidificationMeltingSource::update(
const volScalarField&
Cp)
122 if (curTimeIndex_ == mesh_.time().timeIndex())
129 Info<<
type() <<
": " << name_ <<
" - updating phase indicator" <<
endl;
132 if (mesh_.topoChanging())
134 deltaT_.resize(cells_.size());
144 label celli = cells_[i];
146 scalar Tc =
T[celli];
147 scalar Cpc =
Cp[celli];
148 scalar alpha1New = alpha1_[celli] + relax_*Cpc*(Tc - Tmelt_)/L_;
150 alpha1_[celli] =
clamp(alpha1New, zero_one{});
151 deltaT_[i] = Tc - Tmelt_;
154 alpha1_.correctBoundaryConditions();
156 curTimeIndex_ = mesh_.time().timeIndex();
164 const word& sourceName,
165 const word& modelType,
171 Tmelt_(coeffs_.
get<scalar>(
"Tmelt")),
172 L_(coeffs_.
get<scalar>(
"L")),
173 relax_(coeffs_.getOrDefault<scalar>(
"relax", 0.9)),
174 mode_(thermoModeTypeNames_.
get(
"thermoMode", coeffs_)),
175 rhoRef_(coeffs_.
get<scalar>(
"rhoRef")),
176 TName_(coeffs_.getOrDefault<
word>(
"T",
"T")),
177 CpName_(coeffs_.getOrDefault<
word>(
"Cp",
"Cp")),
178 UName_(coeffs_.getOrDefault<
word>(
"U",
"U")),
179 phiName_(coeffs_.getOrDefault<
word>(
"phi",
"phi")),
180 Cu_(coeffs_.getOrDefault<scalar>(
"Cu", 100000)),
181 q_(coeffs_.getOrDefault<scalar>(
"q", 0.001)),
182 beta_(coeffs_.
get<scalar>(
"beta")),
198 deltaT_(cells_.size(), 0)
276 label celli = cells_[i];
278 scalar Vc = V[celli];
279 scalar alpha1c = alpha1_[celli];
281 scalar S = -Cu_*
sqr(1.0 - alpha1c)/(
pow3(alpha1c) + q_);
282 vector Sb(rhoRef_*
g*beta_*deltaT_[i]);
306 coeffs_.readEntry(
"Tmelt", Tmelt_);
307 coeffs_.readEntry(
"L", L_);
309 coeffs_.readIfPresent(
"relax", relax_);
311 thermoModeTypeNames_.readEntry(
"thermoMode", coeffs_, mode_);
313 coeffs_.readEntry(
"rhoRef", rhoRef_);
314 coeffs_.readIfPresent(
"T", TName_);
315 coeffs_.readIfPresent(
"U", UName_);
317 coeffs_.readIfPresent(
"Cu", Cu_);
318 coeffs_.readIfPresent(
"q", q_);
320 coeffs_.readEntry(
"beta", beta_);
List< ReturnType > get(const UPtrList< T > &list, const AccessOp &aop)
List of values generated by applying the access operation to each list item.
word dictName() const
The local dictionary name (final part of scoped name)
const Type & lookupObject(const word &name, const bool recursive=false) const
Lookup and return const reference to the object of the given Type. Fatal if not found or the wrong ty...
thermoMode
Options for the thermo mode specification.
const word zeroGradientType
A zeroGradient patch field type.
Abstract base-class for fluid and solid thermodynamic properties.
wordList fieldNames_
Field names to apply source to - populated by derived models.
void resize(const label len)
Adjust allocated size of list.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
defineTypeNameAndDebug(atmAmbientTurbSource, 0)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const fvMesh & mesh_
Reference to the mesh database.
const word & name() const noexcept
Return the object name.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
static void apply(bitSet &selection, const Detail::parcelSelection::actionType action, const Predicate &accept, const UList< Type > &list, const AccessOp &aop)
Ostream & endl(Ostream &os)
Add newline and flush stream.
virtual bool read(const dictionary &dict)
Read source dictionary.
Template invariant parts for fvPatchField.
Ignore writing from objectRegistry::writeObject()
const dimensionSet dimless
Dimensionless.
T get(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a T. FatalIOError if not found, or if the number of tokens is incorrect.
const Time & time() const
Return the top-level database.
static const Enum< thermoMode > thermoModeTypeNames_
Names for thermoMode.
Macros for easy insertion into run-time selection tables.
solidificationMeltingSource(const word &sourceName, const word &modelType, const dictionary &dict, const fvMesh &mesh)
Construct from explicit source name and mesh.
#define forAll(list, i)
Loop across all elements in list.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
psiReactionThermo & thermo
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
const GeometricField< Type, fvPatchField, volMesh > & psi(const label i=0) const
Return psi.
A class representing the concept of a GeometricField of 1 used to avoid unnecessary manipulations for...
const word name_
Source name.
A class for handling words, derived from Foam::string.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
static tmp< T > New(Args &&... args)
Construct tmp with forwarding arguments.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
errorManip< error > abort(error &err)
virtual bool read(const dictionary &dict)
Read source dictionary.
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
addToRunTimeSelectionTable(option, atmAmbientTurbSource, dictionary)
const uniformDimensionedVectorField & g
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
static word timeName(const scalar t, const int precision=precision_)
Return time name of given scalar time formatted with the given precision.
const volScalarField & Cp
int debug
Static debugging option.
static const gravity & New(const word &name, const Time &runTime)
Return named gravity field cached or construct on Time.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
const dimensionSet dimEnergy
virtual void addSup(fvMatrix< scalar > &eqn, const label fieldi)
Add explicit contribution to enthalpy equation.
Field< Type > & source() noexcept
dimensionedScalar pow3(const dimensionedScalar &ds)
Enum is a wrapper around a list of names/values that represent particular enumeration (or int) values...
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Mesh data needed to do the Finite Volume discretisation.
void resetApplied()
Resize/reset applied flag list for all fieldNames_ entries.
A special matrix type and solver, designed for finite volume solutions of scalar equations.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Intermediate abstract class for handling cell-set options for the derived fvOptions.
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
A class for managing temporary objects.
static const word & extrapolatedCalculatedType() noexcept
The type name for extrapolatedCalculated patch fields combines zero-gradient and calculated.
Defines the attributes of an object for which implicit objectRegistry management is supported...
dictionary coeffs_
Dictionary containing source coefficients.
dimensionSet clamp(const dimensionSet &a, const dimensionSet &range)
static constexpr const zero Zero
Global zero (0)