docs: clarify linear static beam contracts

This commit is contained in:
KOKO\Mimi
2026-08-08 01:05:41 +09:00
parent 8cc45d39c3
commit c1396ef127
@@ -44,6 +44,7 @@ authoritative HDF5 파일 `results.h5`에 기록하는 FESA V0 파이프라인
- 절점당 자유도 `[UX, UY, UZ, URX, URY, URZ]` - 절점당 자유도 `[UX, UY, UZ, URX, URY, URZ]`
- 축, 두 방향 굽힘, Saint-Venant 비틀림 - 축, 두 방향 굽힘, Saint-Venant 비틀림
- nodal concentrated load와 prescribed displacement - nodal concentrated load와 prescribed displacement
- formulation의 constant local line-load equivalent nodal vector kernel
- nonzero prescribed displacement를 포함한 자유/구속 partition - nonzero prescribed displacement를 포함한 자유/구속 partition
- deterministic COO-to-CSR sparse assembly - deterministic COO-to-CSR sparse assembly
- MKL PARDISO factorization과 substitution의 분리 - MKL PARDISO factorization과 substitution의 분리
@@ -58,7 +59,7 @@ authoritative HDF5 파일 `results.h5`에 기록하는 FESA V0 파이프라인
- 다중 analysis step과 step 간 load/BC propagation - 다중 analysis step과 step 간 load/BC propagation
- instance translation/rotation, nested assembly, dependent/independent mesh 차이 - instance translation/rotation, nested assembly, dependent/independent mesh 차이
- `I12 != 0`, taper, offset, release, curved beam, warping - `I12 != 0`, taper, offset, release, curved beam, warping
- distributed load용 Abaqus `*DLOAD` 입력 - distributed load용 Abaqus `*DLOAD` 입력과 Domain load object 생성
- 기하·재료비선형, dynamics, contact, thermal effects - 기하·재료비선형, dynamics, contact, thermal effects
- transverse shear stress와 torsional shear stress recovery - transverse shear stress와 torsional shear stress recovery
- beam stress에 대한 Abaqus reference comparison - beam stress에 대한 Abaqus reference comparison
@@ -75,7 +76,7 @@ authoritative HDF5 파일 `results.h5`에 기록하는 FESA V0 파이프라인
| ---: | --- | --- | | ---: | --- | --- |
| 0 | `requirements-baseline` | `docs/requirements/linear-static-3d-euler-beam.md` | | 0 | `requirements-baseline` | `docs/requirements/linear-static-3d-euler-beam.md` |
| 1 | `research-evidence` | `docs/research/linear-static-3d-euler-beam-research.md` | | 1 | `research-evidence` | `docs/research/linear-static-3d-euler-beam-research.md` |
| 2 | `formulation-alignment` | 승인 범위와 정렬된 기존 beam formulation | | 2 | `formulation-alignment` | `docs/formulations/3d-isoparametric-euler-beam-formulation.md` |
| 3 | `numerical-review` | `docs/numerical-reviews/linear-static-3d-euler-beam-review.md` | | 3 | `numerical-review` | `docs/numerical-reviews/linear-static-3d-euler-beam-review.md` |
| 4 | `io-contract` | `docs/io-definitions/linear-static-3d-euler-beam-io.md` | | 4 | `io-contract` | `docs/io-definitions/linear-static-3d-euler-beam-io.md` |
| 5 | `reference-model-contract` | `docs/reference-models/linear-static-3d-euler-beam-reference-models.md` | | 5 | `reference-model-contract` | `docs/reference-models/linear-static-3d-euler-beam-reference-models.md` |
@@ -176,13 +177,15 @@ V0에서는 velocity, acceleration, temperature, iteration history를 할당하
```cpp ```cpp
Matrix localStiffness() const; Matrix localStiffness() const;
Matrix globalStiffness() const; Matrix globalStiffness() const;
Vector localEquivalentLoad() const; Vector localEquivalentLoad(const ConstantLocalLineLoad& load) const;
BeamRecovery recover(const Vector& globalElementDisplacement) const; BeamRecovery recover(const Vector& globalElementDisplacement) const;
``` ```
요소는 equation ID를 소유하지 않는다. `BeamRecovery`는 endpoint equilibrium end 요소는 equation ID를 소유하지 않는다. `BeamRecovery`는 endpoint equilibrium end
action, endpoint section resultant, Gauss-point generalized strain/resultant, section-point action, endpoint section resultant, Gauss-point generalized strain/resultant, section-point
`S11`을 구분한다. `S11`을 구분한다. `localEquivalentLoad`는 정식화의 constant local line-load vector를
검증하기 위한 element kernel이지만 V0 `.inp` parser는 `*DLOAD`를 생성하지 않으므로
CLI 해석에서는 호출되지 않는다.
### 4.6 LinearSolver 계약 ### 4.6 LinearSolver 계약
@@ -199,7 +202,9 @@ public:
`MklPardisoSolver`는 factorization 상태를 소유하고 같은 matrix에 여러 RHS `MklPardisoSolver`는 factorization 상태를 소유하고 같은 matrix에 여러 RHS
substitution을 수행할 수 있다. singularity와 invalid CSR은 구조화된 diagnostic으로 substitution을 수행할 수 있다. singularity와 invalid CSR은 구조화된 diagnostic으로
반환한다. 반환한다. V0는 constrained `Kff`를 real symmetric positive definite matrix로
factorize하며, positive-definite factorization 실패를 unconstrained, singular 또는
invalid model diagnostic으로 분류한다.
## 5. Matrix, Vector 및 SparseMatrix ## 5. Matrix, Vector 및 SparseMatrix
@@ -250,18 +255,28 @@ column index, values를 소유하고 0-based indexing을 사용한다. PARDISO a
Keyword와 parameter는 case-insensitive이고 label identity는 원문 값을 보존한다. Keyword와 parameter는 case-insensitive이고 label identity는 원문 값을 보존한다.
Comment line은 `**`로 시작한다. Comment line은 `**`로 시작한다.
`*BOUNDARY``target, first_dof, last_dof[, value]` 형식만 지원하고 DOF 범위는
1부터 6까지다. value가 없으면 0으로 해석한다. `*CLOAD`
`target, dof, magnitude` 형식만 지원하고 DOF 범위는 1부터 6까지다. target은 source
node label 또는 node set이며 assembly-level set의 `INSTANCE` parameter를 해석한다.
### 6.2 General beam section mapping ### 6.2 General beam section mapping
`*BEAM GENERAL SECTION, SECTION=GENERAL`의 data는 `*BEAM GENERAL SECTION, SECTION=GENERAL`의 data는
`A, I11, I12, I22, J` 순서로 읽는다. `A, I11, I12, I22, J` 순서로 읽는다.
- `MATERIAL` parameter는 필수이며 해당 `*MATERIAL`의 isotropic `*ELASTIC` data는
정확히 `E, nu`를 제공해야 한다.
- `I12`는 0이어야 한다. - `I12`는 0이어야 한다.
- Abaqus first beam section axis `n1`을 FESA local `y`로 둔다. - Abaqus first beam section axis `n1`을 FESA local `y`로 둔다.
- `t x n1`을 FESA local `z`로 둔다. - `t x n1`을 FESA local `z`로 둔다.
- `Iy = I11`, `Iz = I22`로 매핑한다. - `Iy = I11`, `Iz = I22`로 매핑한다.
- `E`와 Poisson ratio `nu``G = E / (2(1 + nu))`를 계산한다. - `E`와 Poisson ratio `nu``G = E / (2(1 + nu))`를 계산한다.
- `E`, `G`, `A`, `Iy`, `Iz`, `J`는 양수여야 한다. - `E`, `G`, `A`, `Iy`, `Iz`, `J`는 양수여야 한다.
- beam length와 projected guide-vector norm은 승인된 tolerance보다 커야 한다. - `coordinate_scale = max(1, norm(X1), norm(X2))`에 대해
`L > 1e-12 * coordinate_scale`이어야 한다.
- guide vector는 0이 아니어야 하며
`norm(a_perp) > 1e-12 * max(1, norm(a))`이어야 한다.
이 축 계약은 Abaqus의 right-handed `(t, n1, n2)` section system 및 현재 formulation의 이 축 계약은 Abaqus의 right-handed `(t, n1, n2)` section system 및 현재 formulation의
`(x, y, z)` system과 일치한다. `(x, y, z)` system과 일치한다.
@@ -389,6 +404,11 @@ Authoritative output은 `results.h5` 하나다. 최소 schema는 다음과 같
coordinate convention, element formulation을 기록한다. Node/element group은 stable internal coordinate convention, element formulation을 기록한다. Node/element group은 stable internal
ID와 instance/source label mapping을 함께 저장한다. ID와 instance/source label mapping을 함께 저장한다.
Abaqus `.inp` 자체에는 단위 선언이 없으므로 일반 solver run의 unit-system label은
`user-consistent-unspecified`로 기록한다. Reference comparison에서는 별도
`metadata.json`이 선언한 단위계를 authoritative unit label로 사용하며, solver가 입력
파일만 보고 SI를 추론하지 않는다.
- displacement: `[node_count, 6]` - displacement: `[node_count, 6]`
- reaction: `[node_count, 6]` - reaction: `[node_count, 6]`
- end force: `[element_count, 2, 6]` - end force: `[element_count, 2, 6]`
@@ -524,4 +544,3 @@ gate evidence와 known limitations를 확인한다.
통과한다. 통과한다.
7. Physics sanity가 pass한다. 7. Physics sanity가 pass한다.
8. Release report에 지원 subset과 모든 V0 제한사항이 기록된다. 8. Release report에 지원 subset과 모든 V0 제한사항이 기록된다.