This source is designed to model the effect of solidification and melting processes, e.g. windshield defrosting. More...
Public Types | |
enum | thermoMode { mdThermo, mdLookup } |
Public Types inherited from cellSetOption | |
enum | selectionModeType { smPoints, smCellSet, smCellZone, smAll } |
Enumeration for selection mode types. More... | |
Public Member Functions | |
TypeName ("solidificationMeltingSource") | |
Runtime type information. More... | |
solidificationMeltingSource (const word &sourceName, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from explicit source name and mesh. More... | |
solidificationMeltingSource (const solidificationMeltingSource &)=delete | |
Disallow default bitwise copy construction. More... | |
virtual void | addSup (fvMatrix< scalar > &eqn, const label fieldi) |
Add explicit contribution to enthalpy equation. More... | |
virtual void | addSup (fvMatrix< vector > &eqn, const label fieldi) |
Add implicit contribution to momentum equation. More... | |
virtual void | addSup (const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
Add explicit contribution to compressible enthalpy equation. More... | |
virtual void | addSup (const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
Add implicit contribution to compressible momentum equation. More... | |
virtual bool | read (const dictionary &dict) |
Read source dictionary. More... | |
void | operator= (const solidificationMeltingSource &)=delete |
Disallow default bitwise assignment. More... | |
Public Member Functions inherited from cellSetOption | |
TypeName ("cellSetOption") | |
Runtime type information. More... | |
cellSetOption (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
virtual | ~cellSetOption () |
Destructor. More... | |
scalar | timeStart () const |
Return const access to the time start. More... | |
scalar | duration () const |
Return const access to the duration. More... | |
bool | inTimeLimits (const scalar time) const |
Return true if within time limits. More... | |
const selectionModeType & | selectionMode () const |
Return const access to the cell selection mode. More... | |
const word & | cellSetName () const |
Return const access to the name of cell set for "cellSet". More... | |
scalar | V () const |
Return const access to the total cell volume. More... | |
const labelList & | cells () const |
Return const access to the cell set. More... | |
scalar & | timeStart () |
Return access to the time start. More... | |
scalar & | duration () |
Return access to the duration. More... | |
virtual bool | isActive () |
Is the source active? More... | |
Public Member Functions inherited from option | |
TypeName ("option") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, option, dictionary,(const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh),(name, modelType, dict, mesh)) | |
option (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
autoPtr< option > | clone () const |
Return clone. More... | |
virtual | ~option () |
Destructor. More... | |
const word & | name () const |
Return const access to the source name. More... | |
const fvMesh & | mesh () const |
Return const access to the mesh database. More... | |
const dictionary & | coeffs () const |
Return dictionary. More... | |
bool | active () const |
Return const access to the source active flag. More... | |
void | setApplied (const label fieldi) |
Set the applied flag to true for field index fieldi. More... | |
Switch & | active () |
Return access to the source active flag. More... | |
virtual label | applyToField (const word &fieldName) const |
Return index of field name if found in fieldNames list. More... | |
virtual void | checkApplied () const |
Check that the source has been applied. More... | |
virtual void | addSup (fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< vector > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | correct (volScalarField &field) |
virtual void | correct (volVectorField &field) |
virtual void | correct (volSphericalTensorField &field) |
virtual void | correct (volSymmTensorField &field) |
virtual void | correct (volTensorField &field) |
virtual void | writeHeader (Ostream &) const |
Write the source header information. More... | |
virtual void | writeFooter (Ostream &) const |
Write the source footer information. More... | |
virtual void | writeData (Ostream &) const |
Write the source properties. More... | |
Static Public Attributes | |
static const NamedEnum< thermoMode, 2 > | thermoModeTypeNames_ |
Static Public Attributes inherited from cellSetOption | |
static const NamedEnum< selectionModeType, 4 > | selectionModeTypeNames_ |
Word list of selection mode type names. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from option | |
static autoPtr< option > | New (const word &name, const dictionary &dict, const fvMesh &mesh) |
Return a reference to the selected fvOption model. More... | |
Protected Member Functions inherited from cellSetOption | |
void | setSelection (const dictionary &dict) |
Set the cellSet or points selection. More... | |
void | setCellSet () |
Set the cell set based on the user input selection mode. More... | |
Protected Attributes inherited from cellSetOption | |
scalar | timeStart_ |
Time start. More... | |
scalar | duration_ |
Duration. More... | |
selectionModeType | selectionMode_ |
Cell selection mode. More... | |
word | cellSetName_ |
Name of cell set for "cellSet" and "cellZone" selectionMode. More... | |
List< point > | points_ |
List of points for "points" selectionMode. More... | |
labelList | cells_ |
Set of cells to apply source to. More... | |
scalar | V_ |
Sum of cell volumes. More... | |
Protected Attributes inherited from option | |
const word | name_ |
Source name. More... | |
const word | modelType_ |
Model type. More... | |
const fvMesh & | mesh_ |
Reference to the mesh database. More... | |
dictionary | dict_ |
Top level source dictionary. More... | |
dictionary | coeffs_ |
Dictionary containing source coefficients. More... | |
Switch | active_ |
Source active flag. More... | |
wordList | fieldNames_ |
Field names to apply source to - populated by derived models. More... | |
List< bool > | applied_ |
Applied flag list - corresponds to each fieldNames_ entry. More... | |
This source is designed to model the effect of solidification and melting processes, e.g. windshield defrosting.
The isotherm phase change occurs at the melting temperature, Tsol
(= Tliq
). The not isotherm phase change occurs between solidus and liquidus temperature, Tsol
< Tliq
respectively, as long as the melt fraction is greater than the max eutectic melt fraction, alpha1e
(0 = pure_substance, 1 = eutectic_mixture is not permitted), where a linear eutectic melt fraction to temperature relation is considered; e.g. given a specific quantity of a binary system, alpha1
is its melt fraction and alpha0
is its solid fraction, such that alpha0
= 1 - alpha1
therefore, assuming infinite solute diffusion, the quantity of a component in solid phase is (1 - alpha1
) * CS
where CS
is the solid concentration of the considered component and the quantity of a component in liquid phase is alpha1
* CL
where CL
is the melt concentration of the considered component; considering that the total quantity of a component must be equal to the sum of the quantities of the considered component in the liquid and solid phases, if C0
is the initial concentration of the considered component before the phase change, then: C0
= (1 - alpha1
) * CS
+ alpha1
* CL
(lever rule) from which: alpha1
= (C0
- CS
) / (CL
- CS
) and thus:
alpha1e
= 0;alpha1e
= C0
/ CLE
where CLE
is eutectic melt concentration;alpha1e
= (C0
- CSE
) / (CLE
- CSE
) where CSE
is eutectic solid concentration of the relative solid solution.The presence of the solid phase in the flow field is incorporated into the model as a momentum porosity contribution; the energy associated with the phase change is added as an enthalpy contribution.
References:
Voller, V. R., & Prakash, C. (1987). A fixed grid numerical modelling methodology for convection-diffusion mushy region phase-change problems. International Journal of Heat and Mass Transfer, 30(8), 1709-1719. Swaminathan, C. R., & Voller, V. R. (1992). A general enthalpy method for modeling solidification processes. Metallurgical transactions B, 23(5), 651-664.
The model generates the field <name>
:alpha1 which can be visualised to to show the melt distribution as a fraction [0-1].
solidificationMeltingSource1 { type solidificationMeltingSource; active yes; selectionMode cellZone; cellZone iceZone; Tsol 273; L 334000; thermoMode thermo; beta 50e-6; rhoRef 800; }
Where:
Property | Description | Required | Default value | |
---|---|---|---|---|
Tsol | Solidus temperature [K] | yes | ||
Tliq | Liquidus temperature [K] | no | Tsol | |
alpha1e | Max eutectic melt fraction [0-1[ | no | 0 | |
L | Latent heat of fusion [J/kg] | yes | ||
relax | Relaxation coefficient [0-1] | no | 0.9 | |
thermoMode | Thermo mode [thermo | lookup] | yes | |
rhoRef | Reference (solid) density [kg/m^3] | yes | ||
rho | Name of density field | no | rho | |
T | Name of temperature field | no | T | |
Cp | Name of specific heat field | no | Cp | |
U | Name of velocity field | no | U | |
phi | Name of flux field | no | phi | |
Cu | Model coefficient [1/s] | no | 100000 | |
q | Model coefficient | no | 0.001 | |
beta | Thermal expansion coefficient [1/K] | yes | ||
g | Accelerartion due to gravity | no |
Definition at line 226 of file solidificationMeltingSource.H.
enum thermoMode |
Enumerator | |
---|---|
mdThermo | |
mdLookup |
Definition at line 232 of file solidificationMeltingSource.H.
solidificationMeltingSource | ( | const word & | sourceName, |
const word & | modelType, | ||
const dictionary & | dict, | ||
const fvMesh & | mesh | ||
) |
Construct from explicit source name and mesh.
Definition at line 190 of file solidificationMeltingSource.C.
References Foam::abort(), solidificationMeltingSource::addSup(), dictionaryName::dictName(), Foam::FatalError, FatalErrorInFunction, basicThermo::he(), IOobject::name(), and thermo.
Referenced by NamedEnum< compressibleField, 8 >::names().
|
delete |
Disallow default bitwise copy construction.
TypeName | ( | "solidificationMeltingSource" | ) |
Runtime type information.
Add explicit contribution to enthalpy equation.
Reimplemented from option.
Definition at line 262 of file solidificationMeltingSource.C.
Referenced by solidificationMeltingSource::addSup(), and solidificationMeltingSource::solidificationMeltingSource().
Add implicit contribution to momentum equation.
Reimplemented from option.
Definition at line 283 of file solidificationMeltingSource.C.
References solidificationMeltingSource::addSup(), Cp(), lduMatrix::diag(), Foam::endl(), forAll, g, Foam::Info, IOobject::name(), Foam::pow3(), fvMatrix< Type >::psi(), fvMatrix< Type >::source(), Sp, Foam::sqr(), Su, and Foam::type().
|
virtual |
Add explicit contribution to compressible enthalpy equation.
Reimplemented from option.
Definition at line 272 of file solidificationMeltingSource.C.
References solidificationMeltingSource::addSup().
|
virtual |
Add implicit contribution to compressible momentum equation.
Reimplemented from option.
Definition at line 320 of file solidificationMeltingSource.C.
|
virtual |
Read source dictionary.
Reimplemented from cellSetOption.
Definition at line 30 of file solidificationMeltingSourceIO.C.
References option::coeffs_, dictionary::lookup(), NamedEnum< Enum, nEnum >::read(), cellSetOption::read(), dictionary::readIfPresent(), and solidificationMeltingSource::thermoModeTypeNames_.
|
delete |
Disallow default bitwise assignment.
|
static |
Definition at line 238 of file solidificationMeltingSource.H.
Referenced by NamedEnum< compressibleField, 8 >::names(), and solidificationMeltingSource::read().