22 "Adds the time derivative term to the Navier-Stokes energy equation: "
23 "for fluids: d(eps * rho * cp * T)/dt, for solids: (1 - eps) * d(rho * cp * T)/dt"
24 "Material property derivatives are ignored if not provided.");
27 params.
addParam<MooseFunctorName>(
NS::cp,
"Specific heat capacity");
30 "Time derivative of the specific enthalpy");
33 params.
addRequiredParam<
bool>(
"is_solid",
"Whether this kernel acts on the solid temperature");
37 "scaling factor to reduce the thermal mass during pseudo "
38 "transients; this can accelerate convergence to steady state");
44 _rho(getFunctor<
ADReal>(
NS::density)),
45 _rho_dot(isParamValid(
NS::time_deriv(
NS::density))
46 ? &getFunctor<
ADReal>(
NS::time_deriv(
NS::density))
48 _cp(isParamValid(
NS::cp) ? &getFunctor<
ADReal>(
NS::cp) : nullptr),
49 _h(isParamValid(
NS::specific_enthalpy) ? &getFunctor<
ADReal>(
NS::specific_enthalpy) : nullptr),
50 _h_dot(isParamValid(
NS::time_deriv(
NS::specific_enthalpy))
51 ? &getFunctor<
ADReal>(
NS::time_deriv(
NS::specific_enthalpy))
53 _eps(getFunctor<
ADReal>(
NS::porosity)),
54 _is_solid(getParam<bool>(
"is_solid")),
55 _scaling(getParam<Real>(
"scaling")),
56 _zero_scaling(_scaling < 1e-8)
60 "If specifying the specific enthalpy time derivative, no need to specify the "
65 "One of either the specific heat or the time derivative of the enthalpy must be specified");
68 "If specifying the time derivative of the density, either the specific heat or the "
69 "specific enthalpy must be specified");
84 time_derivative =
_rho(elem_arg, state) * (*_h_dot)(elem_arg, state);
86 time_derivative += (*_rho_dot)(elem_arg, state) * (*
_h)(elem_arg, state);
90 time_derivative =
_rho(elem_arg, state) * (*_cp)(elem_arg, state) *
_var.
dot(elem_arg, state);
93 (*_rho_dot)(elem_arg, state) * (*
_cp)(elem_arg, state) *
_var(elem_arg, state);
DualNumber< Real, DNDerivativeType, true > ADReal
registerMooseObject("NavierStokesApp", PINSFVEnergyTimeDerivative)
MooseVariableFV< Real > & _var
const Elem *const & _current_elem
static InputParameters validParams()
Moose::ElemArg makeElemArg(const Elem *elem, bool correct_skewnewss=false) const
void paramError(const std::string ¶m, Args... args) const
DotType dot(const ElemArg &elem, const StateArg &state) const
const Moose::Functor< ADReal > *const _rho_dot
the time derivative of the density
const bool _zero_scaling
whether a zero scaling factor has been specifed
static InputParameters validParams()
const Moose::Functor< ADReal > & _rho
the density
ADReal computeQpResidual() override
PINSFVEnergyTimeDerivative(const InputParameters ¶ms)
const Real _scaling
scales the value of the kernel, used for faster steady state during pseudo transient
const Moose::Functor< ADReal > *const _cp
the specific heat or isobaric heat capacity
const Moose::Functor< ADReal > & _eps
the porosity
const Moose::Functor< ADReal > *const _h
the specific enthalpy
const Moose::Functor< ADReal > *const _h_dot
the time derivative of the specific enthalpy
const bool _is_solid
whether this kernel is being used for a solid or a fluid temperature
Moose::StateArg determineState() const
static const std::string density
static const std::string cp
static const std::string specific_enthalpy
static const std::string porosity
std::string time_deriv(const std::string &var)