https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
16CreateMooseEnumClass(ContactModel, FRICTIONLESS, GLUED, COULOMB);
17CreateMooseEnumClass(ContactFormulation,
18 RANFS,
19 KINEMATIC,
20 PENALTY,
21 AUGMENTED_LAGRANGE,
22 TANGENTIAL_PENALTY,
23 MORTAR,
24 MORTAR_PENALTY);
25CreateMooseEnumClass(ProximityMethod, NODE, CENTROID);
26CreateMooseEnumClass(ContactLMSpace, MATCH_DISPLACEMENT, LINEAR);
27
32class ContactAction : public Action
33{
34public:
36
37 ContactAction(const InputParameters & params);
38
39 virtual void act() override;
40
42 virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override;
43
48 static MooseEnum getModelEnum();
49
60 static MooseEnum getSystemEnum();
61
67
73
79
80protected:
82 std::vector<std::pair<BoundaryName, BoundaryName>> _boundary_pairs;
83
85 std::vector<BoundaryName> _automatic_pairing_boundaries;
86
88 const ContactModel _model;
89
91 const ContactFormulation _formulation;
92
94 const ContactLMSpace _lm_space;
95
98
101
104
111
113 std::map<std::pair<BoundaryName, BoundaryName>, const MortarInfo> _bnd_pair_to_mortar_info;
114
115private:
119 void addMortarContact();
123 void addNodeFaceContact();
131 void removeRepeatedPairs();
142};
boundary_id_type BoundaryID
CreateMooseEnumClass(ContactModel, FRICTIONLESS, GLUED, COULOMB)
virtual void addRelationshipManagers(Moose::RelationshipManagerType when_type)
Action class for creating constraints, kernels, and user objects necessary for mechanical contact.
void addNodeFaceContact()
Generate constraints for node to face contact.
bool _use_dual
Whether to use the dual Mortar approach.
const bool _mortar_dynamics
Whether mortar dynamic contact constraints are to be used.
void createSidesetPairsFromGeometry()
Create contact pairs between all boundaries whose centroids are within a user-specified distance of e...
static MooseEnum getFormulationEnum()
Get contact formulation.
virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override
const ContactModel _model
Contact model type enum.
static MooseEnum getModelEnum()
Get contact model.
std::map< std::pair< BoundaryName, BoundaryName >, const MortarInfo > _bnd_pair_to_mortar_info
Map from boundary pair to mortar user object name.
static MooseEnum getSmoothingEnum()
Get smoothing type.
void addContactPressureAuxKernel()
Add single contact pressure auxiliary kernel for various contact action objects.
const ContactFormulation _formulation
Contact formulation.
static MooseEnum getProximityMethod()
Get proximity method for automatic pairing.
static MooseEnum getSystemEnum()
Get contact system.
void addMortarContact()
Generate mesh and other Moose objects for Mortar contact.
void removeRepeatedPairs()
Remove repeated contact pairs from _boundary_pairs.
std::vector< BoundaryName > _automatic_pairing_boundaries
List of all possible boundaries for contact for automatic pairing (optional)
const bool _generate_mortar_mesh
Whether to generate the mortar mesh (useful in a restart simulation e.g.).
static InputParameters commonParameters()
Define parameters used by multiple contact objects.
std::vector< std::pair< BoundaryName, BoundaryName > > _boundary_pairs
Primary/Secondary boundary name pairs for mechanical contact.
const ContactLMSpace _lm_space
Finite element space to use for action-generated mortar Lagrange multiplier variables.
static InputParameters validParams()
virtual void act() override
void createSidesetsFromNodeProximity()
Create contact pairs between all boundaries by determining that nodes on both boundaries are close en...
RelationshipManagerType