https://mooseframework.inl.gov
Public Member Functions | Private Member Functions | Private Attributes | List of all members
MooseVariableDependencyInterface Class Reference

#include <MooseVariableDependencyInterface.h>

Inheritance diagram for MooseVariableDependencyInterface:
[legend]

Public Member Functions

 MooseVariableDependencyInterface (const MooseObject *)
 
 MooseVariableDependencyInterface (const MooseVariableDependencyInterface &, const Moose::Kokkos::FunctorCopy &key)
 Special constructor used for Kokkos functor copy during parallel dispatch. More...
 
const std::set< MooseVariableFieldBase * > & getMooseVariableDependencies () const
 Retrieve the set of MooseVariableFieldBase that this object depends on. More...
 
template<typename DofObjectType >
std::set< MooseVariableFieldBase * > checkAllVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase *> &vars_to_omit={})
 Check whether all of the variable dependencies have degree of freedom indices on the supplied degree of freedom object. More...
 
virtual std::set< MooseVariableFieldBase * > checkVariables (const libMesh::Node &node, const std::set< MooseVariableFieldBase *> &vars_to_check)
 Check whether all of the supplied variables have degree of freedom indices on the supplied node. More...
 
std::set< MooseVariableFieldBase * > checkVariables (const libMesh::Elem &element, const std::set< MooseVariableFieldBase *> &vars_to_check)
 Check whether all of the supplied variables have degree of freedom indices on the supplied element. More...
 
void addMooseVariableDependency (MooseVariableFieldBase *var)
 Call this function to add the passed in MooseVariableFieldBase as a variable that this object depends on. More...
 
void addMooseVariableDependency (const std::vector< MooseVariableFieldBase *> &vars)
 

Private Member Functions

template<typename DofObjectType >
std::set< MooseVariableFieldBase * > checkVariablesHelper (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase *> &vars_to_check)
 Helper method for checking variables for dof indices. More...
 

Private Attributes

std::set< MooseVariableFieldBase * > _moose_variable_dependencies
 
std::vector< libMesh::dof_id_type_dof_indices
 A container for holding dof indices in order to avoid constant memory reallocation. More...
 

Detailed Description

Definition at line 27 of file MooseVariableDependencyInterface.h.

Constructor & Destructor Documentation

◆ MooseVariableDependencyInterface() [1/2]

MooseVariableDependencyInterface::MooseVariableDependencyInterface ( const MooseObject )

Definition at line 22 of file MooseVariableDependencyInterface.C.

22 {}

◆ MooseVariableDependencyInterface() [2/2]

MooseVariableDependencyInterface::MooseVariableDependencyInterface ( const MooseVariableDependencyInterface ,
const Moose::Kokkos::FunctorCopy key 
)

Special constructor used for Kokkos functor copy during parallel dispatch.

Definition at line 25 of file MooseVariableDependencyInterface.C.

27 {
28 }

Member Function Documentation

◆ addMooseVariableDependency() [1/2]

void MooseVariableDependencyInterface::addMooseVariableDependency ( MooseVariableFieldBase var)
inline

Call this function to add the passed in MooseVariableFieldBase as a variable that this object depends on.

Definition at line 94 of file MooseVariableDependencyInterface.h.

Referenced by ADArrayKernel::ADArrayKernel(), ADArrayNodalKernel::ADArrayNodalKernel(), ADDGKernel::ADDGKernel(), ADDiracKernel::ADDiracKernel(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADInterfaceKernelTempl< T >::ADInterfaceKernelTempl(), ADKernelTempl< T >::ADKernelTempl(), ADNodalKernel::ADNodalKernel(), ArrayDGKernel::ArrayDGKernel(), ArrayIntegratedBC::ArrayIntegratedBC(), ArrayKernel::ArrayKernel(), ArrayNodalBC::ArrayNodalBC(), ArrayNodalKernel::ArrayNodalKernel(), AuxKernelBase::AuxKernelBase(), AuxNodalScalarKernel::AuxNodalScalarKernel(), CoupleableMooseVariableDependencyIntermediateInterface::CoupleableMooseVariableDependencyIntermediateInterface(), CoupleableMooseVariableDependencyIntermediateInterface::coupledArrayValueByName(), CoupleableMooseVariableDependencyIntermediateInterface::coupledValueByName(), DGKernel::DGKernel(), DiffusionLHDGAssemblyHelper::DiffusionLHDGAssemblyHelper(), DiracKernelTempl< T >::DiracKernelTempl(), ElemElemConstraint::ElemElemConstraint(), ElementIndicator::ElementIndicator(), ElementIntegralArrayVariablePostprocessor::ElementIntegralArrayVariablePostprocessor(), ElementIntegralVariablePostprocessor::ElementIntegralVariablePostprocessor(), ElementIntegralVariableUserObject::ElementIntegralVariableUserObject(), ElementVariablePostprocessor::ElementVariablePostprocessor(), FVBoundaryCondition::FVBoundaryCondition(), FVElementalKernel::FVElementalKernel(), FVInterfaceKernel::FVInterfaceKernel(), IntegratedBC::IntegratedBC(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), InterfaceMaterial::InterfaceMaterial(), InternalSideIndicatorBase::InternalSideIndicatorBase(), InternalSideIndicatorTempl< ComputeValueType >::InternalSideIndicatorTempl(), InternalSideIntegralVariablePostprocessor::InternalSideIntegralVariablePostprocessor(), IPHDGAssemblyHelper::IPHDGAssemblyHelper(), Kernel::Kernel(), LinearFVBoundaryCondition::LinearFVBoundaryCondition(), LinearFVKernel::LinearFVKernel(), Marker::Marker(), Material::Material(), MortarConstraintBase::MortarConstraintBase(), NeighborCoupleableMooseVariableDependencyIntermediateInterface::NeighborCoupleableMooseVariableDependencyIntermediateInterface(), NodalBC::NodalBC(), NodalConstraint::NodalConstraint(), NodalKernel::NodalKernel(), NodalScalarKernel::NodalScalarKernel(), NodeElemConstraintBase::NodeElemConstraintBase(), NodeFaceConstraint::NodeFaceConstraint(), PointVariableSamplerBase::PointVariableSamplerBase(), QuadraturePointMarker::QuadraturePointMarker(), SideIntegralVariablePostprocessor::SideIntegralVariablePostprocessor(), SideIntegralVariableUserObject::SideIntegralVariableUserObject(), SideVariablePostprocessor::SideVariablePostprocessor(), VectorIntegratedBC::VectorIntegratedBC(), VectorKernel::VectorKernel(), and VectorNodalBC::VectorNodalBC().

95  {
96  _moose_variable_dependencies.insert(var);
97  }
std::set< MooseVariableFieldBase * > _moose_variable_dependencies

◆ addMooseVariableDependency() [2/2]

void MooseVariableDependencyInterface::addMooseVariableDependency ( const std::vector< MooseVariableFieldBase *> &  vars)
inline

Definition at line 98 of file MooseVariableDependencyInterface.h.

99  {
100  _moose_variable_dependencies.insert(vars.begin(), vars.end());
101  }
char ** vars
std::set< MooseVariableFieldBase * > _moose_variable_dependencies

◆ checkAllVariables()

template<typename DofObjectType >
std::set< MooseVariableFieldBase * > MooseVariableDependencyInterface::checkAllVariables ( const DofObjectType &  dof_object,
const std::set< MooseVariableFieldBase *> &  vars_to_omit = {} 
)

Check whether all of the variable dependencies have degree of freedom indices on the supplied degree of freedom object.

Parameters
dof_objectThe degree of freedom object (an element or node) that we want to check for existence of variable degrees of freedom on
vars_to_omitVariables that we can omit from checking
Returns
Any variables that do not have degrees of freedom on the supplied degree of freedom object

Definition at line 119 of file MooseVariableDependencyInterface.h.

121 {
122  if (vars_to_omit.empty())
123  return checkVariables(dof_object, _moose_variable_dependencies);
124 
125  std::set<MooseVariableFieldBase *> vars_to_check;
126  std::set_difference(_moose_variable_dependencies.begin(),
128  vars_to_omit.begin(),
129  vars_to_omit.end(),
130  std::inserter(vars_to_check, vars_to_check.begin()));
131  return checkVariables(dof_object, vars_to_check);
132 }
virtual std::set< MooseVariableFieldBase * > checkVariables(const libMesh::Node &node, const std::set< MooseVariableFieldBase *> &vars_to_check)
Check whether all of the supplied variables have degree of freedom indices on the supplied node...
std::set< MooseVariableFieldBase * > _moose_variable_dependencies

◆ checkVariables() [1/2]

std::set< MooseVariableFieldBase * > MooseVariableDependencyInterface::checkVariables ( const libMesh::Node node,
const std::set< MooseVariableFieldBase *> &  vars_to_check 
)
inlinevirtual

Check whether all of the supplied variables have degree of freedom indices on the supplied node.

Parameters
nodeThe node that we want to check for existence of variable degrees of freedom on
vars_to_checkthe variables to check
Returns
Any variables that do not have degrees of freedom on the supplied degree of freedom object

Reimplemented in AuxKernelTempl< ComputeValueType >, AuxKernelTempl< RT >, AuxKernelTempl< RealVectorValue >, AuxKernelTempl< Real >, and NodalValueSampler.

Definition at line 135 of file MooseVariableDependencyInterface.h.

Referenced by checkAllVariables(), and AuxKernelTempl< Real >::checkVariables().

137 {
138  return checkVariablesHelper(node, vars_to_check);
139 }
std::set< MooseVariableFieldBase * > checkVariablesHelper(const DofObjectType &dof_object, const std::set< MooseVariableFieldBase *> &vars_to_check)
Helper method for checking variables for dof indices.

◆ checkVariables() [2/2]

std::set< MooseVariableFieldBase * > MooseVariableDependencyInterface::checkVariables ( const libMesh::Elem element,
const std::set< MooseVariableFieldBase *> &  vars_to_check 
)
inline

Check whether all of the supplied variables have degree of freedom indices on the supplied element.

Parameters
elementThe element that we want to check for existence of variable degrees of freedom on
vars_to_checkthe variables to check
Returns
Any variables that do not have degrees of freedom on the supplied degree of freedom object

Definition at line 142 of file MooseVariableDependencyInterface.h.

144 {
145  return checkVariablesHelper(element, vars_to_check);
146 }
std::set< MooseVariableFieldBase * > checkVariablesHelper(const DofObjectType &dof_object, const std::set< MooseVariableFieldBase *> &vars_to_check)
Helper method for checking variables for dof indices.

◆ checkVariablesHelper()

template<typename DofObjectType >
template std::set< MooseVariableFieldBase * > MooseVariableDependencyInterface::checkVariablesHelper ( const DofObjectType &  dof_object,
const std::set< MooseVariableFieldBase *> &  vars_to_check 
)
private

Helper method for checking variables for dof indices.

Returns the subset of variables of vars_to_check that do not have dof indices on the provided dof_object

Definition at line 33 of file MooseVariableDependencyInterface.C.

Referenced by AuxKernelTempl< Real >::checkVariables().

35 {
36  std::set<MooseVariableFieldBase *> vars_without_indices;
37  for (auto * const var : vars_to_check)
38  {
39  var->sys().dofMap().dof_indices(&dof_object, _dof_indices, var->number());
40  if (_dof_indices.empty())
41  vars_without_indices.insert(var);
42  }
43 
44  return vars_without_indices;
45 }
std::vector< libMesh::dof_id_type > _dof_indices
A container for holding dof indices in order to avoid constant memory reallocation.

◆ getMooseVariableDependencies()

const std::set<MooseVariableFieldBase *>& MooseVariableDependencyInterface::getMooseVariableDependencies ( ) const
inline

Retrieve the set of MooseVariableFieldBase that this object depends on.

Returns
The MooseVariableFieldBase that MUST be reinited before evaluating this object

Definition at line 45 of file MooseVariableDependencyInterface.h.

Referenced by ComputeUserObjectsThread::subdomainChanged(), and MooseObjectWarehouseBase< Indicator >::updateVariableDependencyHelper().

46  {
48  }
std::set< MooseVariableFieldBase * > _moose_variable_dependencies

Member Data Documentation

◆ _dof_indices

std::vector<libMesh::dof_id_type> MooseVariableDependencyInterface::_dof_indices
private

A container for holding dof indices in order to avoid constant memory reallocation.

Definition at line 114 of file MooseVariableDependencyInterface.h.

◆ _moose_variable_dependencies

std::set<MooseVariableFieldBase *> MooseVariableDependencyInterface::_moose_variable_dependencies
private

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