Branch data Line data Source code
1 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 : :
3 : : Header: FGModel.h
4 : : Author: Jon Berndt
5 : : Date started: 11/21/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 : : 11/22/98 JSB Created
29 : :
30 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 : : SENTRY
32 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
33 : :
34 : : #ifndef FGMODEL_H
35 : : #define FGMODEL_H
36 : :
37 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 : : INCLUDES
39 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40 : :
41 : : #include "math/FGFunction.h"
42 : : #include "math/FGModelFunctions.h"
43 : :
44 : : #include <string>
45 : : #include <vector>
46 : :
47 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
48 : : DEFINITIONS
49 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
50 : :
51 : : #define ID_MODEL "$Id: FGModel.h,v 1.14 2009/11/12 13:08:11 jberndt Exp $"
52 : :
53 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
54 : : FORWARD DECLARATIONS
55 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
56 : :
57 : : namespace JSBSim {
58 : :
59 : : class FGFDMExec;
60 : : class FGState;
61 : : class FGAtmosphere;
62 : : class FGFCS;
63 : : class FGPropulsion;
64 : : class FGMassBalance;
65 : : class FGAerodynamics;
66 : : class FGInertial;
67 : : class FGGroundReactions;
68 : : class FGExternalReactions;
69 : : class FGBuoyantForces;
70 : : class FGAircraft;
71 : : class FGPropagate;
72 : : class FGAuxiliary;
73 : : class Element;
74 : : class FGPropertyManager;
75 : :
76 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
77 : : CLASS DOCUMENTATION
78 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
79 : :
80 : : /** Base class for all scheduled JSBSim models
81 : : @author Jon S. Berndt
82 : : */
83 : :
84 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
85 : : CLASS DECLARATION
86 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
87 : :
88 : : class FGModel : public FGModelFunctions
89 : : {
90 : : public:
91 : :
92 : : /// Constructor
93 : : FGModel(FGFDMExec*);
94 : : /// Destructor
95 : : ~FGModel();
96 : :
97 : : std::string Name;
98 : :
99 : : /** Runs the model; called by the Executive
100 : : @see JSBSim.cpp documentation
101 : : @return false if no error */
102 : : virtual bool Run(void);
103 : : virtual bool InitModel(void);
104 : 13 : virtual void SetRate(int tt) {rate = tt;}
105 : 1707022 : virtual int GetRate(void) {return rate;}
106 : 0 : FGFDMExec* GetExec(void) {return FDMExec;}
107 : :
108 : : void SetPropertyManager(FGPropertyManager *fgpm) { PropertyManager=fgpm;}
109 : :
110 : : protected:
111 : : int exe_ctr;
112 : : int rate;
113 : :
114 : : /** Loads this model.
115 : : @param el a pointer to the element
116 : : @return true if model is successfully loaded*/
117 : 9 : virtual bool Load(Element* el) {return FGModelFunctions::Load(el, PropertyManager);}
118 : :
119 : : virtual void Debug(int from);
120 : :
121 : : FGFDMExec* FDMExec;
122 : : FGState* State;
123 : : FGAtmosphere* Atmosphere;
124 : : FGFCS* FCS;
125 : : FGPropulsion* Propulsion;
126 : : FGMassBalance* MassBalance;
127 : : FGAerodynamics* Aerodynamics;
128 : : FGInertial* Inertial;
129 : : FGGroundReactions* GroundReactions;
130 : : FGExternalReactions* ExternalReactions;
131 : : FGBuoyantForces* BuoyantForces;
132 : : FGAircraft* Aircraft;
133 : : FGPropagate* Propagate;
134 : : FGAuxiliary* Auxiliary;
135 : : FGPropertyManager* PropertyManager;
136 : : };
137 : : }
138 : : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
139 : : #endif
140 : :
|