5.5 KiB
Step 1: nonlinear-static-domain-contract
과거 개발 계획이다. 아래 작업·상태·예시는 현재 실행 지시가 아니다. 현재 구현과 검증 한계는 기능 요약을 따른다.
읽어야 할 파일
AGENTS.md../../docs/solver-core/README.md../../docs/solver-core/README.md../../docs/nonlinear-static-newton-raphson/README.md../../docs/nonlinear-static-newton-raphson/README.md../../docs/nonlinear-static-newton-raphson/README.md../../docs/nonlinear-static-newton-raphson/README.mdinclude/fesa/model/model_types.hinclude/fesa/model/domain.hsrc/fesa/model/domain.cppsrc/fesa/io/abaqus/step_definition_mapper.cppsrc/fesa/io/abaqus/domain_mapping_context.hsrc/fesa/io/abaqus/domain_mapping_context.cpptests/unit/model/model_types_test.cpptests/unit/model/domain_test.cpptests/unit/io/abaqus/domain_mapper_test.cpptests/unit/io/abaqus/domain_mapping_components_test.cpp- Step 0 files:
include/fesa/app/output_paths.h,include/fesa/analysis/analysis.h,src/fesa/app/fesa_application.cpp
이전 Step 전제
Step 0이 app-level path/log request fields를 만들었고 기존 linear invocation이 <stem>_results.h5를 사용한다.
소유 파일
- Modify:
include/fesa/model/model_types.h - Modify:
include/fesa/model/domain.h - Modify:
src/fesa/model/domain.cpp - Modify:
src/fesa/io/abaqus/step_definition_mapper.cpp - Modify:
src/fesa/io/abaqus/domain_mapping_context.h - Modify:
src/fesa/io/abaqus/domain_mapping_context.cpp - Test:
tests/unit/model/model_types_test.cpp - Test:
tests/unit/model/domain_test.cpp - Test:
tests/unit/io/abaqus/domain_mapper_test.cpp - Test:
tests/unit/io/abaqus/domain_mapping_components_test.cpp
인터페이스
namespace fesa {
enum class StaticProcedureKind {
kLinearSmallDisplacement,
kNonlinearFullNewton
};
struct StaticStepDefinition {
std::string name;
std::vector<PrescribedDisplacementDefinition> boundaries;
std::vector<NodalLoad> loads;
StaticProcedureKind procedure_kind;
bool nlgeom;
double initial_increment;
double time_period;
double minimum_increment;
double maximum_increment;
SourceLocation location;
};
class StepDefinition {
public:
StaticProcedureKind ProcedureKind() const noexcept;
bool IsNonlinearStatic() const noexcept;
double InitialIncrement() const noexcept;
double TimePeriod() const noexcept;
double MinimumIncrement() const noexcept;
double MaximumIncrement() const noexcept;
};
} // namespace fesa
Domain stores procedure identity and raw four *STATIC values only. Factor sequence is derived in Step 5. PRESELECT output requests are warning no-ops and do not create Domain, Analysis, or HDF5 state.
RED
Add tests first.
NSNR-IO-001:*STEP, NLGEOM=YESmaps toStaticProcedureKind::kNonlinearFullNewton.NSNR-IO-002:*STEP, NLGEOM=NOmaps tokLinearSmallDisplacementand existing shell linear tests keep passing.NSNR-IO-003: missingNLGEOMkeeps current linear behavior.NSNR-IO-004: nonlinear*STATICrequires four finite positive values and time period exactly1.0.NSNR-IO-005: raw values are preserved inStepDefinitionwithout derived factor list.NSNR-IO-006: unsupported nonlinear procedure or mixed linear/nonlinear steps fail closed withunsupported-analysis-procedure.NSNR-IO-007: S4 and S4R shell definitions remain approved nonlinear semantic inputs.NSNR-IO-008: mixed B33/S4 nonlinear model fails withunsupported-mixed-element-model.NSNR-IO-009:*OUTPUT, FIELD, VARIABLE=PRESELECTis accepted with deterministic warning and no Domain state.NSNR-IO-010:*OUTPUT, HISTORY, VARIABLE=PRESELECTis accepted with deterministic warning and no Domain state.NSNR-IO-011: malformed PRESELECT parameters fail as input errors.
Run:
cmake --build --preset windows-msvc-ninja-debug
ctest --preset windows-msvc-ninja-debug -R "Domain|DomainMapping|Abaqus" --output-on-failure
Expected: new tests fail. Unexpected pass stops the Step.
GREEN
- Extend
StaticStepDefinitionandStepDefinitionexactly with the fields and accessors above. - Update domain construction so source-order boundaries and loads remain deterministic.
- Update
domain_mapping_contextto parseNLGEOM=YES, preserve raw*STATIC, emit PRESELECT warnings, and keep PRESELECT out of Domain state. - Preserve existing linear shell and beam mappings.
VERIFY
cmake --preset windows-msvc-ninja-debug
cmake --build --preset windows-msvc-ninja-debug
ctest --preset windows-msvc-ninja-debug -R "Domain|DomainMapping|Abaqus" --output-on-failure
ctest --preset windows-msvc-ninja-debug --show-only=json-v1
ctest --preset windows-msvc-ninja-debug --output-on-failure
Use the ignored 과거 검증 자료(정리됨) preset contract. The Harness process must inherit VsDevCmd x64 and FESA_GTEST_SOURCE_DIR, MKL_DIR, TBB_DIR, and HDF5_DIR from its parent launch environment.
상태 기록
Only Step 1 status and one-line summary/error/blocked payload may be updated by the Implementation Agent. Executor owns timestamps, commits, retry, and next Step selection.
금지사항
- Do not add
LoadFactorSequence()to Domain. 이유: factor sequence ownership belongs to Step 5 control. - Do not store PRESELECT flags in Domain or HDF5 state. 이유: approved I/O contract makes PRESELECT an ignored warning no-op.
- Do not alter requirements or I/O docs. 이유: upstream contracts are approved.