LCOV - code coverage report
Current view: top level - initialization - FGTrimAxis.h (source / functions) Hit Total Coverage
Test: JSBSim-Coverage-Statistics Lines: 4 20 20.0 %
Date: 2010-08-24 Functions: 0 0 -
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 11 20 55.0 %

           Branch data     Line data    Source code
       1                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       2                 :            :  
       3                 :            :  Header:       FGTrimAxis.h
       4                 :            :  Author:       Tony Peden
       5                 :            :  Date started: 7/3/00
       6                 :            :  
       7                 :            :  ------------- Copyright (C) 1999  Anthony K. Peden (apeden@earthlink.net) -------------
       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                 :            : 7/3/00  TP   Created
      29                 :            :  
      30                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      31                 :            : SENTRY
      32                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      33                 :            : 
      34                 :            : #ifndef FGTRIMAXIS_H
      35                 :            : #define FGTRIMAXIS_H
      36                 :            : 
      37                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      38                 :            : INCLUDES
      39                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      40                 :            : 
      41                 :            : #include <string>
      42                 :            : 
      43                 :            : #include "FGFDMExec.h"
      44                 :            : #include "FGJSBBase.h"
      45                 :            : #include "FGInitialCondition.h"
      46                 :            : 
      47                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      48                 :            : DEFINITIONS
      49                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      50                 :            : 
      51                 :            : #define ID_TRIMAXIS "$Id: FGTrimAxis.h,v 1.4 2006/10/01 22:47:47 jberndt Exp $"
      52                 :            : 
      53                 :            : #define DEFAULT_TOLERANCE 0.001
      54                 :            : 
      55                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      56                 :            : FORWARD DECLARATIONS
      57                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      58                 :            : 
      59                 :            : namespace JSBSim {
      60                 :            : 
      61         [ +  + ]:       1122 : const string StateNames[10]=   { "all","udot","vdot","wdot","qdot","pdot","rdot",
      62                 :            :                                 "hmgt","nlf" 
      63 [ +  + ][ #  # ]:        204 :                               };
                 [ #  # ]
      64 [ +  + ][ +  - ]:       1628 : const string ControlNames[14]= { "Throttle","Sideslip","Angle of Attack",
         [ +  + ][ +  + ]
      65                 :            :                                  "Elevator","Ailerons","Rudder",
      66                 :            :                                  "Altitude AGL", "Pitch Angle",
      67                 :            :                                  "Roll Angle", "Flight Path Angle", 
      68                 :            :                                  "Pitch Trim", "Roll Trim", "Yaw Trim",
      69                 :            :                                  "Heading"
      70 [ #  # ][ #  # ]:        102 :                                };
      71                 :            : 
      72                 :            : class FGInitialCondition;
      73                 :            : 
      74                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      75                 :            : CLASS DOCUMENTATION
      76                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      77                 :            : 
      78                 :            : /** Models an aircraft axis for purposes of trimming.
      79                 :            :   */
      80                 :            : 
      81                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      82                 :            : CLASS DECLARATION
      83                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      84                 :            : 
      85                 :            : enum State { tAll,tUdot,tVdot,tWdot,tQdot,tPdot,tRdot,tHmgt,tNlf };
      86                 :            : enum Control { tThrottle, tBeta, tAlpha, tElevator, tAileron, tRudder, tAltAGL,
      87                 :            :                tTheta, tPhi, tGamma, tPitchTrim, tRollTrim, tYawTrim, tHeading };
      88                 :            : 
      89                 :            : class FGTrimAxis : public FGJSBBase
      90                 :            : {
      91                 :            : public:
      92                 :            :   /**  Constructor for Trim Axis class.
      93                 :            :        @param fdmex FGFDMExec pointer
      94                 :            :        @param IC pointer to initial conditions instance
      95                 :            :        @param state a State type (enum)
      96                 :            :        @param control a Control type (enum) */
      97                 :            :   FGTrimAxis(FGFDMExec* fdmex, 
      98                 :            :              FGInitialCondition *IC, 
      99                 :            :              State state,
     100                 :            :              Control control );
     101                 :            :   /// Destructor
     102                 :            :   ~FGTrimAxis();
     103                 :            : 
     104                 :            :   /** This function iterates through a call to the FGFDMExec::RunIC() 
     105                 :            :       function until the desired trimming condition falls inside a tolerance.*/
     106                 :            :   void Run(void);
     107                 :            :  
     108                 :          0 :   double GetState(void) { getState(); return state_value; }
     109                 :            :   //Accels are not settable
     110                 :          0 :   inline void SetControl(double value ) { control_value=value; }
     111                 :          0 :   inline double GetControl(void) { return control_value; }
     112                 :            : 
     113                 :          0 :   inline State GetStateType(void) { return state; }
     114                 :          0 :   inline Control GetControlType(void) { return control; }
     115                 :            : 
     116                 :          0 :   inline string GetStateName(void) { return StateNames[state]; }
     117                 :          0 :   inline string GetControlName(void) { return ControlNames[control]; }
     118                 :            : 
     119                 :          0 :   inline double GetControlMin(void) { return control_min; }
     120                 :          0 :   inline double GetControlMax(void) { return control_max; }
     121                 :            : 
     122                 :          0 :   inline void SetControlToMin(void) { control_value=control_min; }
     123                 :          0 :   inline void SetControlToMax(void) { control_value=control_max; }
     124                 :            :   
     125                 :            :   inline void SetControlLimits(double min, double max) { 
     126                 :            :       control_min=min;
     127                 :            :       control_max=max;
     128                 :            :   }    
     129                 :            : 
     130                 :            :   inline void  SetTolerance(double ff) { tolerance=ff;}
     131                 :          0 :   inline double GetTolerance(void) { return tolerance; }
     132                 :            : 
     133                 :          0 :   inline double GetSolverEps(void) { return solver_eps; }
     134                 :            :   inline void SetSolverEps(double ff) { solver_eps=ff; }
     135                 :            : 
     136                 :            :   inline int  GetIterationLimit(void) { return max_iterations; }
     137                 :            :   inline void SetIterationLimit(int ii) { max_iterations=ii; }
     138                 :            : 
     139                 :            :   inline int GetStability(void) { return its_to_stable_value; }
     140                 :          0 :   inline int GetRunCount(void) { return total_stability_iterations; }
     141                 :            :   double GetAvgStability( void );
     142                 :            :   
     143                 :            :   void SetThetaOnGround(double ff);
     144                 :            :   void SetPhiOnGround(double ff);
     145                 :            :   
     146                 :          0 :   inline void SetStateTarget(double target) { state_target=target; }
     147                 :            :   inline double GetStateTarget(void) { return state_target; }
     148                 :            :   
     149                 :            :   bool initTheta(void);
     150                 :            :   
     151                 :            :   void AxisReport(void);
     152                 :            :   
     153                 :          0 :   bool InTolerance(void) { getState(); return (fabs(state_value) <= tolerance); }
     154                 :            : 
     155                 :            : private:
     156                 :            :   FGFDMExec *fdmex;
     157                 :            :   FGInitialCondition *fgic;
     158                 :            : 
     159                 :            :   State   state;
     160                 :            :   Control control;
     161                 :            :   
     162                 :            :   double state_target;
     163                 :            :   
     164                 :            :   double state_value;
     165                 :            :   double control_value;
     166                 :            : 
     167                 :            :   double control_min;
     168                 :            :   double control_max;
     169                 :            : 
     170                 :            :   double tolerance;
     171                 :            : 
     172                 :            :   double solver_eps;
     173                 :            : 
     174                 :            :   double state_convert;
     175                 :            :   double control_convert;
     176                 :            : 
     177                 :            :   int max_iterations;
     178                 :            : 
     179                 :            :   int its_to_stable_value;
     180                 :            :   int total_stability_iterations;
     181                 :            :   int total_iterations;
     182                 :            : 
     183                 :            :   void setThrottlesPct(void);
     184                 :            : 
     185                 :            :   void getState(void);
     186                 :            :   void getControl(void);
     187                 :            :   void setControl(void);
     188                 :            :   
     189                 :            :   double computeHmgt(void);
     190                 :            :   
     191                 :            :   void Debug(int from);
     192                 :            : };
     193                 :            : }
     194                 :            : #endif

Generated by: LCOV version 1.9