www.mooseframework.org
ContactAction.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 enum class ContactModel
17 {
19  GLUED,
20  COULOMB
21 };
22 
24 {
25  RANFS,
26  KINEMATIC,
27  PENALTY,
30  MORTAR,
32 };
33 
34 enum class ProximityMethod
35 {
36  NODE,
37  CENTROID
38 };
39 
44 class ContactAction : public Action
45 {
46 public:
48 
49  ContactAction(const InputParameters & params);
50 
51  virtual void act() override;
52 
54  virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override;
55 
60  static MooseEnum getModelEnum();
61 
72  static MooseEnum getSystemEnum();
73 
78  static MooseEnum getSmoothingEnum();
79 
85 
91 
92 protected:
94  std::vector<std::pair<BoundaryName, BoundaryName>> _boundary_pairs;
95 
97  std::vector<BoundaryName> _automatic_pairing_boundaries;
98 
101 
104 
106  bool _use_dual;
107 
110 
112  const bool _mortar_dynamics;
113 
114 private:
118  void addMortarContact();
122  void addNodeFaceContact();
130  void removeRepeatedPairs();
141 };
Action class for creating constraints, kernels, and user objects necessary for mechanical contact...
Definition: ContactAction.h:44
std::vector< std::pair< BoundaryName, BoundaryName > > _boundary_pairs
Primary/Secondary boundary name pairs for mechanical contact.
Definition: ContactAction.h:94
std::vector< BoundaryName > _automatic_pairing_boundaries
List of all possible boundaries for contact for automatic pairing (optional)
Definition: ContactAction.h:97
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.
ProximityMethod
Definition: ContactAction.h:34
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.
virtual void act() override
void createSidesetPairsFromGeometry()
Create contact pairs between all boundaries whose centroids are within a user-specified distance of e...
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.).
void addNodeFaceContact()
Generate constraints for node to face contact.
static MooseEnum getSystemEnum()
Get contact system.
ContactFormulation
Definition: ContactAction.h:23
const bool _mortar_dynamics
Whether mortar dynamic contact constraints are to be used.
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...
bool _use_dual
Whether to use the dual Mortar approach.
ContactModel
Definition: ContactAction.h:16
virtual void addRelationshipManagers(Moose::RelationshipManagerType when_type)
const ContactModel _model
Contact model type enum.
static InputParameters validParams()
Definition: ContactAction.C:72