https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ElementAndTraceScalarHDGAssemblyHelper.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 "Assembly.h"
12#include "MooseFunctor.h"
14#include "MooseVariableFE.h"
15#include "SystemBase.h"
16#include "MooseObject.h"
17#include "TaggingInterface.h"
18#include "TransientInterface.h"
19
22{
23 auto params = emptyInputParameters();
24 params.addRequiredParam<NonlinearVariableName>("face_variable", "The face variable");
25 return params;
26}
27
29 const MooseObject * const moose_obj,
31 const TransientInterface * const ti,
32 SystemBase & sys,
33 const Assembly & assembly,
34 const THREAD_ID tid,
35 const std::set<SubdomainID> & block_ids,
36 const std::set<BoundaryID> & boundary_ids)
37 : ThreeMaterialPropertyInterface(moose_obj, block_ids, boundary_ids),
38 _ti(*ti),
39 _u_var(sys.getFieldVariable<Real>(tid, moose_obj->getParam<NonlinearVariableName>("variable"))),
40 _u_face_var(sys.getFieldVariable<Real>(
41 tid, moose_obj->getParam<NonlinearVariableName>("face_variable"))),
42 _u_dof_indices(_u_var.dofIndices()),
43 _lm_u_dof_indices(_u_face_var.dofIndices()),
44 _u_sol(_u_var.adSln()),
45 _lm_u_sol(_u_face_var.adSln()),
46 _scalar_phi(_u_var.phi()),
47 _grad_scalar_phi(_u_var.gradPhi()),
48 _scalar_phi_face(_u_var.phiFace()),
49 _lm_phi_face(_u_face_var.phiFace()),
50 _elem_volume(assembly.elemVolume()),
51 _side_area(assembly.sideElemVolume()),
52 _current_elem(assembly.elem()),
53 _current_side(assembly.side()),
54 _current_side_elem(assembly.sideElem()),
55 _JxW(assembly.JxW()),
56 _qrule(assembly.qRule()),
57 _q_point(assembly.qPoints()),
58 _JxW_face(assembly.JxWFace()),
59 _qrule_face(assembly.qRuleFace()),
60 _q_point_face(assembly.qPointsFace()),
61 _normals(assembly.normals())
62{
65}
66
67std::array<ADResidualsPacket, 2>
73
74std::set<std::string>
79
80void
82{
83 for (const auto qp : make_range(_qrule_face->n_points()))
84 {
85 const auto scalar_value = dirichlet_value(
88
89 for (const auto i : index_range(_lm_re))
90 _lm_re(i) += _JxW_face[qp] * (_lm_u_sol[qp] - scalar_value) * _lm_phi_face[i][qp];
91 }
92}
93
94void
96{
97 for (const auto qp : make_range(_qrule_face->n_points()))
98 {
99 const auto flux = flux_value(
102
103 for (const auto i : index_range(_lm_re))
104 _lm_re(i) += _JxW_face[qp] * flux * _lm_phi_face[i][qp];
105 }
106}
InputParameters emptyInputParameters()
unsigned int THREAD_ID
Definition MooseTypes.h:237
Keeps track of stuff related to assembling.
Definition Assembly.h:101
const std::vector< dof_id_type > & _lm_u_dof_indices
Degree-of-freedom indices for the facet trace.
const MooseVariableFE< Real > & _u_face_var
Facet trace variable.
DenseVector< ADReal > _scalar_re
Residual for the element-interior scalar equation.
void lmDirichlet(const Moose::Functor< Real > &dirichlet_value)
Enforces a Dirichlet value in the facet equation.
const MooseVariableFE< Real > & _u_var
Element-interior scalar variable.
const MooseArray< Point > & _q_point_face
Physical face quadrature points.
DenseVector< ADReal > _lm_re
Residual for the facet trace equation.
const TransientInterface & _ti
Transient state used to evaluate boundary functors.
std::array< ADResidualsPacket, 2 > taggingData() const
const std::vector< dof_id_type > & _u_dof_indices
Degree-of-freedom indices for the element-interior scalar.
const MooseArray< ADReal > & _lm_u_sol
Facet trace values at face quadrature points.
void lmPrescribedFlux(const Moose::Functor< Real > &flux_value)
Applies a prescribed flux in the facet equation.
const MooseArray< std::vector< Real > > & _lm_phi_face
Facet trace test functions evaluated on a face.
const unsigned int & _current_side
Current element-side index.
const libMesh::QBase *const & _qrule_face
Face quadrature rule.
ElementAndTraceScalarHDGAssemblyHelper(const MooseObject *moose_obj, MooseVariableDependencyInterface *mvdi, const TransientInterface *ti, SystemBase &sys, const Assembly &assembly, THREAD_ID tid, const std::set< SubdomainID > &blocks_ids, const std::set< BoundaryID > &boundary_ids)
const MooseArray< Real > & _JxW_face
Face quadrature weights including the transformed Jacobian.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
const std::string & name() const
Get the name of the class.
Definition MooseBase.h:103
Every object that can be built by the factory should be derived from this class.
Definition MooseObject.h:31
void scalingFactor(const std::vector< Real > &factor)
Set the scaling factor for this variable.
void addMooseVariableDependency(MooseVariableFieldBase *var)
Call this function to add the passed in MooseVariableFieldBase as a variable that this object depends...
Class for stuff related to variables.
This is a wrapper that forwards calls to the implementation, which can be switched out at any time wi...
Base class for a system (of equations)
Definition SystemBase.h:87
This interface is designed currently for DomainUserObject where material properties on element,...
Interface for objects that needs transient capabilities.
Moose::StateArg determineState() const
Create a functor state argument that corresponds to the implicit state of this object.
unsigned int n_points() const
Utility structure for packaging up all of the residual object's information needed to add into the sy...
Argument for requesting functor evaluation at quadrature point locations on an element side.