51 libmesh_assert(!
_roots.size());
65 &den = eig_sol.
betas();
68 unsigned int nvals = (int)
_Bmat.rows();
71 for (
unsigned int i=0; i<nvals; i++) {
95 const unsigned int nvals = this->
n_roots();
96 libmesh_assert_equal_to(nvals, sol.
n_roots());
100 for (
unsigned int i=0; i<nvals-1; i++)
105 unsigned int max_val_root = nvals-1;
106 for (
unsigned int j=i; j<nvals; j++) {
116 if (abs(val) > max_val) {
137 libmesh_assert(this->
n_roots() > 0);
139 const unsigned int nvals = this->
n_roots();
140 unsigned int n_participation_vals =
142 libmesh_assert(nvals);
145 output <<
" Flutter Root " << std::endl;
149 << std::setw(5) <<
"#" 150 << std::setw(15) <<
"k_ref" 151 << std::setw(15) <<
"V_ref" 152 << std::setw(15) <<
"g" 153 << std::setw(15) <<
"omega" 154 << std::setw(15) <<
"Re" 155 << std::setw(15) <<
"Im" 156 << std::setw(3) <<
" | ";
159 for (
unsigned int i=0; i<n_participation_vals; i++)
161 << std::setw(2) <<
" " 162 << std::setw(5) <<
"Mode " 164 << std::setw(2) <<
" ";
167 for (
unsigned int i=0; i<nvals; i++)
169 << std::setw(10) <<
"| " 170 << std::setw(5) <<
"Mode " 172 << std::setw(10) <<
" |";
175 for (
unsigned int i=0; i<nvals; i++)
181 std::stringstream oss;
183 output << std::setw(5) << oss.str();
186 output << std::setw(5) << i;
190 << std::setw(15) << root.
kr 191 << std::setw(15) << root.
V 192 << std::setw(15) << root.
g 193 << std::setw(15) << root.
omega 194 << std::setw(15) << std::real(root.
root)
195 << std::setw(15) << std::imag(root.
root)
196 << std::setw(3) <<
" | ";
199 for (
unsigned int j=0; j<n_participation_vals; j++)
202 << std::setw(2) <<
" ";
205 for (
unsigned int j=0; j<nvals; j++)
208 << std::setw(2) <<
"| " 210 << std::setw(2) <<
" " 212 << std::setw(2) <<
" |";
const MAST::FlutterRootBase & get_root(const unsigned int i) const
ComplexVectorX eig_vec_left
std::vector< MAST::FlutterRootBase * > _roots
ComplexMatrixX _Amat
Matrix used for scaling of eigenvectors, and sorting of roots.
const ComplexMatrixX & left_eigenvectors() const
virtual void init(const Real kr_ref_val, const Real b_ref, const Complex num, const Complex den, const ComplexMatrixX &Bmat, const ComplexVectorX &evec_right, const ComplexVectorX &evec_left)
initializes the data
Matrix< Complex, Dynamic, 1 > ComplexVectorX
const ComplexMatrixX & B() const
virtual ~UGFlutterSolution()
delete the flutter root objects
unsigned int n_roots() const
number of roots in this solution
const ComplexMatrixX & right_eigenvectors() const
virtual void print(std::ostream &output)
prints the data and modes from this solution
Matrix< Complex, Dynamic, Dynamic > ComplexMatrixX
const ComplexVectorX & betas() const
void init(const MAST::UGFlutterSolver &solver, const Real v_ref, const Real b_ref, const MAST::LAPACK_ZGGEV_Base &eig_sol)
initializes the root
Real _ref_val
Reference value of the sweeping parameter for which this solution was obtained.
const ComplexMatrixX & A() const
virtual void sort(const MAST::FlutterSolutionBase &sol)
sort this root with respect to the given solution from a previous eigen solution. ...
const ComplexVectorX & alphas() const
RealVectorX modal_participation
ComplexVectorX eig_vec_right
right and left eigenvevtors
This implements a solver for a single parameter instability problem, for example a flutter solver whe...