22 params.addParam<MooseFunctorName>(
23 "body_force_x", 0,
"Body force for the momentum equation in the x-direction");
24 params.addParam<MooseFunctorName>(
25 "body_force_y", 0,
"Body force for the momentum equation in the y-direction");
26 params.addParam<MooseFunctorName>(
27 "body_force_z", 0,
"Body force for the momentum equation in the z-direction");
28 params.addParam<MooseFunctorName>(
29 "pressure_mms_forcing_function",
31 "A forcing function for the pressure (mass) equation for conducting MMS studies");
32 params.addClassDescription(
"Implements the steady incompressible Navier-Stokes equations for a " 33 "hybridized discretization");
34 params.renameParam(
"variable",
"u",
"The x-component of velocity");
42 _body_force_x(getFunctor<
Real>(
"body_force_x")),
43 _body_force_y(getFunctor<
Real>(
"body_force_y")),
44 _body_force_z(getFunctor<
Real>(
"body_force_z")),
45 _pressure_mms_forcing_function(getFunctor<
Real>(
"pressure_mms_forcing_function")),
46 _qrule_face(_assembly.qRuleFace()),
47 _q_point_face(_assembly.qPointsFace()),
48 _JxW_face(_assembly.JxWFace()),
49 _normals(_assembly.normals()),
50 _current_side(_assembly.side())
53 mooseError(
"This class only supports 2D simulations at this time");
341 std::set<std::string>
void pressureVolumeJacobian(const MooseArray< Real > &JxW, const libMesh::QBase &qrule, DenseMatrix< Number > &p_u_vel_jac, DenseMatrix< Number > &p_v_vel_jac, DenseMatrix< Number > &p_global_lm_jac, DenseMatrix< Number > &global_lm_p_jac)
Compute the volumetric contributions to the pressure Jacobian, e.g.
DenseMatrix< Number > _lm_v_lm_u_jac
const MooseArray< Number > & _v_sol
const std::vector< dof_id_type > & _lm_u_dof_indices
const MooseArray< Number > & _u_sol
const std::vector< dof_id_type > *const _global_lm_dof_indices
DenseMatrix< Number > _u_u_jac
virtual void computeJacobian() override
Compute this object's entire element interior Jacobian, both on- and off-diagonal.
DenseMatrix< Number > _p_u_jac
static InputParameters validParams()
void lmFaceJacobian(const unsigned int vel_component, const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, const Elem *const neigh, DenseMatrix< Number > &lm_vec_jac, DenseMatrix< Number > &lm_scalar_jac, DenseMatrix< Number > &lm_lm_jac, DenseMatrix< Number > &lm_p_jac, DenseMatrix< Number > &lm_lm_u_vel_jac, DenseMatrix< Number > &lm_lm_v_vel_jac)
const MooseVariableFE< Real > & _v_var
const unsigned int & _current_side
The current side when doing face evaluations.
void vectorVolumeJacobian(const MooseArray< Real > &JxW, const libMesh::QBase &qrule, DenseMatrix< Number > &vector_vector_jac, DenseMatrix< Number > &vector_scalar_jac)
const Moose::Functor< Real > & _body_force_x
const std::vector< dof_id_type > & _u_dof_indices
DenseMatrix< Number > _grad_v_lm_v_jac
DenseVector< Number > _global_lm_re
void vectorFaceResidual(const MooseArray< Number > &lm_sol, const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, DenseVector< Number > &vector_re)
virtual void computeOffDiagJacobian(unsigned int jvar) override
Forwards to computeJacobian() the first time this is called for a given element.
DenseMatrix< Number > _lm_v_grad_v_jac
const MooseArray< Real > & _JxW
const Elem * _cached_elem
DenseMatrix< Number > _lm_u_p_jac
DenseMatrix< Number > _grad_v_v_jac
DenseMatrix< Number > _lm_u_lm_v_jac
void pressureVolumeResidual(const Moose::Functor< Real > &pressure_mms_forcing_function, const MooseArray< Real > &JxW, const libMesh::QBase &qrule, const Elem *const current_elem, const MooseArray< Point > &q_point, DenseVector< Number > &pressure_re, DenseVector< Number > &global_lm_re)
Compute the volumetric contributions to the pressure residual, e.g.
const Moose::Functor< Real > & _pressure_mms_forcing_function
void resize(const unsigned int n)
DenseMatrix< Number > _lm_v_p_jac
void addResiduals(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
const MooseVariableFE< Real > & _v_face_var
const std::string & name() const override
const MooseArray< libMesh::Gradient > & _qu_sol
void pressureFaceJacobian(const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, DenseMatrix< Number > &p_lm_u_vel_jac, DenseMatrix< Number > &p_lm_v_vel_jac)
DenseMatrix< Number > _v_lm_u_jac
void scalarFaceResidual(const MooseArray< Gradient > &vector_sol, const MooseArray< Number > &scalar_sol, const MooseArray< Number > &lm_sol, const unsigned int vel_component, const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, DenseVector< Number > &scalar_re)
DenseMatrix< Number > _u_v_jac
const std::vector< dof_id_type > & _qv_dof_indices
Containers for dof indices.
void scalarVolumeJacobian(const unsigned int vel_component, const MooseArray< Real > &JxW, const libMesh::QBase &qrule, DenseMatrix< Number > &scalar_vector_jac, DenseMatrix< Number > &scalar_u_vel_jac, DenseMatrix< Number > &scalar_v_vel_jac, DenseMatrix< Number > &scalar_p_jac)
Compute the volumetric contributions to a velocity Jacobian.
DenseMatrix< Number > _lm_v_v_jac
DenseMatrix< Number > _lm_u_u_jac
DenseVector< Number > _grad_u_vel_re
DenseVector< Number > _lm_v_vel_re
DenseMatrix< Number > _p_lm_u_jac
const std::vector< dof_id_type > & _qu_dof_indices
virtual void computeResidualOnSide() override
void addJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
DenseMatrix< Number > _p_global_lm_jac
DenseMatrix< Number > _v_p_jac
void scalarFaceJacobian(const unsigned int vel_component, const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, DenseMatrix< Number > &scalar_vector_jac, DenseMatrix< Number > &scalar_scalar_jac, DenseMatrix< Number > &scalar_lm_jac, DenseMatrix< Number > &scalar_p_jac, DenseMatrix< Number > &scalar_lm_u_vel_jac, DenseMatrix< Number > &scalar_lm_v_vel_jac)
std::vector< const Moose::Functor< Real > * > _body_forces
const MooseArray< Real > & _JxW_face
transformed Jacobian weights on the current element face
DenseMatrix< Number > _p_lm_v_jac
virtual unsigned int dimension() const
void vectorVolumeResidual(const MooseArray< Gradient > &vector_sol, const MooseArray< Number > &scalar_sol, const MooseArray< Real > &JxW, const libMesh::QBase &qrule, DenseVector< Number > &vector_re)
DenseMatrix< Number > _lm_u_lm_u_jac
DenseMatrix< Number > _lm_u_grad_u_jac
const MooseArray< Point > & _normals
face normals
const QBase *const & _qrule
DenseMatrix< Number > _v_lm_v_jac
const MooseVariableFE< RealVectorValue > & _grad_v_var
const std::vector< dof_id_type > & _lm_v_dof_indices
DenseMatrix< Number > _p_v_jac
const std::vector< dof_id_type > & _v_dof_indices
DenseMatrix< Number > _v_grad_v_jac
virtual void initialSetup() override
Implements the steady incompressible Navier-Stokes equations for a hybridized discretization.
void vectorFaceJacobian(const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, DenseMatrix< Number > &vector_lm_jac)
DenseVector< Number > _p_re
const MooseVariableFE< Real > & _pressure_var
DenseMatrix< Number > _grad_u_u_jac
const MooseVariableFE< Real > & _u_face_var
DenseVector< Number > _grad_v_vel_re
DenseVector< Number > _v_vel_re
const std::vector< dof_id_type > & _p_dof_indices
DenseMatrix< Number > _global_lm_p_jac
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
DenseMatrix< Number > _u_p_jac
static InputParameters validParams()
DenseMatrix< Number > _v_u_jac
void pressureFaceResidual(const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, DenseVector< Number > &pressure_re)
DenseMatrix< Number > _v_v_jac
DenseMatrix< Number > _grad_u_lm_u_jac
const MooseVariableFE< Real > & _u_var
NavierStokesLHDGKernel(const InputParameters ¶meters)
const MooseArray< Number > & _lm_u_sol
void resize(const unsigned int new_m, const unsigned int new_n)
DenseMatrix< Number > _grad_v_grad_v_jac
DenseMatrix< Number > _grad_u_grad_u_jac
void mooseError(Args &&... args) const
const Moose::Functor< Real > & _body_force_z
virtual void jacobianSetup() override
const MooseArray< Number > & _lm_v_sol
const MooseArray< Gradient > & _qv_sol
local solutions at quadrature points
DenseVector< Number > _lm_u_vel_re
DenseMatrix< Number > _lm_v_lm_v_jac
const Elem *const & _current_elem
const QBase *const & _qrule_face
The face quadrature rule.
const MooseVariableFE< RealVectorValue > & _grad_u_var
static InputParameters validParams()
void lmFaceResidual(const MooseArray< Gradient > &vector_sol, const MooseArray< Number > &scalar_sol, const MooseArray< Number > &lm_sol, const unsigned int vel_component, const MooseArray< Real > &JxW_face, const libMesh::QBase &qrule_face, const MooseArray< Point > &normals, const Elem *const neigh, DenseVector< Number > &lm_re)
DenseMatrix< Number > _u_grad_u_jac
virtual std::set< std::string > additionalROVariables() override
DenseMatrix< Number > _u_lm_v_jac
Implements all the methods for assembling a hybridized local discontinuous Galerkin (LDG-H)...
DenseMatrix< Number > _u_lm_u_jac
DenseVector< Number > _u_vel_re
void scalarVolumeResidual(const MooseArray< Gradient > &vel_gradient, const unsigned int vel_component, const Moose::Functor< Real > &body_force, const MooseArray< Real > &JxW, const libMesh::QBase &qrule, const Elem *const current_elem, const MooseArray< Point > &q_point, DenseVector< Number > &scalar_re)
Compute the volumetric contributions to a velocity residual for a provided velocity gradient and stre...
const MooseArray< Point > & _q_point
registerMooseObject("NavierStokesApp", NavierStokesLHDGKernel)
void scalingFactor(const std::vector< Real > &factor)
virtual void computeJacobianOnSide() override
const MooseVariableScalar *const _enclosure_lm_var
virtual void computeResidual() override
const Moose::Functor< Real > & _body_force_y