Files
FESA/AGENTS.md
T
2026-07-29 23:32:26 +09:00

4.4 KiB

FESA Repository Instructions

적용 범위와 기준 문서

이 파일은 저장소 전체에 적용한다.

  • 제품 요구사항과 Phase 1 수용 조건은 docs/PRD.md를 따른다.
  • 모듈 경계와 데이터 흐름은 docs/ARCHITECTURE.md를 따른다.
  • 기술 선택과 트레이드오프는 docs/ADR.md를 따른다.
  • Harness 실행 방법은 docs/HARNESS.md.agents/skills/harness/SKILL.md를 따른다.
  • 실제 빌드와 테스트 명령은 .harness/config.json과 CMake Preset을 우선한다.

기술 기준

  • 언어 표준: C++20
  • 컴파일러: Visual Studio 2022 MSVC v143
  • 대상 플랫폼: Windows x64
  • 빌드 및 테스트: CMake, CMake Presets, CTest, GoogleTest/GoogleMock
  • 수치 연산 및 희소 직접해법: Intel oneAPI MKL
  • 요소 계산 및 조립 병렬화: Intel oneAPI TBB
  • 결과 저장: HDF5
  • 외부 라이브러리는 개발 환경에 사전 설치된 버전을 사용한다.
  • FESA는 단위 변환을 수행하지 않는다. 입력은 일관 단위계를 사용해야 한다.

Phase 1 범위

  • Abaqus .inp 제한 부분집합으로 작성된 flat/orphan mesh 또는 좌표변환이 없는 단일 Part/Assembly/Instance 모델을 읽는다.
  • 단일 선형 정적 *STEP만 실행한다.
  • 절점당 6자유도를 갖는 2절점 3D Isoparametric Timoshenko Beam만 구현한다.
  • 등방성 선형 탄성, 일반 단면, *BOUNDARY, *CLOAD만 지원한다.
  • 다른 요소, 다중 step, 여러 Instance, Instance 좌표변환, MPC, 분포하중, 비선형, 동적, 모달, 좌굴 및 열전달을 선행 구현하지 않는다.

아키텍처 규칙

  • public header는 include/fesa/, 구현은 src/fesa/, 테스트는 tests/에 둔다.
  • core, model, fem, elements는 Abaqus, MKL, TBB 및 HDF5 API에 의존하지 않는다.
  • io/abaqus는 입력 syntax와 semantic mapping만 담당하며 해석 알고리즘을 알지 않는다.
  • model에는 Abaqus keyword 문자열 대신 solver semantic model을 저장한다.
  • 자유도와 equation ID는 DofManager가 소유한다. NodeElement에 분산 저장하지 않는다.
  • 외부 라이브러리 handle과 resource는 adapter와 RAII wrapper 내부에 가둔다.
  • 테스트 helper가 production parser, model validation 또는 solver 경로를 우회하지 않게 한다.
  • 실제 두 번째 구현이 생기기 전에는 범용 registry, 빈 미래 클래스 또는 디렉터리를 만들지 않는다.

개발 및 검증 절차

  1. 요구조건과 완료 기준을 먼저 문서화한다.
  2. 정식화의 출처, 가정, 좌표계, 부호 및 적분 규칙을 기록한다.
  3. 입력, semantic model 및 HDF5 계약을 구현 전에 확정한다.
  4. 실패하는 단위·통합·reference 테스트와 모델을 먼저 작성한다.
  5. 테스트를 통과하는 최소 코드를 구현한다.
  6. 해석해, physics sanity 및 Abaqus 2024 골든 결과와 비교한다.
  7. 물리량별 tolerance를 통과한 뒤에만 기능 완료와 내부 배포를 선언한다.

추가 규칙:

  • 수직 파이프라인을 먼저 연결하되 임시 가짜 강성행렬은 사용하지 않는다.
  • 같은 입력과 설정의 병렬 조립 결과는 재현 가능해야 한다.
  • 전단강성이 생략되면 (A_{sy}=A_{sz}=5A/6)과 SCF=0을 Phase 1 기본값으로 적용한다.
  • reference 비교는 metadata 없이 요청된 물리량과 CSV 경로를 명시한다. 현재 캔틸레버 샘플은 변위와 반력을 비교하며 요소 내력과 도심 응력 비교 루틴은 synthetic CSV로 검증한다.
  • 새 MSVC 빌드 경고를 추가하지 않는다.
  • 변경은 요청 범위에 한정하고 Conventional Commits 형식의 메시지를 사용한다.

검증 명령

Harness Python 검증:

uv run --with pytest python -m pytest -v -rs

테스트가 0개 수집된 실행은 성공으로 인정하지 않는다.

Solver bootstrap 이후에는 .harness/config.json에 지정된 CMake Preset을 사용한다. Preset이 없을 때만 다음 격리 build directory를 사용한다.

cmake -S . -B .harness/build -A x64
cmake --build .harness/build --config Debug
ctest --test-dir .harness/build -C Debug --output-on-failure

Harness phase 실행:

python scripts/execute.py <phase-name>

사용자가 명시적으로 원격 push를 요청한 경우에만 다음을 사용한다.

python scripts/execute.py <phase-name> --push