Skip to content

Translation status

This page has not yet been translated into English, or its translation is out of date. The current 日本語 version is shown as a fallback.

幾何学的境界条件の処理

Newton-Raphson 法で各反復ごとに解く線形方程式 \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) には,まだ幾何学的境界条件(変位拘束)が組み込まれていない.本章では,変位拘束 \(\boldsymbol{u} = \bar{\boldsymbol{u}}\) が与えられた自由度について,剛性行列 \(\boldsymbol{K}\) と残差ベクトル \(\boldsymbol{R}\) をどのように修正すれば反復後の変位が拘束値を達成するかを示す.多点拘束(MPC)や接触に伴う非線形拘束は別系統の処理であり,多点拘束接触に委ねる.

変位拘束を未知変数として残す方針

幾何学的境界条件が与えられた節点の変位はもはや未知変数ではなく,所定の値 \(\bar{u}_i\) に固定される.これらを定数とみなして線形方程式 \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) から消去することもできるが,FrontISTR では拘束自由度も他の自由度と同じ修正量ベクトル \(d\boldsymbol{u}\) に組み込んだまま, \(\boldsymbol{K}\)\(\boldsymbol{R}\) の側を書き換えることで拘束を実現する.

この方式では係数行列の次元と自由度の並びが拘束の有無で変わらないため,変数を消去して空いた行・列を詰め直す処理が不要となる.疎行列形式で係数行列を保持する実装ではこの詰め直しが煩雑になるため,FrontISTR は係数行列と右辺の更新のみで拘束を達成する後者の方式を採用する.

Newton-Raphson 修正量の置換目標

変位拘束された自由度 \(i\) について,Newton-Raphson 反復で求める修正量 \(du_i\)

\[ du_i = d\bar{u}_i \equiv \begin{cases} \bar{u}_i & (\text{1 反復目}) \\ 0 & (\text{2 反復目以降}) \end{cases} \]

となるように \(\boldsymbol{K}\)\(\boldsymbol{R}\) を修正する.これにより最初の 1 反復目で変位増分は拘束値 \(\bar{u}_i\) に達し,2 反復目以降は修正量が \(0\) となって拘束値が維持される.

行列・残差ベクトルの変形手続き

前節の置換目標は,線形方程式 \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\) の形を保ったまま,次の 2 つの変形によって達成される.

  1. \(i\) 行目の対角化\(du_i\) の係数である対角項 \(K_{ii}\)\(1\) で,それ以外の係数 \(K_{ij}\ (j \not= i)\) をすべて \(0\) で置き換え,右辺を \(R_i \to d\bar{u}_i\) とする.これにより \(i\) 行目の方程式は \(du_i = d\bar{u}_i\) となる.
  2. \(j(\not= i)\) 行目からの移項\(j(\not= i)\) 行目について,\(K_{ji} \not= 0\) であれば \(K_{ji} du_i = K_{ji} d\bar{u}_i\) の項を右辺へ移項する.すなわち右辺から \(K_{ji} d\bar{u}_i\) を引き,\(du_i\) の係数 \(K_{ji}\)\(0\) にする.

成分表示で書くと,変形前後の方程式は次のように対応する.

\[ \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} \]

変形後の係数行列と右辺をそれぞれ \(\tilde{\boldsymbol{K}}, \tilde{\boldsymbol{R}}\) と書き,最終的に解くべき線形方程式は

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

となる.拘束自由度が複数存在する場合は,各拘束自由度 \(i\) について上記 1, 2 の変形を順次適用する.

疎行列実装での処理範囲

実装上,係数行列 \(\boldsymbol{K}\) は疎行列形式で保持されており,前節の手続き 2 における \(j(\not= i)\) 行目の処理は,\(i\) 列に非零成分を持つ行,すなわち拘束自由度 \(i\) と要素を介して連結している節点の自由度に対してのみ実行される.連結のない自由度については \(K_{ji} = 0\) であり,移項によって右辺が変化しないからである.この限定によって,全体節点数に対して局所的な操作のみで拘束処理が完了する.

関連項目