WSF
WsfSixDOF_AeroCoreObject.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 2020 Infoscitex, a DCS 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#ifndef WSFSIXDOFAEROCOREOBJECT_HPP
13#define WSFSIXDOFAEROCOREOBJECT_HPP
14
15#include "wsf_six_dof_export.h"
16
17#include <list>
18
19#include "UtCloneablePtr.hpp"
20class UtInput;
21#include "UtTable.hpp"
22#include "UtVec3dX.hpp"
23
24// The AeroCoreObject provides the main aerodynamics for an object.
25// It includes various aero parameters and stability derivatives. It may
26// include one or more aero modes, which provide configuration-dependent aero.
27// Modes also provide a means to remove any aero effects, such as while a subobject
28// is internally carried. A different mode can then be used when 'free'.
29
30namespace wsf
31{
32namespace six_dof
33{
34class WSF_SIX_DOF_EXPORT AeroCoreObject
35{
36public:
37 AeroCoreObject() = default;
38 ~AeroCoreObject() = default;
39
40 AeroCoreObject& operator=(const AeroCoreObject& other) = delete;
41
42 virtual bool Initialize();
43
44 // SetModeName is used to change the aero mode
45 void SetModeName(const std::string& aName);
46 std::string GetModeName() const;
47
48 double GetRefArea_sqft() const;
49
50 // Lift
51 double CL_AlphaBetaMach(double aMach, double aAlpha_rad, double aBeta_rad);
52
53 // Drag
54 double Cd_AlphaBetaMach(double aMach, double aAlpha_rad, double aBeta_rad);
55
56 // Side force
57 double CY_AlphaBetaMach(double aMach, double aAlpha_rad, double aBeta_rad);
58
59 // The CalculateAeroCLArea function is called to calculate the lift coefficient (CL)
60 // including reference area effects but not including dynamic pressure effects.
61 double CalculateAeroCLArea(double aMach, double aAlpha_rad);
62
63 // The CalculateAeroCdArea function is called to calculate the drag coefficient (Cd)
64 // including reference area effects but not including dynamic pressure effects.
65 double CalculateAeroCdArea(double aMach, double aAlpha_rad);
66
67protected:
68 AeroCoreObject(const AeroCoreObject& aSrc) = default;
69
70 std::string mModeName = "DEFAULT";
71
72 double mRefArea_sqft = 0.0;
73
74 // Force coefficients
75 UtCloneablePtr<UtTable::Table> mCL_AlphaBetaMachTablePtr{nullptr};
76 UtCloneablePtr<UtTable::Table> mCd_AlphaBetaMachTablePtr{nullptr};
77 UtCloneablePtr<UtTable::Table> mCY_AlphaBetaMachTablePtr{nullptr};
78};
79} // namespace six_dof
80} // namespace wsf
81
82#endif
double CL_AlphaBetaMach(double aMach, double aAlpha_rad, double aBeta_rad)
Definition WsfSixDOF_AeroCoreObject.cpp:37
double Cd_AlphaBetaMach(double aMach, double aAlpha_rad, double aBeta_rad)
Definition WsfSixDOF_AeroCoreObject.cpp:51
std::string mModeName
Definition WsfSixDOF_AeroCoreObject.hpp:70
double CY_AlphaBetaMach(double aMach, double aAlpha_rad, double aBeta_rad)
Definition WsfSixDOF_AeroCoreObject.cpp:65
AeroCoreObject & operator=(const AeroCoreObject &other)=delete
std::string GetModeName() const
Definition WsfSixDOF_AeroCoreObject.cpp:27
double GetRefArea_sqft() const
Definition WsfSixDOF_AeroCoreObject.cpp:89
double mRefArea_sqft
Definition WsfSixDOF_AeroCoreObject.hpp:72
UtCloneablePtr< UtTable::Table > mCL_AlphaBetaMachTablePtr
Definition WsfSixDOF_AeroCoreObject.hpp:75
UtCloneablePtr< UtTable::Table > mCY_AlphaBetaMachTablePtr
Definition WsfSixDOF_AeroCoreObject.hpp:77
AeroCoreObject(const AeroCoreObject &aSrc)=default
virtual bool Initialize()
Definition WsfSixDOF_AeroCoreObject.cpp:22
double CalculateAeroCdArea(double aMach, double aAlpha_rad)
Definition WsfSixDOF_AeroCoreObject.cpp:84
UtCloneablePtr< UtTable::Table > mCd_AlphaBetaMachTablePtr
Definition WsfSixDOF_AeroCoreObject.hpp:76
void SetModeName(const std::string &aName)
Definition WsfSixDOF_AeroCoreObject.cpp:32
double CalculateAeroCLArea(double aMach, double aAlpha_rad)
Definition WsfSixDOF_AeroCoreObject.cpp:79
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved