14 MDFluidMomentumKernel,
22 params.
addClassDescription(
"Adds advection, viscous, pressure, friction, and gravity terms to " 23 "the Navier-Stokes momentum equation, potentially with stabilization");
24 params.
addParam<
bool>(
"conservative_form",
false,
"Whether conservative form is used");
26 "p_int_by_parts",
false,
"Whether integration by parts is applied to the pressure term");
27 params.
addRequiredParam<
unsigned>(
"component",
"0,1,or 2 for x-, y-, or z- direction");
33 _grad_eps(coupledGradient(
"porosity")),
34 _conservative_form(getParam<bool>(
"conservative_form")),
35 _p_int_by_parts(getParam<bool>(
"p_int_by_parts")),
36 _component(getParam<unsigned>(
"component"))
56 Real viscous_part = 0;
58 Real friction_part = 0;
70 Real pm_inertial_part =
72 Real pm_viscous_part =
74 friction = pm_inertial_part + pm_viscous_part;
79 Real normal_part = convection_part + pressure_part + gravity_part + viscous_part + friction_part;
88 Real viscous_supg = 0;
89 Real friction_supg = friction;
94 Real supg_part = psi_supg * (transient_supg + convection_supg + pressure_supg + viscous_supg +
95 friction_supg + gravity_supg);
98 Real res = normal_part + supg_part;
119 Real convection_part = 0;
124 convection_part = convection_supg *
_test[
_i][
_qp];
126 Real viscous_part = 0;
127 Real friction_part = 0;
128 Real friction_supg = 0;
137 Real pm_inertial_part = 0;
143 friction_part = (pm_inertial_part + pm_viscous_part) *
_test[
_i][
_qp];
144 friction_supg = (pm_inertial_part + pm_viscous_part) * psi_supg;
148 Real normal_part = convection_part + viscous_part + friction_part;
149 Real supg_part = psi_supg * (transient_supg + convection_supg) + friction_supg;
151 return normal_part + supg_part;
registerMooseObject("NavierStokesApp", INSFEFluidMomentumKernel)
const VariableSecond & _second_u
const VariableGradient & _grad_u
static InputParameters validParams()
const VariableValue & _w_vel
RealVectorValue _vel_elem
const VariablePhiGradient & _grad_phi
virtual Real computeQpResidual() override
RealVectorValue velocityDot() const
static const std::string porosity
const VariableTestValue & _test
const VariableGradient & _grad_pressure
const MaterialProperty< Real > & _dynamic_viscosity
const VariableValue & _pressure
const MaterialProperty< RealTensorValue > & _inertia_resistance_coeff
FEProblemBase & _fe_problem
const VariableValue & _porosity
const MaterialProperty< Real > & _turbulence_viscosity
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
const unsigned _component
The component (x=0, y=1, z=2) of the momentum equation this kernel is applied.
const bool _conservative_form
Whether conservative form to be used for the convection term.
Base class for stabilization kernels.
const VariableValue & _u_vel
const VariableGradient & _grad_eps
Gradient of porosity.
virtual Real computeQpJacobian() override
The spatial part of the 3D momentum conservation for fluid flow.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const VariableTestGradient & _grad_test
const MaterialProperty< RealTensorValue > & _viscous_resistance_coeff
registerMooseObjectRenamed("NavierStokesApp", MDFluidMomentumKernel, "02/01/2024 00:00", INSFEFluidMomentumKernel)
static InputParameters validParams()
const MaterialProperty< Real > & _rho
Moose::CoordinateSystemType getCoordSystem(SubdomainID sid) const
const bool _p_int_by_parts
Whether integration by parts to be used for the pressure gradient term.
const Elem *const & _current_elem
unsigned int mapVarNumber(unsigned int var) const
Helper function for mapping Moose variable numberings into the "canonical" numbering for the porous m...
const VariableValue & _du_dot_du
INSFEFluidMomentumKernel(const InputParameters ¶meters)
const VariableValue & _v_vel
const VariablePhiValue & _phi
const MaterialProperty< RealTensorValue > & _viscous_stress_tensor
const MaterialProperty< Real > & _taum
const MooseArray< Point > & _q_point