- mastermaster block id
C++ Type:SubdomainName
Description:master block id
- master_variableThe variable on the master side of the domain
C++ Type:std::vector
Description:The variable on the master side of the domain
- penaltyPenalty parameter used in constraint enforcement for kinematic and penalty formulations.
C++ Type:double
Description:Penalty parameter used in constraint enforcement for kinematic and penalty formulations.
- slaveslave block id
C++ Type:SubdomainName
Description:slave block id
- variableThe name of the variable that this constraint is applied to.
C++ Type:NonlinearVariableName
Description:The name of the variable that this constraint is applied to.
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 slave block and a master block. The constraint enforces the slave variable on the slave block and the master variable on the master 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 slave block and searches for a master element that contains each slave node. If a slave node is located within an element, then a constraint is applied to force the slave node to have the same value as the solution variable in the master element, evaluated at the location of the slave 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 slave nodes to be equal to the value in the master element at that point. The constraint is enforced by updating the slave residual and master residual as: where is a copy of the residual of the slave 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 slave and master residual The constraint is enforced by updating the slave residual and master residual as: where is the ghosted residual. The penalty parameter must be selected carefully, as small values lead to large differences between the slave node's solution and the solution in the master element, while large values may lead to poor convergence.
Input Parameters
- execute_onLINEARThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
Default:LINEAR
C++ Type:ExecFlagEnum
Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
- formulationkinematicFormulation used to enforce the constraint
Default:kinematic
C++ Type:MooseEnum
Description:Formulation used to enforce the constraint
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Description:Set the enabled status of the MooseObject.
- 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
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.
Advanced Parameters
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector
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
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
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
Description:The tag for the vectors this Kernel should fill