www.mooseframework.org
Classes | Functions
ContactAction.h File Reference

Go to the source code of this file.

Classes

class  ContactAction
 

Functions

template<>
InputParameters validParams< ContactAction > ()
 

Function Documentation

template<>
InputParameters validParams< ContactAction > ( )

Definition at line 16 of file ContactAction.C.

17 {
18  MooseEnum orders(AddVariableAction::getNonlinearVariableOrders());
19  MooseEnum formulation("DEFAULT KINEMATIC PENALTY AUGMENTED_LAGRANGE TANGENTIAL_PENALTY",
20  "DEFAULT");
21  MooseEnum system("DiracKernel Constraint", "DiracKernel");
22 
23  InputParameters params = validParams<Action>();
24 
25  params.addRequiredParam<BoundaryName>("master", "The master surface");
26  params.addRequiredParam<BoundaryName>("slave", "The slave surface");
27 
28  params.addParam<NonlinearVariableName>("disp_x", "The x displacement");
29  params.addParam<NonlinearVariableName>("disp_y", "The y displacement");
30  params.addParam<NonlinearVariableName>("disp_z", "The z displacement");
31 
32  params.addParam<std::vector<NonlinearVariableName>>(
33  "displacements",
34  "The displacements appropriate for the simulation geometry and coordinate system");
35 
36  params.addParam<Real>(
37  "penalty",
38  1e8,
39  "The penalty to apply. This can vary depending on the stiffness of your materials");
40  params.addParam<Real>("friction_coefficient", 0, "The friction coefficient");
41  params.addParam<Real>("tension_release",
42  0.0,
43  "Tension release threshold. A node in contact "
44  "will not be released if its tensile load is below "
45  "this value. No tension release if negative.");
46  params.addParam<std::string>("model", "frictionless", "The contact model to use");
47  params.addParam<Real>("tangential_tolerance",
48  "Tangential distance to extend edges of contact surfaces");
49  params.addParam<Real>(
50  "capture_tolerance", 0, "Normal distance from surface within which nodes are captured");
51  params.addParam<Real>(
52  "normal_smoothing_distance",
53  "Distance from edge in parametric coordinates over which to smooth contact normal");
54  params.addParam<std::string>("normal_smoothing_method",
55  "Method to use to smooth normals (edge_based|nodal_normal_based)");
56  params.addParam<MooseEnum>("order", orders, "The finite element order: FIRST, SECOND, etc.");
57  params.addParam<MooseEnum>(
58  "formulation",
59  formulation,
60  "The contact formulation: default, penalty, augmented_lagrange, tangential_penalty");
61  params.addParam<MooseEnum>("system",
62  system,
63  "System to use for constraint enforcement. Options are: " +
64  system.getRawNames());
65  params.addParam<bool>("normalize_penalty",
66  false,
67  "Whether to normalize the penalty parameter with the nodal area.");
68  params.addParam<bool>("master_slave_jacobian",
69  true,
70  "Whether to include jacobian entries coupling master and slave nodes.");
71  params.addParam<Real>("al_penetration_tolerance",
72  "The tolerance of the penetration for augmented Lagrangian method.");
73  params.addParam<Real>("al_incremental_slip_tolerance",
74  "The tolerance of the incremental slip for augmented Lagrangian method.");
75 
76  params.addParam<Real>("al_frictional_force_tolerance",
77  "The tolerance of the frictional force for augmented Lagrangian method.");
78  return params;
79 }