20 #ifndef __mast__ug_flutter_solver_h__ 21 #define __mast__ug_flutter_solver_h__ 76 unsigned int n_kr_divs,
77 std::vector<libMesh::NumericVector<Real>*>& basis);
102 virtual std::pair<bool, MAST::FlutterRootBase*>
104 const unsigned int n_bisection_iters);
113 virtual std::pair<bool, MAST::FlutterRootBase*>
115 const unsigned int n_bisection_iters);
131 libMesh::NumericVector<Real>* dXdp =
nullptr,
132 libMesh::NumericVector<Real>* dXdkr =
nullptr);
164 virtual std::unique_ptr<MAST::FlutterSolutionBase>
173 virtual std::pair<bool, MAST::FlutterSolutionBase*>
176 const unsigned int root_num,
178 const unsigned int max_iters);
196 const libMesh::NumericVector<Real>& dXdp,
271 #endif // __mast__ug_flutter_solver_h__
unsigned int _n_kr_divs
number of division in the reference value range for initial scanning
virtual ~UGFlutterSolver()
virtual std::pair< bool, MAST::FlutterSolutionBase * > _bisection_search(const std::pair< MAST::FlutterSolutionBase *, MAST::FlutterSolutionBase * > &ref_sol_range, const unsigned int root_num, const Real g_tol, const unsigned int max_iters)
bisection method search
virtual void print_sorted_roots()
Prints the sorted roots to the output.
This is a scalar function whose value can be changed and one that can be used as a design variable in...
void initialize(MAST::Parameter &kr_param, MAST::Parameter &bref_param, Real rho, Real kr_lower, Real kr_upper, unsigned int n_kr_divs, std::vector< libMesh::NumericVector< Real > * > &basis)
initializes the data structres for a flutter solution.
virtual unsigned int n_roots_found() const
finds the number of critical points already identified in the procedure.
virtual std::pair< bool, MAST::FlutterRootBase * > find_critical_root(const Real g_tol, const unsigned int n_bisection_iters)
This method checks if the flutter root corresponding to the lowest velocity crossover has been calcul...
virtual void print_crossover_points()
Prints the crossover points output.
Matrix< Complex, Dynamic, Dynamic > ComplexMatrixX
bool _include_highest_kr_unstable
flag allows check to see if the root started out as critical at the highest k value.
virtual void calculate_sensitivity(MAST::FlutterRootBase &root, const MAST::FunctionBase &f, libMesh::NumericVector< Real > *dXdp=nullptr, libMesh::NumericVector< Real > *dXdkr=nullptr)
Calculate the sensitivity of the flutter root with respect to the f parameter.
std::pair< Real, Real > _kr_range
range of reference values within which to find flutter roots
void _initialize_matrix_sensitivity_for_param(const MAST::FunctionBase &f, const libMesh::NumericVector< Real > &dXdp, Real kr, ComplexMatrixX &A, ComplexMatrixX &B)
Assembles the reduced order system structural and aerodynmaic matrices for specified flight velocity ...
void _initialize_matrices(Real kr, ComplexMatrixX &A, ComplexMatrixX &B)
Assembles the reduced order system structural and aerodynmaic matrices for specified reduced freq kr...
virtual void scan_for_roots()
Scans for flutter roots in the analyzed points, and identified the divergence (if k_red = 0...
std::multimap< Real, MAST::FlutterRootCrossoverBase * > _flutter_crossovers
the map of flutter crossover points versus average kr of the two bounding roots
void _initialize_matrix_sensitivity_for_kr(Real kr, ComplexMatrixX &A, ComplexMatrixX &B)
Assembles the sensitivity of matrices wrt kr.
MAST::Parameter * _bref_param
reference chord
MAST::Parameter * _kr_param
Parameter that define the reduced frequency.
const MAST::FlutterRootBase & get_root(const unsigned int n) const
returns the n th root in terms of ascending velocity that is found by the solver
virtual void _identify_crossover_points()
identifies all cross-over and divergence points from analyzed roots
std::map< Real, MAST::FlutterSolutionBase * > _flutter_solutions
map of kr sorted flutter solutions
virtual std::unique_ptr< MAST::FlutterSolutionBase > _analyze(const Real kr_ref, const MAST::FlutterSolutionBase *prev_sol=nullptr)
performs an eigensolution at the specified reference value, and sort the roots based on the provided ...
UGFlutterSolver()
defalut constructor
void clear()
clears the solution and other data from this solver
virtual void clear_solutions()
clears the solutions stored from a previous analysis.
This implements a solver for a single parameter instability problem, for example a flutter solver whe...
virtual std::pair< bool, MAST::FlutterRootBase * > find_next_root(const Real g_tol, const unsigned int n_bisection_iters)
Looks through the list of flutter cross-over points and iteratively zooms in to find the cross-over p...