5.9 KiB
개발 환경과 실행 방법
최초 준비
Windows에서 Visual Studio의 Desktop development with C++ 워크로드, CMake 3.25 이상,
Ninja, Intel oneAPI MKL·TBB, HDF5 C package와 승인된 GoogleTest 로컬 checkout을 준비한다.
Runner는 Python 3.10 이상, tomllib을 사용하는 Python 검사에는 3.11 이상이 필요하다.
자동 dependency download나 특정 개인 설치 경로를 전제하지 않는다.
저장소 루트를 작업 디렉터리로 하는 MSVC x64 Developer PowerShell을 연다. 일반 PowerShell에서 아래 configure를 먼저 실행하면 compiler와 runtime 환경이 빠질 수 있다. 설치 경로가 환경변수에 없다면 아래 질문에 실제 로컬 경로를 입력한다.
$env:FESA_GTEST_SOURCE_DIR = Read-Host 'GoogleTest source checkout 경로'
$env:MKL_DIR = Read-Host 'MKLConfig.cmake가 있는 디렉터리'
$env:TBB_DIR = Read-Host 'TBBConfig.cmake가 있는 디렉터리'
$env:HDF5_DIR = Read-Host 'hdf5-config.cmake 또는 HDF5Config.cmake가 있는 디렉터리'
Get-Command cl, cmake, ctest, ninja, python
Test-Path -LiteralPath (Join-Path $env:FESA_GTEST_SOURCE_DIR 'CMakeLists.txt')
FESA_GTEST_SOURCE_DIR는 source root, 나머지 세 변수는 CMake package config directory다.
네 값은 현재 프로세스·개인 설정에 두며 저장소의 절대 경로로 고정하지 않는다.
Test-Path가 false이거나 명령이 없으면 먼저 준비 환경을 수정한다.
C++ 구성·빌드·검사
다음 순서로 실행한다. Configure 전에 dependency 경로와 x64 compiler가 준비되어야 하며, build 전에 configure가 성공해야 한다. 각 명령이 실패하면 다음 단계로 진행하지 않는다.
cmake --preset windows-msvc-ninja-debug
cmake --build --preset windows-msvc-ninja-debug
ctest --preset windows-msvc-ninja-debug --show-only=json-v1
ctest --preset windows-msvc-ninja-debug --output-on-failure
Build tree는 .harness/build-ninja-msvc-debug다. CTest discovery는 실제 등록된 검사를
확인하며 0개 검사는 검증 성공이 아니다. 관련 검사만 실행할 때는 같은 preset에 -R로
실제 CTest 이름을 지정한다. 솔버 기능 완료 시 전체 검사와 필수 수치/reference 비교를
수행하고, 문서만 수정할 때는 실행하지 않는다.
설정된 실행기로 검증
개인 .harness/config.json이 이미 있으면 보존하고 실제 선택된 backend를 확인한다.
동일 preset을 사용하려면 다음 설정을 사용한다. 기존 설정을 무조건 덮어쓰지 않는다.
{
"version": 1,
"projectType": "cmake",
"cmake": {
"sourceDir": ".",
"binaryDir": ".harness/build-ninja-msvc-debug",
"configurePreset": "windows-msvc-ninja-debug",
"buildPreset": "windows-msvc-ninja-debug",
"testPreset": "windows-msvc-ninja-debug"
}
}
python scripts/execute.py
실행기는 명령을 한 번 구성·실행하고 compiler metadata와 CTest discovery를 확인한다.
전체 deadline은 CLI 시작부터 1,800초이며 각 명령 제한과 남은 시간 중 짧은 값을 적용한다.
Phase 인자·--push·--approve-danger-full-access를 받지 않는다. 자동 Git·retry·외부
solver 실행이나 필요한 추가 reference 비교의 추론은 하지 않는다.
성공은 exit 0, config/toolchain/backend/timeout 실패는 exit 1이다. 잘못된 CLI 인자나 자동 감지에서 project metadata가 없는 경우는 exit 2다. 원래 backend exit와 runner exit를 구분해 기록하고 출력 tail에 포함된 stage·argv·cwd에서 실패 경계를 찾는다.
Python 검사와 비교 도구
Runner 또는 Python 비교기를 변경하면 관련 Python 검사를 별도로 실행한다. 전체 Python 검사 명령은 다음과 같으며 CTest 실행에 포함되지 않는다.
uv run --with pytest python -B -m pytest -v -rs
HHT 비교 도구에는 Python 3.11 이상과 numpy·h5py가 필요하다. 현재 도구는 지정된
shellNL-dyn-meshfine의 729개 절점 중 선택한 9개 절점, 101 frames의 U/UR 비교용이다.
다음 명령은 이미 생성된 HDF5와 원본 변위 CSV를 비교하며 솔버나 Abaqus를 실행하지 않는다.
다른 모델의 범용 비교기로 사용하지 않는다. Report의 상위 디렉터리는 도구가 생성한다.
$inputPath = Read-Host '비교할 원본 .inp 경로'
$referencePath = Read-Host '원본 변위 CSV 경로'
$resultPath = Read-Host 'FESA HDF5 경로'
$reportPath = Read-Host '비교 보고서 JSON 경로'
uv run --with numpy --with h5py python scripts/verification/compare_hht_dynamic.py --input $inputPath --reference $referencePath --results $resultPath --report $reportPath
Reference 원본을 생성·복원하거나 다른 곳으로 옮기는 명령은 검증 절차에 포함하지 않는다. 원본이 없으면 필요한 경로와 미실행 이유를 보고한다. 외부 solver와 라이선스 사용은 별도 명시된 권한 아래 수행한다.
모델 실행과 배포 상태
성공한 Debug build 뒤 생성된 CLI를 실행한다. 모델 경로는 실제 승인된 입력을 지정한다.
$modelPath = Read-Host '해석할 .inp 경로'
& ./.harness/build-ninja-msvc-debug/src/fesa/fesa.exe $modelPath
입력 옆에 <stem>_results.h5와 <stem>_log.txt를 생성하므로 해당 디렉터리에 쓸 수
있어야 한다. 실행 실패 때 이전 HDF5가 남아 있을 수 있으므로 파일 존재만으로 이번 실행의
성공을 판단하지 않는다. Exit와 진단, 실제 저장된 source identity를 함께 확인한다.
현재 별도의 데이터베이스 초기화·계정 생성·서비스 배포 명령은 없다. 외부 사용자 배포의 형식, 설치 방식, dependency 재배포 조건과 지원 범위는 아직 정하지 않았다. 로컬 실행 성공을 설치·배포 검증으로 간주하지 않는다.