4.6 KiB
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를 주장하지 않는다.