Branch data Line data Source code
1 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 : :
3 : : Header: FGThruster.h
4 : : Author: Jon S. Berndt
5 : : Date started: 08/23/00
6 : :
7 : : ------------- Copyright (C) 2000 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 : : 08/24/00 JSB Created
29 : :
30 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 : : SENTRY
32 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
33 : :
34 : : #ifndef FGTHRUSTER_H
35 : : #define FGTHRUSTER_H
36 : :
37 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 : : INCLUDES
39 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40 : :
41 : : #include "FGForce.h"
42 : : #include "math/FGColumnVector3.h"
43 : : #include <string>
44 : :
45 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46 : : DEFINITIONS
47 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
48 : :
49 : : #define ID_THRUSTER "$Id: FGThruster.h,v 1.15 2009/10/24 22:59:30 jberndt Exp $"
50 : :
51 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52 : : FORWARD DECLARATIONS
53 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
54 : :
55 : : namespace JSBSim {
56 : :
57 : : class Element;
58 : : class FGPropertyManager;
59 : :
60 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
61 : : CLASS DOCUMENTATION
62 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
63 : :
64 : : /** Base class for specific thrusting devices such as propellers, nozzles, etc.
65 : :
66 : : <h3>reverser angle:</h3>
67 : :
68 : : "Reverser angle" as used here is a way to manipulate the thrust vector,
69 : : along the thrust axis ONLY, during run time. This should not be confused
70 : : with a thrust vectoring nozzle. The angle is defined in radians, and is
71 : : used thus: Final_thrust = cosine( reverser_angle ) * unmodified_thrust.
72 : : Therefore a reverser angle of 0 results in no change, and a reverser angle
73 : : of 3.14 (pi) results in a completely reversed thrust vector. An angle of
74 : : 1.57 (pi/2) results in no thrust at all.
75 : :
76 : : @author Jon Berndt
77 : : @version $Id: FGThruster.h,v 1.15 2009/10/24 22:59:30 jberndt Exp $
78 : : */
79 : :
80 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
81 : : CLASS DECLARATION
82 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
83 : :
84 : : class FGThruster : public FGForce {
85 : :
86 : : public:
87 : : /// Constructor
88 : : FGThruster(FGFDMExec *FDMExec, Element *el, int num );
89 : : /// Destructor
90 : : virtual ~FGThruster();
91 : :
92 : : enum eType {ttNozzle, ttRotor, ttPropeller, ttDirect};
93 : :
94 : 0 : virtual double Calculate(double tt) {
95 : 0 : Thrust = cos(ReverserAngle)*tt;
96 : 0 : vFn(1) = Thrust;
97 : 0 : return Thrust;
98 : : }
99 : : void SetName(string name) {Name = name;}
100 : 0 : virtual void SetRPM(double rpm) {};
101 : 0 : virtual double GetPowerRequired(void) {return 0.0;}
102 : 12 : virtual void SetdeltaT(double dt) {deltaT = dt;}
103 : 216122 : double GetThrust(void) const {return Thrust;}
104 : 0 : eType GetType(void) {return Type;}
105 : : string GetName(void) {return Name;}
106 : 0 : void SetReverserAngle(double angle) {ReverserAngle = angle;}
107 : 0 : double GetReverserAngle(void) const {return ReverserAngle;}
108 : 0 : virtual double GetRPM(void) const { return 0.0; };
109 : 0 : double GetGearRatio(void) {return GearRatio; }
110 : : virtual string GetThrusterLabels(int id, string delimeter);
111 : : virtual string GetThrusterValues(int id, string delimeter);
112 : :
113 : : protected:
114 : : eType Type;
115 : : string Name;
116 : : double Thrust;
117 : : double PowerRequired;
118 : : double deltaT;
119 : : double GearRatio;
120 : : double ThrustCoeff;
121 : : double ReverserAngle;
122 : : int EngineNum;
123 : : FGPropertyManager* PropertyManager;
124 : : virtual void Debug(int from);
125 : : };
126 : : }
127 : : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128 : : #endif
129 : :
|