#ifndef FESA_ANALYSIS_LINEAR_FREQUENCY_PROCEDURE_H_ #define FESA_ANALYSIS_LINEAR_FREQUENCY_PROCEDURE_H_ #include "fesa/analysis/eigen_analysis_state.h" namespace fesa { class Domain; class EigenSolver; /// @brief Executes the supported linear MITC4 frequency procedure. class LinearFrequencyProcedureExecutor final { public: /// @brief Preserves default FEAST construction for existing callers. LinearFrequencyProcedureExecutor() = default; /// @brief Borrows a solver that must outlive this executor and its calls. explicit LinearFrequencyProcedureExecutor(const EigenSolver& solver) : solver_(&solver) {} /// @brief Builds, solves, and validates one frequency modal candidate. /// @return Requested physical modes plus all-c validation evidence. Result Execute(const Domain& domain) const; private: const EigenSolver* solver_{nullptr}; }; } // namespace fesa #endif // FESA_ANALYSIS_LINEAR_FREQUENCY_PROCEDURE_H_