Constraints
Constraints are typically implemented in structural analysis programs through the use of (i) Geometrical Transformations, (ii) Penalty Functions, or (iii) Lagrange Multipliers. In geometrically nonlinear analysis (large displacement/rotations), however, the first of these three tends to lead to difficulties in numerical convergence, for which reason only the latter two are commonly employed . The second has been implemented in SeimoBuild.
Whilst readers are advised to refer to the existing literature [e.g. Cook et al., 1989; Felippa, 2004] for further information on this topic, herein it is simply noted that Penalty Functions have the advantage of introducing no new variables (and hence the stiffness matrix does not increase and remains positive definite), hence they do not significantly increase the bandwidth of the structural equations [Cook et al., 1989].
Note: Felippa [2004] suggests that the optimum penalty functions value should be the average of the maximum stiffness and the processors precision (1e20, in the case of SeismoBuild).