⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fgaerodynamics.h

📁 6 DOF Missle Simulation
💻 H
字号:
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Header:       FGAerodynamics.h Author:       Jon S. Berndt Date started: 09/13/00 ------------- Copyright (C) 1999  Jon S. Berndt (jsb@hal-pc.org) ------------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. Further information about the GNU Lesser General Public License can also be found on the world wide web at http://www.gnu.org.HISTORY--------------------------------------------------------------------------------09/13/00   JSB   Created%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SENTRY%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/#ifndef FGAERODYNAMICS_H#define FGAERODYNAMICS_H/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INCLUDES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/#include <vector>#include <map>#include "FGModel.h"#include <math/FGFunction.h>#include <math/FGColumnVector3.h>#include <math/FGMatrix33.h>#include <input_output/FGXMLFileRead.h>/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DEFINITIONS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/#define ID_AERODYNAMICS "$Id$"/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%FORWARD DECLARATIONS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/namespace JSBSim {/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CLASS DOCUMENTATION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*//** Encapsulates the aerodynamic calculations.    This class owns and contains the list of force/coefficients that define the    aerodynamic properties of an aircraft. Here also, such unique phenomena    as ground effect, aerodynamic reference point shift, and maximum lift curve    tailoff are handled.    @code    <aerodynamics>       <alphalimits unit="{RAD | DEG}">         <min> {number} </min>         <max> {number} </max>       </alphalimits>       <hysteresis_limits unit="{RAD | DEG}">         <min> {number} </min>         <max> {number} </max>       </hysteresis_limits>       <aero_ref_pt_shift_x>           <function>           {function contents}         </function>        </aero_ref_pt_shift_x>         <function>         {function contents}       </function>       <axis name="{LIFT | DRAG | SIDE | ROLL | PITCH | YAW}">         {force coefficient definitions}       </axis>       {additional axis definitions}    </aerodynamics>    @endcode    Optionally two other coordinate systems may be used.<br><br>    1) Body coordinate system:    @code       <axis name="{X | Y | Z}">    @endcode    <br>    2) Axial-Normal coordinate system:    @code       <axis name="{AXIAL | NORMAL}">    @endcode    <br>    Systems may NOT be combined, or a load error will occur.    @author Jon S. Berndt, Tony Peden    @version $Revision$*//*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CLASS DECLARATION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/class FGAerodynamics : public FGModel, public FGXMLFileRead{public:  /** Constructor      @param Executive a pointer to the parent executive object */  FGAerodynamics(FGFDMExec* Executive);  /// Destructor  ~FGAerodynamics();  bool InitModel(void);  /** Runs the Aerodynamics model; called by the Executive      @return false if no error */  bool Run(void);  /** Loads the Aerodynamics model.      The Load function for this class expects the XML parser to      have found the aerodynamics keyword in the configuration file.      @param element pointer to the current XML element for aerodynamics parameters.      @return true if successful */  bool Load(Element* element);  /** Gets the total aerodynamic force vector.      @return a force vector reference. */  FGColumnVector3& GetForces(void) {return vForces;}  /** Gets the aerodynamic force for an axis.      @param n Axis index. This could be 0, 1, or 2, or one of the               axis enums: eX, eY, eZ.      @return the force acting on an axis */  double GetForces(int n) const {return vForces(n);}  /** Gets the total aerodynamic moment vector.      @return a moment vector reference. */  FGColumnVector3& GetMoments(void) {return vMoments;}  /** Gets the aerodynamic moment for an axis.      @return the moment about a single axis (as described also in the              similar call to GetForces(int n).*/  double GetMoments(int n) const {return vMoments(n);}  /** Retrieves the aerodynamic forces in the wind axes.      @return a reference to a column vector containing the wind axis forces. */  FGColumnVector3& GetvFw(void) { return vFw; }  /** Retrieves the aerodynamic forces in the wind axes, given an axis.      @param axis the axis to return the force for (eX, eY, eZ).      @return a reference to a column vector containing the requested wind      axis force. */  double GetvFw(int axis) const { return vFw(axis); }  /** Retrieves the lift over drag ratio */  inline double GetLoD(void) const { return lod; }  /** Retrieves the square of the lift coefficient. */  inline double GetClSquared(void) const { return clsq; }  inline double GetAlphaCLMax(void) const { return alphaclmax; }  inline double GetAlphaCLMin(void) const { return alphaclmin; }  inline double GetHysteresisParm(void) const { return stall_hyst; }  inline double GetStallWarn(void) const { return impending_stall; }  double GetAlphaW(void) const { return alphaw; }  double GetBI2Vel(void) const { return bi2vel; }  double GetCI2Vel(void) const { return ci2vel; }  inline void SetAlphaCLMax(double tt) { alphaclmax=tt; }  inline void SetAlphaCLMin(double tt) { alphaclmin=tt; }  /** Gets the strings for the current set of coefficients.      @param delimeter either a tab or comma string depending on output type      @return a string containing the descriptive names for all coefficients */  string GetCoefficientStrings(string delimeter);  /** Gets the coefficient values.      @param delimeter either a tab or comma string depending on output type      @return a string containing the numeric values for the current set of      coefficients */  string GetCoefficientValues(string delimeter);  /** Calculates and returns the wind-to-body axis transformation matrix.      @return a reference to the wind-to-body transformation matrix.      */  FGMatrix33& GetTw2b(void);  /** Calculates and returns the body-to-wind axis transformation matrix.      @return a reference to the wind-to-body transformation matrix.      */  FGMatrix33& GetTb2w(void);  vector <FGFunction*> * GetCoeff(void) const { return Coeff; }private:  enum eAxisType {atNone, atLiftDrag, atAxialNormal, atBodyXYZ} axisType;  typedef map<string,int> AxisIndex;  AxisIndex AxisIdx;  FGFunction* AeroRPShift;  vector <FGFunction*> variables;  typedef vector <FGFunction*> CoeffArray;  CoeffArray* Coeff;  FGColumnVector3 vFnative;  FGColumnVector3 vFw;  FGColumnVector3 vForces;  FGColumnVector3 vMoments;  FGColumnVector3 vDXYZcg;  FGColumnVector3 vDeltaRP;  FGMatrix33 mTw2b;  FGMatrix33 mTb2w;  double alphaclmax, alphaclmin;  double alphahystmax, alphahystmin;  double impending_stall, stall_hyst;  double bi2vel, ci2vel,alphaw;  double clsq, lod, qbar_area;  typedef double (FGAerodynamics::*PMF)(int) const;  void DetermineAxisSystem(void);  void bind(void);  void Debug(int from);};} // namespace JSBSim//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -