https://mooseframework.inl.gov
NavierStokesStressIPHDGAssemblyHelper.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "MooseTypes.h"
13 #include "MooseVariableScalar.h"
14 #include "SystemBase.h"
15 #include "MooseMesh.h"
16 #include "MooseObject.h"
18 #include "Assembly.h"
19 #include "MooseMesh.h"
20 
21 using namespace libMesh;
22 
25 {
27  params.addRequiredParam<NonlinearVariableName>(
28  "pressure_variable", "The pressure variable that lives on element interiors.");
29  params.addRequiredParam<NonlinearVariableName>(
30  "pressure_face_variable", "The pressure variable that lives on element faces.");
31  params.addRequiredParam<unsigned int>("component", "number of component (0 = x, 1 = y, 2 = z)");
32  return params;
33 }
34 
36  const MooseObject * const moose_obj,
38  const TransientInterface * const ti,
39  const MooseMesh & mesh,
40  SystemBase & sys,
41  const Assembly & assembly,
42  const THREAD_ID tid,
43  const std::set<SubdomainID> & block_ids,
44  const std::set<BoundaryID> & boundary_ids)
45  : DiffusionIPHDGAssemblyHelper(moose_obj, mvdi, ti, sys, assembly, tid, block_ids, boundary_ids),
46  _pressure_var(sys.getFieldVariable<Real>(
47  tid, moose_obj->getParam<NonlinearVariableName>("pressure_variable"))),
48  _pressure_face_var(sys.getFieldVariable<Real>(
49  tid, moose_obj->getParam<NonlinearVariableName>("pressure_face_variable"))),
50  _pressure_sol(_pressure_var.adSln()),
51  _pressure_face_sol(_pressure_face_var.adSln()),
52  _coord_sys(assembly.coordSystem()),
53  _rz_radial_coord(mesh.getAxisymmetricRadialCoord()),
54  _component(moose_obj->getParam<unsigned int>("component"))
55 {
56 }
57 
58 void
60 {
62 
63  for (const auto qp : make_range(_ip_qrule->n_points()))
64  for (const auto i : index_range(_scalar_re))
65  {
66  _scalar_re(i) -= _ip_JxW[qp] * (_grad_scalar_phi[i][qp](_component) * _pressure_sol[qp]);
69  }
70 }
71 
72 void
74 {
76 
77  for (const auto i : index_range(_scalar_re))
78  for (const auto qp : make_range(_ip_qrule_face->n_points()))
80  _scalar_phi_face[i][qp];
81 }
82 
83 void
85 {
87 
88  for (const auto i : index_range(_scalar_re))
89  for (const auto qp : make_range(_ip_qrule_face->n_points()))
91  _scalar_phi_face[i][qp];
92 }
NavierStokesStressIPHDGAssemblyHelper(const MooseObject *const moose_obj, MooseVariableDependencyInterface *const mvdi, const TransientInterface *const ti, const MooseMesh &mesh, SystemBase &sys, const Assembly &assembly, const THREAD_ID tid, const std::set< SubdomainID > &block_ids, const std::set< BoundaryID > &boundary_ids)
DenseVector< ADReal > _scalar_re
virtual void scalarVolume() override
const MooseArray< std::vector< RealVectorValue > > & _grad_scalar_phi
virtual void scalarDirichlet(const Moose::Functor< Real > &dirichlet_value) override
MeshBase & mesh
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...
const QBase *const & _ip_qrule_face
const MooseArray< Real > & _ip_JxW
virtual void scalarVolume() override
Computes a local residual vector for the weak form: (Dq, grad(w)) - (f, w) where D is the diffusivity...
const MooseArray< Point > & _ip_normals
const QBase *const & _ip_qrule
unsigned int n_points() const
const ADVariableValue & _pressure_face_sol
The pressure solution on element faces.
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const unsigned int _rz_radial_coord
The radial coordinate index for RZ coordinate systems.
const Moose::CoordinateSystemType & _coord_sys
The coordinate system.
const MooseArray< Real > & _ip_JxW_face
const MooseArray< std::vector< Real > > & _scalar_phi_face
IntRange< T > make_range(T beg, T end)
const MooseArray< Point > & _ip_q_point
virtual void scalarFace() override
virtual void scalarDirichlet(const Moose::Functor< Real > &dirichlet_value) override
virtual void scalarFace() override
Computes a local residual vector for the weak form: -<Dq*n, w> + < * (u - {u}) * n * n...
void ErrorVector unsigned int
auto index_range(const T &sizable)
unsigned int THREAD_ID
const MooseArray< std::vector< Real > > & _scalar_phi
unsigned int _component
The velocity component this object is adding a residual for.
const ADVariableValue & _pressure_sol
The pressure solution on element interiors.