Files
FESADev/include/fesa/analysis/linear_frequency_procedure.h
T

31 lines
964 B
C++

#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<EigenAnalysisState> Execute(const Domain& domain) const;
private:
const EigenSolver* solver_{nullptr};
};
} // namespace fesa
#endif // FESA_ANALYSIS_LINEAR_FREQUENCY_PROCEDURE_H_