# 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: (1) 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: (2) 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

• penaltyPenalty parameter used in constraint enforcement for kinematic and penalty formulations.

C++ Type:double

Options:

Description:Penalty parameter used in constraint enforcement for kinematic and penalty formulations.

• slaveslave block id

C++ Type:SubdomainName

Options:

Description:slave block id

• master_variableThe variable on the master side of the domain

C++ Type:std::vector

Options:

Description:The variable on the master side of the domain

• mastermaster block id

C++ Type:SubdomainName

Options:

Description:master block id

• variableThe name of the variable that this constraint is applied to.

C++ Type:NonlinearVariableName

Options:

Description:The name of the variable that this constraint is applied to.

### Required 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

Options:NONE INITIAL LINEAR NONLINEAR TIMESTEP_END TIMESTEP_BEGIN FINAL CUSTOM

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

Options:kinematic penalty

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

Options:

Description:Adds user-defined labels for accessing object parameters via control logic.

• enableTrueSet the enabled status of the MooseObject.

Default:True

C++ Type:bool

Options:

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

Options:

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.