Files
FESADev/docs/hex8-structural-analysis/reference-model.md
T

75 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hex8 원본과 비교 mapping
기준은 [PRD](PRD.md)의 FEM-REQ-HEX8-022–023와 [공통 수치 정책](../TOLERANCE.md)이다.
Source revision은2382d3a이며 사용자 제공 `reference/hexa/`의5 INP·8 CSV를 read-only로 사용한다.
아래 hash는 현재 Windows working-tree raw bytes(CRLF) 기준이며 Git LF blob hash와 구분한다.
## 원본 inventory
442 nodes/300 C3D8 elements, material E=2.1e11/nu=.3/rho=7850, source Step-1이다.
Static DIRECT h=.1/T=1의 마지막 Increment10을 비교하고 nonlinear은 NLGEOM=YES다.
Dynamic DIRECT h=.1/T=10의 Increment0..100 전체를 비교한다. Amp-1은 `(0,0),(.1,1),(10,1)`다.
Frequency는 original unstressed 상태의10 modes 요청이며 결과 Value는 아직 제공되지 않았다.
원본5개 모두 Set-1의 zero rotational BC4/5/6을 포함한다. 사용자 승인된
[HEX8-ADR-007](ADR.md#hex8-adr-007--inactive-zero-rotational-bc의-한정된-호환-예외)에 따라
이 행만 source warning/no-op으로 처리하며 원본과 실제3N mapping을 보존한다.
| 원본 | CSV rows | SHA-256 raw |
| --- | ---: | --- |
| `hexa_dynlinear.inp` | — | `f8db81b8ea56b689ab0ad892e6a84b7c6a0162c9d3ff95328ea99722f3de078e` |
| `hexa_dynlinear_U.csv` | 44642 | `623c20489e8cc18d23fa1728563ce5a26059f321861514ef8569e3d204ef6cb5` |
| `hexa_dynnonlinear.inp` | — | `1685f86f844e8020bf46e1747b949699ac9aff0d7570bd21ec95109399365ff9` |
| `hexa_dynnonlinear_U.csv` | 44642 | `f5832a24577f54838bb49dec86a0dc9668cf43e78953f718a9d3635e0f574226` |
| `hexa_freq.inp` | — | `42cbcec2a8b738f8b6d2c1e13114b8840dccdde6fc3e6f8a43a3272e85d82347` |
| `hexa_linearstatic.inp` | — | `67183909c5dc962a4d4b65ffb81f7bd65b72e89a5d015c8369a8e0226347a647` |
| `hexa_linearstatic_RF.csv` | 442 | `3e04e71ec075ffef098cf4870d77f9c400557fccb375369da8bf67cf67c1e36b` |
| `hexa_linearstatic_S.csv` | 2400 | `8840a502b9d28a91e5685349301a56fed37d2ac62327b71304716b714db577e8` |
| `hexa_linearstatic_U.csv` | 442 | `1ff49aea3ec601cfd796d6a2fb6a4f91be3fc3de9426cdf3744d981216d4bd5f` |
| `hexa_nonlinearstatic.inp` | — | `7858254025b96c6bfe3fb6498605ecf9c473425c2bc3593f5fbdc6902fd7c6cb` |
| `hexa_nonlinearstatic_RF.csv` | 442 | `3ba67a4fb75b2ce3edee13d35b2ea66ac7d52fc16e612c086ed1122a834fee7b` |
| `hexa_nonlinearstatic_S.csv` | 2400 | `a8866a730f0d65b1e3921d504d255b72158b4a2b9ee30fc691712d94982b07ba` |
| `hexa_nonlinearstatic_U.csv` | 442 | `bd6c2fe2b2bb2ffb0bc2ea52f67513c3967a396b5707bbebc9533fde7be25ac6` |
## Quantity와 identity
Static U1/U2/U3 global, RF1/RF2/RF3의 constrained projection, integration-point Cauchy
S11/S22/S33/S12/S13/S23 각각 blocking family다. U/RF는442-row 전체 inventory를 먼저 확인하고,
RF만 실제 constrained components로 투영한다. Free Abaqus RF와 FESA free residual을 비교하지 않는다.
Stress는300×8×6 전부 포함하며 elemental-nodal stress·절점 외삽·평균으로 변환하지 않는다.
Dynamic U는101 frame 각각442×3인 독립 blocking family다. Frequency Value는 mode별 singleton이며
MITC4 eigen scoped5% RMS 예외를 적용하지 않는다.
Key는 source case/step/frame 또는 increment/canonical instance/node 또는 element/IntPt/component다.
CSV header whitespace만 lexical 정규화하고 duplicate/missing/extra/nonfinite required value를
tolerance 전에 실패시킨다. `PART-1-1`과 input raw `Part-1-1`은 기존 Abaqus case 의미로 대응한다.
FESA storage Step-1/frame0과 source name/Increment10의 서로 다른 의미를 유지한다.
Dynamic은 integer increment로 match 후 source decimal time과 binary64 n*h를 대조한다.
Original coordinate는 reference 위치이며 nonlinear current 위치로 바꾸어 맞추지 않는다.
## Integration point convention의 보조 확인
Natural node 순서는 `---,+--,++-,-+-,--+,+-+,+++,-++`, IntPt 순서는
`---,+--,-+-,++-,--+,+-+,-++,+++`다. 뒤의3/4·7/8을 node 순서와 혼동하지 않는다.
전체300×8 point에서 고정 element/IntPt key로 입력 shape의 기준 위치를 계산해 CSV X/Y/Z와
대조했다. 선형/비선형 S 모두 최대 absolute coordinate difference는
`[1.4328052233558708e-7,1.4747179877261374e-7,2.4956611142101792e-6]`이었다.
이 보조 확인의 budget은 coordinate 성분의 uncancelled shape sum에16×float32 eps를 곱했다.
모든 point에서 maximum budget ratio=.112265였다. 이는 단정밀도 수준의 원본 출력 해상도를
기준으로 한 convention sanity check이며 실제 원본 precision metadata의 증명이나 stress값의
PASS가 아니다. Nearest-position matching을 수행하지 않았고 어떤 좌표/ID/값도 수정하지 않았다.
명령은 `python .dryforge/inspect-reference.py`, native exit0이었다. 로컬 raw 보고서는
`.harness/hex8-evidence/reference-inventory.json`이며 해당 ignored evidence를 지속할 사용자 파일로
오인하지 않는다. Formal comparator의 identity/coordinate controls는 동일 의미를 실제 tests로 검증한다.
## 비교 정책과 준비 대기
Common policy: reference-only S=max abs, B=.01S, near-zero error<=B, 일반 relative<=.05,
family RMS/S<=.01, S=0 exact-zero다. 다른 quantities/units/frame을 합쳐 scale을 바꾸지 않는다.
Frequency 원본 quantity/units/mode/step/hash는 제공 후 먼저 확인한다. 결과를 생성·추정하거나
FESA 결과를 reference로 사용하지 않는다. 필수 원본 부재는 미실행/기능 검증 대기다.
Dynamic V/A/reaction/energy의 외부 자료는 없어 independent physical/temporal 검증이 필수다.
현재 inventory/convention 확인은 parser 실행·FESA 수치 결과 비교·기능 검증 PASS가 아니다.