https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
21using 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
58void
71
72void
82
83void
85{
87
88 for (const auto i : index_range(_scalar_re))
89 for (const auto qp : make_range(_qrule_face->n_points()))
91 _scalar_phi_face[i][qp];
92}
93
94void
96{
98
99 for (const auto i : index_range(_lm_re))
100 for (const auto qp : make_range(_qrule_face->n_points()))
101 _lm_re(i) -=
103}
unsigned int THREAD_ID
void ErrorVector unsigned int
virtual void scalarDirichlet(const Moose::Functor< Real > &dirichlet_value) override
virtual void scalarVolume() override
virtual void scalarFace() override
virtual void lmFace() override
static InputParameters validParams()
const MooseArray< Real > & _JxW
DenseVector< ADReal > _scalar_re
DenseVector< ADReal > _lm_re
const libMesh::QBase *const & _qrule
const MooseArray< Point > & _normals
const MooseArray< Point > & _q_point
const MooseArray< std::vector< Real > > & _lm_phi_face
const MooseArray< std::vector< Real > > & _scalar_phi
const MooseArray< std::vector< RealVectorValue > > & _grad_scalar_phi
const MooseArray< std::vector< Real > > & _scalar_phi_face
const libMesh::QBase *const & _qrule_face
const MooseArray< Real > & _JxW_face
virtual void scalarVolume() override
Computes a local residual vector for the weak form: (Dq, grad(w)) - (f, w) where D is the diffusivity...
virtual void scalarFace() override
Computes a local residual vector for the weak form: -<Dq*n, w> + <\tau * (u - \hat{u}) * n * n,...
const ADVariableValue & _pressure_face_sol
The pressure solution on element faces.
const ADVariableValue & _pressure_sol
The pressure solution on element interiors.
const Moose::CoordinateSystemType & _coord_sys
The coordinate system.
const unsigned int _rz_radial_coord
The radial coordinate index for RZ coordinate systems.
virtual void scalarDirichlet(const Moose::Functor< Real > &dirichlet_value) override
unsigned int _component
The velocity component this object is adding a residual for.
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)
unsigned int n_points() const
MeshBase & mesh
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...
auto index_range(const T &sizable)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IntRange< T > make_range(T beg, T end)