MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
aerodata_impl.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/aero/aerodata_impl.h,v 1.18 2017/01/12 14:45:58 masarati Exp $ */
2 /*
3  * MBDyn (C) is a multibody analysis code.
4  * http://www.mbdyn.org
5  *
6  * Copyright (C) 1996-2017
7  *
8  * Pierangelo Masarati <masarati@aero.polimi.it>
9  * Paolo Mantegazza <mantegazza@aero.polimi.it>
10  *
11  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
12  * via La Masa, 34 - 20156 Milano, Italy
13  * http://www.aero.polimi.it
14  *
15  * Changing this copyright notice is forbidden.
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation (version 2 of the License).
20  *
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */
31 
32 #ifndef AERODATA_IMPL_H
33 #define AERODATA_IMPL_H
34 
35 #include "aerodata.h"
36 
37 /* STAHRAeroData - begin */
38 
39 class STAHRAeroData : public AeroData {
40 protected:
42 
43 public:
45  int i_p, int i_dim,
47  DriveCaller *ptime = 0);
48  virtual ~STAHRAeroData(void);
49 
50  std::ostream& Restart(std::ostream& out) const;
51  int GetForces(int i, const doublereal* W, doublereal* TNG, outa_t& OUTA);
52  int GetForcesJac(int i, const doublereal* W, doublereal* TNG, Mat6x6& J, outa_t& OUTA);
53 };
54 
55 /* STAHRAeroData - end */
56 
57 
58 /* C81AeroData - begin */
59 
60 class C81AeroData : public AeroData {
61 protected:
63  const c81_data* data;
64 
65 public:
67  int i_p, int i_dim,
69  DriveCaller *ptime = 0);
70  virtual ~C81AeroData(void);
71 
72  virtual std::ostream& Restart(std::ostream& out) const;
73  virtual int GetForces(int i, const doublereal* W, doublereal* TNG, outa_t& OUTA);
74  virtual int GetForcesJac(int i, const doublereal* W, doublereal* TNG, Mat6x6& J, outa_t& OUTA);
75 };
76 
77 /* C81AeroData - end */
78 
79 
80 /* C81MultipleAeroData - begin */
81 
84  const c81_data *data;
86 };
87 
88 class C81MultipleAeroData : public AeroData {
89 protected:
90  std::vector<unsigned> profiles;
91  std::vector<doublereal> upper_bounds;
92  std::vector<const c81_data *> data;
94 
95 public:
97  int i_p, int i_dim,
99  std::vector<unsigned>& p,
100  std::vector<doublereal>& ub,
101  std::vector<const c81_data*>& d,
102  DriveCaller *ptime = 0);
103  ~C81MultipleAeroData(void);
104 
105  std::ostream& Restart(std::ostream& out) const;
106  void SetSectionData(const doublereal& abscissa,
107  const doublereal& chord,
108  const doublereal& forcepoint,
109  const doublereal& velocitypoint,
110  const doublereal& twist,
111  const doublereal& omega = 0.);
112 
113  int GetForces(int i, const doublereal* W, doublereal* TNG, outa_t& OUTA);
114  int GetForcesJac(int i, const doublereal* W, doublereal* TNG, Mat6x6& J, outa_t& OUTA);
115 };
116 
117 /* C81MultipleAeroData - end */
118 
119 /* C81InterpolatedAeroData - begin */
120 
122 protected:
123  std::vector<unsigned> profiles;
124  std::vector<doublereal> upper_bounds;
125  std::vector<const c81_data *> data;
126 
127  std::vector<c81_data> i_data;
128 
129 public:
131  int i_p, int i_dim,
133  std::vector<unsigned>& p,
134  std::vector<doublereal>& ub,
135  std::vector<const c81_data *>& d,
136  doublereal dcltol,
137  DriveCaller *ptime = 0);
139 
140  std::ostream& Restart(std::ostream& out) const;
141  void SetSectionData(const doublereal& abscissa,
142  const doublereal& chord,
143  const doublereal& forcepoint,
144  const doublereal& velocitypoint,
145  const doublereal& twist,
146  const doublereal& omega = 0.);
147 
148  int GetForces(int i, const doublereal* W, doublereal* TNG, outa_t& OUTA);
149  int GetForcesJac(int i, const doublereal* W, doublereal* TNG, Mat6x6& J, outa_t& OUTA);
150 };
151 
152 /* C81InterpolatedAeroData - end */
153 
154 /* TheodorsenAeroData - begin */
155 
156 class TheodorsenAeroData : public AeroData {
157 protected:
168 
170 
171 public:
173  int i_p, int i_dim,
174  AeroData *pa, DriveCaller *ptime = 0);
175  virtual ~TheodorsenAeroData(void);
176 
177  virtual std::ostream& Restart(std::ostream& out) const;
178  virtual void SetAirData(const doublereal& rho, const doublereal& c);
179 
180  virtual void SetSectionData(const doublereal& abscissa,
181  const doublereal& chord,
182  const doublereal& forcepoint,
183  const doublereal& velocitypoint,
184  const doublereal& twist,
185  const doublereal& omega = 0.);
186 
187 
188  // aerodynamic models with internal states
189  virtual unsigned int iGetNumDof(void) const;
190  virtual DofOrder::Order GetDofType(unsigned int i) const;
191  virtual void
192  AssRes(SubVectorHandler& WorkVec,
193  doublereal dCoef,
194  const VectorHandler& XCurr,
195  const VectorHandler& XPrimeCurr,
196  integer iFirstIndex, integer iFirstSubIndex,
197  int i, const doublereal* W, doublereal* TNG, outa_t& OUTA);
198  virtual void
199  AssJac(FullSubMatrixHandler& WorkMat,
200  doublereal dCoef,
201  const VectorHandler& XCurr,
202  const VectorHandler& XPrimeCurr,
203  integer iFirstIndex, integer iFirstSubIndex,
204  const Mat3xN& vx, const Mat3xN& wx, Mat3xN& fq, Mat3xN& cq,
205  int i, const doublereal* W, doublereal* TNG, Mat6x6& J, outa_t& OUTA);
206  virtual void
207  AfterConvergence( int i, const VectorHandler& X, const VectorHandler& XP );
208 };
209 
210 /* TheodorsenAeroData - end */
211 
212 #endif // AERODATA_IMPL_H
213 
std::ostream & Restart(std::ostream &out) const
virtual DofOrder::Order GetDofType(unsigned int i) const
int GetForcesJac(int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
virtual void AfterConvergence(int i, const VectorHandler &X, const VectorHandler &XP)
virtual ~TheodorsenAeroData(void)
virtual int GetForcesJac(int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
const c81_data * data
Definition: aerodata_impl.h:63
doublereal * alpha_pivot
std::vector< unsigned > profiles
Definition: aerodata_impl.h:90
virtual void SetSectionData(const doublereal &abscissa, const doublereal &chord, const doublereal &forcepoint, const doublereal &velocitypoint, const doublereal &twist, const doublereal &omega=0.)
virtual void AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, integer iFirstIndex, integer iFirstSubIndex, int i, const doublereal *W, doublereal *TNG, outa_t &OUTA)
std::vector< doublereal > upper_bounds
std::vector< c81_data > i_data
std::ostream & Restart(std::ostream &out) const
int GetForcesJac(int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
STAHRAeroData(int i_p, int i_dim, AeroData::UnsteadyModel u, integer p, DriveCaller *ptime=0)
int GetForces(int i, const doublereal *W, doublereal *TNG, outa_t &OUTA)
virtual ~C81AeroData(void)
void SetSectionData(const doublereal &abscissa, const doublereal &chord, const doublereal &forcepoint, const doublereal &velocitypoint, const doublereal &twist, const doublereal &omega=0.)
C81AeroData(int i_p, int i_dim, AeroData::UnsteadyModel u, integer p, const c81_data *d, DriveCaller *ptime=0)
int GetForcesJac(int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
doublereal * cfy_0
doublereal * prev_dot_alpha
const c81_data * data
Definition: aerodata_impl.h:84
virtual std::ostream & Restart(std::ostream &out) const
doublereal upper_bound
Definition: aerodata_impl.h:85
std::vector< unsigned > profiles
doublereal * dot_alpha_pivot
doublereal prev_time
doublereal * ddot_alpha
doublereal * dot_alpha
virtual int GetForces(int i, const doublereal *W, doublereal *TNG, outa_t &OUTA)
C81InterpolatedAeroData(int i_p, int i_dim, AeroData::UnsteadyModel u, std::vector< unsigned > &p, std::vector< doublereal > &ub, std::vector< const c81_data * > &d, doublereal dcltol, DriveCaller *ptime=0)
std::vector< doublereal > upper_bounds
Definition: aerodata_impl.h:91
doublereal * cmz_0
C81MultipleAeroData(int i_p, int i_dim, AeroData::UnsteadyModel u, std::vector< unsigned > &p, std::vector< doublereal > &ub, std::vector< const c81_data * > &d, DriveCaller *ptime=0)
void SetSectionData(const doublereal &abscissa, const doublereal &chord, const doublereal &forcepoint, const doublereal &velocitypoint, const doublereal &twist, const doublereal &omega=0.)
virtual ~STAHRAeroData(void)
std::vector< const c81_data * > data
int GetForces(int i, const doublereal *W, doublereal *TNG, outa_t &OUTA)
doublereal * cfx_0
UnsteadyModel
Definition: aerodata.h:89
doublereal * prev_alpha_pivot
AeroData * pAeroData
std::ostream & Restart(std::ostream &out) const
virtual void SetAirData(const doublereal &rho, const doublereal &c)
int GetForces(int i, const doublereal *W, doublereal *TNG, outa_t &OUTA)
integer profile
Definition: aerodata_impl.h:62
static std::stack< cleanup * > c
Definition: cleanup.cc:59
doublereal * clalpha
std::vector< const c81_data * > data
Definition: aerodata_impl.h:92
virtual unsigned int iGetNumDof(void) const
virtual void AssJac(FullSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, integer iFirstIndex, integer iFirstSubIndex, const Mat3xN &vx, const Mat3xN &wx, Mat3xN &fq, Mat3xN &cq, int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
integer profile
Definition: aerodata_impl.h:41
TheodorsenAeroData(int i_p, int i_dim, AeroData *pa, DriveCaller *ptime=0)
virtual std::ostream & Restart(std::ostream &out) const