MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
C81MultipleAeroData Class Reference

#include <aerodata_impl.h>

Inheritance diagram for C81MultipleAeroData:
Collaboration diagram for C81MultipleAeroData:

Public Member Functions

 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)
 
 ~C81MultipleAeroData (void)
 
std::ostream & Restart (std::ostream &out) const
 
void SetSectionData (const doublereal &abscissa, const doublereal &chord, const doublereal &forcepoint, const doublereal &velocitypoint, const doublereal &twist, const doublereal &omega=0.)
 
int GetForces (int i, const doublereal *W, doublereal *TNG, outa_t &OUTA)
 
int GetForcesJac (int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
 
- Public Member Functions inherited from AeroData
 AeroData (int i_p, int i_dim, UnsteadyModel u=STEADY, DriveCaller *pt=0)
 
virtual ~AeroData (void)
 
std::ostream & RestartUnsteady (std::ostream &out) const
 
virtual void SetAirData (const doublereal &rho, const doublereal &c)
 
virtual unsigned int iGetNumDof (void) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
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)
 
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)
 
virtual void AfterConvergence (int i, const VectorHandler &X, const VectorHandler &XP)
 
AeroData::UnsteadyModel Unsteady (void) const
 
- Public Member Functions inherited from AeroMemory
 AeroMemory (DriveCaller *pt)
 
virtual ~AeroMemory (void)
 
void Predict (int i, doublereal alpha, doublereal &alf1, doublereal &alf2)
 
void Update (int i)
 
void SetNumPoints (int i)
 
int GetNumPoints (void) const
 

Protected Attributes

std::vector< unsigned > profiles
 
std::vector< doublerealupper_bounds
 
std::vector< const c81_data * > data
 
integer curr_data
 
- Protected Attributes inherited from AeroData
UnsteadyModel unsteadyflag
 
vam_t VAM
 
doublereal Omega
 
- Protected Attributes inherited from AeroMemory
DriveCallerpTime
 

Additional Inherited Members

- Public Types inherited from AeroData
enum  UnsteadyModel { STEADY = 0, HARRIS = 1, BIELAWA = 2, LAST }
 
enum  {
  VX = 0, VY = 1, VZ = 2, WX = 3,
  WY = 4, WZ = 5, FX = 0, FY = 1,
  FZ = 2, MX = 3, MY = 4, MZ = 5
}
 
- Protected Member Functions inherited from AeroData
int StorageSize (void) const
 
int GetForcesJacForwardDiff_int (int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
 
int GetForcesJacCenteredDiff_int (int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
 

Detailed Description

Definition at line 88 of file aerodata_impl.h.

Constructor & Destructor Documentation

C81MultipleAeroData::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 
)

Definition at line 157 of file aerodata_impl.cc.

References ASSERT, data, profiles, and upper_bounds.

164 : AeroData(i_p, i_dim, u, ptime),
165 profiles(p), upper_bounds(ub), data(d)
166 {
167  ASSERT(!profiles.empty());
168  ASSERT(!upper_bounds.empty());
169  ASSERT(!data.empty());
170  ASSERT(profiles.size() == upper_bounds.size());
171  ASSERT(profiles.size() == data.size());
172 }
std::vector< unsigned > profiles
Definition: aerodata_impl.h:90
std::vector< doublereal > upper_bounds
Definition: aerodata_impl.h:91
#define ASSERT(expression)
Definition: colamd.c:977
std::vector< const c81_data * > data
Definition: aerodata_impl.h:92
AeroData(int i_p, int i_dim, UnsteadyModel u=STEADY, DriveCaller *pt=0)
Definition: aerodata.cc:181
C81MultipleAeroData::~C81MultipleAeroData ( void  )

Definition at line 174 of file aerodata_impl.cc.

References NO_OP.

175 {
176  NO_OP;
177 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

int C81MultipleAeroData::GetForces ( int  i,
const doublereal W,
doublereal TNG,
outa_t OUTA 
)
virtual

Reimplemented from AeroData.

Definition at line 215 of file aerodata_impl.cc.

References outa_t::alf1, outa_t::alf2, ASSERT, grad::atan2(), AeroData::BIELAWA, c81_aerod2_u(), curr_data, data, AeroData::HARRIS, AeroMemory::Predict(), AeroData::unsteadyflag, AeroData::VAM, AeroData::VX, and AeroData::VY.

216 {
217  switch (unsteadyflag) {
218  case AeroData::HARRIS:
219  case AeroData::BIELAWA:
220  Predict(i, atan2(-W[VY], W[VX]), OUTA.alf1, OUTA.alf2);
221  break;
222 
223  default:
224  break;
225  }
226 
227  ASSERT(i >= 0);
228  ASSERT(unsigned(i) < data.size());
229 
230  return c81_aerod2_u(const_cast<doublereal *>(W), &VAM, TNG, &OUTA,
231  const_cast<c81_data *>(data[curr_data]), unsteadyflag);
232 }
vam_t VAM
Definition: aerodata.h:117
doublereal alf1
Definition: aerodc81.h:70
int c81_aerod2_u(doublereal *W, const vam_t *VAM, doublereal *TNG, outa_t *OUTA, c81_data *data, long unsteadyflag)
Definition: aerodc81.c:243
void Predict(int i, doublereal alpha, doublereal &alf1, doublereal &alf2)
Definition: aerodata.cc:65
doublereal alf2
Definition: aerodc81.h:71
UnsteadyModel unsteadyflag
Definition: aerodata.h:116
#define ASSERT(expression)
Definition: colamd.c:977
std::vector< const c81_data * > data
Definition: aerodata_impl.h:92
GradientExpression< BinaryExpr< FuncAtan2, LhsExpr, RhsExpr > > atan2(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
Definition: gradient.h:2962

Here is the call graph for this function:

int C81MultipleAeroData::GetForcesJac ( int  i,
const doublereal W,
doublereal TNG,
Mat6x6 J,
outa_t OUTA 
)
virtual

Reimplemented from AeroData.

Definition at line 235 of file aerodata_impl.cc.

References AeroData::GetForcesJacForwardDiff_int().

236 {
237  return AeroData::GetForcesJacForwardDiff_int(i, W, TNG, J, OUTA);
238 }
int GetForcesJacForwardDiff_int(int i, const doublereal *W, doublereal *TNG, Mat6x6 &J, outa_t &OUTA)
Definition: aerodata.cc:271

Here is the call graph for this function:

std::ostream & C81MultipleAeroData::Restart ( std::ostream &  out) const
virtual

Implements AeroData.

Definition at line 180 of file aerodata_impl.cc.

References profiles, AeroData::RestartUnsteady(), and upper_bounds.

181 {
182  out << "C81, multiple";
183  for (unsigned i = 0; i < profiles.size(); i++) {
184  out << ", " << profiles[i] << ", " << upper_bounds[i];
185  }
186 
187  return RestartUnsteady(out);
188 }
std::ostream & RestartUnsteady(std::ostream &out) const
Definition: aerodata.cc:252
std::vector< unsigned > profiles
Definition: aerodata_impl.h:90
std::vector< doublereal > upper_bounds
Definition: aerodata_impl.h:91

Here is the call graph for this function:

void C81MultipleAeroData::SetSectionData ( const doublereal abscissa,
const doublereal chord,
const doublereal forcepoint,
const doublereal velocitypoint,
const doublereal twist,
const doublereal omega = 0. 
)
virtual

Reimplemented from AeroData.

Definition at line 191 of file aerodata_impl.cc.

References ASSERT, curr_data, profiles, AeroData::SetSectionData(), and upper_bounds.

198 {
199  ASSERT(abscissa >= -1. && abscissa <= 1.);
200 
201  AeroData::SetSectionData(abscissa, chord, forcepoint, velocitypoint,
202  twist, omega);
203 
204  for (int i = profiles.size() - 1; i--; ) {
205  if (abscissa > upper_bounds[i]) {
206  curr_data = i + 1;
207  return;
208  }
209  }
210 
211  curr_data = 0;
212 }
virtual void SetSectionData(const doublereal &abscissa, const doublereal &chord, const doublereal &forcepoint, const doublereal &velocitypoint, const doublereal &twist, const doublereal &omega=0.)
Definition: aerodata.cc:237
std::vector< unsigned > profiles
Definition: aerodata_impl.h:90
std::vector< doublereal > upper_bounds
Definition: aerodata_impl.h:91
#define ASSERT(expression)
Definition: colamd.c:977

Here is the call graph for this function:

Member Data Documentation

integer C81MultipleAeroData::curr_data
protected

Definition at line 93 of file aerodata_impl.h.

Referenced by GetForces(), and SetSectionData().

std::vector<const c81_data *> C81MultipleAeroData::data
protected

Definition at line 92 of file aerodata_impl.h.

Referenced by C81MultipleAeroData(), and GetForces().

std::vector<unsigned> C81MultipleAeroData::profiles
protected

Definition at line 90 of file aerodata_impl.h.

Referenced by C81MultipleAeroData(), Restart(), and SetSectionData().

std::vector<doublereal> C81MultipleAeroData::upper_bounds
protected

Definition at line 91 of file aerodata_impl.h.

Referenced by C81MultipleAeroData(), Restart(), and SetSectionData().


The documentation for this class was generated from the following files: