Files
AbaqusSubroutineDev/AGENTS.md
T
2026-06-09 12:27:22 +09:00

2.9 KiB

Project: FESA Harness

기술 스택

  • C++17 이상
  • MSVC on Windows
  • CMake + CTest
  • Abaqus UserSubroutine source in Fortran
  • Intel oneAPI Fortran compiler on Windows
  • Harness scripts in Python 3

아키텍처 규칙

  • CRITICAL: 기본 검증 경로는 python scripts/validate_workspace.py이다.
  • CRITICAL: C++ 빌드는 CMake/MSVC/x64/Debug 기준으로 검증한다.
  • CRITICAL: Abaqus 실행은 기본 검증에서 수행하지 않는다. HARNESS_ABAQUS_VALIDATION=run으로 명시한 경우에만 실행한다.
  • CRITICAL: 새 기능 또는 동작 변경은 테스트를 먼저 작성하고 실패를 확인한 뒤 구현한다.
  • CRITICAL: Abaqus reference artifact나 solver 코드 복원은 명시적으로 요청된 phase에서만 수행한다.
  • Codex custom agent의 model_reasoning_effort 기본값은 extra high로 둔다.
  • Harness runner는 scripts/execute.py에 둔다.
  • Codex hook 정책은 .codex/hooks/에 둔다.
  • Harness planning/review instructions are stored in .codex/skills/.
  • Generated phase execution outputs remain ignored under phases/**/step*-output.json.

개발 프로세스

  • TDD를 기본으로 한다. C++ production file을 바꿀 때는 관련 C++ test file이 있어야 한다.
  • Fortran user subroutine production file을 바꿀 때는 관련 no-Abaqus Fortran/Python driver test가 있어야 한다.
  • 커밋 전 hook은 Harness Python self-test와 workspace validation을 실행해야 한다.
  • 커밋 메시지는 conventional commits 형식을 따른다: feat:, fix:, docs:, refactor:, test:.
  • 계획이 필요한 장기 작업은 Harness phase로 나누고, 각 step은 독립 실행 가능해야 한다.

명령어

python -m unittest discover -s scripts -p "test_*.py"
python scripts/validate_workspace.py
python scripts/validate_fortran.py
python scripts/validate_reference_artifacts.py
python scripts/execute.py <phase-dir>
python scripts/execute.py <phase-dir> --push

MSVC 검증 기본값

  • Generator: Visual Studio 17 2022
  • Platform: x64
  • Config: Debug
  • Build directory: build/msvc-debug

Override variables:

  • HARNESS_VALIDATION_COMMANDS
  • HARNESS_CMAKE_GENERATOR
  • HARNESS_CMAKE_PLATFORM
  • HARNESS_CMAKE_CONFIG
  • HARNESS_BUILD_DIR

Abaqus / Fortran 검증 기본값

  • HARNESS_FORTRAN_VALIDATION=auto: tests/fortran/manifest.json이 있으면 Intel Fortran no-Abaqus tests를 실행한다.
  • HARNESS_FORTRAN_COMPILER=auto: ifx를 우선 사용하고, 없으면 ifort를 사용한다.
  • HARNESS_ONEAPI_VARS_BAT: Intel oneAPI 환경 설정 batch file override.
  • HARNESS_ABAQUS_VALIDATION=off: 기본값이며 Abaqus job을 실행하지 않는다.
  • HARNESS_ABAQUS_VALIDATION=detect: Abaqus executable 탐지만 수행한다.
  • HARNESS_ABAQUS_VALIDATION=run: HARNESS_ABAQUS_VALIDATION_COMMANDS에 명시된 Abaqus command만 실행한다.
  • HARNESS_ABAQUS_USE_ONEAPI_ENV=auto: Abaqus run command 앞에 oneAPI 환경 설정을 자동 적용할 수 있다.