Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes
solidificationMeltingSource Class Reference

This source is designed to model the effect of solidification and melting processes, e.g. windhield defrosting. The phase change occurs at the melting temperature, Tmelt. More...

Inheritance diagram for solidificationMeltingSource:
Inheritance graph
[legend]
Collaboration diagram for solidificationMeltingSource:
Collaboration graph
[legend]

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

Private Member Functions

tmp< volScalarFieldCp () const
 Return the specific heat capacity field. More...
 
vector g () const
 Return the gravity vector. More...
 
void update (const volScalarField &Cp)
 Update the model. More...
 
template<class RhoFieldType >
void apply (const RhoFieldType &rho, fvMatrix< scalar > &eqn)
 Helper function to apply to the energy equation. More...
 
 solidificationMeltingSource (const solidificationMeltingSource &)
 Disallow default bitwise copy construct. More...
 
void operator= (const solidificationMeltingSource &)
 Disallow default bitwise assignment. More...
 

Private Attributes

scalar Tmelt_
 Temperature at which melting occurs [K]. More...
 
scalar L_
 Latent heat of fusion [J/kg]. More...
 
scalar relax_
 Phase fraction under-relaxation coefficient. More...
 
thermoMode mode_
 Thermodynamics mode. More...
 
scalar rhoRef_
 Reference density - typically the solid density. More...
 
word TName_
 Name of temperature field - default = "T" (optional) More...
 
word CpName_
 Name of specific heat capacity field - default = "Cp" (optional) More...
 
word UName_
 Name of velocity field - default = "U" (optional) More...
 
word phiName_
 Name of flux field - default = "phi" (optional) More...
 
scalar Cu_
 Mushy region momentum sink coefficient [1/s]; default = 10^5. More...
 
scalar q_
 Coefficient used in porosity calc - default = 0.001. More...
 
scalar beta_
 Thermal expansion coefficient [1/K]. More...
 
volScalarField alpha1_
 Phase fraction indicator field. More...
 
label curTimeIndex_
 Current time index (used for updating) More...
 
scalarField deltaT_
 Temperature change cached for source calculation when alpha1 updated. 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 phase change occurs at the melting temperature, Tmelt.

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.

Based on the references:

  1. V.R. Voller and C. Prakash, A fixed grid numerical modelling methodology for convection-diffusion mushy phase-change problems, Int. J. Heat Mass Transfer 30(8):17091719, 1987.
  2. C.R. Swaminathan. and V.R. Voller, A general enthalpy model for modeling solidification processes, Metallurgical Transactions 23B:651664, 1992.

The model generates a field <name>:alpha1 which can be visualised to to show the melt distribution as a fraction [0-1]


Source usage
Example usage:

solidificationMeltingSource1
{
    type            solidificationMeltingSource;
    active          yes;

    solidificationMeltingSourceCoeffs
    {
        selectionMode   cellZone;
        cellZone        iceZone;

        Tmelt           273;
        L               334000;
        thermoMode      thermo;
        beta            50e-6;
        rhoRef          800;
    }
}

Where:

Property Description Required Default value
Tmelt Melting temperature [K] yes
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 yes
rhoName Name of density field no rho
TName Name of temperature field no T
CpName Name of specific heat capacity field no Cp
UName Name of velocity field no U
phiName Name of flux field no phi
Cu Model coefficient 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 188 of file solidificationMeltingSource.H.

Member Enumeration Documentation

◆ thermoMode

enum thermoMode
Enumerator
mdThermo 
mdLookup 

Definition at line 194 of file solidificationMeltingSource.H.

Constructor & Destructor Documentation

◆ solidificationMeltingSource() [1/2]

Disallow default bitwise copy construct.

◆ solidificationMeltingSource() [2/2]

solidificationMeltingSource ( const word sourceName,
const word modelType,
const dictionary dict,
const fvMesh mesh 
)

Construct from explicit source name and mesh.

Definition at line 182 of file solidificationMeltingSource.C.

References Foam::abort(), basicThermo::dictName, Foam::FatalError, and FatalErrorInFunction.

Here is the call graph for this function:

Member Function Documentation

◆ Cp()

Foam::tmp< Foam::volScalarField > Cp ( ) const
private

◆ g()

Foam::vector g ( ) const
private

Return the gravity vector.

Definition at line 129 of file solidificationMeltingSource.C.

References dimensioned::value().

Here is the call graph for this function:

◆ update()

void update ( const volScalarField Cp)
private

Update the model.

Definition at line 144 of file solidificationMeltingSource.C.

References Foam::endl(), forAll, Foam::Info, Foam::max(), Foam::min(), Foam::T(), and Foam::type().

Here is the call graph for this function:

◆ apply()

void apply ( const RhoFieldType &  rho,
fvMatrix< scalar > &  eqn 
)
private

Helper function to apply to the energy equation.

Definition at line 33 of file solidificationMeltingSourceTemplates.C.

References Foam::fvc::ddt(), Foam::dimEnergy, Foam::dimMass, Foam::dimTemperature, Foam::endl(), Foam::Info, fvMatrix::psi(), rho, and Foam::type().

Here is the call graph for this function:

◆ operator=()

void operator= ( const solidificationMeltingSource )
private

Disallow default bitwise assignment.

◆ 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 252 of file solidificationMeltingSource.C.

◆ addSup() [2/4]

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

Add implicit contribution to momentum equation.

Reimplemented from option.

Definition at line 273 of file solidificationMeltingSource.C.

References Foam::endl(), forAll, g, Foam::Info, Foam::pow3(), fvMatrix::psi(), fvMatrix::source(), Foam::fvc::Sp(), Foam::sqr(), Foam::fvc::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 262 of file solidificationMeltingSource.C.

References rho.

◆ 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 310 of file solidificationMeltingSource.C.

◆ read()

bool read ( const dictionary dict)
virtual

Field Documentation

◆ thermoModeTypeNames_

const Foam::NamedEnum< Foam::fv::solidificationMeltingSource::thermoMode, 2 > thermoModeTypeNames_
static

◆ Tmelt_

scalar Tmelt_
private

Temperature at which melting occurs [K].

Definition at line 208 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ L_

scalar L_
private

Latent heat of fusion [J/kg].

Definition at line 211 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ relax_

scalar relax_
private

Phase fraction under-relaxation coefficient.

Definition at line 214 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ mode_

thermoMode mode_
private

Thermodynamics mode.

Definition at line 217 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::Cp(), and solidificationMeltingSource::read().

◆ rhoRef_

scalar rhoRef_
private

Reference density - typically the solid density.

Definition at line 220 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ TName_

word TName_
private

Name of temperature field - default = "T" (optional)

Definition at line 223 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ CpName_

word CpName_
private

Name of specific heat capacity field - default = "Cp" (optional)

Definition at line 226 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::Cp().

◆ UName_

word UName_
private

Name of velocity field - default = "U" (optional)

Definition at line 229 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ phiName_

word phiName_
private

Name of flux field - default = "phi" (optional)

Definition at line 232 of file solidificationMeltingSource.H.

◆ Cu_

scalar Cu_
private

Mushy region momentum sink coefficient [1/s]; default = 10^5.

Definition at line 235 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ q_

scalar q_
private

Coefficient used in porosity calc - default = 0.001.

Definition at line 238 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ beta_

scalar beta_
private

Thermal expansion coefficient [1/K].

Definition at line 241 of file solidificationMeltingSource.H.

Referenced by solidificationMeltingSource::read().

◆ alpha1_

volScalarField alpha1_
private

Phase fraction indicator field.

Definition at line 244 of file solidificationMeltingSource.H.

◆ curTimeIndex_

label curTimeIndex_
private

Current time index (used for updating)

Definition at line 247 of file solidificationMeltingSource.H.

◆ deltaT_

scalarField deltaT_
private

Temperature change cached for source calculation when alpha1 updated.

Definition at line 250 of file solidificationMeltingSource.H.


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