]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/math/FGModelFunctions.h
Improve timing statistics
[flightgear.git] / src / FDM / JSBSim / math / FGModelFunctions.h
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
3 Header: FGModelFunctions.h
4 Author: Jon Berndt
5 Date started: August 2010
6
7  ------------- Copyright (C) 2010  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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27 SENTRY
28 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
29
30 #ifndef FGMODELFUNCTIONS_H
31 #define FGMODELFUNCTIONS_H
32
33 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
34 INCLUDES
35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
36
37 #include "FGJSBBase.h"
38 #include <vector>
39 #include "math/FGFunction.h"
40 #include "input_output/FGPropertyManager.h"
41 #include "input_output/FGXMLElement.h"
42
43 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
44 DEFINITIONS
45 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
46
47 #define ID_MODELFUNCTIONS "$Id: FGModelFunctions.h,v 1.3 2010/11/17 03:18:37 jberndt Exp $"
48
49 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50 FORWARD DECLARATIONS
51 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
52
53 namespace JSBSim {
54
55 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56 CLASS DOCUMENTATION
57 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
58
59 /** The model functions class provides the capability for loading, storing, and
60     executing arbitrary functions.
61     For certain classes, such as the engine, aerodynamics, ground reactions, 
62     mass balance, etc., it can be useful to incorporate special functions that
63     can operate on the local model parameters before and/or after the model
64     executes. For example, there is no inherent chamber pressure calculation
65     done in the rocket engine model. However, an arbitrary function can be added
66     to a specific rocket engine XML configuration file. It would be tagged with
67     a "pre" or "post" type attribute to denote whether the function is to be
68     executed before or after the standard model algorithm.
69     @author Jon Berndt
70 */
71
72 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
73 DECLARATION: FGModelFunctions
74 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
75
76 class FGModelFunctions : public FGJSBBase
77 {
78 public:
79   ~FGModelFunctions();
80   void RunPreFunctions(void);
81   void RunPostFunctions(void);
82   bool Load(Element* el, FGPropertyManager* PropertyManager, std::string prefix="");
83   void PreLoad(Element* el, FGPropertyManager* PropertyManager, std::string prefix="");
84   void PostLoad(Element* el, FGPropertyManager* PropertyManager, std::string prefix="");
85
86 protected:
87   std::vector <FGFunction*> PreFunctions;
88   std::vector <FGFunction*> PostFunctions;
89   std::vector <double*> interface_properties;
90 };
91
92 } // namespace JSBSim
93
94 #endif