Solidification sources

This source is designed to model the effect of solidification and melting processes. The isotherm phase change occurs at the melting temperature, \({T_{sol} = T_{liq}}\). The not isotherm phase change occurs between solidus and liquidus temperature, \({T_{sol} < T_{liq}}\) respectively. 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. The model generates the field <name>:alpha1 which can be visualised to show the melt distribution as a fraction [0-1].

Installation

Pre-requisites:

In the directChillFoam/src/fvModels directory, run:

$ wmake libso

C++ Classes

class mushyZoneSource : public fvModel

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.

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.

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:

mushyZoneSource1
{
    type            mushyZoneSource;

    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

L

Latent heat of fusion [J/kg]

yes

g_env

Packing fraction

no

0.7

relax

Relaxation coefficient [0-1]

no

0.9

castingVelocity

Casting velocity [m/s]

yes

tStar

Reverse liquid fraction table

yes

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

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. doi:10.1016/0017-9310(87)90317-6

  • Swaminathan, C. R., & Voller, V. R. (1992). A general enthalpy method for modeling solidification processes. Metallurgical transactions B, 23(5), 651-664. doi:10.1007/BF02649725

  • G.S. Bruno Lebon, Georges Salloum-Abou-Jaoude, Dmitry Eskin, Iakovos Tzanakis, Koulis Pericleous, Philippe Jarry (2019). Numerical modelling of acoustic streaming during the ultrasonic melt treatment of direct-chill (DC) casting. Ultrasonics Sonochemistry, 54, 171-182. doi:10.1016/j.ultsonch.2019.02.002

Source files

Public Functions

TypeName ("mushyZoneSource")

Runtime type information.

mushyZoneSource(const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh)

Construct from explicit source name and mesh.

mushyZoneSource(const mushyZoneSource&) = delete

Disallow default bitwise copy construction.

virtual wordList addSupFields() const

Return the list of fields for which the fvModel adds source term to the transport equation.

virtual void addSup(fvMatrix<scalar> &eqn, const word &fieldName) const

Add explicit contribution to enthalpy equation.

virtual void addSup(fvMatrix<vector> &eqn, const word &fieldName) const

Add implicit contribution to momentum equation.

virtual void addSup(const volScalarField &rho, fvMatrix<scalar> &eqn, const word &fieldName) const

Add explicit contribution to compressible enthalpy equation.

virtual void addSup(const volScalarField &rho, fvMatrix<vector> &eqn, const word &fieldName) const

Add implicit contribution to compressible momentum equation.

virtual void updateMesh(const mapPolyMesh&)

Update for mesh changes.

virtual bool read(const dictionary &dict)

Read source dictionary.

void operator=(const mushyZoneSource&) = delete

Disallow default bitwise assignment.

Testing

The unit tests for the fvModels libraries require the Boost libraries (>= 1.69.0). The tests are run in the tests/fvModels/case folder:

$ wmake .. # Build the test executable
$ blockMesh # Create the mesh for the test case
$ ./test_mushyZoneSource --log_level=all # Run the tests