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");
113 void Foam::fv::solidificationMeltingSource::update(
const volScalarField&
Cp)
115 if (curTimeIndex_ == mesh_.time().timeIndex())
122 Info<<
type() <<
": " << name_ <<
" - updating phase indicator" <<
endl;
125 if (mesh_.topoChanging())
127 deltaT_.resize(cells_.size());
137 label celli = cells_[i];
139 scalar Tc =
T[celli];
140 scalar Cpc =
Cp[celli];
141 scalar alpha1New = alpha1_[celli] + relax_*Cpc*(Tc - Tmelt_)/L_;
143 alpha1_[celli] =
clamp(alpha1New, zero_one{});
144 deltaT_[i] = Tc - Tmelt_;
147 alpha1_.correctBoundaryConditions();
149 curTimeIndex_ = mesh_.time().timeIndex();
157 const word& sourceName,
158 const word& modelType,
164 Tmelt_(coeffs_.
get<scalar>(
"Tmelt")),
165 L_(coeffs_.
get<scalar>(
"L")),
166 relax_(coeffs_.getOrDefault<scalar>(
"relax", 0.9)),
167 mode_(thermoModeTypeNames_.
get(
"thermoMode", coeffs_)),
168 rhoRef_(coeffs_.
get<scalar>(
"rhoRef")),
169 TName_(coeffs_.getOrDefault<
word>(
"T",
"T")),
170 CpName_(coeffs_.getOrDefault<
word>(
"Cp",
"Cp")),
171 UName_(coeffs_.getOrDefault<
word>(
"U",
"U")),
172 phiName_(coeffs_.getOrDefault<
word>(
"phi",
"phi")),
173 Cu_(coeffs_.getOrDefault<scalar>(
"Cu", 100000)),
174 q_(coeffs_.getOrDefault<scalar>(
"q", 0.001)),
175 beta_(coeffs_.
get<scalar>(
"beta")),
180 IOobject::scopedName(name_,
"alpha1"),
192 deltaT_(cells_.size(), 0)
270 label celli = cells_[i];
272 scalar Vc = V[celli];
273 scalar alpha1c = alpha1_[celli];
275 scalar S = -Cu_*
sqr(1.0 - alpha1c)/(
pow3(alpha1c) + q_);
276 vector Sb(rhoRef_*
g*beta_*deltaT_[i]);
300 coeffs_.readEntry(
"Tmelt", Tmelt_);
301 coeffs_.readEntry(
"L", L_);
303 coeffs_.readIfPresent(
"relax", relax_);
305 thermoModeTypeNames_.readEntry(
"thermoMode", coeffs_, mode_);
307 coeffs_.readEntry(
"rhoRef", rhoRef_);
308 coeffs_.readIfPresent(
"T", TName_);
309 coeffs_.readIfPresent(
"U", UName_);
311 coeffs_.readIfPresent(
"Cu", Cu_);
312 coeffs_.readIfPresent(
"q", q_);
314 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 scalarField & diag() const
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.
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.
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.
static word scopedName(const std::string &scope, const word &name)
Create scope:name or scope_name string.
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)
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...
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, IOobjectOption::registerOption regOpt, const Mesh &mesh, const dimensionSet &dims, const word &patchFieldType=fvPatchField< scalar >::calculatedType())
Return tmp field (NO_READ, NO_WRITE) from name, mesh, dimensions and patch type. [Takes current timeN...
addToRunTimeSelectionTable(option, atmAmbientTurbSource, dictionary)
const uniformDimensionedVectorField & g
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
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)