#ifndef FESA_ANALYSIS_SOLID_STATIC_PROCEDURE_H_ #define FESA_ANALYSIS_SOLID_STATIC_PROCEDURE_H_ #include "fesa/analysis/solid_static_execution_result.h" namespace fesa { class LinearSolver; class ParallelFor; class TangentSolver; /// @brief Executes linear K0 or fixed-factor TL StVK static analysis. class SolidStaticProcedureExecutor { public: /// @brief Uses non-owned adapters, which must outlive this executor. /// @param tangent_solver Must support indefinite stressed tangents. SolidStaticProcedureExecutor(const ParallelFor& parallel_for, LinearSolver& linear_solver, TangentSolver& tangent_solver); /// @brief Returns validated results; no I/O or final-file replacement. Result Execute(const Domain& domain) const; /// @brief Executes into a fresh observer retaining accepted history on /// failure. /// @note A previously initialized observer is rejected without mutation. Status ExecuteInto(const Domain& domain, SolidStaticState& state) const; private: const ParallelFor& parallel_for_; LinearSolver& linear_solver_; TangentSolver& tangent_solver_; }; } // namespace fesa #endif // FESA_ANALYSIS_SOLID_STATIC_PROCEDURE_H_