Files
FESADev/docs/linear-static-3d-euler-beam
2026-10-18 14:32:55 +09:00
..
2026-10-18 14:32:55 +09:00

3D Euler–Bernoulli beam 선형 정적 해석

목적과 경계

직선 2절점 B33의 축변형·비틀림·두 방향 굽힘을 해석한다. Prismatic general section, 등방 선형탄성, 작은 변형·회전이 대상이다. B31 전단변형 beam, I12!=0 결합 단면, 소성·좌굴·동적 beam은 포함하지 않는다. LocalEquivalentLoad는 정식화 검산용이며 공개 beam DLOAD 지원을 뜻하지 않는다. 공통 실행·소유권·수치 비교 규칙은 solver-core, 수식·부호·좌표·복구 위치 원문은 정식화를 따른다.

채택한 수식과 이유

각 절점은 global [UX,UY,UZ,URX,URY,URZ]를 가지며 요소는 12 DOF다. Connectivity가 local x를, 입력 guide의 x 직교 투영이 local y를 정하고 z는 외적이다. 퇴화 길이·평행 guide를 임의 축으로 대체하지 않는다. G=E/(2(1+nu)), Iy=I11, Iz=I22이며 양의 A,Iy,Iz,J를 요구한다. 축·비틀림과 Hermite 굽힘의 local stiffness를 두 점 Gauss 순서로 계산하고 global로 변환한다. Endpoint outward action과 단면력은 같은 이름의 값이 아니므로 부호를 별도로 복구한다. 단면 응력은 입력 section point의 local 위치에서 S11로 복구한다. Section point 생략 시 centroid는 fesa-default identity를 가진다.

입력과 결과 대응

*ELEMENT,TYPE=B33, *BEAM GENERAL SECTION,SECTION=GENERAL,ELSET=...,MATERIAL=...를 사용한다. 단면 첫 행은 A,I11,I12,I22,J, 둘째 행은 guide vector다. *SECTION POINTS의 x1,x2는 local y,z 좌표이며 입력 순서를 보존한다. Part·set·identity instance, *ELASTIC, DOF 1–6 *BOUNDARY와 step *CLOAD를 지원한다. 선형 *STATIC의 네 양수 field는 호환성 값이며 증분 loop를 만들지 않는다. 단일 step 결과의 storage identity는 Step-1, frame 0이다. Instance transform, include와 미지원 model keyword는 실패하며 output 요청 allowlist만 warning no-op이다.

HDF5 /steps/Step-1/frames/0 아래 nodal displacement/reaction과 element/section_resultant, end_force_local, generalized_strain, generalized_resultant, stress_s11을 서로 다른 위치 identity로 저장한다.

원본 reference/cantilever beam/ 비교 의미
cantilever beam.inp, cantilever beam displacements.csv 11 nodes의 U1–3→UX–UZ, UR1–3→URX–URZ
cantilever beam reactions.csv RF1–3와 RM1–3의 global nodal reaction
cantilever beam elemental forces.csv 10 elements×2 endpoint; SF1→N, SM1→My, SM2→Mz, SM3→T

Key는 frame·instance·source node이며 endpoint는 source element도 포함한다. 공유 절점의 여러 endpoint를 평균하지 않는다. Abaqus stress equality gate는 없다. 각 family는 reference-only S=max(abs(reference))를 쓴다. abs(reference)<=0.01*S는 absolute error <=0.01*S, 그 밖은 relative error <=5%이며 모든 row와 RMS(error)/S<=1%를 함께 요구한다. S=0이면 FESA도 exact zero다. Free residual·force/moment balance의 내부 정규화 한계는 1e-10이다.

구현과 수명

EulerBeam3D의 Create, LocalStiffness, RecoverBeam이 local 계산을 소유한다. 구현을 대조한다. Domain의 semantic definition은 equation을 저장하지 않으며 AnalysisModel은 non-owning view다. DofManager의 stable mapping→local contribution→ordered global assembly 순서로 진행한다. LinearStaticProcedureExecutor는 Kff factorization 뒤 Ff-Kfc*dc를 풀고 full residual K*d-F로 반력과 평형을 복구한다. BeamResultRecovery는 typed recovery candidate를 채운다. Writer는 검증된 candidate만 직렬화하며 실패한 결과가 기존 최종 HDF5를 덮지 않게 한다.

검증 의미와 교훈

기존 beam reference 비교와 analytical·rigid-mode·endpoint 부호 검산의 통과 기록이 있다. 이 문서 정리는 현재 revision의 새 실행이나 외부 solver 재실행을 뜻하지 않는다. Dense matrix 크기 곱 overflow를 할당 전에 검사하게 된 결함 이력을 기억한다. 빌드 실패 후 No tests were found는 통과가 아니며 discovery와 실행을 함께 확인한다. 변위 일치만으로 단면 응력·반력·end action 정확도를 추론하지 않는다. 외부 검증은 지정된 하나의 cantilever bundle이며 일반 단면·곡선 beam coverage를 주장하지 않는다.