47 lines
4.6 KiB
Markdown
47 lines
4.6 KiB
Markdown
# MITC4 eigen 구현 계획
|
||
|
||
- Feature: `mitc4-shell-feast-eigen2`; Owner: 메인 assistant.
|
||
- 기준: [프로젝트 지침](../../AGENTS.md), [PRD](../PRD.md), [ADR](../ADR.md),
|
||
[정식화](formulation.md), [NR controls](numerical-review-controls.md),
|
||
[검증 사례](numerical-review-cases.md), [I/O](io.md).
|
||
- 실행 권한·현재 checklist는 [Feature PRD](PRD.md), 시간 제한 해제는 [Feature ADR](ADR.md)의 ADR-009를 따른다.
|
||
|
||
## 변경 묶음과 소유권
|
||
|
||
| 묶음 | Owner / 실제 경로 | 구현과 검증 |
|
||
| --- | --- | --- |
|
||
| 질량·stabilization | implementation-agent `eigen2_mass_impl`; `include/fesa/elements/mitc4_shell.h`, `src/fesa/elements/mitc4_shell.cpp`, 해당 element unit tests | 27점 consistent moments→derived lumped, trace mean. 독립 flat/warped mass, drill null·좌표/부분 BC와 기존 물리 kernel 검사 |
|
||
| FEAST backend | implementation-agent `eigen2_feast_impl`; 새 `include/fesa/solvers/eigen/`, `src/fesa/solvers/eigen/`와 unit tests | 실제 MKL 호출, fixed-lower count/search, controls·checked storage·all-c 검증·실패 evidence. 실제 known spectra/zero/repeated/endpoint 및 thread 복원 |
|
||
| 입력·Domain | implementation-agent `eigen2_input_impl`; `model_types.h`, `domain.h/.cpp`, `domain_mapping_context.cpp`, eigen mapper/model tests | Material별 density, 독립 Frequency payload와 common boundary view, source Step-2/N 보존, exact allowlist와 fail-closed 진단 |
|
||
| 축소·procedure·state | 메인; 새 `analysis/eigen_*`, 관련 `AnalysisModel`/`DofManager`/prepared/application 연결 | 실제 BC→analytic null→nodal SPD whitening, sparse congruence, original-free 복구·정규화/Gram/에너지, 후보 state. 작은 직접 pencil 및 partial-BC 통합 검증 |
|
||
| 결과·비교·회귀 | 메인 또는 후속 명시 할당 owner; 새 eigen HDF5 writer/self-check, eigen reference comparator, 해당 tests와 기존 제외 inventory 변경 | Static schema 유지, source identity·N/c 구분, candidate 보존, TXT Value-only 공통 tolerance, retained static와 synthetic coverage |
|
||
| 빌드·Git·Feature 기록 | 메인; `src/fesa/CMakeLists.txt`, `tests/CMakeLists.txt`, 이 Feature의 관리/결과 문서 | 동시 빌드 충돌 방지, 명시 경로별 stage/commit, 사용자 변경 보존 |
|
||
|
||
서로 다른 owner의 파일을 덮어쓰지 않는다. Shared API는 구현 전에 메인에 전달하고 불일치는
|
||
계약 원본과 대조하여 수정한다. Vendor type은 private adapter에만 둔다. 이미 승인된 수식을
|
||
다시 선택하거나 시간 절약을 위해 dense global Schur·인공 mass·lower mode 누락을 허용하지 않는다.
|
||
|
||
## 검증 순서
|
||
|
||
1. 현재 설정의 configure/build와 검사 inventory를 확인한다. 가능한 결함 재현 후 최소 수정하고
|
||
[27개 사례](numerical-review-cases.md)와 [IO-T01–11](io.md)에 각 테스트를 연결한다.
|
||
2. 묶음별 unit/integration 검사를 실행한다. Actual FEAST probe는 mock으로 대체하지 않는다.
|
||
수학/자료 조립을 변경하면 필요한 독립 numerical 검토를 받는다.
|
||
3. CLI→원본 입력→HDF5→TXT Value comparison을 fresh 실행한다. 원본 TXT/CSV를 수정하거나
|
||
제외 예제의 옛 경로·복사본·cache로 성공 evidence를 만들지 않는다.
|
||
4. 영향받는 shell/shellNL/linear-limit, nonlinear tangent/objectivity/평형·state,
|
||
pressure synthetic·기타 기존 회귀를 보존한다. 제외된 복합 테스트의 retained 관찰은 분리한다.
|
||
5. 기능 완료 시 구성된 전체 build/test와 필수 reference를 한 번 실행하고 독립 물리 검토와
|
||
실제 결과·실패·미실행을 기록한다. 실패 수치를 expected로 복사하지 않는다. 외부 고유치
|
||
기준은 [ADR-012](ADR.md#mfe2-adr-012--첫-구현의-외부-고유치-5-수용)의 사용자 승인5%를 적용한다.
|
||
|
||
현재 `.harness/config.json`은 `mfe-workspace-msvc-ninja-debug` configure/build/test preset과
|
||
`.harness/build-ninja-msvc-debug`를 선택한다. 개인 preset의 dependency 경로는 commit하지 않는다.
|
||
Focused 실행은 해당 CMake target/CTest filter, 전체 검증은 `python scripts/execute.py`다.
|
||
메인이 빌드 실행을 직렬화한다. C++에는 MSVC x64 Debug `/W4 /WX` 기준을 적용한다.
|
||
|
||
실제 runtime·known spectra와 원본 모델을 실행했다. 현재 결과·수정 범위와 미완료 검증은
|
||
[implementation-verification](implementation-verification.md)에 기록한다. All-c residual은
|
||
ADR-011의 residual stopping으로 해소했다. ADR-012의 첫 구현 범위에서 외부5% 비교와
|
||
필수 mass/실패 보존 evidence를 확인하며 S3는 명시된 후속 과제로 유지한다.
|