1
0
Fork 0

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
This commit is contained in:
curt 2002-04-01 21:37:33 +00:00
parent f14b7950c1
commit 2717dba826
38 changed files with 4637 additions and 595 deletions

View 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);

View file

@ -37,6 +37,22 @@
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;
}
}

View 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)
----------------------------------------------------------------------------
@ -58,32 +60,38 @@
#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();
//}

View 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 \

View file

@ -18,10 +18,13 @@
----------------------------------------------------------------------
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;

View file

@ -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;
}

View file

@ -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_

View file

@ -22,10 +22,15 @@
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])
{

View file

@ -53,6 +53,19 @@
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;

View file

@ -19,11 +19,23 @@
----------------------------------------------------------------------
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
----------------------------------------------------------------------
@ -71,14 +85,16 @@
**********************************************************************/
#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

View 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"

View file

@ -20,6 +20,17 @@
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
----------------------------------------------------------------------
@ -75,13 +88,14 @@
#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

View 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"

View file

@ -19,11 +19,23 @@
----------------------------------------------------------------------
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

View 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>

View file

@ -19,11 +19,23 @@
----------------------------------------------------------------------
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

View 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>

View file

@ -19,11 +19,23 @@
----------------------------------------------------------------------
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;

View 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>

View file

@ -19,11 +19,23 @@
----------------------------------------------------------------------
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

View 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>

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -17,12 +17,19 @@
----------------------------------------------------------------------
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

View file

@ -18,6 +18,12 @@
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

View file

@ -17,11 +17,18 @@
----------------------------------------------------------------------
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

View file

@ -17,12 +17,19 @@
----------------------------------------------------------------------
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

View file

@ -17,12 +17,19 @@
----------------------------------------------------------------------
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

View file

@ -17,12 +17,19 @@
----------------------------------------------------------------------
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

View file

@ -17,9 +17,10 @@
----------------------------------------------------------------------
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

View file

@ -18,11 +18,13 @@
----------------------------------------------------------------------
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

View file

@ -18,12 +18,21 @@
----------------------------------------------------------------------
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 ********************/

File diff suppressed because it is too large Load diff

View file

@ -25,10 +25,22 @@
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:

View file

@ -24,11 +24,15 @@
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;
}
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;
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;
}
/* 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

View 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 ();