콘텐츠로 이동

기하학적 경계 조건의 처리

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}\)을 수정한다. 이에 따라 첫 번째 반복에서 변위 증분은 구속값 \(\bar{u}_i\)에 도달하고, 두 번째 반복 이후에는 수정량이 \(0\)이 되어 구속값이 유지된다.

행렬·잔차 벡터의 변형 절차

앞 절의 치환 목표는 선형 방정식 \(\boldsymbol{K} d\boldsymbol{u} = \boldsymbol{R}\)의 형태를 유지한 채 다음 두 가지 변형으로 달성된다.

  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\)열에 0이 아닌 성분을 갖는 행, 즉 구속 자유도 \(i\)와 요소를 통해 연결된 절점의 자유도에 대해서만 수행된다. 연결되지 않은 자유도에서는 \(K_{ji} = 0\)이므로 이항에 의해 우변이 변하지 않는다. 이러한 제한으로 전체 절점 수에 대해 국소적인 조작만으로 구속 처리가 완료된다.

관련 항목