solidificationMeltingSource Class Reference

This source is designed to model the effect of solidification and melting processes, e.g. windhield defrosting. More...

Inheritance diagram for solidificationMeltingSource:
Collaboration diagram for solidificationMeltingSource:

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 selectionModeTypeselectionMode () const
 Return const access to the cell selection mode. More...
 
const wordcellSetName () 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 labelListcells () 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< optionclone () const
 Return clone. More...
 
virtual ~option ()
 Destructor. More...
 
const wordname () const
 Return const access to the source name. More...
 
const fvMeshmesh () const
 Return const access to the mesh database. More...
 
const dictionarycoeffs () 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...
 
Switchactive ()
 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< optionNew (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< pointpoints_
 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 fvMeshmesh_
 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...
 

Detailed Description

This source is designed to model the effect of solidification and melting processes, e.g. windhield 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:

  • for a miscible binary system alpha1e = 0;
  • for a binary system not miscible at solid state alpha1e = C0 / CLE where CLE is eutectic melt concentration;
  • for a binary system partially-miscible at solid state 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].

Usage
Example usage:
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
Source files

Definition at line 226 of file solidificationMeltingSource.H.

Member Enumeration Documentation

◆ thermoMode

enum thermoMode
Enumerator
mdThermo 
mdLookup 

Definition at line 232 of file solidificationMeltingSource.H.

Constructor & Destructor Documentation

◆ solidificationMeltingSource() [1/2]

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< directionType, 3 >::names().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solidificationMeltingSource() [2/2]

Disallow default bitwise copy construction.

Member Function Documentation

◆ TypeName()

TypeName ( "solidificationMeltingSource"  )

Runtime type information.

◆ addSup() [1/4]

void addSup ( fvMatrix< scalar > &  eqn,
const label  fieldi 
)
virtual

Add explicit contribution to enthalpy equation.

Reimplemented from option.

Definition at line 262 of file solidificationMeltingSource.C.

Referenced by solidificationMeltingSource::addSup(), and solidificationMeltingSource::solidificationMeltingSource().

Here is the caller graph for this function:

◆ addSup() [2/4]

void addSup ( fvMatrix< vector > &  eqn,
const label  fieldi 
)
virtual

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().

Here is the call graph for this function:

◆ addSup() [3/4]

void addSup ( const volScalarField rho,
fvMatrix< scalar > &  eqn,
const label  fieldi 
)
virtual

Add explicit contribution to compressible enthalpy equation.

Reimplemented from option.

Definition at line 272 of file solidificationMeltingSource.C.

References solidificationMeltingSource::addSup().

Here is the call graph for this function:

◆ addSup() [4/4]

void addSup ( const volScalarField rho,
fvMatrix< vector > &  eqn,
const label  fieldi 
)
virtual

Add implicit contribution to compressible momentum equation.

Reimplemented from option.

Definition at line 320 of file solidificationMeltingSource.C.

◆ read()

bool read ( const dictionary dict)
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_.

Here is the call graph for this function:

◆ operator=()

void operator= ( const solidificationMeltingSource )
delete

Disallow default bitwise assignment.

Member Data Documentation

◆ thermoModeTypeNames_


The documentation for this class was generated from the following files: