https://mooseframework.inl.gov
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
MortarConsumerInterface Class Reference

An interface for accessing mortar mesh data. More...

#include <MortarConsumerInterface.h>

Inheritance diagram for MortarConsumerInterface:
[legend]

Public Member Functions

 MortarConsumerInterface (const MooseObject *moose_object)
 
SubdomainID primarySubdomain () const
 
SubdomainID secondarySubdomain () const
 
bool onInterface (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

const std::set< SubdomainID > & getHigherDimSubdomainIDs () const
 
const std::set< BoundaryID > & getBoundaryIDs () const
 
const AutomaticMortarGenerationamg () const
 Retrieve the automatic mortar generation object associated with this constraint. More...
 
bool interpolateNormals () const
 Whether to interpolate the nodal normals (e.g. More...
 

Static Protected Member Functions

static void trimDerivative (dof_id_type remove_derivative_index, ADReal &dual_number)
 Get rid of AD derivative entries by dof index. More...
 
template<typename Variables , typename DualNumbers >
static void trimInteriorNodeDerivatives (const std::map< unsigned int, unsigned int > &primary_ip_lowerd_map, const Variables &moose_var, DualNumbers &ad_vars, const bool is_secondary)
 Get rid of interior node variable's derivatives. More...
 

Protected Attributes

FEProblemBase_mci_fe_problem
 
SubProblem_mci_subproblem
 
const THREAD_ID _mci_tid
 
MooseMesh_mci_mesh
 Mesh to query for boundary and subdomain ID information. More...
 
Assembly_mci_assembly
 
const MortarData_mortar_data
 A reference to the mortar data object that holds all the mortar mesh information. More...
 
const BoundaryID _secondary_id
 Boundary ID for the secondary surface. More...
 
const BoundaryID _primary_id
 Boundary ID for the primary surface. More...
 
const SubdomainID _secondary_subdomain_id
 Subdomain ID for the secondary surface. More...
 
const SubdomainID _primary_subdomain_id
 Subdomain ID for the primary surface. More...
 
std::set< BoundaryID_secondary_set
 the secondaryid set More...
 
std::set< BoundaryID_boundary_ids
 the union of the secondary and primary boundary ids More...
 
std::set< SubdomainID_higher_dim_subdomain_ids
 the higher dimensional subdomain ids corresponding to the interior parents More...
 
const bool _interpolate_normals
 Whether to interpolate the nodal normals. More...
 
const MooseArray< Point > & _phys_points_secondary
 The locations of the quadrature points on the interior secondary elements. More...
 
const MooseArray< Point > & _phys_points_primary
 The locations of the quadrature points on the interior primary elements. More...
 
const libMesh::QBase *const & _qrule_msm
 The quadrature rule on the mortar segment element. More...
 
const libMesh::QBase *const & _qrule_face
 The arbitrary quadrature rule on the lower dimensional secondary face. More...
 
Elem const *const & _lower_secondary_elem
 The secondary face lower dimensional element (not the mortar element!). More...
 
Elem const *const & _lower_primary_elem
 The primary face lower dimensional element (not the mortar element!). More...
 
const std::vector< Real > & _JxW_msm
 The element Jacobian times weights. More...
 
const Elem *const & _msm_elem
 The current mortar segment element. More...
 
std::vector< Point > _normals
 the normals More...
 

Private Member Functions

void setNormals ()
 Set the normals vector. More...
 

Private Attributes

const AutomaticMortarGeneration_amg
 

Friends

class ComputeMortarFunctor
 
class FEProblemBase
 
template<typename >
class MortarNodalAuxKernelTempl
 
class MortarUserObjectThread
 
void reinitMortarUserObjects (BoundaryID, BoundaryID, bool)
 Calls the reinitialization of mortar user objects. More...
 

Detailed Description

An interface for accessing mortar mesh data.

Note
mci is shorthand for mortar consumer interface, so _mci_problem indicates the mortar consumer interface's problem

Definition at line 35 of file MortarConsumerInterface.h.

Constructor & Destructor Documentation

◆ MortarConsumerInterface()

MortarConsumerInterface::MortarConsumerInterface ( const MooseObject moose_object)

Definition at line 105 of file MortarConsumerInterface.C.

106  : _mci_fe_problem(*moose_object->getCheckedPointerParam<FEProblemBase *>("_fe_problem_base")),
107  _mci_subproblem(*moose_object->getCheckedPointerParam<SubProblem *>("_subproblem")),
108  _mci_tid(moose_object->getParam<THREAD_ID>("_tid")),
110  // all geometric assembly information should be correct for nl system number 0
114  _mci_mesh.getBoundaryID(moose_object->getParam<BoundaryName>("secondary_boundary"))),
115  _primary_id(_mci_mesh.getBoundaryID(moose_object->getParam<BoundaryName>("primary_boundary"))),
117  _mci_mesh.getSubdomainID(moose_object->getParam<SubdomainName>("secondary_subdomain"))),
119  _mci_mesh.getSubdomainID(moose_object->getParam<SubdomainName>("primary_subdomain"))),
121  _interpolate_normals(moose_object->getParam<bool>("interpolate_normals")),
130 {
131  const bool displaced = moose_object->isParamValid("use_displaced_mesh")
132  ? moose_object->getParam<bool>("use_displaced_mesh")
133  : false;
134 
135  // Create the mortar interface if it hasn't already been created
137  std::make_pair(_primary_id, _secondary_id),
139  displaced,
140  moose_object->getParam<bool>("periodic"),
141  moose_object->getParam<bool>("debug_mesh"),
142  moose_object->getParam<bool>("correct_edge_dropping"),
143  moose_object->getParam<Real>("minimum_projection_angle"));
144 
146  std::make_pair(_primary_id, _secondary_id),
148  displaced);
149 
150  const auto & secondary_set = _mortar_data.getHigherDimSubdomainIDs(_secondary_subdomain_id);
151  const auto & primary_set = _mortar_data.getHigherDimSubdomainIDs(_primary_subdomain_id);
152 
153  std::set_union(secondary_set.begin(),
154  secondary_set.end(),
155  primary_set.begin(),
156  primary_set.end(),
157  std::inserter(_higher_dim_subdomain_ids, _higher_dim_subdomain_ids.begin()));
159 }
virtual MooseMesh & mesh()=0
const MortarData & mortarData() const
Returns the mortar data object.
const libMesh::QBase *const & qRuleFace() const
Returns the reference to the current quadrature being used on a current face.
Definition: Assembly.h:294
const BoundaryID _secondary_id
Boundary ID for the secondary surface.
const std::set< SubdomainID > & getHigherDimSubdomainIDs(SubdomainID lower_d_subdomain_id) const
Returns the higher dimensional subdomain ids of the interior parents of the given lower-d subdomain i...
Definition: MortarData.C:194
const AutomaticMortarGeneration * _amg
const libMesh::QBase *const & _qrule_face
The arbitrary quadrature rule on the lower dimensional secondary face.
const MooseArray< Point > & qPointsFaceNeighbor() const
Returns the reference to the current quadrature points being used on the neighbor face...
Definition: Assembly.h:500
const libMesh::QBase *const & qRuleMortar() const
Returns a reference to the quadrature rule for the mortar segments.
Definition: Assembly.h:683
const MooseArray< Point > & _phys_points_primary
The locations of the quadrature points on the interior primary elements.
std::set< SubdomainID > _higher_dim_subdomain_ids
the higher dimensional subdomain ids corresponding to the interior parents
Elem const *const & _lower_primary_elem
The primary face lower dimensional element (not the mortar element!).
const std::vector< Real > & _JxW_msm
The element Jacobian times weights.
const Elem *const & msmElem() const
Definition: Assembly.h:1926
const MortarData & _mortar_data
A reference to the mortar data object that holds all the mortar mesh information. ...
MooseMesh & _mci_mesh
Mesh to query for boundary and subdomain ID information.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
const libMesh::QBase *const & _qrule_msm
The quadrature rule on the mortar segment element.
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Elem const *const & _lower_secondary_elem
The secondary face lower dimensional element (not the mortar element!).
const Elem *const & _msm_elem
The current mortar segment element.
std::set< BoundaryID > _boundary_ids
the union of the secondary and primary boundary ids
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
const MooseArray< Point > & _phys_points_secondary
The locations of the quadrature points on the interior secondary elements.
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...
const BoundaryID _primary_id
Boundary ID for the primary surface.
const SubdomainID _primary_subdomain_id
Subdomain ID for the primary surface.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
const AutomaticMortarGeneration & getMortarInterface(const std::pair< BoundaryID, BoundaryID > &primary_secondary_boundary_pair, const std::pair< SubdomainID, SubdomainID > &primary_secondary_subdomain_pair, bool on_displaced) const
Return the undisplaced or displaced mortar generation object associated with the provided boundaries ...
const MooseArray< Point > & qPointsFace() const
Returns the reference to the current quadrature being used.
Definition: Assembly.h:306
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
void createMortarInterface(const std::pair< BoundaryID, BoundaryID > &primary_secondary_boundary_pair, const std::pair< SubdomainID, SubdomainID > &primary_secondary_subdomain_pair, bool on_displaced, bool periodic, const bool debug, const bool correct_edge_dropping, const Real minimum_projection_angle)
std::set< BoundaryID > _secondary_set
the secondaryid set
const SubdomainID _secondary_subdomain_id
Subdomain ID for the secondary surface.
const Elem *const & lowerDElem() const
Return the lower dimensional element.
Definition: Assembly.h:437
const Elem *const & neighborLowerDElem() const
Return the neighboring lower dimensional element.
Definition: Assembly.h:443
const bool _interpolate_normals
Whether to interpolate the nodal normals.
const std::vector< Real > & jxWMortar() const
Returns a reference to JxW for mortar segment elements.
Definition: Assembly.h:678
BoundaryID getBoundaryID(const BoundaryName &boundary_name) const
Get the associated BoundaryID for the boundary name.
Definition: MooseMesh.C:1689
unsigned int THREAD_ID
Definition: MooseTypes.h:209
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
Definition: MooseMesh.C:1728

Member Function Documentation

◆ amg()

const AutomaticMortarGeneration & MortarConsumerInterface::amg ( ) const
inlineprotected

Retrieve the automatic mortar generation object associated with this constraint.

Definition at line 189 of file MortarConsumerInterface.h.

Referenced by setNormals().

190 {
191  mooseAssert(_amg, "this should have been set in the constructor");
192  return *_amg;
193 }
const AutomaticMortarGeneration * _amg

◆ getBoundaryIDs()

const std::set<BoundaryID>& MortarConsumerInterface::getBoundaryIDs ( ) const
inlineprotected

Definition at line 62 of file MortarConsumerInterface.h.

62 { return _boundary_ids; }
std::set< BoundaryID > _boundary_ids
the union of the secondary and primary boundary ids

◆ getHigherDimSubdomainIDs()

const std::set<SubdomainID>& MortarConsumerInterface::getHigherDimSubdomainIDs ( ) const
inlineprotected

Definition at line 58 of file MortarConsumerInterface.h.

59  {
61  }
std::set< SubdomainID > _higher_dim_subdomain_ids
the higher dimensional subdomain ids corresponding to the interior parents

◆ interpolateNormals()

bool MortarConsumerInterface::interpolateNormals ( ) const
inlineprotected

Whether to interpolate the nodal normals (e.g.

classic idea of evaluating field at quadrature points). If this is set to false, then non-interpolated nodal normals will be used, and then the _normals member should be indexed with _i instead of _qp

Definition at line 74 of file MortarConsumerInterface.h.

Referenced by setNormals().

74 { return _interpolate_normals; }
const bool _interpolate_normals
Whether to interpolate the nodal normals.

◆ onInterface()

bool MortarConsumerInterface::onInterface ( BoundaryID  primary_boundary_id,
BoundaryID  secondary_boundary_id 
) const
inline
Returns
Whether this object lies on the given primary-secondary boundary pair

Definition at line 243 of file MortarConsumerInterface.h.

245 {
246  return (primary_boundary_id == _primary_id) && (secondary_boundary_id == _secondary_id);
247 }
const BoundaryID _secondary_id
Boundary ID for the secondary surface.
const BoundaryID _primary_id
Boundary ID for the primary surface.

◆ primarySubdomain()

SubdomainID MortarConsumerInterface::primarySubdomain ( ) const
inline
Returns
The primary lower dimensional subdomain id

Definition at line 45 of file MortarConsumerInterface.h.

45 { return _primary_subdomain_id; }
const SubdomainID _primary_subdomain_id
Subdomain ID for the primary surface.

◆ secondarySubdomain()

SubdomainID MortarConsumerInterface::secondarySubdomain ( ) const
inline
Returns
The secondary lower dimensional subdomain id

Definition at line 50 of file MortarConsumerInterface.h.

50 { return _secondary_subdomain_id; }
const SubdomainID _secondary_subdomain_id
Subdomain ID for the secondary surface.

◆ setNormals()

void MortarConsumerInterface::setNormals ( )
private

Set the normals vector.

Definition at line 162 of file MortarConsumerInterface.C.

163 {
164  if (interpolateNormals())
166  else
168 }
const libMesh::QBase *const & _qrule_face
The arbitrary quadrature rule on the lower dimensional secondary face.
std::vector< Point > getNodalNormals(const Elem &secondary_elem) const
Elem const *const & _lower_secondary_elem
The secondary face lower dimensional element (not the mortar element!).
const AutomaticMortarGeneration & amg() const
Retrieve the automatic mortar generation object associated with this constraint.
std::vector< Point > _normals
the normals
bool interpolateNormals() const
Whether to interpolate the nodal normals (e.g.
const std::vector< Point > & get_points() const
std::vector< Point > getNormals(const Elem &secondary_elem, const std::vector< Point > &xi1_pts) const
Compute the normals at given reference points on a secondary element.

◆ trimDerivative()

void MortarConsumerInterface::trimDerivative ( dof_id_type  remove_derivative_index,
ADReal dual_number 
)
staticprotected

Get rid of AD derivative entries by dof index.

Definition at line 171 of file MortarConsumerInterface.C.

Referenced by trimInteriorNodeDerivatives().

173 {
174  auto md_it = dual_number.derivatives().nude_data().begin();
175  auto mi_it = dual_number.derivatives().nude_indices().begin();
176 
177  auto d_it = dual_number.derivatives().nude_data().begin();
178 
179  for (auto i_it = dual_number.derivatives().nude_indices().begin();
180  i_it != dual_number.derivatives().nude_indices().end();
181  ++i_it, ++d_it)
182  if (*i_it != remove_derivative_index)
183  {
184  *mi_it = *i_it;
185  *md_it = *d_it;
186  ++mi_it;
187  ++md_it;
188  }
189 
190  std::size_t n_indices = md_it - dual_number.derivatives().nude_data().begin();
191  dual_number.derivatives().nude_indices().resize(n_indices);
192  dual_number.derivatives().nude_data().resize(n_indices);
193 }

◆ trimInteriorNodeDerivatives()

template<typename Variables , typename DualNumbers >
void MortarConsumerInterface::trimInteriorNodeDerivatives ( const std::map< unsigned int, unsigned int > &  primary_ip_lowerd_map,
const Variables &  moose_var,
DualNumbers &  ad_vars,
const bool  is_secondary 
)
staticprotected

Get rid of interior node variable's derivatives.

Definition at line 197 of file MortarConsumerInterface.h.

202 {
203  //
204  // Remove interior node variable's derivatives from AD objects.
205  //
206 
207  mooseAssert(moose_vars.size(), "Should have passed at least one variable");
208  const auto num_indices = is_secondary ? moose_vars[0]->dofIndices().size()
209  : moose_vars[0]->dofIndicesNeighbor().size();
210 #ifdef DEBUG
211  for (const auto i : make_range(std::size_t(1), moose_vars.size()))
212  if (auto * moose_var = moose_vars[i])
213  mooseAssert(is_secondary ? moose_var->dofIndices().size()
214  : moose_var->dofIndicesNeighbor().size() == num_indices,
215  "These must be the same for all passed in variables");
216 #endif
217 
218  for (const auto dof_index : make_range(num_indices))
219  if (!domain_ip_lowerd_map.count(dof_index))
220  {
221  for (const auto * const moose_var : moose_vars)
222  {
223  // It's valid for a user to pass a container that represents a LIBMESH_DIM vector of
224  // component variables for which one or two of the variables may be null depending on the
225  // mesh dimension in the simulation
226  if (!moose_var)
227  continue;
228 
229  mooseAssert(moose_var->isNodal(),
230  "Trimming of interior node's derivatives is only supported for Lagrange "
231  "elements in mortar objects");
232 
233  const auto remove_derivative_index = is_secondary
234  ? moose_var->dofIndices()[dof_index]
235  : moose_var->dofIndicesNeighbor()[dof_index];
236  for (auto & dual_number : dual_numbers)
237  trimDerivative(remove_derivative_index, dual_number);
238  }
239  }
240 }
static void trimDerivative(dof_id_type remove_derivative_index, ADReal &dual_number)
Get rid of AD derivative entries by dof index.
IntRange< T > make_range(T beg, T end)

◆ validParams()

InputParameters MortarConsumerInterface::validParams ( )
static

Definition at line 23 of file MortarConsumerInterface.C.

Referenced by MortarNodalAuxKernelTempl< ComputeValueType >::validParams(), MortarUserObject::validParams(), and MortarConstraintBase::validParams().

24 {
25  // Create InputParameters object that will be appended to the parameters for the inheriting object
27  // On a displaced mesh this will geometrically and algebraically ghost the entire interface
29  "AugmentSparsityOnInterface",
31  [](const InputParameters & obj_params, InputParameters & rm_params)
32  {
33  rm_params.set<bool>("use_displaced_mesh") = obj_params.get<bool>("use_displaced_mesh");
34  rm_params.set<BoundaryName>("secondary_boundary") =
35  obj_params.get<BoundaryName>("secondary_boundary");
36  rm_params.set<BoundaryName>("primary_boundary") =
37  obj_params.get<BoundaryName>("primary_boundary");
38  rm_params.set<SubdomainName>("secondary_subdomain") =
39  obj_params.get<SubdomainName>("secondary_subdomain");
40  rm_params.set<SubdomainName>("primary_subdomain") =
41  obj_params.get<SubdomainName>("primary_subdomain");
42  rm_params.set<bool>("ghost_point_neighbors") =
43  obj_params.get<bool>("ghost_point_neighbors");
44  rm_params.set<bool>("ghost_higher_d_neighbors") =
45  obj_params.get<bool>("ghost_higher_d_neighbors");
46  });
47 
48  params.addRequiredParam<BoundaryName>("primary_boundary",
49  "The name of the primary boundary sideset.");
50  params.addRequiredParam<BoundaryName>("secondary_boundary",
51  "The name of the secondary boundary sideset.");
52  params.addRequiredParam<SubdomainName>("primary_subdomain", "The name of the primary subdomain.");
53  params.addRequiredParam<SubdomainName>("secondary_subdomain",
54  "The name of the secondary subdomain.");
55  params.addParam<bool>(
56  "periodic",
57  false,
58  "Whether this constraint is going to be used to enforce a periodic condition. This has the "
59  "effect of changing the normals vector for projection from outward to inward facing");
60 
61  params.addParam<bool>(
62  "debug_mesh",
63  false,
64  "Whether this constraint is going to enable mortar segment mesh debug information. An exodus"
65  "file will be generated if the user sets this flag to true");
66 
67  params.addParam<bool>(
68  "correct_edge_dropping",
69  false,
70  "Whether to enable correct edge dropping treatment for mortar constraints. When disabled "
71  "any Lagrange Multiplier degree of freedom on a secondary element without full primary "
72  "contributions will be set (strongly) to 0.");
73 
74  params.addParam<bool>(
75  "interpolate_normals",
76  true,
77  "Whether to interpolate the nodal normals (e.g. classic idea of evaluating field at "
78  "quadrature points). If this is set to false, then non-interpolated nodal normals will be "
79  "used, and then the _normals member should be indexed with _i instead of _qp");
80 
81  params.addParam<bool>("ghost_point_neighbors",
82  false,
83  "Whether we should ghost point neighbors of secondary face elements, and "
84  "consequently also their mortar interface couples.");
85  params.addParam<Real>(
86  "minimum_projection_angle",
87  40.0,
88  "Parameter to control which angle (in degrees) is admissible for the creation of mortar "
89  "segments. If set to a value close to zero, very oblique projections are allowed, which "
90  "can result in mortar segments solving physics not meaningfully, and overprojection of "
91  "primary nodes onto the mortar segment mesh in extreme cases. This parameter is mostly "
92  "intended for mortar mesh debugging purposes in two dimensions.");
93 
94  params.addParam<bool>(
95  "ghost_higher_d_neighbors",
96  false,
97  "Whether we should ghost higher-dimensional neighbors. This is necessary when we are doing "
98  "second order mortar with finite volume primal variables, because in order for the method to "
99  "be second order we must use cell gradients, which couples in the neighbor cells.");
100 
101  return params;
102 }
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 & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
void addRelationshipManager(const std::string &name, Moose::RelationshipManagerType rm_type, Moose::RelationshipManagerInputParameterCallback input_parameter_callback=nullptr)
Tells MOOSE about a RelationshipManager that this object needs.
void addRequiredParam(const std::string &name, const std::string &doc_string)
This method adds a parameter and documentation string to the InputParameters object that will be extr...
InputParameters emptyInputParameters()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object...

Friends And Related Function Documentation

◆ ComputeMortarFunctor

friend class ComputeMortarFunctor
friend

Definition at line 174 of file MortarConsumerInterface.h.

◆ FEProblemBase

friend class FEProblemBase
friend

Definition at line 175 of file MortarConsumerInterface.h.

◆ MortarNodalAuxKernelTempl

template<typename >
friend class MortarNodalAuxKernelTempl
friend

Definition at line 178 of file MortarConsumerInterface.h.

◆ MortarUserObjectThread

friend class MortarUserObjectThread
friend

Definition at line 179 of file MortarConsumerInterface.h.

◆ reinitMortarUserObjects

void reinitMortarUserObjects ( BoundaryID  ,
BoundaryID  ,
bool   
)
friend

Calls the reinitialization of mortar user objects.

See also
FEProblemBase::reinitMortarUserObjects

Member Data Documentation

◆ _amg

const AutomaticMortarGeneration* MortarConsumerInterface::_amg
private

Definition at line 172 of file MortarConsumerInterface.h.

Referenced by amg().

◆ _boundary_ids

std::set<BoundaryID> MortarConsumerInterface::_boundary_ids
protected

the union of the secondary and primary boundary ids

Definition at line 120 of file MortarConsumerInterface.h.

Referenced by getBoundaryIDs().

◆ _higher_dim_subdomain_ids

std::set<SubdomainID> MortarConsumerInterface::_higher_dim_subdomain_ids
protected

the higher dimensional subdomain ids corresponding to the interior parents

Definition at line 123 of file MortarConsumerInterface.h.

Referenced by getHigherDimSubdomainIDs().

◆ _interpolate_normals

const bool MortarConsumerInterface::_interpolate_normals
protected

Whether to interpolate the nodal normals.

Definition at line 126 of file MortarConsumerInterface.h.

Referenced by interpolateNormals().

◆ _JxW_msm

const std::vector<Real>& MortarConsumerInterface::_JxW_msm
protected

◆ _lower_primary_elem

Elem const* const& MortarConsumerInterface::_lower_primary_elem
protected

The primary face lower dimensional element (not the mortar element!).

The mortar element lives on the secondary side of the mortar interface and may correspond to _lower_secondary_elem under the very specific circumstance that the nodes on the primary side of the mortar interface exactly project onto the secondary side of the mortar interface. In general projection of primary nodes will split the face elements on the secondary side of the interface. It is these split elements that are the mortar segment mesh elements

Definition at line 154 of file MortarConsumerInterface.h.

◆ _lower_secondary_elem

Elem const* const& MortarConsumerInterface::_lower_secondary_elem
protected

The secondary face lower dimensional element (not the mortar element!).

The mortar element lives on the secondary side of the mortar interface and may correspond to _lower_secondary_elem under the very specific circumstance that the nodes on the primary side of the mortar interface exactly project onto the secondary side of the mortar interface. In general projection of primary nodes will split the face elements on the secondary side of the interface. It is these split elements that are the mortar segment mesh elements

Definition at line 146 of file MortarConsumerInterface.h.

Referenced by setNormals().

◆ _mci_assembly

Assembly& MortarConsumerInterface::_mci_assembly
protected

Definition at line 98 of file MortarConsumerInterface.h.

◆ _mci_fe_problem

FEProblemBase& MortarConsumerInterface::_mci_fe_problem
protected

Definition at line 91 of file MortarConsumerInterface.h.

◆ _mci_mesh

MooseMesh& MortarConsumerInterface::_mci_mesh
protected

Mesh to query for boundary and subdomain ID information.

Definition at line 96 of file MortarConsumerInterface.h.

◆ _mci_subproblem

SubProblem& MortarConsumerInterface::_mci_subproblem
protected

Definition at line 92 of file MortarConsumerInterface.h.

◆ _mci_tid

const THREAD_ID MortarConsumerInterface::_mci_tid
protected

Definition at line 93 of file MortarConsumerInterface.h.

◆ _mortar_data

const MortarData& MortarConsumerInterface::_mortar_data
protected

A reference to the mortar data object that holds all the mortar mesh information.

Definition at line 102 of file MortarConsumerInterface.h.

◆ _msm_elem

const Elem* const& MortarConsumerInterface::_msm_elem
protected

The current mortar segment element.

Definition at line 160 of file MortarConsumerInterface.h.

◆ _normals

std::vector<Point> MortarConsumerInterface::_normals
protected

◆ _phys_points_primary

const MooseArray<Point>& MortarConsumerInterface::_phys_points_primary
protected

◆ _phys_points_secondary

const MooseArray<Point>& MortarConsumerInterface::_phys_points_secondary
protected

◆ _primary_id

const BoundaryID MortarConsumerInterface::_primary_id
protected

Boundary ID for the primary surface.

Definition at line 108 of file MortarConsumerInterface.h.

Referenced by onInterface().

◆ _primary_subdomain_id

const SubdomainID MortarConsumerInterface::_primary_subdomain_id
protected

Subdomain ID for the primary surface.

Definition at line 114 of file MortarConsumerInterface.h.

Referenced by primarySubdomain().

◆ _qrule_face

const libMesh::QBase* const& MortarConsumerInterface::_qrule_face
protected

The arbitrary quadrature rule on the lower dimensional secondary face.

Definition at line 138 of file MortarConsumerInterface.h.

Referenced by setNormals().

◆ _qrule_msm

const libMesh::QBase* const& MortarConsumerInterface::_qrule_msm
protected

◆ _secondary_id

const BoundaryID MortarConsumerInterface::_secondary_id
protected

Boundary ID for the secondary surface.

Definition at line 105 of file MortarConsumerInterface.h.

Referenced by MortarConsumerInterface(), and onInterface().

◆ _secondary_set

std::set<BoundaryID> MortarConsumerInterface::_secondary_set
protected

the secondaryid set

Definition at line 117 of file MortarConsumerInterface.h.

◆ _secondary_subdomain_id

const SubdomainID MortarConsumerInterface::_secondary_subdomain_id
protected

Subdomain ID for the secondary surface.

Definition at line 111 of file MortarConsumerInterface.h.

Referenced by secondarySubdomain().


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