MAST
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
ug_flutter_root.cpp
Go to the documentation of this file.
1
/*
2
* MAST: Multidisciplinary-design Adaptation and Sensitivity Toolkit
3
* Copyright (C) 2013-2019 Manav Bhatia
4
*
5
* This library is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Lesser General Public
7
* License as published by the Free Software Foundation; either
8
* version 2.1 of the License, or (at your option) any later version.
9
*
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Lesser General Public License for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public
16
* License along with this library; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
*/
19
20
21
// MAST includes
22
#include "
aeroelasticity/ug_flutter_root.h
"
23
24
25
MAST::UGFlutterRoot::UGFlutterRoot
():
26
MAST
::
FlutterRootBase
()
27
{ }
28
29
30
31
MAST::UGFlutterRoot::UGFlutterRoot
(
const
MAST::UGFlutterRoot
& f):
32
MAST
::
FlutterRootBase
(f)
33
{ }
34
35
36
37
38
void
39
MAST::UGFlutterRoot::init
(
const
Real
kr_ref_val,
40
const
Real
b_ref,
41
const
Complex
num,
42
const
Complex
den,
43
const
ComplexMatrixX
& Bmat,
44
const
ComplexVectorX
& evec_right,
45
const
ComplexVectorX
& evec_left) {
46
47
kr
= kr_ref_val;
48
49
if
(std::abs(den) > 0.) {
50
51
root
= num/den;
52
if
(std::real(
root
) > 0.) {
53
54
V
= sqrt(1./std::real(
root
));
55
g
= std::imag(
root
)/std::real(
root
);
56
omega
=
kr
*
V
/b_ref;
57
if_nonphysical_root
=
false
;
58
}
59
else
{
60
61
V
= 0.;
62
g
= 0.;
63
omega
= 0.;
64
if_nonphysical_root
=
true
;
65
}
66
}
67
68
// calculate the modal participation vector
69
const
unsigned
int
70
nvals = (int)Bmat.rows();
71
eig_vec_right
= evec_right;
72
eig_vec_left
= evec_left;
73
ComplexVectorX
74
k_q = Bmat * evec_right;
75
modal_participation
.resize(nvals, 1);
76
77
for
(
unsigned
int
i=0; i<nvals; i++)
78
modal_participation
(i) = std::abs(std::conj(evec_right(i)) * k_q(i));
79
80
modal_participation
*= (1./
modal_participation
.sum());
81
}
82
83
MAST::FlutterRootBase::omega
Real omega
Definition:
flutter_root_base.h:49
MAST::FlutterRootBase::eig_vec_left
ComplexVectorX eig_vec_left
Definition:
flutter_root_base.h:56
MAST::FlutterRootBase::kr
Real kr
Definition:
flutter_root_base.h:49
MAST::UGFlutterRoot::init
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
Definition:
ug_flutter_root.cpp:39
ComplexVectorX
Matrix< Complex, Dynamic, 1 > ComplexVectorX
Definition:
mast_data_types.h:37
MAST::FlutterRootBase::V
Real V
Definition:
flutter_root_base.h:49
MAST::FlutterRootBase::root
Complex root
Definition:
flutter_root_base.h:51
Real
libMesh::Real Real
Definition:
mast_data_types.h:32
Complex
libMesh::Complex Complex
Definition:
mast_data_types.h:33
MAST::FlutterRootBase::if_nonphysical_root
bool if_nonphysical_root
Definition:
flutter_root_base.h:47
MAST::FlutterRootBase::g
Real g
Definition:
flutter_root_base.h:49
ug_flutter_root.h
ComplexMatrixX
Matrix< Complex, Dynamic, Dynamic > ComplexMatrixX
Definition:
mast_data_types.h:46
MAST::UGFlutterRoot
Definition:
ug_flutter_root.h:29
MAST::UGFlutterRoot::UGFlutterRoot
UGFlutterRoot()
default constructor
Definition:
ug_flutter_root.cpp:25
MAST::FlutterRootBase::modal_participation
RealVectorX modal_participation
Definition:
flutter_root_base.h:58
MAST::FlutterRootBase
Definition:
flutter_root_base.h:29
MAST::FlutterRootBase::eig_vec_right
ComplexVectorX eig_vec_right
right and left eigenvevtors
Definition:
flutter_root_base.h:56
MAST
Definition:
flutter_root_base.h:27
src
aeroelasticity
ug_flutter_root.cpp
Generated by
1.8.11