Branch data Line data Source code
1 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 : :
3 : : Header: FGGroundReactions.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 FGGROUNDREACTIONS_H
35 : : #define FGGROUNDREACTIONS_H
36 : :
37 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 : : INCLUDES
39 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40 : :
41 : : #include <vector>
42 : :
43 : : #include "FGModel.h"
44 : : #include "FGLGear.h"
45 : : #include "math/FGColumnVector3.h"
46 : : #include "input_output/FGXMLElement.h"
47 : :
48 : : #define ID_GROUNDREACTIONS "$Id: FGGroundReactions.h,v 1.17 2010/07/30 11:50:01 jberndt Exp $"
49 : :
50 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 : : FORWARD DECLARATIONS
52 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
53 : :
54 : : namespace JSBSim {
55 : :
56 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57 : : CLASS DOCUMENTATION
58 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
59 : :
60 : : /** Manages ground reactions modeling. Maintains a list of landing gear and
61 : : ground contact points, all instances of FGLGear. Sums their forces and
62 : : moments so that these may be provided to FGPropagate. Parses the
63 : : \<ground_reactions> section of the aircraft configuration file.
64 : : <h3>Configuration File Format of \<ground_reactions> Section:</h3>
65 : : @code
66 : : <ground_reactions>
67 : : <contact>
68 : : ... {see FGLGear for specifics of this format}
69 : : </contact>
70 : : ... {more contacts}
71 : : </ground_reactions>
72 : : @endcode
73 : :
74 : :
75 : : */
76 : :
77 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
78 : : CLASS DECLARATION
79 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
80 : :
81 : : class MultiplierIterator
82 : : {
83 : : public:
84 : : MultiplierIterator(FGGroundReactions* GndReactions);
85 : : MultiplierIterator& operator++();
86 : 54006 : FGPropagate::LagrangeMultiplier* operator*() { return multiplier; }
87 : : private:
88 : : FGGroundReactions* GroundReactions;
89 : : FGPropagate::LagrangeMultiplier* multiplier;
90 : : int gearNum;
91 : : int entry;
92 : : };
93 : :
94 : : class FGGroundReactions : public FGModel
95 : : {
96 : : public:
97 : : FGGroundReactions(FGFDMExec*);
98 : : ~FGGroundReactions(void);
99 : :
100 : : bool InitModel(void);
101 : : bool Run(void);
102 : : bool Load(Element* el);
103 : 110563 : FGColumnVector3& GetForces(void) {return vForces;}
104 : 3 : double GetForces(int idx) const {return vForces(idx);}
105 : 57460 : FGColumnVector3& GetMoments(void) {return vMoments;}
106 : 3 : double GetMoments(int idx) const {return vMoments(idx);}
107 : : string GetGroundReactionStrings(string delimeter);
108 : : string GetGroundReactionValues(string delimeter);
109 : : bool GetWOW(void);
110 : : void UpdateForcesAndMoments(void);
111 : :
112 : 1 : int GetNumGearUnits(void) const { return (int)lGear.size(); }
113 : :
114 : : /** Gets a gear instance
115 : : @param gear index of gear instance
116 : : @return a pointer to the FGLGear instance of the gear unit requested */
117 : 0 : inline FGLGear* GetGearUnit(int gear) { return lGear[gear]; }
118 : :
119 : : private:
120 : : vector <FGLGear*> lGear;
121 : : FGColumnVector3 vForces;
122 : : FGColumnVector3 vMoments;
123 : :
124 : : void bind(void);
125 : : void Debug(int from);
126 : : };
127 : : }
128 : : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
129 : : #endif
130 : :
|