# 3D Isoparametric Euler–Bernoulli Beam Formulation

## Metadata

- feature_id: `3d-isoparametric-euler-beam`
- source_requirement: `docs/linear-static-3d-euler-beam/requirements.md`
- source_research: `docs/linear-static-3d-euler-beam/research.md`
- approved_design: `docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`
- status: `ready-for-numerical-review`
- owner_agent: `formulation-agent`
- date: `2026-08-09`

## 1. 목적과 정식화 요약

이 문서는 선형 정적 구조해석 파이프라인을 검증하기 위한 2절점 3차원
Euler–Bernoulli beam 요소의 수학 계약을 정의한다. 요소는 축 변형, Saint-Venant
비틀림, 두 주축 방향 굽힘을 포함하며 절점마다 3개의 병진 자유도와 3개의 회전
자유도를 가진다.

요소 계산의 핵심 흐름은 다음과 같다.

$$
\boxed{
\mathbf X_1,\mathbf X_2,\mathbf a
\rightarrow L,\mathbf R,\mathbf T
\rightarrow \mathbf B(\xi),\mathbf D
\rightarrow \mathbf K_e^l
\rightarrow \mathbf K_e^g
\rightarrow \mathbf K\mathbf d=\mathbf F
\rightarrow \boldsymbol\varepsilon,\mathbf s,\mathbf f_e
}
$$

행렬식으로 쓰면

$$
\begin{aligned}
\boldsymbol\varepsilon(\xi)&=\mathbf B(\xi)\mathbf d_e^l,\\
\mathbf s(\xi)&=\mathbf D\boldsymbol\varepsilon(\xi),\\
\mathbf K_e^l&=\int_0^L\mathbf B^T\mathbf D\mathbf B\,dx,\\
\mathbf K_e^g&=\mathbf T^T\mathbf K_e^l\mathbf T,\\
\mathbf r_e^g&=\mathbf K_e^g\mathbf d_e^g-\mathbf f_e^g.
\end{aligned}
$$

성분형은

$$
\varepsilon_i=\sum_{a=1}^{12}B_{ia}d_a^l,\qquad
s_i=\sum_{j=1}^{4}D_{ij}\varepsilon_j,
$$

$$
K_{ab}^{l}=\int_0^L\sum_{i=1}^{4}\sum_{j=1}^{4}
B_{ia}D_{ij}B_{jb}\,dx,\qquad
r_a^g=\sum_{b=1}^{12}K_{ab}^{g}d_b^g-f_a^g.
$$

[[Beam and Frame Finite Elements]]는 Euler–Bernoulli beam의 횡변위와 회전
자유도에 cubic Hermite 보간이 필요하고, 공간 frame 요소가 축·굽힘·비틀림과
좌표 변환을 결합한다는 이론적 근거를 제공한다. [[Isoparametric Finite Elements]]는
자연좌표, Jacobian, 미분 변환 및 수치적분의 공통 틀을 제공한다.

## 2. Scope and Assumptions

### 2.1 포함 범위

- 2절점 직선 prismatic 공간 beam 요소
- Abaqus `TYPE=B33`에만 연결되는 shear-free cubic Euler–Bernoulli 의미
- small displacement 및 small rotation
- 선형 정적 해석
- 균질 선형 탄성 재료
- 축 변형, 두 방향 Euler–Bernoulli 굽힘, Saint-Venant 비틀림
- 절점당 자유도 $[u,v,w,\theta_x,\theta_y,\theta_z]$
- 단면 도심을 지나는 국부 $x$축
- 단면 주축과 국부 $y,z$축의 일치: $I_{yz}=0$
- 보존력과 일관 등가절점하중
- formulation 검증용 상수 국부 line-load 등가절점벡터; Abaqus `*DLOAD` 입력은 제외
- 자연좌표 $\xi\in[-1,1]$을 사용하는 1차원 등매개 기하 mapping

### 2.2 제외 범위

- Timoshenko 전단 변형과 shear correction factor
- Abaqus `TYPE=B31`의 Euler–Bernoulli 요소 재해석
- 기하비선형, 재료비선형, P–$\Delta$, geometric stiffness
- 단면 warping, bimoment 및 warping 자유도
- shear-center/centroid offset, rigid offset 및 end release
- 곡선 beam, taper 또는 요소 내부에서 변하는 $E,G,A,I_y,I_z,J$
- 비주축 단면의 $I_{yz}\ne0$ 굽힘 결합
- 질량, 감쇠, 동적 해석
- 열변형, 초기변형률, 초기응력
- follower load

### 2.3 “Isoparametric”의 정확한 의미

이 요소에서 두 절점의 위치와 축변위 및 비틀림 회전은 같은 2절점 Lagrange
함수로 보간한다. Euler–Bernoulli 굽힘은 횡변위와 그 기울기를 동시에 절점에서
보간해야 하므로 cubic Hermite 함수를 사용한다. 따라서 이 문서에서
“isoparametric”은 **자연좌표 기반의 기하 mapping과 적분 틀**을 뜻하며, 여섯
운동학 변수 모두에 동일한 Lagrange 함수를 사용한다는 뜻은 아니다.

### 2.4 단위

일반 입력에는 특정 단위계를 고정하지 않고 일관 단위계를 사용한다. 승인된
`reference/cantilever beam/` 비교만 외부 계약에 따라 SI를 사용하며, 이 사실은
일반 `.inp` 입력의 단위계를 SI로 추론한다는 뜻이 아니다.

| 양 | 차원 |
| --- | --- |
| $x,L,u,v,w$ | length |
| $\theta_x,\theta_y,\theta_z$ | dimensionless (radian) |
| $E,G$ | force / length$^2$ |
| $A$ | length$^2$ |
| $I_y,I_z,J$ | length$^4$ |
| $N$ | force |
| $T,M_y,M_z$ | force $\times$ length |

## 3. 좌표계와 부호 규약

### 3.1 국부 직교좌표계

전역 절점 위치를 $\mathbf X_1,\mathbf X_2\in\mathbb R^3$라 하고 Abaqus first
section axis `n1`으로 제공되는 guide vector를 $\mathbf a=\mathbf n_1$이라 한다.
요소 tangent $\mathbf t$를 국부 $x$축으로, 투영·정규화한 `n1`을 국부 $y$축으로,
$\mathbf t\times\mathbf n_1$ 방향을 국부 $z$축으로 둔다.

$$
\begin{aligned}
\Delta\mathbf X&=\mathbf X_2-\mathbf X_1,\\
L&=\|\Delta\mathbf X\|,\\
\mathbf e_x&=\frac{\Delta\mathbf X}{L},\\
\widetilde{\mathbf e}_y&=\mathbf a-(\mathbf a\cdot\mathbf e_x)\mathbf e_x,\\
\mathbf e_y&=\frac{\widetilde{\mathbf e}_y}
{\|\widetilde{\mathbf e}_y\|},\\
\mathbf e_z&=\mathbf e_x\times\mathbf e_y.
\end{aligned}
$$

성분형은

$$
\Delta X_I=X_{2I}-X_{1I},\qquad
L=\sqrt{\sum_{I=1}^{3}(\Delta X_I)^2},\qquad
e_{xI}=\frac{\Delta X_I}{L},
$$

$$
\widetilde e_{yI}=a_I-\left(\sum_{J=1}^{3}a_Je_{xJ}\right)e_{xI},
\qquad
e_{yI}=\frac{\widetilde e_{yI}}
{\sqrt{\sum_{J=1}^{3}\widetilde e_{yJ}^2}},
$$

$$
e_{zI}=\sum_{J=1}^{3}\sum_{K=1}^{3}\epsilon_{IJK}e_{xJ}e_{yK}.
$$

좌표 크기와 guide vector 크기를 반영한 승인된 validation은 다음과 같다.

$$
L>10^{-12}\max(1,\|\mathbf X_1\|,\|\mathbf X_2\|),\qquad
\|\widetilde{\mathbf e}_y\|>
10^{-12}\max(1,\|\mathbf a\|),\qquad
\mathbf e_i\cdot\mathbf e_j=\delta_{ij},\qquad
\mathbf e_x\times\mathbf e_y=\mathbf e_z.
$$

zero guide vector, guide vector가 요소 축과 평행한 경우, 또는 zero/near-zero length는
국부 $y,z$축과 $I_y,I_z$의 의미를 정할 수 없으므로 model validation 오류로 처리한다.
임의의 fallback 축을 조용히 선택하지 않는다.

### 3.2 변위와 회전 부호

- $u,v,w$: 각각 국부 $+x,+y,+z$ 방향 병진변위
- $\theta_x,\theta_y,\theta_z$: 각각 국부축에 대한 오른손 법칙의 양의 회전
- Euler–Bernoulli 무전단 조건:

$$
\boxed{\theta_z=\frac{dv}{dx},\qquad
\theta_y=-\frac{dw}{dx}}
$$

두 식의 부호가 다르다는 점이 $w$–$\theta_y$ 굽힘 강성행렬의 $6EI/L^2$
항 부호를 결정한다.

### 3.3 단면력 부호

단면 일반화 변형률과 단면력을 다음 순서로 둔다.

$$
\boldsymbol\varepsilon=
\begin{bmatrix}\varepsilon_0&\kappa_x&\kappa_y&\kappa_z\end{bmatrix}^T,
\qquad
\mathbf s=
\begin{bmatrix}N&T&M_y&M_z\end{bmatrix}^T.
$$

$N$은 인장일 때 양수이고 $T,M_y,M_z$는 해당 국부축 오른손 법칙을 따른다.

## 4. Primary Variables and DOFs

### 4.1 연속장

약형의 독립장은 중심선 축변위 $u(x)$, 비틀림 회전 $\theta_x(x)$, 두 횡변위
$v(x),w(x)$이다. 단면 굽힘 회전은 횡변위 기울기에서 유도한다.

$$
u,\theta_x\in H^1(0,L),\qquad v,w\in H^2(0,L).
$$

### 4.2 절점 자유도 벡터

국부 요소 자유도 순서는 다음으로 고정한다.

$$
\boxed{
\mathbf d_e^l=
\begin{bmatrix}
u_1&v_1&w_1&\theta_{x1}&\theta_{y1}&\theta_{z1}&
u_2&v_2&w_2&\theta_{x2}&\theta_{y2}&\theta_{z2}
\end{bmatrix}^T
}
$$

성분 번호는 다음과 같다.

| $a$ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| $d_a^l$ | $u_1$ | $v_1$ | $w_1$ | $\theta_{x1}$ | $\theta_{y1}$ | $\theta_{z1}$ | $u_2$ | $v_2$ | $w_2$ | $\theta_{x2}$ | $\theta_{y2}$ | $\theta_{z2}$ |

전역 nodal component 순서는 각 node에서 `[UX, UY, UZ, URX, URY, URZ]`이고,
$\mathbf d_e^l=\mathbf T\mathbf d_e^g$는 이 node/component block 순서를 유지한 채
국부 $[u,v,w,\theta_x,\theta_y,\theta_z]$로 회전한다.

요소는 equation id를 소유하지 않는다. 전역 equation numbering과 constrained/free
mapping은 프로젝트 아키텍처에 따라 DofManager가 소유해야 한다.

## 5. Strong Form and Boundary Conditions

### 5.1 단면력–변위 관계

상수 단면과 선형 탄성에서

$$
\begin{aligned}
N&=EA\,u',\\
T&=GJ\,\theta_x',\\
M_y&=EI_y\,\theta_y'=-EI_y\,w'',\\
M_z&=EI_z\,\theta_z'=EI_z\,v''.
\end{aligned}
$$

여기서 $(\cdot)'=d(\cdot)/dx$이다.

### 5.2 미분방정식

국부 분포하중을 $p_x,p_y,p_z$ 및 단위길이당 분포 비틀림 모멘트를 $m_x$라
하면 요소 내부 평형식은

$$
\boxed{
\begin{aligned}
-N'&=p_x,\\
-T'&=m_x,\\
M_z''&=p_y,\\
-M_y''&=p_z.
\end{aligned}}
$$

변위로 직접 쓰면

$$
\boxed{
\begin{aligned}
-(EAu')'&=p_x,\\
-(GJ\theta_x')'&=m_x,\\
(EI_zv'')''&=p_y,\\
(EI_yw'')''&=p_z.
\end{aligned}}
$$

상수 물성이고 요소 내부 분포하중이 없으면

$$
u''=0,\qquad \theta_x''=0,\qquad v''''=0,\qquad w''''=0.
$$

따라서 선형 축/비틀림 보간과 cubic Hermite 굽힘 보간이 각각 homogeneous
strong form을 정확히 만족한다.

### 5.3 경계조건과 자연경계 부호

경계 외향 법선의 1차원 부호를 $n=-1$ at $x=0$, $n=+1$ at $x=L$로 둔다.
각 끝에서는 다음 essential/natural 쌍 중 하나를 지정한다.

| 장 | essential | natural |
| --- | --- | --- |
| 축 | $u=\bar u$ | $F_x=nN$ |
| 비틀림 | $\theta_x=\bar\theta_x$ | $M_x=nT$ |
| $x$–$y$ 평면 굽힘 | $v=\bar v$ | $F_y=-nM_z'$ |
| $x$–$y$ 평면 회전 | $\theta_z=\bar\theta_z$ | $M_z^{\mathrm{end}}=nM_z$ |
| $x$–$z$ 평면 굽힘 | $w=\bar w$ | $F_z=nM_y'$ |
| $x$–$z$ 평면 회전 | $\theta_y=\bar\theta_y$ | $M_y^{\mathrm{end}}=nM_y$ |

굽힘 방정식은 4차이므로 각 굽힘 평면에서 변위/회전 또는 전단력/모멘트의
두 경계조건이 필요하다.

## 6. Weak or Variational Form

허용 시험함수 $\delta u,\delta\theta_x,\delta v,\delta w$는 essential
boundary에서 0이다. 두 번의 부분적분을 적용하면 다음 약형을 얻는다.

$$
\boxed{
\begin{aligned}
&\int_0^L
\left[
EA\,\delta u' u'
+GJ\,\delta\theta_x'\theta_x'
+EI_y\,\delta w''w''
+EI_z\,\delta v''v''
\right]dx\\
&=\int_0^L
\left[
\delta u\,p_x
+\delta\theta_x\,m_x
+\delta v\,p_y
+\delta w\,p_z
\right]dx
+\delta\mathbf d_{\Gamma}^T\bar{\mathbf f}_{\Gamma}.
\end{aligned}}
$$

경계 가상일의 성분형은

$$
\delta\mathbf d_{\Gamma}^T\bar{\mathbf f}_{\Gamma}
=\sum_{x\in\{0,L\}}
\left(
\delta u F_x+\delta v F_y+\delta w F_z
+\delta\theta_xM_x+\delta\theta_yM_y^{\mathrm{end}}
+\delta\theta_zM_z^{\mathrm{end}}
\right).
$$

일반화 변형률과 단면력을 사용하면 내부 가상일은 더 간단히

$$
\delta W_{\mathrm{int}}^e
=\int_0^L\delta\boldsymbol\varepsilon^T\mathbf s\,dx
=\int_0^L\delta\boldsymbol\varepsilon^T
\mathbf D\boldsymbol\varepsilon\,dx
$$

이고, 성분형은

$$
\delta W_{\mathrm{int}}^e
=\int_0^L
\left(
N\,\delta\varepsilon_0
+T\,\delta\kappa_x
+M_y\,\delta\kappa_y
+M_z\,\delta\kappa_z
\right)dx.
$$

선형 탄성에서는 동일한 식을 전체 잠재에너지의 정류조건으로 쓸 수 있다.

$$
\Pi_e(\mathbf d_e^l)
=\frac12(\mathbf d_e^l)^T\mathbf K_e^l\mathbf d_e^l
-(\mathbf d_e^l)^T\mathbf f_e^l,
\qquad
\frac{\partial\Pi_e}{\partial\mathbf d_e^l}=\mathbf0.
$$

## 7. Mapping and Natural Coordinates

### 7.1 2절점 등매개 기하 mapping

자연좌표 $\xi\in[-1,1]$에서

$$
N_1^L(\xi)=\frac{1-\xi}{2},\qquad
N_2^L(\xi)=\frac{1+\xi}{2}.
$$

기하 위치는

$$
\mathbf X(\xi)=N_1^L(\xi)\mathbf X_1+N_2^L(\xi)\mathbf X_2.
$$

국부 축좌표 $x\in[0,L]$는

$$
x(\xi)=\frac{L}{2}(1+\xi),\qquad
r=\frac{x}{L}=\frac{1+\xi}{2}.
$$

Jacobian과 미분 변환은

$$
J_x=\frac{dx}{d\xi}=\frac{L}{2}>0,
\qquad
dx=J_xd\xi,
$$

$$
\frac{d}{dx}=\frac{1}{J_x}\frac{d}{d\xi}
=\frac{2}{L}\frac{d}{d\xi},\qquad
\frac{d^2}{dx^2}=\frac{4}{L^2}\frac{d^2}{d\xi^2}.
$$

직선 2절점 요소에서는 $J_x$가 상수이다. $J_x\le J_{\mathrm{tol}}$이면 zero
또는 near-zero length 요소이므로 계산을 중단한다.

## 8. Discretization

### 8.1 축변위와 비틀림 보간

$$
u(\xi)=N_1^Lu_1+N_2^Lu_2,
\qquad
\theta_x(\xi)=N_1^L\theta_{x1}+N_2^L\theta_{x2}.
$$

성분형 보간 조건은

$$
N_i^L(\xi_j)=\delta_{ij},\qquad
N_1^L+N_2^L=1.
$$

### 8.2 Cubic Hermite 함수

$r=x/L$을 사용하면

$$
\begin{aligned}
H_1(r)&=1-3r^2+2r^3,\\
H_2(r)&=L(r-2r^2+r^3),\\
H_3(r)&=3r^2-2r^3,\\
H_4(r)&=L(-r^2+r^3).
\end{aligned}
$$

자연좌표 성분형은

$$
\begin{aligned}
H_1(\xi)&=\frac14(2-3\xi+\xi^3),\\
H_2(\xi)&=\frac{L}{8}(1-\xi-\xi^2+\xi^3),\\
H_3(\xi)&=\frac14(2+3\xi-\xi^3),\\
H_4(\xi)&=\frac{L}{8}(-1-\xi+\xi^2+\xi^3).
\end{aligned}
$$

횡변위 보간은 회전 부호를 반영하여

$$
\boxed{
\begin{aligned}
v(x)&=H_1v_1+H_2\theta_{z1}+H_3v_2+H_4\theta_{z2},\\
w(x)&=H_1w_1-H_2\theta_{y1}+H_3w_2-H_4\theta_{y2}.
\end{aligned}}
$$

1차 미분은

$$
\begin{aligned}
H_1'&=\frac{6(r^2-r)}{L},&
H_2'&=1-4r+3r^2,\\
H_3'&=\frac{6(r-r^2)}{L},&
H_4'&=-2r+3r^2.
\end{aligned}
$$

2차 미분은

$$
\begin{aligned}
H_1''&=\frac{-6+12r}{L^2},&
H_2''&=\frac{-4+6r}{L},\\
H_3''&=\frac{6-12r}{L^2},&
H_4''&=\frac{-2+6r}{L}.
\end{aligned}
$$

### 8.3 Kronecker 및 기울기 조건

$$
\begin{array}{c|cccc|cccc}
&H_1&H_2&H_3&H_4&H_1'&H_2'&H_3'&H_4'\\ \hline
x=0&1&0&0&0&0&1&0&0\\
x=L&0&0&1&0&0&0&0&1
\end{array}
$$

따라서

$$
v(0)=v_1,\quad v'(0)=\theta_{z1},\quad
v(L)=v_2,\quad v'(L)=\theta_{z2},
$$

$$
w(0)=w_1,\quad w'(0)=-\theta_{y1},\quad
w(L)=w_2,\quad w'(L)=-\theta_{y2}.
$$

또한 $H_1+H_3=1$이다. Hermite 보간의 회전 함수 $H_2,H_4$는 길이
차원을 가지므로 네 함수를 단순히 모두 더하는 partition-of-unity 검사는 의미가
없다. 대신 상수 병진과 선형 rigid rotation field의 정확 재현을 검사한다.

### 8.4 6성분 운동학 보간행렬

중심선 운동학 벡터를

$$
\mathbf q(x)=
\begin{bmatrix}u&v&w&\theta_x&\theta_y&\theta_z\end{bmatrix}^T
=\mathbf N_q(x)\mathbf d_e^l
$$

로 두면

$$
\mathbf N_q=
\begin{bmatrix}
N_1^L&0&0&0&0&0&N_2^L&0&0&0&0&0\\
0&H_1&0&0&0&H_2&0&H_3&0&0&0&H_4\\
0&0&H_1&0&-H_2&0&0&0&H_3&0&-H_4&0\\
0&0&0&N_1^L&0&0&0&0&0&N_2^L&0&0\\
0&0&-H_1'&0&H_2'&0&0&0&-H_3'&0&H_4'&0\\
0&H_1'&0&0&0&H_2'&0&H_3'&0&0&0&H_4'
\end{bmatrix}_{6\times12}.
$$

성분형은

$$
q_i(x)=\sum_{a=1}^{12}N_{q,ia}(x)d_a^l.
$$

## 9. Kinematics

### 9.1 3차원 단면 운동학

도심에서 국부 단면좌표가 $(y,z)$인 점의 강체 병진·회전 부분은

$$
\begin{bmatrix}U_x\\U_y\\U_z\end{bmatrix}
=
\begin{bmatrix}u\\v\\w\end{bmatrix}
+
\begin{bmatrix}\theta_x\\\theta_y\\\theta_z\end{bmatrix}
\times
\begin{bmatrix}0\\y\\z\end{bmatrix}
=
\begin{bmatrix}
u+z\theta_y-y\theta_z\\
v-z\theta_x\\
w+y\theta_x
\end{bmatrix}.
$$

Euler–Bernoulli 조건을 대입한 축방향 변위와 변형률은

$$
U_x=u-zw'-yv',
$$

$$
\boxed{
\varepsilon_{xx}(x,y,z)
=\frac{\partial U_x}{\partial x}
=\varepsilon_0+z\kappa_y-y\kappa_z
}
$$

이다.

위 식은 이 요소가 보유하는 6개 단면운동 자유도만 나타내며 비원형 단면의
Saint-Venant warping 변위장은 포함하지 않는다. 축 및 굽힘 변형률은 이 운동학에서
유도하고, 비틀림은 별도의 1차원 에너지/단면력 관계 $T=GJ\kappa_x$로 표현한다.

### 9.2 일반화 변형률

$$
\boxed{
\boldsymbol\varepsilon=
\begin{bmatrix}
\varepsilon_0\\\kappa_x\\\kappa_y\\\kappa_z
\end{bmatrix}
=
\begin{bmatrix}
u'\\\theta_x'\\\theta_y'\\\theta_z'
\end{bmatrix}
=
\begin{bmatrix}
u'\\\theta_x'\\-w''\\v''
\end{bmatrix}}
$$

### 9.3 Strain–displacement matrix

$$
\boldsymbol\varepsilon(x)=\mathbf B(x)\mathbf d_e^l
$$

이며 $r=x/L$에서 성분행렬은

$$
\boxed{
\mathbf B=
\begin{bmatrix}
-\frac1L&0&0&0&0&0&\frac1L&0&0&0&0&0\\
0&0&0&-\frac1L&0&0&0&0&0&\frac1L&0&0\\
0&0&\frac{6-12r}{L^2}&0&\frac{-4+6r}{L}&0&
0&0&\frac{-6+12r}{L^2}&0&\frac{-2+6r}{L}&0\\
0&\frac{-6+12r}{L^2}&0&0&0&\frac{-4+6r}{L}&
0&\frac{6-12r}{L^2}&0&0&0&\frac{-2+6r}{L}
\end{bmatrix}_{4\times12}}
$$

즉 비영 성분은

$$
\begin{aligned}
\varepsilon_0&=\frac{u_2-u_1}{L},\\
\kappa_x&=\frac{\theta_{x2}-\theta_{x1}}{L},\\
\kappa_y&=\frac{6-12r}{L^2}w_1
+\frac{-4+6r}{L}\theta_{y1}
+\frac{-6+12r}{L^2}w_2
+\frac{-2+6r}{L}\theta_{y2},\\
\kappa_z&=\frac{-6+12r}{L^2}v_1
+\frac{-4+6r}{L}\theta_{z1}
+\frac{6-12r}{L^2}v_2
+\frac{-2+6r}{L}\theta_{z2}.
\end{aligned}
$$

## 10. Constitutive Contract

승인된 `*BEAM GENERAL SECTION, SECTION=GENERAL` 수학 mapping은 입력 순서
`A, I11, I12, I22, J`에 대해

$$
\boxed{I_y=I11,\qquad I_z=I22,\qquad I12=0}
$$

이다. 여기서 section axis 1은 `n1 -> local y`, section axis 2는
`t x n1 -> local z`이므로 $I11$은 local $y$축 굽힘의 $I_y$, $I22$는 local
$z$축 굽힘의 $I_z$에 대응한다. $I12\ne0$을 대각 행렬로 근사하지 않는다.

### 10.1 단면 적분

도심축 조건은

$$
\int_A y\,dA=0,\qquad \int_A z\,dA=0
$$

이고 주축 조건은

$$
I_{yz}=\int_A yz\,dA=0.
$$

단면 특성은

$$
A=\int_A dA,\qquad
I_y=\int_A z^2dA,\qquad
I_z=\int_A y^2dA.
$$

축응력과 단면력 정의는

$$
\sigma_{xx}=E\varepsilon_{xx},
$$

$$
N=\int_A\sigma_{xx}dA,\qquad
M_y=\int_Az\sigma_{xx}dA,\qquad
M_z=-\int_Ay\sigma_{xx}dA.
$$

이를 적분하면

$$
N=EA\varepsilon_0,\qquad
M_y=EI_y\kappa_y,\qquad
M_z=EI_z\kappa_z.
$$

Saint-Venant 비틀림은

$$
T=GJ\kappa_x
$$

로 둔다. 여기서 $J$는 polar moment와 항상 같은 값이 아니라, 일반 단면에 대한
Saint-Venant torsional constant이다.

### 10.2 일반화 탄성행렬

$$
\boxed{
\mathbf s=\mathbf D\boldsymbol\varepsilon,
\qquad
\mathbf D=
\begin{bmatrix}
EA&0&0&0\\
0&GJ&0&0\\
0&0&EI_y&0\\
0&0&0&EI_z
\end{bmatrix}_{4\times4}}
$$

성분형은

$$
s_i=\sum_{j=1}^{4}D_{ij}\varepsilon_j,
$$

$$
N=EA\varepsilon_0,\quad
T=GJ\kappa_x,\quad
M_y=EI_y\kappa_y,\quad
M_z=EI_z\kappa_z.
$$

필수 유효성 조건은

$$
E>0,\quad G>0,\quad A>0,\quad J>0,\quad I_y>0,\quad I_z>0.
$$

V0의 균질 등방성 재료는 입력의 정확한 $E,\nu$로부터

$$
G=\frac{E}{2(1+\nu)}
$$

를 계산하고 위의 $E>0$, $G>0$ 조건을 적용한다. 독립 $G$ 입력은 승인된 V0 입력
계약이 아니다.

### 10.3 비주축 단면에 대한 참고식

현재 범위 밖이지만 $I_{yz}\ne0$이면 굽힘 블록은

$$
\begin{bmatrix}M_y\\M_z\end{bmatrix}
=E
\begin{bmatrix}
I_y&-I_{yz}\\
-I_{yz}&I_z
\end{bmatrix}
\begin{bmatrix}\kappa_y\\\kappa_z\end{bmatrix}
$$

가 된다. 현재 구현 계약에서 이 항을 0으로 조용히 버리면 안 되며 입력을 거부하거나
향후 별도 기능으로 확장해야 한다.

## 11. Element Equations

### 11.1 내부력, 잔차 및 강성

$$
\mathbf f_{\mathrm{int},e}^l
=\int_0^L\mathbf B^T\mathbf s\,dx
=\int_0^L\mathbf B^T\mathbf D\mathbf B\,dx\,\mathbf d_e^l
=\mathbf K_e^l\mathbf d_e^l.
$$

성분형은

$$
f_{\mathrm{int},a}^l
=\int_0^L\sum_{i=1}^{4}B_{ia}s_i\,dx,
$$

$$
K_{ab}^l
=\int_0^L\sum_{i=1}^{4}\sum_{j=1}^{4}
B_{ia}D_{ij}B_{jb}\,dx.
$$

요소 잔차는

$$
\boxed{\mathbf r_e^l=\mathbf K_e^l\mathbf d_e^l-\mathbf f_{\mathrm{ext},e}^l}
$$

이다. 선형 문제이므로 tangent와 stiffness가 같고 변위와 무관하다.

### 11.2 부분 강성행렬

축 자유도 $[u_1,u_2]$:

$$
\mathbf K_a=\frac{EA}{L}
\begin{bmatrix}1&-1\\-1&1\end{bmatrix}.
$$

비틀림 자유도 $[\theta_{x1},\theta_{x2}]$:

$$
\mathbf K_t=\frac{GJ}{L}
\begin{bmatrix}1&-1\\-1&1\end{bmatrix}.
$$

$v$–$\theta_z$ 자유도 $[v_1,\theta_{z1},v_2,\theta_{z2}]$:

$$
\mathbf K_{bz}=\frac{EI_z}{L^3}
\begin{bmatrix}
12&6L&-12&6L\\
6L&4L^2&-6L&2L^2\\
-12&-6L&12&-6L\\
6L&2L^2&-6L&4L^2
\end{bmatrix}.
$$

$w$–$\theta_y$ 자유도 $[w_1,\theta_{y1},w_2,\theta_{y2}]$:

$$
\mathbf K_{by}=\frac{EI_y}{L^3}
\begin{bmatrix}
12&-6L&-12&-6L\\
-6L&4L^2&6L&2L^2\\
-12&6L&12&6L\\
-6L&2L^2&6L&4L^2
\end{bmatrix}.
$$

대표 적분 성분은

$$
K_{v_1v_1}=EI_z\int_0^L(H_1'')^2dx=\frac{12EI_z}{L^3},
$$

$$
K_{v_1\theta_{z1}}=EI_z\int_0^LH_1''H_2''dx
=\frac{6EI_z}{L^2},
$$

$$
K_{w_1\theta_{y1}}=EI_y\int_0^L(-H_1'')H_2''dx
=-\frac{6EI_y}{L^2}.
$$

마지막 식의 음수가 $\theta_y=-w'$에서 직접 발생한다.

### 11.3 전체 12×12 국부 강성행렬

다음 약어를 둔다.

$$
\begin{gathered}
a=\frac{EA}{L},\qquad t=\frac{GJ}{L},\\
b_y=\frac{12EI_y}{L^3},\quad c_y=\frac{6EI_y}{L^2},
\quad d_y=\frac{4EI_y}{L},\quad e_y=\frac{2EI_y}{L},\\
b_z=\frac{12EI_z}{L^3},\quad c_z=\frac{6EI_z}{L^2},
\quad d_z=\frac{4EI_z}{L},\quad e_z=\frac{2EI_z}{L}.
\end{gathered}
$$

그러면 4.2절의 자유도 순서에 대한 국부 강성행렬은

$$
\boxed{
\mathbf K_e^l=
\begin{bmatrix}
a&0&0&0&0&0&-a&0&0&0&0&0\\
0&b_z&0&0&0&c_z&0&-b_z&0&0&0&c_z\\
0&0&b_y&0&-c_y&0&0&0&-b_y&0&-c_y&0\\
0&0&0&t&0&0&0&0&0&-t&0&0\\
0&0&-c_y&0&d_y&0&0&0&c_y&0&e_y&0\\
0&c_z&0&0&0&d_z&0&-c_z&0&0&0&e_z\\
-a&0&0&0&0&0&a&0&0&0&0&0\\
0&-b_z&0&0&0&-c_z&0&b_z&0&0&0&-c_z\\
0&0&-b_y&0&c_y&0&0&0&b_y&0&c_y&0\\
0&0&0&-t&0&0&0&0&0&t&0&0\\
0&0&-c_y&0&e_y&0&0&0&c_y&0&d_y&0\\
0&c_z&0&0&0&e_z&0&-c_z&0&0&0&d_z
\end{bmatrix}}
$$

이어야 한다.

### 11.4 국부 요소 끝력의 성분형

분포하중이 없는 경우

$$
\mathbf f_{\mathrm{int},e}^l=
\begin{bmatrix}
F_{x1}&F_{y1}&F_{z1}&M_{x1}&M_{y1}&M_{z1}&
F_{x2}&F_{y2}&F_{z2}&M_{x2}&M_{y2}&M_{z2}
\end{bmatrix}^T
=\mathbf K_e^l\mathbf d_e^l.
$$

각 성분은

$$
\begin{aligned}
F_{x1}&=a(u_1-u_2),\\
F_{y1}&=b_z(v_1-v_2)+c_z(\theta_{z1}+\theta_{z2}),\\
F_{z1}&=b_y(w_1-w_2)-c_y(\theta_{y1}+\theta_{y2}),\\
M_{x1}&=t(\theta_{x1}-\theta_{x2}),\\
M_{y1}&=-c_yw_1+d_y\theta_{y1}+c_yw_2+e_y\theta_{y2},\\
M_{z1}&=c_zv_1+d_z\theta_{z1}-c_zv_2+e_z\theta_{z2},\\[2mm]
F_{x2}&=-a(u_1-u_2),\\
F_{y2}&=-b_z(v_1-v_2)-c_z(\theta_{z1}+\theta_{z2}),\\
F_{z2}&=-b_y(w_1-w_2)+c_y(\theta_{y1}+\theta_{y2}),\\
M_{x2}&=-t(\theta_{x1}-\theta_{x2}),\\
M_{y2}&=-c_yw_1+e_y\theta_{y1}+c_yw_2+d_y\theta_{y2},\\
M_{z2}&=c_zv_1+e_z\theta_{z1}-c_zv_2+d_z\theta_{z2}.
\end{aligned}
$$

### 11.5 차원과 기본 행렬 특성

$$
\mathbf B:4\times12,\quad
\mathbf D:4\times4,\quad
\mathbf K_e^l:12\times12,\quad
\mathbf d_e^l,\mathbf f_e^l:12\times1.
$$

정확한 산술에서

$$
(\mathbf K_e^l)^T=\mathbf K_e^l,
\qquad
(\mathbf d_e^l)^T\mathbf K_e^l\mathbf d_e^l\ge0,
\qquad
\operatorname{rank}(\mathbf K_e^l)=6.
$$

나머지 6개 null modes는 자유 요소의 강체운동이다. 구조 경계조건을 적용한 뒤에만
전역 자유도 강성행렬이 positive definite일 수 있다.

Mass와 damping은 현재 선형 정적 범위에서 N/A이다.

## 12. External Force Vector

### 12.1 일반 일관 분포하중

이 절과 12.2절은 요소 formulation을 검증하는 constant local line-load kernel의
수학 계약이다. V0 parser와 CLI는 Abaqus `*DLOAD`를 지원하거나 Domain distributed-load
object를 만들지 않으므로 이 kernel을 해석 pipeline의 지원 하중으로 해석하지 않는다.

국부 단위길이당 하중 벡터를

$$
\mathbf p_l(x)=
\begin{bmatrix}p_x&p_y&p_z&m_x&0&0\end{bmatrix}^T
$$

로 두면 일관 요소하중은

$$
\boxed{
\mathbf f_{\mathrm{dist},e}^l
=\int_0^L\mathbf N_q^T(x)\mathbf p_l(x)\,dx}
$$

이다. 성분형은

$$
f_a^l=\int_0^L\sum_{i=1}^{6}N_{q,ia}(x)p_{l,i}(x)\,dx.
$$

분포 $m_y,m_z$까지 지원하려면 $\mathbf p_l$의 마지막 두 성분과 이에 대응하는
strong form을 별도 I/O 계약에서 명시해야 한다. 현재 baseline에서는 제외한다.

### 12.2 상수 분포하중의 닫힌형

$p_x,p_y,p_z,m_x$가 요소에서 상수이면

$$
\boxed{
\mathbf f_{\mathrm{dist},e}^l=
\begin{bmatrix}
\frac{p_xL}{2}\\
\frac{p_yL}{2}\\
\frac{p_zL}{2}\\
\frac{m_xL}{2}\\
-\frac{p_zL^2}{12}\\
\frac{p_yL^2}{12}\\
\frac{p_xL}{2}\\
\frac{p_yL}{2}\\
\frac{p_zL}{2}\\
\frac{m_xL}{2}\\
\frac{p_zL^2}{12}\\
-\frac{p_yL^2}{12}
\end{bmatrix}}
$$

이다. 벡터의 5, 11번째 $M_y$ 성분 부호는 $w$ 보간에 $-H_2,-H_4$가
사용되기 때문에 발생한다.

### 12.3 요소 내부 집중하중과 끝하중

$x_p$에 작용하는 국부 집중 일반화 하중 $\mathbf P_p$의 등가절점하중은

$$
\mathbf f_p^l=\mathbf N_q^T(x_p)\mathbf P_p.
$$

절점 끝하중은 해당 요소 자유도 성분에 직접 더한다. 동일한 물리 하중을 구조 절점
하중과 요소 끝하중으로 중복 조립하지 않아야 한다.

## 13. Numerical Integration

### 13.1 강성 적분

자연좌표에서

$$
\mathbf K_e^l
=\int_{-1}^{1}\mathbf B^T(\xi)\mathbf D\mathbf B(\xi)J_x\,d\xi.
$$

상수 물성에 대해 $\mathbf B$의 굽힘행은 $\xi$의 1차식이므로
$\mathbf B^T\mathbf D\mathbf B$는 최대 2차식이다. 2점 Gauss–Legendre 적분은
3차 다항식까지 정확하므로 전체 강성을 정확히 적분한다.

$$
\xi_1=-\frac1{\sqrt3},\qquad
\xi_2=+\frac1{\sqrt3},\qquad
w_1=w_2=1.
$$

행렬 및 성분형은

$$
\boxed{
\mathbf K_e^l
=\sum_{g=1}^{2}\mathbf B^T(\xi_g)\mathbf D\mathbf B(\xi_g)J_xw_g}
$$

$$
K_{ab}^l
=\sum_{g=1}^{2}\sum_{i=1}^{4}\sum_{j=1}^{4}
B_{ia}(\xi_g)D_{ij}B_{jb}(\xi_g)J_xw_g.
$$

1점 적분은 굽힘 부분에 spurious zero-energy mode를 만들 수 있으므로 사용하지
않는다. 구현 초기에는 2점 Gauss 결과를 11.3절 닫힌형 행렬과 성분별 비교한다.

### 13.2 하중 적분

상수 분포하중에 대한 cubic Hermite 함수 적분은 2점 Gauss로 정확하다.

$$
\mathbf f_{\mathrm{dist},e}^l
=\sum_{g=1}^{2}\mathbf N_q^T(\xi_g)
\mathbf p_l(\xi_g)J_xw_g.
$$

요소 내에서 물성이나 하중이 변하는 기능을 추가할 때는 다항 차수와 discontinuity를
기준으로 적분차수를 다시 정해야 하며, 현재 2점을 일반 규칙으로 오해하면 안 된다.

## 14. Local-to-Global Transformation

### 14.1 3×3 회전행렬

전역 벡터를 국부 성분으로 변환하는 행렬을

$$
\boxed{
\mathbf R=
\begin{bmatrix}
\mathbf e_x^T\\
\mathbf e_y^T\\
\mathbf e_z^T
\end{bmatrix}}
$$

로 정의한다.

$$
\mathbf v^l=\mathbf R\mathbf v^g,
\qquad
v_i^l=\sum_{I=1}^{3}R_{iI}v_I^g.
$$

검사 조건은

$$
\mathbf R\mathbf R^T=\mathbf I_3,\qquad
\det\mathbf R=+1.
$$

### 14.2 12×12 요소 변환행렬

병진과 small-rotation vector는 같은 회전행렬로 변환한다.

$$
\boxed{
\mathbf T=\operatorname{diag}(\mathbf R,\mathbf R,\mathbf R,\mathbf R)}
$$

첫 두 block은 node 1의 병진/회전, 다음 두 block은 node 2의 병진/회전이다.

$$
\mathbf d_e^l=\mathbf T\mathbf d_e^g,
\qquad
d_a^l=\sum_{A=1}^{12}T_{aA}d_A^g.
$$

### 14.3 전역 요소식

가상일 불변성에서

$$
(\delta\mathbf d_e^g)^T\mathbf f_e^g
=(\delta\mathbf d_e^l)^T\mathbf f_e^l
$$

이므로

$$
\boxed{
\mathbf K_e^g=\mathbf T^T\mathbf K_e^l\mathbf T,
\qquad
\mathbf f_e^g=\mathbf T^T\mathbf f_e^l.}
$$

성분형은

$$
K_{AB}^g
=\sum_{a=1}^{12}\sum_{b=1}^{12}
T_{aA}K_{ab}^lT_{bB},
\qquad
f_A^g=\sum_{a=1}^{12}T_{aA}f_a^l.
$$

## 15. Global Assembly and Linear Static Solution

요소 전역 자유도를 전체 자유도에서 추출하는 Boolean/scatter 행렬을
$\mathbf A_e$라 하면

$$
\mathbf d_e^g=\mathbf A_e\mathbf d.
$$

조립식은

$$
\boxed{
\mathbf K=\sum_e\mathbf A_e^T\mathbf K_e^g\mathbf A_e,
\qquad
\mathbf F=\sum_e\mathbf A_e^T\mathbf f_e^g+\mathbf F_{\mathrm{nodal}}.}
$$

성분형은

$$
K_{IJ}=\sum_e\sum_{A=1}^{12}\sum_{B=1}^{12}
A_{e,AI}K_{e,AB}^gA_{e,BJ},
$$

$$
F_I=\sum_e\sum_{A=1}^{12}A_{e,AI}f_{e,A}^g+F_{\mathrm{nodal},I}.
$$

자유/구속 자유도로 partition하면

$$
\begin{bmatrix}
\mathbf K_{ff}&\mathbf K_{fc}\\
\mathbf K_{cf}&\mathbf K_{cc}
\end{bmatrix}
\begin{bmatrix}\mathbf d_f\\\mathbf d_c\end{bmatrix}
=
\begin{bmatrix}\mathbf F_f\\\mathbf F_c\end{bmatrix}.
$$

주어진 $\mathbf d_c$에 대해

$$
\boxed{
\mathbf K_{ff}\mathbf d_f
=\mathbf F_f-\mathbf K_{fc}\mathbf d_c}
$$

를 풀고, 구속 자유도 반력은 원래 조립식에서

$$
\boxed{
\mathbf R_c
=\mathbf K_{cf}\mathbf d_f+\mathbf K_{cc}\mathbf d_c-\mathbf F_c}
$$

로 복구한다. 성분형은

$$
R_I=\sum_JK_{IJ}d_J-F_I,\qquad I\in\mathcal C.
$$

## 16. Output Recovery

### 16.1 변위

전역 요소변위에서

$$
\mathbf d_e^l=\mathbf T\mathbf d_e^g,
\qquad
\mathbf q(\xi)=\mathbf N_q(\xi)\mathbf d_e^l
$$

로 국부 nodal/section 변위를 복구한다.

### 16.2 일반화 변형률과 단면력

두 Gauss point $\xi_g=\pm1/\sqrt3$에서 일반화 변형률과 generalized section
resultant를 다음과 같이 복구한다.

$$
\boxed{
\boldsymbol\varepsilon(\xi_g)=\mathbf B(\xi_g)\mathbf d_e^l,
\qquad
\mathbf s(\xi_g)=\mathbf D\mathbf B(\xi_g)\mathbf d_e^l.}
$$

성분형은

$$
\varepsilon_i(\xi_g)=\sum_aB_{ia}(\xi_g)d_a^l,
\qquad
s_i(\xi_g)=\sum_jD_{ij}\varepsilon_j(\xi_g).
$$

endpoint section resultant는 별도로 $\xi=-1,+1$에서 $\mathbf D\mathbf B\mathbf d_e^l$을
직접 평가한 local $[N,T,M_y,M_z]$이다. 이는 양의 local $x$ 면을 기준으로 한
section-cut 부호를 가지며 endpoint 외향 법선 부호를 곱하지 않는다. 상수 단면
요소에서 $N,T$는 요소 내 상수이고 $M_y,M_z$는 선형이다. 따라서 Gauss generalized
values와 endpoint section resultant는 위치와 row identity가 서로 다른 결과다.

### 16.3 축응력

단면점 $(y,z)$의 axial `S11`은

$$
\boxed{
S11(\xi,y,z)=\sigma_{xx}(\xi,y,z)
=E\left[\varepsilon_0(\xi)
+z\kappa_y(\xi)-y\kappa_z(\xi)\right].}
$$

`S11`은 두 Gauss point와 입력 `*SECTION POINTS`의 각 단면점에서 평가한다. 입력
section point가 없으면 centroid $(y,z)=(0,0)$을 `source=fesa-default`로 사용한다.
Abaqus section-point 좌표와의 승인 mapping은 $x1=y$, $x2=z$이다.

Euler–Bernoulli 가정은 횡전단변형을 제거하므로 이 정식화만으로 transverse shear
stress 분포를 constitutive recovery하지 않는다. 또한 일반 단면의 비틀림 전단응력
분포는 $J$ 하나만으로 결정되지 않으므로 baseline output은 $T$까지로 제한한다.
원형 단면처럼 별도 승인된 section recovery가 있을 때만
$\tau=T\rho/J$ 형태를 사용할 수 있으나 이는 V0 범위 밖이다. `S11`은 analytical/unit
test와 HDF5 contract로 검증하고 Abaqus beam-stress reference comparison은 명시적
N/A이다.

### 16.4 요소 끝력

분포하중을 포함하는 요소의 equilibrium end action은

$$
\boxed{
\mathbf f_{\mathrm{end},e}^l
=\mathbf K_e^l\mathbf d_e^l-\mathbf f_{\mathrm{dist},e}^l}
$$

이고 전역 성분은

$$
\mathbf f_{\mathrm{end},e}^g
=\mathbf T^T\mathbf f_{\mathrm{end},e}^l.
$$

각 endpoint row의 local component 순서는 $[F_X,F_Y,F_Z,M_X,M_Y,M_Z]$이다.
V0 parser/CLI는 distributed load를 생성하지 않으므로 승인된 해석 pipeline에서는
$\mathbf f_{\mathrm{dist},e}^l=\mathbf0$이다. 이 경우 $\xi_1=-1$, $\xi_2=+1$에서
외향 법선 부호를 각각 $n_{\mathrm{out},1}=-1$, $n_{\mathrm{out},2}=+1$로 두면
5.3절의 자연경계 부호와

$$
F_{X,i}=n_{\mathrm{out},i}N(\xi_i),\qquad
M_{X,i}=n_{\mathrm{out},i}T(\xi_i),\qquad
M_{Y,i}=n_{\mathrm{out},i}M_y(\xi_i),\qquad
M_{Z,i}=n_{\mathrm{out},i}M_z(\xi_i),
$$

$$
F_{Y,i}=-n_{\mathrm{out},i}
\left.\frac{dM_z}{dx}\right|_{\xi_i},\qquad
F_{Z,i}=n_{\mathrm{out},i}
\left.\frac{dM_y}{dx}\right|_{\xi_i}
$$

가 일치해야 한다. 따라서 이 V0 조건의 equilibrium end action은 요소 끝에 작용하는
outward action이고, endpoint section resultant는 동일 section을 양의 local $x$ 면으로
자른 값이다. Abaqus node-station force row에는 equilibrium end action이 아니라 section
resultant를 동일한 section-cut 부호로 정규화해 비교하며, interior node의 두 endpoint가
승인 tolerance 안에서 먼저 일치해야 한다. 승인된 component mapping은
`SF1 -> N`, `SM1 -> My`, `SM2 -> Mz`, `SM3 -> T`이고, CSV에 없는 transverse
`SF2`, `SF3`는 reference comparison 대상이 아니다.

$\mathbf D\mathbf B\mathbf d_e^l$로 얻는 section resultant와 위 equilibrium end
action은 분포하중이 있을 때 서로 다른 recovery 표현이다. cubic displacement만으로
uniform transverse load의 quadratic exact moment diagram을 한 요소에서 표현할 수
없으므로 formulation-only line-load kernel에서는 위 V0 endpoint 관계를 적용하거나
두 결과를 같은 row로 동일시하지 않는다.

### 16.5 반력

반력은 요소 끝력을 임의로 합하는 별도 경로가 아니라 15절의 전체 조립 잔차
$\mathbf K\mathbf d-\mathbf F$에서 구한다. 이렇게 해야 nodal load, element load 및
비영 prescribed displacement가 모두 반영된다.

### 16.6 Nodal extrapolation

- $N,T$: 상수이므로 extrapolation 불필요
- $M_y,M_z,\kappa_y,\kappa_z$: 선형이므로 두 Gauss point 값에서 끝점으로 선형
  extrapolation할 수 있으나, 직접 $\mathbf B(\xi=\pm1)$를 평가하는 방법을 기준으로 한다.
- 여러 요소의 nodal stress averaging은 재료/단면 불연속을 숨길 수 있으므로 현재
  baseline에서 수행하지 않는다.

## 17. Algorithm Pseudocode

```text
for each element e:
    read X1, X2, Abaqus first section axis n1, E, nu, A, I11, I12, I22, J
    require I12 == 0
    map a = n1, Iy = I11, Iz = I22, G = E / (2 * (1 + nu))

    DeltaX = X2 - X1
    L = norm(DeltaX)
    coordinate_scale = max(1, norm(X1), norm(X2))
    require L > 1e-12 * coordinate_scale

    ex = DeltaX / L
    ey_trial = a - dot(a, ex) * ex
    require norm(ey_trial) > 1e-12 * max(1, norm(a))
    ey = ey_trial / norm(ey_trial)
    ez = cross(ex, ey)

    R = rows(ex, ey, ez)
    require R * transpose(R) approximately equals identity
    require determinant(R) approximately equals +1
    T = block_diag(R, R, R, R)

    validate E, G, A, Iy, Iz, J are positive
    D = diag(E*A, G*J, E*Iy, E*Iz)

    initialize Kl[12,12] = 0
    initialize fl[12] = 0

    for (xi, weight) in {(-1/sqrt(3), 1), (+1/sqrt(3), 1)}:
        Jx = L / 2
        r = (1 + xi) / 2

        evaluate N1L, N2L
        evaluate H1...H4 and first/second x-derivatives
        form Nq[6,12]
        form B[4,12]

        Kl += transpose(B) * D * B * Jx * weight
        if verifying the formulation-only constant local line-load kernel:
            fl += transpose(Nq) * local_line_load(xi) * Jx * weight

    in verification builds/checks:
        compare Kl component-wise with the closed-form matrix in Section 11.3
        check symmetry, rank 6, and rigid-body null modes

    Kg = transpose(T) * Kl * T
    fg = transpose(T) * fl
    assemble Kg and fg with the element-to-global DOF map

partition global free/constrained DOFs
solve Kff * df = Ff - Kfc * dc
recover Rc = Kcf * df + Kcc * dc - Fc

for each element output recovery:
    de_global = gather global nodal DOFs
    de_local = T * de_global

    for each mandatory Gauss point xi_g:
        epsilon = B(xi_g) * de_local
        section_resultant = D * epsilon
        recover S11 at each input section point or the fesa-default centroid

    for each endpoint xi in {-1, +1}:
        recover endpoint section_resultant = D * B(xi) * de_local
    recover local equilibrium end actions with the endpoint outward-action convention
recover reactions from the assembled residual, not an end-action sum
```

이 의사코드는 수학적 계산 순서만 정의하며 C++ class, signature 또는 storage API를
정의하지 않는다.

## 18. Verification and Benchmarks

[[Finite Element Program Implementation]]은 element-local 계산, 전역 조립, 해,
결과 복구를 분리하고 새 요소를 patch/benchmark test로 검증할 것을 요구한다.
[[Finite Element Modeling and Convergence Checks]]는 compatibility, equilibrium,
convergence 및 결과 해석을 함께 검사해야 한다는 근거를 제공한다.

### 18.1 형상함수 단위검사

1. 8.3절의 값/기울기 Kronecker 조건을 machine precision 범위에서 검사한다.
2. $N_1^L+N_2^L=1$, $H_1+H_3=1$을 검사한다.
3. 상수 $u,\theta_x$를 정확히 재현한다.
4. 선형 $v=c_0+c_1x$에 대해 $\theta_z=c_1$, $\kappa_z=0$인지 검사한다.
5. 선형 $w=c_0+c_1x$에 대해 $\theta_y=-c_1$, $\kappa_y=0$인지 검사한다.

### 18.2 행렬 불변량

승인된 normalized matrix 기준은

$$
\operatorname{normalized\_error}
(\mathbf K_e^l,(\mathbf K_e^l)^T)\le10^{-12},
$$

$$
\operatorname{normalized\_error}
(\mathbf K_{\mathrm{Gauss}}^l,\mathbf K_{\mathrm{closed}}^l)\le10^{-12}
$$

를 검사한다. 자유 요소의 고유치 또는 rank 검사에서는 6개 rigid-body mode와 6개
positive deformation mode가 있어야 한다.

대표 국부 강체모드는

$$
\mathbf r_{T_x}=
\begin{bmatrix}1&0&0&0&0&0&1&0&0&0&0&0\end{bmatrix}^T,
$$

$$
\mathbf r_{T_y}=
\begin{bmatrix}0&1&0&0&0&0&0&1&0&0&0&0\end{bmatrix}^T,
$$

$$
\mathbf r_{T_z}=
\begin{bmatrix}0&0&1&0&0&0&0&0&1&0&0&0\end{bmatrix}^T,
$$

$$
\mathbf r_{R_x}=
\begin{bmatrix}0&0&0&1&0&0&0&0&0&1&0&0\end{bmatrix}^T,
$$

$$
\mathbf r_{R_y}=
\begin{bmatrix}0&0&0&0&1&0&0&0&-L&0&1&0\end{bmatrix}^T,
$$

$$
\mathbf r_{R_z}=
\begin{bmatrix}0&0&0&0&0&1&0&L&0&0&0&1\end{bmatrix}^T.
$$

각 $k$에 대해

$$
\operatorname{normalized\_residual}
(\mathbf K_e^l\mathbf r_k)\le10^{-10}
$$

이어야 한다. Analytical axial, torsion 및 두 굽힘 평면 응답은 relative $10^{-9}$를
적용한다. Norm의 무차원화와 rank scale은 Numerical Review에서 이 승인 기준의 의미를
바꾸지 않는 계산 규약으로 명시한다.

### 18.3 기본 해석해 benchmark

길이 $L$의 cantilever 하나를 사용하여 다음을 검사한다.

| 하중 | 비교량 | 해석해 |
| --- | --- | --- |
| 끝 축력 $P_x$ | $u(L)$ | $P_xL/(EA)$ |
| 끝 torque $M_x$ | $\theta_x(L)$ | $M_xL/(GJ)$ |
| 끝 횡력 $P_y$ | $v(L)$ | $P_yL^3/(3EI_z)$ |
| 끝 횡력 $P_y$ | $\theta_z(L)$ | $P_yL^2/(2EI_z)$ |
| 끝 횡력 $P_z$ | $w(L)$ | $P_zL^3/(3EI_y)$ |
| 끝 횡력 $P_z$ | $\theta_y(L)$ | $-P_zL^2/(2EI_y)$ |
| 상수 분포하중 $p_y$ | $v(L)$ | $p_yL^4/(8EI_z)$ |
| 상수 분포하중 $p_y$ | $\theta_z(L)$ | $p_yL^3/(6EI_z)$ |

한 개의 cubic Hermite 요소는 끝 집중력/모멘트에 대한 cubic 이하 변위장을 정확히
재현한다. 상수 분포 횡하중의 exact displacement는 4차이므로 mesh refinement에
따른 수렴도 함께 확인한다.

### 18.4 좌표변환 검사

동일한 beam 문제를 전역 $x,y,z$축과 임의의 3차원 방향으로 rigid rotation하여
해석한다. 변위와 힘을 원래 좌표계로 되돌렸을 때 일치해야 한다.

$$
\mathbf T^T\mathbf T=\mathbf I_{12},
\qquad
(\mathbf d_e^g)^T\mathbf K_e^g\mathbf d_e^g
=(\mathbf d_e^l)^T\mathbf K_e^l\mathbf d_e^l.
$$

### 18.5 평형 검사

$$
\left\|\sum\mathbf F_{\mathrm{applied}}+
\sum\mathbf R\right\|\le\epsilon_F,
$$

$$
\left\|\sum\mathbf M_{\mathrm{applied}}+
\sum\left(\mathbf X\times\mathbf F\right)+
\sum\mathbf M_{\mathrm{reaction}}\right\|\le\epsilon_M.
$$

승인된 B33 reference row는 같은 model, step/frame, quantity, component별로 Abaqus
reference 값만 사용해

$$
\operatorname{reference\_scale}=\max_i|r_i|,\qquad
\operatorname{row\_tolerance}=\operatorname{absolute\_floor}
+10^{-6}\operatorname{reference\_scale}
$$

를 적용한다. 승인된 SI bundle의 displacement/rotation floor는 $10^{-9}$,
force/moment floor는 $10^{-3}$이다. Reference 값을 zero-clamp하거나 row를 제거하지
않으며 missing, extra, duplicate, nonfinite, schema/identity mismatch는 수치 판정 전에
실패한다. 이 reference policy는 위 formulation/analytical tolerance를 대체하지 않는다.

## 19. Numerical Risks

| 위험 | 영향 | 필수 대응/검사 |
| --- | --- | --- |
| $L\approx0$ | Jacobian singularity, $L^{-3}$ 발산 | 조립 전 길이 검증 |
| guide vector와 $\mathbf e_x$ 평행 | 국부 $y,z$축 미정 | projection norm 검사 후 입력 오류 |
| $E,G,A,I_y,I_z,J\le0$ | 비물리/indefinite stiffness | 물성·단면 검증 |
| 짧거나 깊은 beam | 전단변형 누락으로 과도하게 stiff | Euler–Bernoulli 적용 한계로 기록; 승인되지 않은 자동 warning/error threshold를 두지 않고 B31은 지원 요소로 재해석하지 않음 |
| open section warping | $GJ/L$만으로 비틀림 부족 | 현재 범위 밖으로 명시 |
| 하중이 shear center를 벗어남 | 굽힘–비틀림 결합 누락 | eccentric load를 명시적 force+torque로 환산하거나 후속 기능화 |
| $I_y/I_z$ 또는 stiffness scale 극단값 | 전역 condition number 악화 | 단위/스케일 및 solver conditioning 검사 |
| 1점 굽힘 적분 | spurious mechanism | 2점 Gauss 또는 닫힌형 사용 |
| $\theta_y=-w'$ 부호 누락 | $w$–$M_y$ 결과 반전 | B, K, cantilever sign test |
| local/global 변환 방향 혼동 | 회전된 요소 결과 오류 | $\mathbf d^l=\mathbf T\mathbf d^g$ 계약 및 energy invariance test |
| free structure 또는 불충분 구속 | singular global matrix | 6 rigid modes와 구속조건 진단 |
| nodal averaging | 단면 불연속 stress 오염 | baseline에서 averaging 금지 |

Euler–Bernoulli 요소에는 shear strain 자유도가 없으므로 shear locking은 N/A이다.
Volumetric locking과 hourglass control도 N/A이지만, 1점 굽힘 적분에 의한 rank
deficiency는 별도의 under-integration 위험이다.

## 20. Evidence and Wiki Gap

### 20.1 사용한 FEM wiki 근거

- [[Beam and Frame Finite Elements]]: Euler–Bernoulli cubic displacement, nodal
  displacement/rotation, axial·bending·torsion 결합 및 공간좌표 변환
- [[Isoparametric Finite Elements]]: 자연좌표, 형상함수, Jacobian, derivative mapping,
  quadrature 및 distortion/under-integration 위험
- [[Finite Element Method]]: strong/variational statement에서 요소방정식, 조립, 해로
  이어지는 displacement FEM 흐름
- [[Finite Element Program Implementation]]: element-local 계산, 전역 조립, 결과
  복구 및 patch/benchmark verification
- [[Finite Element Modeling and Convergence Checks]]: compatibility, equilibrium,
  mesh convergence 및 결과 해석
- [[A-First-Course-in-the-Finite-Element-Method|A First Course in the Finite Element Method]]:
  beam, frame, grid, space-frame 및 isoparametric formulation의 교재 근거

### 20.2 근거의 적용 경계

Tier와 provenance가 정리된 research brief는
`docs/linear-static-3d-euler-beam/research.md`에 있다. Wiki와 원출처는 핵심
beam 이론과 Abaqus component 의미를 제공하고, 이 문서의 DOF 순서,
$\theta_y=-w'$ 부호, guide-vector 축, 12×12 행렬, line-load vector, 결과 위치와
tolerance는 승인된 project requirement/design과 결합한 FESA 계약이다. 따라서 exact
Abaqus B33 내부 알고리즘 동등성이나 full compatibility를 주장하지 않는다.

Research brief의 PARDISO manual 및 deterministic COO-to-CSR 근거 gap은 solver adapter와
assembly 구현 계획의 handoff이며 이 요소의 수학 정식화를 변경하지 않는다. Endpoint
sign-normalization gap은 5.3절과 16.4절의 outward end action/positive-face section-cut
관계로 명시했으며 Numerical Review가 독립 재유도해야 한다.

## 21. Resolved Decisions, Remaining Limitations, and Downstream Handoff

### 21.1 Resolved decisions and remaining limitations

1. Requirement와 research source는 Metadata의 실제 Step 0–1 산출물로 해결되었다.
2. Orientation과 section mapping은 `n1 -> local y`, `t x n1 -> local z`,
   $I_y=I11$, $I_z=I22$, $I12=0$으로 해결되었다.
3. Geometry validation은 3.1절의 scale-aware length/projection 기준으로 해결되었다.
4. Matrix, residual, analytical 및 B33 reference tolerance는 18절의 승인 기준으로
   해결되었다.
5. equilibrium end action, endpoint section resultant, Gauss generalized values 및
   section-point `S11`은 16절에서 위치·component·부호가 구분되었다. Stress reference
   comparison은 N/A이다.
6. Euler–Bernoulli slenderness는 적용 limitation으로 남는다. 공식 자료의 약 $1/15$
   지침을 FESA warning/error threshold로 바꾸지 않는다.
7. Torsional/transverse shear stress, warping, $I12\ne0$, B31/Timoshenko 및 `*DLOAD`
   parser support는 승인 범위 밖이다.

현재 Numerical Review를 막는 미해결 수학 입력은 없다. `ready-for-numerical-review`는
독립 수치 검토 준비 상태이며 정식화 최종 승인이나 release readiness를 뜻하지 않는다.

### 21.2 Numerical Review Agent

- $\theta_y=-w'$와 $M_y=-EI_yw''$ 부호를 독립적으로 재유도한다.
- 4×12 $\mathbf B$ 적분이 12×12 닫힌형과 일치하는지 symbolic/numerical 검사한다.
- 6 rigid-body modes, rank 6, symmetry 및 energy invariance를 검사한다.
- 자연경계력 $F_y,F_z,M_y,M_z$와 요소 끝력 부호를 검사한다.
- 16.4절의 outward equilibrium end action과 positive-face endpoint section resultant
  관계를 양 endpoint에서 독립 재유도한다.
- 2점 Gauss exactness와 1점 적분 rank deficiency를 확인한다.

### 21.3 I/O Definition Agent

- node coordinates, `n1`, $E,\nu,A,I11,I12,I22,J$ 입력과 승인 mapping을 정의한다.
- guide vector 평행, zero length, nonpositive property validation을 정의한다.
- local/global displacement, reaction, equilibrium end action, endpoint section resultant,
  Gauss generalized strain/resultant, section-point axial `S11`의 HDF5 schema와 위치를
  구분한다.
- Abaqus keyword subset은 별도 승인 범위만 정의하며 full compatibility를 주장하지 않는다.

### 21.4 Reference Model Agent

- axial cantilever, torsion cantilever, $y/z$ 양방향 bending cantilever를 분리한다.
- local 축과 일치하는 모델 및 임의 3차원 회전 모델을 모두 준비한다.
- formulation-only uniform line-load kernel은 unit/analytical coverage로 두고 `*DLOAD`
  reference support로 확대하지 않는다.
- 승인된 `reference/cantilever beam/`의 exact legacy path를 read-only로 유지하고
  reference artifact를 생성·수정·복원하지 않는다.

### 21.5 Implementation Planning Agent

TDD 순서는 다음이 적합하다.

1. Hermite 값/미분 및 mapping 단위검사
2. $\mathbf B$ 성분과 닫힌형 $\mathbf K_e^l$ 비교검사
3. rigid modes, symmetry, rank 및 positive-energy 검사
4. 좌표변환 orthogonality와 rotated-element invariance 검사
5. consistent uniform line-load vector 검사
6. axial/torsion/two-plane cantilever 해석해 검사
7. 조립, prescribed displacement 및 reaction 통합검사
8. 결과 복구와 end-action sign 검사

Production C++ 파일을 변경할 때는 관련 C++ test를 먼저 작성해 RED 실패를 확인한
뒤 GREEN 구현과 MSVC x64 Debug/CTest VERIFY를 수행해야 한다.
