- penaltyPenalty parameter used in constraint enforcement for kinematic and penalty formulations.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Penalty parameter used in constraint enforcement for kinematic and penalty formulations.
- primaryprimary block id
C++ Type:SubdomainName
Unit:(no unit assumed)
Controllable:No
Description:primary block id
- primary_variableThe variable on the primary side of the domain
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The variable on the primary side of the domain
- secondarysecondary block id
C++ Type:SubdomainName
Unit:(no unit assumed)
Controllable:No
Description:secondary block id
- variableThe name of the variable that this residual object operates on
C++ Type:NonlinearVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this residual object operates on
EqualValueEmbeddedConstraint
This is a constraint enforcing overlapping portions of two blocks to have the same variable value
This is a constraint acting upon overlapping portions of two blocks, a secondary block and a primary block. The constraint enforces the secondary variable on the secondary block and the primary variable on the primary block to have the same values. The mesh dimensions of the two blocks do not have to match.
The constraint iterates through all the nodes on the secondary block and searches for a primary element that contains each secondary node. If a secondary node is located within an element, then a constraint is applied to force the secondary node to have the same value as the solution variable in the primary element, evaluated at the location of the secondary point.
This can be used for a number of applications. For example, in mechanics problems, it can be used to connect lower dimensional elements such as 1D truss elements to 2D or 3D continuum elements. This can be used to model reinforcement in a way that does not require the reinforcement and continuum meshes to have coincident nodes.
Mathematical Formulation
Options are available to control how this constraint is applied:
Kinematic
This option strictly enforces value of the solution at the secondary nodes to be equal to the value in the primary element at that point. The constraint is enforced by updating the secondary residual and primary residual as: where is a copy of the residual of the secondary node before the constraint is applied and is the user-specified penalty parameter. This formulation uses the penalty parameter only to penalize the error, and the converged solution has no error due the penalty. The penalty factor must be specified, and should be consistent with the scaling for the solution variable to which this is applied.
Penalty
This option uses a penalty formulation in which the error in the solution is proportional to a user-specified penalty parameter . The constraint is enforced by modifying the secondary and primary residual The constraint is enforced by updating the secondary residual and primary residual as: where is the ghosted residual. The penalty parameter must be selected carefully, as small values lead to large differences between the secondary node's solution and the solution in the primary element, while large values may lead to poor convergence.
Input Parameters
- formulationkinematicFormulation used to enforce the constraint
Default:kinematic
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:Formulation used to enforce the constraint
Optional Parameters
- absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Controllable:No
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Controllable:No
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.