docs: organize project guidance and module contracts
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# FESA 해석의 의미와 제품 범위
|
||||
|
||||
## 목적과 사용자
|
||||
|
||||
FESA의 현재 목적은 개인 연구를 위한 유한요소 솔버 개발이다. 사용자는 요소·해법을
|
||||
구현하는 개발자이면서 결과를 검증하는 해석자다. 외부 사용자 배포는 장기 목표이며,
|
||||
배포 계획이 현재 지원 범위나 정확성 보장을 확대하지는 않는다.
|
||||
|
||||
제품 가치는 승인된 모델에서 물리적으로 설명 가능하고 재현 가능한 결과를 얻는 데 있다.
|
||||
외부 입력을 읽었다는 사실이나 요소 행렬 하나를 계산했다는 사실만으로 기능을 완성했다고
|
||||
판정하지 않는다. 입력 의미, 방정식, 해법, 결과와 독립 검증이 연결되어야 한다.
|
||||
|
||||
## 모델과 물리량
|
||||
|
||||
- Source label은 instance와 함께 입력의 대상을 식별한다. 내부 배열 위치나 equation
|
||||
번호가 같다는 이유로 다른 instance의 같은 label을 합치지 않는다.
|
||||
- 입력 단위는 사용자가 일관되게 선택한다. 좌표나 물성의 크기로 SI 단위를 추정하거나
|
||||
자동 변환하지 않는다. 힘·길이·시간을 기본으로 쓰면 질량은 `force*time^2/length`다.
|
||||
- 절점 변위, 회전, 단면력, 응력은 위치와 좌표계를 포함한 물리량이다. 요소 끝 작용력과
|
||||
양의 local-x 단면력, 적분점 응력과 절점 평균 응력은 서로 대체할 수 없다.
|
||||
- 유효한 재료·단면·연결 관계가 유일하게 결정되어야 해석한다. 누락된 재료를 다른
|
||||
영역의 평균값으로 채우거나 잘못된 요소를 조용히 제거하지 않는다.
|
||||
- 미지원 의미는 명확한 실패다. 출력만 제어하는 무해한 요청의 무시도 해당 해석 절차에서
|
||||
허용한 조합에 한정한다. 한 절차의 예외를 다른 절차로 확대하지 않는다.
|
||||
|
||||
## 외부 솔버와의 관계
|
||||
|
||||
Abaqus `.inp`의 승인된 일부 문법을 입력으로 사용한다. `S4`와 `S4R`라는 source 표기를
|
||||
보존하지만 FESA의 MITC4 정식화에 연결한다. Abaqus의 요소 내부 적분, 안정화, 상태 또는
|
||||
결과 생성 알고리즘이 같다는 뜻이 아니다. 공개 결과의 수치적 일치는 허용되지만 내부
|
||||
동등성을 증명하지 않는다.
|
||||
|
||||
기존 reference는 같은 `.inp` 모델로 생성한 외부 결과다. 비교 대상에는 CSV 외에
|
||||
고유치 TXT도 있으며, 실제 필요한 원본 경로를 사용한다. Naming 규칙이나 추가 metadata를
|
||||
맞추기 위해 기준 데이터를 변경하지 않는다.
|
||||
|
||||
## 정적 해석
|
||||
|
||||
선형 정적 해석에서 free/constrained 분할은 다음 관계를 보존한다.
|
||||
|
||||
\[
|
||||
K_{ff}d_f=F_f-K_{fc}d_c,\qquad r=Kd-F.
|
||||
\]
|
||||
|
||||
지정 변위는 해 복구 뒤에도 정확히 유지된다. `r`의 constrained 성분은 반력,
|
||||
free 성분은 평형 잔차다. 모든 자유도가 지정된 유효한 모델은 빈 free 방정식을
|
||||
갖는 해석이지 singular 모델이 아니다. 반력을 외력의 부호 반전만으로 계산하지 않는다.
|
||||
|
||||
비선형 정적 해석은 증가분마다 trial과 accepted 상태를 구분한다. 회전벡터에 대한
|
||||
일반화 모멘트와 공간상의 물리 모멘트를 같은 성분으로 취급하지 않는다. 수렴한 변위만
|
||||
있고 recovery나 상태 검증이 실패했다면 해당 증가분을 정상 결과로 공개하지 않는다.
|
||||
|
||||
물리 변형에너지와 수치 drilling 안정화 에너지는 구별한다. 안정화가 선형계를 풀 수 있게
|
||||
했다는 사실을 물리 강성·에너지의 정확성 증거로 사용하지 않는다.
|
||||
|
||||
## 고유치와 동해석
|
||||
|
||||
현재 MITC4 고유치 해석은 원형상·무응력 선형 섭동의 고유쌍을 구한다. Consistent
|
||||
질량에서 유도한 lumped 질량으로 해석·정규화·검증을 일관되게 수행한다. Source의
|
||||
`EIGENSOLVER=LANCZOS`는 실제 FEAST 계산과 구별한다. 질량 영공간에 임의 질량을 더해
|
||||
유한 모드로 바꾸지 않는다.
|
||||
|
||||
HHT 동해석은 consistent kinetic mass를 사용한다. 고유치 해석의 lumped 선택을 그대로
|
||||
가져오지 않는다. 물리적 endpoint 가속도, 회전벡터의 시간 미분, 공간 각가속도,
|
||||
알고리즘 보조 가속도를 구별한다. 어느 하나의 reference 일치로 다른 양의 시간수렴을
|
||||
통과했다고 판정하지 않는다. 현재 shell 시간수렴에는 미해결 문제가 있다.
|
||||
|
||||
## 열해석의 합의된 향후 범위
|
||||
|
||||
가까운 목표는 shell의 단일 step uncoupled transient heat transfer다. 두께가 균질한
|
||||
단면에 온도점 5개를 두고 면내 및 두께 방향 열전달을 다룬다. 상수 등방 전도도·밀도·비열,
|
||||
영역별 재료·두께, 고정 시간 증분과 시간에 따라 일정한 입력이 합의된 범위다.
|
||||
|
||||
초기 온도는 절점마다 지정하되 그 절점의 두께 온도점에는 같은 값을 준다. 지정 온도와
|
||||
절점 열률은 아랫면·윗면에 적용하고, edge 열입력은 두께에 걸쳐 균일하게 적용한다.
|
||||
온도·heat flux·반력 열률의 저장을 요구한다. 5개 온도점에서 source DOF 11은 아랫면,
|
||||
13은 중앙면, 15는 윗면이다.
|
||||
|
||||
Q4 면내 보간과 두 구간의 이차 두께 보간, consistent 열용량, Backward Euler와 flux
|
||||
복구 위치는 아직 제안이다. Geometry 근사, 초기 경계 jump, edge 문법·단위와 영속 결과
|
||||
schema를 확정한 뒤 구현한다. 장기 목표인 양방향 열-구조 연성은 현재 열해석의 완료
|
||||
조건에 포함하지 않는다.
|
||||
|
||||
## 수용과 실패
|
||||
|
||||
결과가 finite이고 방정식이 풀렸다는 것만으로 correctness를 인정하지 않는다. 해당
|
||||
물리에 필요한 평형·반력·에너지·영모드·수렴·대칭성과 독립 비교를 확인한다. 외부
|
||||
reference 오차 기준은 내부 잔차나 시간수렴 기준을 대신하지 않는다.
|
||||
|
||||
기준 데이터의 row 누락·추가·중복, 좌표·위치 불일치, nonfinite는 수치 오차 판정 이전의
|
||||
실패다. 불일치를 평균하거나 임의의 `max(1, scale)` 및 zero clamp로 숨기지 않는다.
|
||||
실패한 trial과 미완성 출력은 정상 결과가 아니며, 계약된 범위에서 기존 유효 상태와
|
||||
최종 결과 파일을 보존한다.
|
||||
Reference in New Issue
Block a user