Branch data Line data Source code
1 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 : :
3 : : Header: FGInertial.h
4 : : Author: Jon S. Berndt
5 : : Date started: 09/13/00
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 : : 09/13/00 JSB Created
29 : :
30 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 : : SENTRY
32 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
33 : :
34 : : #ifndef FGINERTIAL_H
35 : : #define FGINERTIAL_H
36 : :
37 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 : : INCLUDES
39 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40 : :
41 : : #include <vector>
42 : :
43 : : #include "FGModel.h"
44 : : #include "math/FGColumnVector3.h"
45 : :
46 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47 : : DEFINITIONS
48 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
49 : :
50 : : #define ID_INERTIAL "$Id: FGInertial.h,v 1.15 2010/01/27 04:01:09 jberndt Exp $"
51 : :
52 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53 : : FORWARD DECLARATIONS
54 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
55 : :
56 : : namespace JSBSim {
57 : :
58 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
59 : : CLASS DOCUMENTATION
60 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
61 : :
62 : : /** Models inertial forces (e.g. centripetal and coriolis accelerations). Starting
63 : : conversion to WGS84.
64 : : */
65 : :
66 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67 : : CLASS DECLARATION
68 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
69 : :
70 : : class FGInertial : public FGModel {
71 : :
72 : : public:
73 : : FGInertial(FGFDMExec*);
74 : : ~FGInertial(void);
75 : :
76 : : bool InitModel(void);
77 : :
78 : : bool Run(void);
79 : 324942 : double SLgravity(void) const {return gAccelReference;}
80 : 0 : double gravity(void) const {return gAccel;}
81 : 1 : double omega(void) const {return RotationRate;}
82 : 54007 : double GetEarthPositionAngle(void) const { return earthPosAngle; }
83 : 4909 : double GetEarthPositionAngleDeg(void) const { return earthPosAngle*radtodeg;}
84 : : double GetGAccel(double r) const;
85 : : FGColumnVector3 GetGravityJ2(FGColumnVector3 position) const;
86 : 54008 : double GetRefRadius(void) const {return RadiusReference;}
87 : 1 : double GetSemimajor(void) const {return a;}
88 : 1 : double GetSemiminor(void) const {return b;}
89 : :
90 : 0 : void SetEarthPositionAngle(double epa) {earthPosAngle = epa;}
91 : :
92 : : private:
93 : : double gAccel;
94 : : double gAccelReference;
95 : : double RadiusReference;
96 : : double RotationRate;
97 : : double earthPosAngle;
98 : : double GM;
99 : : double C2_0; // WGS84 value for the C2,0 coefficient
100 : : double J2; // WGS84 value for J2
101 : : double a; // WGS84 semimajor axis length in feet
102 : : double b; // WGS84 semiminor axis length in feet
103 : :
104 : : void bind(void);
105 : : void Debug(int from);
106 : : };
107 : : }
108 : : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
109 : : #endif
|