## Imposing Linear and Nonlinear Constraints

Constraints originate from prescribed conditions such as ebc, join, linc, field_transfer or rigid-coupling or distributed-coupling elements.

B2000++ supports different ways for imposing constraints on a FE problem. Constraints may be linear or nonlinear, and may be imposed by boundary conditions and by Finite Elements. For many problems, the default settings (reduction for linear constraints and Augmented Lagrange method or Lagrange method for nonlinear constraints) will suffice to effectively obtain a solution. In this chapter, the MDL commands for overriding these settings are described.

## 1. MDL Commands

The following commands may be specified in the case block.

constraint_method reduction|lagrange|penalty|augmented_lagrange

Selects the type of method used to impose linear constraints on the equations.

reduction

The system of linear equations is modified such that the constraints are eliminated. The constraints are satisfied 'exactly' (within numerical precision). This is the default method, and it is applicable to linear and nonlinear problems, but only for linear constraints.

augmented_lagrange

A combination of Lagrange multipliers and penalties is used to enforce the constraints. The MDL command constraint_penalty v specifies the penalty factor (default value 1, it is rarely necessary to change this value). The penalty factor is solely used to ensure the positive-definiteness of the matrix and does not impair the matrix' condition number. The constraints are, due to the Lagrange multipliers, satisfied 'exactly' (within numerical precision).

Linear systems containing Lagrange multipliers are best solved using a pivoting solver. It is recommended to use sparse_linear_solver dmumps, which is the default.

penalty

With the penalty method, the number of degrees-of-freedom remains unchanged. The constraints are imposed approximatively, where the MDL command constraint_penalty v specifies the penalty factor (default value is 1e10). A high penalty factor ensures a close approximation of the constraints but makes the matrix badly conditioned; while a low penalty factor may introduce artefacts in the solution of the FE analysis, especially for eigenmode problems.

lagrange

To the system of linear equations, Lagrange multiplicators are added. The constraints are satisfied 'exactly' (within numerical precision).

Linear systems containing Lagrange multipliers are best solved using a pivoting solver. It is recommended to use sparse_linear_solver dmumps, which is the default.

nonlinear_constraint_method lagrange|penalty|augmented_lagrange

Selects the type of method used to impose nonlinear (linearized) constraints on the equations.

augmented_lagrange

A combination of Lagrange multipliers and penalties is used to enforce the constraints. The MDL command constraint_penalty v specifies the penalty factor (default value 1, it is rarely necessary to change this value). The penalty factor is solely used to ensure the positive-definiteness of the matrix and does not impair the matrix' condition number. The constraints are, due to the Lagrange multipliers, satisfied exactly.

Linear systems containing Lagrange multipliers are best solved using a pivoting solver. It is recommended to use sparse_linear_solver dmumps, which is the default.

penalty

With the penalty method, the number of degrees-of-freedom remains unchanged. The constraints are imposed approximatively, where the MDL command constraint_penalty v specifies the penalty factor (default value is 1e10). A high penalty factor ensures a close approximation of the constraints but makes the matrix badly conditioned; while a low penalty factor may introduce artefacts in the solution of the FE analysis, especially for eigenmode problems.

lagrange

To the system of linear equations, Lagrange multiplicators are added. The constraints are satisfied exactly. Since for the static case, the matrix is no longer positive definite, an unsymmetric solver should be used.

Linear systems containing Lagrange multipliers are best solved using a pivoting solver. It is recommended to use sparse_linear_solver dmumps, which is the default.