www.mooseframework.org
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
TaggingInterface Class Reference

#include <TaggingInterface.h>

Inheritance diagram for TaggingInterface:
[legend]

Classes

class  MatrixTagsKey
 Class that is used as a parameter to some of our matrix tag APIs that allows only blessed framework classes to call them. More...
 
class  VectorTagsKey
 Class that is used as a parameter to some of our vector tag APIs that allows only blessed framework classes to call them. More...
 

Public Types

enum  ResidualTagType { ResidualTagType::NonReference, ResidualTagType::Reference }
 Enumerate whether a (residual) vector tag is to be of a non-reference or reference tag type. More...
 

Public Member Functions

 TaggingInterface (const MooseObject *moose_object)
 
virtual ~TaggingInterface ()
 
void useVectorTag (const TagName &tag_name, VectorTagsKey)
 
void useMatrixTag (const TagName &tag_name, MatrixTagsKey)
 
void useVectorTag (TagID tag_id, VectorTagsKey)
 
void useMatrixTag (TagID tag_id, MatrixTagsKey)
 
bool isVectorTagged ()
 
bool isMatrixTagged ()
 
bool hasVectorTags () const
 
const std::set< TagID > & getVectorTags (VectorTagsKey) const
 
const std::set< TagID > & getMatrixTags (MatrixTagsKey) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

void prepareVectorTag (Assembly &assembly, unsigned int ivar)
 Prepare data for computing element residual according to active tags. More...
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 Prepare vector tags in a reference residual problem context. More...
 
void prepareVectorTagNeighbor (Assembly &assembly, unsigned int ivar)
 Prepare data for computing element residual the according to active tags for DG and interface kernels. More...
 
void prepareVectorTagLower (Assembly &assembly, unsigned int ivar)
 Prepare data for computing the residual according to active tags for mortar constraints. More...
 
void prepareMatrixTag (Assembly &assembly, unsigned int ivar, unsigned int jvar)
 Prepare data for computing element jacobian according to the active tags. More...
 
void prepareMatrixTag (Assembly &assembly, unsigned int ivar, unsigned int jvar, DenseMatrix< Number > &k) const
 
void prepareMatrixTagNonlocal (Assembly &assembly, unsigned int ivar, unsigned int jvar)
 Prepare data for computing nonlocal element jacobian according to the active tags. More...
 
void prepareMatrixTagNeighbor (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type)
 Prepare data for computing element jacobian according to the active tags for DG and interface kernels. More...
 
void prepareMatrixTagNeighbor (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type, DenseMatrix< Number > &k) const
 
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. More...
 
void accumulateTaggedLocalResidual ()
 Local residual blocks will be appended by adding the current local kernel residual. More...
 
void assignTaggedLocalResidual ()
 Local residual blocks will assigned as the current local kernel residual. More...
 
void accumulateTaggedLocalMatrix ()
 Local Jacobian blocks will be appended by adding the current local kernel Jacobian. More...
 
void accumulateTaggedLocalMatrix (Assembly &assembly, unsigned int ivar, unsigned int jvar, const DenseMatrix< Number > &k)
 
void accumulateTaggedLocalMatrix (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type, const DenseMatrix< Number > &k)
 
void accumulateTaggedNonlocalMatrix ()
 Nonlocal Jacobian blocks will be appended by adding the current nonlocal kernel Jacobian. More...
 
void assignTaggedLocalMatrix ()
 Local Jacobian blocks will assigned as the current local kernel Jacobian. More...
 
template<typename Residuals , typename Indices >
void addResiduals (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 Add the provided incoming residuals corresponding to the provided dof indices. More...
 
template<typename T , typename Indices >
void addResiduals (Assembly &assembly, const DenseVector< T > &residuals, const Indices &dof_indices, Real scaling_factor)
 Add the provided incoming residuals corresponding to the provided dof indices. More...
 
template<typename Residuals , typename Indices >
void addResidualsAndJacobian (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 Add the provided incoming residuals and derivatives for the Jacobian, corresponding to the provided dof indices. More...
 
template<typename Residuals , typename Indices >
void addJacobian (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 Add the provided residual derivatives into the Jacobian for the provided dof indices. More...
 
template<typename Residuals , typename Indices >
void addResidualsWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 Add the provided incoming residuals corresponding to the provided dof indices. More...
 
template<typename Residuals , typename Indices >
void addResidualsAndJacobianWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 Add the provided incoming residuals and derivatives for the Jacobian, corresponding to the provided dof indices. More...
 
template<typename Residuals , typename Indices >
void addJacobianWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 Add the provided residual derivatives into the Jacobian for the provided dof indices. More...
 
void addJacobianElement (Assembly &assembly, Real value, dof_id_type row_index, dof_id_type column_index, Real scaling_factor)
 Add into a single Jacobian element. More...
 
void addJacobian (Assembly &assembly, DenseMatrix< Real > &local_k, const std::vector< dof_id_type > &row_indices, const std::vector< dof_id_type > &column_indices, Real scaling_factor)
 Add a local Jacobian matrix. More...
 
template<typename T >
void setResidual (SystemBase &sys, const T &residual, MooseVariableFE< T > &var)
 Set residual using the variables' insertion API. More...
 
void setResidual (SystemBase &sys, Real residual, dof_id_type dof_index)
 Set residual at a specified degree of freedom index. More...
 
template<typename SetResidualFunctor >
void setResidual (SystemBase &sys, SetResidualFunctor set_residual_functor)
 Set residuals using the provided functor. More...
 

Protected Attributes

SubProblem_subproblem
 SubProblem that contains tag info. More...
 
DenseVector< Number_local_re
 Holds local residual entries as they are accumulated by this Kernel. More...
 
DenseMatrix< Number_local_ke
 Holds local Jacobian entries as they are accumulated by this Kernel. More...
 
DenseMatrix< Number_nonlocal_ke
 Holds nonlocal Jacobian entries as they are accumulated by this Kernel. More...
 

Private Member Functions

void prepareVectorTagInternal (Assembly &assembly, unsigned int ivar, const std::set< TagID > &vector_tags, const std::set< TagID > &absolute_value_vector_tags)
 Prepare data for computing element residual according to the specified tags Residual blocks for different tags will be extracted from Assembly. More...
 

Private Attributes

std::set< TagID_vector_tags
 The residual tag ids this Kernel will contribute to. More...
 
std::set< TagID_abs_vector_tags
 The absolute value residual tag ids. More...
 
std::set< TagID_matrix_tags
 The matrices this Kernel will contribute to. More...
 
std::set< TagID_non_ref_vector_tags
 A set to hold vector tags excluding the reference residual tag. More...
 
std::set< TagID_non_ref_abs_vector_tags
 A set to hold absolute value vector tags excluding the reference residual tag. More...
 
std::set< TagID_ref_vector_tags
 A set of either size 1 or 0. More...
 
std::set< TagID_ref_abs_vector_tags
 A set of either size 1 or 0. More...
 
const MooseObject_moose_object
 Moose objct this tag works on. More...
 
const InputParameters_tag_params
 Parameters from moose object. More...
 
std::vector< DenseVector< Number > * > _re_blocks
 Residual blocks Vectors For each Tag. More...
 
std::vector< DenseVector< Number > * > _absre_blocks
 Residual blocks for absolute value residual tags. More...
 
std::vector< DenseMatrix< Number > * > _ke_blocks
 Kernel blocks Vectors For each Tag. More...
 
std::vector< Real_absolute_residuals
 A container to hold absolute values of residuals passed into addResiduals. More...
 

Friends

void NonlinearSystemBase::constraintJacobians (bool)
 

Detailed Description

Definition at line 34 of file TaggingInterface.h.

Member Enumeration Documentation

◆ ResidualTagType

Enumerate whether a (residual) vector tag is to be of a non-reference or reference tag type.

Enumerator
NonReference 
Reference 

Definition at line 75 of file TaggingInterface.h.

76  {
77  NonReference,
78  Reference
79  };

Constructor & Destructor Documentation

◆ TaggingInterface()

TaggingInterface::TaggingInterface ( const MooseObject moose_object)

Definition at line 54 of file TaggingInterface.C.

55  : _subproblem(*moose_object->parameters().getCheckedPointerParam<SubProblem *>("_subproblem")),
56  _moose_object(*moose_object),
58 {
59  auto & vector_tag_names = _tag_params.get<MultiMooseEnum>("vector_tags");
60 
61  if (!vector_tag_names.isValid())
62  {
63  if (!_tag_params.get<bool>("matrix_only"))
64  mooseError("MUST provide at least one vector_tag for Kernel: ", _moose_object.name());
65  }
66  else
67  {
68  for (auto & vector_tag_name : vector_tag_names)
69  {
70  const TagID vector_tag_id = _subproblem.getVectorTagID(vector_tag_name.name());
72  mooseError("Vector tag '",
73  vector_tag_name.name(),
74  "' for Kernel '",
76  "' is not a residual vector tag");
77  _vector_tags.insert(vector_tag_id);
78  }
79  }
80 
81  // Add extra vector tags. These tags should be created in the System already, otherwise
82  // we can not add the extra tags
83  auto & extra_vector_tags = _tag_params.get<std::vector<TagName>>("extra_vector_tags");
84 
85  for (auto & vector_tag_name : extra_vector_tags)
86  {
87  const TagID vector_tag_id = _subproblem.getVectorTagID(vector_tag_name);
89  mooseError("Extra vector tag '",
90  vector_tag_name,
91  "' for Kernel '",
93  "' is not a residual vector tag");
94  _vector_tags.insert(vector_tag_id);
95  }
96 
97  // Add absolue value vector tags. These tags should be created in the System already, otherwise
98  // we can not add the extra tags
99  auto & abs_vector_tags = _tag_params.get<std::vector<TagName>>("absolute_value_vector_tags");
100 
101  for (auto & vector_tag_name : abs_vector_tags)
102  {
103  const TagID vector_tag_id = _subproblem.getVectorTagID(vector_tag_name);
105  mooseError("Absolute value vector tag '",
106  vector_tag_name,
107  "' for Kernel '",
109  "' is not a residual vector tag");
110  _abs_vector_tags.insert(vector_tag_id);
111  }
112 
113  auto & matrix_tag_names = _tag_params.get<MultiMooseEnum>("matrix_tags");
114 
115  if (matrix_tag_names.isValid())
116  for (auto & matrix_tag_name : matrix_tag_names)
117  _matrix_tags.insert(_subproblem.getMatrixTagID(matrix_tag_name.name()));
118 
119  auto & extra_matrix_tags = _tag_params.get<std::vector<TagName>>("extra_matrix_tags");
120 
121  for (auto & matrix_tag_name : extra_matrix_tags)
122  _matrix_tags.insert(_subproblem.getMatrixTagID(matrix_tag_name));
123 
124  _re_blocks.resize(_vector_tags.size());
125  _absre_blocks.resize(_abs_vector_tags.size());
126  _ke_blocks.resize(_matrix_tags.size());
127 
128  const auto * const fe_problem =
129  moose_object->parameters().getCheckedPointerParam<FEProblemBase *>("_fe_problem_base");
130  if (const auto * const ref_problem = dynamic_cast<const ReferenceResidualProblem *>(fe_problem))
131  {
132  const auto reference_tag = ref_problem->referenceVectorTagID({});
133  auto create_tags_split =
134  [reference_tag](const auto & tags, auto & non_ref_tags, auto & ref_tags)
135  {
136  for (const auto tag : tags)
137  if (tag == reference_tag)
138  ref_tags.insert(tag);
139  else
140  non_ref_tags.insert(tag);
141  };
144  }
145  else
146  {
149  }
150 }
virtual TagID getVectorTagID(const TagName &tag_name) const
Get a TagID from a TagName.
Definition: SubProblem.C:181
std::set< TagID > _ref_abs_vector_tags
A set of either size 1 or 0.
SubProblem & _subproblem
SubProblem that contains tag info.
const InputParameters & _tag_params
Parameters from moose object.
unsigned int TagID
Definition: MooseTypes.h:199
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:299
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
T getCheckedPointerParam(const std::string &name, const std::string &error_string="") const
Verifies that the requested parameter exists and is not NULL and returns it to the caller...
std::vector< DenseVector< Number > * > _absre_blocks
Residual blocks for absolute value residual tags.
std::vector< DenseVector< Number > * > _re_blocks
Residual blocks Vectors For each Tag.
std::set< TagID > _ref_vector_tags
A set of either size 1 or 0.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::set< TagID > _abs_vector_tags
The absolute value residual tag ids.
std::set< TagID > _non_ref_abs_vector_tags
A set to hold absolute value vector tags excluding the reference residual tag.
virtual TagID getMatrixTagID(const TagName &tag_name) const
Get a TagID from a TagName.
Definition: SubProblem.C:320
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
virtual Moose::VectorTagType vectorTagType(const TagID tag_id) const
Definition: SubProblem.C:209
std::set< TagID > _non_ref_vector_tags
A set to hold vector tags excluding the reference residual tag.
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:75
const MooseObject & _moose_object
Moose objct this tag works on.
const InputParameters & parameters() const
Get the parameters of the object.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.

◆ ~TaggingInterface()

TaggingInterface::~TaggingInterface ( )
virtual

Definition at line 436 of file TaggingInterface.C.

436 {}

Member Function Documentation

◆ accumulateTaggedLocalMatrix() [1/3]

void TaggingInterface::accumulateTaggedLocalMatrix ( )
protected

Local Jacobian blocks will be appended by adding the current local kernel Jacobian.

It should be called after the local element matrix has been computed.

Definition at line 380 of file TaggingInterface.C.

Referenced by DGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), MassLumpedTimeDerivative::computeJacobian(), TimeDerivative::computeJacobian(), VectorTimeDerivative::computeJacobian(), ScalarKernel::computeJacobian(), Kernel::computeJacobian(), ODEKernel::computeJacobian(), VectorKernel::computeJacobian(), ArrayKernel::computeJacobian(), IntegratedBC::computeJacobian(), VectorIntegratedBC::computeJacobian(), EigenKernel::computeJacobian(), ArrayIntegratedBC::computeJacobian(), NonlocalIntegratedBC::computeJacobian(), KernelGrad::computeJacobian(), KernelValue::computeJacobian(), NonlocalKernel::computeJacobian(), MortarConstraint::computeJacobian(), NodeElemConstraint::computeJacobian(), NodeFaceConstraint::computeJacobian(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayDGLowerDKernel::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), Kernel::computeOffDiagJacobian(), VectorKernel::computeOffDiagJacobian(), EigenKernel::computeOffDiagJacobian(), ArrayKernel::computeOffDiagJacobian(), VectorIntegratedBC::computeOffDiagJacobian(), IntegratedBC::computeOffDiagJacobian(), ArrayIntegratedBC::computeOffDiagJacobian(), NonlocalKernel::computeOffDiagJacobian(), NonlocalIntegratedBC::computeOffDiagJacobian(), KernelGrad::computeOffDiagJacobian(), KernelValue::computeOffDiagJacobian(), NodeElemConstraint::computeOffDiagJacobian(), NodeFaceConstraint::computeOffDiagJacobian(), ODEKernel::computeOffDiagJacobianScalar(), VectorKernel::computeOffDiagJacobianScalar(), ArrayKernel::computeOffDiagJacobianScalar(), IntegratedBC::computeOffDiagJacobianScalar(), VectorIntegratedBC::computeOffDiagJacobianScalar(), Kernel::computeOffDiagJacobianScalar(), ArrayIntegratedBC::computeOffDiagJacobianScalar(), ScalarLagrangeMultiplier::computeOffDiagJacobianScalar(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), and ConservativeAdvection::fullUpwind().

381 {
382  for (auto & ke : _ke_blocks)
383  *ke += _local_ke;
384 }
DenseMatrix< Number > _local_ke
Holds local Jacobian entries as they are accumulated by this Kernel.
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.

◆ accumulateTaggedLocalMatrix() [2/3]

void TaggingInterface::accumulateTaggedLocalMatrix ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar,
const DenseMatrix< Number > &  k 
)
protected

Definition at line 387 of file TaggingInterface.C.

391 {
392  _ke_blocks.resize(_matrix_tags.size());
393  mooseAssert(_matrix_tags.size() >= 1, "we need at least one active tag");
394  auto mat_vector = _matrix_tags.begin();
395  for (MooseIndex(_matrix_tags) i = 0; i < _matrix_tags.size(); i++, ++mat_vector)
396  _ke_blocks[i] = &assembly.jacobianBlock(ivar, jvar, Assembly::LocalDataKey{}, *mat_vector);
397  mooseAssert(_ke_blocks[0]->m() == k.m() && _ke_blocks[0]->n() == k.n(),
398  "Passed-in k must match the blocks we are about to sum into");
399  for (auto & ke : _ke_blocks)
400  *ke += k;
401 }
unsigned int m() const
DenseMatrix< Number > & jacobianBlock(unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Get local Jacobian block for a pair of variables and a tag.
Definition: Assembly.h:1092
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.
unsigned int n() const
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ accumulateTaggedLocalMatrix() [3/3]

void TaggingInterface::accumulateTaggedLocalMatrix ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar,
Moose::DGJacobianType  type,
const DenseMatrix< Number > &  k 
)
protected

Definition at line 404 of file TaggingInterface.C.

409 {
410  _ke_blocks.resize(_matrix_tags.size());
411  mooseAssert(_matrix_tags.size() >= 1, "we need at least one active tag");
412  auto mat_vector = _matrix_tags.begin();
413  for (MooseIndex(_matrix_tags) i = 0; i < _matrix_tags.size(); i++, ++mat_vector)
414  _ke_blocks[i] =
415  &assembly.jacobianBlockNeighbor(type, ivar, jvar, Assembly::LocalDataKey{}, *mat_vector);
416  mooseAssert(_ke_blocks[0]->m() == k.m() && _ke_blocks[0]->n() == k.n(),
417  "Passed-in k must match the blocks we are about to sum into");
418  for (auto & ke : _ke_blocks)
419  *ke += k;
420 }
DenseMatrix< Number > & jacobianBlockNeighbor(Moose::DGJacobianType type, unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Get local Jacobian block of a DG Jacobian type for a pair of variables and a tag. ...
Definition: Assembly.C:3108
unsigned int m() const
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.
unsigned int n() const
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ accumulateTaggedLocalResidual()

void TaggingInterface::accumulateTaggedLocalResidual ( )
protected

Local residual blocks will be appended by adding the current local kernel residual.

It should be called after the local element vector has been computed.

Definition at line 360 of file TaggingInterface.C.

Referenced by FVInterfaceKernel::addResidual(), ADDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), DGLowerDKernel::computeLowerDResidual(), ArrayDGLowerDKernel::computeLowerDResidual(), ScalarKernel::computeResidual(), Kernel::computeResidual(), VectorKernel::computeResidual(), ArrayKernel::computeResidual(), LowerDIntegratedBC::computeResidual(), ODETimeKernel::computeResidual(), ODEKernel::computeResidual(), TimeKernel::computeResidual(), ADScalarKernel::computeResidual(), VectorTimeKernel::computeResidual(), VectorIntegratedBC::computeResidual(), IntegratedBC::computeResidual(), ArrayLowerDIntegratedBC::computeResidual(), ArrayIntegratedBC::computeResidual(), EigenKernel::computeResidual(), ADMortarConstraint::computeResidual(), FVFluxBC::computeResidual(), FVBoundaryScalarLagrangeMultiplierConstraint::computeResidual(), FVScalarLagrangeMultiplierConstraint::computeResidual(), MortarConstraint::computeResidual(), KernelGrad::computeResidual(), KernelValue::computeResidual(), FVElementalKernel::computeResidual(), NodeElemConstraint::computeResidual(), FVFluxKernel::computeResidual(), NodeFaceConstraint::computeResidual(), and ConservativeAdvection::fullUpwind().

361 {
362  for (auto & re : _re_blocks)
363  *re += _local_re;
364  for (auto & absre : _absre_blocks)
365  for (const auto i : index_range(_local_re))
366  (*absre)(i) += std::abs(_local_re(i));
367 }
std::vector< DenseVector< Number > * > _absre_blocks
Residual blocks for absolute value residual tags.
std::vector< DenseVector< Number > * > _re_blocks
Residual blocks Vectors For each Tag.
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
DenseVector< Number > _local_re
Holds local residual entries as they are accumulated by this Kernel.
auto index_range(const T &sizable)

◆ accumulateTaggedNonlocalMatrix()

void TaggingInterface::accumulateTaggedNonlocalMatrix ( )
protected

Nonlocal Jacobian blocks will be appended by adding the current nonlocal kernel Jacobian.

It should be called after the nonlocal element matrix has been computed.

Definition at line 423 of file TaggingInterface.C.

Referenced by NonlocalIntegratedBC::computeNonlocalJacobian(), NonlocalKernel::computeNonlocalJacobian(), NonlocalKernel::computeNonlocalOffDiagJacobian(), and NonlocalIntegratedBC::computeNonlocalOffDiagJacobian().

424 {
425  for (auto & ke : _ke_blocks)
426  *ke += _nonlocal_ke;
427 }
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.
DenseMatrix< Number > _nonlocal_ke
Holds nonlocal Jacobian entries as they are accumulated by this Kernel.

◆ addJacobian() [1/2]

template<typename Residuals , typename Indices >
void TaggingInterface::addJacobian ( Assembly assembly,
const Residuals &  residuals,
const Indices &  dof_indices,
Real  scaling_factor 
)
protected

◆ addJacobian() [2/2]

void TaggingInterface::addJacobian ( Assembly assembly,
DenseMatrix< Real > &  local_k,
const std::vector< dof_id_type > &  row_indices,
const std::vector< dof_id_type > &  column_indices,
Real  scaling_factor 
)
inlineprotected

Add a local Jacobian matrix.

Definition at line 526 of file TaggingInterface.h.

531 {
532  for (const auto matrix_tag : _matrix_tags)
533  assembly.cacheJacobianBlock(
534  local_k, row_indices, column_indices, scaling_factor, Assembly::LocalDataKey{}, matrix_tag);
535 }
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void cacheJacobianBlock(DenseMatrix< Number > &jac_block, const std::vector< dof_id_type > &idof_indices, const std::vector< dof_id_type > &jdof_indices, Real scaling_factor, LocalDataKey, TagID tag)
Cache a local Jacobian block with the provided rows (idof_indices) and columns (jdof_indices) for eve...
Definition: Assembly.C:3743
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ addJacobianElement()

void TaggingInterface::addJacobianElement ( Assembly assembly,
Real  value,
dof_id_type  row_index,
dof_id_type  column_index,
Real  scaling_factor 
)
inlineprotected

Add into a single Jacobian element.

Definition at line 515 of file TaggingInterface.h.

Referenced by ArrayNodalBC::computeJacobian(), VectorNodalBC::computeJacobian(), NodalBC::computeJacobian(), NodalKernel::computeJacobian(), NodalConstraint::computeJacobian(), ArrayNodalBC::computeOffDiagJacobian(), VectorNodalBC::computeOffDiagJacobian(), NodalBC::computeOffDiagJacobian(), NodalKernel::computeOffDiagJacobian(), and MortarConstraintBase::zeroInactiveLMDofs().

520 {
521  assembly.cacheJacobian(
522  row_index, column_index, value * scaling_factor, Assembly::LocalDataKey{}, _matrix_tags);
523 }
void cacheJacobian(GlobalDataKey)
Takes the values that are currently in _sub_Kee and appends them to the cached values.
Definition: Assembly.C:4054
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ addJacobianWithoutConstraints()

template<typename Residuals , typename Indices >
void TaggingInterface::addJacobianWithoutConstraints ( Assembly assembly,
const Residuals &  residuals,
const Indices &  dof_indices,
Real  scaling_factor 
)
protected

Add the provided residual derivatives into the Jacobian for the provided dof indices.

This API should only be used if the caller knows that no libMesh-level constraints (hanging nodes or periodic boundary conditions) apply to the provided dof indices

Definition at line 505 of file TaggingInterface.h.

Referenced by addResidualsAndJacobianWithoutConstraints().

509 {
511  residuals, dof_indices, scaling_factor, Assembly::LocalDataKey{}, _matrix_tags);
512 }
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void cacheJacobianWithoutConstraints(const Residuals &residuals, const Indices &row_indices, Real scaling_factor, LocalDataKey, const std::set< TagID > &matrix_tags)
Process the derivatives() data of a vector of ADReals.
Definition: Assembly.h:3127
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ addResiduals() [1/2]

template<typename Residuals , typename Indices >
void TaggingInterface::addResiduals ( Assembly assembly,
const Residuals &  residuals,
const Indices &  dof_indices,
Real  scaling_factor 
)
protected

Add the provided incoming residuals corresponding to the provided dof indices.

Definition at line 416 of file TaggingInterface.h.

Referenced by addResiduals(), addResidualsAndJacobian(), FVScalarLagrangeMultiplierInterface::computeResidual(), TimeNodalKernel::computeResidual(), FVScalarLagrangeMultiplierConstraint::computeResidual(), FVBoundaryScalarLagrangeMultiplierConstraint::computeResidual(), NodalKernel::computeResidual(), ADNodalKernel::computeResidual(), ADKernelScalarBase::computeResidual(), NodalConstraint::computeResidual(), ADMortarScalarBase::computeResidual(), MortarScalarBase::computeResidual(), KernelScalarBase::computeScalarResidual(), and MortarConstraintBase::zeroInactiveLMDofs().

420 {
421  assembly.cacheResiduals(
422  residuals, dof_indices, scaling_factor, Assembly::LocalDataKey{}, _vector_tags);
423  if (!_abs_vector_tags.empty())
424  {
425  _absolute_residuals.resize(residuals.size());
426  for (const auto i : index_range(residuals))
428 
430  dof_indices,
431  scaling_factor,
434  }
435 }
auto raw_value(const Eigen::Map< T > &in)
Definition: ADReal.h:73
std::set< TagID > _abs_vector_tags
The absolute value residual tag ids.
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
void cacheResiduals(const Residuals &residuals, const Indices &row_indices, Real scaling_factor, LocalDataKey, const std::set< TagID > &vector_tags)
Process the supplied residual values.
Definition: Assembly.h:3008
auto index_range(const T &sizable)
std::vector< Real > _absolute_residuals
A container to hold absolute values of residuals passed into addResiduals.
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ addResiduals() [2/2]

template<typename T , typename Indices >
void TaggingInterface::addResiduals ( Assembly assembly,
const DenseVector< T > &  residuals,
const Indices &  dof_indices,
Real  scaling_factor 
)
protected

Add the provided incoming residuals corresponding to the provided dof indices.

Definition at line 439 of file TaggingInterface.h.

443 {
444  addResiduals(assembly, residuals.get_values(), dof_indices, scaling_factor);
445 }
void addResiduals(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
Add the provided incoming residuals corresponding to the provided dof indices.

◆ addResidualsAndJacobian()

template<typename Residuals , typename Indices >
void TaggingInterface::addResidualsAndJacobian ( Assembly assembly,
const Residuals &  residuals,
const Indices &  dof_indices,
Real  scaling_factor 
)
protected

Add the provided incoming residuals and derivatives for the Jacobian, corresponding to the provided dof indices.

Definition at line 472 of file TaggingInterface.h.

Referenced by FVScalarLagrangeMultiplierInterface::computeJacobian(), FVBoundaryScalarLagrangeMultiplierConstraint::computeJacobian(), FVFluxBC::computeJacobian(), ADKernelScalarBase::computeJacobian(), FVFluxKernel::computeJacobian(), FVInterfaceKernel::computeJacobian(), FVScalarLagrangeMultiplierConstraint::computeResidualAndJacobian(), FVElementalKernel::computeResidualAndJacobian(), and ADKernelScalarBase::computeResidualAndJacobian().

476 {
477  addResiduals(assembly, residuals, dof_indices, scaling_factor);
478  addJacobian(assembly, residuals, dof_indices, scaling_factor);
479 }
void addResiduals(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
Add the provided incoming residuals corresponding to the provided dof indices.
void addJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
Add the provided residual derivatives into the Jacobian for the provided dof indices.

◆ addResidualsAndJacobianWithoutConstraints()

template<typename Residuals , typename Indices >
void TaggingInterface::addResidualsAndJacobianWithoutConstraints ( Assembly assembly,
const Residuals &  residuals,
const Indices &  dof_indices,
Real  scaling_factor 
)
protected

Add the provided incoming residuals and derivatives for the Jacobian, corresponding to the provided dof indices.

This API should only be used if the caller knows that no libMesh-level constraints (hanging nodes or periodic boundary conditions) apply to the provided dof indices

Definition at line 494 of file TaggingInterface.h.

Referenced by ADMortarConstraint::computeJacobian(), and ADMortarScalarBase::computeJacobian().

498 {
499  addResidualsWithoutConstraints(assembly, residuals, dof_indices, scaling_factor);
500  addJacobianWithoutConstraints(assembly, residuals, dof_indices, scaling_factor);
501 }
void addResidualsWithoutConstraints(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
Add the provided incoming residuals corresponding to the provided dof indices.
void addJacobianWithoutConstraints(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
Add the provided residual derivatives into the Jacobian for the provided dof indices.

◆ addResidualsWithoutConstraints()

template<typename Residuals , typename Indices >
void TaggingInterface::addResidualsWithoutConstraints ( Assembly assembly,
const Residuals &  residuals,
const Indices &  dof_indices,
Real  scaling_factor 
)
protected

Add the provided incoming residuals corresponding to the provided dof indices.

This API should only be used if the caller knows that no libMesh-level constraints (hanging nodes or periodic boundary conditions) apply to the provided dof indices

Definition at line 449 of file TaggingInterface.h.

Referenced by addResidualsAndJacobianWithoutConstraints().

453 {
455  residuals, dof_indices, scaling_factor, Assembly::LocalDataKey{}, _vector_tags);
456  if (!_abs_vector_tags.empty())
457  {
458  _absolute_residuals.resize(residuals.size());
459  for (const auto i : index_range(residuals))
461 
463  dof_indices,
464  scaling_factor,
467  }
468 }
auto raw_value(const Eigen::Map< T > &in)
Definition: ADReal.h:73
std::set< TagID > _abs_vector_tags
The absolute value residual tag ids.
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
auto index_range(const T &sizable)
std::vector< Real > _absolute_residuals
A container to hold absolute values of residuals passed into addResiduals.
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812
void cacheResidualsWithoutConstraints(const Residuals &residuals, const Indices &row_indices, Real scaling_factor, LocalDataKey, const std::set< TagID > &vector_tags)
Process the supplied residual values.
Definition: Assembly.h:3048

◆ assignTaggedLocalMatrix()

void TaggingInterface::assignTaggedLocalMatrix ( )
protected

Local Jacobian blocks will assigned as the current local kernel Jacobian.

It should be called after the local element matrix has been computed.

Definition at line 430 of file TaggingInterface.C.

Referenced by NodalEqualValueConstraint::computeJacobian().

431 {
432  for (auto & ke : _ke_blocks)
433  *ke = _local_ke;
434 }
DenseMatrix< Number > _local_ke
Holds local Jacobian entries as they are accumulated by this Kernel.
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.

◆ assignTaggedLocalResidual()

void TaggingInterface::assignTaggedLocalResidual ( )
protected

Local residual blocks will assigned as the current local kernel residual.

It should be called after the local element vector has been computed.

Definition at line 370 of file TaggingInterface.C.

Referenced by NodalEqualValueConstraint::computeResidual(), and NodeFaceConstraint::computeResidual().

371 {
372  for (auto & re : _re_blocks)
373  *re = _local_re;
374  for (auto & absre : _absre_blocks)
375  for (const auto i : index_range(_local_re))
376  (*absre)(i) = std::abs(_local_re(i));
377 }
std::vector< DenseVector< Number > * > _absre_blocks
Residual blocks for absolute value residual tags.
std::vector< DenseVector< Number > * > _re_blocks
Residual blocks Vectors For each Tag.
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
DenseVector< Number > _local_re
Holds local residual entries as they are accumulated by this Kernel.
auto index_range(const T &sizable)

◆ getMatrixTags()

const std::set<TagID>& TaggingInterface::getMatrixTags ( MatrixTagsKey  ) const
inline

Definition at line 97 of file TaggingInterface.h.

97 { return _matrix_tags; }
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.

◆ getVectorTags()

const std::set<TagID>& TaggingInterface::getVectorTags ( VectorTagsKey  ) const
inline

Definition at line 95 of file TaggingInterface.h.

95 { return _vector_tags; }
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.

◆ hasVectorTags()

bool TaggingInterface::hasVectorTags ( ) const
inline

Definition at line 93 of file TaggingInterface.h.

Referenced by Kernel::computeResidual().

93 { return !_vector_tags.empty(); }
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.

◆ isMatrixTagged()

bool TaggingInterface::isMatrixTagged ( )
inline

Definition at line 91 of file TaggingInterface.h.

91 { return _matrix_tags.size() > 0; }
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.

◆ isVectorTagged()

bool TaggingInterface::isVectorTagged ( )
inline

Definition at line 89 of file TaggingInterface.h.

89 { return _vector_tags.size() > 0; }
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.

◆ prepareMatrixTag() [1/2]

void TaggingInterface::prepareMatrixTag ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar 
)
protected

Prepare data for computing element jacobian according to the active tags.

Jacobian blocks for different tags will be extracted from Assembly. A local Jacobian will be zeroed. It should be called right before the local element matrix is computed.

Definition at line 276 of file TaggingInterface.C.

Referenced by DGKernel::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), VectorTimeDerivative::computeJacobian(), ScalarKernel::computeJacobian(), TimeDerivative::computeJacobian(), MassLumpedTimeDerivative::computeJacobian(), Kernel::computeJacobian(), VectorKernel::computeJacobian(), ODEKernel::computeJacobian(), ArrayKernel::computeJacobian(), VectorIntegratedBC::computeJacobian(), IntegratedBC::computeJacobian(), ArrayIntegratedBC::computeJacobian(), EigenKernel::computeJacobian(), NodalEqualValueConstraint::computeJacobian(), NonlocalIntegratedBC::computeJacobian(), KernelGrad::computeJacobian(), KernelValue::computeJacobian(), NonlocalKernel::computeJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), VectorKernel::computeOffDiagJacobian(), Kernel::computeOffDiagJacobian(), ArrayKernel::computeOffDiagJacobian(), EigenKernel::computeOffDiagJacobian(), VectorIntegratedBC::computeOffDiagJacobian(), IntegratedBC::computeOffDiagJacobian(), ArrayIntegratedBC::computeOffDiagJacobian(), NonlocalIntegratedBC::computeOffDiagJacobian(), NonlocalKernel::computeOffDiagJacobian(), KernelValue::computeOffDiagJacobian(), KernelGrad::computeOffDiagJacobian(), ODEKernel::computeOffDiagJacobianScalar(), VectorKernel::computeOffDiagJacobianScalar(), ArrayKernel::computeOffDiagJacobianScalar(), VectorIntegratedBC::computeOffDiagJacobianScalar(), IntegratedBC::computeOffDiagJacobianScalar(), Kernel::computeOffDiagJacobianScalar(), ArrayIntegratedBC::computeOffDiagJacobianScalar(), ScalarLagrangeMultiplier::computeOffDiagJacobianScalar(), and ConservativeAdvection::fullUpwind().

277 {
278  _ke_blocks.resize(_matrix_tags.size());
279  mooseAssert(_matrix_tags.size() >= 1, "we need at least one active tag");
280  auto mat_vector = _matrix_tags.begin();
281  for (MooseIndex(_matrix_tags) i = 0; i < _matrix_tags.size(); i++, ++mat_vector)
282  _ke_blocks[i] = &assembly.jacobianBlock(ivar, jvar, Assembly::LocalDataKey{}, *mat_vector);
283 
284  _local_ke.resize(_ke_blocks[0]->m(), _ke_blocks[0]->n());
285 }
DenseMatrix< Number > & jacobianBlock(unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Get local Jacobian block for a pair of variables and a tag.
Definition: Assembly.h:1092
DenseMatrix< Number > _local_ke
Holds local Jacobian entries as they are accumulated by this Kernel.
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void resize(const unsigned int new_m, const unsigned int new_n)
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareMatrixTag() [2/2]

void TaggingInterface::prepareMatrixTag ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar,
DenseMatrix< Number > &  k 
) const
protected

Definition at line 288 of file TaggingInterface.C.

292 {
293  mooseAssert(!_matrix_tags.empty(), "No matrix tags exist");
294  const auto & ij_mat =
295  assembly.jacobianBlock(ivar, jvar, Assembly::LocalDataKey{}, *_matrix_tags.begin());
296  k.resize(ij_mat.m(), ij_mat.n());
297 }
DenseMatrix< Number > & jacobianBlock(unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Get local Jacobian block for a pair of variables and a tag.
Definition: Assembly.h:1092
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void resize(const unsigned int new_m, const unsigned int new_n)
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareMatrixTagLower()

void TaggingInterface::prepareMatrixTagLower ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar,
Moose::ConstraintJacobianType  type 
)
protected

Prepare data for computing the jacobian according to the active tags for mortar.

Jacobian blocks for different tags will be extracted from Assembly. A local Jacobian will be zeroed. It should be called right before the local element matrix is computed.

Definition at line 344 of file TaggingInterface.C.

Referenced by MortarConstraint::computeJacobian(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayDGLowerDKernel::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), DGLowerDKernel::computeOffDiagLowerDJacobian(), and ArrayDGLowerDKernel::computeOffDiagLowerDJacobian().

348 {
349  _ke_blocks.resize(_matrix_tags.size());
350  mooseAssert(_matrix_tags.size() >= 1, "we need at least one active tag");
351  auto mat_vector = _matrix_tags.begin();
352  for (MooseIndex(_matrix_tags) i = 0; i < _matrix_tags.size(); i++, ++mat_vector)
353  _ke_blocks[i] =
354  &assembly.jacobianBlockMortar(type, ivar, jvar, Assembly::LocalDataKey{}, *mat_vector);
355 
356  _local_ke.resize(_ke_blocks[0]->m(), _ke_blocks[0]->n());
357 }
DenseMatrix< Number > _local_ke
Holds local Jacobian entries as they are accumulated by this Kernel.
DenseMatrix< Number > & jacobianBlockMortar(Moose::ConstraintJacobianType type, unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Returns the jacobian block for the given mortar Jacobian type.
Definition: Assembly.C:3149
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void resize(const unsigned int new_m, const unsigned int new_n)
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareMatrixTagNeighbor() [1/2]

void TaggingInterface::prepareMatrixTagNeighbor ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar,
Moose::DGJacobianType  type 
)
protected

Prepare data for computing element jacobian according to the active tags for DG and interface kernels.

Jacobian blocks for different tags will be extracted from Assembly. A local Jacobian will be zeroed. It should be called right before the local element matrix is computed.

Definition at line 315 of file TaggingInterface.C.

Referenced by DGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), NodeElemConstraint::computeJacobian(), NodeFaceConstraint::computeJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), NodeElemConstraint::computeOffDiagJacobian(), and NodeFaceConstraint::computeOffDiagJacobian().

319 {
320  _ke_blocks.resize(_matrix_tags.size());
321  mooseAssert(_matrix_tags.size() >= 1, "we need at least one active tag");
322  auto mat_vector = _matrix_tags.begin();
323  for (MooseIndex(_matrix_tags) i = 0; i < _matrix_tags.size(); i++, ++mat_vector)
324  _ke_blocks[i] =
325  &assembly.jacobianBlockNeighbor(type, ivar, jvar, Assembly::LocalDataKey{}, *mat_vector);
326 
327  _local_ke.resize(_ke_blocks[0]->m(), _ke_blocks[0]->n());
328 }
DenseMatrix< Number > & jacobianBlockNeighbor(Moose::DGJacobianType type, unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Get local Jacobian block of a DG Jacobian type for a pair of variables and a tag. ...
Definition: Assembly.C:3108
DenseMatrix< Number > _local_ke
Holds local Jacobian entries as they are accumulated by this Kernel.
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void resize(const unsigned int new_m, const unsigned int new_n)
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareMatrixTagNeighbor() [2/2]

void TaggingInterface::prepareMatrixTagNeighbor ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar,
Moose::DGJacobianType  type,
DenseMatrix< Number > &  k 
) const
protected

Definition at line 331 of file TaggingInterface.C.

336 {
337  mooseAssert(!_matrix_tags.empty(), "No matrix tags exist");
338  const auto & ij_mat = assembly.jacobianBlockNeighbor(
339  type, ivar, jvar, Assembly::LocalDataKey{}, *_matrix_tags.begin());
340  k.resize(ij_mat.m(), ij_mat.n());
341 }
DenseMatrix< Number > & jacobianBlockNeighbor(Moose::DGJacobianType type, unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Get local Jacobian block of a DG Jacobian type for a pair of variables and a tag. ...
Definition: Assembly.C:3108
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void resize(const unsigned int new_m, const unsigned int new_n)
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareMatrixTagNonlocal()

void TaggingInterface::prepareMatrixTagNonlocal ( Assembly assembly,
unsigned int  ivar,
unsigned int  jvar 
)
protected

Prepare data for computing nonlocal element jacobian according to the active tags.

Jacobian blocks for different tags will be extracted from Assembly. A nonlocal Jacobian will be zeroed. It should be called right before the nonlocal element matrix is computed.

Definition at line 300 of file TaggingInterface.C.

Referenced by NonlocalIntegratedBC::computeNonlocalJacobian(), NonlocalKernel::computeNonlocalJacobian(), NonlocalKernel::computeNonlocalOffDiagJacobian(), and NonlocalIntegratedBC::computeNonlocalOffDiagJacobian().

303 {
304  _ke_blocks.resize(_matrix_tags.size());
305  mooseAssert(_matrix_tags.size() >= 1, "we need at least one active tag");
306  auto mat_vector = _matrix_tags.begin();
307  for (MooseIndex(_matrix_tags) i = 0; i < _matrix_tags.size(); i++, ++mat_vector)
308  _ke_blocks[i] =
309  &assembly.jacobianBlockNonlocal(ivar, jvar, Assembly::LocalDataKey{}, *mat_vector);
310 
311  _nonlocal_ke.resize(_ke_blocks[0]->m(), _ke_blocks[0]->n());
312 }
DenseMatrix< Number > & jacobianBlockNonlocal(unsigned int ivar, unsigned int jvar, LocalDataKey, TagID tag)
Get local Jacobian block from non-local contribution for a pair of variables and a tag...
Definition: Assembly.h:1103
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
void resize(const unsigned int new_m, const unsigned int new_n)
std::vector< DenseMatrix< Number > * > _ke_blocks
Kernel blocks Vectors For each Tag.
DenseMatrix< Number > _nonlocal_ke
Holds nonlocal Jacobian entries as they are accumulated by this Kernel.
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareVectorTag() [1/2]

void TaggingInterface::prepareVectorTag ( Assembly assembly,
unsigned int  ivar 
)
protected

Prepare data for computing element residual according to active tags.

Residual blocks for different tags will be extracted from Assembly. A local residual will be zeroed. It should be called right before the local element vector is computed.

Definition at line 189 of file TaggingInterface.C.

Referenced by FVInterfaceKernel::addResidual(), ADDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), ScalarKernel::computeResidual(), Kernel::computeResidual(), VectorKernel::computeResidual(), ArrayKernel::computeResidual(), TimeKernel::computeResidual(), ODETimeKernel::computeResidual(), ODEKernel::computeResidual(), ADScalarKernel::computeResidual(), VectorTimeKernel::computeResidual(), IntegratedBC::computeResidual(), VectorIntegratedBC::computeResidual(), EigenKernel::computeResidual(), ArrayIntegratedBC::computeResidual(), NodalEqualValueConstraint::computeResidual(), ADMortarConstraint::computeResidual(), FVScalarLagrangeMultiplierConstraint::computeResidual(), FVFluxBC::computeResidual(), FVBoundaryScalarLagrangeMultiplierConstraint::computeResidual(), MortarConstraint::computeResidual(), KernelGrad::computeResidual(), KernelValue::computeResidual(), FVElementalKernel::computeResidual(), NodeElemConstraint::computeResidual(), FVFluxKernel::computeResidual(), NodeFaceConstraint::computeResidual(), and ConservativeAdvection::fullUpwind().

190 {
192 }
std::set< TagID > _abs_vector_tags
The absolute value residual tag ids.
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
void prepareVectorTagInternal(Assembly &assembly, unsigned int ivar, const std::set< TagID > &vector_tags, const std::set< TagID > &absolute_value_vector_tags)
Prepare data for computing element residual according to the specified tags Residual blocks for diffe...

◆ prepareVectorTag() [2/2]

void TaggingInterface::prepareVectorTag ( Assembly assembly,
unsigned int  ivar,
ResidualTagType  tag_type 
)
protected

Prepare vector tags in a reference residual problem context.

Parameters
AssemblyThe assembly object that we obtain the local residual blocks from
ivarThe variable which we are retrieving the local residual blocks for
ref_problemA pointer to a reference residual problem. This can be a nullptr
tag_typeWhat type of tags to prepare

Definition at line 195 of file TaggingInterface.C.

198 {
199  if (tag_type == ResidualTagType::NonReference)
201  else
203 }
std::set< TagID > _ref_abs_vector_tags
A set of either size 1 or 0.
std::set< TagID > _ref_vector_tags
A set of either size 1 or 0.
std::set< TagID > _non_ref_abs_vector_tags
A set to hold absolute value vector tags excluding the reference residual tag.
std::set< TagID > _non_ref_vector_tags
A set to hold vector tags excluding the reference residual tag.
void prepareVectorTagInternal(Assembly &assembly, unsigned int ivar, const std::set< TagID > &vector_tags, const std::set< TagID > &absolute_value_vector_tags)
Prepare data for computing element residual according to the specified tags Residual blocks for diffe...

◆ prepareVectorTagInternal()

void TaggingInterface::prepareVectorTagInternal ( Assembly assembly,
unsigned int  ivar,
const std::set< TagID > &  vector_tags,
const std::set< TagID > &  absolute_value_vector_tags 
)
private

Prepare data for computing element residual according to the specified tags Residual blocks for different tags will be extracted from Assembly.

A local residual will be zeroed. It should be called right before the local element vector is computed.

Definition at line 206 of file TaggingInterface.C.

Referenced by prepareVectorTag().

210 {
211  auto prepare = [this, ivar, &assembly](auto & re_blocks, const auto & tags)
212  {
213  re_blocks.clear();
214  re_blocks.reserve(tags.size());
215  for (const auto tag_id : tags)
216  {
217  const auto & tag = _subproblem.getVectorTag(tag_id);
218  re_blocks.push_back(&assembly.residualBlock(ivar, Assembly::LocalDataKey{}, tag._type_id));
219  }
220  };
221 
222  prepare(_re_blocks, vector_tags);
223  prepare(_absre_blocks, absolute_value_vector_tags);
224 
225  _local_re.resize(_re_blocks.empty()
226  ? (_absre_blocks.empty() ? std::size_t(0) : _absre_blocks[0]->size())
227  : _re_blocks[0]->size());
228 }
SubProblem & _subproblem
SubProblem that contains tag info.
void resize(const unsigned int n)
std::vector< DenseVector< Number > * > _absre_blocks
Residual blocks for absolute value residual tags.
std::vector< DenseVector< Number > * > _re_blocks
Residual blocks Vectors For each Tag.
DenseVector< Number > & residualBlock(unsigned int var_num, LocalDataKey, TagID tag_id)
Get local residual block for a variable and a tag.
Definition: Assembly.h:1065
DenseVector< Number > _local_re
Holds local residual entries as they are accumulated by this Kernel.
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition: SubProblem.C:139
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareVectorTagLower()

void TaggingInterface::prepareVectorTagLower ( Assembly assembly,
unsigned int  ivar 
)
protected

Prepare data for computing the residual according to active tags for mortar constraints.

Residual blocks for different tags will be extracted from Assembly. A local residual will be zeroed. It should be called right before the local element vector is computed.

Definition at line 254 of file TaggingInterface.C.

Referenced by DGLowerDKernel::computeLowerDResidual(), ArrayDGLowerDKernel::computeLowerDResidual(), LowerDIntegratedBC::computeResidual(), ArrayLowerDIntegratedBC::computeResidual(), ADMortarConstraint::computeResidual(), and MortarConstraint::computeResidual().

255 {
256  _re_blocks.resize(_vector_tags.size());
257  mooseAssert(_vector_tags.size() >= 1, "we need at least one active tag");
258  auto vector_tag = _vector_tags.begin();
259  for (MooseIndex(_vector_tags) i = 0; i < _vector_tags.size(); i++, ++vector_tag)
260  {
261  const VectorTag & tag = _subproblem.getVectorTag(*vector_tag);
262  _re_blocks[i] = &assembly.residualBlockLower(ivar, Assembly::LocalDataKey{}, tag._type_id);
263  }
264  _local_re.resize(_re_blocks[0]->size());
265 
266  _absre_blocks.resize(_abs_vector_tags.size());
267  vector_tag = _abs_vector_tags.begin();
268  for (MooseIndex(_abs_vector_tags) i = 0; i < _abs_vector_tags.size(); i++, ++vector_tag)
269  {
270  const VectorTag & tag = _subproblem.getVectorTag(*vector_tag);
272  }
273 }
SubProblem & _subproblem
SubProblem that contains tag info.
void resize(const unsigned int n)
TagTypeID _type_id
The index for this tag into a vector that contains tags of only its type ordered by ID...
Definition: VectorTag.h:45
std::vector< DenseVector< Number > * > _absre_blocks
Residual blocks for absolute value residual tags.
std::vector< DenseVector< Number > * > _re_blocks
Residual blocks Vectors For each Tag.
std::set< TagID > _abs_vector_tags
The absolute value residual tag ids.
DenseVector< Number > & residualBlockLower(unsigned int var_num, LocalDataKey, TagID tag_id)
Get residual block for lower.
Definition: Assembly.h:1083
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
DenseVector< Number > _local_re
Holds local residual entries as they are accumulated by this Kernel.
Storage for all of the information pretaining to a vector tag.
Definition: VectorTag.h:15
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition: SubProblem.C:139
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ prepareVectorTagNeighbor()

void TaggingInterface::prepareVectorTagNeighbor ( Assembly assembly,
unsigned int  ivar 
)
protected

Prepare data for computing element residual the according to active tags for DG and interface kernels.

Residual blocks for different tags will be extracted from Assembly. A local residual will be zeroed. It should be called right before the local element vector is computed.

Definition at line 231 of file TaggingInterface.C.

Referenced by FVInterfaceKernel::addResidual(), ADDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), ADMortarConstraint::computeResidual(), FVFluxBC::computeResidual(), MortarConstraint::computeResidual(), NodeElemConstraint::computeResidual(), FVFluxKernel::computeResidual(), and NodeFaceConstraint::computeResidual().

232 {
233  _re_blocks.resize(_vector_tags.size());
234  mooseAssert(_vector_tags.size() >= 1, "we need at least one active tag");
235  auto vector_tag = _vector_tags.begin();
236  for (MooseIndex(_vector_tags) i = 0; i < _vector_tags.size(); i++, ++vector_tag)
237  {
238  const VectorTag & tag = _subproblem.getVectorTag(*vector_tag);
240  }
241  _local_re.resize(_re_blocks[0]->size());
242 
243  _absre_blocks.resize(_abs_vector_tags.size());
244  vector_tag = _abs_vector_tags.begin();
245  for (MooseIndex(_abs_vector_tags) i = 0; i < _abs_vector_tags.size(); i++, ++vector_tag)
246  {
247  const VectorTag & tag = _subproblem.getVectorTag(*vector_tag);
248  _absre_blocks[i] =
249  &assembly.residualBlockNeighbor(ivar, Assembly::LocalDataKey{}, tag._type_id);
250  }
251 }
SubProblem & _subproblem
SubProblem that contains tag info.
void resize(const unsigned int n)
TagTypeID _type_id
The index for this tag into a vector that contains tags of only its type ordered by ID...
Definition: VectorTag.h:45
std::vector< DenseVector< Number > * > _absre_blocks
Residual blocks for absolute value residual tags.
std::vector< DenseVector< Number > * > _re_blocks
Residual blocks Vectors For each Tag.
std::set< TagID > _abs_vector_tags
The absolute value residual tag ids.
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
DenseVector< Number > & residualBlockNeighbor(unsigned int var_num, LocalDataKey, TagID tag_id)
Get local neighbor residual block for a variable and a tag.
Definition: Assembly.h:1074
DenseVector< Number > _local_re
Holds local residual entries as they are accumulated by this Kernel.
Storage for all of the information pretaining to a vector tag.
Definition: VectorTag.h:15
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition: SubProblem.C:139
Key structure for APIs adding/caching local element residuals/Jacobians.
Definition: Assembly.h:812

◆ setResidual() [1/3]

template<typename T >
void TaggingInterface::setResidual ( SystemBase sys,
const T &  residual,
MooseVariableFE< T > &  var 
)
protected

Set residual using the variables' insertion API.

Definition at line 539 of file TaggingInterface.h.

Referenced by ArrayNodalBC::computeResidual(), VectorNodalBC::computeResidual(), and NodalBC::computeResidual().

540 {
541  for (const auto tag_id : _vector_tags)
542  if (sys.hasVector(tag_id))
543  var.insertNodalValue(sys.getVector(tag_id), residual);
544 }
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:880
void insertNodalValue(NumericVector< Number > &residual, const OutputData &v)
Write a nodal value to the passed-in solution vector.
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition: SystemBase.C:889

◆ setResidual() [2/3]

void TaggingInterface::setResidual ( SystemBase sys,
Real  residual,
dof_id_type  dof_index 
)
inlineprotected

Set residual at a specified degree of freedom index.

Definition at line 547 of file TaggingInterface.h.

548 {
549  for (const auto tag_id : _vector_tags)
550  if (sys.hasVector(tag_id))
551  sys.getVector(tag_id).set(dof_index, residual);
552 }
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:880
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
virtual void set(const numeric_index_type i, const Number value)=0
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition: SystemBase.C:889

◆ setResidual() [3/3]

template<typename SetResidualFunctor >
void TaggingInterface::setResidual ( SystemBase sys,
SetResidualFunctor  set_residual_functor 
)
protected

Set residuals using the provided functor.

Definition at line 556 of file TaggingInterface.h.

557 {
558  for (const auto tag_id : _vector_tags)
559  if (sys.hasVector(tag_id))
560  set_residual_functor(sys.getVector(tag_id));
561 }
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:880
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition: SystemBase.C:889

◆ useMatrixTag() [1/2]

void TaggingInterface::useMatrixTag ( const TagName &  tag_name,
MatrixTagsKey   
)

Definition at line 162 of file TaggingInterface.C.

163 {
164  if (!_subproblem.matrixTagExists(tag_name))
165  mooseError("Matrix tag ", tag_name, " does not exist in system");
166 
167  _matrix_tags.insert(_subproblem.getMatrixTagID(tag_name));
168 }
SubProblem & _subproblem
SubProblem that contains tag info.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:299
virtual TagID getMatrixTagID(const TagName &tag_name) const
Get a TagID from a TagName.
Definition: SubProblem.C:320
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
virtual bool matrixTagExists(const TagName &tag_name) const
Check to see if a particular Tag exists.
Definition: SubProblem.C:306

◆ useMatrixTag() [2/2]

void TaggingInterface::useMatrixTag ( TagID  tag_id,
MatrixTagsKey   
)

Definition at line 180 of file TaggingInterface.C.

181 {
182  if (!_subproblem.matrixTagExists(tag_id))
183  mooseError("Matrix tag ", tag_id, " does not exist in system");
184 
185  _matrix_tags.insert(tag_id);
186 }
SubProblem & _subproblem
SubProblem that contains tag info.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:299
std::set< TagID > _matrix_tags
The matrices this Kernel will contribute to.
virtual bool matrixTagExists(const TagName &tag_name) const
Check to see if a particular Tag exists.
Definition: SubProblem.C:306

◆ useVectorTag() [1/2]

void TaggingInterface::useVectorTag ( const TagName &  tag_name,
VectorTagsKey   
)

Definition at line 153 of file TaggingInterface.C.

154 {
155  if (!_subproblem.vectorTagExists(tag_name))
156  mooseError("Vector tag ", tag_name, " does not exist in system");
157 
158  _vector_tags.insert(_subproblem.getVectorTagID(tag_name));
159 }
virtual TagID getVectorTagID(const TagName &tag_name) const
Get a TagID from a TagName.
Definition: SubProblem.C:181
SubProblem & _subproblem
SubProblem that contains tag info.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:299
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:173

◆ useVectorTag() [2/2]

void TaggingInterface::useVectorTag ( TagID  tag_id,
VectorTagsKey   
)

Definition at line 171 of file TaggingInterface.C.

172 {
173  if (!_subproblem.vectorTagExists(tag_id))
174  mooseError("Vector tag ", tag_id, " does not exist in system");
175 
176  _vector_tags.insert(tag_id);
177 }
SubProblem & _subproblem
SubProblem that contains tag info.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:299
std::set< TagID > _vector_tags
The residual tag ids this Kernel will contribute to.
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:173

◆ validParams()

InputParameters TaggingInterface::validParams ( )
static

Definition at line 19 of file TaggingInterface.C.

Referenced by LinearSystemContributionObject::validParams(), ResidualObject::validParams(), LinearFVBoundaryCondition::validParams(), FVBoundaryCondition::validParams(), and FVInterfaceKernel::validParams().

20 {
21 
23 
24  // These are the default names for tags, but users will be able to add their own
25  MultiMooseEnum vtags("nontime time", "nontime", true);
26  MultiMooseEnum mtags("nontime system", "system", true);
27 
28  params.addPrivateParam<bool>("matrix_only", false);
29 
30  params.addParam<MultiMooseEnum>(
31  "vector_tags", vtags, "The tag for the vectors this Kernel should fill");
32 
33  params.addParam<MultiMooseEnum>(
34  "matrix_tags", mtags, "The tag for the matrices this Kernel should fill");
35 
36  params.addParam<std::vector<TagName>>("extra_vector_tags",
37  "The extra tags for the vectors this Kernel should fill");
38 
39  params.addParam<std::vector<TagName>>(
40  "absolute_value_vector_tags",
41  "The tags for the vectors this residual object should fill with the "
42  "absolute value of the residual contribution");
43 
44  params.addParam<std::vector<TagName>>("extra_matrix_tags",
45  "The extra tags for the matrices this Kernel should fill");
46 
47  params.addParamNamesToGroup(
48  "vector_tags matrix_tags extra_vector_tags extra_matrix_tags absolute_value_vector_tags",
49  "Tagging");
50 
51  return params;
52 }
void addPrivateParam(const std::string &name, const T &value)
These method add a parameter to the InputParameters object which can be retrieved like any other para...
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
InputParameters emptyInputParameters()
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an option parameter and a documentation string to the InputParameters object...
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
This method takes a space delimited list of parameter names and adds them to the specified group name...

Friends And Related Function Documentation

◆ NonlinearSystemBase::constraintJacobians

Member Data Documentation

◆ _abs_vector_tags

std::set<TagID> TaggingInterface::_abs_vector_tags
private

◆ _absolute_residuals

std::vector<Real> TaggingInterface::_absolute_residuals
private

A container to hold absolute values of residuals passed into addResiduals.

We maintain this data member to avoid constant dynamic heap allocations

Definition at line 396 of file TaggingInterface.h.

Referenced by addResiduals(), and addResidualsWithoutConstraints().

◆ _absre_blocks

std::vector<DenseVector<Number> *> TaggingInterface::_absre_blocks
private

◆ _ke_blocks

std::vector<DenseMatrix<Number> *> TaggingInterface::_ke_blocks
private

◆ _local_ke

DenseMatrix<Number> TaggingInterface::_local_ke
protected

Holds local Jacobian entries as they are accumulated by this Kernel.

Definition at line 335 of file TaggingInterface.h.

Referenced by accumulateTaggedLocalMatrix(), assignTaggedLocalMatrix(), ADDGKernel::computeElemNeighJacobian(), DGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), VectorTimeDerivative::computeJacobian(), ScalarKernel::computeJacobian(), MassLumpedTimeDerivative::computeJacobian(), TimeDerivative::computeJacobian(), VectorKernel::computeJacobian(), Kernel::computeJacobian(), ODEKernel::computeJacobian(), ArrayKernel::computeJacobian(), IntegratedBC::computeJacobian(), VectorIntegratedBC::computeJacobian(), EigenKernel::computeJacobian(), ArrayIntegratedBC::computeJacobian(), NodalEqualValueConstraint::computeJacobian(), NonlocalIntegratedBC::computeJacobian(), KernelGrad::computeJacobian(), KernelValue::computeJacobian(), NonlocalKernel::computeJacobian(), MortarConstraint::computeJacobian(), NodeElemConstraint::computeJacobian(), NodeFaceConstraint::computeJacobian(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayDGLowerDKernel::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), Kernel::computeOffDiagJacobian(), VectorKernel::computeOffDiagJacobian(), ArrayKernel::computeOffDiagJacobian(), EigenKernel::computeOffDiagJacobian(), VectorIntegratedBC::computeOffDiagJacobian(), IntegratedBC::computeOffDiagJacobian(), ArrayIntegratedBC::computeOffDiagJacobian(), NonlocalKernel::computeOffDiagJacobian(), NonlocalIntegratedBC::computeOffDiagJacobian(), KernelValue::computeOffDiagJacobian(), KernelGrad::computeOffDiagJacobian(), NodeElemConstraint::computeOffDiagJacobian(), NodeFaceConstraint::computeOffDiagJacobian(), ODEKernel::computeOffDiagJacobianScalar(), VectorKernel::computeOffDiagJacobianScalar(), ArrayKernel::computeOffDiagJacobianScalar(), IntegratedBC::computeOffDiagJacobianScalar(), VectorIntegratedBC::computeOffDiagJacobianScalar(), Kernel::computeOffDiagJacobianScalar(), ArrayIntegratedBC::computeOffDiagJacobianScalar(), ScalarLagrangeMultiplier::computeOffDiagJacobianScalar(), MortarScalarBase::computeOffDiagJacobianScalar(), KernelScalarBase::computeOffDiagJacobianScalarLocal(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), MortarScalarBase::computeScalarJacobian(), KernelScalarBase::computeScalarJacobian(), MortarScalarBase::computeScalarOffDiagJacobian(), KernelScalarBase::computeScalarOffDiagJacobian(), KernelScalarBase::computeScalarOffDiagJacobianScalar(), MortarScalarBase::computeScalarOffDiagJacobianScalar(), ConservativeAdvection::fullUpwind(), prepareMatrixTag(), prepareMatrixTagLower(), and prepareMatrixTagNeighbor().

◆ _local_re

DenseVector<Number> TaggingInterface::_local_re
protected

Holds local residual entries as they are accumulated by this Kernel.

Definition at line 332 of file TaggingInterface.h.

Referenced by accumulateTaggedLocalResidual(), FVInterfaceKernel::addResidual(), assignTaggedLocalResidual(), ADDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), DGLowerDKernel::computeLowerDResidual(), ArrayDGLowerDKernel::computeLowerDResidual(), ScalarKernel::computeResidual(), VectorKernel::computeResidual(), Kernel::computeResidual(), LowerDIntegratedBC::computeResidual(), ArrayKernel::computeResidual(), TimeKernel::computeResidual(), ODEKernel::computeResidual(), ODETimeKernel::computeResidual(), VectorTimeKernel::computeResidual(), ADScalarKernel::computeResidual(), ArrayLowerDIntegratedBC::computeResidual(), VectorIntegratedBC::computeResidual(), IntegratedBC::computeResidual(), ArrayIntegratedBC::computeResidual(), EigenKernel::computeResidual(), NodalEqualValueConstraint::computeResidual(), ADMortarConstraint::computeResidual(), FVBoundaryScalarLagrangeMultiplierConstraint::computeResidual(), FVScalarLagrangeMultiplierConstraint::computeResidual(), FVFluxBC::computeResidual(), MortarConstraint::computeResidual(), KernelGrad::computeResidual(), KernelValue::computeResidual(), FVElementalKernel::computeResidual(), NodeElemConstraint::computeResidual(), FVFluxKernel::computeResidual(), NodeFaceConstraint::computeResidual(), ConservativeAdvection::fullUpwind(), prepareVectorTagInternal(), prepareVectorTagLower(), and prepareVectorTagNeighbor().

◆ _matrix_tags

std::set<TagID> TaggingInterface::_matrix_tags
private

◆ _moose_object

const MooseObject& TaggingInterface::_moose_object
private

Moose objct this tag works on.

Definition at line 380 of file TaggingInterface.h.

Referenced by TaggingInterface().

◆ _non_ref_abs_vector_tags

std::set<TagID> TaggingInterface::_non_ref_abs_vector_tags
private

A set to hold absolute value vector tags excluding the reference residual tag.

If there is no reference residual problem, this container is the same as _abs_vector_tags;

Definition at line 367 of file TaggingInterface.h.

Referenced by prepareVectorTag(), and TaggingInterface().

◆ _non_ref_vector_tags

std::set<TagID> TaggingInterface::_non_ref_vector_tags
private

A set to hold vector tags excluding the reference residual tag.

If there is no reference residual problem, this container is the same as _vector_tags;

Definition at line 363 of file TaggingInterface.h.

Referenced by prepareVectorTag(), and TaggingInterface().

◆ _nonlocal_ke

DenseMatrix<Number> TaggingInterface::_nonlocal_ke
protected

◆ _re_blocks

std::vector<DenseVector<Number> *> TaggingInterface::_re_blocks
private

◆ _ref_abs_vector_tags

std::set<TagID> TaggingInterface::_ref_abs_vector_tags
private

A set of either size 1 or 0.

If we have a reference residual problem and _abs_vector_tags holds the reference vector tag, then this set holds the reference vector tags, otherwise it holds nothing

Definition at line 377 of file TaggingInterface.h.

Referenced by prepareVectorTag(), and TaggingInterface().

◆ _ref_vector_tags

std::set<TagID> TaggingInterface::_ref_vector_tags
private

A set of either size 1 or 0.

If we have a reference residual problem and _vector_tags holds the reference vector tag, then this set holds the reference vector tags, otherwise it holds nothing

Definition at line 372 of file TaggingInterface.h.

Referenced by prepareVectorTag(), and TaggingInterface().

◆ _subproblem

SubProblem& TaggingInterface::_subproblem
protected

◆ _tag_params

const InputParameters& TaggingInterface::_tag_params
private

Parameters from moose object.

Definition at line 383 of file TaggingInterface.h.

Referenced by TaggingInterface().

◆ _vector_tags

std::set<TagID> TaggingInterface::_vector_tags
private

The documentation for this class was generated from the following files: