]> git.mxchange.org Git - flightgear.git/commitdiff
I have attached revisions to the UIUC code. The revisions include the
authorcurt <curt>
Mon, 1 Apr 2002 21:37:33 +0000 (21:37 +0000)
committercurt <curt>
Mon, 1 Apr 2002 21:37:33 +0000 (21:37 +0000)
ability to run a nonlinear model with flaps.  The files ls_model.c and
uiuc_aero.c were changed since we had some functions with the same
name.  The name changes doesn't affect the code, it just makes it a
little easier to read.  There are changes in LaRCsim.cxx so UIUC
models have engine sound.  Could you send me an email when you receive
this and/or when the changes make it to the CVS?  Thanks.

Also I noticed you have some outdated files that are no longer used in
the UIUCModel directory.  They are uiuc_initializemaps1.cpp,
uiuc_initializemaps2.cpp, uiuc_initializemaps3.cpp, and
uiuc_initializemaps4.cpp

Rob

38 files changed:
src/FDM/LaRCsim.cxx
src/FDM/LaRCsim/ls_model.c
src/FDM/LaRCsim/uiuc_aero.c
src/FDM/UIUCModel/Makefile.am
src/FDM/UIUCModel/uiuc_2DdataFileReader.cpp
src/FDM/UIUCModel/uiuc_3Dinterpolation.cpp [new file with mode: 0644]
src/FDM/UIUCModel/uiuc_3Dinterpolation.h [new file with mode: 0644]
src/FDM/UIUCModel/uiuc_aerodeflections.cpp
src/FDM/UIUCModel/uiuc_aircraft.h
src/FDM/UIUCModel/uiuc_coef_drag.cpp
src/FDM/UIUCModel/uiuc_coef_drag.h
src/FDM/UIUCModel/uiuc_coef_lift.cpp
src/FDM/UIUCModel/uiuc_coef_lift.h
src/FDM/UIUCModel/uiuc_coef_pitch.cpp
src/FDM/UIUCModel/uiuc_coef_pitch.h
src/FDM/UIUCModel/uiuc_coef_roll.cpp
src/FDM/UIUCModel/uiuc_coef_roll.h
src/FDM/UIUCModel/uiuc_coef_sideforce.cpp
src/FDM/UIUCModel/uiuc_coef_sideforce.h
src/FDM/UIUCModel/uiuc_coef_yaw.cpp
src/FDM/UIUCModel/uiuc_coef_yaw.h
src/FDM/UIUCModel/uiuc_initializemaps1.cpp [deleted file]
src/FDM/UIUCModel/uiuc_initializemaps2.cpp [deleted file]
src/FDM/UIUCModel/uiuc_initializemaps3.cpp [deleted file]
src/FDM/UIUCModel/uiuc_initializemaps4.cpp [deleted file]
src/FDM/UIUCModel/uiuc_map_CD.cpp
src/FDM/UIUCModel/uiuc_map_CL.cpp
src/FDM/UIUCModel/uiuc_map_CY.cpp
src/FDM/UIUCModel/uiuc_map_Cm.cpp
src/FDM/UIUCModel/uiuc_map_Cn.cpp
src/FDM/UIUCModel/uiuc_map_Croll.cpp
src/FDM/UIUCModel/uiuc_map_controlSurface.cpp
src/FDM/UIUCModel/uiuc_map_record3.cpp
src/FDM/UIUCModel/uiuc_map_record4.cpp
src/FDM/UIUCModel/uiuc_menu.cpp
src/FDM/UIUCModel/uiuc_recorder.cpp
src/FDM/UIUCModel/uiuc_wrapper.cpp
src/FDM/UIUCModel/uiuc_wrapper.h

index e33b3485e25d152336145379b70451257f0b8d53..a7a2435a0dbcf3504608cabe7ddd4c3bedece7f5 100644 (file)
@@ -198,6 +198,15 @@ void FGLaRCsim::update( int multiloop ) {
     // printf("Altitude = %.2f\n", Altitude * 0.3048);
     // printf("Radius to Vehicle = %.2f\n", Radius_to_vehicle * 0.3048);
 
+    // for engine functions (sounds and instruments)
+    // drive the rpm gauge
+    fgSetDouble("/engines/engine/rpm", (globals->get_controls()->get_throttle( 0 ) * 100.0 * 25 ));
+    // manifold air pressure, which drives the sound (see *sound.xml file)
+    fgSetDouble("/engines/engine/mp-osi", (globals->get_controls()->get_throttle( 0 ) * 100.0 ));
+    // make the engine cranking and running sounds when fgfs starts up
+    fgSetDouble("/engines/engine/cranking", 1);
+    fgSetDouble("/engines/engine/running", 1);
+
     ls_update(multiloop);
 
     // printf("%d FG_Altitude = %.2f\n", i, FG_Altitude * 0.3048);
index e2301d42ed6b449ef7bea83eb03679f57eb0d908..decc78348777a62cf033dfcb4203bd676b55d212 100644 (file)
        CURRENT RCS HEADER INFO:
 $Header$
 $Log$
+Revision 1.5  2002/04/01 19:37:34  curt
+I have attached revisions to the UIUC code.  The revisions include the
+ability to run a nonlinear model with flaps.  The files ls_model.c and
+uiuc_aero.c were changed since we had some functions with the same
+name.  The name changes doesn't affect the code, it just makes it a
+little easier to read.  There are changes in LaRCsim.cxx so UIUC
+models have engine sound.  Could you send me an email when you receive
+this and/or when the changes make it to the CVS?  Thanks.
+
+Also I noticed you have some outdated files that are no longer used in
+the UIUCModel directory.  They are uiuc_initializemaps1.cpp,
+uiuc_initializemaps2.cpp, uiuc_initializemaps3.cpp, and
+uiuc_initializemaps4.cpp
+
+Rob
+
 Revision 1.4  2001/09/14 18:47:27  curt
 More changes in support of UIUCModel.
 
@@ -142,10 +158,11 @@ void ls_model( SCALAR dt, int Initialize ) {
     case UIUC:
       inertias( dt, Initialize );
       subsystems( dt, Initialize );
-      uiuc_aero( dt, Initialize );
-      uiuc_engine( dt, Initialize );
-      uiuc_gear( dt, Initialize );
-      uiuc_record(dt);
+      uiuc_aero_2_wrapper( dt, Initialize );
+      uiuc_engine_2_wrapper( dt, Initialize );
+      uiuc_gear_2_wrapper( dt, Initialize );
+      //uiuc_network_2_wrapper();
+      uiuc_record_2_wrapper(dt);
       break;
     }
 }
index e7453734535510125a5e9248c6850b067a0fa878..8edf96a4beb31beb2ed59430cdd1289cbf2cf57a 100644 (file)
@@ -20,7 +20,7 @@
                
   CODED BY:            Bipin Sehgal
                
-  MAINTAINED BY:       Bipin Sehgal
+  MAINTAINED BY:       Rob Deters and Glen Dimock
 
 ----------------------------------------------------------------------------
 
@@ -30,6 +30,8 @@
   3/17/00   Initial test release  
   3/09/01   Added callout to UIUC gear function.   (DPM)
   6/18/01   Added call out to UIUC record routine (RD)
+  11/12/01  Changed from uiuc_init_aeromodel() to uiuc_initial_init(). (RD)
+  2/24/02   Added uiuc_network_routine() (GD)
 
 ----------------------------------------------------------------------------
 
 #include <FDM/UIUCModel/uiuc_wrapper.h>
 
 
-void uiuc_aero( SCALAR dt, int Initialize ) 
+void uiuc_aero_2_wrapper( SCALAR dt, int Initialize ) 
 {
     static int init = 0;
 
     if (init==0)
     {
       init = -1; 
-      uiuc_init_aeromodel();
+      uiuc_initial_init();
+      //      uiuc_init_aeromodel();
     }
 
     uiuc_force_moment(dt);
 }
 
 
-void uiuc_engine( SCALAR dt, int Initialize ) 
+void uiuc_engine_2_wrapper( SCALAR dt, int Initialize ) 
 {
     uiuc_engine_routine();
 }
 
 
-void uiuc_gear ()
+void uiuc_gear_2_wrapper ()
 {
     uiuc_gear_routine();
 }
 
-void uiuc_record(SCALAR dt)
+void uiuc_record_2_wrapper(SCALAR dt)
 {
   uiuc_record_routine(dt);
 }
+
+//void uiuc_network_2_wrapper()
+//{
+//  uiuc_network_routine();
+//}
index 54e1b8466d19bb3f0e8c6a9b214e8830316837d4..a3b32b892833e0f8b04d4b7411b23a334cb90fe7 100644 (file)
@@ -7,6 +7,7 @@ libUIUCModel_a_SOURCES = \
                         uiuc_1Dinterpolation.cpp uiuc_1Dinterpolation.h \
                         uiuc_2DdataFileReader.cpp uiuc_2DdataFileReader.h \
                         uiuc_2Dinterpolation.cpp uiuc_2Dinterpolation.h \
+                       uiuc_3Dinterpolation.cpp uiuc_3Dinterpolation.h \
                         uiuc_aerodeflections.cpp uiuc_aerodeflections.h \
                        uiuc_aircraftdir.h uiuc_aircraft.h \
                         uiuc_betaprobe.cpp uiuc_betaprobe.h \
index 9c45fe7cedace6331849ac82d0a19398f91ae504..1d6fda805f624a97adcccc012f0df807b29b17b4 100644 (file)
 ----------------------------------------------------------------------
 
  HISTORY:      02/29/2000   initial release
+               10/25/2001   (RD) Modified so that it recognizes a
+                           blank line
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Jeff Scott         <jscott@mail.com>
+               Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -101,14 +104,17 @@ void uiuc_2DdataFileReader( string file_name,
       istrstream token1(linetoken1.c_str());
       istrstream token2(linetoken2.c_str());
 
-      //reset token_value2 for first if statement
+      //reset token_value1 and token_value2 for first if statement
+      token_value1 = -999;
       token_value2 = -999;
 
       token1 >> token_value1;
       token2 >> token_value2;
 
+      //chenk to see if it is a blank line
+      if (token_value1==-999 && token_value2==-999);
       //check to see if only one value on line (token2 blank)
-      if (token_value2 == -999)
+      else if (token_value2 == -999)
         {
           y[counter_y] = token_value1 * convert_y;
 
diff --git a/src/FDM/UIUCModel/uiuc_3Dinterpolation.cpp b/src/FDM/UIUCModel/uiuc_3Dinterpolation.cpp
new file mode 100644 (file)
index 0000000..c609465
--- /dev/null
@@ -0,0 +1,398 @@
+/**********************************************************************
+
+ FILENAME:     uiuc_3Dinterpolation.cpp
+
+----------------------------------------------------------------------
+
+ DESCRIPTION:  A 3D interpolator.  Does a linear interpolation between
+               two values that were found from using the 2D
+              interpolator (3Dinterpolation()), or uses 3Dinterp_quick()
+              to perform a 3D linear interpolation on "nice" data
+
+----------------------------------------------------------------------
+
+ STATUS:       alpha version
+
+----------------------------------------------------------------------
+
+ REFERENCES:
+
+----------------------------------------------------------------------
+
+ HISTORY:      11/07/2001   initial release
+               02/18/2002   (RD) Created uiuc_3Dinterp_quick() to take
+                           advantage of the "nice" format of the
+                           nonlinear Twin Otter data.  Performs a
+                           quicker 3D interpolation.  Modified
+                           uiuc_3Dinterpolation() to handle new input
+                           form of the data.
+----------------------------------------------------------------------
+
+ AUTHOR(S):    Robert Deters      <rdeters@uiuc.edu>
+
+----------------------------------------------------------------------
+
+ VARIABLES:
+
+----------------------------------------------------------------------
+
+ INPUTS:       
+
+----------------------------------------------------------------------
+
+ OUTPUTS:      interpI
+
+----------------------------------------------------------------------
+
+ CALLED BY:    uiuc_coef_drag
+               uiuc_coef_lift
+              uiuc_coef_pitch
+              uiuc_coef_roll
+              uiuc_coef_sideforce
+              uiuc_coef_yaw
+
+----------------------------------------------------------------------
+
+ CALLS TO:     2Dinterpolation
+
+----------------------------------------------------------------------
+
+ COPYRIGHT:    (C) 2001 by Michael Selig
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA or view http://www.gnu.org/copyleft/gpl.html.
+
+**********************************************************************/
+#include <simgear/compiler.h>    // MSVC: to disable C4244 d to f warning
+
+#include "uiuc_3Dinterpolation.h"
+
+void uiuc_1DtoSingle( int temp1Darray[30], 
+                     int filenumber,
+                     int &single_value)
+{
+  single_value = temp1Darray[filenumber];
+}
+
+void uiuc_2Dto1D( double temp2Darray[30][100], 
+                 int filenumber,
+                 double array1D[100])
+{
+  int count1;
+  
+  for (count1=0; count1<=99; count1++)
+    {
+      array1D[count1] = temp2Darray[filenumber][count1];
+    }
+}
+
+void uiuc_2Dto1D_int( int temp2Darray[30][100], 
+                     int filenumber,
+                     int array1D[100])
+{
+  int count1;
+  
+  for (count1=0; count1<=99; count1++)
+    {
+      array1D[count1] = temp2Darray[filenumber][count1];
+    }
+}
+
+void uiuc_3Dto2D( double temp3Darray[30][100][100],
+                 int filenumber,
+                 double array2D[100][100])
+{
+  int count1, count2;
+  
+  for (count1=0; count1<=99; count1++)
+    {
+      for (count2=0; count2<=99; count2++)
+       {
+         array2D[count1][count2] = temp3Darray[filenumber][count1][count2];
+       }
+    }
+}
+
+double uiuc_3Dinterpolation( double third_Array[30],
+                            double full_xArray[30][100][100],
+                            double full_yArray[30][100],
+                            double full_zArray[30][100][100],
+                            int full_nxArray[30][100],
+                            int full_ny[30],
+                            int third_max,
+                            double third_bet,
+                            double x_value,
+                            double y_value)
+{
+  double reduced_xArray[100][100], reduced_yArray[100];
+  double reduced_zArray[100][100];
+  int reduced_nxArray[100], reduced_ny;
+
+  double interpmin, interpmax, third_u, third_l;
+  double interpI;
+  int third_min;
+  int k=1;
+  bool third_same=false;
+
+  if (third_bet <= third_Array[1])
+    {
+      third_min = 1;
+      third_same = true;
+    }
+  else if (third_bet >= third_Array[third_max])
+    {
+      third_min = third_max;
+      third_same = true;
+    }
+  else
+    {
+      while (third_Array[k] <= third_bet)
+       {
+         k++;
+       }
+      third_max = k;
+      third_min = k-1;
+    }
+  if (third_same)
+    {
+
+      uiuc_3Dto2D(full_xArray, third_min, reduced_xArray);
+      uiuc_2Dto1D(full_yArray, third_min, reduced_yArray);
+      uiuc_3Dto2D(full_zArray, third_min, reduced_zArray);
+      uiuc_2Dto1D_int(full_nxArray, third_min, reduced_nxArray);
+      uiuc_1DtoSingle(full_ny, third_min, reduced_ny);
+
+      interpI = uiuc_2Dinterpolation(reduced_xArray,
+                                    reduced_yArray,
+                                    reduced_zArray,
+                                    reduced_nxArray,
+                                    reduced_ny,
+                                    x_value,
+                                    y_value);
+    }
+  else
+    {
+      uiuc_3Dto2D(full_xArray, third_min, reduced_xArray);
+      uiuc_2Dto1D(full_yArray, third_min, reduced_yArray);
+      uiuc_3Dto2D(full_zArray, third_min, reduced_zArray);
+      uiuc_2Dto1D_int(full_nxArray, third_min, reduced_nxArray);
+      uiuc_1DtoSingle(full_ny, third_min, reduced_ny);
+
+      interpmin = uiuc_2Dinterpolation(reduced_xArray,
+                                    reduced_yArray,
+                                    reduced_zArray,
+                                    reduced_nxArray,
+                                    reduced_ny,
+                                    x_value,
+                                    y_value);
+
+      uiuc_3Dto2D(full_xArray, third_max, reduced_xArray);
+      uiuc_2Dto1D(full_yArray, third_max, reduced_yArray);
+      uiuc_3Dto2D(full_zArray, third_max, reduced_zArray);
+      uiuc_2Dto1D_int(full_nxArray, third_max, reduced_nxArray);
+      uiuc_1DtoSingle(full_ny, third_max, reduced_ny);
+
+      interpmax = uiuc_2Dinterpolation(reduced_xArray,
+                                    reduced_yArray,
+                                    reduced_zArray,
+                                    reduced_nxArray,
+                                    reduced_ny,
+                                    x_value,
+                                    y_value);
+
+      third_u = third_Array[third_max];
+      third_l = third_Array[third_min];
+
+      interpI=interpmax - (third_u-third_bet)*(interpmax-interpmin)/(third_u-third_l);
+    }
+
+  return interpI;
+
+}
+
+
+double uiuc_3Dinterp_quick( double z[30],
+                           double x[100],
+                           double y[100],
+                           double fxyz[30][100][100],
+                           int xmax,
+                           int ymax,
+                           int zmax,
+                           double zp,
+                           double xp,
+                           double yp)
+{
+
+  int xnuml, xnumu, ynuml, ynumu, znuml, znumu;
+  double xl, xu, yl, yu, zl, zu;
+  double ptxl, ptxu, ptyl, ptyu, ptylxl, ptylxu, ptyuxl, ptyuxu;
+  double ptzl, ptzu, ptzlxl, ptzlxu, ptzuxl, ptzuxu;
+  double ptzlyl, ptzlyu, ptzuyl, ptzuyu;
+  double ptzlylxl, ptzlylxu, ptzlyuxl, ptzlyuxu;
+  double ptzuylxl, ptzuylxu, ptzuyuxl, ptzuyuxu, data_point;
+
+  int i=1;
+  int j=1;
+  int k=1;
+
+  bool xsame=false;
+  bool ysame=false;
+  bool zsame=false;
+
+
+  // Find the z's
+  if (zp <= z[1])
+    {
+      znuml=1;
+      zsame=true;
+    }
+  else if (zp >= z[zmax])
+    {
+      znuml=zmax;
+      zsame=true;
+    }
+  else
+    {
+      while (z[k] <= zp)
+       k++;
+      zu=z[k];
+      zl=z[k-1];
+      znumu=k;
+      znuml=k-1;
+    }
+
+  // Find the y's
+  if (yp <= y[1])
+    {
+      ynuml=1;
+      ysame=true;
+    }
+  else if (yp >= y[ymax])
+    {
+      ynuml=ymax;
+      ysame=true;
+    }
+  else
+    {
+      while (y[j] <= yp)
+       j++;
+      yu=y[j];
+      yl=y[j-1];
+      ynumu=j;
+      ynuml=j-1;
+    }
+
+
+  // Find the x's
+  if (xp <= x[1])
+    {
+      xnuml=1;
+      xsame=true;
+    }
+  else if (xp >= x[xmax])
+    {
+      xnuml=xmax;
+      xsame=true;
+    }
+  else
+    {
+      while (x[i] <= xp)
+       i++;
+      xu=x[i];
+      xl=x[i-1];
+      xnumu=i;
+      xnuml=i-1;
+    }
+
+  if (zsame)
+    {
+      if (ysame && xsame)
+       {
+         data_point = fxyz[znuml][ynuml][xnuml];
+       }
+      else if (ysame)
+       {
+         ptxl = fxyz[znuml][ynuml][xnuml];
+         ptxu = fxyz[znuml][ynuml][xnumu];
+         data_point = ptxu - (xu-xp)*(ptxu-ptxl)/(xu-xl);
+       }
+      else if (xsame)
+       {
+         ptyl = fxyz[znuml][ynuml][xnuml];
+         ptyu = fxyz[znuml][ynumu][xnuml];
+         data_point = ptyu - (yu-yp)*(ptyu-ptyl)/(yu-yl);
+       }
+      else
+       {
+         ptylxl = fxyz[znuml][ynuml][xnuml];
+         ptylxu = fxyz[znuml][ynuml][xnumu];
+         ptyuxl = fxyz[znuml][ynumu][xnuml];
+         ptyuxu = fxyz[znuml][ynumu][xnumu];
+         ptyl = ptylxu - (xu-xp)*(ptylxu-ptylxl)/(xu-xl);
+         ptyu = ptyuxu - (xu-xp)*(ptyuxu-ptyuxl)/(xu-xl);
+         data_point = ptyu - (yu-yp)*(ptyu-ptyl)/(yu-yl);
+       }
+    }
+  else
+    {
+      if (ysame && xsame)
+       {
+         ptzl = fxyz[znuml][ynuml][xnuml];
+         ptzu = fxyz[znumu][ynuml][xnuml];
+         data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl);
+       }
+      else if (ysame)
+       {
+         ptzlxl = fxyz[znuml][ynuml][xnuml];
+         ptzlxu = fxyz[znuml][ynuml][xnumu];
+         ptzuxl = fxyz[znumu][ynuml][xnuml];
+         ptzuxu = fxyz[znumu][ynuml][xnumu];
+         ptzl = ptzlxu - (xu-xp)*(ptzlxu-ptzlxl)/(xu-xl);
+         ptzu = ptzuxu - (xu-xp)*(ptzuxu-ptzuxl)/(xu-xl);
+         data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl);
+       }
+      else if (xsame)
+       {
+         ptzlyl = fxyz[znuml][ynuml][xnuml];
+         ptzlyu = fxyz[znuml][ynumu][xnuml];
+         ptzuyl = fxyz[znumu][ynuml][xnuml];
+         ptzuyu = fxyz[znumu][ynumu][xnuml];
+         ptzl = ptzlyu - (yu-yp)*(ptzlyu-ptzlyl)/(yu-yl);
+         ptzu = ptzuyu - (yu-yp)*(ptzuyu-ptzuyl)/(yu-yl);
+         data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl);
+       }
+      else
+       {
+         ptzlylxl = fxyz[znuml][ynuml][xnuml];
+         ptzlylxu = fxyz[znuml][ynuml][xnumu];
+         ptzlyuxl = fxyz[znuml][ynumu][xnuml];
+         ptzlyuxu = fxyz[znuml][ynumu][xnumu];
+         ptzuylxl = fxyz[znumu][ynuml][xnuml];
+         ptzuylxu = fxyz[znumu][ynuml][xnumu];
+         ptzuyuxl = fxyz[znumu][ynumu][xnuml];
+         ptzuyuxu = fxyz[znumu][ynumu][xnumu];
+         ptzlyl = ptzlylxu - (xu-xp)*(ptzlylxu-ptzlylxl)/(xu-xl);
+         ptzlyu = ptzlyuxu - (xu-xp)*(ptzlyuxu-ptzlyuxl)/(xu-xl);
+         ptzuyl = ptzuylxu - (xu-xp)*(ptzuylxu-ptzuylxl)/(xu-xl);
+         ptzuyu = ptzuyuxu - (xu-xp)*(ptzuyuxu-ptzuyuxl)/(xu-xl);
+         ptzl = ptzlyu - (yu-yp)*(ptzlyu-ptzlyl)/(yu-yl);
+         ptzu = ptzuyu - (yu-yp)*(ptzuyu-ptzuyl)/(yu-yl);
+         data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl);
+       }
+
+    }
+
+
+  return data_point;
+}
diff --git a/src/FDM/UIUCModel/uiuc_3Dinterpolation.h b/src/FDM/UIUCModel/uiuc_3Dinterpolation.h
new file mode 100644 (file)
index 0000000..3ae2187
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef _COEF_FLAP_H_
+#define _COEF_FLAP_H_
+
+#include <FDM/LaRCsim/ls_generic.h>
+
+#include "uiuc_aircraft.h"
+#include "uiuc_2Dinterpolation.h"
+
+
+double uiuc_3Dinterpolation( double third_Array[30],
+                            double full_xArray[30][100][100],
+                            double full_yArray[30][100],
+                            double full_zArray[30][100][100],
+                            int full_nxArray[30][100],
+                            int full_ny[30],
+                            int third_max,
+                            double third_bet,
+                            double x_value,
+                            double y_value);
+double uiuc_3Dinterp_quick( double z[30],
+                           double x[100],
+                           double y[100],
+                           double fxyz[30][100][100],
+                           int xmax,
+                           int ymax,
+                           int zmax,
+                           double zp,
+                           double xp,
+                           double yp);
+
+#endif // _COEF_FLAP_H_
index f84d14452dd99d3ab12f0aa89c318a8d72710b4a..d87f608b82812ad9991f00ac37dd123240706843 100644 (file)
 
  HISTORY:      01/30/2000   initial release
                04/05/2000   (JS) added zero_Long_trim command
+              07/05/2001   (RD) removed elevator_tab addidtion to
+                           elevator calculation
+              11/12/2001   (RD) added new flap routine.  Needed for
+                           Twin Otter non-linear model
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Jeff Scott         <jscott@mail.com>
+               Robert Deters      <rdeters@uiuc.edu>
                Michael Selig      <m-selig@uiuc.edu>
 
 ----------------------------------------------------------------------
@@ -90,16 +95,42 @@ void uiuc_aerodeflections( double dt )
     aileron = - Lat_control * damax * DEG_TO_RAD;
 
   if ((Long_control+Long_trim) <= 0)
-    elevator = (Long_control + Long_trim) * demax * DEG_TO_RAD + elevator_tab;
+    elevator = (Long_control + Long_trim) * demax * DEG_TO_RAD;
   else
-    elevator = (Long_control + Long_trim) * demin * DEG_TO_RAD + elevator_tab;
+    elevator = (Long_control + Long_trim) * demin * DEG_TO_RAD;
 
   if (Rudder_pedal <= 0)
     rudder = - Rudder_pedal * drmin * DEG_TO_RAD;
   else
     rudder = - Rudder_pedal * drmax * DEG_TO_RAD;
 
-  // flap routine
+
+  // new flap routine
+  // designed for the twin otter non-linear model
+  flap_percent     = Flap_handle / 30.0;       // percent of flaps desired
+  if (flap_percent>=0.31 && flap_percent<=0.35)
+    flap_percent = 1.0 / 3.0;
+  if (flap_percent>=0.65 && flap_percent<=0.69)
+    flap_percent = 2.0 / 3.0;
+  flap_goal        = flap_percent * flap_max;  // angle of flaps desired
+  flap_moving_rate = flap_rate * dt;           // amount flaps move per time step
+  
+  // determine flap position with respect to the flap goal
+  if (flap_pos < flap_goal)
+    {
+      flap_pos += flap_moving_rate;
+      if (flap_pos > flap_goal)
+       flap_pos = flap_goal;
+    }
+  else if (flap_pos > flap_goal)
+    {
+      flap_pos -= flap_moving_rate;
+      if (flap_pos < flap_goal)
+       flap_pos = flap_goal;
+    }
+
+
+  // old flap routine
   // check for lowest flap setting
   if (Flap_handle < dfArray[1])
     {
index d82817c29cbe2ef390853d1eb7f705b1b71e4fb2..a0d4e1d888295db96131237e60e815e6ce5a3cd6 100644 (file)
                            P_body, Q_body, R_body, Phi, Theta, Psi,
                            U_body, V_body, and W_body to help in
                            starting the A/C at an initial condition.
+              10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cxfxxf0).
+              11/12/2001   (RD) Added variables needed for Twin Otter
+                           non-linear model with flaps (Cxfxxf). 
+                           Zero flap variables removed.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added variables necessary to use the
+                           uiuc_3Dinterp_quick() function.  Takes
+                           advantage of data in a "nice" form (data
+                           that are in a rectangular matrix).
+
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
@@ -151,7 +164,10 @@ enum {bw_flag = 3000, cbar_flag, Sw_flag, ih_flag, bh_flag, ch_flag, Sh_flag};
 // controlSurface = Control surface deflections and properties
 enum {de_flag = 4000, da_flag, dr_flag, 
       set_Long_trim_flag, set_Long_trim_deg_flag, zero_Long_trim_flag, 
-      elevator_step_flag, elevator_singlet_flag, elevator_doublet_flag, elevator_input_flag, aileron_input_flag, rudder_input_flag, pilot_elev_no_flag, pilot_ail_no_flag, pilot_rud_no_flag};
+      elevator_step_flag, elevator_singlet_flag, elevator_doublet_flag,
+      elevator_input_flag, aileron_input_flag, rudder_input_flag, 
+      pilot_elev_no_flag, pilot_ail_no_flag, pilot_rud_no_flag, flap_max_flag,
+      flap_rate_flag};
 
 // controlsMixer == Controls mixer
 enum {nomix_flag = 5000};
@@ -160,36 +176,43 @@ enum {nomix_flag = 5000};
 enum {Weight_flag = 6000, Mass_flag, I_xx_flag, I_yy_flag, I_zz_flag, I_xz_flag};
 
 // engine ===== Propulsion data
-enum {simpleSingle_flag = 7000, c172_flag, cherokee_flag, Throttle_pct_input_flag};
+enum {simpleSingle_flag = 7000, c172_flag, cherokee_flag, 
+      Throttle_pct_input_flag};
 
 // CD ========= Aerodynamic x-force quantities (longitudinal)
 enum {CDo_flag = 8000, CDK_flag, CD_a_flag, CD_adot_flag, CD_q_flag, CD_ih_flag, CD_de_flag, 
       CDfa_flag, CDfCL_flag, CDfade_flag, CDfdf_flag, CDfadf_flag, 
       CXo_flag, CXK_flag, CX_a_flag, CX_a2_flag, CX_a3_flag, CX_adot_flag, 
-      CX_q_flag, CX_de_flag, CX_dr_flag, CX_df_flag, CX_adf_flag};
+      CX_q_flag, CX_de_flag, CX_dr_flag, CX_df_flag, CX_adf_flag, 
+      CXfabetaf_flag, CXfadef_flag, CXfaqf_flag};
 
 // CL ========= Aerodynamic z-force quantities (longitudinal)
 enum {CLo_flag = 9000, CL_a_flag, CL_adot_flag, CL_q_flag, CL_ih_flag, CL_de_flag, 
       CLfa_flag, CLfade_flag, CLfdf_flag, CLfadf_flag, 
       CZo_flag, CZ_a_flag, CZ_a2_flag, CZ_a3_flag, CZ_adot_flag, 
-      CZ_q_flag, CZ_de_flag, CZ_deb2_flag, CZ_df_flag, CZ_adf_flag, CZfa_flag};
+      CZ_q_flag, CZ_de_flag, CZ_deb2_flag, CZ_df_flag, CZ_adf_flag, 
+      CZfa_flag, CZfabetaf_flag, CZfadef_flag, CZfaqf_flag};
 
 // Cm ========= Aerodynamic m-moment quantities (longitudinal)
 enum {Cmo_flag = 10000, Cm_a_flag, Cm_a2_flag, Cm_adot_flag, Cm_q_flag, 
       Cm_ih_flag, Cm_de_flag, Cm_b2_flag, Cm_r_flag, Cm_df_flag, 
-      Cmfa_flag, Cmfade_flag, Cmfdf_flag, Cmfadf_flag};
+      Cmfa_flag, Cmfade_flag, Cmfdf_flag, Cmfadf_flag, 
+      Cmfabetaf_flag, Cmfadef_flag, Cmfaqf_flag};
 
 // CY ========= Aerodynamic y-force quantities (lateral)
 enum {CYo_flag = 11000, CY_beta_flag, CY_p_flag, CY_r_flag, CY_da_flag, 
-      CY_dr_flag, CY_dra_flag, CY_bdot_flag, CYfada_flag, CYfbetadr_flag};
+      CY_dr_flag, CY_dra_flag, CY_bdot_flag, CYfada_flag, CYfbetadr_flag, 
+      CYfabetaf_flag, CYfadaf_flag, CYfadrf_flag, CYfapf_flag, CYfarf_flag};
 
 // Cl ========= Aerodynamic l-moment quantities (lateral)
 enum {Clo_flag = 12000, Cl_beta_flag, Cl_p_flag, Cl_r_flag, Cl_da_flag, 
-      Cl_dr_flag, Cl_daa_flag, Clfada_flag, Clfbetadr_flag};
+      Cl_dr_flag, Cl_daa_flag, Clfada_flag, Clfbetadr_flag, Clfabetaf_flag,
+      Clfadaf_flag, Clfadrf_flag, Clfapf_flag, Clfarf_flag};
 
 // Cn ========= Aerodynamic n-moment quantities (lateral)
 enum {Cno_flag = 13000, Cn_beta_flag, Cn_p_flag, Cn_r_flag, Cn_da_flag, 
-      Cn_dr_flag, Cn_q_flag, Cn_b3_flag, Cnfada_flag, Cnfbetadr_flag};
+      Cn_dr_flag, Cn_q_flag, Cn_b3_flag, Cnfada_flag, Cnfbetadr_flag, 
+      Cnfabetaf_flag, Cnfadaf_flag, Cnfadrf_flag, Cnfapf_flag, Cnfarf_flag};
 
 // gear ======= Landing gear model quantities
 enum {Dx_gear_flag = 14000, Dy_gear_flag, Dz_gear_flag, cgear_flag,
@@ -270,15 +293,46 @@ enum {Simtime_record = 16000, dt_record,
       elevator_record, elevator_deg_record, 
       Lat_control_record, aileron_record, aileron_deg_record, 
       Rudder_pedal_record, rudder_record, rudder_deg_record, 
-      Flap_handle_record, flap_record, flap_deg_record, 
-
-      CD_record, CDfaI_record, CDfCLI_record, CDfadeI_record, CDfdfI_record, CDfadfI_record, CX_record,
-      CL_record, CLfaI_record, CLfadeI_record, CLfdfI_record, CLfadfI_record, CZ_record,
-      Cm_record, CmfaI_record, CmfadeI_record, CmfdfI_record, CmfadfI_record,
-      CY_record, CYfadaI_record, CYfbetadrI_record, 
-      Cl_record, ClfadaI_record, ClfbetadrI_record, 
-      Cn_record, CnfadaI_record, CnfbetadrI_record,
-
+      Flap_handle_record, flap_record, flap_deg_record, flap_goal_record,
+      flap_pos_record,
+
+      CD_record, CDfaI_record, CDfCLI_record, CDfadeI_record, CDfdfI_record, 
+      CDfadfI_record, CX_record, CXfabetafI_record, CXfadefI_record, 
+      CXfaqfI_record,
+      CDo_save_record, CDK_save_record, CD_a_save_record, CD_adot_save_record,
+      CD_q_save_record, CD_ih_save_record, CD_de_save_record, CXo_save_record,
+      CXK_save_record, CX_a_save_record, CX_a2_save_record, CX_a3_save_record,
+      CX_adot_save_record, CX_q_save_record, CX_de_save_record,
+      CX_dr_save_record, CX_df_save_record, CX_adf_save_record,
+      CL_record, CLfaI_record, CLfadeI_record, CLfdfI_record, CLfadfI_record, 
+      CZ_record, CZfaI_record, CZfabetafI_record, CZfadefI_record, 
+      CZfaqfI_record, 
+      CLo_save_record, CL_a_save_record, CL_adot_save_record, CL_q_save_record,
+      CL_ih_save_record, CL_de_save_record, CZo_save_record, CZ_a_save_record,
+      CZ_a2_save_record, CZ_a3_save_record, CZ_adot_save_record,
+      CZ_q_save_record, CZ_de_save_record, CZ_deb2_save_record,
+      CZ_df_save_record, CZ_adf_save_record,
+      Cm_record, CmfaI_record, CmfadeI_record, CmfdfI_record, CmfadfI_record, 
+      CmfabetafI_record, CmfadefI_record, CmfaqfI_record,
+      Cmo_save_record, Cm_a_save_record, Cm_a2_save_record,
+      Cm_adot_save_record, Cm_q_save_record, Cm_ih_save_record,
+      Cm_de_save_record, Cm_b2_save_record, Cm_r_save_record, 
+      Cm_df_save_record,
+      CY_record, CYfadaI_record, CYfbetadrI_record, CYfabetafI_record, 
+      CYfadafI_record, CYfadrfI_record, CYfapfI_record, CYfarfI_record, 
+      CYo_save_record, CY_beta_save_record, CY_p_save_record,
+      CY_r_save_record, CY_da_save_record, CY_dr_save_record, 
+      CY_dra_save_record, CY_bdot_save_record,
+      Cl_record, ClfadaI_record, ClfbetadrI_record, ClfabetafI_record, 
+      ClfadafI_record, ClfadrfI_record, ClfapfI_record, ClfarfI_record,
+      Clo_save_record, Cl_beta_save_record, Cl_p_save_record, Cl_r_save_record,
+      Cl_da_save_record, Cl_dr_save_record, Cl_daa_save_record,
+      Cn_record, CnfadaI_record, CnfbetadrI_record, CnfabetafI_record, 
+      CnfadafI_record, CnfadrfI_record, CnfapfI_record, CnfarfI_record, 
+      Cno_save_record, Cn_beta_save_record, Cn_p_save_record, Cn_r_save_record,
+      Cn_da_save_record, Cn_dr_save_record, Cn_q_save_record,
+      Cn_b3_save_record,
+      
       F_X_wind_record, F_Y_wind_record, F_Z_wind_record, 
       F_X_aero_record, F_Y_aero_record, F_Z_aero_record,
       F_X_engine_record, F_Y_engine_record, F_Z_engine_record, 
@@ -509,8 +563,8 @@ struct AIRCRAFT
 
   bool elevator_input;
   string elevator_input_file;
-  double elevator_input_timeArray[1000];
-  double elevator_input_deArray[1000];
+  double elevator_input_timeArray[1500];
+  double elevator_input_deArray[1500];
   int elevator_input_ntime;
   double elevator_input_startTime;
 #define elevator_input             aircraft_->elevator_input
@@ -522,8 +576,8 @@ struct AIRCRAFT
 
   bool aileron_input;
   string aileron_input_file;
-  double aileron_input_timeArray[1000];
-  double aileron_input_daArray[1000];
+  double aileron_input_timeArray[1500];
+  double aileron_input_daArray[1500];
   int aileron_input_ntime;
   double aileron_input_startTime;
 #define aileron_input             aircraft_->aileron_input
@@ -535,8 +589,8 @@ struct AIRCRAFT
 
   bool rudder_input;
   string rudder_input_file;
-  double rudder_input_timeArray[1000];
-  double rudder_input_drArray[1000];
+  double rudder_input_timeArray[1500];
+  double rudder_input_drArray[1500];
   int rudder_input_ntime;
   double rudder_input_startTime;
 #define rudder_input             aircraft_->rudder_input
@@ -561,7 +615,10 @@ struct AIRCRAFT
   bool pilot_rud_no_check;
 #define pilot_rud_no_check       aircraft_->pilot_rud_no_check
 
-  
+  double flap_max, flap_rate;
+#define flap_max                 aircraft_->flap_max
+#define flap_rate                aircraft_->flap_rate
+
   /* Variables (token2) ===========================================*/
   /* controlsMixer = Control mixer ================================*/
   
@@ -593,8 +650,8 @@ struct AIRCRAFT
   
   bool Throttle_pct_input;
   string Throttle_pct_input_file;
-  double Throttle_pct_input_timeArray[1000];
-  double Throttle_pct_input_dTArray[1000];
+  double Throttle_pct_input_timeArray[1500];
+  double Throttle_pct_input_dTArray[1500];
   int Throttle_pct_input_ntime;
   double Throttle_pct_input_startTime;
 #define Throttle_pct_input            aircraft_->Throttle_pct_input
@@ -690,7 +747,101 @@ struct AIRCRAFT
 #define CX_dr    aircraft_->CX_dr
 #define CX_df    aircraft_->CX_df
 #define CX_adf   aircraft_->CX_adf
-  
+  double CXfabetaf_aArray[30][100][100];
+  double CXfabetaf_betaArray[30][100];
+  double CXfabetaf_CXArray[30][100][100];
+  int CXfabetaf_nAlphaArray[30][100];
+  int CXfabetaf_nbeta[30];
+  double CXfabetaf_fArray[30];
+  int CXfabetaf_nf;
+  double CXfabetafI;
+  int CXfabetaf_nice, CXfabetaf_na_nice, CXfabetaf_nb_nice;
+  double CXfabetaf_bArray_nice[100];
+  double CXfabetaf_aArray_nice[100];
+#define CXfabetaf_aArray        aircraft_->CXfabetaf_aArray
+#define CXfabetaf_betaArray     aircraft_->CXfabetaf_betaArray
+#define CXfabetaf_CXArray       aircraft_->CXfabetaf_CXArray
+#define CXfabetaf_nAlphaArray   aircraft_->CXfabetaf_nAlphaArray
+#define CXfabetaf_nbeta         aircraft_->CXfabetaf_nbeta
+#define CXfabetaf_fArray        aircraft_->CXfabetaf_fArray
+#define CXfabetaf_nf            aircraft_->CXfabetaf_nf
+#define CXfabetafI              aircraft_->CXfabetafI
+#define CXfabetaf_nice          aircraft_->CXfabetaf_nice
+#define CXfabetaf_na_nice       aircraft_->CXfabetaf_na_nice
+#define CXfabetaf_nb_nice       aircraft_->CXfabetaf_nb_nice
+#define CXfabetaf_bArray_nice   aircraft_->CXfabetaf_bArray_nice
+#define CXfabetaf_aArray_nice   aircraft_->CXfabetaf_aArray_nice
+  double CXfadef_aArray[30][100][100];
+  double CXfadef_deArray[30][100];
+  double CXfadef_CXArray[30][100][100];
+  int CXfadef_nAlphaArray[30][100];
+  int CXfadef_nde[30];
+  double CXfadef_fArray[30];
+  int CXfadef_nf;
+  double CXfadefI;
+  int CXfadef_nice, CXfadef_na_nice, CXfadef_nde_nice;
+  double CXfadef_deArray_nice[100];
+  double CXfadef_aArray_nice[100];
+#define CXfadef_aArray        aircraft_->CXfadef_aArray
+#define CXfadef_deArray       aircraft_->CXfadef_deArray
+#define CXfadef_CXArray       aircraft_->CXfadef_CXArray
+#define CXfadef_nAlphaArray   aircraft_->CXfadef_nAlphaArray
+#define CXfadef_nde           aircraft_->CXfadef_nde
+#define CXfadef_fArray        aircraft_->CXfadef_fArray
+#define CXfadef_nf            aircraft_->CXfadef_nf
+#define CXfadefI              aircraft_->CXfadefI
+#define CXfadef_nice          aircraft_->CXfadef_nice
+#define CXfadef_na_nice       aircraft_->CXfadef_na_nice
+#define CXfadef_nde_nice      aircraft_->CXfadef_nde_nice
+#define CXfadef_deArray_nice  aircraft_->CXfadef_deArray_nice
+#define CXfadef_aArray_nice   aircraft_->CXfadef_aArray_nice
+  double CXfaqf_aArray[30][100][100];
+  double CXfaqf_qArray[30][100];
+  double CXfaqf_CXArray[30][100][100];
+  int CXfaqf_nAlphaArray[30][100];
+  int CXfaqf_nq[30];
+  double CXfaqf_fArray[30];
+  int CXfaqf_nf;
+  double CXfaqfI;
+  int CXfaqf_nice, CXfaqf_na_nice, CXfaqf_nq_nice;
+  double CXfaqf_qArray_nice[100];
+  double CXfaqf_aArray_nice[100];
+#define CXfaqf_aArray        aircraft_->CXfaqf_aArray
+#define CXfaqf_qArray        aircraft_->CXfaqf_qArray
+#define CXfaqf_CXArray       aircraft_->CXfaqf_CXArray
+#define CXfaqf_nAlphaArray   aircraft_->CXfaqf_nAlphaArray
+#define CXfaqf_nq            aircraft_->CXfaqf_nq
+#define CXfaqf_fArray        aircraft_->CXfaqf_fArray
+#define CXfaqf_nf            aircraft_->CXfaqf_nf
+#define CXfaqfI              aircraft_->CXfaqfI
+#define CXfaqf_nice          aircraft_->CXfaqf_nice
+#define CXfaqf_na_nice       aircraft_->CXfaqf_na_nice
+#define CXfaqf_nq_nice       aircraft_->CXfaqf_nq_nice
+#define CXfaqf_qArray_nice   aircraft_->CXfaqf_qArray_nice
+#define CXfaqf_aArray_nice   aircraft_->CXfaqf_aArray_nice
+  double CDo_save, CDK_save, CD_a_save, CD_adot_save, CD_q_save, CD_ih_save;
+  double CD_de_save, CXo_save, CXK_save, CX_a_save, CX_a2_save, CX_a3_save;
+  double CX_adot_save, CX_q_save, CX_de_save;
+  double CX_dr_save, CX_df_save, CX_adf_save;
+#define CDo_save             aircraft_->CDo_save  
+#define CDK_save             aircraft_->CDK_save  
+#define CD_a_save            aircraft_->CD_a_save  
+#define CD_adot_save         aircraft_->CD_adot_save  
+#define CD_q_save            aircraft_->CD_q_save  
+#define CD_ih_save           aircraft_->CD_ih_save  
+#define CD_de_save           aircraft_->CD_de_save  
+#define CXo_save             aircraft_->CXo_save  
+#define CXK_save             aircraft_->CXK_save  
+#define CX_a_save            aircraft_->CX_a_save  
+#define CX_a2_save           aircraft_->CX_a2_save  
+#define CX_a3_save           aircraft_->CX_a3_save  
+#define CX_adot_save         aircraft_->CX_adot_save  
+#define CX_q_save            aircraft_->CX_q_save  
+#define CX_de_save           aircraft_->CX_de_save
+#define CX_dr_save           aircraft_->CX_dr_save  
+#define CX_df_save           aircraft_->CX_df_save  
+#define CX_adf_save          aircraft_->CX_adf_save  
+
 
   /* Variables (token2) ===========================================*/
   /* CL ============ Aerodynamic z-force quantities (longitudinal) */
@@ -775,6 +926,100 @@ struct AIRCRAFT
 #define CZfa_CZArray       aircraft_->CZfa_CZArray
 #define CZfa_nAlpha        aircraft_->CZfa_nAlpha
 #define CZfaI              aircraft_->CZfaI
+  double CZfabetaf_aArray[30][100][100];
+  double CZfabetaf_betaArray[30][100];
+  double CZfabetaf_CZArray[30][100][100];
+  int CZfabetaf_nAlphaArray[30][100];
+  int CZfabetaf_nbeta[30];
+  double CZfabetaf_fArray[30];
+  int CZfabetaf_nf;
+  double CZfabetafI;
+  int CZfabetaf_nice, CZfabetaf_na_nice, CZfabetaf_nb_nice;
+  double CZfabetaf_bArray_nice[100];
+  double CZfabetaf_aArray_nice[100];
+#define CZfabetaf_aArray        aircraft_->CZfabetaf_aArray
+#define CZfabetaf_betaArray     aircraft_->CZfabetaf_betaArray
+#define CZfabetaf_CZArray       aircraft_->CZfabetaf_CZArray
+#define CZfabetaf_nAlphaArray   aircraft_->CZfabetaf_nAlphaArray
+#define CZfabetaf_nbeta         aircraft_->CZfabetaf_nbeta
+#define CZfabetaf_fArray        aircraft_->CZfabetaf_fArray
+#define CZfabetaf_nf            aircraft_->CZfabetaf_nf
+#define CZfabetafI              aircraft_->CZfabetafI
+#define CZfabetaf_nice          aircraft_->CZfabetaf_nice
+#define CZfabetaf_na_nice       aircraft_->CZfabetaf_na_nice
+#define CZfabetaf_nb_nice       aircraft_->CZfabetaf_nb_nice
+#define CZfabetaf_bArray_nice   aircraft_->CZfabetaf_bArray_nice
+#define CZfabetaf_aArray_nice   aircraft_->CZfabetaf_aArray_nice
+  double CZfadef_aArray[30][100][100];
+  double CZfadef_deArray[30][100];
+  double CZfadef_CZArray[30][100][100];
+  int CZfadef_nAlphaArray[30][100];
+  int CZfadef_nde[30];
+  double CZfadef_fArray[30];
+  int CZfadef_nf;
+  double CZfadefI;
+  int CZfadef_nice, CZfadef_na_nice, CZfadef_nde_nice;
+  double CZfadef_deArray_nice[100];
+  double CZfadef_aArray_nice[100];
+#define CZfadef_aArray         aircraft_->CZfadef_aArray
+#define CZfadef_deArray        aircraft_->CZfadef_deArray
+#define CZfadef_CZArray        aircraft_->CZfadef_CZArray
+#define CZfadef_nAlphaArray    aircraft_->CZfadef_nAlphaArray
+#define CZfadef_nde            aircraft_->CZfadef_nde
+#define CZfadef_fArray         aircraft_->CZfadef_fArray
+#define CZfadef_nf             aircraft_->CZfadef_nf
+#define CZfadefI               aircraft_->CZfadefI
+#define CZfadef_nice           aircraft_->CZfadef_nice
+#define CZfadef_na_nice        aircraft_->CZfadef_na_nice
+#define CZfadef_nde_nice       aircraft_->CZfadef_nde_nice
+#define CZfadef_deArray_nice   aircraft_->CZfadef_deArray_nice
+#define CZfadef_aArray_nice    aircraft_->CZfadef_aArray_nice
+  double CZfaqf_aArray[30][100][100];
+  double CZfaqf_qArray[30][100];
+  double CZfaqf_CZArray[30][100][100];
+  int CZfaqf_nAlphaArray[30][100];
+  int CZfaqf_nq[30];
+  double CZfaqf_fArray[30];
+  int CZfaqf_nf;
+  double CZfaqfI;
+  int CZfaqf_nice, CZfaqf_na_nice, CZfaqf_nq_nice;
+  double CZfaqf_qArray_nice[100];
+  double CZfaqf_aArray_nice[100];
+#define CZfaqf_aArray         aircraft_->CZfaqf_aArray
+#define CZfaqf_qArray         aircraft_->CZfaqf_qArray
+#define CZfaqf_CZArray        aircraft_->CZfaqf_CZArray
+#define CZfaqf_nAlphaArray    aircraft_->CZfaqf_nAlphaArray
+#define CZfaqf_nq             aircraft_->CZfaqf_nq
+#define CZfaqf_fArray         aircraft_->CZfaqf_fArray
+#define CZfaqf_nf             aircraft_->CZfaqf_nf
+#define CZfaqfI               aircraft_->CZfaqfI
+#define CZfaqf_nice           aircraft_->CZfaqf_nice
+#define CZfaqf_na_nice        aircraft_->CZfaqf_na_nice
+#define CZfaqf_nq_nice        aircraft_->CZfaqf_nq_nice
+#define CZfaqf_qArray_nice    aircraft_->CZfaqf_qArray_nice
+#define CZfaqf_aArray_nice    aircraft_->CZfaqf_aArray_nice
+  double CLo_save, CL_a_save, CL_adot_save; 
+  double CL_q_save, CL_ih_save, CL_de_save;
+  double CZo_save, CZ_a_save, CZ_a2_save;
+  double CZ_a3_save, CZ_adot_save, CZ_q_save;
+  double CZ_de_save, CZ_deb2_save, CZ_df_save;
+  double CZ_adf_save;
+#define CLo_save              aircraft_->CLo_save
+#define CL_a_save             aircraft_->CL_a_save
+#define CL_adot_save          aircraft_->CL_adot_save
+#define CL_q_save             aircraft_->CL_q_save
+#define CL_ih_save            aircraft_->CL_ih_save
+#define CL_de_save            aircraft_->CL_de_save
+#define CZo_save              aircraft_->CZo_save
+#define CZ_a_save             aircraft_->CZ_a_save
+#define CZ_a2_save            aircraft_->CZ_a2_save
+#define CZ_a3_save            aircraft_->CZ_a3_save
+#define CZ_adot_save          aircraft_->CZ_adot_save
+#define CZ_q_save             aircraft_->CZ_q_save
+#define CZ_de_save            aircraft_->CZ_de_save
+#define CZ_deb2_save          aircraft_->CZ_deb2_save
+#define CZ_df_save            aircraft_->CZ_df_save
+#define CZ_adf_save           aircraft_->CZ_adf_save
 
 
   /* Variables (token2) ===========================================*/
@@ -843,6 +1088,90 @@ struct AIRCRAFT
 #define Cmfadf_nAlphaArray aircraft_->Cmfadf_nAlphaArray
 #define Cmfadf_ndf         aircraft_->Cmfadf_ndf
 #define CmfadfI            aircraft_->CmfadfI
+  double Cmfabetaf_aArray[30][100][100];
+  double Cmfabetaf_betaArray[30][100];
+  double Cmfabetaf_CmArray[30][100][100];
+  int Cmfabetaf_nAlphaArray[30][100];
+  int Cmfabetaf_nbeta[30];
+  double Cmfabetaf_fArray[30];
+  int Cmfabetaf_nf;
+  double CmfabetafI;
+  int Cmfabetaf_nice, Cmfabetaf_na_nice, Cmfabetaf_nb_nice;
+  double Cmfabetaf_bArray_nice[100];
+  double Cmfabetaf_aArray_nice[100];
+#define Cmfabetaf_aArray        aircraft_->Cmfabetaf_aArray
+#define Cmfabetaf_betaArray     aircraft_->Cmfabetaf_betaArray
+#define Cmfabetaf_CmArray       aircraft_->Cmfabetaf_CmArray
+#define Cmfabetaf_nAlphaArray   aircraft_->Cmfabetaf_nAlphaArray
+#define Cmfabetaf_nbeta         aircraft_->Cmfabetaf_nbeta
+#define Cmfabetaf_fArray        aircraft_->Cmfabetaf_fArray
+#define Cmfabetaf_nf            aircraft_->Cmfabetaf_nf
+#define CmfabetafI              aircraft_->CmfabetafI
+#define Cmfabetaf_nice          aircraft_->Cmfabetaf_nice
+#define Cmfabetaf_na_nice       aircraft_->Cmfabetaf_na_nice
+#define Cmfabetaf_nb_nice       aircraft_->Cmfabetaf_nb_nice
+#define Cmfabetaf_bArray_nice   aircraft_->Cmfabetaf_bArray_nice
+#define Cmfabetaf_aArray_nice   aircraft_->Cmfabetaf_aArray_nice
+  double Cmfadef_aArray[30][100][100];
+  double Cmfadef_deArray[30][100];
+  double Cmfadef_CmArray[30][100][100];
+  int Cmfadef_nAlphaArray[30][100];
+  int Cmfadef_nde[30];
+  double Cmfadef_fArray[30];
+  int Cmfadef_nf;
+  double CmfadefI;
+  int Cmfadef_nice, Cmfadef_na_nice, Cmfadef_nde_nice;
+  double Cmfadef_deArray_nice[100];
+  double Cmfadef_aArray_nice[100];
+#define Cmfadef_aArray        aircraft_->Cmfadef_aArray
+#define Cmfadef_deArray       aircraft_->Cmfadef_deArray
+#define Cmfadef_CmArray       aircraft_->Cmfadef_CmArray
+#define Cmfadef_nAlphaArray   aircraft_->Cmfadef_nAlphaArray
+#define Cmfadef_nde           aircraft_->Cmfadef_nde
+#define Cmfadef_fArray        aircraft_->Cmfadef_fArray
+#define Cmfadef_nf            aircraft_->Cmfadef_nf
+#define CmfadefI              aircraft_->CmfadefI
+#define Cmfadef_nice          aircraft_->Cmfadef_nice
+#define Cmfadef_na_nice       aircraft_->Cmfadef_na_nice
+#define Cmfadef_nde_nice      aircraft_->Cmfadef_nde_nice
+#define Cmfadef_deArray_nice  aircraft_->Cmfadef_deArray_nice
+#define Cmfadef_aArray_nice   aircraft_->Cmfadef_aArray_nice
+  double Cmfaqf_aArray[30][100][100];
+  double Cmfaqf_qArray[30][100];
+  double Cmfaqf_CmArray[30][100][100];
+  int Cmfaqf_nAlphaArray[30][100];
+  int Cmfaqf_nq[30];
+  double Cmfaqf_fArray[30];
+  int Cmfaqf_nf;
+  double CmfaqfI;
+  int Cmfaqf_nice, Cmfaqf_na_nice, Cmfaqf_nq_nice;
+  double Cmfaqf_qArray_nice[100];
+  double Cmfaqf_aArray_nice[100];
+#define Cmfaqf_aArray        aircraft_->Cmfaqf_aArray
+#define Cmfaqf_qArray        aircraft_->Cmfaqf_qArray
+#define Cmfaqf_CmArray       aircraft_->Cmfaqf_CmArray
+#define Cmfaqf_nAlphaArray   aircraft_->Cmfaqf_nAlphaArray
+#define Cmfaqf_nq            aircraft_->Cmfaqf_nq
+#define Cmfaqf_fArray        aircraft_->Cmfaqf_fArray
+#define Cmfaqf_nf            aircraft_->Cmfaqf_nf
+#define CmfaqfI              aircraft_->CmfaqfI
+#define Cmfaqf_nice          aircraft_->Cmfaqf_nice
+#define Cmfaqf_na_nice       aircraft_->Cmfaqf_na_nice
+#define Cmfaqf_nq_nice       aircraft_->Cmfaqf_nq_nice
+#define Cmfaqf_qArray_nice   aircraft_->Cmfaqf_qArray_nice
+#define Cmfaqf_aArray_nice   aircraft_->Cmfaqf_aArray_nice
+  double Cmo_save, Cm_a_save, Cm_a2_save, Cm_adot_save, Cm_q_save, Cm_ih_save;
+  double Cm_de_save, Cm_b2_save, Cm_r_save, Cm_df_save;
+#define Cmo_save             aircraft_->Cmo_save
+#define Cm_a_save            aircraft_->Cm_a_save
+#define Cm_a2_save           aircraft_->Cm_a2_save
+#define Cm_adot_save         aircraft_->Cm_adot_save
+#define Cm_q_save            aircraft_->Cm_q_save
+#define Cm_ih_save           aircraft_->Cm_ih_save 
+#define Cm_de_save           aircraft_->Cm_de_save
+#define Cm_b2_save           aircraft_->Cm_b2_save
+#define Cm_r_save            aircraft_->Cm_r_save
+#define Cm_df_save           aircraft_->Cm_df_save
   
 
   /* Variables (token2) ===========================================*/
@@ -888,6 +1217,136 @@ struct AIRCRAFT
 #define CYfbetadr_nBetaArray  aircraft_->CYfbetadr_nBetaArray
 #define CYfbetadr_ndr         aircraft_->CYfbetadr_ndr
 #define CYfbetadrI            aircraft_->CYfbetadrI
+  double CYfabetaf_aArray[30][100][100];
+  double CYfabetaf_betaArray[30][100];
+  double CYfabetaf_CYArray[30][100][100];
+  int CYfabetaf_nAlphaArray[30][100];
+  int CYfabetaf_nbeta[30];
+  double CYfabetaf_fArray[30];
+  int CYfabetaf_nf;
+  double CYfabetafI;
+  int CYfabetaf_nice, CYfabetaf_na_nice, CYfabetaf_nb_nice;
+  double CYfabetaf_bArray_nice[100];
+  double CYfabetaf_aArray_nice[100];
+#define CYfabetaf_aArray        aircraft_->CYfabetaf_aArray
+#define CYfabetaf_betaArray     aircraft_->CYfabetaf_betaArray
+#define CYfabetaf_CYArray       aircraft_->CYfabetaf_CYArray
+#define CYfabetaf_nAlphaArray   aircraft_->CYfabetaf_nAlphaArray
+#define CYfabetaf_nbeta         aircraft_->CYfabetaf_nbeta
+#define CYfabetaf_fArray        aircraft_->CYfabetaf_fArray
+#define CYfabetaf_nf            aircraft_->CYfabetaf_nf
+#define CYfabetafI              aircraft_->CYfabetafI
+#define CYfabetaf_nice          aircraft_->CYfabetaf_nice
+#define CYfabetaf_na_nice       aircraft_->CYfabetaf_na_nice
+#define CYfabetaf_nb_nice       aircraft_->CYfabetaf_nb_nice
+#define CYfabetaf_bArray_nice   aircraft_->CYfabetaf_bArray_nice
+#define CYfabetaf_aArray_nice   aircraft_->CYfabetaf_aArray_nice
+  double CYfadaf_aArray[30][100][100];
+  double CYfadaf_daArray[30][100];
+  double CYfadaf_CYArray[30][100][100];
+  int CYfadaf_nAlphaArray[30][100];
+  int CYfadaf_nda[30];
+  double CYfadaf_fArray[30];
+  int CYfadaf_nf;
+  double CYfadafI;
+  int CYfadaf_nice, CYfadaf_na_nice, CYfadaf_nda_nice;
+  double CYfadaf_daArray_nice[100];
+  double CYfadaf_aArray_nice[100];
+#define CYfadaf_aArray        aircraft_->CYfadaf_aArray
+#define CYfadaf_daArray       aircraft_->CYfadaf_daArray
+#define CYfadaf_CYArray       aircraft_->CYfadaf_CYArray
+#define CYfadaf_nAlphaArray   aircraft_->CYfadaf_nAlphaArray
+#define CYfadaf_nda           aircraft_->CYfadaf_nda
+#define CYfadaf_fArray        aircraft_->CYfadaf_fArray
+#define CYfadaf_nf            aircraft_->CYfadaf_nf
+#define CYfadafI              aircraft_->CYfadafI
+#define CYfadaf_nice          aircraft_->CYfadaf_nice
+#define CYfadaf_na_nice       aircraft_->CYfadaf_na_nice
+#define CYfadaf_nda_nice      aircraft_->CYfadaf_nda_nice
+#define CYfadaf_daArray_nice  aircraft_->CYfadaf_daArray_nice
+#define CYfadaf_aArray_nice   aircraft_->CYfadaf_aArray_nice
+  double CYfadrf_aArray[30][100][100];
+  double CYfadrf_drArray[30][100];
+  double CYfadrf_CYArray[30][100][100];
+  int CYfadrf_nAlphaArray[30][100];
+  int CYfadrf_ndr[30];
+  double CYfadrf_fArray[30];
+  int CYfadrf_nf;
+  double CYfadrfI;
+  int CYfadrf_nice, CYfadrf_na_nice, CYfadrf_ndr_nice;
+  double CYfadrf_drArray_nice[100];
+  double CYfadrf_aArray_nice[100];
+#define CYfadrf_aArray        aircraft_->CYfadrf_aArray
+#define CYfadrf_drArray       aircraft_->CYfadrf_drArray
+#define CYfadrf_CYArray       aircraft_->CYfadrf_CYArray
+#define CYfadrf_nAlphaArray   aircraft_->CYfadrf_nAlphaArray
+#define CYfadrf_ndr           aircraft_->CYfadrf_ndr
+#define CYfadrf_fArray        aircraft_->CYfadrf_fArray
+#define CYfadrf_nf            aircraft_->CYfadrf_nf
+#define CYfadrfI              aircraft_->CYfadrfI
+#define CYfadrf_nice          aircraft_->CYfadrf_nice
+#define CYfadrf_na_nice       aircraft_->CYfadrf_na_nice
+#define CYfadrf_ndr_nice      aircraft_->CYfadrf_ndr_nice
+#define CYfadrf_drArray_nice  aircraft_->CYfadrf_drArray_nice
+#define CYfadrf_aArray_nice   aircraft_->CYfadrf_aArray_nice
+  double CYfapf_aArray[30][100][100];
+  double CYfapf_pArray[30][100];
+  double CYfapf_CYArray[30][100][100];
+  int CYfapf_nAlphaArray[30][100];
+  int CYfapf_np[30];
+  double CYfapf_fArray[30];
+  int CYfapf_nf;
+  double CYfapfI;
+  int CYfapf_nice, CYfapf_na_nice, CYfapf_np_nice;
+  double CYfapf_pArray_nice[100];
+  double CYfapf_aArray_nice[100];
+#define CYfapf_aArray        aircraft_->CYfapf_aArray
+#define CYfapf_pArray        aircraft_->CYfapf_pArray
+#define CYfapf_CYArray       aircraft_->CYfapf_CYArray
+#define CYfapf_nAlphaArray   aircraft_->CYfapf_nAlphaArray
+#define CYfapf_np            aircraft_->CYfapf_np
+#define CYfapf_fArray        aircraft_->CYfapf_fArray
+#define CYfapf_nf            aircraft_->CYfapf_nf
+#define CYfapfI              aircraft_->CYfapfI
+#define CYfapf_nice          aircraft_->CYfapf_nice
+#define CYfapf_na_nice       aircraft_->CYfapf_na_nice
+#define CYfapf_np_nice       aircraft_->CYfapf_np_nice
+#define CYfapf_pArray_nice   aircraft_->CYfapf_pArray_nice
+#define CYfapf_aArray_nice   aircraft_->CYfapf_aArray_nice
+  double CYfarf_aArray[30][100][100];
+  double CYfarf_rArray[30][100];
+  double CYfarf_CYArray[30][100][100];
+  int CYfarf_nAlphaArray[30][100];
+  int CYfarf_nr[30];
+  double CYfarf_fArray[30];
+  int CYfarf_nf;
+  double CYfarfI;
+  int CYfarf_nice, CYfarf_na_nice, CYfarf_nr_nice;
+  double CYfarf_rArray_nice[100];
+  double CYfarf_aArray_nice[100];
+#define CYfarf_aArray        aircraft_->CYfarf_aArray
+#define CYfarf_rArray        aircraft_->CYfarf_rArray
+#define CYfarf_CYArray       aircraft_->CYfarf_CYArray
+#define CYfarf_nAlphaArray   aircraft_->CYfarf_nAlphaArray
+#define CYfarf_nr            aircraft_->CYfarf_nr
+#define CYfarf_fArray        aircraft_->CYfarf_fArray
+#define CYfarf_nf            aircraft_->CYfarf_nf
+#define CYfarfI              aircraft_->CYfarfI
+#define CYfarf_nice          aircraft_->CYfarf_nice
+#define CYfarf_na_nice       aircraft_->CYfarf_na_nice
+#define CYfarf_nr_nice       aircraft_->CYfarf_nr_nice
+#define CYfarf_rArray_nice   aircraft_->CYfarf_rArray_nice
+#define CYfarf_aArray_nice   aircraft_->CYfarf_aArray_nice
+  double CYo_save, CY_beta_save, CY_p_save, CY_r_save, CY_da_save, CY_dr_save;
+  double CY_dra_save, CY_bdot_save;
+#define CYo_save             aircraft_->CYo_save
+#define CY_beta_save         aircraft_->CY_beta_save
+#define CY_p_save            aircraft_->CY_p_save
+#define CY_r_save            aircraft_->CY_r_save
+#define CY_da_save           aircraft_->CY_da_save
+#define CY_dr_save           aircraft_->CY_dr_save
+#define CY_dra_save          aircraft_->CY_dra_save
+#define CY_bdot_save         aircraft_->CY_bdot_save
 
 
   /* Variables (token2) ===========================================*/
@@ -932,7 +1391,136 @@ struct AIRCRAFT
 #define Clfbetadr_nBetaArray  aircraft_->Clfbetadr_nBetaArray
 #define Clfbetadr_ndr         aircraft_->Clfbetadr_ndr
 #define ClfbetadrI            aircraft_->ClfbetadrI
-  
+  double Clfabetaf_aArray[30][100][100];
+  double Clfabetaf_betaArray[30][100];
+  double Clfabetaf_ClArray[30][100][100];
+  int Clfabetaf_nAlphaArray[30][100];
+  int Clfabetaf_nbeta[30];
+  double Clfabetaf_fArray[30];
+  int Clfabetaf_nf;
+  double ClfabetafI;
+  int Clfabetaf_nice, Clfabetaf_na_nice, Clfabetaf_nb_nice;
+  double Clfabetaf_bArray_nice[100];
+  double Clfabetaf_aArray_nice[100];
+#define Clfabetaf_aArray        aircraft_->Clfabetaf_aArray
+#define Clfabetaf_betaArray     aircraft_->Clfabetaf_betaArray
+#define Clfabetaf_ClArray       aircraft_->Clfabetaf_ClArray
+#define Clfabetaf_nAlphaArray   aircraft_->Clfabetaf_nAlphaArray
+#define Clfabetaf_nbeta         aircraft_->Clfabetaf_nbeta
+#define Clfabetaf_fArray        aircraft_->Clfabetaf_fArray
+#define Clfabetaf_nf            aircraft_->Clfabetaf_nf
+#define ClfabetafI              aircraft_->ClfabetafI
+#define Clfabetaf_nice          aircraft_->Clfabetaf_nice
+#define Clfabetaf_na_nice       aircraft_->Clfabetaf_na_nice
+#define Clfabetaf_nb_nice       aircraft_->Clfabetaf_nb_nice
+#define Clfabetaf_bArray_nice   aircraft_->Clfabetaf_bArray_nice
+#define Clfabetaf_aArray_nice   aircraft_->Clfabetaf_aArray_nice
+  double Clfadaf_aArray[30][100][100];
+  double Clfadaf_daArray[30][100];
+  double Clfadaf_ClArray[30][100][100];
+  int Clfadaf_nAlphaArray[30][100];
+  int Clfadaf_nda[30];
+  double Clfadaf_fArray[30];
+  int Clfadaf_nf;
+  double ClfadafI;
+  int Clfadaf_nice, Clfadaf_na_nice, Clfadaf_nda_nice;
+  double Clfadaf_daArray_nice[100];
+  double Clfadaf_aArray_nice[100];
+#define Clfadaf_aArray        aircraft_->Clfadaf_aArray
+#define Clfadaf_daArray       aircraft_->Clfadaf_daArray
+#define Clfadaf_ClArray       aircraft_->Clfadaf_ClArray
+#define Clfadaf_nAlphaArray   aircraft_->Clfadaf_nAlphaArray
+#define Clfadaf_nda           aircraft_->Clfadaf_nda
+#define Clfadaf_fArray        aircraft_->Clfadaf_fArray
+#define Clfadaf_nf            aircraft_->Clfadaf_nf
+#define ClfadafI              aircraft_->ClfadafI
+#define Clfadaf_nice          aircraft_->Clfadaf_nice
+#define Clfadaf_na_nice       aircraft_->Clfadaf_na_nice
+#define Clfadaf_nda_nice      aircraft_->Clfadaf_nda_nice
+#define Clfadaf_daArray_nice  aircraft_->Clfadaf_daArray_nice
+#define Clfadaf_aArray_nice   aircraft_->Clfadaf_aArray_nice
+  double Clfadrf_aArray[30][100][100];
+  double Clfadrf_drArray[30][100];
+  double Clfadrf_ClArray[30][100][100];
+  int Clfadrf_nAlphaArray[30][100];
+  int Clfadrf_ndr[30];
+  double Clfadrf_fArray[30];
+  int Clfadrf_nf;
+  double ClfadrfI;
+  int Clfadrf_nice, Clfadrf_na_nice, Clfadrf_ndr_nice;
+  double Clfadrf_drArray_nice[100];
+  double Clfadrf_aArray_nice[100];
+#define Clfadrf_aArray        aircraft_->Clfadrf_aArray
+#define Clfadrf_drArray       aircraft_->Clfadrf_drArray
+#define Clfadrf_ClArray       aircraft_->Clfadrf_ClArray
+#define Clfadrf_nAlphaArray   aircraft_->Clfadrf_nAlphaArray
+#define Clfadrf_ndr           aircraft_->Clfadrf_ndr
+#define Clfadrf_fArray        aircraft_->Clfadrf_fArray
+#define Clfadrf_nf            aircraft_->Clfadrf_nf
+#define ClfadrfI              aircraft_->ClfadrfI
+#define Clfadrf_nice          aircraft_->Clfadrf_nice
+#define Clfadrf_na_nice       aircraft_->Clfadrf_na_nice
+#define Clfadrf_ndr_nice      aircraft_->Clfadrf_ndr_nice
+#define Clfadrf_drArray_nice  aircraft_->Clfadrf_drArray_nice
+#define Clfadrf_aArray_nice   aircraft_->Clfadrf_aArray_nice
+  double Clfapf_aArray[30][100][100];
+  double Clfapf_pArray[30][100];
+  double Clfapf_ClArray[30][100][100];
+  int Clfapf_nAlphaArray[30][100];
+  int Clfapf_np[30];
+  double Clfapf_fArray[30];
+  int Clfapf_nf;
+  double ClfapfI;
+  int Clfapf_nice, Clfapf_na_nice, Clfapf_np_nice;
+  double Clfapf_pArray_nice[100];
+  double Clfapf_aArray_nice[100];
+#define Clfapf_aArray        aircraft_->Clfapf_aArray
+#define Clfapf_pArray        aircraft_->Clfapf_pArray
+#define Clfapf_ClArray       aircraft_->Clfapf_ClArray
+#define Clfapf_nAlphaArray   aircraft_->Clfapf_nAlphaArray
+#define Clfapf_np            aircraft_->Clfapf_np
+#define Clfapf_fArray        aircraft_->Clfapf_fArray
+#define Clfapf_nf            aircraft_->Clfapf_nf
+#define ClfapfI              aircraft_->ClfapfI
+#define Clfapf_nice          aircraft_->Clfapf_nice
+#define Clfapf_na_nice       aircraft_->Clfapf_na_nice
+#define Clfapf_np_nice       aircraft_->Clfapf_np_nice
+#define Clfapf_pArray_nice   aircraft_->Clfapf_pArray_nice
+#define Clfapf_aArray_nice   aircraft_->Clfapf_aArray_nice
+  double Clfarf_aArray[30][100][100];
+  double Clfarf_rArray[30][100];
+  double Clfarf_ClArray[30][100][100];
+  int Clfarf_nAlphaArray[30][100];
+  int Clfarf_nr[30];
+  double Clfarf_fArray[30];
+  int Clfarf_nf;
+  double ClfarfI;
+  int Clfarf_nice, Clfarf_na_nice, Clfarf_nr_nice;
+  double Clfarf_rArray_nice[100];
+  double Clfarf_aArray_nice[100];
+#define Clfarf_aArray        aircraft_->Clfarf_aArray
+#define Clfarf_rArray        aircraft_->Clfarf_rArray
+#define Clfarf_ClArray       aircraft_->Clfarf_ClArray
+#define Clfarf_nAlphaArray   aircraft_->Clfarf_nAlphaArray
+#define Clfarf_nr            aircraft_->Clfarf_nr
+#define Clfarf_fArray        aircraft_->Clfarf_fArray
+#define Clfarf_nf            aircraft_->Clfarf_nf
+#define ClfarfI              aircraft_->ClfarfI
+#define Clfarf_nice          aircraft_->Clfarf_nice
+#define Clfarf_na_nice       aircraft_->Clfarf_na_nice
+#define Clfarf_nr_nice       aircraft_->Clfarf_nr_nice
+#define Clfarf_rArray_nice   aircraft_->Clfarf_rArray_nice
+#define Clfarf_aArray_nice   aircraft_->Clfarf_aArray_nice
+  double Clo_save, Cl_beta_save, Cl_p_save, Cl_r_save, Cl_da_save; 
+  double Cl_dr_save, Cl_daa_save;
+#define Clo_save             aircraft_->Clo_save
+#define Cl_beta_save         aircraft_->Cl_beta_save
+#define Cl_p_save            aircraft_->Cl_p_save
+#define Cl_r_save            aircraft_->Cl_r_save
+#define Cl_da_save           aircraft_->Cl_da_save
+#define Cl_dr_save           aircraft_->Cl_dr_save
+#define Cl_daa_save          aircraft_->Cl_daa_save
+
 
   /* Variables (token2) ===========================================*/
   /* Cn ============ Aerodynamic n-moment quantities (lateral) ====*/
@@ -977,7 +1565,137 @@ struct AIRCRAFT
 #define Cnfbetadr_nBetaArray  aircraft_->Cnfbetadr_nBetaArray
 #define Cnfbetadr_ndr         aircraft_->Cnfbetadr_ndr
 #define CnfbetadrI            aircraft_->CnfbetadrI
-  
+  double Cnfabetaf_aArray[30][100][100];
+  double Cnfabetaf_betaArray[30][100];
+  double Cnfabetaf_CnArray[30][100][100];
+  int Cnfabetaf_nAlphaArray[30][100];
+  int Cnfabetaf_nbeta[30];
+  double Cnfabetaf_fArray[30];
+  int Cnfabetaf_nf;
+  double CnfabetafI;
+  int Cnfabetaf_nice, Cnfabetaf_na_nice, Cnfabetaf_nb_nice;
+  double Cnfabetaf_bArray_nice[100];
+  double Cnfabetaf_aArray_nice[100];
+#define Cnfabetaf_aArray        aircraft_->Cnfabetaf_aArray
+#define Cnfabetaf_betaArray     aircraft_->Cnfabetaf_betaArray
+#define Cnfabetaf_CnArray       aircraft_->Cnfabetaf_CnArray
+#define Cnfabetaf_nAlphaArray   aircraft_->Cnfabetaf_nAlphaArray
+#define Cnfabetaf_nbeta         aircraft_->Cnfabetaf_nbeta
+#define Cnfabetaf_fArray        aircraft_->Cnfabetaf_fArray
+#define Cnfabetaf_nf            aircraft_->Cnfabetaf_nf
+#define CnfabetafI              aircraft_->CnfabetafI
+#define Cnfabetaf_nice          aircraft_->Cnfabetaf_nice
+#define Cnfabetaf_na_nice       aircraft_->Cnfabetaf_na_nice
+#define Cnfabetaf_nb_nice       aircraft_->Cnfabetaf_nb_nice
+#define Cnfabetaf_bArray_nice   aircraft_->Cnfabetaf_bArray_nice
+#define Cnfabetaf_aArray_nice   aircraft_->Cnfabetaf_aArray_nice
+  double Cnfadaf_aArray[30][100][100];
+  double Cnfadaf_daArray[30][100];
+  double Cnfadaf_CnArray[30][100][100];
+  int Cnfadaf_nAlphaArray[30][100];
+  int Cnfadaf_nda[30];
+  double Cnfadaf_fArray[30];
+  int Cnfadaf_nf;
+  double CnfadafI;
+  int Cnfadaf_nice, Cnfadaf_na_nice, Cnfadaf_nda_nice;
+  double Cnfadaf_daArray_nice[100];
+  double Cnfadaf_aArray_nice[100];
+#define Cnfadaf_aArray        aircraft_->Cnfadaf_aArray
+#define Cnfadaf_daArray       aircraft_->Cnfadaf_daArray
+#define Cnfadaf_CnArray       aircraft_->Cnfadaf_CnArray
+#define Cnfadaf_nAlphaArray   aircraft_->Cnfadaf_nAlphaArray
+#define Cnfadaf_nda           aircraft_->Cnfadaf_nda
+#define Cnfadaf_fArray        aircraft_->Cnfadaf_fArray
+#define Cnfadaf_nf            aircraft_->Cnfadaf_nf
+#define CnfadafI              aircraft_->CnfadafI
+#define Cnfadaf_nice          aircraft_->Cnfadaf_nice
+#define Cnfadaf_na_nice       aircraft_->Cnfadaf_na_nice
+#define Cnfadaf_nda_nice      aircraft_->Cnfadaf_nda_nice
+#define Cnfadaf_daArray_nice  aircraft_->Cnfadaf_daArray_nice
+#define Cnfadaf_aArray_nice   aircraft_->Cnfadaf_aArray_nice
+  double Cnfadrf_aArray[30][100][100];
+  double Cnfadrf_drArray[30][100];
+  double Cnfadrf_CnArray[30][100][100];
+  int Cnfadrf_nAlphaArray[30][100];
+  int Cnfadrf_ndr[30];
+  double Cnfadrf_fArray[30];
+  int Cnfadrf_nf;
+  double CnfadrfI;
+  int Cnfadrf_nice, Cnfadrf_na_nice, Cnfadrf_ndr_nice;
+  double Cnfadrf_drArray_nice[100];
+  double Cnfadrf_aArray_nice[100];
+#define Cnfadrf_aArray        aircraft_->Cnfadrf_aArray
+#define Cnfadrf_drArray       aircraft_->Cnfadrf_drArray
+#define Cnfadrf_CnArray       aircraft_->Cnfadrf_CnArray
+#define Cnfadrf_nAlphaArray   aircraft_->Cnfadrf_nAlphaArray
+#define Cnfadrf_ndr           aircraft_->Cnfadrf_ndr
+#define Cnfadrf_fArray        aircraft_->Cnfadrf_fArray
+#define Cnfadrf_nf            aircraft_->Cnfadrf_nf
+#define CnfadrfI              aircraft_->CnfadrfI
+#define Cnfadrf_nice          aircraft_->Cnfadrf_nice
+#define Cnfadrf_na_nice       aircraft_->Cnfadrf_na_nice
+#define Cnfadrf_ndr_nice      aircraft_->Cnfadrf_ndr_nice
+#define Cnfadrf_drArray_nice  aircraft_->Cnfadrf_drArray_nice
+#define Cnfadrf_aArray_nice   aircraft_->Cnfadrf_aArray_nice
+  double Cnfapf_aArray[30][100][100];
+  double Cnfapf_pArray[30][100];
+  double Cnfapf_CnArray[30][100][100];
+  int Cnfapf_nAlphaArray[30][100];
+  int Cnfapf_np[30];
+  double Cnfapf_fArray[30];
+  int Cnfapf_nf;
+  double CnfapfI;
+  int Cnfapf_nice, Cnfapf_na_nice, Cnfapf_np_nice;
+  double Cnfapf_pArray_nice[100];
+  double Cnfapf_aArray_nice[100];
+#define Cnfapf_aArray        aircraft_->Cnfapf_aArray
+#define Cnfapf_pArray        aircraft_->Cnfapf_pArray
+#define Cnfapf_CnArray       aircraft_->Cnfapf_CnArray
+#define Cnfapf_nAlphaArray   aircraft_->Cnfapf_nAlphaArray
+#define Cnfapf_np            aircraft_->Cnfapf_np
+#define Cnfapf_fArray        aircraft_->Cnfapf_fArray
+#define Cnfapf_nf            aircraft_->Cnfapf_nf
+#define CnfapfI              aircraft_->CnfapfI
+#define Cnfapf_nice          aircraft_->Cnfapf_nice
+#define Cnfapf_na_nice       aircraft_->Cnfapf_na_nice
+#define Cnfapf_np_nice       aircraft_->Cnfapf_np_nice
+#define Cnfapf_pArray_nice   aircraft_->Cnfapf_pArray_nice
+#define Cnfapf_aArray_nice   aircraft_->Cnfapf_aArray_nice
+  double Cnfarf_aArray[30][100][100];
+  double Cnfarf_rArray[30][100];
+  double Cnfarf_CnArray[30][100][100];
+  int Cnfarf_nAlphaArray[30][100];
+  int Cnfarf_nr[30];
+  double Cnfarf_fArray[30];
+  int Cnfarf_nf;
+  double CnfarfI;
+  int Cnfarf_nice, Cnfarf_na_nice, Cnfarf_nr_nice;
+  double Cnfarf_rArray_nice[100];
+  double Cnfarf_aArray_nice[100];
+#define Cnfarf_aArray        aircraft_->Cnfarf_aArray
+#define Cnfarf_rArray        aircraft_->Cnfarf_rArray
+#define Cnfarf_CnArray       aircraft_->Cnfarf_CnArray
+#define Cnfarf_nAlphaArray   aircraft_->Cnfarf_nAlphaArray
+#define Cnfarf_nr            aircraft_->Cnfarf_nr
+#define Cnfarf_fArray        aircraft_->Cnfarf_fArray
+#define Cnfarf_nf            aircraft_->Cnfarf_nf
+#define CnfarfI              aircraft_->CnfarfI
+#define Cnfarf_nice          aircraft_->Cnfarf_nice
+#define Cnfarf_na_nice       aircraft_->Cnfarf_na_nice
+#define Cnfarf_nr_nice       aircraft_->Cnfarf_nr_nice
+#define Cnfarf_rArray_nice   aircraft_->Cnfarf_rArray_nice
+#define Cnfarf_aArray_nice   aircraft_->Cnfarf_aArray_nice
+  double Cno_save, Cn_beta_save, Cn_p_save, Cn_r_save;
+  double Cn_da_save, Cn_dr_save, Cn_q_save, Cn_b3_save;
+#define Cno_save             aircraft_->Cno_save
+#define Cn_beta_save         aircraft_->Cn_beta_save
+#define Cn_p_save            aircraft_->Cn_p_save
+#define Cn_r_save            aircraft_->Cn_r_save
+#define Cn_da_save           aircraft_->Cn_da_save
+#define Cn_dr_save           aircraft_->Cn_dr_save
+#define Cn_q_save            aircraft_->Cn_q_save
+#define Cn_b3_save           aircraft_->Cn_b3_save
+
 
   /* Variables (token2) ===========================================*/
   /* gear ========== Landing gear model quantities ================*/
@@ -1331,6 +2049,12 @@ struct AIRCRAFT
 #define dfArray   aircraft_->dfArray
 #define TimeArray aircraft_->TimeArray
 
+  double flap_percent, flap_goal, flap_moving_rate, flap_pos;
+#define flap_percent     aircraft_->flap_percent
+#define flap_goal        aircraft_->flap_goal
+#define flap_moving_rate aircraft_->flap_moving_rate
+#define flap_pos         aircraft_->flap_pos
+
 
   ofstream fout;
   
index e35cbdce537bf0462742c0ebe114886c7b450a40..6b49c44a0d6b1264a3d6479c881d198f7fcc92f2 100644 (file)
 ----------------------------------------------------------------------
 
  HISTORY:      04/15/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CXfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CXfxxf).  Zero flap vairables removed.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added uiuc_3Dinterp_quick() function
+                           for a quicker 3D interpolation.  Takes
+                           advantage of "nice" data.
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -49,6 +61,8 @@
  CALLS TO:     uiuc_1Dinterpolation
                uiuc_2Dinterpolation
                uiuc_ice_filter
+              uiuc_3Dinterpolation
+              uiuc_3Dinterp_quick
 
 ----------------------------------------------------------------------
 
 **********************************************************************/
 
 #include "uiuc_coef_drag.h"
-
+#include <math.h>
 
 void uiuc_coef_drag()
 {
   string linetoken1;
   string linetoken2;
   stack command_list;
-  
+
+  double q_nondim;
+
   command_list = aeroDragParts -> getCommands();
   
   for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
@@ -94,6 +110,7 @@ void uiuc_coef_drag()
               {
                 CDo = uiuc_ice_filter(CDo_clean,kCDo);
               }
+           CDo_save = CDo;
             CD += CDo;
             break;
           }
@@ -103,6 +120,7 @@ void uiuc_coef_drag()
               {
                 CDK = uiuc_ice_filter(CDK_clean,kCDK);
               }
+           CDK_save = CDK * CL * CL;
             CD += CDK * CL * CL;
             break;
           }
@@ -112,6 +130,7 @@ void uiuc_coef_drag()
               {
                 CD_a = uiuc_ice_filter(CD_a_clean,kCD_a);
               }
+           CD_a_save = CD_a * Alpha;
             CD += CD_a * Alpha;
             break;
           }
@@ -123,6 +142,7 @@ void uiuc_coef_drag()
               }
             /* CD_adot must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CD_adot_save = CD_adot * Alpha_dot * cbar_2U;
             CD += CD_adot * Alpha_dot * cbar_2U;
             break;
           }
@@ -136,12 +156,14 @@ void uiuc_coef_drag()
                (see Roskam Control book, Part 1, pg. 147) */
             /* why multiply by Theta_dot instead of Q_body? 
                see note in coef_lift.cpp */
+           CD_q_save = CD_q * Theta_dot * cbar_2U;
             CD += CD_q * Theta_dot * cbar_2U;
             break;
           }
         case CD_ih_flag:
           {
-            CD += CD_ih * ih;
+           CD_ih_save = fabs(CD_ih * ih);
+            CD += fabs(CD_ih * ih);
             break;
           }
         case CD_de_flag:
@@ -150,7 +172,8 @@ void uiuc_coef_drag()
               {
                 CD_de = uiuc_ice_filter(CD_de_clean,kCD_de);
               }
-            CD += CD_de * elevator;
+           CD_de_save = fabs(CD_de * elevator);
+            CD += fabs(CD_de * elevator);
             break;
           }
         case CDfa_flag:
@@ -217,6 +240,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CXo;
                   }
               }
+           CXo_save = CXo;
             CX += CXo;
             break;
           }
@@ -233,6 +257,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CXK * CLiced_tail * CLiced_tail;
                   }
               }
+           CXK_save = CXK * CZ * CZ;
             CX += CXK * CZ * CZ;
             break;
           }
@@ -249,6 +274,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CX_a * Alpha;
                   }
               }
+           CX_a_save = CX_a * Alpha;
             CX += CX_a * Alpha;
             break;
           }
@@ -265,6 +291,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CX_a2 * Alpha * Alpha;
                   }
               }
+           CX_a2_save = CX_a2 * Alpha * Alpha;
             CX += CX_a2 * Alpha * Alpha;
             break;
           }
@@ -281,6 +308,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CX_a3 * Alpha * Alpha * Alpha;
                   }
               }
+           CX_a3_save = CX_a3 * Alpha * Alpha * Alpha;
             CX += CX_a3 * Alpha * Alpha * Alpha;
             break;
           }
@@ -299,6 +327,7 @@ void uiuc_coef_drag()
               }
             /* CX_adot must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CX_adot_save = CX_adot * Alpha_dot * cbar_2U;
             CX += CX_adot * Alpha_dot * cbar_2U;
             break;
           }
@@ -317,6 +346,7 @@ void uiuc_coef_drag()
               }
             /* CX_q must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CX_q_save = CX_q * Q_body * cbar_2U;
             CX += CX_q * Q_body * cbar_2U;
             break;
           }
@@ -333,6 +363,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CX_de * elevator;
                   }
               }
+           CX_de_save = CX_de * elevator;
             CX += CX_de * elevator;
             break;
           }
@@ -349,6 +380,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CX_dr * rudder;
                   }
               }
+           CX_dr_save = CX_dr * rudder;
             CX += CX_dr * rudder;
             break;
           }
@@ -365,6 +397,7 @@ void uiuc_coef_drag()
                     CXiced_tail += CX * flap;
                   }
               }
+           CX_df_save = CX_df * flap;
             CX += CX_df * flap;
             break;
           }
@@ -381,9 +414,92 @@ void uiuc_coef_drag()
                     CXiced_tail += CX_adf * Alpha * flap;
                   }
               }
+           CX_adf_save = CX_adf * Alpha * flap;
             CX += CX_adf * Alpha * flap;
             break;
           }
+        case CXfabetaf_flag:
+          {
+           if (CXfabetaf_nice == 1)
+             CXfabetafI = uiuc_3Dinterp_quick(CXfabetaf_fArray,
+                                              CXfabetaf_aArray_nice,
+                                              CXfabetaf_bArray_nice,
+                                              CXfabetaf_CXArray,
+                                              CXfabetaf_na_nice,
+                                              CXfabetaf_nb_nice,
+                                              CXfabetaf_nf,
+                                              flap_pos,
+                                              Alpha,
+                                              Beta);
+           else
+             CXfabetafI = uiuc_3Dinterpolation(CXfabetaf_fArray,
+                                               CXfabetaf_aArray,
+                                               CXfabetaf_betaArray,
+                                               CXfabetaf_CXArray,
+                                               CXfabetaf_nAlphaArray,
+                                               CXfabetaf_nbeta,
+                                               CXfabetaf_nf,
+                                               flap_pos,
+                                               Alpha,
+                                               Beta);
+           CX += CXfabetafI;
+            break;
+          }
+        case CXfadef_flag:
+          {
+           if (CXfadef_nice == 1)
+             CXfadefI = uiuc_3Dinterp_quick(CXfadef_fArray,
+                                            CXfadef_aArray_nice,
+                                            CXfadef_deArray_nice,
+                                            CXfadef_CXArray,
+                                            CXfadef_na_nice,
+                                            CXfadef_nde_nice,
+                                            CXfadef_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            elevator);
+           else
+             CXfadefI = uiuc_3Dinterpolation(CXfadef_fArray,
+                                             CXfadef_aArray,
+                                             CXfadef_deArray,
+                                             CXfadef_CXArray,
+                                             CXfadef_nAlphaArray,
+                                             CXfadef_nde,
+                                             CXfadef_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             elevator);
+            CX += CXfadefI;
+            break;
+          }
+        case CXfaqf_flag:
+          {
+           q_nondim = Q_body * cbar_2U;
+           if (CXfaqf_nice == 1)
+             CXfaqfI = uiuc_3Dinterp_quick(CXfaqf_fArray,
+                                           CXfaqf_aArray_nice,
+                                           CXfaqf_qArray_nice,
+                                           CXfaqf_CXArray,
+                                           CXfaqf_na_nice,
+                                           CXfaqf_nq_nice,
+                                           CXfaqf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           q_nondim);
+           else
+             CXfaqfI = uiuc_3Dinterpolation(CXfaqf_fArray,
+                                            CXfaqf_aArray,
+                                            CXfaqf_qArray,
+                                            CXfaqf_CXArray,
+                                            CXfaqf_nAlphaArray,
+                                            CXfaqf_nq,
+                                            CXfaqf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            q_nondim);
+            CX += CXfaqfI;
+            break;
+          }
         };
     } // end CD map
 
index 235347f757a488549467d366819f0891fb0fdf2b..0a5e2253af9a90279a5c9242f499bb5ee732fc59 100644 (file)
@@ -7,6 +7,7 @@
 #include "uiuc_aircraft.h"
 #include "uiuc_1Dinterpolation.h"
 #include "uiuc_2Dinterpolation.h"
+#include "uiuc_3Dinterpolation.h"
 #include "uiuc_ice.h"
 
 
index 9eb54c264dd304f98e611de9e63b2f4674c07a9c..d7fb6e73d27e1986f7e71a8e1c461f2e06f4f92e 100644 (file)
 
  HISTORY:      04/15/2000   initial release
                06/18/2001   (RD) Added CZfa
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CZfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CZfxxf).  Zero flap vairables removed.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added uiuc_3Dinterp_quick() function
+                           for a quicker 3D interpolation.  Takes
+                           advantage of "nice" data.
 
 ----------------------------------------------------------------------
 
@@ -52,6 +63,8 @@
  CALLS TO:     uiuc_1Dinterpolation
                uiuc_2Dinterpolation
                uiuc_ice_filter
+              uiuc_3Dinterpolation
+              uiuc_3Dinterp_quick
 
 ----------------------------------------------------------------------
 
 
 #include "uiuc_coef_lift.h"
 
-
 void uiuc_coef_lift()
 {
   string linetoken1;
   string linetoken2;
   stack command_list;
-  
+
+  double q_nondim;
+
   command_list = aeroLiftParts -> getCommands();
   
   for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
@@ -104,6 +118,7 @@ void uiuc_coef_lift()
                     CLiced_tail += CLo;
                   }
               }
+           CLo_save = CLo;
             CL += CLo;
             break;
           }
@@ -120,6 +135,7 @@ void uiuc_coef_lift()
                     CLiced_tail += CL_a * Alpha;
                   }
               }
+           CL_a_save = CL_a * Alpha;
             CL += CL_a * Alpha;
             break;
           }
@@ -138,6 +154,7 @@ void uiuc_coef_lift()
               }
             /* CL_adot must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CL_adot_save = CL_adot * Alpha_dot * cbar_2U;
             CL += CL_adot * Alpha_dot * cbar_2U;
             break;
           }
@@ -159,11 +176,13 @@ void uiuc_coef_lift()
             /* why multiply by Theta_dot instead of Q_body?
                that is what is done in c172_aero.c; assume it 
                has something to do with axes systems */
+           CL_q_save = CL_q * Theta_dot * cbar_2U;
             CL += CL_q * Theta_dot * cbar_2U;
             break;
           }
         case CL_ih_flag:
           {
+           CL_ih_save = CL_ih * ih;
             CL += CL_ih * ih;
             break;
           }
@@ -180,6 +199,7 @@ void uiuc_coef_lift()
                     CLiced_tail += CL_de * elevator;
                   }
               }
+           CL_de_save = CL_de * elevator;
             CL += CL_de * elevator;
             break;
           }
@@ -238,6 +258,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZo;
                   }
               }
+           CZo_save = CZo;
             CZ += CZo;
             break;
           }
@@ -254,6 +275,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZ_a * Alpha;
                   }
               }
+           CZ_a_save = CZ_a * Alpha;
             CZ += CZ_a * Alpha;
             break;
           }
@@ -270,6 +292,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZ_a2 * Alpha * Alpha;
                   }
               }
+           CZ_a2_save = CZ_a2 * Alpha * Alpha;
             CZ += CZ_a2 * Alpha * Alpha;
             break;
           }
@@ -286,6 +309,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZ_a3 * Alpha * Alpha * Alpha;
                   }
               }
+           CZ_a3_save = CZ_a3 * Alpha * Alpha * Alpha;
             CZ += CZ_a3 * Alpha * Alpha * Alpha;
             break;
           }
@@ -304,6 +328,7 @@ void uiuc_coef_lift()
               }
             /* CZ_adot must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CZ_adot_save = CZ_adot * Alpha_dot * cbar_2U;
             CZ += CZ_adot * Alpha_dot * cbar_2U;
             break;
           }
@@ -322,6 +347,7 @@ void uiuc_coef_lift()
               }
             /* CZ_q must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CZ_q_save = CZ_q * Q_body * cbar_2U;
             CZ += CZ_q * Q_body * cbar_2U;
             break;
           }
@@ -338,6 +364,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZ_de * elevator;
                   }
               }
+           CZ_de_save = CZ_de * elevator;
             CZ += CZ_de * elevator;
             break;
           }
@@ -354,6 +381,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZ_deb2 * elevator * Beta * Beta;
                   }
               }
+           CZ_deb2_save = CZ_deb2 * elevator * Beta * Beta;
             CZ += CZ_deb2 * elevator * Beta * Beta;
             break;
           }
@@ -370,6 +398,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZ_df * flap;
                   }
               }
+           CZ_df_save = CZ_df * flap;
             CZ += CZ_df * flap;
             break;
           }
@@ -386,6 +415,7 @@ void uiuc_coef_lift()
                     CZiced_tail += CZ_adf * Alpha * flap;
                   }
               }
+           CZ_adf_save = CZ_adf * Alpha * flap;
             CZ += CZ_adf * Alpha * flap;
             break;
           }
@@ -398,6 +428,88 @@ void uiuc_coef_lift()
             CZ += CZfaI;
             break;
           }
+        case CZfabetaf_flag:
+          {
+           if (CZfabetaf_nice == 1)
+             CZfabetafI = uiuc_3Dinterp_quick(CZfabetaf_fArray,
+                                              CZfabetaf_aArray_nice,
+                                              CZfabetaf_bArray_nice,
+                                              CZfabetaf_CZArray,
+                                              CZfabetaf_na_nice,
+                                              CZfabetaf_nb_nice,
+                                              CZfabetaf_nf,
+                                              flap_pos,
+                                              Alpha,
+                                              Beta);
+           else
+             CZfabetafI = uiuc_3Dinterpolation(CZfabetaf_fArray,
+                                               CZfabetaf_aArray,
+                                               CZfabetaf_betaArray,
+                                               CZfabetaf_CZArray,
+                                               CZfabetaf_nAlphaArray,
+                                               CZfabetaf_nbeta,
+                                               CZfabetaf_nf,
+                                               flap_pos,
+                                               Alpha,
+                                               Beta);
+            CZ += CZfabetafI;
+            break;
+          }
+        case CZfadef_flag:
+          {
+           if (CZfadef_nice == 1)
+             CZfadefI = uiuc_3Dinterp_quick(CZfadef_fArray,
+                                            CZfadef_aArray_nice,
+                                            CZfadef_deArray_nice,
+                                            CZfadef_CZArray,
+                                            CZfadef_na_nice,
+                                            CZfadef_nde_nice,
+                                            CZfadef_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            elevator);
+           else
+             CZfadefI = uiuc_3Dinterpolation(CZfadef_fArray,
+                                             CZfadef_aArray,
+                                             CZfadef_deArray,
+                                             CZfadef_CZArray,
+                                             CZfadef_nAlphaArray,
+                                             CZfadef_nde,
+                                             CZfadef_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             elevator);
+            CZ += CZfadefI;
+            break;
+          }
+        case CZfaqf_flag:
+          {
+           q_nondim = Q_body * cbar_2U;
+           if (CZfaqf_nice == 1)
+             CZfaqfI = uiuc_3Dinterp_quick(CZfaqf_fArray,
+                                           CZfaqf_aArray_nice,
+                                           CZfaqf_qArray_nice,
+                                           CZfaqf_CZArray,
+                                           CZfaqf_na_nice,
+                                           CZfaqf_nq_nice,
+                                           CZfaqf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           q_nondim);
+           else
+             CZfaqfI = uiuc_3Dinterpolation(CZfaqf_fArray,
+                                            CZfaqf_aArray,
+                                            CZfaqf_qArray,
+                                            CZfaqf_CZArray,
+                                            CZfaqf_nAlphaArray,
+                                            CZfaqf_nq,
+                                            CZfaqf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            q_nondim);
+            CZ += CZfaqfI;
+            break;
+          }
         };
     } // end CL map
 
index 2edfa8e317485e160912e890922f7221f339f751..f4a8c12eadbada75db9934f86f30c9322a1bf8d9 100644 (file)
@@ -7,6 +7,7 @@
 #include "uiuc_aircraft.h"
 #include "uiuc_1Dinterpolation.h"
 #include "uiuc_2Dinterpolation.h"
+#include "uiuc_3Dinterpolation.h"
 #include "uiuc_ice.h"
 
 
index 7c35bd978b0b95f4961642cfbf3aa3b85a50a1cf..8368e1771223808790b5a5cd8a164f222cae20fd 100644 (file)
 ----------------------------------------------------------------------
 
  HISTORY:      04/15/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cmfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (Cmfxxf).  Zero flap vairables removed.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added uiuc_3Dinterp_quick() function
+                           for a quicker 3D interpolation.  Takes
+                           advantage of "nice" data.
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -50,6 +62,8 @@
  CALLS TO:     uiuc_1Dinterpolation
                uiuc_2Dinterpolation
                uiuc_ice_filter
+              uiuc_3Dinterpolation
+              uiuc_3Dinterp_quick
 
 ----------------------------------------------------------------------
 
@@ -79,6 +93,8 @@ void uiuc_coef_pitch()
   string linetoken1;
   string linetoken2;
   stack command_list;
+
+  double q_nondim;
   
   command_list = aeroPitchParts -> getCommands();
   
@@ -95,6 +111,7 @@ void uiuc_coef_pitch()
               {
                 Cmo = uiuc_ice_filter(Cmo_clean,kCmo);
               }
+           Cmo_save = Cmo;
             Cm += Cmo;
             break;
           }
@@ -104,6 +121,7 @@ void uiuc_coef_pitch()
               {
                 Cm_a = uiuc_ice_filter(Cm_a_clean,kCm_a);
               }
+           Cm_a_save = Cm_a * Alpha;
             Cm += Cm_a * Alpha;
             break;
           }
@@ -113,6 +131,7 @@ void uiuc_coef_pitch()
               {
                 Cm_a2 = uiuc_ice_filter(Cm_a2_clean,kCm_a2);
               }
+           Cm_a2_save = Cm_a2 * Alpha * Alpha;
             Cm += Cm_a2 * Alpha * Alpha;
             break;
           }
@@ -124,6 +143,7 @@ void uiuc_coef_pitch()
               }
             /* Cm_adot must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           Cm_adot_save = Cm_adot * Alpha_dot * cbar_2U;
             Cm += Cm_adot * Alpha_dot * cbar_2U;
             break;
           }
@@ -135,11 +155,13 @@ void uiuc_coef_pitch()
               }
             /* Cm_q must be mulitplied by cbar/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           Cm_q_save = Cm_q * Q_body * cbar_2U;
             Cm += Cm_q * Q_body * cbar_2U;
             break;
           }
         case Cm_ih_flag:
           {
+           Cm_ih_save = Cm_ih * ih;
             Cm += Cm_ih * ih;
             break;
           }
@@ -149,6 +171,7 @@ void uiuc_coef_pitch()
               {
                 Cm_de = uiuc_ice_filter(Cm_de_clean,kCm_de);
               }
+           Cm_de_save = Cm_de * elevator;
             Cm += Cm_de * elevator;
             break;
           }
@@ -158,6 +181,7 @@ void uiuc_coef_pitch()
               {
                 Cm_b2 = uiuc_ice_filter(Cm_b2_clean,kCm_b2);
               }
+           Cm_b2_save = Cm_b2 * Beta * Beta;
             Cm += Cm_b2 * Beta * Beta;
             break;
           }
@@ -167,6 +191,7 @@ void uiuc_coef_pitch()
               {
                 Cm_r = uiuc_ice_filter(Cm_r_clean,kCm_r);
               }
+           Cm_r_save = Cm_r * R_body * b_2U;
             Cm += Cm_r * R_body * b_2U;
             break;
           }
@@ -176,6 +201,7 @@ void uiuc_coef_pitch()
               {
                 Cm_df = uiuc_ice_filter(Cm_df_clean,kCm_df);
               }
+           Cm_df_save = Cm_df * flap;
             Cm += Cm_df * flap;
             break;
           }
@@ -221,6 +247,88 @@ void uiuc_coef_pitch()
             Cm += CmfadfI;
             break;
           }
+        case Cmfabetaf_flag:
+          {
+           if (Cmfabetaf_nice == 1)
+             CmfabetafI = uiuc_3Dinterp_quick(Cmfabetaf_fArray,
+                                              Cmfabetaf_aArray_nice,
+                                              Cmfabetaf_bArray_nice,
+                                              Cmfabetaf_CmArray,
+                                              Cmfabetaf_na_nice,
+                                              Cmfabetaf_nb_nice,
+                                              Cmfabetaf_nf,
+                                              flap_pos,
+                                              Alpha,
+                                              Beta);
+           else
+             CmfabetafI = uiuc_3Dinterpolation(Cmfabetaf_fArray,
+                                               Cmfabetaf_aArray,
+                                               Cmfabetaf_betaArray,
+                                               Cmfabetaf_CmArray,
+                                               Cmfabetaf_nAlphaArray,
+                                               Cmfabetaf_nbeta,
+                                               Cmfabetaf_nf,
+                                               flap_pos,
+                                               Alpha,
+                                               Beta);
+            Cm += CmfabetafI;
+            break;
+          }
+        case Cmfadef_flag:
+          {
+           if (Cmfadef_nice == 1)
+             CmfadefI = uiuc_3Dinterp_quick(Cmfadef_fArray,
+                                            Cmfadef_aArray_nice,
+                                            Cmfadef_deArray_nice,
+                                            Cmfadef_CmArray,
+                                            Cmfadef_na_nice,
+                                            Cmfadef_nde_nice,
+                                            Cmfadef_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            elevator);
+           else
+             CmfadefI = uiuc_3Dinterpolation(Cmfadef_fArray,
+                                             Cmfadef_aArray,
+                                             Cmfadef_deArray,
+                                             Cmfadef_CmArray,
+                                             Cmfadef_nAlphaArray,
+                                             Cmfadef_nde,
+                                             Cmfadef_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             elevator);
+           Cm += CmfadefI;
+            break;
+          }
+        case Cmfaqf_flag:
+          {
+           q_nondim = Q_body * cbar_2U;
+           if (Cmfaqf_nice == 1)
+             CmfaqfI = uiuc_3Dinterp_quick(Cmfaqf_fArray,
+                                           Cmfaqf_aArray_nice,
+                                           Cmfaqf_qArray_nice,
+                                           Cmfaqf_CmArray,
+                                           Cmfaqf_na_nice,
+                                           Cmfaqf_nq_nice,
+                                           Cmfaqf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           q_nondim);
+           else
+             CmfaqfI = uiuc_3Dinterpolation(Cmfaqf_fArray,
+                                            Cmfaqf_aArray,
+                                            Cmfaqf_qArray,
+                                            Cmfaqf_CmArray,
+                                            Cmfaqf_nAlphaArray,
+                                            Cmfaqf_nq,
+                                            Cmfaqf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            q_nondim);
+            Cm += CmfaqfI;
+            break;
+          }
         };
     } // end Cm map
 
index 8b010e1f3b668a0c5a5909987f4923f4ec81df75..772ea3bb0d80088f3cbfc0769e3b239f0f3e4029 100644 (file)
@@ -5,6 +5,7 @@
 #include "uiuc_aircraft.h"
 #include "uiuc_1Dinterpolation.h"
 #include "uiuc_2Dinterpolation.h"
+#include "uiuc_3Dinterpolation.h"
 #include "uiuc_ice.h"
 #include <FDM/LaRCsim/ls_generic.h>
 
index 840ad907925a4347a8bf6a309712e2e33237ea69..57026aaaacd4091841efdfb77e1cd3ca6a9b6c38 100644 (file)
 ----------------------------------------------------------------------
 
  HISTORY:      04/15/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Clfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (Clfxxf).  Zero flap vairables removed.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added uiuc_3Dinterp_quick() function
+                           for a quicker 3D interpolation.  Takes
+                           advantage of "nice" data.
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -51,6 +63,8 @@
  CALLS TO:     uiuc_1Dinterpolation
                uiuc_2Dinterpolation
                uiuc_ice_filter
+              uiuc_3Dinterpolation
+              uiuc_3Dinterp_quick
 
 ----------------------------------------------------------------------
 
@@ -80,7 +94,10 @@ void uiuc_coef_roll()
   string linetoken1;
   string linetoken2;
   stack command_list;
-  
+
+  double p_nondim;
+  double r_nondim;
+
   command_list = aeroRollParts -> getCommands();
   
   for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
@@ -96,6 +113,7 @@ void uiuc_coef_roll()
               {
                 Clo = uiuc_ice_filter(Clo_clean,kClo);
               }
+           Clo_save = Clo;
             Cl += Clo;
             break;
           }
@@ -105,6 +123,7 @@ void uiuc_coef_roll()
               {
                 Cl_beta = uiuc_ice_filter(Cl_beta_clean,kCl_beta);
               }
+           Cl_beta_save = Cl_beta * Beta;
             Cl += Cl_beta * Beta;
             break;
           }
@@ -116,6 +135,7 @@ void uiuc_coef_roll()
               }
             /* Cl_p must be mulitplied by b/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           Cl_p_save = Cl_p * P_body * b_2U;
             Cl += Cl_p * P_body * b_2U;
             break;
           }
@@ -127,6 +147,7 @@ void uiuc_coef_roll()
               }
             /* Cl_r must be mulitplied by b/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           Cl_r_save = Cl_r * R_body * b_2U;
             Cl += Cl_r * R_body * b_2U;
             break;
           }
@@ -136,6 +157,7 @@ void uiuc_coef_roll()
               {
                 Cl_da = uiuc_ice_filter(Cl_da_clean,kCl_da);
               }
+           Cl_da_save = Cl_da * aileron;
             Cl += Cl_da * aileron;
             break;
           }
@@ -145,6 +167,7 @@ void uiuc_coef_roll()
               {
                 Cl_dr = uiuc_ice_filter(Cl_dr_clean,kCl_dr);
               }
+           Cl_dr_save = Cl_dr * rudder;
             Cl += Cl_dr * rudder;
             break;
           }
@@ -154,6 +177,7 @@ void uiuc_coef_roll()
               {
                 Cl_daa = uiuc_ice_filter(Cl_daa_clean,kCl_daa);
               }
+           Cl_daa_save = Cl_daa * aileron * Alpha;
             Cl += Cl_daa * aileron * Alpha;
             break;
           }
@@ -181,6 +205,143 @@ void uiuc_coef_roll()
             Cl += ClfbetadrI;
             break;
           }
+        case Clfabetaf_flag:
+          {
+           if (Clfabetaf_nice == 1)
+             ClfabetafI = uiuc_3Dinterp_quick(Clfabetaf_fArray,
+                                              Clfabetaf_aArray_nice,
+                                              Clfabetaf_bArray_nice,
+                                              Clfabetaf_ClArray,
+                                              Clfabetaf_na_nice,
+                                              Clfabetaf_nb_nice,
+                                              Clfabetaf_nf,
+                                              flap_pos,
+                                              Alpha,
+                                              Beta);
+           else
+             ClfabetafI = uiuc_3Dinterpolation(Clfabetaf_fArray,
+                                               Clfabetaf_aArray,
+                                               Clfabetaf_betaArray,
+                                               Clfabetaf_ClArray,
+                                               Clfabetaf_nAlphaArray,
+                                               Clfabetaf_nbeta,
+                                               Clfabetaf_nf,
+                                               flap_pos,
+                                               Alpha,
+                                               Beta);
+            Cl += ClfabetafI;
+            break;
+          }
+        case Clfadaf_flag:
+          {
+           if (Clfadaf_nice == 1)
+             ClfadafI = uiuc_3Dinterp_quick(Clfadaf_fArray,
+                                            Clfadaf_aArray_nice,
+                                            Clfadaf_daArray_nice,
+                                            Clfadaf_ClArray,
+                                            Clfadaf_na_nice,
+                                            Clfadaf_nda_nice,
+                                            Clfadaf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            aileron);
+           else
+             ClfadafI = uiuc_3Dinterpolation(Clfadaf_fArray,
+                                             Clfadaf_aArray,
+                                             Clfadaf_daArray,
+                                             Clfadaf_ClArray,
+                                             Clfadaf_nAlphaArray,
+                                             Clfadaf_nda,
+                                             Clfadaf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             aileron);
+            Cl += ClfadafI;
+            break;
+          }
+        case Clfadrf_flag:
+          {
+           if (Clfadrf_nice == 1)
+             ClfadrfI = uiuc_3Dinterp_quick(Clfadrf_fArray,
+                                            Clfadrf_aArray_nice,
+                                            Clfadrf_drArray_nice,
+                                            Clfadrf_ClArray,
+                                            Clfadrf_na_nice,
+                                            Clfadrf_ndr_nice,
+                                            Clfadrf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            rudder);
+           else
+             ClfadrfI = uiuc_3Dinterpolation(Clfadrf_fArray,
+                                             Clfadrf_aArray,
+                                             Clfadrf_drArray,
+                                             Clfadrf_ClArray,
+                                             Clfadrf_nAlphaArray,
+                                             Clfadrf_ndr,
+                                             Clfadrf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             rudder);
+            Cl += ClfadrfI;
+            break;
+          }
+       case Clfapf_flag:
+          {
+           p_nondim = P_body * b_2U;
+           if (Clfapf_nice == 1)
+             ClfapfI = uiuc_3Dinterp_quick(Clfapf_fArray,
+                                           Clfapf_aArray_nice,
+                                           Clfapf_pArray_nice,
+                                           Clfapf_ClArray,
+                                           Clfapf_na_nice,
+                                           Clfapf_np_nice,
+                                           Clfapf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           p_nondim);
+           else
+             ClfapfI = uiuc_3Dinterpolation(Clfapf_fArray,
+                                            Clfapf_aArray,
+                                            Clfapf_pArray,
+                                            Clfapf_ClArray,
+                                            Clfapf_nAlphaArray,
+                                            Clfapf_np,
+                                            Clfapf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            p_nondim);
+            Cl += ClfapfI;
+            break;
+          }
+       case Clfarf_flag:
+          {
+           r_nondim = R_body * b_2U;
+           if (Clfarf_nice == 1)
+             ClfarfI = uiuc_3Dinterp_quick(Clfarf_fArray,
+                                           Clfarf_aArray_nice,
+                                           Clfarf_rArray_nice,
+                                           Clfarf_ClArray,
+                                           Clfarf_na_nice,
+                                           Clfarf_nr_nice,
+                                           Clfarf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           r_nondim);
+           else
+             ClfarfI = uiuc_3Dinterpolation(Clfarf_fArray,
+                                            Clfarf_aArray,
+                                            Clfarf_rArray,
+                                            Clfarf_ClArray,
+                                            Clfarf_nAlphaArray,
+                                            Clfarf_nr,
+                                            Clfarf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            r_nondim);
+            Cl += ClfarfI;
+            break;
+          }
         };
     } // end Cl map
 
index a2cf5e41f90004bab5655020bf788053671dd66e..17f0d95ef9b53a59a28bc4495cb89b7207197668 100644 (file)
@@ -5,6 +5,7 @@
 #include "uiuc_aircraft.h"
 #include "uiuc_1Dinterpolation.h"
 #include "uiuc_2Dinterpolation.h"
+#include "uiuc_3Dinterpolation.h"
 #include "uiuc_ice.h"
 #include <FDM/LaRCsim/ls_generic.h>
 
index e0e39637b415c2c0c7cc47243223a1e794bf6b8d..dc30657f55c0f227c8fe783a52e2eb05d78573be 100644 (file)
 ----------------------------------------------------------------------
 
  HISTORY:      04/15/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CYfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CYfxxf).  Zero flap vairables removed.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added uiuc_3Dinterp_quick() function
+                           for a quicker 3D interpolation.  Takes
+                           advantage of "nice" data.
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -51,6 +63,8 @@
  CALLS TO:     uiuc_1Dinterpolation
                uiuc_2Dinterpolation
                uiuc_ice_filter
+              uiuc_3Dinterpolation
+              uiuc_3Dinterp_quick
 
 ----------------------------------------------------------------------
 
@@ -80,7 +94,10 @@ void uiuc_coef_sideforce()
   string linetoken1;
   string linetoken2;
   stack command_list;
-  
+
+  double p_nondim;
+  double r_nondim;
+
   command_list = aeroSideforceParts -> getCommands();
   
   for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
@@ -96,6 +113,7 @@ void uiuc_coef_sideforce()
               {
                 CYo = uiuc_ice_filter(CYo_clean,kCYo);
               }
+           CYo_save = CYo;
             CY += CYo;
             break;
           }
@@ -105,6 +123,7 @@ void uiuc_coef_sideforce()
               {
                 CY_beta = uiuc_ice_filter(CY_beta_clean,kCY_beta);
               }
+           CY_beta_save = CY_beta * Beta;
             CY += CY_beta * Beta;
             break;
           }
@@ -116,6 +135,7 @@ void uiuc_coef_sideforce()
               }
             /* CY_p must be mulitplied by b/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CY_p_save = CY_p * P_body * b_2U;
             CY += CY_p * P_body * b_2U;
             break;
           }
@@ -127,6 +147,7 @@ void uiuc_coef_sideforce()
               }
             /* CY_r must be mulitplied by b/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           CY_r_save = CY_r * R_body * b_2U;
             CY += CY_r * R_body * b_2U;
             break;
           }
@@ -136,6 +157,7 @@ void uiuc_coef_sideforce()
               {
                 CY_da = uiuc_ice_filter(CY_da_clean,kCY_da);
               }
+           CY_da_save = CY_da * aileron;
             CY += CY_da * aileron;
             break;
           }
@@ -145,6 +167,7 @@ void uiuc_coef_sideforce()
               {
                 CY_dr = uiuc_ice_filter(CY_dr_clean,kCY_dr);
               }
+           CY_dr_save = CY_dr * rudder;
             CY += CY_dr * rudder;
             break;
           }
@@ -154,6 +177,7 @@ void uiuc_coef_sideforce()
               {
                 CY_dra = uiuc_ice_filter(CY_dra_clean,kCY_dra);
               }
+           CY_dra_save = CY_dra * rudder * Alpha;
             CY += CY_dra * rudder * Alpha;
             break;
           }
@@ -163,6 +187,7 @@ void uiuc_coef_sideforce()
               {
                 CY_bdot = uiuc_ice_filter(CY_bdot_clean,kCY_bdot);
               }
+           CY_bdot_save = CY_bdot * Beta_dot * b_2U;
             CY += CY_bdot * Beta_dot * b_2U;
             break;
           }
@@ -190,7 +215,144 @@ void uiuc_coef_sideforce()
             CY += CYfbetadrI;
             break;
           }
-        };
+        case CYfabetaf_flag:
+          {
+           if (CYfabetaf_nice == 1)
+             CYfabetafI = uiuc_3Dinterp_quick(CYfabetaf_fArray,
+                                              CYfabetaf_aArray_nice,
+                                              CYfabetaf_bArray_nice,
+                                              CYfabetaf_CYArray,
+                                              CYfabetaf_na_nice,
+                                              CYfabetaf_nb_nice,
+                                              CYfabetaf_nf,
+                                              flap_pos,
+                                              Alpha,
+                                              Beta);
+           else
+             CYfabetafI = uiuc_3Dinterpolation(CYfabetaf_fArray,
+                                               CYfabetaf_aArray,
+                                               CYfabetaf_betaArray,
+                                               CYfabetaf_CYArray,
+                                               CYfabetaf_nAlphaArray,
+                                               CYfabetaf_nbeta,
+                                               CYfabetaf_nf,
+                                               flap_pos,
+                                               Alpha,
+                                               Beta);
+            CY += CYfabetafI;
+            break;
+          }
+        case CYfadaf_flag:
+          {
+           if (CYfadaf_nice == 1)
+             CYfadafI = uiuc_3Dinterp_quick(CYfadaf_fArray,
+                                            CYfadaf_aArray_nice,
+                                            CYfadaf_daArray_nice,
+                                            CYfadaf_CYArray,
+                                            CYfadaf_na_nice,
+                                            CYfadaf_nda_nice,
+                                            CYfadaf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            aileron);
+           else
+             CYfadafI = uiuc_3Dinterpolation(CYfadaf_fArray,
+                                             CYfadaf_aArray,
+                                             CYfadaf_daArray,
+                                             CYfadaf_CYArray,
+                                             CYfadaf_nAlphaArray,
+                                             CYfadaf_nda,
+                                             CYfadaf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             aileron);
+            CY += CYfadafI;
+            break;
+          }
+        case CYfadrf_flag:
+          {
+           if (CYfadrf_nice == 1)
+             CYfadrfI = uiuc_3Dinterp_quick(CYfadrf_fArray,
+                                            CYfadrf_aArray_nice,
+                                            CYfadrf_drArray_nice,
+                                            CYfadrf_CYArray,
+                                            CYfadrf_na_nice,
+                                            CYfadrf_ndr_nice,
+                                            CYfadrf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            rudder);
+           else
+             CYfadrfI = uiuc_3Dinterpolation(CYfadrf_fArray,
+                                             CYfadrf_aArray,
+                                             CYfadrf_drArray,
+                                             CYfadrf_CYArray,
+                                             CYfadrf_nAlphaArray,
+                                             CYfadrf_ndr,
+                                             CYfadrf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             rudder);
+            CY += CYfadrfI;
+            break;
+         }
+        case CYfapf_flag:
+         {
+           p_nondim = P_body * b_2U;
+           if (CYfapf_nice == 1)
+             CYfapfI = uiuc_3Dinterp_quick(CYfapf_fArray,
+                                           CYfapf_aArray_nice,
+                                           CYfapf_pArray_nice,
+                                           CYfapf_CYArray,
+                                           CYfapf_na_nice,
+                                           CYfapf_np_nice,
+                                           CYfapf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           p_nondim);
+           else
+             CYfapfI = uiuc_3Dinterpolation(CYfapf_fArray,
+                                            CYfapf_aArray,
+                                            CYfapf_pArray,
+                                            CYfapf_CYArray,
+                                            CYfapf_nAlphaArray,
+                                            CYfapf_np,
+                                            CYfapf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            p_nondim);
+            CY += CYfapfI;
+            break;
+          }
+       case CYfarf_flag:
+          {
+           r_nondim = R_body * b_2U;
+           if (CYfarf_nice == 1)
+             CYfarfI = uiuc_3Dinterp_quick(CYfarf_fArray,
+                                           CYfarf_aArray_nice,
+                                           CYfarf_rArray_nice,
+                                           CYfarf_CYArray,
+                                           CYfarf_na_nice,
+                                           CYfarf_nr_nice,
+                                           CYfarf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           r_nondim);
+           else
+             CYfarfI = uiuc_3Dinterpolation(CYfarf_fArray,
+                                            CYfarf_aArray,
+                                            CYfarf_rArray,
+                                            CYfarf_CYArray,
+                                            CYfarf_nAlphaArray,
+                                            CYfarf_nr,
+                                            CYfarf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            r_nondim);
+            CY += CYfarfI;
+            break;
+          }
+       };
     } // end CY map
   
   return;
index 772dad562969de2ef4efefb01b9229bc1f4fe8d3..fae0c19c2aae2522ee19678fab7908b3f5462e00 100644 (file)
@@ -5,6 +5,7 @@
 #include "uiuc_aircraft.h"
 #include "uiuc_1Dinterpolation.h"
 #include "uiuc_2Dinterpolation.h"
+#include "uiuc_3Dinterpolation.h"
 #include "uiuc_ice.h"
 #include <FDM/LaRCsim/ls_generic.h>
 
index 5bef09adbc7c18f2e71217b95812cbf4c632b114..5753584e6d90d6df3af560cf19bab9da4391ff61 100644 (file)
 ----------------------------------------------------------------------
 
  HISTORY:      04/15/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cnfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (Cnfxxf).  Zero flap vairables removed.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added uiuc_3Dinterp_quick() function
+                           for a quicker 3D interpolation.  Takes
+                           advantage of "nice" data.
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -51,6 +63,8 @@
  CALLS TO:     uiuc_1Dinterpolation
                uiuc_2Dinterpolation
                uiuc_ice_filter
+              uiuc_3Dinterpolation
+              uiuc_3Dinterp_quick
 
 ----------------------------------------------------------------------
 
@@ -80,7 +94,10 @@ void uiuc_coef_yaw()
   string linetoken1;
   string linetoken2;
   stack command_list;
-  
+
+  double p_nondim;
+  double r_nondim;
+
   command_list = aeroYawParts -> getCommands();
   
   for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
@@ -96,6 +113,7 @@ void uiuc_coef_yaw()
               {
                 Cno = uiuc_ice_filter(Cno_clean,kCno);
               }
+           Cno_save = Cno;
             Cn += Cno;
             break;
           }
@@ -105,6 +123,7 @@ void uiuc_coef_yaw()
               {
                 Cn_beta = uiuc_ice_filter(Cn_beta_clean,kCn_beta);
               }
+           Cn_beta_save = Cn_beta * Beta;
             Cn += Cn_beta * Beta;
             break;
           }
@@ -116,6 +135,7 @@ void uiuc_coef_yaw()
               }
             /* Cn_p must be mulitplied by b/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           Cn_p_save = Cn_p * P_body * b_2U;
             Cn += Cn_p * P_body * b_2U;
             break;
           }
@@ -127,6 +147,7 @@ void uiuc_coef_yaw()
               }
             /* Cn_r must be mulitplied by b/2U 
                (see Roskam Control book, Part 1, pg. 147) */
+           Cn_r_save = Cn_r * R_body * b_2U;
             Cn += Cn_r * R_body * b_2U;
             break;
           }
@@ -136,6 +157,7 @@ void uiuc_coef_yaw()
               {
                 Cn_da = uiuc_ice_filter(Cn_da_clean,kCn_da);
               }
+           Cn_da_save = Cn_da * aileron;
             Cn += Cn_da * aileron;
             break;
           }
@@ -145,6 +167,7 @@ void uiuc_coef_yaw()
               {
                 Cn_dr = uiuc_ice_filter(Cn_dr_clean,kCn_dr);
               }
+           Cn_dr_save = Cn_dr * rudder;
             Cn += Cn_dr * rudder;
             break;
           }
@@ -154,6 +177,7 @@ void uiuc_coef_yaw()
               {
                 Cn_q = uiuc_ice_filter(Cn_q_clean,kCn_q);
               }
+           Cn_q_save = Cn_q * Q_body * cbar_2U;
             Cn += Cn_q * Q_body * cbar_2U;
             break;
           }
@@ -163,6 +187,7 @@ void uiuc_coef_yaw()
               {
                 Cn_b3 = uiuc_ice_filter(Cn_b3_clean,kCn_b3);
               }
+           Cn_b3_save = Cn_b3 * Beta * Beta * Beta;
             Cn += Cn_b3 * Beta * Beta * Beta;
             break;
           }
@@ -190,6 +215,143 @@ void uiuc_coef_yaw()
             Cn += CnfbetadrI;
             break;
           }
+        case Cnfabetaf_flag:
+          {
+           if (Cnfabetaf_nice == 1)
+             CnfabetafI = uiuc_3Dinterp_quick(Cnfabetaf_fArray,
+                                              Cnfabetaf_aArray_nice,
+                                              Cnfabetaf_bArray_nice,
+                                              Cnfabetaf_CnArray,
+                                              Cnfabetaf_na_nice,
+                                              Cnfabetaf_nb_nice,
+                                              Cnfabetaf_nf,
+                                              flap_pos,
+                                              Alpha,
+                                              Beta);
+           else
+             CnfabetafI = uiuc_3Dinterpolation(Cnfabetaf_fArray,
+                                               Cnfabetaf_aArray,
+                                               Cnfabetaf_betaArray,
+                                               Cnfabetaf_CnArray,
+                                               Cnfabetaf_nAlphaArray,
+                                               Cnfabetaf_nbeta,
+                                               Cnfabetaf_nf,
+                                               flap_pos,
+                                               Alpha,
+                                               Beta);
+            Cn += CnfabetafI;
+            break;
+          }
+        case Cnfadaf_flag:
+          {
+           if (Cnfadaf_nice == 1)
+             CnfadafI = uiuc_3Dinterp_quick(Cnfadaf_fArray,
+                                            Cnfadaf_aArray_nice,
+                                            Cnfadaf_daArray_nice,
+                                            Cnfadaf_CnArray,
+                                            Cnfadaf_na_nice,
+                                            Cnfadaf_nda_nice,
+                                            Cnfadaf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            aileron);
+           else
+             CnfadafI = uiuc_3Dinterpolation(Cnfadaf_fArray,
+                                             Cnfadaf_aArray,
+                                             Cnfadaf_daArray,
+                                             Cnfadaf_CnArray,
+                                             Cnfadaf_nAlphaArray,
+                                             Cnfadaf_nda,
+                                             Cnfadaf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             aileron);
+            Cn += CnfadafI;
+            break;
+          }
+        case Cnfadrf_flag:
+          {
+           if (Cnfadrf_nice == 1)
+             CnfadrfI = uiuc_3Dinterp_quick(Cnfadrf_fArray,
+                                            Cnfadrf_aArray_nice,
+                                            Cnfadrf_drArray_nice,
+                                            Cnfadrf_CnArray,
+                                            Cnfadrf_na_nice,
+                                            Cnfadrf_ndr_nice,
+                                            Cnfadrf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            rudder);
+           else
+             CnfadrfI = uiuc_3Dinterpolation(Cnfadrf_fArray,
+                                             Cnfadrf_aArray,
+                                             Cnfadrf_drArray,
+                                             Cnfadrf_CnArray,
+                                             Cnfadrf_nAlphaArray,
+                                             Cnfadrf_ndr,
+                                             Cnfadrf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             rudder);
+            Cn += CnfadrfI;
+            break;
+          }
+        case Cnfapf_flag:
+          {
+           p_nondim = P_body * b_2U;
+           if (Cnfapf_nice == 1)
+             CnfapfI = uiuc_3Dinterp_quick(Cnfapf_fArray,
+                                           Cnfapf_aArray_nice,
+                                           Cnfapf_pArray_nice,
+                                           Cnfapf_CnArray,
+                                           Cnfapf_na_nice,
+                                           Cnfapf_np_nice,
+                                           Cnfapf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           p_nondim);
+           else
+             CnfapfI = uiuc_3Dinterpolation(Cnfapf_fArray,
+                                            Cnfapf_aArray,
+                                            Cnfapf_pArray,
+                                            Cnfapf_CnArray,
+                                            Cnfapf_nAlphaArray,
+                                            Cnfapf_np,
+                                            Cnfapf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            p_nondim);
+            Cn += CnfapfI;
+            break;
+          }
+        case Cnfarf_flag:
+          {
+           r_nondim = R_body * b_2U;
+           if (Cnfarf_nice == 1)
+             CnfarfI = uiuc_3Dinterp_quick(Cnfarf_fArray,
+                                           Cnfarf_aArray_nice,
+                                           Cnfarf_rArray_nice,
+                                           Cnfarf_CnArray,
+                                           Cnfarf_na_nice,
+                                           Cnfarf_nr_nice,
+                                           Cnfarf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           r_nondim);
+           else
+             CnfarfI = uiuc_3Dinterpolation(Cnfarf_fArray,
+                                            Cnfarf_aArray,
+                                            Cnfarf_rArray,
+                                            Cnfarf_CnArray,
+                                            Cnfarf_nAlphaArray,
+                                            Cnfarf_nr,
+                                            Cnfarf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            r_nondim);
+            Cn += CnfarfI;
+            break;
+          }
         };
     } // end Cn map
 
index 8ab3055c25990bf7074b07f7d29f281240b7d042..dae420a7a4b7d274dab6164a6d79d4a433746677 100644 (file)
@@ -5,6 +5,7 @@
 #include "uiuc_aircraft.h"
 #include "uiuc_1Dinterpolation.h"
 #include "uiuc_2Dinterpolation.h"
+#include "uiuc_3Dinterpolation.h"
 #include "uiuc_ice.h"
 #include <FDM/LaRCsim/ls_generic.h>
 
diff --git a/src/FDM/UIUCModel/uiuc_initializemaps1.cpp b/src/FDM/UIUCModel/uiuc_initializemaps1.cpp
deleted file mode 100644 (file)
index 91ac760..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/********************************************************************** 
- * 
- * FILENAME:     uiuc_initializemaps1.cpp 
- *
- * ---------------------------------------------------------------------- 
- *
- * DESCRIPTION:  Initializes the maps for various keywords 
- *
- * ----------------------------------------------------------------------
- * 
- * STATUS:       alpha version
- *
- * ----------------------------------------------------------------------
- * 
- * REFERENCES:   
- * 
- * ----------------------------------------------------------------------
- * 
- * HISTORY:      01/26/2000   initial release
- * 
- * ----------------------------------------------------------------------
- * 
- * AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
- * 
- * ----------------------------------------------------------------------
- * 
- * VARIABLES:
- * 
- * ----------------------------------------------------------------------
- * 
- * INPUTS:       *
- * 
- * ----------------------------------------------------------------------
- * 
- * OUTPUTS:      *
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLED BY:    uiuc_wrapper.cpp
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLS TO:     *
- * 
- * ----------------------------------------------------------------------
- * 
- * COPYRIGHT:    (C) 2000 by Michael Selig
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA or view http://www.gnu.org/copyleft/gpl.html.
- * 
- ***********************************************************************/
-
-
-#include "uiuc_initializemaps.h"
-
-void uiuc_initializemaps1 ()
-{
-        Keyword_map["init"] = init_flag;
-        Keyword_map["geometry"] = geometry_flag;
-        Keyword_map["controlSurface"] = controlSurface_flag;
-        Keyword_map["mass"] = mass_flag;
-        Keyword_map["engine"] = engine_flag;
-        Keyword_map["CD"] = CD_flag;
-        Keyword_map["CL"] = CL_flag;
-        Keyword_map["Cm"] = Cm_flag;
-        Keyword_map["CY"] = CY_flag;
-        Keyword_map["Cl"] = Cl_flag;
-        Keyword_map["Cn"] = Cn_flag;
-        Keyword_map["gear"] = gear_flag;
-        Keyword_map["ice"] = ice_flag;
-        Keyword_map["record"] = record_flag;
-
-
-
-        init_map["Dx_pilot"] = Dx_pilot_flag;
-        init_map["Dy_pilot"] = Dy_pilot_flag;
-        init_map["Dz_pilot"] = Dz_pilot_flag;
-        init_map["V_north"] = V_north_flag;
-        init_map["V_east"] = V_east_flag;
-        init_map["V_down"] = V_down_flag;
-        init_map["P_body"] = P_body_flag;
-        init_map["Q_body"] = Q_body_flag;
-        init_map["R_body"] = R_body_flag;
-        init_map["Phi"] = Phi_flag;
-        init_map["Theta"] = Theta_flag;
-        init_map["Psi"] = Psi_flag;
-
-
-        geometry_map["bw"] = bw_flag;
-        geometry_map["cbar"] = cbar_flag;
-        geometry_map["Sw"] = Sw_flag;
-
-
-        controlSurface_map["de"] = de_flag;
-        controlSurface_map["da"] = da_flag;
-        controlSurface_map["dr"] = dr_flag;
-
-
-        mass_map["Mass"] = Mass_flag;
-        mass_map["I_xx"] = I_xx_flag;
-        mass_map["I_yy"] = I_yy_flag;
-        mass_map["I_zz"] = I_zz_flag;
-        mass_map["I_xz"] = I_xz_flag;
-
-
-        engine_map["simpleSingle"] = simpleSingle_flag;
-        engine_map["c172"] = c172_flag;
-
-
-        CD_map["CDo"] = CDo_flag;
-        CD_map["CDK"] = CDK_flag;
-        CD_map["CD_a"] = CD_a_flag;
-        CD_map["CD_de"] = CD_de_flag;
-        CD_map["CDfa"] = CDfa_flag;
-        CD_map["CDfade"] = CDfade_flag;
-}
-
-// end uiuc_initializemaps.cpp
diff --git a/src/FDM/UIUCModel/uiuc_initializemaps2.cpp b/src/FDM/UIUCModel/uiuc_initializemaps2.cpp
deleted file mode 100644 (file)
index 6315cef..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/********************************************************************** 
- * 
- * FILENAME:     uiuc_initializemaps.cpp 
- *
- * ---------------------------------------------------------------------- 
- *
- * DESCRIPTION:  Initializes the maps for various keywords 
- *
- * ----------------------------------------------------------------------
- * 
- * STATUS:       alpha version
- *
- * ----------------------------------------------------------------------
- * 
- * REFERENCES:   
- * 
- * ----------------------------------------------------------------------
- * 
- * HISTORY:      01/26/2000   initial release
- * 
- * ----------------------------------------------------------------------
- * 
- * AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
- * 
- * ----------------------------------------------------------------------
- * 
- * VARIABLES:
- * 
- * ----------------------------------------------------------------------
- * 
- * INPUTS:       *
- * 
- * ----------------------------------------------------------------------
- * 
- * OUTPUTS:      *
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLED BY:    uiuc_wrapper.cpp
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLS TO:     *
- * 
- * ----------------------------------------------------------------------
- * 
- * COPYRIGHT:    (C) 2000 by Michael Selig
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA or view http://www.gnu.org/copyleft/gpl.html.
- * 
- ***********************************************************************/
-
-
-#include "uiuc_initializemaps.h"
-
-void uiuc_initializemaps2 ()
-{
-        CL_map["CLo"] = CLo_flag;
-        CL_map["CL_a"] = CL_a_flag;
-        CL_map["CL_adot"] = CL_adot_flag;
-        CL_map["CL_q"] = CL_q_flag;
-        CL_map["CL_de"] = CL_de_flag;
-        CL_map["CLfa"] = CLfa_flag;
-        CL_map["CLfade"] = CLfade_flag; 
-
-
-        Cm_map["Cmo"] = Cmo_flag;
-        Cm_map["Cm_a"] = Cm_a_flag;
-        Cm_map["Cm_adot"] = Cm_adot_flag;
-        Cm_map["Cm_q"] = Cm_q_flag;
-        Cm_map["Cm_de"] = Cm_de_flag;
-        Cm_map["Cmfade"] = Cmfade_flag;
-
-
-        CY_map["CYo"] = CYo_flag;
-        CY_map["CY_beta"] = CY_beta_flag;
-        CY_map["CY_p"] = CY_p_flag;
-        CY_map["CY_r"] = CY_r_flag;
-        CY_map["CY_da"] = CY_da_flag;
-        CY_map["CY_dr"] = CY_dr_flag;
-        CY_map["CYfada"] = CYfada_flag;
-        CY_map["CYfbetadr"] = CYfbetadr_flag;
-
-
-        Cl_map["Clo"] = Clo_flag;
-        Cl_map["Cl_beta"] = Cl_beta_flag;
-        Cl_map["Cl_p"] = Cl_p_flag;
-        Cl_map["Cl_r"] = Cl_r_flag;
-        Cl_map["Cl_da"] = Cl_da_flag;
-        Cl_map["Cl_dr"] = Cl_dr_flag;
-        Cl_map["Clfada"] = Clfada_flag;
-        Cl_map["Clfbetadr"] = Clfbetadr_flag;
-        
-        Cn_map["Cno"] = Cno_flag;
-        Cn_map["Cn_beta"] = Cn_beta_flag;
-        Cn_map["Cn_p"] = Cn_p_flag;
-        Cn_map["Cn_r"] = Cn_r_flag;
-        Cn_map["Cn_da"] = Cn_da_flag;
-        Cn_map["Cn_dr"] = Cn_dr_flag;
-        Cn_map["Cnfada"] = Cnfada_flag;
-        Cn_map["Cnfbetadr"] = Cnfbetadr_flag;
-}
-
-// end uiuc_initializemaps.cpp
diff --git a/src/FDM/UIUCModel/uiuc_initializemaps3.cpp b/src/FDM/UIUCModel/uiuc_initializemaps3.cpp
deleted file mode 100644 (file)
index e4ee3be..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/********************************************************************** 
- * 
- * FILENAME:     uiuc_initializemaps.cpp 
- *
- * ---------------------------------------------------------------------- 
- *
- * DESCRIPTION:  Initializes the maps for various keywords 
- *
- * ----------------------------------------------------------------------
- * 
- * STATUS:       alpha version
- *
- * ----------------------------------------------------------------------
- * 
- * REFERENCES:   
- * 
- * ----------------------------------------------------------------------
- * 
- * HISTORY:      01/26/2000   initial release
- * 
- * ----------------------------------------------------------------------
- * 
- * AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
- * 
- * ----------------------------------------------------------------------
- * 
- * VARIABLES:
- * 
- * ----------------------------------------------------------------------
- * 
- * INPUTS:       *
- * 
- * ----------------------------------------------------------------------
- * 
- * OUTPUTS:      *
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLED BY:    uiuc_wrapper.cpp
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLS TO:     *
- * 
- * ----------------------------------------------------------------------
- * 
- * COPYRIGHT:    (C) 2000 by Michael Selig
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA or view http://www.gnu.org/copyleft/gpl.html.
- * 
- ***********************************************************************/
-
-
-#include "uiuc_initializemaps.h"
-
-void uiuc_initializemaps3 ()
-{
-        ice_map["iceTime"] = iceTime_flag;
-        ice_map["transientTime"] =  transientTime_flag;
-        ice_map["eta_final"] = eta_final_flag;
-        ice_map["kCDo"] = kCDo_flag;
-        ice_map["kCDK"] = kCDK_flag;
-        ice_map["kCD_a"] = kCD_a_flag;
-        ice_map["kCD_de"] = kCD_de_flag;
-        ice_map["kCLo"] = kCLo_flag;
-        ice_map["kCL_a"] = kCL_a_flag;
-        ice_map["kCL_adot"] = kCL_adot_flag;
-        ice_map["kCL_q"] = kCL_q_flag;
-        ice_map["kCL_de"] = kCL_de_flag;
-        ice_map["kCmo"] = kCmo_flag;
-        ice_map["kCm_a"] = kCm_a_flag;
-        ice_map["kCm_adot"] = kCm_adot_flag;
-        ice_map["kCm_q"] = kCm_q_flag;
-        ice_map["kCm_de"] = kCm_de_flag;
-        ice_map["kCYo"] = kCYo_flag;
-        ice_map["kCY_beta"] = kCY_beta_flag;
-        ice_map["kCY_p"] = kCY_p_flag;
-        ice_map["kCY_r"] = kCY_r_flag;
-        ice_map["kCY_da"] = kCY_da_flag;
-        ice_map["kCY_dr"] = kCY_dr_flag;
-        ice_map["kClo"] = kClo_flag;
-        ice_map["kCl_beta"] = kCl_beta_flag;
-        ice_map["kCl_p"] = kCl_p_flag;
-        ice_map["kCl_r"] = kCl_r_flag;
-        ice_map["kCl_da"] = kCl_da_flag;
-        ice_map["kCl_dr"] = kCl_dr_flag;
-        ice_map["kCno"] = kCno_flag;
-        ice_map["kCn_beta"] = kCn_beta_flag;
-        ice_map["kCn_p"] = kCn_p_flag;
-        ice_map["kCn_r"] = kCn_r_flag;
-        ice_map["kCn_da"] = kCn_da_flag;
-        ice_map["kCn_dr"] = kCn_dr_flag;
-}
-
-// end uiuc_initializemaps.cpp
diff --git a/src/FDM/UIUCModel/uiuc_initializemaps4.cpp b/src/FDM/UIUCModel/uiuc_initializemaps4.cpp
deleted file mode 100644 (file)
index 6a72775..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/********************************************************************** 
- * 
- * FILENAME:     uiuc_initializemaps.cpp 
- *
- * ---------------------------------------------------------------------- 
- *
- * DESCRIPTION:  Initializes the maps for various keywords 
- *
- * ----------------------------------------------------------------------
- * 
- * STATUS:       alpha version
- *
- * ----------------------------------------------------------------------
- * 
- * REFERENCES:   
- * 
- * ----------------------------------------------------------------------
- * 
- * HISTORY:      01/26/2000   initial release
- * 
- * ----------------------------------------------------------------------
- * 
- * AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
- * 
- * ----------------------------------------------------------------------
- * 
- * VARIABLES:
- * 
- * ----------------------------------------------------------------------
- * 
- * INPUTS:       *
- * 
- * ----------------------------------------------------------------------
- * 
- * OUTPUTS:      *
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLED BY:    uiuc_wrapper.cpp
- * 
- * ----------------------------------------------------------------------
- * 
- * CALLS TO:     *
- * 
- * ----------------------------------------------------------------------
- * 
- * COPYRIGHT:    (C) 2000 by Michael Selig
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA or view http://www.gnu.org/copyleft/gpl.html.
- * 
- ***********************************************************************/
-
-
-#include "uiuc_initializemaps.h"
-
-void uiuc_initializemaps4 ()
-{
-        record_map["Dx_pilot"] =                      Dx_pilot_record         ;
-        record_map["Dy_pilot"] =                      Dy_pilot_record         ;
-        record_map["Dz_pilot"] =                      Dz_pilot_record         ;
-        record_map["V_north"] =                       V_north_record          ;
-        record_map["V_east"] =                        V_east_record           ;
-        record_map["V_down"] =                        V_down_record           ;
-        record_map["V_rel_wind"] =                    V_rel_wind_record       ;
-        record_map["Dynamic_pressure"] =              Dynamic_pressure_record ;
-        record_map["Alpha"] =                         Alpha_record            ;
-        record_map["Alpha_dot"] =                     Alpha_dot_record        ;
-        record_map["Beta"] =                          Beta_record             ;
-        record_map["Beta_dot"] =                      Beta_dot_record         ;
-        record_map["Gamma"] =                         Gamma_record            ;
-        record_map["P_body"] =                        P_body_record           ;
-        record_map["Q_body"] =                        Q_body_record           ;
-        record_map["R_body"] =                        R_body_record           ;
-        record_map["Phi"] =                           Phi_record              ;
-        record_map["Theta"] =                         Theta_record            ;
-        record_map["Psi"] =                           Psi_record              ;
-        record_map["Theta_dot"] =                     Theta_dot_record        ;
-        record_map["density"] =                       density_record          ;
-        record_map["Mass"] =                          Mass_record             ;
-        record_map["Simtime"] =                       Simtime_record          ;
-        record_map["dt"] =                            dt_record               ;
-        record_map["elevator"] =                      elevator_record         ;
-        record_map["aileron"] =                       aileron_record          ;
-        record_map["rudder"] =                        rudder_record           ;
-        record_map["CD"] =                            CD_record               ;
-        record_map["CDfaI"] =                         CDfaI_record            ;
-        record_map["CDfadeI"] =                       CDfadeI_record          ;
-        record_map["CL"] =                            CL_record               ;
-        record_map["CLfaI"] =                         CLfaI_record            ;
-        record_map["CLfadeI"] =                       CLfadeI_record          ;
-        record_map["Cm"] =                            Cm_record               ;
-        record_map["CmfadeI"] =                       CmfadeI_record          ;
-        record_map["CY"] =                            CY_record               ;
-        record_map["CYfadaI"] =                       CYfadaI_record          ;
-        record_map["CYfbetadrI"] =                    CYfbetadrI_record       ;
-        record_map["Cl"] =                            Cl_record               ;
-        record_map["ClfadaI"] =                       ClfadaI_record          ;
-        record_map["ClfbetadrI"] =                    ClfbetadrI_record       ;
-        record_map["Cn"] =                            Cn_record               ;
-        record_map["CnfadaI"] =                       CnfadaI_record          ;
-        record_map["CnfbetadrI"] =                    CnfbetadrI_record       ;
-        record_map["F_X_wind"] =                      F_X_wind_record         ;
-        record_map["F_Y_wind"] =                      F_Y_wind_record         ;
-        record_map["F_Z_wind"] =                      F_Z_wind_record         ;
-        record_map["F_X_aero"] =                      F_X_aero_record         ;
-        record_map["F_Y_aero"] =                      F_Y_aero_record         ;
-        record_map["F_Z_aero"] =                      F_Z_aero_record         ;
-        record_map["F_X_engine"] =                    F_X_engine_record       ;
-        record_map["F_Y_engine"] =                    F_Y_engine_record       ;
-        record_map["F_Z_engine"] =                    F_Z_engine_record       ;
-        record_map["F_X_gear"] =                      F_X_gear_record         ;
-        record_map["F_Y_gear"] =                      F_Y_gear_record         ;
-        record_map["F_Z_gear"] =                      F_Z_gear_record         ;
-        record_map["F_X"] =                           F_X_record              ;
-        record_map["F_Y"] =                           F_Y_record              ;
-        record_map["F_Z"] =                           F_Z_record              ;
-        record_map["M_l_aero"] =                      M_l_aero_record         ;
-        record_map["M_m_aero"] =                      M_m_aero_record         ;
-        record_map["M_n_aero"] =                      M_n_aero_record         ;
-        record_map["M_l_engine"] =                    M_l_engine_record       ;
-        record_map["M_m_engine"] =                    M_m_engine_record       ;
-        record_map["M_n_engine"] =                    M_n_engine_record       ;
-        record_map["M_l_gear"] =                      M_l_gear_record         ;
-        record_map["M_m_gear"] =                      M_m_gear_record         ;
-        record_map["M_n_gear"] =                      M_n_gear_record         ;
-        record_map["M_l_rp"] =                        M_l_rp_record           ;
-        record_map["M_m_rp"] =                        M_m_rp_record           ;
-        record_map["M_n_rp"] =                        M_n_rp_record           ;
-}
-
-// end uiuc_initializemaps.cpp
index e7d427c6af9af00e43f3e26bee5297c4b663723d..acd13a2c12e84e41c3beac7913dfee1d07ccd06e 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      04/08/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CXfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CXfxxf).  Zero flap vairables removed.
 
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
+
 ----------------------------------------------------------------------
  
  VARIABLES:
@@ -91,6 +98,9 @@ void uiuc_map_CD()
   CD_map["CX_dr"]                 =      CX_dr_flag                 ;
   CD_map["CX_df"]                 =      CX_df_flag                 ;
   CD_map["CX_adf"]                =      CX_adf_flag                ;
+  CD_map["CXfabetaf"]             =      CXfabetaf_flag             ;
+  CD_map["CXfadef"]               =      CXfadef_flag               ;
+  CD_map["CXfaqf"]                =      CXfaqf_flag                ;
 }
 
 // end uiuc_map_CD.cpp
index 78dcc0590fb494cadbbd51df20583bd404b3b989..e11fe9a74e26732cf2b59e2e7be06dea398862c2 100644 (file)
  
  HISTORY:      04/08/2000   initial release
                06/18/2001   Added CZfa
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CZfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CZfxxf).  Zero flap vairables removed.
 
 ----------------------------------------------------------------------
  
@@ -91,6 +97,9 @@ void uiuc_map_CL()
   CL_map["CZ_df"]                 =      CZ_df_flag                 ;
   CL_map["CZ_adf"]                =      CZ_adf_flag                ;
   CL_map["CZfa"]                  =      CZfa_flag                  ;
+  CL_map["CZfabetaf"]             =      CZfabetaf_flag             ;
+  CL_map["CZfadef"]               =      CZfadef_flag               ;
+  CL_map["CZfaqf"]                =      CZfaqf_flag                ;
 }
 
 // end uiuc_map_CL.cpp
index 6664e2fd6d0ce5e0056e2fdde29071bf9de181af..914e0763e695e5ecf855015a9eba93fafe7d0c31 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      04/08/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CYfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CYfxxf).  Zero flap vairables removed.
 
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
  
 ----------------------------------------------------------------------
  
@@ -78,6 +85,11 @@ void uiuc_map_CY()
   CY_map["CY_bdot"]               =      CY_bdot_flag               ;
   CY_map["CYfada"]                =      CYfada_flag                ;
   CY_map["CYfbetadr"]             =      CYfbetadr_flag             ;
+  CY_map["CYfabetaf"]             =      CYfabetaf_flag             ;
+  CY_map["CYfadaf"]               =      CYfadaf_flag               ;
+  CY_map["CYfadrf"]               =      CYfadrf_flag               ;
+  CY_map["CYfapf"]                =      CYfapf_flag                ;
+  CY_map["CYfarf"]                =      CYfarf_flag                ;
 }
 
 // end uiuc_map_CY.cpp
index 4cb997a71627bbad9bae2055195850ce8e838f8d..8af3622f80dcf7139ede06c89efd6c0e9f6a819c 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      04/08/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cmfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (Cmfxxf).  Zero flap vairables removed.
 
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
+
 ----------------------------------------------------------------------
  
  VARIABLES:
@@ -82,6 +89,9 @@ void uiuc_map_Cm()
   Cm_map["Cmfade"]                =      Cmfade_flag                ;
   Cm_map["Cmfdf"]                 =      Cmfdf_flag                 ;
   Cm_map["Cmfadf"]                =      Cmfadf_flag                ;
+  Cm_map["Cmfabetaf"]             =      Cmfabetaf_flag             ;
+  Cm_map["Cmfadef"]               =      Cmfadef_flag               ;
+  Cm_map["Cmfaqf"]                =      Cmfaqf_flag                ;
 }
 
 // end uiuc_map_Cm.cpp
index a18bd2a9149ea81aac499fc5b41d52b2b3dd27c3..b569ff0945704b572404872a3d243ea1e91348d8 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      04/08/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cnfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CXfxxf).  Zero flap vairables removed.
 
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
+
 ----------------------------------------------------------------------
  
  VARIABLES:
@@ -78,6 +85,11 @@ void uiuc_map_Cn()
   Cn_map["Cn_b3"]                 =      Cn_b3_flag                 ;
   Cn_map["Cnfada"]                =      Cnfada_flag                ;
   Cn_map["Cnfbetadr"]             =      Cnfbetadr_flag             ;
+  Cn_map["Cnfabetaf"]             =      Cnfabetaf_flag             ;
+  Cn_map["Cnfadaf"]               =      Cnfadaf_flag               ;
+  Cn_map["Cnfadrf"]               =      Cnfadrf_flag               ;
+  Cn_map["Cnfapf"]                =      Cnfapf_flag                ;
+  Cn_map["Cnfarf"]                =      Cnfarf_flag                ;
 }
 
 // end uiuc_map_Cn.cpp
index 561039719cbd6b2f40dba3ed536423f0f2905dea..7792dc1192c991a1c760bfe58f6b98a555230d04 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      04/08/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Clfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CXfxxf).  Zero flap vairables removed.
 
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
+
 ----------------------------------------------------------------------
  
  VARIABLES:
@@ -77,6 +84,11 @@ void uiuc_map_Croll()
   Cl_map["Cl_daa"]                =      Cl_daa_flag                ;
   Cl_map["Clfada"]                =      Clfada_flag                ;
   Cl_map["Clfbetadr"]             =      Clfbetadr_flag             ;
+  Cl_map["Clfabetaf"]             =      Clfabetaf_flag             ;
+  Cl_map["Clfadaf"]               =      Clfadaf_flag               ;
+  Cl_map["Clfadrf"]               =      Clfadrf_flag               ;
+  Cl_map["Clfapf"]                =      Clfapf_flag                ;
+  Cl_map["Clfarf"]                =      Clfarf_flag                ;
 }
 
 // end uiuc_map_Croll.cpp
index 9935d734a3533c3473f83af2eec4b96a89ba25bb..f7c17ec9fb9bff9e3bda694c804eec4fb1b40689 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      04/08/2000   initial release
-               06/18/2001   Added aileron_input, rudder_input,
+               06/18/2001   (RD) Added aileron_input, rudder_input,
                            pilot_elev_no, pilot_ail_no, and 
                            pilot_rud_no
+              11/12/2001   (RD) Added flap_max, flap_rate, and
 
 ----------------------------------------------------------------------
  
@@ -87,6 +88,8 @@ void uiuc_map_controlSurface()
   controlSurface_map["pilot_elev_no"]    = pilot_elev_no_flag       ;
   controlSurface_map["pilot_ail_no"]     = pilot_ail_no_flag        ;
   controlSurface_map["pilot_rud_no"]     = pilot_rud_no_flag        ;
+  controlSurface_map["flap_max"]         = flap_max_flag            ;
+  controlSurface_map["flap_rate"]        = flap_rate_flag           ;
 }
 
 // end uiuc_map_controlSurface.cpp
index e705f6989c7bf24e5ffa00e607b0eb8dc42fe0a2..3f6f6b40ed7a22c412f5fe6b8fd81d3709906ff9 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      06/03/2000   file creation
+               11/12/2001   (RD) Added flap_goal and flap_pos
 
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
  
 ----------------------------------------------------------------------
  
@@ -138,6 +140,8 @@ void uiuc_map_record3()
   record_map["Flap_handle"]       =      Flap_handle_record         ;
   record_map["flap"]              =      flap_record                ;
   record_map["flap_deg"  ]        =      flap_deg_record            ;
+  record_map["flap_goal"]         =      flap_goal_record           ;
+  record_map["flap_pos"]          =      flap_pos_record            ;
 }
 
 // end uiuc_map_record3.cpp
index 41ee20502118d6ec7b194aa86e621bd3e54b687a..7452973870883495e605c98704175ae3d26400a5 100644 (file)
 ----------------------------------------------------------------------
  
  HISTORY:      06/03/2000   file creation
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cxfxxf0I)
+               11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CxfxxfI).  Removed zero flap vairables
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
 
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
+
 ----------------------------------------------------------------------
  
  VARIABLES:
@@ -77,26 +86,118 @@ void uiuc_map_record4()
   record_map["CDfdfI"]            =      CDfdfI_record              ;
   record_map["CDfadfI"]           =      CDfadfI_record             ;
   record_map["CX"]                =      CX_record                  ;
+  record_map["CXfabetafI"]        =      CXfabetafI_record          ;
+  record_map["CXfadefI"]          =      CXfadefI_record            ;
+  record_map["CXfaqfI"]           =      CXfaqfI_record             ;
+  record_map["CDo_save"]          =      CDo_save_record            ;
+  record_map["CDK_save"]          =      CDK_save_record            ;
+  record_map["CD_a_save"]         =      CD_a_save_record           ;
+  record_map["CD_adot_save"]      =      CD_adot_save_record        ;
+  record_map["CD_q_save"]         =      CD_q_save_record           ;
+  record_map["CD_ih_save"]        =      CD_ih_save_record          ;
+  record_map["CD_de_save"]        =      CD_de_save_record          ;
+  record_map["CXo_save"]          =      CXo_save_record            ;
+  record_map["CXK_save"]          =      CXK_save_record            ;
+  record_map["CX_a_save"]         =      CX_a_save_record           ;
+  record_map["CX_a2_save"]        =      CX_a2_save_record          ;
+  record_map["CX_a3_save"]        =      CX_a3_save_record          ;
+  record_map["CX_adot_save"]      =      CX_adot_save_record        ;
+  record_map["CX_q_save"]         =      CX_q_save_record           ;
+  record_map["CX_de_save"]        =      CX_de_save_record          ;
+  record_map["CX_dr_save"]        =      CX_dr_save_record          ;
+  record_map["CX_df_save"]        =      CX_df_save_record          ;
+  record_map["CX_adf_save"]       =      CX_adf_save_record         ;
   record_map["CL"]                =      CL_record                  ;
   record_map["CLfaI"]             =      CLfaI_record               ;
   record_map["CLfadeI"]           =      CLfadeI_record             ;
   record_map["CLfdfI"]            =      CLfdfI_record              ;
   record_map["CLfadfI"]           =      CLfadfI_record             ;
   record_map["CZ"]                =      CZ_record                  ;
+  record_map["CZfaI"]             =      CZfaI_record               ;
+  record_map["CZfabetafI"]        =      CZfabetafI_record          ;
+  record_map["CZfadefI"]          =      CZfadefI_record            ;
+  record_map["CZfaqfI"]           =      CZfaqfI_record             ;
+  record_map["CLo_save"]          =      CLo_save_record            ;
+  record_map["CL_a_save"]         =      CL_a_save_record           ;
+  record_map["CL_adot_save"]      =      CL_adot_save_record        ;
+  record_map["CL_q_save"]         =      CL_q_save_record           ;
+  record_map["CL_ih_save"]        =      CL_ih_save_record          ;
+  record_map["CL_de_save"]        =      CL_de_save_record          ;
+  record_map["CZo_save"]          =      CZo_save_record            ;
+  record_map["CZ_a_save"]         =      CZ_a_save_record           ;
+  record_map["CZ_a2_save"]        =      CZ_a2_save_record          ;
+  record_map["CZ_a3_save"]        =      CZ_a3_save_record          ;
+  record_map["CZ_adot_save"]      =      CZ_adot_save_record        ;
+  record_map["CZ_q_save"]         =      CZ_q_save_record           ;
+  record_map["CZ_de_save"]        =      CZ_de_save_record          ;
+  record_map["CZ_deb2_save"]      =      CZ_deb2_save_record        ;
+  record_map["CZ_df_save"]        =      CZ_df_save_record          ;
+  record_map["CZ_adf_save"]       =      CZ_adf_save_record         ;
   record_map["Cm"]                =      Cm_record                  ;
   record_map["CmfaI"]             =      CmfaI_record               ;
   record_map["CmfadeI"]           =      CmfadeI_record             ;
   record_map["CmfdfI"]            =      CmfdfI_record              ;
   record_map["CmfadfI"]           =      CmfadfI_record             ;
+  record_map["CmfabetafI"]        =      CmfabetafI_record          ;
+  record_map["CmfadefI"]          =      CmfadefI_record            ;
+  record_map["CmfaqfI"]           =      CmfaqfI_record             ;
+  record_map["Cmo_save"]          =      Cmo_save_record            ;
+  record_map["Cm_a_save"]         =      Cm_a_save_record           ;
+  record_map["Cm_a2_save"]        =      Cm_a2_save_record          ;
+  record_map["Cm_adot_save"]      =      Cm_adot_save_record        ;
+  record_map["Cm_q_save"]         =      Cm_q_save_record           ;
+  record_map["Cm_ih_save"]        =      Cm_ih_save_record          ;
+  record_map["Cm_de_save"]        =      Cm_de_save_record          ;
+  record_map["Cm_b2_save"]        =      Cm_b2_save_record          ;
+  record_map["Cm_r_save"]         =      Cm_r_save_record           ;
+  record_map["Cm_df_save"]        =      Cm_df_save_record          ;
   record_map["CY"]                =      CY_record                  ;
   record_map["CYfadaI"]           =      CYfadaI_record             ;
   record_map["CYfbetadrI"]        =      CYfbetadrI_record          ;
+  record_map["CYfabetafI"]        =      CYfabetafI_record          ;
+  record_map["CYfadafI"]          =      CYfadafI_record            ;
+  record_map["CYfadrfI"]          =      CYfadrfI_record            ;
+  record_map["CYfapfI"]           =      CYfapfI_record             ;
+  record_map["CYfarfI"]           =      CYfarfI_record             ;
+  record_map["CYo_save"]          =      CYo_save_record            ;
+  record_map["CY_beta_save"]      =      CY_beta_save_record        ;
+  record_map["CY_p_save"]         =      CY_p_save_record           ;
+  record_map["CY_r_save"]         =      CY_r_save_record           ;
+  record_map["CY_da_save"]        =      CY_da_save_record          ;
+  record_map["CY_dr_save"]        =      CY_dr_save_record          ;
+  record_map["CY_dra_save"]       =      CY_dra_save_record         ;
+  record_map["CY_bdot_save"]      =      CY_bdot_save_record        ;
   record_map["Cl"]                =      Cl_record                  ;
   record_map["ClfadaI"]           =      ClfadaI_record             ;
   record_map["ClfbetadrI"]        =      ClfbetadrI_record          ;
+  record_map["ClfabetafI"]        =      ClfabetafI_record          ;
+  record_map["ClfadafI"]          =      ClfadafI_record            ;
+  record_map["ClfadrfI"]          =      ClfadrfI_record            ;
+  record_map["ClfapfI"]           =      ClfapfI_record             ;
+  record_map["ClfarfI"]           =      ClfarfI_record             ;
+  record_map["Clo_save"]          =      Clo_save_record            ;
+  record_map["Cl_beta_save"]      =      Cl_beta_save_record        ;
+  record_map["Cl_p_save"]         =      Cl_p_save_record           ;
+  record_map["Cl_r_save"]         =      Cl_r_save_record           ;
+  record_map["Cl_da_save"]        =      Cl_da_save_record          ;
+  record_map["Cl_dr_save"]        =      Cl_dr_save_record          ;
+  record_map["Cl_daa_save"]       =      Cl_daa_save_record         ;
   record_map["Cn"]                =      Cn_record                  ;
   record_map["CnfadaI"]           =      CnfadaI_record             ;
   record_map["CnfbetadrI"]        =      CnfbetadrI_record          ;
+  record_map["CnfabetafI"]        =      CnfabetafI_record          ;
+  record_map["CnfadafI"]          =      CnfadafI_record            ;
+  record_map["CnfadrfI"]          =      CnfadrfI_record            ;
+  record_map["CnfapfI"]           =      CnfapfI_record             ;
+  record_map["CnfarfI"]           =      CnfarfI_record             ;
+  record_map["Cno_save"]          =      Cno_save_record            ;
+  record_map["Cn_beta_save"]      =      Cn_beta_save_record        ;
+  record_map["Cn_p_save"]         =      Cn_p_save_record           ;
+  record_map["Cn_r_save"]         =      Cn_r_save_record           ;
+  record_map["Cn_da_save"]        =      Cn_da_save_record          ;
+  record_map["Cn_dr_save"]        =      Cn_dr_save_record          ;
+  record_map["Cn_q_save"]         =      Cn_q_save_record           ;
+  record_map["Cn_b3_save"]        =      Cn_b3_save_record          ;
 
 
   /******************** Ice Detection ********************/
index 4d8529fd950e8cc1bd1b883949ffb3f6d296840c..3c01d86aa058069b683aa291e28d00a66a5bd2f4 100644 (file)
                            P_body, Q_body, R_body, Phi, Theta, Psi,
                            U_body, V_body, and W_body to help in
                            starting the A/C at an initial condition.
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cxfxxf0)
+               11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (Cxfxxf).  Removed zero flap variables.
+                           Added minmaxfind() which is needed for non-
+                           linear variables
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
+              02/18/2002   (RD) Added variables necessary to use the
+                           uiuc_3Dinterp_quick() function.  Takes
+                           advantage of data in a "nice" form (data
+                           that are in a rectangular matrix).
+              03/13/2002   (RD) Added aircraft_directory so full path
+                           is no longer needed in the aircraft.dat file
 
 ----------------------------------------------------------------------
 
@@ -136,9 +152,29 @@ bool check_float(string  &token)
   return (stream >> value);
 }
 
+void minmaxfind( bool tarray[30], int &tmin, int &tmax)
+{
+  int n=0;
+  bool first=true;
+
+  while (n<=30)
+    {
+      if (tarray[n])
+       {
+         if (first)
+           {
+             tmin=n;
+             first=false;
+           }
+         tmax=n;
+       }
+      n++;
+    }
+}
 
 void uiuc_menu( string aircraft_name )
 {
+  string aircraft_directory;
   stack command_list;
   double token_value;
   int token_value_recordRate;
@@ -150,7 +186,38 @@ void uiuc_menu( string aircraft_name )
   string linetoken4;
   string linetoken5;
   string linetoken6;
-
+  string linetoken7;
+  string linetoken8;
+  string linetoken9;
+
+  double datafile_xArray[100][100], datafile_yArray[100];
+  double datafile_zArray[100][100];
+  int datafile_nxArray[100], datafile_ny;
+
+  bool CXfabetaf_first = true;
+  bool CXfadef_first = true;
+  bool CXfaqf_first = true;
+  bool CZfabetaf_first = true;
+  bool CZfadef_first = true;
+  bool CZfaqf_first = true;
+  bool Cmfabetaf_first = true;
+  bool Cmfadef_first = true;
+  bool Cmfaqf_first = true;
+  bool CYfabetaf_first = true;
+  bool CYfadaf_first = true;
+  bool CYfadrf_first = true;
+  bool CYfapf_first = true;
+  bool CYfarf_first = true;
+  bool Clfabetaf_first = true;
+  bool Clfadaf_first = true;
+  bool Clfadrf_first = true;
+  bool Clfapf_first = true;
+  bool Clfarf_first = true;
+  bool Cnfabetaf_first = true;
+  bool Cnfadaf_first = true;
+  bool Cnfadrf_first = true;
+  bool Cnfapf_first = true;
+  bool Cnfarf_first = true;
 
   /* the following default setting should eventually be moved to a default or uiuc_init routine */
 
@@ -186,6 +253,11 @@ void uiuc_menu( string aircraft_name )
     exit(-1);
   }
   
+  cerr << "UIUC File " << aircraft_name <<" is being used" << endl;
+  aircraft_directory = aircraft_name;
+  int index_aircraft_dat = aircraft_directory.find("aircraft.dat");
+  aircraft_directory.erase(index_aircraft_dat,12);
+
   for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
     {
       cout << *command_line << endl;
@@ -196,11 +268,17 @@ void uiuc_menu( string aircraft_name )
       linetoken4 = airplane -> getToken (*command_line, 4); 
       linetoken5 = airplane -> getToken (*command_line, 5); 
       linetoken6 = airplane -> getToken (*command_line, 6); 
+      linetoken7 = airplane -> getToken (*command_line, 7);
+      linetoken8 = airplane -> getToken (*command_line, 8);
+      linetoken9 = airplane -> getToken (*command_line, 9);
       
       istrstream token3(linetoken3.c_str());
       istrstream token4(linetoken4.c_str());
       istrstream token5(linetoken5.c_str());
       istrstream token6(linetoken6.c_str());
+      istrstream token7(linetoken7.c_str());
+      istrstream token8(linetoken8.c_str());
+      istrstream token9(linetoken9.c_str());
 
       switch (Keyword_map[linetoken1])
         {
@@ -756,7 +834,7 @@ void uiuc_menu( string aircraft_name )
               case elevator_input_flag:
                 {
                   elevator_input = true;
-                  elevator_input_file = linetoken3;
+                  elevator_input_file = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -772,7 +850,7 @@ void uiuc_menu( string aircraft_name )
              case aileron_input_flag:
                 {
                   aileron_input = true;
-                  aileron_input_file = linetoken3;
+                  aileron_input_file = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -788,7 +866,7 @@ void uiuc_menu( string aircraft_name )
              case rudder_input_flag:
                 {
                   rudder_input = true;
-                  rudder_input_file = linetoken3;
+                  rudder_input_file = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -816,6 +894,26 @@ void uiuc_menu( string aircraft_name )
                  pilot_rud_no_check = true;
                  break;
                }
+             case flap_max_flag:
+                {
+                  if (check_float(linetoken3))
+                    token3 >> token_value;
+                  else
+                    uiuc_warnings_errors(1, *command_line);
+                  
+                  flap_max = token_value;
+                  break;
+                }
+             case flap_rate_flag:
+                {
+                  if (check_float(linetoken3))
+                    token3 >> token_value;
+                  else
+                    uiuc_warnings_errors(1, *command_line);
+                  
+                  flap_rate = token_value;
+                  break;
+                }
               default:
                 {
                   uiuc_warnings_errors(2, *command_line);
@@ -935,7 +1033,7 @@ void uiuc_menu( string aircraft_name )
               case Throttle_pct_input_flag:
                 {
                   Throttle_pct_input = true;
-                  Throttle_pct_input_file = linetoken3;
+                  Throttle_pct_input_file = aircraft_directory + linetoken3;
                  token4 >> token_value_convert1;
                  token5 >> token_value_convert2;
                  convert_y = uiuc_convert(token_value_convert1);
@@ -1047,7 +1145,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CDfa_flag:
                 {
-                  CDfa = linetoken3;
+                  CDfa = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1065,7 +1163,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CDfCL_flag:
                 {
-                  CDfCL = linetoken3;
+                  CDfCL = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1083,7 +1181,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CDfade_flag:
                 {
-                  CDfade = linetoken3;
+                  CDfade = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1107,7 +1205,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CDfdf_flag:
                 {
-                  CDfdf = linetoken3;
+                  CDfdf = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1125,7 +1223,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CDfadf_flag:
                 {
-                  CDfadf = linetoken3;
+                  CDfadf = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1279,6 +1377,162 @@ void uiuc_menu( string aircraft_name )
                   aeroDragParts -> storeCommands (*command_line);
                   break;
                 }
+             case CXfabetaf_flag:
+               {
+                 int CXfabetaf_index, i;
+                 string CXfabetaf_file;
+                 double flap_value;
+                 CXfabetaf_file = aircraft_directory + linetoken3;
+                 token4 >> CXfabetaf_index;
+                 if (CXfabetaf_index < 1 || CXfabetaf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CXfabetaf_index > CXfabetaf_nf)
+                   CXfabetaf_nf = CXfabetaf_index;
+                 token5 >> flap_value;
+                 CXfabetaf_fArray[CXfabetaf_index] = flap_value;
+                 token6 >> token_value_convert1;
+                 token7 >> token_value_convert2;
+                 token8 >> token_value_convert3;
+                 token9 >> CXfabetaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                 /* call 2D File Reader with file name (CXfabetaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CXfabetaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CXfabetaf_aArray[CXfabetaf_index]      = datafile_xArray;
+                 CXfabetaf_betaArray[CXfabetaf_index]   = datafile_yArray;
+                 CXfabetaf_CXArray[CXfabetaf_index]     = datafile_zArray;
+                 CXfabetaf_nAlphaArray[CXfabetaf_index] = datafile_nxArray;
+                 CXfabetaf_nbeta[CXfabetaf_index]       = datafile_ny;
+                 if (CXfabetaf_first==true)
+                   {
+                     if (CXfabetaf_nice == 1)
+                       {
+                         CXfabetaf_na_nice = datafile_nxArray[1];
+                         CXfabetaf_nb_nice = datafile_ny;
+                         CXfabetaf_bArray_nice = datafile_yArray;
+                         for (i=1; i<=CXfabetaf_na_nice; i++)
+                           CXfabetaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroDragParts -> storeCommands (*command_line);
+                     CXfabetaf_first=false;
+                   }
+                  break;
+                }
+              case CXfadef_flag:
+                {
+                 int CXfadef_index, i;
+                 string CXfadef_file;
+                 double flap_value;
+                 CXfadef_file = aircraft_directory + linetoken3;
+                 token4 >> CXfadef_index;
+                 if (CXfadef_index < 0 || CXfadef_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CXfadef_index > CXfadef_nf)
+                   CXfadef_nf = CXfadef_index;
+                 token5 >> flap_value;
+                 CXfadef_fArray[CXfadef_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CXfadef_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CXfadef_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CXfadef_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CXfadef_aArray[CXfadef_index]      = datafile_xArray;
+                 CXfadef_deArray[CXfadef_index]     = datafile_yArray;
+                 CXfadef_CXArray[CXfadef_index]     = datafile_zArray;
+                 CXfadef_nAlphaArray[CXfadef_index] = datafile_nxArray;
+                 CXfadef_nde[CXfadef_index]         = datafile_ny;
+                 if (CXfadef_first==true)
+                   {
+                     if (CXfadef_nice == 1)
+                       {
+                         CXfadef_na_nice = datafile_nxArray[1];
+                         CXfadef_nde_nice = datafile_ny;
+                         CXfadef_deArray_nice = datafile_yArray;
+                         for (i=1; i<=CXfadef_na_nice; i++)
+                           CXfadef_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroDragParts -> storeCommands (*command_line);
+                     CXfadef_first=false;
+                   }
+                  break;
+                }
+              case CXfaqf_flag:
+                {
+                 int CXfaqf_index, i;
+                 string CXfaqf_file;
+                 double flap_value;
+                  CXfaqf_file = aircraft_directory + linetoken3;
+                 token4 >> CXfaqf_index;
+                 if (CXfaqf_index < 0 || CXfaqf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CXfaqf_index > CXfaqf_nf)
+                   CXfaqf_nf = CXfaqf_index;
+                 token5 >> flap_value;
+                 CXfaqf_fArray[CXfaqf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CXfaqf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CXfaqf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CXfaqf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CXfaqf_aArray[CXfaqf_index]      = datafile_xArray;
+                 CXfaqf_qArray[CXfaqf_index]      = datafile_yArray;
+                 CXfaqf_CXArray[CXfaqf_index]     = datafile_zArray;
+                 CXfaqf_nAlphaArray[CXfaqf_index] = datafile_nxArray;
+                 CXfaqf_nq[CXfaqf_index]          = datafile_ny;
+                 if (CXfaqf_first==true)
+                   {
+                     if (CXfaqf_nice == 1)
+                       {
+                         CXfaqf_na_nice = datafile_nxArray[1];
+                         CXfaqf_nq_nice = datafile_ny;
+                         CXfaqf_qArray_nice = datafile_yArray;
+                         for (i=1; i<=CXfaqf_na_nice; i++)
+                           CXfaqf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroDragParts -> storeCommands (*command_line);
+                     CXfaqf_first=false;
+                   }
+                  break;
+                }
               default:
                 {
                   uiuc_warnings_errors(2, *command_line);
@@ -1366,7 +1620,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CLfa_flag:
                 {
-                  CLfa = linetoken3;
+                  CLfa = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1384,7 +1638,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CLfade_flag:
                 {
-                  CLfade = linetoken3;
+                  CLfade = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1408,7 +1662,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CLfdf_flag:
                 {
-                  CLfdf = linetoken3;
+                  CLfdf = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1436,7 +1690,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CLfadf_flag:
                 {
-                  CLfadf = linetoken3;
+                  CLfadf = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1580,7 +1834,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CZfa_flag:
                 {
-                  CZfa = linetoken3;
+                  CZfa = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1596,6 +1850,162 @@ void uiuc_menu( string aircraft_name )
                   aeroLiftParts -> storeCommands (*command_line);
                   break;
                 }
+              case CZfabetaf_flag:
+                {
+                 int CZfabetaf_index, i;
+                 string CZfabetaf_file;
+                 double flap_value;
+                  CZfabetaf_file = aircraft_directory + linetoken3;
+                 token4 >> CZfabetaf_index;
+                 if (CZfabetaf_index < 0 || CZfabetaf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CZfabetaf_index > CZfabetaf_nf)
+                   CZfabetaf_nf = CZfabetaf_index;
+                 token5 >> flap_value;
+                 CZfabetaf_fArray[CZfabetaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CZfabetaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CZfabetaf_file) and 
+                     conversion factors; function returns array of 
+                     beta (betaArray) and corresponding 
+                     alpha (aArray) and CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and beta array (nbeta) */
+                  uiuc_2DdataFileReader(CZfabetaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CZfabetaf_aArray[CZfabetaf_index]      = datafile_xArray;
+                 CZfabetaf_betaArray[CZfabetaf_index]   = datafile_yArray;
+                 CZfabetaf_CZArray[CZfabetaf_index]     = datafile_zArray;
+                 CZfabetaf_nAlphaArray[CZfabetaf_index] = datafile_nxArray;
+                 CZfabetaf_nbeta[CZfabetaf_index]       = datafile_ny;
+                 if (CZfabetaf_first==true)
+                   {
+                     if (CZfabetaf_nice == 1)
+                       {
+                         CZfabetaf_na_nice = datafile_nxArray[1];
+                         CZfabetaf_nb_nice = datafile_ny;
+                         CZfabetaf_bArray_nice = datafile_yArray;
+                         for (i=1; i<=CZfabetaf_na_nice; i++)
+                           CZfabetaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroLiftParts -> storeCommands (*command_line);
+                     CZfabetaf_first=false;
+                   }
+                  break;
+                }
+              case CZfadef_flag:
+                {
+                 int CZfadef_index, i;
+                 string CZfadef_file;
+                 double flap_value;
+                  CZfadef_file = aircraft_directory + linetoken3;
+                 token4 >> CZfadef_index;
+                 if (CZfadef_index < 0 || CZfadef_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CZfadef_index > CZfadef_nf)
+                   CZfadef_nf = CZfadef_index;
+                 token5 >> flap_value;
+                 CZfadef_fArray[CZfadef_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CZfadef_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CZfadef_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CZfadef_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CZfadef_aArray[CZfadef_index]      = datafile_xArray;
+                 CZfadef_deArray[CZfadef_index]     = datafile_yArray;
+                 CZfadef_CZArray[CZfadef_index]     = datafile_zArray;
+                 CZfadef_nAlphaArray[CZfadef_index] = datafile_nxArray;
+                 CZfadef_nde[CZfadef_index]         = datafile_ny;
+                 if (CZfadef_first==true)
+                   {
+                     if (CZfadef_nice == 1)
+                       {
+                         CZfadef_na_nice = datafile_nxArray[1];
+                         CZfadef_nde_nice = datafile_ny;
+                         CZfadef_deArray_nice = datafile_yArray;
+                         for (i=1; i<=CZfadef_na_nice; i++)
+                           CZfadef_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroLiftParts -> storeCommands (*command_line);
+                     CZfadef_first=false;
+                   }
+                  break;
+                }
+              case CZfaqf_flag:
+                {
+                 int CZfaqf_index, i;
+                 string CZfaqf_file;
+                 double flap_value;
+                  CZfaqf_file = aircraft_directory + linetoken3;
+                 token4 >> CZfaqf_index;
+                 if (CZfaqf_index < 0 || CZfaqf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CZfaqf_index > CZfaqf_nf)
+                   CZfaqf_nf = CZfaqf_index;
+                 token5 >> flap_value;
+                 CZfaqf_fArray[CZfaqf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CZfaqf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CZfaqf_file) and 
+                     conversion factors; function returns array of 
+                     pitch rate (qArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and pitch rate array (nq) */
+                  uiuc_2DdataFileReader(CZfaqf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CZfaqf_aArray[CZfaqf_index]      = datafile_xArray;
+                 CZfaqf_qArray[CZfaqf_index]      = datafile_yArray;
+                 CZfaqf_CZArray[CZfaqf_index]     = datafile_zArray;
+                 CZfaqf_nAlphaArray[CZfaqf_index] = datafile_nxArray;
+                 CZfaqf_nq[CZfaqf_index]          = datafile_ny;
+                 if (CZfaqf_first==true)
+                   {
+                     if (CZfaqf_nice == 1)
+                       {
+                         CZfaqf_na_nice = datafile_nxArray[1];
+                         CZfaqf_nq_nice = datafile_ny;
+                         CZfaqf_qArray_nice = datafile_yArray;
+                         for (i=1; i<=CZfaqf_na_nice; i++)
+                           CZfaqf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroLiftParts -> storeCommands (*command_line);
+                     CZfaqf_first=false;
+                   }
+                  break;
+                }
               default:
                 {
                   uiuc_warnings_errors(2, *command_line);
@@ -1731,7 +2141,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Cmfa_flag:
                 {
-                  Cmfa = linetoken3;
+                  Cmfa = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1749,7 +2159,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Cmfade_flag:
                 {
-                  Cmfade = linetoken3;
+                  Cmfade = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1773,7 +2183,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Cmfdf_flag:
                 {
-                  Cmfdf = linetoken3;
+                  Cmfdf = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   convert_y = uiuc_convert(token_value_convert1);
@@ -1791,7 +2201,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Cmfadf_flag:
                 {
-                  Cmfadf = linetoken3;
+                  Cmfadf = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1813,6 +2223,162 @@ void uiuc_menu( string aircraft_name )
                   aeroPitchParts -> storeCommands (*command_line);
                   break;
                 }
+              case Cmfabetaf_flag:
+                {
+                 int Cmfabetaf_index, i;
+                 string Cmfabetaf_file;
+                 double flap_value;
+                  Cmfabetaf_file = aircraft_directory + linetoken3;
+                 token4 >> Cmfabetaf_index;
+                 if (Cmfabetaf_index < 0 || Cmfabetaf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cmfabetaf_index > Cmfabetaf_nf)
+                   Cmfabetaf_nf = Cmfabetaf_index;
+                 token5 >> flap_value;
+                 Cmfabetaf_fArray[Cmfabetaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cmfabetaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cmfabetaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cmfabetaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Cmfabetaf_aArray[Cmfabetaf_index]      = datafile_xArray;
+                 Cmfabetaf_betaArray[Cmfabetaf_index]   = datafile_yArray;
+                 Cmfabetaf_CmArray[Cmfabetaf_index]     = datafile_zArray;
+                 Cmfabetaf_nAlphaArray[Cmfabetaf_index] = datafile_nxArray;
+                 Cmfabetaf_nbeta[Cmfabetaf_index]       = datafile_ny;
+                 if (Cmfabetaf_first==true)
+                   {
+                     if (Cmfabetaf_nice == 1)
+                       {
+                         Cmfabetaf_na_nice = datafile_nxArray[1];
+                         Cmfabetaf_nb_nice = datafile_ny;
+                         Cmfabetaf_bArray_nice = datafile_yArray;
+                         for (i=1; i<=Cmfabetaf_na_nice; i++)
+                           Cmfabetaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroPitchParts -> storeCommands (*command_line);
+                     Cmfabetaf_first=false;
+                   }
+                  break;
+                }
+              case Cmfadef_flag:
+                {
+                 int Cmfadef_index, i;
+                 string Cmfadef_file;
+                 double flap_value;
+                  Cmfadef_file = aircraft_directory + linetoken3;
+                 token4 >> Cmfadef_index;
+                 if (Cmfadef_index < 0 || Cmfadef_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cmfadef_index > Cmfadef_nf)
+                   Cmfadef_nf = Cmfadef_index;
+                 token5 >> flap_value;
+                 Cmfadef_fArray[Cmfadef_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cmfadef_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cmfadef_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cmfadef_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Cmfadef_aArray[Cmfadef_index]      = datafile_xArray;
+                 Cmfadef_deArray[Cmfadef_index]     = datafile_yArray;
+                 Cmfadef_CmArray[Cmfadef_index]     = datafile_zArray;
+                 Cmfadef_nAlphaArray[Cmfadef_index] = datafile_nxArray;
+                 Cmfadef_nde[Cmfadef_index]         = datafile_ny;
+                 if (Cmfadef_first==true)
+                   {
+                     if (Cmfadef_nice == 1)
+                       {
+                         Cmfadef_na_nice = datafile_nxArray[1];
+                         Cmfadef_nde_nice = datafile_ny;
+                         Cmfadef_deArray_nice = datafile_yArray;
+                         for (i=1; i<=Cmfadef_na_nice; i++)
+                           Cmfadef_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroPitchParts -> storeCommands (*command_line);
+                     Cmfadef_first=false;
+                   }
+                  break;
+                }
+              case Cmfaqf_flag:
+                {
+                 int Cmfaqf_index, i;
+                 string Cmfaqf_file;
+                 double flap_value;
+                  Cmfaqf_file = aircraft_directory + linetoken3;
+                 token4 >> Cmfaqf_index;
+                 if (Cmfaqf_index < 0 || Cmfaqf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cmfaqf_index > Cmfaqf_nf)
+                   Cmfaqf_nf = Cmfaqf_index;
+                 token5 >> flap_value;
+                 Cmfaqf_fArray[Cmfaqf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cmfaqf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cmfaqf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cmfaqf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Cmfaqf_aArray[Cmfaqf_index]      = datafile_xArray;
+                 Cmfaqf_qArray[Cmfaqf_index]      = datafile_yArray;
+                 Cmfaqf_CmArray[Cmfaqf_index]     = datafile_zArray;
+                 Cmfaqf_nAlphaArray[Cmfaqf_index] = datafile_nxArray;
+                 Cmfaqf_nq[Cmfaqf_index]          = datafile_ny;
+                 if (Cmfaqf_first==true)
+                   {
+                     if (Cmfaqf_nice == 1)
+                       {
+                         Cmfaqf_na_nice = datafile_nxArray[1];
+                         Cmfaqf_nq_nice = datafile_ny;
+                         Cmfaqf_qArray_nice = datafile_yArray;
+                         for (i=1; i<=Cmfaqf_na_nice; i++)
+                           Cmfaqf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroPitchParts -> storeCommands (*command_line);
+                     Cmfaqf_first=false;
+                   }
+                  break;
+                }
               default:
                 {
                   uiuc_warnings_errors(2, *command_line);
@@ -1925,7 +2491,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CYfada_flag:
                 {
-                  CYfada = linetoken3;
+                  CYfada = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1949,7 +2515,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case CYfbetadr_flag:
                 {
-                  CYfbetadr = linetoken3;
+                  CYfbetadr = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -1971,6 +2537,266 @@ void uiuc_menu( string aircraft_name )
                   aeroSideforceParts -> storeCommands (*command_line);
                   break;
                 }
+              case CYfabetaf_flag:
+                {
+                 int CYfabetaf_index, i;
+                 string CYfabetaf_file;
+                 double flap_value;
+                  CYfabetaf_file = aircraft_directory + linetoken3;
+                 token4 >> CYfabetaf_index;
+                 if (CYfabetaf_index < 0 || CYfabetaf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CYfabetaf_index > CYfabetaf_nf)
+                   CYfabetaf_nf = CYfabetaf_index;
+                 token5 >> flap_value;
+                 CYfabetaf_fArray[CYfabetaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CYfabetaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CYfabetaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CYfabetaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CYfabetaf_aArray[CYfabetaf_index]      = datafile_xArray;
+                 CYfabetaf_betaArray[CYfabetaf_index]   = datafile_yArray;
+                 CYfabetaf_CYArray[CYfabetaf_index]     = datafile_zArray;
+                 CYfabetaf_nAlphaArray[CYfabetaf_index] = datafile_nxArray;
+                 CYfabetaf_nbeta[CYfabetaf_index]       = datafile_ny;
+                 if (CYfabetaf_first==true)
+                   {
+                     if (CYfabetaf_nice == 1)
+                       {
+                         CYfabetaf_na_nice = datafile_nxArray[1];
+                         CYfabetaf_nb_nice = datafile_ny;
+                         CYfabetaf_bArray_nice = datafile_yArray;
+                         for (i=1; i<=CYfabetaf_na_nice; i++)
+                           CYfabetaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroSideforceParts -> storeCommands (*command_line);
+                     CYfabetaf_first=false;
+                   }
+                  break;
+                }
+              case CYfadaf_flag:
+                {
+                 int CYfadaf_index, i;
+                 string CYfadaf_file;
+                 double flap_value;
+                  CYfadaf_file = aircraft_directory + linetoken3;
+                 token4 >> CYfadaf_index;
+                 if (CYfadaf_index < 0 || CYfadaf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CYfadaf_index > CYfadaf_nf)
+                   CYfadaf_nf = CYfadaf_index;
+                 token5 >> flap_value;
+                 CYfadaf_fArray[CYfadaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CYfadaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CYfadaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CYfadaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CYfadaf_aArray[CYfadaf_index]      = datafile_xArray;
+                 CYfadaf_daArray[CYfadaf_index]     = datafile_yArray;
+                 CYfadaf_CYArray[CYfadaf_index]     = datafile_zArray;
+                 CYfadaf_nAlphaArray[CYfadaf_index] = datafile_nxArray;
+                 CYfadaf_nda[CYfadaf_index]         = datafile_ny;
+                 if (CYfadaf_first==true)
+                   {
+                     if (CYfadaf_nice == 1)
+                       {
+                         CYfadaf_na_nice = datafile_nxArray[1];
+                         CYfadaf_nda_nice = datafile_ny;
+                         CYfadaf_daArray_nice = datafile_yArray;
+                         for (i=1; i<=CYfadaf_na_nice; i++)
+                           CYfadaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroSideforceParts -> storeCommands (*command_line);
+                     CYfadaf_first=false;
+                   }
+                  break;
+                }
+              case CYfadrf_flag:
+                {
+                 int CYfadrf_index, i;
+                 string CYfadrf_file;
+                 double flap_value;
+                  CYfadrf_file = aircraft_directory + linetoken3;
+                 token4 >> CYfadrf_index;
+                 if (CYfadrf_index < 0 || CYfadrf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CYfadrf_index > CYfadrf_nf)
+                   CYfadrf_nf = CYfadrf_index;
+                 token5 >> flap_value;
+                 CYfadrf_fArray[CYfadrf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CYfadrf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CYfadrf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CYfadrf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CYfadrf_aArray[CYfadrf_index]      = datafile_xArray;
+                 CYfadrf_drArray[CYfadrf_index]     = datafile_yArray;
+                 CYfadrf_CYArray[CYfadrf_index]     = datafile_zArray;
+                 CYfadrf_nAlphaArray[CYfadrf_index] = datafile_nxArray;
+                 CYfadrf_ndr[CYfadrf_index]         = datafile_ny;
+                 if (CYfadrf_first==true)
+                   {
+                     if (CYfadrf_nice == 1)
+                       {
+                         CYfadrf_na_nice = datafile_nxArray[1];
+                         CYfadrf_ndr_nice = datafile_ny;
+                         CYfadrf_drArray_nice = datafile_yArray;
+                         for (i=1; i<=CYfadrf_na_nice; i++)
+                           CYfadrf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroSideforceParts -> storeCommands (*command_line);
+                     CYfadrf_first=false;
+                   }
+                  break;
+                }
+              case CYfapf_flag:
+                {
+                 int CYfapf_index, i;
+                 string CYfapf_file;
+                 double flap_value;
+                  CYfapf_file = aircraft_directory + linetoken3;
+                 token4 >> CYfapf_index;
+                 if (CYfapf_index < 0 || CYfapf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CYfapf_index > CYfapf_nf)
+                   CYfapf_nf = CYfapf_index;
+                 token5 >> flap_value;
+                 CYfapf_fArray[CYfapf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CYfapf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CYfapf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CYfapf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CYfapf_aArray[CYfapf_index]      = datafile_xArray;
+                 CYfapf_pArray[CYfapf_index]      = datafile_yArray;
+                 CYfapf_CYArray[CYfapf_index]     = datafile_zArray;
+                 CYfapf_nAlphaArray[CYfapf_index] = datafile_nxArray;
+                 CYfapf_np[CYfapf_index]          = datafile_ny;
+                 if (CYfapf_first==true)
+                   {
+                     if (CYfapf_nice == 1)
+                       {
+                         CYfapf_na_nice = datafile_nxArray[1];
+                         CYfapf_np_nice = datafile_ny;
+                         CYfapf_pArray_nice = datafile_yArray;
+                         for (i=1; i<=CYfapf_na_nice; i++)
+                           CYfapf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroSideforceParts -> storeCommands (*command_line);
+                     CYfapf_first=false;
+                   }
+                  break;
+                }
+              case CYfarf_flag:
+                {
+                 int CYfarf_index, i;
+                 string CYfarf_file;
+                 double flap_value;
+                  CYfarf_file = aircraft_directory + linetoken3;
+                 token4 >> CYfarf_index;
+                 if (CYfarf_index < 0 || CYfarf_index >= 30)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (CYfarf_index > CYfarf_nf)
+                   CYfarf_nf = CYfarf_index;
+                 token5 >> flap_value;
+                 CYfarf_fArray[CYfarf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> CYfarf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (CYfarf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(CYfarf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 CYfarf_aArray[CYfarf_index]      = datafile_xArray;
+                 CYfarf_rArray[CYfarf_index]      = datafile_yArray;
+                 CYfarf_CYArray[CYfarf_index]     = datafile_zArray;
+                 CYfarf_nAlphaArray[CYfarf_index] = datafile_nxArray;
+                 CYfarf_nr[CYfarf_index]          = datafile_ny;
+                 if (CYfarf_first==true)
+                   {
+                     if (CYfarf_nice == 1)
+                       {
+                         CYfarf_na_nice = datafile_nxArray[1];
+                         CYfarf_nr_nice = datafile_ny;
+                         CYfarf_rArray_nice = datafile_yArray;
+                         for (i=1; i<=CYfarf_na_nice; i++)
+                           CYfarf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroSideforceParts -> storeCommands (*command_line);
+                     CYfarf_first=false;
+                   }
+                  break;
+                }
               default:
                 {
                   uiuc_warnings_errors(2, *command_line);
@@ -2071,7 +2897,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Clfada_flag:
                 {
-                  Clfada = linetoken3;
+                  Clfada = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -2095,7 +2921,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Clfbetadr_flag:
                 {
-                  Clfbetadr = linetoken3;
+                  Clfbetadr = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -2117,10 +2943,270 @@ void uiuc_menu( string aircraft_name )
                   aeroRollParts -> storeCommands (*command_line);
                   break;
                 }
+              case Clfabetaf_flag:
+                {
+                 int Clfabetaf_index, i;
+                 string Clfabetaf_file;
+                 double flap_value;
+                  Clfabetaf_file = aircraft_directory + linetoken3;
+                 token4 >> Clfabetaf_index;
+                 if (Clfabetaf_index < 0 || Clfabetaf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Clfabetaf_index > Clfabetaf_nf)
+                   Clfabetaf_nf = Clfabetaf_index;
+                 token5 >> flap_value;
+                 Clfabetaf_fArray[Clfabetaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Clfabetaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Clfabetaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Clfabetaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Clfabetaf_aArray[Clfabetaf_index]      = datafile_xArray;
+                 Clfabetaf_betaArray[Clfabetaf_index]   = datafile_yArray;
+                 Clfabetaf_ClArray[Clfabetaf_index]     = datafile_zArray;
+                 Clfabetaf_nAlphaArray[Clfabetaf_index] = datafile_nxArray;
+                 Clfabetaf_nbeta[Clfabetaf_index]       = datafile_ny;
+                 if (Clfabetaf_first==true)
+                   {
+                     if (Clfabetaf_nice == 1)
+                       {
+                         Clfabetaf_na_nice = datafile_nxArray[1];
+                         Clfabetaf_nb_nice = datafile_ny;
+                         Clfabetaf_bArray_nice = datafile_yArray;
+                         for (i=1; i<=Clfabetaf_na_nice; i++)
+                           Clfabetaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroRollParts -> storeCommands (*command_line);
+                     Clfabetaf_first=false;
+                   }
+                  break;
+                }
+              case Clfadaf_flag:
+                {
+                 int Clfadaf_index, i;
+                 string Clfadaf_file;
+                 double flap_value;
+                  Clfadaf_file = aircraft_directory + linetoken3;
+                 token4 >> Clfadaf_index;
+                 if (Clfadaf_index < 0 || Clfadaf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Clfadaf_index > Clfadaf_nf)
+                   Clfadaf_nf = Clfadaf_index;
+                 token5 >> flap_value;
+                 Clfadaf_fArray[Clfadaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Clfadaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Clfadaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Clfadaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Clfadaf_aArray[Clfadaf_index]      = datafile_xArray;
+                 Clfadaf_daArray[Clfadaf_index]     = datafile_yArray;
+                 Clfadaf_ClArray[Clfadaf_index]     = datafile_zArray;
+                 Clfadaf_nAlphaArray[Clfadaf_index] = datafile_nxArray;
+                 Clfadaf_nda[Clfadaf_index]         = datafile_ny;
+                 if (Clfadaf_first==true)
+                   {
+                     if (Clfadaf_nice == 1)
+                       {
+                         Clfadaf_na_nice = datafile_nxArray[1];
+                         Clfadaf_nda_nice = datafile_ny;
+                         Clfadaf_daArray_nice = datafile_yArray;
+                         for (i=1; i<=Clfadaf_na_nice; i++)
+                           Clfadaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroRollParts -> storeCommands (*command_line);
+                     Clfadaf_first=false;
+                   }
+                  break;
+                }
+              case Clfadrf_flag:
+                {
+                 int Clfadrf_index, i;
+                 string Clfadrf_file;
+                 double flap_value;
+                  Clfadrf_file = aircraft_directory + linetoken3;
+                 token4 >> Clfadrf_index;
+                 if (Clfadrf_index < 0 || Clfadrf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Clfadrf_index > Clfadrf_nf)
+                   Clfadrf_nf = Clfadrf_index;
+                 token5 >> flap_value;
+                 Clfadrf_fArray[Clfadrf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Clfadrf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Clfadrf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Clfadrf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Clfadrf_aArray[Clfadrf_index]      = datafile_xArray;
+                 Clfadrf_drArray[Clfadrf_index]     = datafile_yArray;
+                 Clfadrf_ClArray[Clfadrf_index]     = datafile_zArray;
+                 Clfadrf_nAlphaArray[Clfadrf_index] = datafile_nxArray;
+                 Clfadrf_ndr[Clfadrf_index]         = datafile_ny;
+                 if (Clfadrf_first==true)
+                   {
+                     if (Clfadrf_nice == 1)
+                       {
+                         Clfadrf_na_nice = datafile_nxArray[1];
+                         Clfadrf_ndr_nice = datafile_ny;
+                         Clfadrf_drArray_nice = datafile_yArray;
+                         for (i=1; i<=Clfadrf_na_nice; i++)
+                           Clfadrf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroRollParts -> storeCommands (*command_line);
+                     Clfadrf_first=false;
+                   }
+                  break;
+                }
+              case Clfapf_flag:
+                {
+                 int Clfapf_index, i;
+                 string Clfapf_file;
+                 double flap_value;
+                  Clfapf_file = aircraft_directory + linetoken3;
+                 token4 >> Clfapf_index;
+                 if (Clfapf_index < 0 || Clfapf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Clfapf_index > Clfapf_nf)
+                   Clfapf_nf = Clfapf_index;
+                 token5 >> flap_value;
+                 Clfapf_fArray[Clfapf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Clfapf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Clfapf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Clfapf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Clfapf_aArray[Clfapf_index]      = datafile_xArray;
+                 Clfapf_pArray[Clfapf_index]      = datafile_yArray;
+                 Clfapf_ClArray[Clfapf_index]     = datafile_zArray;
+                 Clfapf_nAlphaArray[Clfapf_index] = datafile_nxArray;
+                 Clfapf_np[Clfapf_index]          = datafile_ny;
+                 if (Clfapf_first==true)
+                   {
+                     if (Clfapf_nice == 1)
+                       {
+                         Clfapf_na_nice = datafile_nxArray[1];
+                         Clfapf_np_nice = datafile_ny;
+                         Clfapf_pArray_nice = datafile_yArray;
+                         for (i=1; i<=Clfapf_na_nice; i++)
+                           Clfapf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroRollParts -> storeCommands (*command_line);
+                     Clfapf_first=false;
+                   }
+                  break;
+                }
+              case Clfarf_flag:
+                {
+                 int Clfarf_index, i;
+                 string Clfarf_file;
+                 double flap_value;
+                  Clfarf_file = aircraft_directory + linetoken3;
+                 token4 >> Clfarf_index;
+                 if (Clfarf_index < 0 || Clfarf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Clfarf_index > Clfarf_nf)
+                   Clfarf_nf = Clfarf_index;
+                 token5 >> flap_value;
+                 Clfarf_fArray[Clfarf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Clfarf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Clfarf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Clfarf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Clfarf_aArray[Clfarf_index]      = datafile_xArray;
+                 Clfarf_rArray[Clfarf_index]      = datafile_yArray;
+                 Clfarf_ClArray[Clfarf_index]     = datafile_zArray;
+                 Clfarf_nAlphaArray[Clfarf_index] = datafile_nxArray;
+                 Clfarf_nr[Clfarf_index]          = datafile_ny;
+                 if (Clfarf_first==true)
+                   {
+                     if (Clfarf_nice == 1)
+                       {
+                         Clfarf_na_nice = datafile_nxArray[1];
+                         Clfarf_nr_nice = datafile_ny;
+                         Clfarf_rArray_nice = datafile_yArray;
+                         for (i=1; i<=Clfarf_na_nice; i++)
+                           Clfarf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroRollParts -> storeCommands (*command_line);
+                     Clfarf_first=false;
+                   }
+                  break;
+                }
               default:
                 {
                   uiuc_warnings_errors(2, *command_line);
-          break;
+                 break;
                 }
               };
             break;
@@ -2229,7 +3315,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Cnfada_flag:
                 {
-                  Cnfada = linetoken3;
+                  Cnfada = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -2253,7 +3339,7 @@ void uiuc_menu( string aircraft_name )
                 }
               case Cnfbetadr_flag:
                 {
-                  Cnfbetadr = linetoken3;
+                  Cnfbetadr = aircraft_directory + linetoken3;
                   token4 >> token_value_convert1;
                   token5 >> token_value_convert2;
                   token6 >> token_value_convert3;
@@ -2275,6 +3361,266 @@ void uiuc_menu( string aircraft_name )
                   aeroYawParts -> storeCommands (*command_line);
                   break;
                 }
+              case Cnfabetaf_flag:
+                {
+                 int Cnfabetaf_index, i;
+                 string Cnfabetaf_file;
+                 double flap_value;
+                  Cnfabetaf_file = aircraft_directory + linetoken3;
+                 token4 >> Cnfabetaf_index;
+                 if (Cnfabetaf_index < 0 || Cnfabetaf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cnfabetaf_index > Cnfabetaf_nf)
+                   Cnfabetaf_nf = Cnfabetaf_index;
+                 token5 >> flap_value;
+                 Cnfabetaf_fArray[Cnfabetaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cnfabetaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cnfabetaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cnfabetaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Cnfabetaf_aArray[Cnfabetaf_index]      = datafile_xArray;
+                 Cnfabetaf_betaArray[Cnfabetaf_index]   = datafile_yArray;
+                 Cnfabetaf_CnArray[Cnfabetaf_index]     = datafile_zArray;
+                 Cnfabetaf_nAlphaArray[Cnfabetaf_index] = datafile_nxArray;
+                 Cnfabetaf_nbeta[Cnfabetaf_index]       = datafile_ny;
+                 if (Cnfabetaf_first==true)
+                   {
+                     if (Cnfabetaf_nice == 1)
+                       {
+                         Cnfabetaf_na_nice = datafile_nxArray[1];
+                         Cnfabetaf_nb_nice = datafile_ny;
+                         Cnfabetaf_bArray_nice = datafile_yArray;
+                         for (i=1; i<=Cnfabetaf_na_nice; i++)
+                           Cnfabetaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroYawParts -> storeCommands (*command_line);
+                     Cnfabetaf_first=false;
+                   }
+                  break;
+                }
+              case Cnfadaf_flag:
+                {
+                 int Cnfadaf_index, i;
+                 string Cnfadaf_file;
+                 double flap_value;
+                  Cnfadaf_file = aircraft_directory + linetoken3;
+                 token4 >> Cnfadaf_index;
+                 if (Cnfadaf_index < 0 || Cnfadaf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cnfadaf_index > Cnfadaf_nf)
+                   Cnfadaf_nf = Cnfadaf_index;
+                 token5 >> flap_value;
+                 Cnfadaf_fArray[Cnfadaf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cnfadaf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cnfadaf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cnfadaf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Cnfadaf_aArray[Cnfadaf_index]      = datafile_xArray;
+                 Cnfadaf_daArray[Cnfadaf_index]     = datafile_yArray;
+                 Cnfadaf_CnArray[Cnfadaf_index]     = datafile_zArray;
+                 Cnfadaf_nAlphaArray[Cnfadaf_index] = datafile_nxArray;
+                 Cnfadaf_nda[Cnfadaf_index]         = datafile_ny;
+                 if (Cnfadaf_first==true)
+                   {
+                     if (Cnfadaf_nice == 1)
+                       {
+                         Cnfadaf_na_nice = datafile_nxArray[1];
+                         Cnfadaf_nda_nice = datafile_ny;
+                         Cnfadaf_daArray_nice = datafile_yArray;
+                         for (i=1; i<=Cnfadaf_na_nice; i++)
+                           Cnfadaf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroYawParts -> storeCommands (*command_line);
+                     Cnfadaf_first=false;
+                   }
+                  break;
+                }
+              case Cnfadrf_flag:
+                {
+                 int Cnfadrf_index, i;
+                 string Cnfadrf_file;
+                 double flap_value;
+                  Cnfadrf_file = aircraft_directory + linetoken3;
+                 token4 >> Cnfadrf_index;
+                 if (Cnfadrf_index < 0 || Cnfadrf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cnfadrf_index > Cnfadrf_nf)
+                   Cnfadrf_nf = Cnfadrf_index;
+                 token5 >> flap_value;
+                 Cnfadrf_fArray[Cnfadrf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cnfadrf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cnfadrf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cnfadrf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Cnfadrf_aArray[Cnfadrf_index]      = datafile_xArray;
+                 Cnfadrf_drArray[Cnfadrf_index]     = datafile_yArray;
+                 Cnfadrf_CnArray[Cnfadrf_index]     = datafile_zArray;
+                 Cnfadrf_nAlphaArray[Cnfadrf_index] = datafile_nxArray;
+                 Cnfadrf_ndr[Cnfadrf_index]         = datafile_ny;
+                 if (Cnfadrf_first==true)
+                   {
+                     if (Cnfadrf_nice == 1)
+                       {
+                         Cnfadrf_na_nice = datafile_nxArray[1];
+                         Cnfadrf_ndr_nice = datafile_ny;
+                         Cnfadrf_drArray_nice = datafile_yArray;
+                         for (i=1; i<=Cnfadrf_na_nice; i++)
+                           Cnfadrf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroYawParts -> storeCommands (*command_line);
+                     Cnfadrf_first=false;
+                   }
+                  break;
+                }
+              case Cnfapf_flag:
+                {
+                 int Cnfapf_index, i;
+                 string Cnfapf_file;
+                 double flap_value;
+                  Cnfapf_file = aircraft_directory + linetoken3;
+                 token4 >> Cnfapf_index;
+                 if (Cnfapf_index < 0 || Cnfapf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cnfapf_index > Cnfapf_nf)
+                   Cnfapf_nf = Cnfapf_index;
+                 token5 >> flap_value;
+                 Cnfapf_fArray[Cnfapf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cnfapf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cnfapf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cnfapf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                        datafile_ny);
+                 Cnfapf_aArray[Cnfapf_index]      = datafile_xArray;
+                 Cnfapf_pArray[Cnfapf_index]      = datafile_yArray;
+                 Cnfapf_CnArray[Cnfapf_index]     = datafile_zArray;
+                 Cnfapf_nAlphaArray[Cnfapf_index] = datafile_nxArray;
+                 Cnfapf_np[Cnfapf_index]          = datafile_ny;
+                 if (Cnfapf_first==true)
+                   {
+                     if (Cnfapf_nice == 1)
+                       {
+                         Cnfapf_na_nice = datafile_nxArray[1];
+                         Cnfapf_np_nice = datafile_ny;
+                         Cnfapf_pArray_nice = datafile_yArray;
+                         for (i=1; i<=Cnfapf_na_nice; i++)
+                           Cnfapf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroYawParts -> storeCommands (*command_line);
+                     Cnfapf_first=false;
+                   }
+                  break;
+                }
+              case Cnfarf_flag:
+                {
+                 int Cnfarf_index, i;
+                 string Cnfarf_file;
+                 double flap_value;
+                  Cnfarf_file = aircraft_directory + linetoken3;
+                 token4 >> Cnfarf_index;
+                 if (Cnfarf_index < 0 || Cnfarf_index >= 100)
+                   uiuc_warnings_errors(1, *command_line);
+                 if (Cnfarf_index > Cnfarf_nf)
+                   Cnfarf_nf = Cnfarf_index;
+                 token5 >> flap_value;
+                 Cnfarf_fArray[Cnfarf_index] = flap_value;
+                  token6 >> token_value_convert1;
+                  token7 >> token_value_convert2;
+                  token8 >> token_value_convert3;
+                 token9 >> Cnfarf_nice;
+                  convert_z = uiuc_convert(token_value_convert1);
+                  convert_x = uiuc_convert(token_value_convert2);
+                  convert_y = uiuc_convert(token_value_convert3);
+                  /* call 2D File Reader with file name (Cnfarf_file) and 
+                     conversion factors; function returns array of 
+                     elevator deflections (deArray) and corresponding 
+                     alpha (aArray) and delta CZ (CZArray) values and 
+                     max number of terms in alpha arrays (nAlphaArray) 
+                     and delfection array (nde) */
+                  uiuc_2DdataFileReader(Cnfarf_file,
+                                        datafile_xArray,
+                                        datafile_yArray,
+                                        datafile_zArray,
+                                        datafile_nxArray,
+                                       datafile_ny);
+                 Cnfarf_aArray[Cnfarf_index]      = datafile_xArray;
+                 Cnfarf_rArray[Cnfarf_index]      = datafile_yArray;
+                 Cnfarf_CnArray[Cnfarf_index]     = datafile_zArray;
+                 Cnfarf_nAlphaArray[Cnfarf_index] = datafile_nxArray;
+                 Cnfarf_nr[Cnfarf_index]          = datafile_ny;
+                 if (Cnfarf_first==true)
+                   {
+                     if (Cnfarf_nice == 1)
+                       {
+                         Cnfarf_na_nice = datafile_nxArray[1];
+                         Cnfarf_nr_nice = datafile_ny;
+                         Cnfarf_rArray_nice = datafile_yArray;
+                         for (i=1; i<=Cnfarf_na_nice; i++)
+                           Cnfarf_aArray_nice[i] = datafile_xArray[1][i];
+                       }
+                     aeroYawParts -> storeCommands (*command_line);
+                     Cnfarf_first=false;
+                   }
+                  break;
+                }
               default:
                 {
                   uiuc_warnings_errors(2, *command_line);
@@ -3894,6 +5240,16 @@ void uiuc_menu( string aircraft_name )
                   recordParts -> storeCommands (*command_line);
                   break;
                 }
+              case flap_goal_record:
+                {
+                  recordParts -> storeCommands (*command_line);
+                  break;
+                }
+              case flap_pos_record:
+                {
+                  recordParts -> storeCommands (*command_line);
+                  break;
+                }
 
                 /****************** Aero Coefficients ******************/
               case CD_record:
@@ -3926,6 +5282,111 @@ void uiuc_menu( string aircraft_name )
                   recordParts -> storeCommands (*command_line);
                   break;
                 }
+             case CXfabetafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CXfadefI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CXfaqfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CDo_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CDK_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CD_a_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CD_adot_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CD_q_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CD_ih_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CD_de_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CXo_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CXK_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_a_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_a2_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_a3_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_adot_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_q_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_de_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_dr_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_df_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CX_adf_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
               case CL_record:
                 {
                   recordParts -> storeCommands (*command_line);
@@ -3956,6 +5417,106 @@ void uiuc_menu( string aircraft_name )
                   recordParts -> storeCommands (*command_line);
                   break;
                 }
+             case CZfaI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZfabetafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZfadefI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZfaqfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CLo_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CL_a_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CL_adot_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CL_q_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CL_ih_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CL_de_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZo_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_a_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_a2_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_a3_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_adot_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_q_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_de_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_deb2_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_df_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CZ_adf_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
               case Cm_record:
                 {
                   recordParts -> storeCommands (*command_line);
@@ -3981,6 +5542,71 @@ void uiuc_menu( string aircraft_name )
                   recordParts -> storeCommands (*command_line);
                   break;
                 }
+             case CmfabetafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CmfadefI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CmfaqfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cmo_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_a_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_a2_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_adot_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_q_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_ih_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_de_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_b2_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_r_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cm_df_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
               case CY_record:
                 {
                   recordParts -> storeCommands (*command_line);
@@ -3996,6 +5622,71 @@ void uiuc_menu( string aircraft_name )
                   recordParts -> storeCommands (*command_line);
                   break;
                 }
+             case CYfabetafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CYfadafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CYfadrfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CYfapfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CYfarfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CYo_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CY_beta_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CY_p_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CY_r_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CY_da_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CY_dr_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CY_dra_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CY_bdot_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
               case Cl_record:
                 {
                   recordParts -> storeCommands (*command_line);
@@ -4011,6 +5702,66 @@ void uiuc_menu( string aircraft_name )
                   recordParts -> storeCommands (*command_line);
                   break;
                 }
+             case ClfabetafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case ClfadafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case ClfadrfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case ClfapfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case ClfarfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Clo_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cl_beta_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cl_p_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cl_r_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cl_da_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cl_dr_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cl_daa_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
               case Cn_record:
                 {
                   recordParts -> storeCommands (*command_line);
@@ -4026,6 +5777,71 @@ void uiuc_menu( string aircraft_name )
                   recordParts -> storeCommands (*command_line);
                   break;
                 }
+             case CnfabetafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CnfadafI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CnfadrfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CnfapfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case CnfarfI_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cno_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cn_beta_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cn_p_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cn_r_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cn_da_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cn_dr_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cn_q_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
+             case Cn_b3_save_record:
+               {
+                 recordParts -> storeCommands (*command_line);
+                 break;
+               }
 
                 /******************** Ice Detection ********************/
               case CLclean_wing_record:
index 44afd0d88eb931ff3615ddedac4173eddbdd3c26..80ccc60c71e97f83183e767f23d01270c641f3aa 100644 (file)
                             and rudder inputs to record map
                04/24/2000   (JS) added rest of variables in 
                             ls_generic.h
+              07/06/2001   (RD) changed Flap handle output
+              07/20/2001   (RD) fixed Lat_control and Rudder_pedal
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (Cxfxxf0I)
+               11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CxfxxfI).  Removed zero flap variables.
+                           Added flap_pos and flap_goal.
+              02/13/2002   (RD) Added variables so linear aero model
+                           values can be recorded
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Jeff Scott         <jscott@mail.com>
+               Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -795,7 +807,7 @@ void uiuc_recorder( double dt )
               }
             case Lat_control_record:
               {
-                fout << Long_control << " ";
+                fout << Lat_control << " ";
                 break;
               }
             case aileron_record:
@@ -810,7 +822,7 @@ void uiuc_recorder( double dt )
               }
             case Rudder_pedal_record:
               {
-                fout << Long_control << " ";
+                fout << Rudder_pedal << " ";
                 break;
               }
             case rudder_record:
@@ -825,7 +837,7 @@ void uiuc_recorder( double dt )
               }
             case Flap_handle_record:
               {
-                fout << flap << " ";
+                fout << Flap_handle << " ";
                 break;
               }
             case flap_record:
@@ -838,6 +850,16 @@ void uiuc_recorder( double dt )
                 fout << flap * RAD_TO_DEG << " ";
                 break;
               }
+            case flap_goal_record:
+              {
+                fout << flap_goal << " ";
+                break;
+              }
+            case flap_pos_record:
+              {
+                fout << flap_pos << " ";
+                break;
+              }
 
               /****************** Aero Coefficients ******************/
             case CD_record:
@@ -875,6 +897,111 @@ void uiuc_recorder( double dt )
                 fout << CX << " ";
                 break;
               }
+            case CXfabetafI_record:
+              {
+                fout << CXfabetafI << " ";
+                break;
+              }
+            case CXfadefI_record:
+              {
+                fout << CXfadefI << " ";
+                break;
+              }
+            case CXfaqfI_record:
+              {
+                fout << CXfaqfI << " ";
+                break;
+              }
+            case CDo_save_record:
+              {
+                fout << CDo_save << " ";
+                break;
+              }
+            case CDK_save_record:
+              {
+                fout << CDK_save << " ";
+                break;
+              }
+            case CD_a_save_record:
+              {
+                fout << CD_a_save << " ";
+                break;
+              }
+            case CD_adot_save_record:
+              {
+                fout << CD_adot_save << " ";
+                break;
+              }
+            case CD_q_save_record:
+              {
+                fout << CD_q_save << " ";
+                break;
+              }
+            case CD_ih_save_record:
+              {
+                fout << CD_ih_save << " ";
+                break;
+              }
+            case CD_de_save_record:
+              {
+                fout << CD_de_save << " ";
+                break;
+              }
+            case CXo_save_record:
+              {
+                fout << CXo_save << " ";
+                break;
+              }
+            case CXK_save_record:
+              {
+                fout << CXK_save << " ";
+                break;
+              }
+            case CX_a_save_record:
+              {
+                fout << CX_a_save << " ";
+                break;
+              }
+            case CX_a2_save_record:
+              {
+                fout << CX_a2_save << " ";
+                break;
+              }
+            case CX_a3_save_record:
+              {
+                fout << CX_a3_save << " ";
+                break;
+              }
+            case CX_adot_save_record:
+              {
+                fout << CX_adot_save << " ";
+                break;
+              }
+            case CX_q_save_record:
+              {
+                fout << CX_q_save << " ";
+                break;
+              }
+            case CX_de_save_record:
+              {
+                fout << CX_de_save << " ";
+                break;
+              }
+            case CX_dr_save_record:
+              {
+                fout << CX_dr_save << " ";
+                break;
+              }
+            case CX_df_save_record:
+              {
+                fout << CX_df_save << " ";
+                break;
+              }
+            case CX_adf_save_record:
+              {
+                fout << CX_adf_save << " ";
+                break;
+              }
             case CL_record:
               {
                 fout << CL << " ";
@@ -905,6 +1032,106 @@ void uiuc_recorder( double dt )
                 fout << CZ << " ";
                 break;
               }
+            case CZfaI_record:
+              {
+                fout << CZfaI << " ";
+                break;
+              }
+            case CZfabetafI_record:
+             {
+                fout << CZfabetafI << " ";
+                break;
+              }
+            case CZfadefI_record:
+              {
+                fout << CZfadefI << " ";
+                break;
+              }
+            case CZfaqfI_record:
+              {
+                fout << CZfaqfI << " ";
+                break;
+              }
+            case CLo_save_record:
+              {
+                fout << CLo_save << " ";
+                break;
+              }
+            case CL_a_save_record:
+              {
+                fout << CL_a_save << " ";
+                break;
+              }
+            case CL_adot_save_record:
+              {
+                fout << CL_adot_save << " ";
+                break;
+              }
+            case CL_q_save_record:
+              {
+                fout << CL_q_save << " ";
+                break;
+              }
+            case CL_ih_save_record:
+              {
+                fout << CL_ih_save << " ";
+                break;
+              }
+            case CL_de_save_record:
+              {
+                fout << CL_de_save << " ";
+                break;
+              }
+            case CZo_save_record:
+              {
+                fout << CZo_save << " ";
+                break;
+              }
+            case CZ_a_save_record:
+              {
+                fout << CZ_a_save << " ";
+                break;
+              }
+            case CZ_a2_save_record:
+              {
+                fout << CZ_a2_save << " ";
+                break;
+              }
+            case CZ_a3_save_record:
+              {
+                fout << CZ_a3_save << " ";
+                break;
+              }
+            case CZ_adot_save_record:
+              {
+                fout << CZ_adot_save << " ";
+                break;
+              }
+            case CZ_q_save_record:
+              {
+                fout << CZ_q_save << " ";
+                break;
+              }
+            case CZ_de_save_record:
+              {
+                fout << CZ_de_save << " ";
+                break;
+              }
+            case CZ_deb2_save_record:
+              {
+                fout << CZ_deb2_save << " ";
+                break;
+              }
+            case CZ_df_save_record:
+              {
+                fout << CZ_df_save << " ";
+                break;
+              }
+            case CZ_adf_save_record:
+              {
+                fout << CZ_adf_save << " ";
+                break;
+              }
             case Cm_record:
               {
                 fout << Cm << " ";
@@ -930,6 +1157,71 @@ void uiuc_recorder( double dt )
                 fout << CmfadfI << " ";
                 break;
               }
+            case CmfabetafI_record:
+              {
+                fout << CmfabetafI << " ";
+                break;
+              }
+            case CmfadefI_record:
+              {
+                fout << CmfadefI << " ";
+                break;
+              }
+            case CmfaqfI_record:
+              {
+                fout << CmfaqfI << " ";
+                break;
+              }
+            case Cmo_save_record:
+              {
+                fout << Cmo_save << " ";
+                break;
+              }
+            case Cm_a_save_record:
+              {
+                fout << Cm_a_save << " ";
+                break;
+              }
+            case Cm_a2_save_record:
+              {
+                fout << Cm_a2_save << " ";
+                break;
+              }
+            case Cm_adot_save_record:
+              {
+                fout << Cm_adot_save << " ";
+                break;
+              }
+            case Cm_q_save_record:
+              {
+                fout << Cm_q_save << " ";
+                break;
+              }
+            case Cm_ih_save_record:
+              {
+                fout << Cm_ih_save << " ";
+                break;
+              }
+            case Cm_de_save_record:
+              {
+                fout << Cm_de_save << " ";
+                break;
+              }
+            case Cm_b2_save_record:
+              {
+                fout << Cm_b2_save << " ";
+                break;
+              }
+            case Cm_r_save_record:
+              {
+                fout << Cm_r_save << " ";
+                break;
+              }
+            case Cm_df_save_record:
+              {
+                fout << Cm_df_save << " ";
+                break;
+              }
             case CY_record:
               {
                 fout << CY  << " ";
@@ -945,6 +1237,71 @@ void uiuc_recorder( double dt )
                 fout << CYfbetadrI << " ";
                 break;
               }
+           case CYfabetafI_record:
+             {
+               fout << CYfabetafI << " ";
+               break;
+             }
+           case CYfadafI_record:
+             {
+               fout << CYfadafI << " ";
+               break;
+             }
+           case CYfadrfI_record:
+             {
+               fout << CYfadrfI << " ";
+               break;
+             }
+           case CYfapfI_record:
+             {
+               fout << CYfapfI << " ";
+               break;
+             }
+           case CYfarfI_record:
+             {
+               fout << CYfarfI << " ";
+               break;
+             }
+           case CYo_save_record:
+             {
+               fout << CYo_save << " ";
+               break;
+             }
+           case CY_beta_save_record:
+             {
+               fout << CY_beta_save << " ";
+               break;
+             }
+           case CY_p_save_record:
+             {
+               fout << CY_p_save << " ";
+               break;
+             }
+           case CY_r_save_record:
+             {
+               fout << CY_r_save << " ";
+               break;
+             }
+           case CY_da_save_record:
+             {
+               fout << CY_da_save << " ";
+               break;
+             }
+           case CY_dr_save_record:
+             {
+               fout << CY_dr_save << " ";
+               break;
+             }
+           case CY_dra_save_record:
+             {
+               fout << CY_dra_save << " ";
+               break;
+             }
+           case CY_bdot_save_record:
+             {
+               fout << CY_bdot_save << " ";
+               break;
+             }
             case Cl_record:
               {
                 fout << Cl << " ";
@@ -960,6 +1317,66 @@ void uiuc_recorder( double dt )
                 fout << ClfbetadrI << " ";
                 break;
               }
+           case ClfabetafI_record:
+             {
+               fout << ClfabetafI << " ";
+               break;
+             }
+           case ClfadafI_record:
+             {
+               fout << ClfadafI << " ";
+               break;
+             }
+           case ClfadrfI_record:
+             {
+               fout << ClfadrfI << " ";
+               break;
+             }
+           case ClfapfI_record:
+             {
+               fout << ClfapfI << " ";
+               break;
+             }
+           case ClfarfI_record:
+             {
+               fout << ClfarfI << " ";
+               break;
+             }
+           case Clo_save_record:
+             {
+               fout << Clo_save << " ";
+               break;
+             }
+           case Cl_beta_save_record:
+             {
+               fout << Cl_beta_save << " ";
+               break;
+             }
+           case Cl_p_save_record:
+             {
+               fout << Cl_p_save << " ";
+               break;
+             }
+           case Cl_r_save_record:
+             {
+               fout << Cl_r_save << " ";
+               break;
+             }
+           case Cl_da_save_record:
+             {
+               fout << Cl_da_save << " ";
+               break;
+             }
+           case Cl_dr_save_record:
+             {
+               fout << Cl_dr_save << " ";
+               break;
+             }
+           case Cl_daa_save_record:
+             {
+               fout << Cl_daa_save << " ";
+               break;
+             }
             case Cn_record:
               {
                 fout << Cn << " ";
@@ -975,6 +1392,71 @@ void uiuc_recorder( double dt )
                 fout << CnfbetadrI << " ";
                 break;
               }
+           case CnfabetafI_record:
+             {
+               fout << CnfabetafI << " ";
+               break;
+             }
+           case CnfadafI_record:
+             {
+               fout << CnfadafI << " ";
+               break;
+             }
+           case CnfadrfI_record:
+             {
+               fout << CnfadrfI << " ";
+               break;
+             }
+           case CnfapfI_record:
+             {
+               fout << CnfapfI << " ";
+               break;
+             }
+           case CnfarfI_record:
+             {
+               fout << CnfarfI << " ";
+               break;
+             }
+           case Cno_save_record:
+             {
+               fout << Cno_save << " ";
+               break;
+             }
+           case Cn_beta_save_record:
+             {
+               fout << Cn_beta_save << " ";
+               break;
+             }
+           case Cn_p_save_record:
+             {
+               fout << Cn_p_save << " ";
+               break;
+             }
+           case Cn_r_save_record:
+             {
+               fout << Cn_r_save << " ";
+               break;
+             }
+           case Cn_da_save_record:
+             {
+               fout << Cn_da_save << " ";
+               break;
+             }
+           case Cn_dr_save_record:
+             {
+               fout << Cn_dr_save << " ";
+               break;
+             }
+           case Cn_q_save_record:
+             {
+               fout << Cn_q_save << " ";
+               break;
+             }
+           case Cn_b3_save_record:
+             {
+               fout << Cn_b3_save << " ";
+               break;
+             }
 
               /******************** Ice Detection ********************/
             case CLclean_wing_record:
index 1fa2b40e62e6673770160c2f481abe5275e4a2e5..32c167942116f83132f4fe923c4feab891c00503 100644 (file)
                            the velocities.
               08/27/2001   (RD) Added uiuc_initial_init() to help
                            in starting an A/C at an initial condition
+              02/24/2002   (GD) Added uiuc_network_routine()
+              03/27/2002   (RD) Changed how forces are calculated when
+                           body-axis is used
  
 ----------------------------------------------------------------------
  
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Robert Deters      <rdeters@uiuc.edu>
+              Glen Dimock        <dimock@uiuc.edu>
                David Megginson    <david@megginson.com>
  
 ----------------------------------------------------------------------
@@ -86,8 +90,9 @@
 #include "uiuc_menu.h"
 #include "uiuc_betaprobe.h"
 #include <FDM/LaRCsim/ls_generic.h>
-// #include "Main/simple_udp.h"
+//#include "Main/simple_udp.h"
 #include "uiuc_fog.h" //321654
+//#include "uiuc_network.h"
 
 #if !defined (SG_HAVE_NATIVE_SGI_COMPILERS)
 SG_USING_STD(cout);
@@ -99,6 +104,7 @@ extern "C" void uiuc_force_moment(double dt);
 extern "C" void uiuc_engine_routine();
 extern "C" void uiuc_gear_routine();
 extern "C" void uiuc_record_routine(double dt);
+//extern "C" void uiuc_network_routine();
 extern "C" void uiuc_vel_init ();
 extern "C" void uiuc_initial_init ();
 
@@ -184,21 +190,24 @@ void uiuc_force_moment(double dt)
   uiuc_aerodeflections(dt);
   uiuc_coefficients();
 
-  /* Calculate the wind axis forces */
+  /* Calculate the forces */
   if (CX && CZ)
     {
-      CD = -CX * cos(Alpha) - CZ * sin(Alpha);
-      CL =  CX * sin(Alpha) - CZ * cos(Alpha);
+      F_X_aero = CX * qS;
+      F_Y_aero = CY * qS;
+      F_Z_aero = CZ * qS;
+    }
+  else
+    {
+      F_X_wind = -CD * qS;
+      F_Y_wind = CY * qS;
+      F_Z_wind = -CL * qS;
+
+      /* wind-axis to body-axis transformation */
+      F_X_aero = F_X_wind * Cos_alpha * Cos_beta - F_Y_wind * Cos_alpha * Sin_beta - F_Z_wind * Sin_alpha;
+      F_Y_aero = F_X_wind * Sin_beta + F_Y_wind * Cos_beta;
+      F_Z_aero = F_X_wind * Sin_alpha * Cos_beta - F_Y_wind * Sin_alpha * Sin_beta + F_Z_wind * Cos_alpha;
     }
-  F_X_wind = -1 * CD * qS;
-  F_Y_wind = CY * qS;
-  F_Z_wind = -1 * CL * qS;
-
-  /* wind-axis to body-axis transformation */
-  F_X_aero = F_X_wind * Cos_alpha * Cos_beta - F_Y_wind * Cos_alpha * Sin_beta - F_Z_wind * Sin_alpha;
-  F_Y_aero = F_X_wind * Sin_beta + F_Y_wind * Cos_beta;
-  F_Z_aero = F_X_wind * Sin_alpha * Cos_beta - F_Y_wind * Sin_alpha * Sin_beta + F_Z_wind * Cos_alpha;
-
   /* Moment calculations */
   M_l_aero = Cl * qSb;
   M_m_aero = Cm * qScbar;
@@ -263,4 +272,9 @@ void uiuc_record_routine(double dt)
   if (Simtime >= recordStartTime)
     uiuc_recorder(dt);
 }
+
+//void uiuc_network_routine ()
+//{
+//  uiuc_network();
+//}
 //end uiuc_wrapper.cpp
index c19d9356cdfa50e5eac9cc63283d7cbfc10e0fa0..93d33ea9a21d36cb232bcc099f2b748e01a35bb5 100644 (file)
@@ -4,5 +4,6 @@ void uiuc_force_moment(double dt);
 void uiuc_engine_routine();
 void uiuc_gear_routine();
 void uiuc_record_routine(double dt);
+//void uiuc_network_routine();
 void uiuc_vel_init ();
 void uiuc_initial_init ();