20#include "libmesh/dof_map.h"
21#include "libmesh/dense_vector.h"
22#include "libmesh/numeric_vector.h"
23#include "libmesh/dense_subvector.h"
24#include "libmesh/libmesh_common.h"
25#include "libmesh/quadrature.h"
37 _lowerd_var(*getVar(
"lowerd_variable", 0)),
38 _lambda(_is_implicit ? _lowerd_var.slnLower() : _lowerd_var.slnLowerOld()),
40 _phi_lambda(_lowerd_var.phiLower()),
41 _test_lambda(_lowerd_var.phiLower())
45 if (lower_domains.count(
id) == 0)
49 "'lowerd_variable' must be defined on the interior lower-dimensional subdomain '" +
51 "' that is added by Mesh/build_all_side_lowerd_mesh=true.\nThe check could be overly "
57 "Must not be defined on the interior lower-dimensional subdomain'" +
125 "Jacobian types without lower should be handled in computeElemNeighJacobian");
127 const auto & test_space =
136 const auto & loc_phi =
153 for (
_i = 0;
_i < test_space.size();
_i++)
154 for (
_j = 0;
_j < loc_phi.size();
_j++)
168 if (jvar_num ==
variable().number())
215 "Jacobian types without lower should be handled in computeOffDiagElemNeighJacobian");
217 const auto & test_space =
241 for (
_i = 0;
_i < test_space.size();
_i++)
242 for (
_j = 0;
_j < loc_phi.size();
_j++)
247 mooseError(
"Array variable cannot be coupled into DG kernel currently");
249 mooseError(
"Vector variable cannot be coupled into DG kernel currently");
void mooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, Args &&... args)
Emit a documented error message with the given stringified, concatenated args and terminate the appli...
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
OutputTools< Real >::VariableTestValue VariableTestValue
const QBase *const & _qrule
Quadrature rule.
const MooseArray< Real > & _JxW
Jacobian det times quadrature weighting on quadrature points.
bool excludeBoundary() const
Check current element if it contains broken boundary.
const MooseArray< Real > & _coord
Coordinate transform mainly for curvilinear coordinates.
The DGKernel class is responsible for calculating the residuals for various physics on internal sides...
const VariableTestValue & _test_neighbor
Side test function.
virtual void computeElemNeighResidual(Moose::DGResidualType type) override
Computes the residual for this element or the neighbor.
static InputParameters validParams()
Factory constructor initializes all internal references needed for residual computation.
const VariablePhiValue & _phi_neighbor
Side shape function.
virtual void computeElemNeighJacobian(Moose::DGJacobianType type) override
Computes the element/neighbor-element/neighbor Jacobian.
const VariableTestValue & _test
test functions
virtual void computeOffDiagElemNeighJacobian(Moose::DGJacobianType type, const MooseVariableFEBase &jvar) override
Computes the element-element off-diagonal Jacobian.
MooseVariable & _var
Variable this kernel operates on.
const VariablePhiValue & _phi
Shape functions.
const MooseVariable & _lowerd_var
Variable this kernel operates on.
virtual void computeOffDiagJacobian(unsigned int jvar) override
Computes d-residual / d-jvar...
const MooseVariableFEBase & variable() const override final
The variable that this kernel operates on.
virtual Real computeLowerDQpJacobian(Moose::ConstraintJacobianType jacobian_type)=0
Computes one of the five pieces of Jacobian involving lower-d at quadrature points.
virtual void computeLowerDResidual()
Computes the Lower part of residual for the variable on the lower-d element.
virtual void computeOffDiagLowerDJacobian(Moose::ConstraintJacobianType type, const MooseVariableFEBase &jvar)
Computes one of the five pieces of off-diagonal Jacobian involving lower-d.
virtual void initLowerDQpResidual()
Put necessary evaluations depending on qp but independent on test functions here.
virtual void computeJacobian() override
Computes the nine pieces of element/neighbor/lower-d - element/neighbor/lower-d Jacobian.
virtual Real computeLowerDQpOffDiagJacobian(Moose::ConstraintJacobianType, const MooseVariableFEBase &)
Computes one of the five pieces of off-diagonal Jacobian involving lower-d at quadrature points.
virtual void initLowerDQpJacobian(Moose::ConstraintJacobianType)
Put necessary evaluations depending on qp but independent on test and shape functions here.
DGLowerDKernel(const InputParameters ¶meters)
virtual Real computeLowerDQpResidual()=0
Method for computing the Lower part of residual at quadrature points, to be filled in residual.
static InputParameters validParams()
Factory constructor initializes all internal references needed for residual computation.
virtual void computeLowerDJacobian(Moose::ConstraintJacobianType jacobian_type)
Computes one of the five pieces of Jacobian involving lower-d.
virtual void computeResidual() override
Computes the residual for this element, the neighbor and the lower-d element.
virtual void initLowerDQpOffDiagJacobian(Moose::ConstraintJacobianType, const MooseVariableFEBase &)
Put necessary evaluations depending on qp but independent on test and shape functions here for off-di...
const VariablePhiValue & _phi_lambda
Shape functions.
const VariableTestValue & _test_lambda
test functions
const std::string & type() const
Get the type of this class.
void paramError(const std::string ¶m, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
const std::set< SubdomainID > & interiorLowerDBlocks() const
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
unsigned int number() const
Get variable number coming from libMesh.
virtual const FieldVariablePhiValue & phiLower() const override
Return the variable's shape functions on a lower-dimensional element.
This class provides an interface for common operations on field variables of both FE and FV types wit...
virtual Moose::VarFieldType fieldType() const =0
Field type of this variable.
const std::set< SubdomainID > & activeSubdomains() const
The subdomains the variable is active on.
virtual void precalculateJacobian()
MooseMesh & _mesh
Reference to this Kernel's mesh object.
Assembly & _assembly
Reference to this Kernel's assembly object.
const MooseVariableFieldBase & getVariable(unsigned int jvar_num) const
Retrieve the variable object from our system associated with jvar_num.
virtual void precalculateOffDiagJacobian(unsigned int)
virtual void precalculateResidual()
DenseMatrix< Number > _local_ke
Holds local Jacobian entries as they are accumulated by this Kernel.
void accumulateTaggedLocalMatrix()
Local Jacobian blocks will be appended by adding the current local kernel Jacobian.
void prepareVectorTagLower(Assembly &assembly, unsigned int ivar)
Prepare data for computing the residual according to active tags for mortar constraints.
void accumulateTaggedLocalResidual()
Local residual blocks will be appended by adding the current local kernel residual.
void prepareMatrixTagLower(Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::ConstraintJacobianType type)
Prepare data for computing the jacobian according to the active tags for mortar.
DenseVector< Number > _local_re
Holds local residual entries as they are accumulated by this Kernel.