Functions | |
void | projectQPoints3d (const Elem *msm_elem, const Elem *primal_elem, unsigned int sub_elem_index, const QBase &qrule_msm, std::vector< Point > &q_pts) |
3D projection operator for mapping qpoints on mortar segments to secondary or primary elements More... | |
template<typename Iterators , typename Consumers , typename ActionFunctor > | |
void | loopOverMortarSegments (const Iterators &secondary_elems_to_mortar_segments, Assembly &assembly, SubProblem &subproblem, FEProblemBase &fe_problem, const AutomaticMortarGeneration &amg, const bool displaced, const Consumers &consumers, const THREAD_ID tid, const std::map< SubdomainID, std::deque< MaterialBase *>> &secondary_ip_sub_to_mats, const std::map< SubdomainID, std::deque< MaterialBase *>> &primary_ip_sub_to_mats, const std::deque< MaterialBase *> &secondary_boundary_mats, const ActionFunctor act, const bool reinit_mortar_user_objects) |
This method will loop over pairs of secondary elements and their corresponding mortar segments, reinitialize all finite element shape functions, variables, and material properties, and then call a provided action function for each mortar segment. More... | |
template<typename Consumers > | |
void | setupMortarMaterials (const Consumers &consumers, FEProblemBase &fe_problem, const AutomaticMortarGeneration &amg, const THREAD_ID tid, std::map< SubdomainID, std::deque< MaterialBase *>> &secondary_ip_sub_to_mats, std::map< SubdomainID, std::deque< MaterialBase *>> &primary_ip_sub_to_mats, std::deque< MaterialBase *> &secondary_boundary_mats) |
This function creates containers of materials necessary to execute the mortar method for a supplied set of consumers. More... | |
void Moose::Mortar::loopOverMortarSegments | ( | const Iterators & | secondary_elems_to_mortar_segments, |
Assembly & | assembly, | ||
SubProblem & | subproblem, | ||
FEProblemBase & | fe_problem, | ||
const AutomaticMortarGeneration & | amg, | ||
const bool | displaced, | ||
const Consumers & | consumers, | ||
const THREAD_ID | tid, | ||
const std::map< SubdomainID, std::deque< MaterialBase *>> & | secondary_ip_sub_to_mats, | ||
const std::map< SubdomainID, std::deque< MaterialBase *>> & | primary_ip_sub_to_mats, | ||
const std::deque< MaterialBase *> & | secondary_boundary_mats, | ||
const ActionFunctor | act, | ||
const bool | reinit_mortar_user_objects | ||
) |
This method will loop over pairs of secondary elements and their corresponding mortar segments, reinitialize all finite element shape functions, variables, and material properties, and then call a provided action function for each mortar segment.
secondary_elems_to_mortar_segments | This is a container of iterators. Each iterator should point to a pair. The first member of the pair should be a pointer to a secondary face element and the second member of the pair should correspond to a container of mortar segment element pointers that correspond to the secondary face element. |
assembly | The object we will to use to reinitalize finite element data |
subproblem | The object we will use to reinitialize variables |
fe_problem | The object we will use to reinitialize material properties |
amg | The mortar mesh generation object which holds all the mortar mesh data |
displaced | Whether the mortar mesh was built from a displaced parent mesh |
consumers | A container of objects that are going to be using all the data that we are reinitializing within this function. This may be, for instance, a container of mortar constraints or auxiliary kernels. This consumers parameter is important as it allows us to build up variable and material property dependencies that we must make sure we reinit |
act | The action functor that we will call for each mortar segment after we have reinitalized all of our prereq data. This functor may, for instance, call computeResidual or computeJacobian on mortar constraints, or computeValue for an auxiliary kernel |
Definition at line 69 of file MortarUtils.h.
Referenced by MortarNodalAuxKernelTempl< ComputeValueType >::compute(), MortarUserObjectThread::operator()(), and ComputeMortarFunctor::operator()().
void Moose::Mortar::projectQPoints3d | ( | const Elem * | msm_elem, |
const Elem * | primal_elem, | ||
unsigned int | sub_elem_index, | ||
const QBase & | qrule_msm, | ||
std::vector< Point > & | q_pts | ||
) |
3D projection operator for mapping qpoints on mortar segments to secondary or primary elements
msm_elem | The mortar segment element that we will be mapping quadrature points from |
primal_elem | The "persistent" mesh element (e.g. it exists on the simulation's MooseMesh) that we will be mapping quadrature points for. This can be either an element on the secondary or primary face |
sub_elem_index | We will call msm_elem->get_extra_integer(sub_elem_index) in the implementation in order to determine which sub-element of the primal element the mortar segment element corresponds to. This sub_elem_index should correspond to the secondary element index if primal_elem is a secondary face element and the primary element index if primal_elem is a primary face element |
qrule_msm | The rule that governs quadrature on the mortar segment element |
q_pts | The output of this function. This will correspond to the the (reference space) quadrature points that we wish to evaluate shape functions, etc., at on the primal element |
Definition at line 26 of file MortarUtils.C.
Referenced by loopOverMortarSegments().
void Moose::Mortar::setupMortarMaterials | ( | const Consumers & | consumers, |
FEProblemBase & | fe_problem, | ||
const AutomaticMortarGeneration & | amg, | ||
const THREAD_ID | tid, | ||
std::map< SubdomainID, std::deque< MaterialBase *>> & | secondary_ip_sub_to_mats, | ||
std::map< SubdomainID, std::deque< MaterialBase *>> & | primary_ip_sub_to_mats, | ||
std::deque< MaterialBase *> & | secondary_boundary_mats | ||
) |
This function creates containers of materials necessary to execute the mortar method for a supplied set of consumers.
consumers | The objects that we're building the material dependencies for. This could be a container of mortar constraints or a "mortar" auxiliary kernel for example |
fe_problem | The finite element problem that we'll be querying for material warehouses |
tid | The thread ID that we will use for pulling the material warehouse |
secondary_ip_sub_to_mats | A map from the secondary interior parent subdomain IDs to the required secondary block materials we will need to evaluate for the consumers |
primary_ip_sub_to_mats | A map from the primary interior parent subdomain IDs to the required primary block materials we will need to evaluate for the consumers |
secondary_boundary_mats | The secondary boundary materials we will need to evaluate for the consumers |
Definition at line 316 of file MortarUtils.h.
Referenced by ComputeMortarFunctor::ComputeMortarFunctor(), MortarNodalAuxKernelTempl< ComputeValueType >::initialSetup(), and MortarUserObjectThread::MortarUserObjectThread().