]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/LaRCsim/ls_step.c
resync JSBSim
[flightgear.git] / src / FDM / LaRCsim / ls_step.c
index 7bbae99a871738b4cb2edd2479889a8f47d9ad50..3927425cd07df99c2296f0372c5c4751fd6f618c 100644 (file)
 
 $Header$
 $Log$
-Revision 1.1  1999/04/05 21:32:45  curt
-Initial revision
+Revision 1.5  2003/07/25 17:53:47  mselig
+UIUC code initilization mods to tidy things up a bit.
+
+Revision 1.4  2003/06/20 19:53:56  ehofman
+Get rid of a multiple defined symbol warning" src/FDM/LaRCsim/ls_step.c
+"
+
+Revision 1.3  2003/06/09 02:50:23  mselig
+mods made to setup for some initializations in uiuc code
+
+Revision 1.2  2003/05/25 12:14:46  ehofman
+Rename some defines to prevent a namespace clash
+
+Revision 1.1.1.1  2002/09/10 01:14:02  curt
+Initial revision of FlightGear-0.9.0
+
+Revision 1.5  2001/09/14 18:47:27  curt
+More changes in support of UIUCModel.
+
+Revision 1.4  2001/03/24 05:03:12  curt
+SG-ified logstream.
+
+Revision 1.3  2000/10/23 22:34:55  curt
+I tested:
+LaRCsim c172 on-ground and in-air starts, reset: all work
+UIUC Cessna172 on-ground and in-air starts work as expected, reset
+results in an aircraft that is upside down but does not crash FG.   I
+don't know what it was like before, so it may well be no change.
+JSBSim c172 and X15 in-air starts work fine, resets now work (and are
+trimmed), on-ground starts do not -- the c172 ends up on its back.  I
+suspect this is no worse than before.
+
+I did not test:
+Balloon (the weather code returns nan's for the atmosphere data --this
+is in the weather module and apparently is a linux only bug)
+ADA (don't know how)
+MagicCarpet  (needs work yet)
+External (don't know how)
+
+known to be broken:
+LaRCsim c172 on-ground starts with a negative terrain altitude (this
+happens at KPAO when the scenery is not present).   The FDM inits to
+about 50 feet AGL and the model falls to the ground.  It does stay
+upright, however, and seems to be fine once it settles out, FWIW.
+
+To do:
+--implement set_Model on the bus
+--bring Christian's weather data into JSBSim
+-- add default method to bus for updating things like the sin and cos of
+latitude (for Balloon, MagicCarpet)
+-- lots of cleanup
+
+The files:
+src/FDM/flight.cxx
+src/FDM/flight.hxx
+-- all data members now declared protected instead of private.
+-- eliminated all but a small set of 'setters', no change to getters.
+-- that small set is declared virtual, the default implementation
+provided preserves the old behavior
+-- all of the vector data members are now initialized.
+-- added busdump() method -- SG_LOG's  all the bus data when called,
+useful for diagnostics.
+
+src/FDM/ADA.cxx
+-- bus data members now directly assigned to
+
+src/FDM/Balloon.cxx
+-- bus data members now directly assigned to
+-- changed V_equiv_kts to V_calibrated_kts
+
+src/FDM/JSBSim.cxx
+src/FDM/JSBSim.hxx
+-- bus data members now directly assigned to
+-- implemented the FGInterface virtual setters with JSBSim specific
+logic
+-- changed the static FDMExec to a dynamic fdmex (needed so that the
+JSBSim object can be deleted when a model change is called for)
+-- implemented constructor and destructor, moved some of the logic
+formerly in init() to constructor
+-- added logic to bring up FGEngInterface objects and set the RPM and
+throttle values.
+
+src/FDM/LaRCsim.cxx
+src/FDM/LaRCsim.hxx
+-- bus data members now directly assigned to
+-- implemented the FGInterface virtual setters with LaRCsim specific
+logic, uses LaRCsimIC
+-- implemented constructor and destructor, moved some of the logic
+formerly in init() to constructor
+-- moved default inertias to here from fg_init.cxx
+-- eliminated the climb rate calculation.  The equivalent, climb_rate =
+-1*vdown, is now in copy_from_LaRCsim().
+
+src/FDM/LaRCsimIC.cxx
+src/FDM/LaRCsimIC.hxx
+-- similar to FGInitialCondition, this class has all the logic needed to
+turn data like Vc and Mach into the more fundamental quantities LaRCsim
+needs to initialize.
+-- put it in src/FDM since it is a class
+
+src/FDM/MagicCarpet.cxx
+ -- bus data members now directly assigned to
+
+src/FDM/Makefile.am
+-- adds LaRCsimIC.hxx and cxx
+
+src/FDM/JSBSim/FGAtmosphere.h
+src/FDM/JSBSim/FGDefs.h
+src/FDM/JSBSim/FGInitialCondition.cpp
+src/FDM/JSBSim/FGInitialCondition.h
+src/FDM/JSBSim/JSBSim.cpp
+-- changes to accomodate the new bus
+
+src/FDM/LaRCsim/atmos_62.h
+src/FDM/LaRCsim/ls_geodesy.h
+-- surrounded prototypes with #ifdef __cplusplus ... #endif , functions
+here are needed in LaRCsimIC
+
+src/FDM/LaRCsim/c172_main.c
+src/FDM/LaRCsim/cherokee_aero.c
+src/FDM/LaRCsim/ls_aux.c
+src/FDM/LaRCsim/ls_constants.h
+src/FDM/LaRCsim/ls_geodesy.c
+src/FDM/LaRCsim/ls_geodesy.h
+src/FDM/LaRCsim/ls_step.c
+src/FDM/UIUCModel/uiuc_betaprobe.cpp
+-- changed PI to LS_PI, eliminates preprocessor naming conflict with
+weather module
+
+src/FDM/LaRCsim/ls_interface.c
+src/FDM/LaRCsim/ls_interface.h
+-- added function ls_set_model_dt()
+
+src/Main/bfi.cxx
+-- eliminated calls that set the NED speeds to body components.  They
+are no longer needed and confuse the new bus.
+
+src/Main/fg_init.cxx
+-- eliminated calls that just brought the bus data up-to-date (e.g.
+set_sin_cos_latitude). or set default values.   The bus now handles the
+defaults and updates itself when the setters are called (for LaRCsim and
+JSBSim).  A default method for doing this needs to be added to the bus.
+-- added fgVelocityInit() to set the speed the user asked for.  Both
+JSBSim and LaRCsim can now be initialized using any of:
+vc,mach, NED components, UVW components.
+
+src/Main/main.cxx
+--eliminated call to fgFDMSetGroundElevation, this data is now 'pulled'
+onto the bus every update()
+
+src/Main/options.cxx
+src/Main/options.hxx
+-- added enum to keep track of the speed requested by the user
+-- eliminated calls to set NED velocity properties to body speeds, they
+are no longer needed.
+-- added options for the NED components.
+
+src/Network/garmin.cxx
+src/Network/nmea.cxx
+--eliminated calls that just brought the bus data up-to-date (e.g.
+set_sin_cos_latitude).  The bus now updates itself when the setters are
+called (for LaRCsim and JSBSim).  A default method for doing this needs
+to be added to the bus.
+-- changed set_V_equiv_kts to set_V_calibrated_kts.  set_V_equiv_kts no
+longer exists ( get_V_equiv_kts still does, though)
+
+src/WeatherCM/FGLocalWeatherDatabase.cpp
+-- commented out the code to put the weather data on the bus, a
+different scheme for this is needed.
+
+Revision 1.2  1999/10/29 16:08:33  curt
+Added flaps support to c172 model.
+
+Revision 1.1.1.1  1999/06/17 18:07:33  curt
+Start of 0.7.x branch
+
+Revision 1.1.1.1  1999/04/05 21:32:45  curt
+Start of 0.6.x branch.
 
 Revision 1.4  1998/08/24 20:09:27  curt
 Code optimization tweaks from Norman Vine.
@@ -121,6 +297,8 @@ Initial Flight Gear revision.
 
 --------------------------------------------------------------------------*/
 
+//#include <FDM/UIUCModel/uiuc_wrapper.h>
+
 #include "ls_types.h"
 #include "ls_constants.h"
 #include "ls_generic.h"
@@ -133,8 +311,21 @@ Initial Flight Gear revision.
 /* #include "ls_sim_control.h" */
 #include <math.h>
 
+extern Model current_model;    /* defined in ls_model.c */
 extern SCALAR Simtime;         /* defined in ls_main.c */
 
+void uiuc_init_vars() {
+    static int init = 0;
+
+    if (init==0) {
+        init=-1;
+        uiuc_init_aeromodel();
+    }
+
+    uiuc_initial_init();
+}
+
+
 void ls_step( SCALAR dt, int Initialize ) {
        static  int     inited = 0;
                SCALAR  dth;
@@ -173,6 +364,10 @@ void ls_step( SCALAR dt, int Initialize ) {
        V_east = V_east + local_gnd_veast;
 
 /* Initialize quaternions and transformation matrix from Euler angles */
+       // Initialize UIUC aircraft model
+       if (current_model == UIUC) {
+         uiuc_init_2_wrapper();
+        }
 
            e_0 = cos(Psi*0.5)*cos(Theta*0.5)*cos(Phi*0.5) 
                + sin(Psi*0.5)*sin(Theta*0.5)*sin(Phi*0.5);
@@ -192,6 +387,12 @@ void ls_step( SCALAR dt, int Initialize ) {
            T_local_to_body_32 = 2*(e_2*e_3 - e_0*e_1);
            T_local_to_body_33 = e_0*e_0 - e_1*e_1 - e_2*e_2 + e_3*e_3;
 
+           // Initialize local velocities (V_north, V_east, V_down)
+           // based on transformation matrix calculated above
+           if (current_model == UIUC) {
+             uiuc_local_vel_init();
+           }
+
 /*     Calculate local gravitation acceleration        */
 
                ls_gravity( Radius_to_vehicle, Lat_geocentric, &Gravity );
@@ -208,13 +409,13 @@ void ls_step( SCALAR dt, int Initialize ) {
 /* Initialize auxiliary variables */
 
                ls_aux();
-               Alpha_dot = 0.;
-               Beta_dot = 0.;
+               Std_Alpha_dot = 0.;
+               Std_Beta_dot = 0.;
 
 /* set flag; disable integrators */
 
                inited = -1;
-               dt = 0;
+               dt = 0.0;
                
        }
 
@@ -341,7 +542,7 @@ void ls_step( SCALAR dt, int Initialize ) {
 
 /* Resolve Psi to 0 - 359.9999 */
 
-       if (Psi < 0 ) Psi = Psi + 2*PI;
+       if (Psi < 0 ) Psi = Psi + 2*LS_PI;
 
 /*  L I N E A R   P O S I T I O N S   */