39 libmesh_assert(!
_roots.size());
54 &den = eig_sol.
betas();
57 nvals = (
unsigned int)
_Bmat.rows();
62 for (
unsigned int i=0; i<nvals; i++) {
83 const unsigned int nvals = this->
n_roots();
84 libmesh_assert_equal_to(nvals, sol.
n_roots());
88 for (
unsigned int i=0; i<nvals-1; i++)
93 unsigned int max_val_root = nvals-1;
94 for (
unsigned int j=i; j<nvals; j++) {
104 if (abs(val) > max_val) {
125 libmesh_assert(this->
n_roots() > 0);
127 const unsigned int nvals = this->
n_roots();
128 unsigned int n_participation_vals =
130 libmesh_assert(nvals);
133 output <<
" Flutter Root " << std::endl;
137 << std::setw(5) <<
"#" 138 << std::setw(15) <<
"k_ref" 139 << std::setw(15) <<
"V_ref" 140 << std::setw(15) <<
"g" 141 << std::setw(15) <<
"omega" 142 << std::setw(15) <<
"Re" 143 << std::setw(15) <<
"Im" 144 << std::setw(3) <<
" | ";
147 for (
unsigned int i=0; i<n_participation_vals; i++)
149 << std::setw(2) <<
" " 150 << std::setw(5) <<
"Mode " 152 << std::setw(2) <<
" ";
155 for (
unsigned int i=0; i<nvals; i++)
157 << std::setw(10) <<
"| " 158 << std::setw(5) <<
"Mode " 160 << std::setw(10) <<
" |";
163 for (
unsigned int i=0; i<nvals; i++)
169 std::stringstream oss;
171 output << std::setw(5) << oss.str();
174 output << std::setw(5) << i;
178 << std::setw(15) << root.
kr 179 << std::setw(15) << root.
V 180 << std::setw(15) << root.
g 181 << std::setw(15) << root.
omega 182 << std::setw(15) << std::real(root.
root)
183 << std::setw(15) << std::imag(root.
root)
184 << std::setw(3) <<
" | ";
187 for (
unsigned int j=0; j<n_participation_vals; j++)
190 << std::setw(2) <<
" ";
193 for (
unsigned int j=0; j<nvals; j++)
196 << std::setw(2) <<
"| " 198 << std::setw(2) <<
" " 200 << std::setw(2) <<
" |";
const MAST::FlutterRootBase & get_root(const unsigned int i) const
ComplexVectorX eig_vec_left
virtual void sort(const MAST::FlutterSolutionBase &sol)
sort this root with respect to the given solution from a previous eigen solution. ...
std::vector< MAST::FlutterRootBase * > _roots
RealMatrixX _stiff_mat
structural stiffness matrix
const ComplexMatrixX & left_eigenvectors() const
Matrix< Complex, Dynamic, 1 > ComplexVectorX
Real _k_red
value of reduced frequency for this solution
const ComplexMatrixX & B() const
unsigned int n_roots() const
number of roots in this solution
const ComplexMatrixX & right_eigenvectors() const
Matrix< Real, Dynamic, Dynamic > RealMatrixX
Matrix< Complex, Dynamic, Dynamic > ComplexMatrixX
virtual void init(const Real k_red_val, const Real V_ref, const Real b_ref, const Complex num, const Complex den, const RealMatrixX &Kmat, const ComplexVectorX &evec_right, const ComplexVectorX &evec_left)
const ComplexVectorX & betas() const
virtual void print(std::ostream &output)
prints the data and modes from this solution
Real _ref_val
Reference value of the sweeping parameter for which this solution was obtained.
ComplexMatrixX _Amat
Matrix used for scaling of eigenvectors, and sorting of roots.
const ComplexMatrixX & A() const
virtual void init(const MAST::PKFlutterSolver &solver, const Real k_red, const Real v_ref, const Real bref, const RealMatrixX &kmat, const MAST::LAPACK_ZGGEV &eig_sol)
initializes the flutter solution from an eigensolution
const ComplexVectorX & alphas() const
RealVectorX modal_participation
ComplexVectorX eig_vec_right
right and left eigenvevtors