LCOV - code coverage report
Current view: top level - models - FGAircraft.h (source / functions) Hit Total Coverage
Test: JSBSim-Coverage-Statistics Lines: 26 28 92.9 %
Date: 2010-08-24 Functions: 20 21 95.2 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       2                 :            : 
       3                 :            :  Header:       FGAircraft.h
       4                 :            :  Author:       Jon S. Berndt
       5                 :            :  Date started: 12/12/98
       6                 :            : 
       7                 :            :  ------------- Copyright (C) 1999  Jon S. Berndt (jon@jsbsim.org) -------------
       8                 :            : 
       9                 :            :  This program is free software; you can redistribute it and/or modify it under
      10                 :            :  the terms of the GNU Lesser General Public License as published by the Free Software
      11                 :            :  Foundation; either version 2 of the License, or (at your option) any later
      12                 :            :  version.
      13                 :            : 
      14                 :            :  This program is distributed in the hope that it will be useful, but WITHOUT
      15                 :            :  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
      16                 :            :  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
      17                 :            :  details.
      18                 :            : 
      19                 :            :  You should have received a copy of the GNU Lesser General Public License along with
      20                 :            :  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
      21                 :            :  Place - Suite 330, Boston, MA  02111-1307, USA.
      22                 :            : 
      23                 :            :  Further information about the GNU Lesser General Public License can also be found on
      24                 :            :  the world wide web at http://www.gnu.org.
      25                 :            : 
      26                 :            : HISTORY
      27                 :            : --------------------------------------------------------------------------------
      28                 :            : 12/12/98   JSB   Created
      29                 :            : 
      30                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      31                 :            : SENTRY
      32                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      33                 :            : 
      34                 :            : #ifndef FGAIRCRAFT_H
      35                 :            : #define FGAIRCRAFT_H
      36                 :            : 
      37                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      38                 :            : INCLUDES
      39                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      40                 :            : 
      41                 :            : #include <string>
      42                 :            : #include <vector>
      43                 :            : 
      44                 :            : #include "FGModel.h"
      45                 :            : #include "input_output/FGXMLElement.h"
      46                 :            : #include "math/FGColumnVector3.h"
      47                 :            : 
      48                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      49                 :            : DEFINITIONS
      50                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      51                 :            : 
      52                 :            : #define ID_AIRCRAFT "$Id: FGAircraft.h,v 1.15 2009/10/24 22:59:30 jberndt Exp $"
      53                 :            : 
      54                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      55                 :            : FORWARD DECLARATIONS
      56                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      57                 :            : 
      58                 :            : namespace JSBSim {
      59                 :            : 
      60                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      61                 :            : CLASS DOCUMENTATION
      62                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      63                 :            : 
      64                 :            : /** Encapsulates an Aircraft and its systems.
      65                 :            : <p> Owns all the parts (other classes) which make up this aircraft. This includes
      66                 :            :     the Engines, Tanks, Propellers, Nozzles, Aerodynamic and Mass properties,
      67                 :            :     landing gear, etc. These constituent parts may actually run as separate
      68                 :            :     JSBSim models themselves, but the responsibility for initializing them and
      69                 :            :     for retrieving their force and moment contributions falls to FGAircraft.
      70                 :            : <p> The \<metrics> section of the aircraft configuration file is read here, and
      71                 :            :     the metrical information is held by this class.
      72                 :            : <h3>Configuration File Format for \<metrics> Section:</h3>
      73                 :            : @code
      74                 :            :     <metrics>
      75                 :            :         <wingarea unit="{FT2 | M2}"> {number} </wingarea>
      76                 :            :         <wingspan unit="{FT | M}"> {number} </wingspan>
      77                 :            :         <chord unit="{FT | M}"> {number} </chord>
      78                 :            :         <htailarea unit="{FT2 | M2}"> {number} </htailarea>
      79                 :            :         <htailarm unit="{FT | M}"> {number} </htailarm>
      80                 :            :         <vtailarea unit="{FT2 | M}"> {number} </vtailarea>
      81                 :            :         <vtailarm unit="{FT | M}"> {number} </vtailarm>
      82                 :            :         <wing_incidence unit="{RAD | DEG}"> {number} </wing_incidence>
      83                 :            :         <location name="{AERORP | EYEPOINT | VRP}" unit="{IN | M}">
      84                 :            :             <x> {number} </x>
      85                 :            :             <y> {number} </y>
      86                 :            :             <z> {number} </z>
      87                 :            :         </location>
      88                 :            :         {other location blocks}
      89                 :            :     </metrics>
      90                 :            : @endcode
      91                 :            : 
      92                 :            :     @author Jon S. Berndt
      93                 :            :     @version $Id: FGAircraft.h,v 1.15 2009/10/24 22:59:30 jberndt Exp $
      94                 :            :     @see Cooke, Zyda, Pratt, and McGhee, "NPSNET: Flight Simulation Dynamic Modeling
      95                 :            :            Using Quaternions", Presence, Vol. 1, No. 4, pp. 404-420  Naval Postgraduate
      96                 :            :            School, January 1994
      97                 :            :     @see D. M. Henderson, "Euler Angles, Quaternions, and Transformation Matrices",
      98                 :            :      JSC 12960, July 1977
      99                 :            :     @see Richard E. McFarland, "A Standard Kinematic Model for Flight Simulation at
     100                 :            :      NASA-Ames", NASA CR-2497, January 1975
     101                 :            :     @see Barnes W. McCormick, "Aerodynamics, Aeronautics, and Flight Mechanics",
     102                 :            :      Wiley & Sons, 1979 ISBN 0-471-03032-5
     103                 :            :     @see Bernard Etkin, "Dynamics of Flight, Stability and Control", Wiley & Sons,
     104                 :            :      1982 ISBN 0-471-08936-2
     105                 :            : */
     106                 :            : 
     107                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     108                 :            : CLASS DECLARATION
     109                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
     110                 :            : 
     111                 :            : class FGAircraft : public FGModel {
     112                 :            : public:
     113                 :            :   /** Constructor
     114                 :            :       @param Executive a pointer to the parent executive object */
     115                 :            :   FGAircraft(FGFDMExec *Executive);
     116                 :            : 
     117                 :            :   /// Destructor
     118                 :            :   ~FGAircraft();
     119                 :            : 
     120                 :            :   /** Runs the Aircraft model; called by the Executive
     121                 :            :       @see JSBSim.cpp documentation
     122                 :            :       @return false if no error */
     123                 :            :   bool Run(void);
     124                 :            : 
     125                 :            :   bool InitModel(void);
     126                 :            : 
     127                 :            :   /** Loads the aircraft.
     128                 :            :       The executive calls this method to load the aircraft into JSBSim.
     129                 :            :       @param el a pointer to the element tree
     130                 :            :       @return true if successful */
     131                 :            :   bool Load(Element* el);
     132                 :            : 
     133                 :            :   /** Gets the aircraft name
     134                 :            :       @return the name of the aircraft as a string type */
     135                 :          0 :   const std::string& GetAircraftName(void) const { return AircraftName; }
     136                 :            : 
     137                 :            :   /// Gets the wing area
     138                 :     270027 :   double GetWingArea(void) const { return WingArea; }
     139                 :            :   /// Gets the wing span
     140                 :     162014 :   double GetWingSpan(void) const { return WingSpan; }
     141                 :            :   /// Gets the average wing chord
     142                 :     108009 :   double Getcbar(void) const { return cbar; }
     143                 :      54006 :   inline double GetWingIncidence(void) const { return WingIncidence; }
     144                 :          1 :   inline double GetWingIncidenceDeg(void) const { return WingIncidence*radtodeg; }
     145                 :          1 :   inline double GetHTailArea(void) const { return HTailArea; }
     146                 :          1 :   inline double GetHTailArm(void)  const { return HTailArm; }
     147                 :          1 :   inline double GetVTailArea(void) const { return VTailArea; }
     148                 :          1 :   inline double GetVTailArm(void)  const { return VTailArm; }
     149                 :          1 :   inline double Getlbarh(void) const { return lbarh; } // HTailArm / cbar
     150                 :          1 :   inline double Getlbarv(void) const { return lbarv; } // VTailArm / cbar
     151                 :          1 :   inline double Getvbarh(void) const { return vbarh; } // H. Tail Volume
     152                 :          1 :   inline double Getvbarv(void) const { return vbarv; } // V. Tail Volume
     153                 :      58915 :   inline FGColumnVector3& GetMoments(void) { return vMoments; }
     154                 :          3 :   inline double GetMoments(int idx) const { return vMoments(idx); }
     155                 :      58915 :   inline FGColumnVector3& GetForces(void) { return vForces; }
     156                 :          3 :   inline double GetForces(int idx) const { return vForces(idx); }
     157                 :            :   inline FGColumnVector3& GetBodyAccel(void) { return vBodyAccel; }
     158                 :            :   inline double GetBodyAccel(int idx) { return vBodyAccel(idx); }
     159                 :            :   inline FGColumnVector3& GetNcg   (void)  { return vNcg; }
     160                 :            :   inline double GetNcg(int idx)  { return vNcg(idx); }
     161                 :     108010 :   inline FGColumnVector3& GetXYZrp(void) { return vXYZrp; }
     162                 :      54005 :   inline FGColumnVector3& GetXYZvrp(void) { return vXYZvrp; }
     163                 :      53103 :   inline FGColumnVector3& GetXYZep(void) { return vXYZep; }
     164                 :          3 :   inline double GetXYZrp(int idx) const { return vXYZrp(idx); }
     165                 :          3 :   inline double GetXYZvrp(int idx) const { return vXYZvrp(idx); }
     166                 :          3 :   inline double GetXYZep(int idx) const { return vXYZep(idx); }
     167                 :          1 :   inline void SetAircraftName(const std::string& name) {AircraftName = name;}
     168                 :          2 :   inline void SetHoldDown(int hd) {HoldDown = hd;}
     169                 :         48 :   inline int GetHoldDown(void) const {return HoldDown;}
     170                 :            : 
     171                 :            :   void SetXYZrp(int idx, double value) {vXYZrp(idx) = value;}
     172                 :            : 
     173                 :          0 :   void SetWingArea(double S) {WingArea = S;}
     174                 :            : 
     175                 :            :   double GetNlf(void) const;
     176                 :            : 
     177                 :            :   inline FGColumnVector3& GetNwcg(void) { return vNwcg; }
     178                 :            : 
     179                 :            :   void bind(void);
     180                 :            :   void unbind(void);
     181                 :            : 
     182                 :            : private:
     183                 :            :   FGColumnVector3 vMoments;
     184                 :            :   FGColumnVector3 vForces;
     185                 :            :   FGColumnVector3 vXYZrp;
     186                 :            :   FGColumnVector3 vXYZvrp;
     187                 :            :   FGColumnVector3 vXYZep;
     188                 :            :   FGColumnVector3 vDXYZcg;
     189                 :            :   FGColumnVector3 vBodyAccel;
     190                 :            :   FGColumnVector3 vNcg;
     191                 :            :   FGColumnVector3 vNwcg;
     192                 :            : 
     193                 :            :   double WingArea, WingSpan, cbar, WingIncidence;
     194                 :            :   double HTailArea, VTailArea, HTailArm, VTailArm;
     195                 :            :   double lbarh,lbarv,vbarh,vbarv;
     196                 :            :   int HoldDown;
     197                 :            :   std::string AircraftName;
     198                 :            : 
     199                 :            :   void Debug(int from);
     200                 :            : };
     201                 :            : 
     202                 :            : } // namespace JSBSim
     203                 :            : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     204                 :            : #endif
     205                 :            : 

Generated by: LCOV version 1.9