]> git.mxchange.org Git - flightgear.git/blob - src/FDM/LaRCsim/ls_model.c
Avoid a potential segfault.
[flightgear.git] / src / FDM / LaRCsim / ls_model.c
1 /***************************************************************************
2
3         TITLE:          ls_model()      
4         
5 ----------------------------------------------------------------------------
6
7         FUNCTION:       Model loop executive
8
9 ----------------------------------------------------------------------------
10
11         MODULE STATUS:  developmental
12
13 ----------------------------------------------------------------------------
14
15         GENEALOGY:      Created 15 October 1992 as part of LaRCSIM project
16                         by Bruce Jackson.
17
18 ----------------------------------------------------------------------------
19
20         DESIGNED BY:    Bruce Jackson
21         
22         CODED BY:       Bruce Jackson
23         
24         MAINTAINED BY:  maintainer
25
26 ----------------------------------------------------------------------------
27
28         MODIFICATION HISTORY:
29         
30         DATE    PURPOSE                                         BY
31
32         950306  Added parameters to call: dt, which is the step size
33                 to be taken this loop (caution: may vary from call to call)
34                 and Initialize, which if non-zero, implies an initialization
35                 is requested.                                   EBJ
36
37         CURRENT RCS HEADER INFO:
38 $Header$
39 $Log$
40 Revision 1.2  2002/11/08 17:03:50  curt
41 Robert Deters:
42
43 Latest revisions of the UIUC code.
44
45 Revision 1.1.1.1  2002/09/10 01:14:02  curt
46 Initial revision of FlightGear-0.9.0
47
48 Revision 1.5  2002/04/01 19:37:34  curt
49 I have attached revisions to the UIUC code.  The revisions include the
50 ability to run a nonlinear model with flaps.  The files ls_model.c and
51 uiuc_aero.c were changed since we had some functions with the same
52 name.  The name changes doesn't affect the code, it just makes it a
53 little easier to read.  There are changes in LaRCsim.cxx so UIUC
54 models have engine sound.  Could you send me an email when you receive
55 this and/or when the changes make it to the CVS?  Thanks.
56
57 Also I noticed you have some outdated files that are no longer used in
58 the UIUCModel directory.  They are uiuc_initializemaps1.cpp,
59 uiuc_initializemaps2.cpp, uiuc_initializemaps3.cpp, and
60 uiuc_initializemaps4.cpp
61
62 Rob
63
64 Revision 1.4  2001/09/14 18:47:27  curt
65 More changes in support of UIUCModel.
66
67 Revision 1.3  2000/10/28 14:30:33  curt
68 Updates by Tony working on the FDM interface bus.
69
70 Revision 1.2  2000/04/10 18:09:41  curt
71 David Megginson made a few (mostly minor) mods to the LaRCsim files, and
72 it's now possible to choose the LaRCsim model at runtime, as in
73
74   fgfs --aircraft=c172
75
76 or
77
78   fgfs --aircraft=uiuc --aircraft-dir=Aircraft-uiuc/Boeing747
79
80 I did this so that I could play with the UIUC stuff without losing
81 Tony's C172 with its flaps, etc.  I did my best to respect the design
82 of the LaRCsim code by staying in C, making only minimal changes, and
83 not introducing any dependencies on the rest of FlightGear.  The
84 modified files are attached.
85
86 Revision 1.1.1.1  1999/06/17 18:07:33  curt
87 Start of 0.7.x branch
88
89 Revision 1.1.1.1  1999/04/05 21:32:45  curt
90 Start of 0.6.x branch.
91
92 Revision 1.3  1998/08/06 12:46:39  curt
93 Header change.
94
95 Revision 1.2  1998/01/19 18:40:27  curt
96 Tons of little changes to clean up the code and to remove fatal errors
97 when building with the c++ compiler.
98
99 Revision 1.1  1997/05/29 00:09:58  curt
100 Initial Flight Gear revision.
101
102  * Revision 1.3  1995/03/06  18:49:46  bjax
103  * Added dt and initialize flag parameters to subroutine calls. This will
104  * support trim routine (to allow single throttle setting to drive
105  * all four throttle positions, for example, if initialize is TRUE).
106  *
107  * Revision 1.2  1993/03/10  06:38:09  bjax
108  * Added additional calls: inertias() and subsystems()... EBJ
109  *
110  * Revision 1.1  92/12/30  13:19:08  bjax
111  * Initial revision
112  * 
113
114 ----------------------------------------------------------------------------
115
116         REFERENCES:
117
118 ----------------------------------------------------------------------------
119
120         CALLED BY:      ls_step (in initialization), ls_loop (planned)
121
122 ----------------------------------------------------------------------------
123
124         CALLS TO:       aero(), engine(), gear()
125
126 ----------------------------------------------------------------------------
127
128         INPUTS:
129
130 ----------------------------------------------------------------------------
131
132         OUTPUTS:
133
134 --------------------------------------------------------------------------*/
135 #include "ls_types.h"
136 #include "ls_model.h"
137 #include "default_model_routines.h"
138
139 Model current_model;
140
141
142 void ls_model( SCALAR dt, int Initialize ) {
143     switch (current_model) {
144     case NAVION:
145       inertias( dt, Initialize );
146       subsystems( dt, Initialize );
147       navion_aero( dt, Initialize );
148       navion_engine( dt, Initialize );
149       navion_gear( dt, Initialize );
150       break;
151     case C172:
152       if(Initialize < 0) c172_init();
153       inertias( dt, Initialize );
154       subsystems( dt, Initialize );
155       c172_aero( dt, Initialize );
156       c172_engine( dt, Initialize );
157       c172_gear( dt, Initialize );
158       break;
159     case CHEROKEE:
160       inertias( dt, Initialize );
161       subsystems( dt, Initialize );
162       cherokee_aero( dt, Initialize );
163       cherokee_engine( dt, Initialize );
164       cherokee_gear( dt, Initialize );
165       break;
166     case UIUC:
167       inertias( dt, Initialize );
168       subsystems( dt, Initialize );
169       uiuc_engine_2_wrapper( dt, Initialize );
170       uiuc_aero_2_wrapper( dt, Initialize );
171       uiuc_gear_2_wrapper( dt, Initialize );
172       //uiuc_network_2_wrapper();
173       uiuc_record_2_wrapper(dt);
174       break;
175     }
176 }