#ifndef FESA_RESULTS_SOLID_RESULTS_WRITER_H_ #define FESA_RESULTS_SOLID_RESULTS_WRITER_H_ #include #include #include "fesa/analysis/solid_dynamic_analysis_state.h" #include "fesa/analysis/solid_frequency_state.h" #include "fesa/analysis/solid_static_state.h" #include "fesa/core/diagnostic.h" #include "fesa/core/status.h" #include "fesa/model/domain.h" namespace fesa { /// @brief Persists only complete typed Solid outcomes, preserving previous /// finals. class SolidResultsWriter { public: virtual ~SolidResultsWriter() = default; /// @brief Writes a complete static history in stable source order. virtual Status Write(const std::filesystem::path&, const Domain&, const SolidStaticState&, const std::vector&) = 0; /// @brief Writes validated modal vectors and all returned-pair evidence. virtual Status Write(const std::filesystem::path&, const Domain&, const SolidFrequencyState&, const std::vector&) = 0; /// @brief Writes nearest Float64 observables of complete physical pairs. /// @note No recovered quantity is recomputed from rounded displacement. virtual Status Write(const std::filesystem::path&, const Domain&, const SolidDynamicAnalysisState&, const std::vector&) = 0; }; } // namespace fesa #endif