19 params.addClassDescription(
"Computes the energy source due to solidification/melting.");
20 params.addRequiredParam<MooseFunctorName>(
"liquid_fraction",
"Liquid Fraction Functor.");
21 params.addRequiredParam<MooseFunctorName>(
"L",
"Latent heat.");
22 params.addRequiredParam<MooseFunctorName>(
NS::density,
"The mixture density.");
23 params.addRequiredParam<MooseFunctorName>(
"T_solidus",
"The solidus temperature.");
24 params.addRequiredParam<MooseFunctorName>(
"T_liquidus",
"The liquidus temperature.");
30 _liquid_fraction(getFunctor<
ADReal>(
"liquid_fraction")),
31 _L(getFunctor<
ADReal>(
"L")),
33 _T_solidus(getFunctor<
ADReal>(
"T_solidus")),
34 _T_liquidus(getFunctor<
ADReal>(
"T_liquidus"))
46 const auto T_sol =
_T_solidus(elem_arg, state);
48 const auto T =
_var(elem_arg, state);
52 const auto fl = (T - T_sol) / (T_liq - T_sol);
55 const auto source_index = std::max(6.0 * fl * (1 - fl), (
ADReal)0);
56 const auto pre_factor = (
_L(elem_arg, state) *
_rho(elem_arg, state)) / (T_liq - T_sol);
58 return source_index * pre_factor *
_var.
dot(elem_arg, state);
Moose::StateArg determineState() const
const Moose::Functor< ADReal > & _rho
Density.
static const std::string density
registerMooseObject("NavierStokesApp", NSFVPhaseChangeSource)
DualNumber< Real, DNDerivativeType, true > ADReal
Moose::ElemArg makeElemArg(const Elem *elem, bool correct_skewnewss=false) const
const Elem *const & _current_elem
NSFVPhaseChangeSource(const InputParameters ¶ms)
static InputParameters validParams()
const Moose::Functor< ADReal > & _T_solidus
Solidus Temperature.
ADReal computeQpResidual() override
DotType dot(const ElemArg &elem, const StateArg &state) const
const Moose::Functor< ADReal > & _L
Latent heat.
static InputParameters validParams()
const Moose::Functor< ADReal > & _T_liquidus
Liquidus Temperature.
Heat source coming from the melting/solidification of materials.
MooseVariableFV< Real > & _var