Skip to content

Treatment of Geometric Boundary Conditions

Newton-Raphson Method solves the linear equation \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) at each iteration, but geometric boundary conditions (displacement constraints) have not yet been incorporated into this equation. This chapter shows how to modify the stiffness matrix \(\boldsymbol{K}\) and residual vector \(\boldsymbol{R}\) for degrees of freedom to which displacement constraints \(\boldsymbol{u} = \bar{\boldsymbol{u}}\) are applied so that the displacement after iteration reaches the prescribed value. Multi-point constraints (MPCs) and nonlinear constraints associated with contact are handled separately; see Multi-Point Constraints and Contact.

Policy of Retaining Displacement Constraints as Unknown Variables

The displacement of a node subject to a geometric boundary condition is no longer an unknown variable, but is fixed to the prescribed value \(\bar{u}_i\). These degrees of freedom could be treated as constants and eliminated from the linear equation \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\); however, FrontISTR enforces the constraints by modifying \(\boldsymbol{K}\) and \(\boldsymbol{R}\) while retaining the constrained degrees of freedom in the correction vector \(d\boldsymbol{u}\) in the same manner as the other degrees of freedom.

With this approach, the dimensions of the coefficient matrix and the ordering of the degrees of freedom do not change depending on whether constraints are present, so there is no need to eliminate variables and repack the vacated rows and columns. Because such repacking is cumbersome in an implementation that stores the coefficient matrix in sparse-matrix form, FrontISTR adopts the latter approach, in which constraints are enforced solely by updating the coefficient matrix and right-hand side.

Target Value for Newton-Raphson Corrections

For a displacement-constrained degree of freedom \(i\), \(\boldsymbol{K}\) and \(\boldsymbol{R}\) are modified so that the correction \(du_i\) obtained in the Newton-Raphson iteration satisfies

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{1st iteration}) \\ 0 & (\text{2nd and subsequent iterations}) \end{cases} \]

With this modification, the displacement increment reaches the prescribed value \(\bar{u}_i\) in the first iteration, and from the second iteration onward the correction becomes \(0\), maintaining the prescribed value.

Procedure for Modifying the Matrix and Residual Vector

The target value described in the previous section is achieved by the following two modifications while retaining the form of the linear equation \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\).

  1. Diagonalization of row \(i\): Replace the diagonal term \(K_{ii}\), the coefficient of \(du_i\), by \(1\), replace all other coefficients \(K_{ij}\ (j \not= i)\) by \(0\), and set the right-hand side to \(R_i \to d\bar{u}_i\). The equation in row \(i\) then becomes \(du_i = d\bar{u}_i\).
  2. Transfer from rows \(j(\not= i)\): For each row \(j(\not= i)\), if \(K_{ji} \not= 0\), move the term \(K_{ji} du_i = K_{ji} d\bar{u}_i\) to the right-hand side. That is, subtract \(K_{ji} d\bar{u}_i\) from the right-hand side and set the coefficient \(K_{ji}\) of \(du_i\) to \(0\).

In component form, the equations before and after the modification correspond as follows.

\[ \begin{bmatrix} K_{11} & K_{12} & \cdots & K_{1i} & \cdots & K_{1N} \\ K_{21} & K_{22} & \cdots & K_{2i} & \cdots & K_{2N} \\ \vdots & \vdots & \ddots & \vdots & & \vdots \\ K_{i1} & K_{i2} & \cdots & K_{ii} & \cdots & K_{iN} \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ K_{N1} & K_{N2} & \cdots & K_{Ni} & \cdots & K_{NN} \\ \end{bmatrix} \begin{bmatrix} du_1 \\ du_2 \\ \vdots \\ du_i \\ \vdots \\ du_N \end{bmatrix} = \begin{bmatrix} R_1 \\ R_2 \\ \vdots \\ R_i \\ \vdots \\ R_N \end{bmatrix} \]
\[ \Longrightarrow \quad \begin{bmatrix} K_{11} & K_{12} & \cdots & 0 & \cdots & K_{1N} \\ K_{21} & K_{22} & \cdots & 0 & \cdots & K_{2N} \\ \vdots & \vdots & \ddots & \vdots & & \vdots \\ 0 & 0 & \cdots & 1 & \cdots & 0 \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ K_{N1} & K_{N2} & \cdots & 0 & \cdots & K_{NN} \\ \end{bmatrix} \begin{bmatrix} du_1 \\ du_2 \\ \vdots \\ du_i \\ \vdots \\ du_N \end{bmatrix} = \begin{bmatrix} R_1 - K_{1i} d\bar{u}_i \\ R_2 - K_{2i} d\bar{u}_i \\ \vdots \\ d\bar{u}_i \\ \vdots \\ R_N - K_{Ni} d\bar{u}_i \\ \end{bmatrix} \]

Denoting the modified coefficient matrix and right-hand side by \(\tilde{\boldsymbol{K}}\) and \(\tilde{\boldsymbol{R}}\), respectively, the linear equation to be solved finally is

\[ \tilde{\boldsymbol{K}}\, d\boldsymbol{u} = \tilde{\boldsymbol{R}} \]

If multiple constrained degrees of freedom exist, modifications 1 and 2 above are applied successively to each constrained degree of freedom \(i\).

Scope of Processing in the Sparse-Matrix Implementation

In the implementation, the coefficient matrix \(\boldsymbol{K}\) is stored in sparse-matrix form. Therefore, the processing of rows \(j(\not= i)\) in procedure 2 of the previous section is performed only for rows having nonzero entries in column \(i\), that is, for the degrees of freedom of nodes connected through elements to constrained degree of freedom \(i\). For unconnected degrees of freedom, \(K_{ji} = 0\), so transferring the term does not change the right-hand side. This restriction allows the constraint processing to be completed using only local operations relative to the total number of nodes.