29 lines
989 B
C++
29 lines
989 B
C++
#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<SolidFrequencyState> Execute(const Domain& domain) const;
|
|
|
|
private:
|
|
const EigenSolver* solver_{nullptr};
|
|
};
|
|
} // namespace fesa
|
|
#endif // FESA_ANALYSIS_SOLID_FREQUENCY_PROCEDURE_H_
|