18 "mode_mixity_ratio cohesive_damage local_normal_jump local_tangential_jump "
19 "local_tangential_jump_1 local_tangential_jump_2 local_tangential_jump_effective "
20 "cohesive_traction_normal cohesive_traction_tangential_magnitude "
21 "cohesive_traction_tangential_1 cohesive_traction_tangential_2 "
22 "cohesive_traction_effective");
29 "Populates an auxiliary variable with mortar cohesive zone model quantities.");
31 "cohesive_zone_quantity",
33 "The desired cohesive zone model quantity to output as an auxiliary variable.");
35 "The mortar cohesive zone modeling user object to get "
36 "values from. Note that the user object "
37 "must implement the corresponding getter function.");
45 _cohesive_zone_quantity(
47 _user_object(getUserObject<
UserObject>(
"user_object")),
51 {
"BilinearMixedModeCohesiveZoneModel",
55 {
"BilinearMixedModeCohesiveZoneModel",
59 {
"BilinearMixedModeCohesiveZoneModel",
63 {
"BilinearMixedModeCohesiveZoneModel",
67 {
"BilinearMixedModeCohesiveZoneModel",
71 {
"BilinearMixedModeCohesiveZoneModel",
75 {
"BilinearMixedModeCohesiveZoneModel",
80 {
"BilinearMixedModeCohesiveZoneModel",
84 {
"BilinearMixedModeCohesiveZoneModel",
89 {
"BilinearMixedModeCohesiveZoneModel",
93 {
"BilinearMixedModeCohesiveZoneModel",
97 {
"BilinearMixedModeCohesiveZoneModel",
102 mooseError(
"This auxiliary kernel requires nodal variables to obtain contact pressure values");
105 const auto it = _outputs.find(_cohesive_zone_quantity);
106 if (it == _outputs.end())
107 mooseError(
"Internal error: Contact quantity request in PressureMortarUserObjectAux is not "
109 if (!std::get<1>(it->second))
110 paramError(
"user_object",
112 _cohesive_zone_quantities.getNames()[
static_cast<int>(it->first)],
113 "' quantity is only provided by a '",
114 std::get<0>(it->second),
115 "' or derived object.");
registerMooseObject("ContactApp", CohesiveZoneMortarUserObjectAux)
void mooseError(Args &&... args)
const ExecFlagType EXEC_TIMESTEP_END
const Node *const & _current_node
static InputParameters validParams()
User object that computes bilinear mixed mode traction separation law.
Real getLocalDisplacementTangentialOne(const Node *const node) const
Real getCohesiveDamage(const Node *const node) const
Real getLocalDisplacementTangential(const Node *const node) const
Real getCohesiveTractionTangentialMagnitude(const Node *const node) const
Real getLocalDisplacementTangentialEffective(const Node *const node) const
Real getCohesiveTractionTangentialTwo(const Node *const node) const
Real getCohesiveTractionNormal(const Node *const node) const
Real getModeMixityRatio(const Node *const node) const
Real getLocalDisplacementNormal(const Node *const node) const
Real getCohesiveTractionTangentialOne(const Node *const node) const
Real getCohesiveTractionEffective(const Node *const node) const
Real getLocalDisplacementTangentialTwo(const Node *const node) const
Auxiliary kernel to output mortar cohesive zone model quantities of interest.
static const MooseEnum _cohesive_zone_quantities
Available cohesive zone model quantities.
const BilinearMixedModeCohesiveZoneModel * _cohesive_zone_uo
Cast pointers to specific UOs.
std::map< CohesiveQuantityEnum, std::tuple< std::string, const void *, std::function< Real(void)> > > _outputs
Definition of the output quantities and.
CohesiveQuantityEnum
What type of cohesive zone quantity we are querying.
@ LOCAL_TANGENTIAL_JUMP_TWO
@ COHESIVE_TRACTION_NORMAL
@ LOCAL_TANGENTIAL_JUMP_ONE
@ COHESIVE_TRACTION_EFFECTIVE
@ COHESIVE_TRACTION_TANGENTIAL_TWO
@ COHESIVE_TRACTION_TANGENTIAL_ONE
@ COHESIVE_TRACTION_TANGENTIAL_MAGNITUDE
@ LOCAL_TANGENTIAL_JUMP_EFFECTIVE
const CohesiveQuantityEnum _cohesive_zone_quantity
What penalty mortar contact quantity we'd like to output.
CohesiveZoneMortarUserObjectAux(const InputParameters ¶meters)
virtual Real computeValue() override
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real