#ifndef FESA_RESULTS_NONLINEAR_RESULTS_WRITER_H_ #define FESA_RESULTS_NONLINEAR_RESULTS_WRITER_H_ #include #include #include "fesa/analysis/nonlinear_analysis_state.h" #include "fesa/core/diagnostic.h" #include "fesa/core/status.h" #include "fesa/model/domain.h" namespace fesa { /// @brief Isolates nonlinear authoritative result storage from solver code. class NonlinearResultsWriter { public: virtual ~NonlinearResultsWriter() = default; /// @brief Writes complete accepted nonlinear frames. /// @param output_path Final authoritative path in the model input directory. /// @param domain Immutable source and semantic model identity. /// @param state Committed state containing every accepted increment frame. /// @param diagnostics Deterministically ordered run diagnostics. /// @return Success only after backend-specific finalization completes. virtual Status Write(const std::filesystem::path& output_path, const Domain& domain, const NonlinearAnalysisState& state, const std::vector& diagnostics) = 0; }; } // namespace fesa #endif // FESA_RESULTS_NONLINEAR_RESULTS_WRITER_H_