31 lines
964 B
C++
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_
|