WSF
WsfAero2D.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11// ****************************************************************************
12// Updated by Infoscitex, a DCS Company.
13// ****************************************************************************
14
15#ifndef WSFAERO2D_HPP
16#define WSFAERO2D_HPP
17
18#include "wsf_export.h"
19
20#include <vector>
21
22class UtInput;
23#include "WsfAero.hpp"
24class WsfPlatform;
25
41
43{
44public:
45 WsfAero2D(const UtAtmosphere& aAtmosphere);
46 ~WsfAero2D() override;
47
48 WsfAero* Clone() const override;
49
50 bool Initialize(double aSimTime, UtEntity* aPlatformPtr) override;
51
52 void Update(double aSimTime, double aRequestedYForce = 0.0, double aRequestedZForce = 0.0, double aTVC_Force = 0.0) override;
53
54 bool ProcessInput(UtInput& aInput) override;
55
56 double CalculateDrag(double aAltitude_m, double aMach, double aWeight_N) const override;
57
58protected:
59 WsfAero2D(const WsfAero2D& aSrc);
60
61 // Prevent use of operator= by declaring, but not defining.
62 WsfAero2D& operator=(const WsfAero2D& aRhs) = delete;
63
64 bool SetInternalValues(double aSimTime);
65
66 void CalcCd0();
67 void CalcCdTotal();
68
69 struct DragPoint
70 {
71 public:
72 DragPoint(double aMach, double aCd0)
73 : mMach(aMach)
74 , mCd0(aCd0)
75 {
76 }
77 double mMach;
78 double mCd0;
79 };
80
91
92 // Characteristic attributes are listed first (intrinsic to the object),
93 // and State values (which may vary with time) are listed later:
94
95 double mAR; // Aspect Ratio
96 // Oswald's Efficiency Factor
97 double mE;
98 // Maximum Obtainable Lift Coefficient:
99 double mClMax;
100 // Run-time constant that aggregates 1.0 / Pi * mAR * mE
101 // (Multiplied times CL squared to get delta Cd.)
102 double mK;
110
111 // Drag Coefficient at Zero Lift,
112 // as a function of Mach Number:
113 std::vector<DragPoint> mCd0s;
114
115 double mCl;
116 double mCd0;
117 double mCdTotal;
119 std::vector<DragPoint>::size_type mIndex;
120
122
123
124private:
125 double GetCd0(double aMach) const;
126
127 double GetCdTotal(double aRequiredForce_N, double aReferenceArea_m2, double aAltitude_m, double aMach) const;
128};
129
130#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
double mLateralForce
Definition WsfAero2D.hpp:121
double mClMax
Definition WsfAero2D.hpp:99
std::vector< DragPoint >::size_type mIndex
Definition WsfAero2D.hpp:119
double mMachBeginCdRise
Definition WsfAero2D.hpp:105
double mSubsonicCdSlope
Definition WsfAero2D.hpp:107
double mCl
Definition WsfAero2D.hpp:115
DragSpecType mType
Definition WsfAero2D.hpp:118
std::vector< DragPoint > mCd0s
Definition WsfAero2D.hpp:113
double mCd0
Definition WsfAero2D.hpp:116
double mMachEndCdRise
Definition WsfAero2D.hpp:106
void CalcCd0()
Definition WsfAero2D.cpp:572
double mK
Definition WsfAero2D.hpp:102
WsfAero2D(const UtAtmosphere &aAtmosphere)
Constructor.
Definition WsfAero2D.cpp:36
double mAR
Definition WsfAero2D.hpp:95
double mE
Definition WsfAero2D.hpp:97
DragSpecType
Definition WsfAero2D.hpp:82
@ cINCOMPRESSIBLE
Definition WsfAero2D.hpp:83
@ cCURVE_POINTS
Drag has been specified as a series of explicit (Mach, Cd0) curve points.
Definition WsfAero2D.hpp:89
@ cPARAMETRIC
Definition WsfAero2D.hpp:86
bool SetInternalValues(double aSimTime)
Definition WsfAero2D.cpp:125
double mMachMaxSupersonic
Definition WsfAero2D.hpp:109
double mCdTotal
Definition WsfAero2D.hpp:117
double mCdZeroSubsonic
Definition WsfAero2D.hpp:103
WsfAero2D & operator=(const WsfAero2D &aRhs)=delete
double mCdZeroSupersonic
Definition WsfAero2D.hpp:104
void CalcCdTotal()
Definition WsfAero2D.cpp:578
double mSupersonicCdSlope
Definition WsfAero2D.hpp:108
bool ProcessInput(UtInput &aInput) override
Definition WsfAero.cpp:105
virtual void Update(double aSimTime, double aRequestedYForce=0.0, double aRequestedZForce=0.0, double aTVC_Force=0.0)
Definition WsfAero.cpp:149
virtual double CalculateDrag(double aAltitude_m, double aMach, double aWeight_N) const
Definition WsfAero.hpp:66
virtual bool Initialize(double aSimTime, UtEntity *aPlatformPtr)
Definition WsfAero.cpp:75
WsfAero(const UtAtmosphere &aAtmosphere)
Definition WsfAero.cpp:28
WsfAero * Clone() const override=0
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
double mCd0
Definition WsfAero2D.hpp:78
DragPoint(double aMach, double aCd0)
Definition WsfAero2D.hpp:72
double mMach
Definition WsfAero2D.hpp:77
Copyrights Multiple, All Rights Reserved