Skip to content

Grand Potential Phase Density Parabolic

GrandPotentialPhaseDensity_Parabolic is the simplest GrandPotentialPhaseDensity implementation: the per-phase grand-potential density is a quadratic function of the component chemical potentials. It is the natural choice when calibrating against linearised thermodynamic data from a CALPHAD-style fit and for method-development studies. It sits alongside the ideal-gas, compressible-fluid, and implicit-parabolic variants used by the Grand Potential Solver.

Model

The parabolic grand-potential density reads

(1)ωα=i12ϵiαμi2+c0iαμi,

where ϵiα is the parabolic energy coefficient (units J·m³/mol²) and c0iα is the equilibrium concentration (units mol/m³) of component i in phase α.

The phase concentration is the negative first derivative of the density with respect to the chemical potential:

(2)cαiωαμi=ϵiαμi.

The susceptibility is the negative second derivative:

(3)χαi2ωαμi2=ϵiα.

Usage

Input

Defined inside the @GrandPotentialDensity block. One ϵ and one c0 per (phase, component-name) pair, with <alpha> the phase index (zero-based) and <ComponentName> the component string declared in @Settings.

text
@GrandPotentialDensity

$EPS_0_FE   Parabolic energy coefficient (phase 0, Fe)  : 0.10
$EPS_1_FE   Parabolic energy coefficient (phase 1, Fe)  : 0.08
$C0_0_FE    Equilibrium density (phase 0, Fe)           : 1
$C0_1_FE    Equilibrium density (phase 1, Fe)           : 140984

Output

No dedicated output file. The parabolic phase-density state is read by the Grand Potential Solver; the resulting chemical-potential evolution and derived composition are written through the solver's VTK output.

Example

cpp
#include "GrandPotential/GrandPotentialSolver.h"
// GrandPotentialPhaseDensity_Parabolic is selected at the solver's
// construction time based on the @GrandPotentialDensity block.

GrandPotentialSolver GPS(OPSettings, InputFile);

for(RTC.tStep = RTC.tStart; RTC.tStep <= RTC.nSteps; RTC.IncrementTimeStep())
{
    GPS.Solve(Phi, Cx, Tx, BC, RTC.dt);

    if (RTC.WriteVTK())
    {
        GPS.WriteVTK(OPSettings, RTC.tStep);
    }
}

Dependencies

Released under the GNU GPLv3 License.