#ifndef FESA_ANALYSIS_SOLID_FREQUENCY_PROCEDURE_H_ #define FESA_ANALYSIS_SOLID_FREQUENCY_PROCEDURE_H_ #include "fesa/analysis/solid_frequency_state.h" namespace fesa { class Domain; class EigenSolver; /// @brief Executes unloaded reference-state C3D8 generalized frequency /// analysis. class SolidFrequencyProcedureExecutor final { public: /// @brief Preserves default FEAST construction for existing callers. SolidFrequencyProcedureExecutor() = default; /// @brief Borrows a solver that must outlive this executor and its calls. explicit SolidFrequencyProcedureExecutor(const EigenSolver& solver) : solver_(&solver) {} /// @brief Returns lowest requested modes after validating every returned /// pair. /// @note Domain is immutable and must remain alive during execution. Result Execute(const Domain& domain) const; private: const EigenSolver* solver_{nullptr}; }; } // namespace fesa #endif // FESA_ANALYSIS_SOLID_FREQUENCY_PROCEDURE_H_