# 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를 수행해야 한다.