#ifndef FESA_ANALYSIS_SOLID_HHT_DYNAMIC_PROCEDURE_H_ #define FESA_ANALYSIS_SOLID_HHT_DYNAMIC_PROCEDURE_H_ #include "fesa/analysis/solid_dynamic_execution_result.h" namespace fesa { class LinearSolver; class ParallelFor; class TangentSolver; /// @brief Integrates linear or TL Solid mechanics with constant consistent /// mass. class SolidHhtDynamicProcedureExecutor { public: /// @brief Retains caller-owned adapters which must outlive execution. SolidHhtDynamicProcedureExecutor(const ParallelFor& parallel_for, LinearSolver& mass_solver, TangentSolver& tangent_solver); /// @brief Returns complete accepted history without opening output files. Result Execute(const Domain& domain) const; /// @brief Executes into an empty initialized state, preserving accepted /// history on every failure. Domain must match the state inventory and /// schedule. Status ExecuteInto(const Domain& domain, SolidDynamicAnalysisState& state) const; /// @brief Internal verification only; alpha0 verifies conservative dynamics. /// @note This does not extend the approved INP parameter subset. Status ExecuteIntoForVerification(const Domain& domain, SolidDynamicAnalysisState& state, double alpha) const; private: const ParallelFor& parallel_for_; LinearSolver& mass_solver_; TangentSolver& tangent_solver_; }; } // namespace fesa #endif // FESA_ANALYSIS_SOLID_HHT_DYNAMIC_PROCEDURE_H_