JSBSim Flight Dynamics Model  1.1.11 (13 Feb 2022)
An Open Source Flight Dynamics and Control Software Library in C++
FGTransmission.h
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 
3  JSBSim
4  Author: Jon S. Berndt
5  Date started: 08/24/00
6  ------------- Copyright (C) 2000 Jon S. Berndt (jon@jsbsim.org) -------------
7 
8  Header: FGTransmission.h
9  Author: T.Kreitler
10  Date started: 02/05/12
11 
12  ------------- Copyright (C) 2012 T. Kreitler (t.kreitler@web.de) -------------
13 
14  This program is free software; you can redistribute it and/or modify it under
15  the terms of the GNU Lesser General Public License as published by the Free Software
16  Foundation; either version 2 of the License, or (at your option) any later
17  version.
18 
19  This program is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
21  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
22  details.
23 
24  You should have received a copy of the GNU Lesser General Public License along with
25  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
26  Place - Suite 330, Boston, MA 02111-1307, USA.
27 
28  Further information about the GNU Lesser General Public License can also be found on
29  the world wide web at http://www.gnu.org.
30 
31 HISTORY
32 --------------------------------------------------------------------------------
33 02/05/12 T.Kreitler Created
34 
35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
36 SENTRY
37 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
38 
39 #ifndef FGTRANSMISSION_H
40 #define FGTRANSMISSION_H
41 
42 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43 INCLUDES
44 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
45 
46 #include "FGJSBBase.h"
47 #include "FGFDMExec.h"
48 #include "input_output/FGPropertyManager.h"
49 
50 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 FORWARD DECLARATIONS
52 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
53 
54 namespace JSBSim {
55 
56 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57 CLASS DOCUMENTATION
58 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
59 
104 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
105 CLASS DECLARATION
106 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
107 
108 class FGTransmission : public FGJSBBase {
109 
110 public:
115  FGTransmission(FGFDMExec *exec, int num, double dt);
116 
118  ~FGTransmission();
119 
120  void Calculate(double EnginePower, double ThrusterTorque, double dt);
121 
122  void SetMaxBrakePower(double x) {MaxBrakePower=x;}
123  double GetMaxBrakePower() const {return MaxBrakePower;}
124  void SetEngineFriction(double x) {EngineFriction=x;}
125  double GetEngineFriction() const {return EngineFriction;}
126  void SetEngineMoment(double x) {EngineMoment=x;}
127  double GetEngineMoment() const {return EngineMoment;}
128  void SetThrusterMoment(double x) {ThrusterMoment=x;}
129  double GetThrusterMoment() const {return ThrusterMoment;}
130 
131  double GetFreeWheelTransmission() const {return FreeWheelTransmission;}
132  void SetEngineRPM(double x) {EngineRPM=x;}
133  double GetEngineRPM() {return EngineRPM;}
134  void SetThrusterRPM(double x) {ThrusterRPM=x;}
135  double GetThrusterRPM() {return ThrusterRPM;}
136 
137  double GetBrakeCtrlNorm() const {return BrakeCtrlNorm;}
138  void SetBrakeCtrlNorm(double x) {BrakeCtrlNorm=x;}
139  double GetClutchCtrlNorm() const {return ClutchCtrlNorm;}
140  void SetClutchCtrlNorm(double x) {ClutchCtrlNorm=x;}
141 
142 private:
143  bool BindModel(int num);
144  void Debug(int from);
145 
146  inline double omega_to_rpm(double w) {
147  return w * 9.54929658551372014613302580235; // omega/(2.0*PI) * 60.0
148  }
149  inline double rpm_to_omega(double r) {
150  return r * 0.104719755119659774615421446109; // (rpm/60.0)*2.0*PI
151  }
152 
153  Filter FreeWheelLag;
154  double FreeWheelTransmission; // state, 0: free, 1:locked
155 
156  double ThrusterMoment;
157  double EngineMoment; // estimated MOI of gear and engine, influences acceleration
158  double EngineFriction; // estimated friction in gear and possibly engine
159 
160  double ClutchCtrlNorm;
161  double BrakeCtrlNorm;
162  double MaxBrakePower;
163 
164  double EngineRPM;
165  double ThrusterRPM;
166  FGPropertyManager* PropertyManager;
167 
168 };
169 
170 }
171 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
172 #endif
JSBSim::FGFDMExec
Encapsulates the JSBSim simulation executive.
Definition: FGFDMExec.h:185
JSBSim::FGTransmission::FGTransmission
FGTransmission(FGFDMExec *exec, int num, double dt)
Constructor for FGTransmission.
Definition: FGTransmission.cpp:55
JSBSim::FGTransmission::~FGTransmission
~FGTransmission()
Destructor for FGTransmission.
Definition: FGTransmission.cpp:68
JSBSim::FGTransmission
Utility class that handles power transmission in conjunction with FGRotor.
Definition: FGTransmission.h:108
JSBSim::FGJSBBase
JSBSim Base class.
Definition: FGJSBBase.h:78
JSBSim::FGJSBBase::Filter
First order, (low pass / lag) filter.
Definition: FGJSBBase.h:99
JSBSim::FGPropertyManager
Definition: FGPropertyManager.h:373