https://mooseframework.inl.gov
ContactAction.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "Action.h"
13 #include "MooseTypes.h"
14 #include "MooseEnum.h"
15 
16 CreateMooseEnumClass(ContactModel, FRICTIONLESS, GLUED, COULOMB);
17 CreateMooseEnumClass(ContactFormulation,
18  RANFS,
19  KINEMATIC,
20  PENALTY,
21  AUGMENTED_LAGRANGE,
22  TANGENTIAL_PENALTY,
23  MORTAR,
24  MORTAR_PENALTY);
25 CreateMooseEnumClass(ProximityMethod, NODE, CENTROID);
26 
31 class ContactAction : public Action
32 {
33 public:
35 
36  ContactAction(const InputParameters & params);
37 
38  virtual void act() override;
39 
41  virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override;
42 
47  static MooseEnum getModelEnum();
48 
59  static MooseEnum getSystemEnum();
60 
65  static MooseEnum getSmoothingEnum();
66 
72 
78 
79 protected:
81  std::vector<std::pair<BoundaryName, BoundaryName>> _boundary_pairs;
82 
84  std::vector<BoundaryName> _automatic_pairing_boundaries;
85 
87  const ContactModel _model;
88 
90  const ContactFormulation _formulation;
91 
93  bool _use_dual;
94 
97 
99  const bool _mortar_dynamics;
100 
101  struct MortarInfo
102  {
105  std::string uo_name;
106  };
107 
109  std::map<std::pair<BoundaryName, BoundaryName>, const MortarInfo> _bnd_pair_to_mortar_info;
110 
111 private:
115  void addMortarContact();
119  void addNodeFaceContact();
127  void removeRepeatedPairs();
138 };
Action class for creating constraints, kernels, and user objects necessary for mechanical contact...
Definition: ContactAction.h:31
std::vector< std::pair< BoundaryName, BoundaryName > > _boundary_pairs
Primary/Secondary boundary name pairs for mechanical contact.
Definition: ContactAction.h:81
std::vector< BoundaryName > _automatic_pairing_boundaries
List of all possible boundaries for contact for automatic pairing (optional)
Definition: ContactAction.h:84
static MooseEnum getFormulationEnum()
Get contact formulation.
RelationshipManagerType
virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override
static InputParameters commonParameters()
Define parameters used by multiple contact objects.
void removeRepeatedPairs()
Remove repeated contact pairs from _boundary_pairs.
static MooseEnum getSmoothingEnum()
Get smoothing type.
static MooseEnum getProximityMethod()
Get proximity method for automatic pairing.
const ContactFormulation _formulation
Contact formulation.
Definition: ContactAction.h:90
virtual void act() override
void createSidesetPairsFromGeometry()
Create contact pairs between all boundaries whose centroids are within a user-specified distance of e...
std::map< std::pair< BoundaryName, BoundaryName >, const MortarInfo > _bnd_pair_to_mortar_info
Map from boundary pair to mortar user object name.
void addMortarContact()
Generate mesh and other Moose objects for Mortar contact.
const bool _generate_mortar_mesh
Whether to generate the mortar mesh (useful in a restart simulation e.g.).
Definition: ContactAction.h:96
void addNodeFaceContact()
Generate constraints for node to face contact.
boundary_id_type BoundaryID
static MooseEnum getSystemEnum()
Get contact system.
const bool _mortar_dynamics
Whether mortar dynamic contact constraints are to be used.
Definition: ContactAction.h:99
ContactAction(const InputParameters &params)
void addContactPressureAuxKernel()
Add single contact pressure auxiliary kernel for various contact action objects.
static MooseEnum getModelEnum()
Get contact model.
void createSidesetsFromNodeProximity()
Create contact pairs between all boundaries by determining that nodes on both boundaries are close en...
CreateMooseEnumClass(ContactModel, FRICTIONLESS, GLUED, COULOMB)
bool _use_dual
Whether to use the dual Mortar approach.
Definition: ContactAction.h:93
virtual void addRelationshipManagers(Moose::RelationshipManagerType when_type)
const ContactModel _model
Contact model type enum.
Definition: ContactAction.h:87
static InputParameters validParams()
Definition: ContactAction.C:72