From: curt Date: Mon, 1 Apr 2002 21:37:33 +0000 (+0000) Subject: I have attached revisions to the UIUC code. The revisions include the X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=2717dba826bb83ab03cfd15f2a10bd96095f162c;p=flightgear.git 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 --- diff --git a/src/FDM/LaRCsim.cxx b/src/FDM/LaRCsim.cxx index e33b3485e..a7a2435a0 100644 --- a/src/FDM/LaRCsim.cxx +++ b/src/FDM/LaRCsim.cxx @@ -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); diff --git a/src/FDM/LaRCsim/ls_model.c b/src/FDM/LaRCsim/ls_model.c index e2301d42e..decc78348 100644 --- a/src/FDM/LaRCsim/ls_model.c +++ b/src/FDM/LaRCsim/ls_model.c @@ -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; } } diff --git a/src/FDM/LaRCsim/uiuc_aero.c b/src/FDM/LaRCsim/uiuc_aero.c index e74537345..8edf96a4b 100644 --- a/src/FDM/LaRCsim/uiuc_aero.c +++ b/src/FDM/LaRCsim/uiuc_aero.c @@ -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 -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(); +//} diff --git a/src/FDM/UIUCModel/Makefile.am b/src/FDM/UIUCModel/Makefile.am index 54e1b8466..a3b32b892 100644 --- a/src/FDM/UIUCModel/Makefile.am +++ b/src/FDM/UIUCModel/Makefile.am @@ -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 \ diff --git a/src/FDM/UIUCModel/uiuc_2DdataFileReader.cpp b/src/FDM/UIUCModel/uiuc_2DdataFileReader.cpp index 9c45fe7ce..1d6fda805 100644 --- a/src/FDM/UIUCModel/uiuc_2DdataFileReader.cpp +++ b/src/FDM/UIUCModel/uiuc_2DdataFileReader.cpp @@ -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 + Robert Deters ---------------------------------------------------------------------- @@ -101,14 +104,17 @@ void uiuc_2DdataFileReader( string file_name, istrstream token1(linetoken1.c_str()); istrstream token2(linetoken2.c_str()); - //reset token_value2 for first if statement + //reset token_value1 and token_value2 for first if statement + token_value1 = -999; token_value2 = -999; token1 >> token_value1; token2 >> token_value2; + //chenk to see if it is a blank line + if (token_value1==-999 && token_value2==-999); //check to see if only one value on line (token2 blank) - if (token_value2 == -999) + else if (token_value2 == -999) { y[counter_y] = token_value1 * convert_y; diff --git a/src/FDM/UIUCModel/uiuc_3Dinterpolation.cpp b/src/FDM/UIUCModel/uiuc_3Dinterpolation.cpp new file mode 100644 index 000000000..c60946587 --- /dev/null +++ b/src/FDM/UIUCModel/uiuc_3Dinterpolation.cpp @@ -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 + +---------------------------------------------------------------------- + + 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 // MSVC: to disable C4244 d to f warning + +#include "uiuc_3Dinterpolation.h" + +void uiuc_1DtoSingle( int temp1Darray[30], + int filenumber, + int &single_value) +{ + single_value = temp1Darray[filenumber]; +} + +void uiuc_2Dto1D( double temp2Darray[30][100], + int filenumber, + double array1D[100]) +{ + int count1; + + for (count1=0; count1<=99; count1++) + { + array1D[count1] = temp2Darray[filenumber][count1]; + } +} + +void uiuc_2Dto1D_int( int temp2Darray[30][100], + int filenumber, + int array1D[100]) +{ + int count1; + + for (count1=0; count1<=99; count1++) + { + array1D[count1] = temp2Darray[filenumber][count1]; + } +} + +void uiuc_3Dto2D( double temp3Darray[30][100][100], + int filenumber, + double array2D[100][100]) +{ + int count1, count2; + + for (count1=0; count1<=99; count1++) + { + for (count2=0; count2<=99; count2++) + { + array2D[count1][count2] = temp3Darray[filenumber][count1][count2]; + } + } +} + +double uiuc_3Dinterpolation( double third_Array[30], + double full_xArray[30][100][100], + double full_yArray[30][100], + double full_zArray[30][100][100], + int full_nxArray[30][100], + int full_ny[30], + int third_max, + double third_bet, + double x_value, + double y_value) +{ + double reduced_xArray[100][100], reduced_yArray[100]; + double reduced_zArray[100][100]; + int reduced_nxArray[100], reduced_ny; + + double interpmin, interpmax, third_u, third_l; + double interpI; + int third_min; + int k=1; + bool third_same=false; + + if (third_bet <= third_Array[1]) + { + third_min = 1; + third_same = true; + } + else if (third_bet >= third_Array[third_max]) + { + third_min = third_max; + third_same = true; + } + else + { + while (third_Array[k] <= third_bet) + { + k++; + } + third_max = k; + third_min = k-1; + } + if (third_same) + { + + uiuc_3Dto2D(full_xArray, third_min, reduced_xArray); + uiuc_2Dto1D(full_yArray, third_min, reduced_yArray); + uiuc_3Dto2D(full_zArray, third_min, reduced_zArray); + uiuc_2Dto1D_int(full_nxArray, third_min, reduced_nxArray); + uiuc_1DtoSingle(full_ny, third_min, reduced_ny); + + interpI = uiuc_2Dinterpolation(reduced_xArray, + reduced_yArray, + reduced_zArray, + reduced_nxArray, + reduced_ny, + x_value, + y_value); + } + else + { + uiuc_3Dto2D(full_xArray, third_min, reduced_xArray); + uiuc_2Dto1D(full_yArray, third_min, reduced_yArray); + uiuc_3Dto2D(full_zArray, third_min, reduced_zArray); + uiuc_2Dto1D_int(full_nxArray, third_min, reduced_nxArray); + uiuc_1DtoSingle(full_ny, third_min, reduced_ny); + + interpmin = uiuc_2Dinterpolation(reduced_xArray, + reduced_yArray, + reduced_zArray, + reduced_nxArray, + reduced_ny, + x_value, + y_value); + + uiuc_3Dto2D(full_xArray, third_max, reduced_xArray); + uiuc_2Dto1D(full_yArray, third_max, reduced_yArray); + uiuc_3Dto2D(full_zArray, third_max, reduced_zArray); + uiuc_2Dto1D_int(full_nxArray, third_max, reduced_nxArray); + uiuc_1DtoSingle(full_ny, third_max, reduced_ny); + + interpmax = uiuc_2Dinterpolation(reduced_xArray, + reduced_yArray, + reduced_zArray, + reduced_nxArray, + reduced_ny, + x_value, + y_value); + + third_u = third_Array[third_max]; + third_l = third_Array[third_min]; + + interpI=interpmax - (third_u-third_bet)*(interpmax-interpmin)/(third_u-third_l); + } + + return interpI; + +} + + +double uiuc_3Dinterp_quick( double z[30], + double x[100], + double y[100], + double fxyz[30][100][100], + int xmax, + int ymax, + int zmax, + double zp, + double xp, + double yp) +{ + + int xnuml, xnumu, ynuml, ynumu, znuml, znumu; + double xl, xu, yl, yu, zl, zu; + double ptxl, ptxu, ptyl, ptyu, ptylxl, ptylxu, ptyuxl, ptyuxu; + double ptzl, ptzu, ptzlxl, ptzlxu, ptzuxl, ptzuxu; + double ptzlyl, ptzlyu, ptzuyl, ptzuyu; + double ptzlylxl, ptzlylxu, ptzlyuxl, ptzlyuxu; + double ptzuylxl, ptzuylxu, ptzuyuxl, ptzuyuxu, data_point; + + int i=1; + int j=1; + int k=1; + + bool xsame=false; + bool ysame=false; + bool zsame=false; + + + // Find the z's + if (zp <= z[1]) + { + znuml=1; + zsame=true; + } + else if (zp >= z[zmax]) + { + znuml=zmax; + zsame=true; + } + else + { + while (z[k] <= zp) + k++; + zu=z[k]; + zl=z[k-1]; + znumu=k; + znuml=k-1; + } + + // Find the y's + if (yp <= y[1]) + { + ynuml=1; + ysame=true; + } + else if (yp >= y[ymax]) + { + ynuml=ymax; + ysame=true; + } + else + { + while (y[j] <= yp) + j++; + yu=y[j]; + yl=y[j-1]; + ynumu=j; + ynuml=j-1; + } + + + // Find the x's + if (xp <= x[1]) + { + xnuml=1; + xsame=true; + } + else if (xp >= x[xmax]) + { + xnuml=xmax; + xsame=true; + } + else + { + while (x[i] <= xp) + i++; + xu=x[i]; + xl=x[i-1]; + xnumu=i; + xnuml=i-1; + } + + if (zsame) + { + if (ysame && xsame) + { + data_point = fxyz[znuml][ynuml][xnuml]; + } + else if (ysame) + { + ptxl = fxyz[znuml][ynuml][xnuml]; + ptxu = fxyz[znuml][ynuml][xnumu]; + data_point = ptxu - (xu-xp)*(ptxu-ptxl)/(xu-xl); + } + else if (xsame) + { + ptyl = fxyz[znuml][ynuml][xnuml]; + ptyu = fxyz[znuml][ynumu][xnuml]; + data_point = ptyu - (yu-yp)*(ptyu-ptyl)/(yu-yl); + } + else + { + ptylxl = fxyz[znuml][ynuml][xnuml]; + ptylxu = fxyz[znuml][ynuml][xnumu]; + ptyuxl = fxyz[znuml][ynumu][xnuml]; + ptyuxu = fxyz[znuml][ynumu][xnumu]; + ptyl = ptylxu - (xu-xp)*(ptylxu-ptylxl)/(xu-xl); + ptyu = ptyuxu - (xu-xp)*(ptyuxu-ptyuxl)/(xu-xl); + data_point = ptyu - (yu-yp)*(ptyu-ptyl)/(yu-yl); + } + } + else + { + if (ysame && xsame) + { + ptzl = fxyz[znuml][ynuml][xnuml]; + ptzu = fxyz[znumu][ynuml][xnuml]; + data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl); + } + else if (ysame) + { + ptzlxl = fxyz[znuml][ynuml][xnuml]; + ptzlxu = fxyz[znuml][ynuml][xnumu]; + ptzuxl = fxyz[znumu][ynuml][xnuml]; + ptzuxu = fxyz[znumu][ynuml][xnumu]; + ptzl = ptzlxu - (xu-xp)*(ptzlxu-ptzlxl)/(xu-xl); + ptzu = ptzuxu - (xu-xp)*(ptzuxu-ptzuxl)/(xu-xl); + data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl); + } + else if (xsame) + { + ptzlyl = fxyz[znuml][ynuml][xnuml]; + ptzlyu = fxyz[znuml][ynumu][xnuml]; + ptzuyl = fxyz[znumu][ynuml][xnuml]; + ptzuyu = fxyz[znumu][ynumu][xnuml]; + ptzl = ptzlyu - (yu-yp)*(ptzlyu-ptzlyl)/(yu-yl); + ptzu = ptzuyu - (yu-yp)*(ptzuyu-ptzuyl)/(yu-yl); + data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl); + } + else + { + ptzlylxl = fxyz[znuml][ynuml][xnuml]; + ptzlylxu = fxyz[znuml][ynuml][xnumu]; + ptzlyuxl = fxyz[znuml][ynumu][xnuml]; + ptzlyuxu = fxyz[znuml][ynumu][xnumu]; + ptzuylxl = fxyz[znumu][ynuml][xnuml]; + ptzuylxu = fxyz[znumu][ynuml][xnumu]; + ptzuyuxl = fxyz[znumu][ynumu][xnuml]; + ptzuyuxu = fxyz[znumu][ynumu][xnumu]; + ptzlyl = ptzlylxu - (xu-xp)*(ptzlylxu-ptzlylxl)/(xu-xl); + ptzlyu = ptzlyuxu - (xu-xp)*(ptzlyuxu-ptzlyuxl)/(xu-xl); + ptzuyl = ptzuylxu - (xu-xp)*(ptzuylxu-ptzuylxl)/(xu-xl); + ptzuyu = ptzuyuxu - (xu-xp)*(ptzuyuxu-ptzuyuxl)/(xu-xl); + ptzl = ptzlyu - (yu-yp)*(ptzlyu-ptzlyl)/(yu-yl); + ptzu = ptzuyu - (yu-yp)*(ptzuyu-ptzuyl)/(yu-yl); + data_point = ptzu - (zu-zp)*(ptzu-ptzl)/(zu-zl); + } + + } + + + return data_point; +} diff --git a/src/FDM/UIUCModel/uiuc_3Dinterpolation.h b/src/FDM/UIUCModel/uiuc_3Dinterpolation.h new file mode 100644 index 000000000..3ae2187dc --- /dev/null +++ b/src/FDM/UIUCModel/uiuc_3Dinterpolation.h @@ -0,0 +1,31 @@ +#ifndef _COEF_FLAP_H_ +#define _COEF_FLAP_H_ + +#include + +#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_ diff --git a/src/FDM/UIUCModel/uiuc_aerodeflections.cpp b/src/FDM/UIUCModel/uiuc_aerodeflections.cpp index f84d14452..d87f608b8 100644 --- a/src/FDM/UIUCModel/uiuc_aerodeflections.cpp +++ b/src/FDM/UIUCModel/uiuc_aerodeflections.cpp @@ -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 + Robert Deters Michael Selig ---------------------------------------------------------------------- @@ -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]) { diff --git a/src/FDM/UIUCModel/uiuc_aircraft.h b/src/FDM/UIUCModel/uiuc_aircraft.h index d82817c29..a0d4e1d88 100644 --- a/src/FDM/UIUCModel/uiuc_aircraft.h +++ b/src/FDM/UIUCModel/uiuc_aircraft.h @@ -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 @@ -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; diff --git a/src/FDM/UIUCModel/uiuc_coef_drag.cpp b/src/FDM/UIUCModel/uiuc_coef_drag.cpp index e35cbdce5..6b49c44a0 100644 --- a/src/FDM/UIUCModel/uiuc_coef_drag.cpp +++ b/src/FDM/UIUCModel/uiuc_coef_drag.cpp @@ -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 Jeff Scott + Robert Deters ---------------------------------------------------------------------- @@ -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 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 diff --git a/src/FDM/UIUCModel/uiuc_coef_drag.h b/src/FDM/UIUCModel/uiuc_coef_drag.h index 235347f75..0a5e2253a 100644 --- a/src/FDM/UIUCModel/uiuc_coef_drag.h +++ b/src/FDM/UIUCModel/uiuc_coef_drag.h @@ -7,6 +7,7 @@ #include "uiuc_aircraft.h" #include "uiuc_1Dinterpolation.h" #include "uiuc_2Dinterpolation.h" +#include "uiuc_3Dinterpolation.h" #include "uiuc_ice.h" diff --git a/src/FDM/UIUCModel/uiuc_coef_lift.cpp b/src/FDM/UIUCModel/uiuc_coef_lift.cpp index 9eb54c264..d7fb6e73d 100644 --- a/src/FDM/UIUCModel/uiuc_coef_lift.cpp +++ b/src/FDM/UIUCModel/uiuc_coef_lift.cpp @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_coef_lift.h b/src/FDM/UIUCModel/uiuc_coef_lift.h index 2edfa8e31..f4a8c12ea 100644 --- a/src/FDM/UIUCModel/uiuc_coef_lift.h +++ b/src/FDM/UIUCModel/uiuc_coef_lift.h @@ -7,6 +7,7 @@ #include "uiuc_aircraft.h" #include "uiuc_1Dinterpolation.h" #include "uiuc_2Dinterpolation.h" +#include "uiuc_3Dinterpolation.h" #include "uiuc_ice.h" diff --git a/src/FDM/UIUCModel/uiuc_coef_pitch.cpp b/src/FDM/UIUCModel/uiuc_coef_pitch.cpp index 7c35bd978..8368e1771 100644 --- a/src/FDM/UIUCModel/uiuc_coef_pitch.cpp +++ b/src/FDM/UIUCModel/uiuc_coef_pitch.cpp @@ -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 Jeff Scott + Robert Deters ---------------------------------------------------------------------- @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_coef_pitch.h b/src/FDM/UIUCModel/uiuc_coef_pitch.h index 8b010e1f3..772ea3bb0 100644 --- a/src/FDM/UIUCModel/uiuc_coef_pitch.h +++ b/src/FDM/UIUCModel/uiuc_coef_pitch.h @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_coef_roll.cpp b/src/FDM/UIUCModel/uiuc_coef_roll.cpp index 840ad9079..57026aaaa 100644 --- a/src/FDM/UIUCModel/uiuc_coef_roll.cpp +++ b/src/FDM/UIUCModel/uiuc_coef_roll.cpp @@ -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 Jeff Scott + Robert Deters ---------------------------------------------------------------------- @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_coef_roll.h b/src/FDM/UIUCModel/uiuc_coef_roll.h index a2cf5e41f..17f0d95ef 100644 --- a/src/FDM/UIUCModel/uiuc_coef_roll.h +++ b/src/FDM/UIUCModel/uiuc_coef_roll.h @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_coef_sideforce.cpp b/src/FDM/UIUCModel/uiuc_coef_sideforce.cpp index e0e39637b..dc30657f5 100644 --- a/src/FDM/UIUCModel/uiuc_coef_sideforce.cpp +++ b/src/FDM/UIUCModel/uiuc_coef_sideforce.cpp @@ -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 Jeff Scott + Robert Deters ---------------------------------------------------------------------- @@ -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; diff --git a/src/FDM/UIUCModel/uiuc_coef_sideforce.h b/src/FDM/UIUCModel/uiuc_coef_sideforce.h index 772dad562..fae0c19c2 100644 --- a/src/FDM/UIUCModel/uiuc_coef_sideforce.h +++ b/src/FDM/UIUCModel/uiuc_coef_sideforce.h @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_coef_yaw.cpp b/src/FDM/UIUCModel/uiuc_coef_yaw.cpp index 5bef09adb..5753584e6 100644 --- a/src/FDM/UIUCModel/uiuc_coef_yaw.cpp +++ b/src/FDM/UIUCModel/uiuc_coef_yaw.cpp @@ -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 Jeff Scott + Robert Deters ---------------------------------------------------------------------- @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_coef_yaw.h b/src/FDM/UIUCModel/uiuc_coef_yaw.h index 8ab3055c2..dae420a7a 100644 --- a/src/FDM/UIUCModel/uiuc_coef_yaw.h +++ b/src/FDM/UIUCModel/uiuc_coef_yaw.h @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_initializemaps1.cpp b/src/FDM/UIUCModel/uiuc_initializemaps1.cpp deleted file mode 100644 index 91ac76045..000000000 --- a/src/FDM/UIUCModel/uiuc_initializemaps1.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/********************************************************************** - * - * FILENAME: uiuc_initializemaps1.cpp - * - * ---------------------------------------------------------------------- - * - * DESCRIPTION: Initializes the maps for various keywords - * - * ---------------------------------------------------------------------- - * - * STATUS: alpha version - * - * ---------------------------------------------------------------------- - * - * REFERENCES: - * - * ---------------------------------------------------------------------- - * - * HISTORY: 01/26/2000 initial release - * - * ---------------------------------------------------------------------- - * - * AUTHOR(S): Bipin Sehgal - * - * ---------------------------------------------------------------------- - * - * VARIABLES: - * - * ---------------------------------------------------------------------- - * - * INPUTS: * - * - * ---------------------------------------------------------------------- - * - * OUTPUTS: * - * - * ---------------------------------------------------------------------- - * - * CALLED BY: uiuc_wrapper.cpp - * - * ---------------------------------------------------------------------- - * - * CALLS TO: * - * - * ---------------------------------------------------------------------- - * - * COPYRIGHT: (C) 2000 by Michael Selig - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA or view http://www.gnu.org/copyleft/gpl.html. - * - ***********************************************************************/ - - -#include "uiuc_initializemaps.h" - -void uiuc_initializemaps1 () -{ - Keyword_map["init"] = init_flag; - Keyword_map["geometry"] = geometry_flag; - Keyword_map["controlSurface"] = controlSurface_flag; - Keyword_map["mass"] = mass_flag; - Keyword_map["engine"] = engine_flag; - Keyword_map["CD"] = CD_flag; - Keyword_map["CL"] = CL_flag; - Keyword_map["Cm"] = Cm_flag; - Keyword_map["CY"] = CY_flag; - Keyword_map["Cl"] = Cl_flag; - Keyword_map["Cn"] = Cn_flag; - Keyword_map["gear"] = gear_flag; - Keyword_map["ice"] = ice_flag; - Keyword_map["record"] = record_flag; - - - - init_map["Dx_pilot"] = Dx_pilot_flag; - init_map["Dy_pilot"] = Dy_pilot_flag; - init_map["Dz_pilot"] = Dz_pilot_flag; - init_map["V_north"] = V_north_flag; - init_map["V_east"] = V_east_flag; - init_map["V_down"] = V_down_flag; - init_map["P_body"] = P_body_flag; - init_map["Q_body"] = Q_body_flag; - init_map["R_body"] = R_body_flag; - init_map["Phi"] = Phi_flag; - init_map["Theta"] = Theta_flag; - init_map["Psi"] = Psi_flag; - - - geometry_map["bw"] = bw_flag; - geometry_map["cbar"] = cbar_flag; - geometry_map["Sw"] = Sw_flag; - - - controlSurface_map["de"] = de_flag; - controlSurface_map["da"] = da_flag; - controlSurface_map["dr"] = dr_flag; - - - mass_map["Mass"] = Mass_flag; - mass_map["I_xx"] = I_xx_flag; - mass_map["I_yy"] = I_yy_flag; - mass_map["I_zz"] = I_zz_flag; - mass_map["I_xz"] = I_xz_flag; - - - engine_map["simpleSingle"] = simpleSingle_flag; - engine_map["c172"] = c172_flag; - - - CD_map["CDo"] = CDo_flag; - CD_map["CDK"] = CDK_flag; - CD_map["CD_a"] = CD_a_flag; - CD_map["CD_de"] = CD_de_flag; - CD_map["CDfa"] = CDfa_flag; - CD_map["CDfade"] = CDfade_flag; -} - -// end uiuc_initializemaps.cpp diff --git a/src/FDM/UIUCModel/uiuc_initializemaps2.cpp b/src/FDM/UIUCModel/uiuc_initializemaps2.cpp deleted file mode 100644 index 6315cefa9..000000000 --- a/src/FDM/UIUCModel/uiuc_initializemaps2.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/********************************************************************** - * - * FILENAME: uiuc_initializemaps.cpp - * - * ---------------------------------------------------------------------- - * - * DESCRIPTION: Initializes the maps for various keywords - * - * ---------------------------------------------------------------------- - * - * STATUS: alpha version - * - * ---------------------------------------------------------------------- - * - * REFERENCES: - * - * ---------------------------------------------------------------------- - * - * HISTORY: 01/26/2000 initial release - * - * ---------------------------------------------------------------------- - * - * AUTHOR(S): Bipin Sehgal - * - * ---------------------------------------------------------------------- - * - * VARIABLES: - * - * ---------------------------------------------------------------------- - * - * INPUTS: * - * - * ---------------------------------------------------------------------- - * - * OUTPUTS: * - * - * ---------------------------------------------------------------------- - * - * CALLED BY: uiuc_wrapper.cpp - * - * ---------------------------------------------------------------------- - * - * CALLS TO: * - * - * ---------------------------------------------------------------------- - * - * COPYRIGHT: (C) 2000 by Michael Selig - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA or view http://www.gnu.org/copyleft/gpl.html. - * - ***********************************************************************/ - - -#include "uiuc_initializemaps.h" - -void uiuc_initializemaps2 () -{ - CL_map["CLo"] = CLo_flag; - CL_map["CL_a"] = CL_a_flag; - CL_map["CL_adot"] = CL_adot_flag; - CL_map["CL_q"] = CL_q_flag; - CL_map["CL_de"] = CL_de_flag; - CL_map["CLfa"] = CLfa_flag; - CL_map["CLfade"] = CLfade_flag; - - - Cm_map["Cmo"] = Cmo_flag; - Cm_map["Cm_a"] = Cm_a_flag; - Cm_map["Cm_adot"] = Cm_adot_flag; - Cm_map["Cm_q"] = Cm_q_flag; - Cm_map["Cm_de"] = Cm_de_flag; - Cm_map["Cmfade"] = Cmfade_flag; - - - CY_map["CYo"] = CYo_flag; - CY_map["CY_beta"] = CY_beta_flag; - CY_map["CY_p"] = CY_p_flag; - CY_map["CY_r"] = CY_r_flag; - CY_map["CY_da"] = CY_da_flag; - CY_map["CY_dr"] = CY_dr_flag; - CY_map["CYfada"] = CYfada_flag; - CY_map["CYfbetadr"] = CYfbetadr_flag; - - - Cl_map["Clo"] = Clo_flag; - Cl_map["Cl_beta"] = Cl_beta_flag; - Cl_map["Cl_p"] = Cl_p_flag; - Cl_map["Cl_r"] = Cl_r_flag; - Cl_map["Cl_da"] = Cl_da_flag; - Cl_map["Cl_dr"] = Cl_dr_flag; - Cl_map["Clfada"] = Clfada_flag; - Cl_map["Clfbetadr"] = Clfbetadr_flag; - - Cn_map["Cno"] = Cno_flag; - Cn_map["Cn_beta"] = Cn_beta_flag; - Cn_map["Cn_p"] = Cn_p_flag; - Cn_map["Cn_r"] = Cn_r_flag; - Cn_map["Cn_da"] = Cn_da_flag; - Cn_map["Cn_dr"] = Cn_dr_flag; - Cn_map["Cnfada"] = Cnfada_flag; - Cn_map["Cnfbetadr"] = Cnfbetadr_flag; -} - -// end uiuc_initializemaps.cpp diff --git a/src/FDM/UIUCModel/uiuc_initializemaps3.cpp b/src/FDM/UIUCModel/uiuc_initializemaps3.cpp deleted file mode 100644 index e4ee3be63..000000000 --- a/src/FDM/UIUCModel/uiuc_initializemaps3.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/********************************************************************** - * - * FILENAME: uiuc_initializemaps.cpp - * - * ---------------------------------------------------------------------- - * - * DESCRIPTION: Initializes the maps for various keywords - * - * ---------------------------------------------------------------------- - * - * STATUS: alpha version - * - * ---------------------------------------------------------------------- - * - * REFERENCES: - * - * ---------------------------------------------------------------------- - * - * HISTORY: 01/26/2000 initial release - * - * ---------------------------------------------------------------------- - * - * AUTHOR(S): Bipin Sehgal - * - * ---------------------------------------------------------------------- - * - * VARIABLES: - * - * ---------------------------------------------------------------------- - * - * INPUTS: * - * - * ---------------------------------------------------------------------- - * - * OUTPUTS: * - * - * ---------------------------------------------------------------------- - * - * CALLED BY: uiuc_wrapper.cpp - * - * ---------------------------------------------------------------------- - * - * CALLS TO: * - * - * ---------------------------------------------------------------------- - * - * COPYRIGHT: (C) 2000 by Michael Selig - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA or view http://www.gnu.org/copyleft/gpl.html. - * - ***********************************************************************/ - - -#include "uiuc_initializemaps.h" - -void uiuc_initializemaps3 () -{ - ice_map["iceTime"] = iceTime_flag; - ice_map["transientTime"] = transientTime_flag; - ice_map["eta_final"] = eta_final_flag; - ice_map["kCDo"] = kCDo_flag; - ice_map["kCDK"] = kCDK_flag; - ice_map["kCD_a"] = kCD_a_flag; - ice_map["kCD_de"] = kCD_de_flag; - ice_map["kCLo"] = kCLo_flag; - ice_map["kCL_a"] = kCL_a_flag; - ice_map["kCL_adot"] = kCL_adot_flag; - ice_map["kCL_q"] = kCL_q_flag; - ice_map["kCL_de"] = kCL_de_flag; - ice_map["kCmo"] = kCmo_flag; - ice_map["kCm_a"] = kCm_a_flag; - ice_map["kCm_adot"] = kCm_adot_flag; - ice_map["kCm_q"] = kCm_q_flag; - ice_map["kCm_de"] = kCm_de_flag; - ice_map["kCYo"] = kCYo_flag; - ice_map["kCY_beta"] = kCY_beta_flag; - ice_map["kCY_p"] = kCY_p_flag; - ice_map["kCY_r"] = kCY_r_flag; - ice_map["kCY_da"] = kCY_da_flag; - ice_map["kCY_dr"] = kCY_dr_flag; - ice_map["kClo"] = kClo_flag; - ice_map["kCl_beta"] = kCl_beta_flag; - ice_map["kCl_p"] = kCl_p_flag; - ice_map["kCl_r"] = kCl_r_flag; - ice_map["kCl_da"] = kCl_da_flag; - ice_map["kCl_dr"] = kCl_dr_flag; - ice_map["kCno"] = kCno_flag; - ice_map["kCn_beta"] = kCn_beta_flag; - ice_map["kCn_p"] = kCn_p_flag; - ice_map["kCn_r"] = kCn_r_flag; - ice_map["kCn_da"] = kCn_da_flag; - ice_map["kCn_dr"] = kCn_dr_flag; -} - -// end uiuc_initializemaps.cpp diff --git a/src/FDM/UIUCModel/uiuc_initializemaps4.cpp b/src/FDM/UIUCModel/uiuc_initializemaps4.cpp deleted file mode 100644 index 6a72775c0..000000000 --- a/src/FDM/UIUCModel/uiuc_initializemaps4.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/********************************************************************** - * - * FILENAME: uiuc_initializemaps.cpp - * - * ---------------------------------------------------------------------- - * - * DESCRIPTION: Initializes the maps for various keywords - * - * ---------------------------------------------------------------------- - * - * STATUS: alpha version - * - * ---------------------------------------------------------------------- - * - * REFERENCES: - * - * ---------------------------------------------------------------------- - * - * HISTORY: 01/26/2000 initial release - * - * ---------------------------------------------------------------------- - * - * AUTHOR(S): Bipin Sehgal - * - * ---------------------------------------------------------------------- - * - * 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 diff --git a/src/FDM/UIUCModel/uiuc_map_CD.cpp b/src/FDM/UIUCModel/uiuc_map_CD.cpp index e7d427c6a..acd13a2c1 100644 --- a/src/FDM/UIUCModel/uiuc_map_CD.cpp +++ b/src/FDM/UIUCModel/uiuc_map_CD.cpp @@ -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 Jeff Scott - + Robert Deters + ---------------------------------------------------------------------- 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 diff --git a/src/FDM/UIUCModel/uiuc_map_CL.cpp b/src/FDM/UIUCModel/uiuc_map_CL.cpp index 78dcc0590..e11fe9a74 100644 --- a/src/FDM/UIUCModel/uiuc_map_CL.cpp +++ b/src/FDM/UIUCModel/uiuc_map_CL.cpp @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_map_CY.cpp b/src/FDM/UIUCModel/uiuc_map_CY.cpp index 6664e2fd6..914e0763e 100644 --- a/src/FDM/UIUCModel/uiuc_map_CY.cpp +++ b/src/FDM/UIUCModel/uiuc_map_CY.cpp @@ -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 Jeff Scott + Robert Deters ---------------------------------------------------------------------- @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_map_Cm.cpp b/src/FDM/UIUCModel/uiuc_map_Cm.cpp index 4cb997a71..8af3622f8 100644 --- a/src/FDM/UIUCModel/uiuc_map_Cm.cpp +++ b/src/FDM/UIUCModel/uiuc_map_Cm.cpp @@ -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 Jeff Scott - + Robert Deters + ---------------------------------------------------------------------- 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 diff --git a/src/FDM/UIUCModel/uiuc_map_Cn.cpp b/src/FDM/UIUCModel/uiuc_map_Cn.cpp index a18bd2a91..b569ff094 100644 --- a/src/FDM/UIUCModel/uiuc_map_Cn.cpp +++ b/src/FDM/UIUCModel/uiuc_map_Cn.cpp @@ -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 Jeff Scott - + Robert Deters + ---------------------------------------------------------------------- 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 diff --git a/src/FDM/UIUCModel/uiuc_map_Croll.cpp b/src/FDM/UIUCModel/uiuc_map_Croll.cpp index 561039719..7792dc119 100644 --- a/src/FDM/UIUCModel/uiuc_map_Croll.cpp +++ b/src/FDM/UIUCModel/uiuc_map_Croll.cpp @@ -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 Jeff Scott - + Robert Deters + ---------------------------------------------------------------------- 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 diff --git a/src/FDM/UIUCModel/uiuc_map_controlSurface.cpp b/src/FDM/UIUCModel/uiuc_map_controlSurface.cpp index 9935d734a..f7c17ec9f 100644 --- a/src/FDM/UIUCModel/uiuc_map_controlSurface.cpp +++ b/src/FDM/UIUCModel/uiuc_map_controlSurface.cpp @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_map_record3.cpp b/src/FDM/UIUCModel/uiuc_map_record3.cpp index e705f6989..3f6f6b40e 100644 --- a/src/FDM/UIUCModel/uiuc_map_record3.cpp +++ b/src/FDM/UIUCModel/uiuc_map_record3.cpp @@ -18,11 +18,13 @@ ---------------------------------------------------------------------- HISTORY: 06/03/2000 file creation + 11/12/2001 (RD) Added flap_goal and flap_pos ---------------------------------------------------------------------- AUTHOR(S): Bipin Sehgal Jeff Scott + Robert Deters ---------------------------------------------------------------------- @@ -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 diff --git a/src/FDM/UIUCModel/uiuc_map_record4.cpp b/src/FDM/UIUCModel/uiuc_map_record4.cpp index 41ee20502..745297387 100644 --- a/src/FDM/UIUCModel/uiuc_map_record4.cpp +++ b/src/FDM/UIUCModel/uiuc_map_record4.cpp @@ -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 Jeff Scott - + Robert Deters + ---------------------------------------------------------------------- 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 ********************/ diff --git a/src/FDM/UIUCModel/uiuc_menu.cpp b/src/FDM/UIUCModel/uiuc_menu.cpp index 4d8529fd9..3c01d86aa 100644 --- a/src/FDM/UIUCModel/uiuc_menu.cpp +++ b/src/FDM/UIUCModel/uiuc_menu.cpp @@ -56,6 +56,22 @@ P_body, Q_body, R_body, Phi, Theta, Psi, U_body, V_body, and W_body to help in starting the A/C at an initial condition. + 10/25/2001 (RD) Added new variables needed for the non- + linear Twin Otter model at zero flaps + (Cxfxxf0) + 11/12/2001 (RD) Added new variables needed for the non- + linear Twin Otter model with flaps + (Cxfxxf). Removed zero flap variables. + Added minmaxfind() which is needed for non- + linear variables + 02/13/2002 (RD) Added variables so linear aero model + values can be recorded + 02/18/2002 (RD) Added variables necessary to use the + uiuc_3Dinterp_quick() function. Takes + advantage of data in a "nice" form (data + that are in a rectangular matrix). + 03/13/2002 (RD) Added aircraft_directory so full path + is no longer needed in the aircraft.dat file ---------------------------------------------------------------------- @@ -136,9 +152,29 @@ bool check_float(string &token) return (stream >> value); } +void minmaxfind( bool tarray[30], int &tmin, int &tmax) +{ + int n=0; + bool first=true; + + while (n<=30) + { + if (tarray[n]) + { + if (first) + { + tmin=n; + first=false; + } + tmax=n; + } + n++; + } +} void uiuc_menu( string aircraft_name ) { + string aircraft_directory; stack command_list; double token_value; int token_value_recordRate; @@ -150,7 +186,38 @@ void uiuc_menu( string aircraft_name ) string linetoken4; string linetoken5; string linetoken6; - + string linetoken7; + string linetoken8; + string linetoken9; + + double datafile_xArray[100][100], datafile_yArray[100]; + double datafile_zArray[100][100]; + int datafile_nxArray[100], datafile_ny; + + bool CXfabetaf_first = true; + bool CXfadef_first = true; + bool CXfaqf_first = true; + bool CZfabetaf_first = true; + bool CZfadef_first = true; + bool CZfaqf_first = true; + bool Cmfabetaf_first = true; + bool Cmfadef_first = true; + bool Cmfaqf_first = true; + bool CYfabetaf_first = true; + bool CYfadaf_first = true; + bool CYfadrf_first = true; + bool CYfapf_first = true; + bool CYfarf_first = true; + bool Clfabetaf_first = true; + bool Clfadaf_first = true; + bool Clfadrf_first = true; + bool Clfapf_first = true; + bool Clfarf_first = true; + bool Cnfabetaf_first = true; + bool Cnfadaf_first = true; + bool Cnfadrf_first = true; + bool Cnfapf_first = true; + bool Cnfarf_first = true; /* the following default setting should eventually be moved to a default or uiuc_init routine */ @@ -186,6 +253,11 @@ void uiuc_menu( string aircraft_name ) exit(-1); } + cerr << "UIUC File " << aircraft_name <<" is being used" << endl; + aircraft_directory = aircraft_name; + int index_aircraft_dat = aircraft_directory.find("aircraft.dat"); + aircraft_directory.erase(index_aircraft_dat,12); + for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line) { cout << *command_line << endl; @@ -196,11 +268,17 @@ void uiuc_menu( string aircraft_name ) linetoken4 = airplane -> getToken (*command_line, 4); linetoken5 = airplane -> getToken (*command_line, 5); linetoken6 = airplane -> getToken (*command_line, 6); + linetoken7 = airplane -> getToken (*command_line, 7); + linetoken8 = airplane -> getToken (*command_line, 8); + linetoken9 = airplane -> getToken (*command_line, 9); istrstream token3(linetoken3.c_str()); istrstream token4(linetoken4.c_str()); istrstream token5(linetoken5.c_str()); istrstream token6(linetoken6.c_str()); + istrstream token7(linetoken7.c_str()); + istrstream token8(linetoken8.c_str()); + istrstream token9(linetoken9.c_str()); switch (Keyword_map[linetoken1]) { @@ -756,7 +834,7 @@ void uiuc_menu( string aircraft_name ) case elevator_input_flag: { elevator_input = true; - elevator_input_file = linetoken3; + elevator_input_file = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -772,7 +850,7 @@ void uiuc_menu( string aircraft_name ) case aileron_input_flag: { aileron_input = true; - aileron_input_file = linetoken3; + aileron_input_file = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -788,7 +866,7 @@ void uiuc_menu( string aircraft_name ) case rudder_input_flag: { rudder_input = true; - rudder_input_file = linetoken3; + rudder_input_file = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -816,6 +894,26 @@ void uiuc_menu( string aircraft_name ) pilot_rud_no_check = true; break; } + case flap_max_flag: + { + if (check_float(linetoken3)) + token3 >> token_value; + else + uiuc_warnings_errors(1, *command_line); + + flap_max = token_value; + break; + } + case flap_rate_flag: + { + if (check_float(linetoken3)) + token3 >> token_value; + else + uiuc_warnings_errors(1, *command_line); + + flap_rate = token_value; + break; + } default: { uiuc_warnings_errors(2, *command_line); @@ -935,7 +1033,7 @@ void uiuc_menu( string aircraft_name ) case Throttle_pct_input_flag: { Throttle_pct_input = true; - Throttle_pct_input_file = linetoken3; + Throttle_pct_input_file = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1047,7 +1145,7 @@ void uiuc_menu( string aircraft_name ) } case CDfa_flag: { - CDfa = linetoken3; + CDfa = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1065,7 +1163,7 @@ void uiuc_menu( string aircraft_name ) } case CDfCL_flag: { - CDfCL = linetoken3; + CDfCL = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1083,7 +1181,7 @@ void uiuc_menu( string aircraft_name ) } case CDfade_flag: { - CDfade = linetoken3; + CDfade = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1107,7 +1205,7 @@ void uiuc_menu( string aircraft_name ) } case CDfdf_flag: { - CDfdf = linetoken3; + CDfdf = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1125,7 +1223,7 @@ void uiuc_menu( string aircraft_name ) } case CDfadf_flag: { - CDfadf = linetoken3; + CDfadf = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1279,6 +1377,162 @@ void uiuc_menu( string aircraft_name ) aeroDragParts -> storeCommands (*command_line); break; } + case CXfabetaf_flag: + { + int CXfabetaf_index, i; + string CXfabetaf_file; + double flap_value; + CXfabetaf_file = aircraft_directory + linetoken3; + token4 >> CXfabetaf_index; + if (CXfabetaf_index < 1 || CXfabetaf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CXfabetaf_index > CXfabetaf_nf) + CXfabetaf_nf = CXfabetaf_index; + token5 >> flap_value; + CXfabetaf_fArray[CXfabetaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CXfabetaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CXfabetaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CXfabetaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CXfabetaf_aArray[CXfabetaf_index] = datafile_xArray; + CXfabetaf_betaArray[CXfabetaf_index] = datafile_yArray; + CXfabetaf_CXArray[CXfabetaf_index] = datafile_zArray; + CXfabetaf_nAlphaArray[CXfabetaf_index] = datafile_nxArray; + CXfabetaf_nbeta[CXfabetaf_index] = datafile_ny; + if (CXfabetaf_first==true) + { + if (CXfabetaf_nice == 1) + { + CXfabetaf_na_nice = datafile_nxArray[1]; + CXfabetaf_nb_nice = datafile_ny; + CXfabetaf_bArray_nice = datafile_yArray; + for (i=1; i<=CXfabetaf_na_nice; i++) + CXfabetaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroDragParts -> storeCommands (*command_line); + CXfabetaf_first=false; + } + break; + } + case CXfadef_flag: + { + int CXfadef_index, i; + string CXfadef_file; + double flap_value; + CXfadef_file = aircraft_directory + linetoken3; + token4 >> CXfadef_index; + if (CXfadef_index < 0 || CXfadef_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CXfadef_index > CXfadef_nf) + CXfadef_nf = CXfadef_index; + token5 >> flap_value; + CXfadef_fArray[CXfadef_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CXfadef_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CXfadef_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CXfadef_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CXfadef_aArray[CXfadef_index] = datafile_xArray; + CXfadef_deArray[CXfadef_index] = datafile_yArray; + CXfadef_CXArray[CXfadef_index] = datafile_zArray; + CXfadef_nAlphaArray[CXfadef_index] = datafile_nxArray; + CXfadef_nde[CXfadef_index] = datafile_ny; + if (CXfadef_first==true) + { + if (CXfadef_nice == 1) + { + CXfadef_na_nice = datafile_nxArray[1]; + CXfadef_nde_nice = datafile_ny; + CXfadef_deArray_nice = datafile_yArray; + for (i=1; i<=CXfadef_na_nice; i++) + CXfadef_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroDragParts -> storeCommands (*command_line); + CXfadef_first=false; + } + break; + } + case CXfaqf_flag: + { + int CXfaqf_index, i; + string CXfaqf_file; + double flap_value; + CXfaqf_file = aircraft_directory + linetoken3; + token4 >> CXfaqf_index; + if (CXfaqf_index < 0 || CXfaqf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CXfaqf_index > CXfaqf_nf) + CXfaqf_nf = CXfaqf_index; + token5 >> flap_value; + CXfaqf_fArray[CXfaqf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CXfaqf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CXfaqf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CXfaqf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CXfaqf_aArray[CXfaqf_index] = datafile_xArray; + CXfaqf_qArray[CXfaqf_index] = datafile_yArray; + CXfaqf_CXArray[CXfaqf_index] = datafile_zArray; + CXfaqf_nAlphaArray[CXfaqf_index] = datafile_nxArray; + CXfaqf_nq[CXfaqf_index] = datafile_ny; + if (CXfaqf_first==true) + { + if (CXfaqf_nice == 1) + { + CXfaqf_na_nice = datafile_nxArray[1]; + CXfaqf_nq_nice = datafile_ny; + CXfaqf_qArray_nice = datafile_yArray; + for (i=1; i<=CXfaqf_na_nice; i++) + CXfaqf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroDragParts -> storeCommands (*command_line); + CXfaqf_first=false; + } + break; + } default: { uiuc_warnings_errors(2, *command_line); @@ -1366,7 +1620,7 @@ void uiuc_menu( string aircraft_name ) } case CLfa_flag: { - CLfa = linetoken3; + CLfa = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1384,7 +1638,7 @@ void uiuc_menu( string aircraft_name ) } case CLfade_flag: { - CLfade = linetoken3; + CLfade = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1408,7 +1662,7 @@ void uiuc_menu( string aircraft_name ) } case CLfdf_flag: { - CLfdf = linetoken3; + CLfdf = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1436,7 +1690,7 @@ void uiuc_menu( string aircraft_name ) } case CLfadf_flag: { - CLfadf = linetoken3; + CLfadf = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1580,7 +1834,7 @@ void uiuc_menu( string aircraft_name ) } case CZfa_flag: { - CZfa = linetoken3; + CZfa = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1596,6 +1850,162 @@ void uiuc_menu( string aircraft_name ) aeroLiftParts -> storeCommands (*command_line); break; } + case CZfabetaf_flag: + { + int CZfabetaf_index, i; + string CZfabetaf_file; + double flap_value; + CZfabetaf_file = aircraft_directory + linetoken3; + token4 >> CZfabetaf_index; + if (CZfabetaf_index < 0 || CZfabetaf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CZfabetaf_index > CZfabetaf_nf) + CZfabetaf_nf = CZfabetaf_index; + token5 >> flap_value; + CZfabetaf_fArray[CZfabetaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CZfabetaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CZfabetaf_file) and + conversion factors; function returns array of + beta (betaArray) and corresponding + alpha (aArray) and CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and beta array (nbeta) */ + uiuc_2DdataFileReader(CZfabetaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CZfabetaf_aArray[CZfabetaf_index] = datafile_xArray; + CZfabetaf_betaArray[CZfabetaf_index] = datafile_yArray; + CZfabetaf_CZArray[CZfabetaf_index] = datafile_zArray; + CZfabetaf_nAlphaArray[CZfabetaf_index] = datafile_nxArray; + CZfabetaf_nbeta[CZfabetaf_index] = datafile_ny; + if (CZfabetaf_first==true) + { + if (CZfabetaf_nice == 1) + { + CZfabetaf_na_nice = datafile_nxArray[1]; + CZfabetaf_nb_nice = datafile_ny; + CZfabetaf_bArray_nice = datafile_yArray; + for (i=1; i<=CZfabetaf_na_nice; i++) + CZfabetaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroLiftParts -> storeCommands (*command_line); + CZfabetaf_first=false; + } + break; + } + case CZfadef_flag: + { + int CZfadef_index, i; + string CZfadef_file; + double flap_value; + CZfadef_file = aircraft_directory + linetoken3; + token4 >> CZfadef_index; + if (CZfadef_index < 0 || CZfadef_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CZfadef_index > CZfadef_nf) + CZfadef_nf = CZfadef_index; + token5 >> flap_value; + CZfadef_fArray[CZfadef_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CZfadef_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CZfadef_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CZfadef_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CZfadef_aArray[CZfadef_index] = datafile_xArray; + CZfadef_deArray[CZfadef_index] = datafile_yArray; + CZfadef_CZArray[CZfadef_index] = datafile_zArray; + CZfadef_nAlphaArray[CZfadef_index] = datafile_nxArray; + CZfadef_nde[CZfadef_index] = datafile_ny; + if (CZfadef_first==true) + { + if (CZfadef_nice == 1) + { + CZfadef_na_nice = datafile_nxArray[1]; + CZfadef_nde_nice = datafile_ny; + CZfadef_deArray_nice = datafile_yArray; + for (i=1; i<=CZfadef_na_nice; i++) + CZfadef_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroLiftParts -> storeCommands (*command_line); + CZfadef_first=false; + } + break; + } + case CZfaqf_flag: + { + int CZfaqf_index, i; + string CZfaqf_file; + double flap_value; + CZfaqf_file = aircraft_directory + linetoken3; + token4 >> CZfaqf_index; + if (CZfaqf_index < 0 || CZfaqf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CZfaqf_index > CZfaqf_nf) + CZfaqf_nf = CZfaqf_index; + token5 >> flap_value; + CZfaqf_fArray[CZfaqf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CZfaqf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CZfaqf_file) and + conversion factors; function returns array of + pitch rate (qArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and pitch rate array (nq) */ + uiuc_2DdataFileReader(CZfaqf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CZfaqf_aArray[CZfaqf_index] = datafile_xArray; + CZfaqf_qArray[CZfaqf_index] = datafile_yArray; + CZfaqf_CZArray[CZfaqf_index] = datafile_zArray; + CZfaqf_nAlphaArray[CZfaqf_index] = datafile_nxArray; + CZfaqf_nq[CZfaqf_index] = datafile_ny; + if (CZfaqf_first==true) + { + if (CZfaqf_nice == 1) + { + CZfaqf_na_nice = datafile_nxArray[1]; + CZfaqf_nq_nice = datafile_ny; + CZfaqf_qArray_nice = datafile_yArray; + for (i=1; i<=CZfaqf_na_nice; i++) + CZfaqf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroLiftParts -> storeCommands (*command_line); + CZfaqf_first=false; + } + break; + } default: { uiuc_warnings_errors(2, *command_line); @@ -1731,7 +2141,7 @@ void uiuc_menu( string aircraft_name ) } case Cmfa_flag: { - Cmfa = linetoken3; + Cmfa = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1749,7 +2159,7 @@ void uiuc_menu( string aircraft_name ) } case Cmfade_flag: { - Cmfade = linetoken3; + Cmfade = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1773,7 +2183,7 @@ void uiuc_menu( string aircraft_name ) } case Cmfdf_flag: { - Cmfdf = linetoken3; + Cmfdf = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; convert_y = uiuc_convert(token_value_convert1); @@ -1791,7 +2201,7 @@ void uiuc_menu( string aircraft_name ) } case Cmfadf_flag: { - Cmfadf = linetoken3; + Cmfadf = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1813,6 +2223,162 @@ void uiuc_menu( string aircraft_name ) aeroPitchParts -> storeCommands (*command_line); break; } + case Cmfabetaf_flag: + { + int Cmfabetaf_index, i; + string Cmfabetaf_file; + double flap_value; + Cmfabetaf_file = aircraft_directory + linetoken3; + token4 >> Cmfabetaf_index; + if (Cmfabetaf_index < 0 || Cmfabetaf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (Cmfabetaf_index > Cmfabetaf_nf) + Cmfabetaf_nf = Cmfabetaf_index; + token5 >> flap_value; + Cmfabetaf_fArray[Cmfabetaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cmfabetaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cmfabetaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cmfabetaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cmfabetaf_aArray[Cmfabetaf_index] = datafile_xArray; + Cmfabetaf_betaArray[Cmfabetaf_index] = datafile_yArray; + Cmfabetaf_CmArray[Cmfabetaf_index] = datafile_zArray; + Cmfabetaf_nAlphaArray[Cmfabetaf_index] = datafile_nxArray; + Cmfabetaf_nbeta[Cmfabetaf_index] = datafile_ny; + if (Cmfabetaf_first==true) + { + if (Cmfabetaf_nice == 1) + { + Cmfabetaf_na_nice = datafile_nxArray[1]; + Cmfabetaf_nb_nice = datafile_ny; + Cmfabetaf_bArray_nice = datafile_yArray; + for (i=1; i<=Cmfabetaf_na_nice; i++) + Cmfabetaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroPitchParts -> storeCommands (*command_line); + Cmfabetaf_first=false; + } + break; + } + case Cmfadef_flag: + { + int Cmfadef_index, i; + string Cmfadef_file; + double flap_value; + Cmfadef_file = aircraft_directory + linetoken3; + token4 >> Cmfadef_index; + if (Cmfadef_index < 0 || Cmfadef_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (Cmfadef_index > Cmfadef_nf) + Cmfadef_nf = Cmfadef_index; + token5 >> flap_value; + Cmfadef_fArray[Cmfadef_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cmfadef_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cmfadef_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cmfadef_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cmfadef_aArray[Cmfadef_index] = datafile_xArray; + Cmfadef_deArray[Cmfadef_index] = datafile_yArray; + Cmfadef_CmArray[Cmfadef_index] = datafile_zArray; + Cmfadef_nAlphaArray[Cmfadef_index] = datafile_nxArray; + Cmfadef_nde[Cmfadef_index] = datafile_ny; + if (Cmfadef_first==true) + { + if (Cmfadef_nice == 1) + { + Cmfadef_na_nice = datafile_nxArray[1]; + Cmfadef_nde_nice = datafile_ny; + Cmfadef_deArray_nice = datafile_yArray; + for (i=1; i<=Cmfadef_na_nice; i++) + Cmfadef_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroPitchParts -> storeCommands (*command_line); + Cmfadef_first=false; + } + break; + } + case Cmfaqf_flag: + { + int Cmfaqf_index, i; + string Cmfaqf_file; + double flap_value; + Cmfaqf_file = aircraft_directory + linetoken3; + token4 >> Cmfaqf_index; + if (Cmfaqf_index < 0 || Cmfaqf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (Cmfaqf_index > Cmfaqf_nf) + Cmfaqf_nf = Cmfaqf_index; + token5 >> flap_value; + Cmfaqf_fArray[Cmfaqf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cmfaqf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cmfaqf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cmfaqf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cmfaqf_aArray[Cmfaqf_index] = datafile_xArray; + Cmfaqf_qArray[Cmfaqf_index] = datafile_yArray; + Cmfaqf_CmArray[Cmfaqf_index] = datafile_zArray; + Cmfaqf_nAlphaArray[Cmfaqf_index] = datafile_nxArray; + Cmfaqf_nq[Cmfaqf_index] = datafile_ny; + if (Cmfaqf_first==true) + { + if (Cmfaqf_nice == 1) + { + Cmfaqf_na_nice = datafile_nxArray[1]; + Cmfaqf_nq_nice = datafile_ny; + Cmfaqf_qArray_nice = datafile_yArray; + for (i=1; i<=Cmfaqf_na_nice; i++) + Cmfaqf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroPitchParts -> storeCommands (*command_line); + Cmfaqf_first=false; + } + break; + } default: { uiuc_warnings_errors(2, *command_line); @@ -1925,7 +2491,7 @@ void uiuc_menu( string aircraft_name ) } case CYfada_flag: { - CYfada = linetoken3; + CYfada = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1949,7 +2515,7 @@ void uiuc_menu( string aircraft_name ) } case CYfbetadr_flag: { - CYfbetadr = linetoken3; + CYfbetadr = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -1971,6 +2537,266 @@ void uiuc_menu( string aircraft_name ) aeroSideforceParts -> storeCommands (*command_line); break; } + case CYfabetaf_flag: + { + int CYfabetaf_index, i; + string CYfabetaf_file; + double flap_value; + CYfabetaf_file = aircraft_directory + linetoken3; + token4 >> CYfabetaf_index; + if (CYfabetaf_index < 0 || CYfabetaf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CYfabetaf_index > CYfabetaf_nf) + CYfabetaf_nf = CYfabetaf_index; + token5 >> flap_value; + CYfabetaf_fArray[CYfabetaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CYfabetaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CYfabetaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CYfabetaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CYfabetaf_aArray[CYfabetaf_index] = datafile_xArray; + CYfabetaf_betaArray[CYfabetaf_index] = datafile_yArray; + CYfabetaf_CYArray[CYfabetaf_index] = datafile_zArray; + CYfabetaf_nAlphaArray[CYfabetaf_index] = datafile_nxArray; + CYfabetaf_nbeta[CYfabetaf_index] = datafile_ny; + if (CYfabetaf_first==true) + { + if (CYfabetaf_nice == 1) + { + CYfabetaf_na_nice = datafile_nxArray[1]; + CYfabetaf_nb_nice = datafile_ny; + CYfabetaf_bArray_nice = datafile_yArray; + for (i=1; i<=CYfabetaf_na_nice; i++) + CYfabetaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroSideforceParts -> storeCommands (*command_line); + CYfabetaf_first=false; + } + break; + } + case CYfadaf_flag: + { + int CYfadaf_index, i; + string CYfadaf_file; + double flap_value; + CYfadaf_file = aircraft_directory + linetoken3; + token4 >> CYfadaf_index; + if (CYfadaf_index < 0 || CYfadaf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CYfadaf_index > CYfadaf_nf) + CYfadaf_nf = CYfadaf_index; + token5 >> flap_value; + CYfadaf_fArray[CYfadaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CYfadaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CYfadaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CYfadaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CYfadaf_aArray[CYfadaf_index] = datafile_xArray; + CYfadaf_daArray[CYfadaf_index] = datafile_yArray; + CYfadaf_CYArray[CYfadaf_index] = datafile_zArray; + CYfadaf_nAlphaArray[CYfadaf_index] = datafile_nxArray; + CYfadaf_nda[CYfadaf_index] = datafile_ny; + if (CYfadaf_first==true) + { + if (CYfadaf_nice == 1) + { + CYfadaf_na_nice = datafile_nxArray[1]; + CYfadaf_nda_nice = datafile_ny; + CYfadaf_daArray_nice = datafile_yArray; + for (i=1; i<=CYfadaf_na_nice; i++) + CYfadaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroSideforceParts -> storeCommands (*command_line); + CYfadaf_first=false; + } + break; + } + case CYfadrf_flag: + { + int CYfadrf_index, i; + string CYfadrf_file; + double flap_value; + CYfadrf_file = aircraft_directory + linetoken3; + token4 >> CYfadrf_index; + if (CYfadrf_index < 0 || CYfadrf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CYfadrf_index > CYfadrf_nf) + CYfadrf_nf = CYfadrf_index; + token5 >> flap_value; + CYfadrf_fArray[CYfadrf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CYfadrf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CYfadrf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CYfadrf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CYfadrf_aArray[CYfadrf_index] = datafile_xArray; + CYfadrf_drArray[CYfadrf_index] = datafile_yArray; + CYfadrf_CYArray[CYfadrf_index] = datafile_zArray; + CYfadrf_nAlphaArray[CYfadrf_index] = datafile_nxArray; + CYfadrf_ndr[CYfadrf_index] = datafile_ny; + if (CYfadrf_first==true) + { + if (CYfadrf_nice == 1) + { + CYfadrf_na_nice = datafile_nxArray[1]; + CYfadrf_ndr_nice = datafile_ny; + CYfadrf_drArray_nice = datafile_yArray; + for (i=1; i<=CYfadrf_na_nice; i++) + CYfadrf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroSideforceParts -> storeCommands (*command_line); + CYfadrf_first=false; + } + break; + } + case CYfapf_flag: + { + int CYfapf_index, i; + string CYfapf_file; + double flap_value; + CYfapf_file = aircraft_directory + linetoken3; + token4 >> CYfapf_index; + if (CYfapf_index < 0 || CYfapf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CYfapf_index > CYfapf_nf) + CYfapf_nf = CYfapf_index; + token5 >> flap_value; + CYfapf_fArray[CYfapf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CYfapf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CYfapf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CYfapf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CYfapf_aArray[CYfapf_index] = datafile_xArray; + CYfapf_pArray[CYfapf_index] = datafile_yArray; + CYfapf_CYArray[CYfapf_index] = datafile_zArray; + CYfapf_nAlphaArray[CYfapf_index] = datafile_nxArray; + CYfapf_np[CYfapf_index] = datafile_ny; + if (CYfapf_first==true) + { + if (CYfapf_nice == 1) + { + CYfapf_na_nice = datafile_nxArray[1]; + CYfapf_np_nice = datafile_ny; + CYfapf_pArray_nice = datafile_yArray; + for (i=1; i<=CYfapf_na_nice; i++) + CYfapf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroSideforceParts -> storeCommands (*command_line); + CYfapf_first=false; + } + break; + } + case CYfarf_flag: + { + int CYfarf_index, i; + string CYfarf_file; + double flap_value; + CYfarf_file = aircraft_directory + linetoken3; + token4 >> CYfarf_index; + if (CYfarf_index < 0 || CYfarf_index >= 30) + uiuc_warnings_errors(1, *command_line); + if (CYfarf_index > CYfarf_nf) + CYfarf_nf = CYfarf_index; + token5 >> flap_value; + CYfarf_fArray[CYfarf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> CYfarf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (CYfarf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(CYfarf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + CYfarf_aArray[CYfarf_index] = datafile_xArray; + CYfarf_rArray[CYfarf_index] = datafile_yArray; + CYfarf_CYArray[CYfarf_index] = datafile_zArray; + CYfarf_nAlphaArray[CYfarf_index] = datafile_nxArray; + CYfarf_nr[CYfarf_index] = datafile_ny; + if (CYfarf_first==true) + { + if (CYfarf_nice == 1) + { + CYfarf_na_nice = datafile_nxArray[1]; + CYfarf_nr_nice = datafile_ny; + CYfarf_rArray_nice = datafile_yArray; + for (i=1; i<=CYfarf_na_nice; i++) + CYfarf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroSideforceParts -> storeCommands (*command_line); + CYfarf_first=false; + } + break; + } default: { uiuc_warnings_errors(2, *command_line); @@ -2071,7 +2897,7 @@ void uiuc_menu( string aircraft_name ) } case Clfada_flag: { - Clfada = linetoken3; + Clfada = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -2095,7 +2921,7 @@ void uiuc_menu( string aircraft_name ) } case Clfbetadr_flag: { - Clfbetadr = linetoken3; + Clfbetadr = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -2117,10 +2943,270 @@ void uiuc_menu( string aircraft_name ) aeroRollParts -> storeCommands (*command_line); break; } + case Clfabetaf_flag: + { + int Clfabetaf_index, i; + string Clfabetaf_file; + double flap_value; + Clfabetaf_file = aircraft_directory + linetoken3; + token4 >> Clfabetaf_index; + if (Clfabetaf_index < 0 || Clfabetaf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Clfabetaf_index > Clfabetaf_nf) + Clfabetaf_nf = Clfabetaf_index; + token5 >> flap_value; + Clfabetaf_fArray[Clfabetaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Clfabetaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Clfabetaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Clfabetaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Clfabetaf_aArray[Clfabetaf_index] = datafile_xArray; + Clfabetaf_betaArray[Clfabetaf_index] = datafile_yArray; + Clfabetaf_ClArray[Clfabetaf_index] = datafile_zArray; + Clfabetaf_nAlphaArray[Clfabetaf_index] = datafile_nxArray; + Clfabetaf_nbeta[Clfabetaf_index] = datafile_ny; + if (Clfabetaf_first==true) + { + if (Clfabetaf_nice == 1) + { + Clfabetaf_na_nice = datafile_nxArray[1]; + Clfabetaf_nb_nice = datafile_ny; + Clfabetaf_bArray_nice = datafile_yArray; + for (i=1; i<=Clfabetaf_na_nice; i++) + Clfabetaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroRollParts -> storeCommands (*command_line); + Clfabetaf_first=false; + } + break; + } + case Clfadaf_flag: + { + int Clfadaf_index, i; + string Clfadaf_file; + double flap_value; + Clfadaf_file = aircraft_directory + linetoken3; + token4 >> Clfadaf_index; + if (Clfadaf_index < 0 || Clfadaf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Clfadaf_index > Clfadaf_nf) + Clfadaf_nf = Clfadaf_index; + token5 >> flap_value; + Clfadaf_fArray[Clfadaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Clfadaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Clfadaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Clfadaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Clfadaf_aArray[Clfadaf_index] = datafile_xArray; + Clfadaf_daArray[Clfadaf_index] = datafile_yArray; + Clfadaf_ClArray[Clfadaf_index] = datafile_zArray; + Clfadaf_nAlphaArray[Clfadaf_index] = datafile_nxArray; + Clfadaf_nda[Clfadaf_index] = datafile_ny; + if (Clfadaf_first==true) + { + if (Clfadaf_nice == 1) + { + Clfadaf_na_nice = datafile_nxArray[1]; + Clfadaf_nda_nice = datafile_ny; + Clfadaf_daArray_nice = datafile_yArray; + for (i=1; i<=Clfadaf_na_nice; i++) + Clfadaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroRollParts -> storeCommands (*command_line); + Clfadaf_first=false; + } + break; + } + case Clfadrf_flag: + { + int Clfadrf_index, i; + string Clfadrf_file; + double flap_value; + Clfadrf_file = aircraft_directory + linetoken3; + token4 >> Clfadrf_index; + if (Clfadrf_index < 0 || Clfadrf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Clfadrf_index > Clfadrf_nf) + Clfadrf_nf = Clfadrf_index; + token5 >> flap_value; + Clfadrf_fArray[Clfadrf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Clfadrf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Clfadrf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Clfadrf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Clfadrf_aArray[Clfadrf_index] = datafile_xArray; + Clfadrf_drArray[Clfadrf_index] = datafile_yArray; + Clfadrf_ClArray[Clfadrf_index] = datafile_zArray; + Clfadrf_nAlphaArray[Clfadrf_index] = datafile_nxArray; + Clfadrf_ndr[Clfadrf_index] = datafile_ny; + if (Clfadrf_first==true) + { + if (Clfadrf_nice == 1) + { + Clfadrf_na_nice = datafile_nxArray[1]; + Clfadrf_ndr_nice = datafile_ny; + Clfadrf_drArray_nice = datafile_yArray; + for (i=1; i<=Clfadrf_na_nice; i++) + Clfadrf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroRollParts -> storeCommands (*command_line); + Clfadrf_first=false; + } + break; + } + case Clfapf_flag: + { + int Clfapf_index, i; + string Clfapf_file; + double flap_value; + Clfapf_file = aircraft_directory + linetoken3; + token4 >> Clfapf_index; + if (Clfapf_index < 0 || Clfapf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Clfapf_index > Clfapf_nf) + Clfapf_nf = Clfapf_index; + token5 >> flap_value; + Clfapf_fArray[Clfapf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Clfapf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Clfapf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Clfapf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Clfapf_aArray[Clfapf_index] = datafile_xArray; + Clfapf_pArray[Clfapf_index] = datafile_yArray; + Clfapf_ClArray[Clfapf_index] = datafile_zArray; + Clfapf_nAlphaArray[Clfapf_index] = datafile_nxArray; + Clfapf_np[Clfapf_index] = datafile_ny; + if (Clfapf_first==true) + { + if (Clfapf_nice == 1) + { + Clfapf_na_nice = datafile_nxArray[1]; + Clfapf_np_nice = datafile_ny; + Clfapf_pArray_nice = datafile_yArray; + for (i=1; i<=Clfapf_na_nice; i++) + Clfapf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroRollParts -> storeCommands (*command_line); + Clfapf_first=false; + } + break; + } + case Clfarf_flag: + { + int Clfarf_index, i; + string Clfarf_file; + double flap_value; + Clfarf_file = aircraft_directory + linetoken3; + token4 >> Clfarf_index; + if (Clfarf_index < 0 || Clfarf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Clfarf_index > Clfarf_nf) + Clfarf_nf = Clfarf_index; + token5 >> flap_value; + Clfarf_fArray[Clfarf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Clfarf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Clfarf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Clfarf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Clfarf_aArray[Clfarf_index] = datafile_xArray; + Clfarf_rArray[Clfarf_index] = datafile_yArray; + Clfarf_ClArray[Clfarf_index] = datafile_zArray; + Clfarf_nAlphaArray[Clfarf_index] = datafile_nxArray; + Clfarf_nr[Clfarf_index] = datafile_ny; + if (Clfarf_first==true) + { + if (Clfarf_nice == 1) + { + Clfarf_na_nice = datafile_nxArray[1]; + Clfarf_nr_nice = datafile_ny; + Clfarf_rArray_nice = datafile_yArray; + for (i=1; i<=Clfarf_na_nice; i++) + Clfarf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroRollParts -> storeCommands (*command_line); + Clfarf_first=false; + } + break; + } default: { uiuc_warnings_errors(2, *command_line); - break; + break; } }; break; @@ -2229,7 +3315,7 @@ void uiuc_menu( string aircraft_name ) } case Cnfada_flag: { - Cnfada = linetoken3; + Cnfada = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -2253,7 +3339,7 @@ void uiuc_menu( string aircraft_name ) } case Cnfbetadr_flag: { - Cnfbetadr = linetoken3; + Cnfbetadr = aircraft_directory + linetoken3; token4 >> token_value_convert1; token5 >> token_value_convert2; token6 >> token_value_convert3; @@ -2275,6 +3361,266 @@ void uiuc_menu( string aircraft_name ) aeroYawParts -> storeCommands (*command_line); break; } + case Cnfabetaf_flag: + { + int Cnfabetaf_index, i; + string Cnfabetaf_file; + double flap_value; + Cnfabetaf_file = aircraft_directory + linetoken3; + token4 >> Cnfabetaf_index; + if (Cnfabetaf_index < 0 || Cnfabetaf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Cnfabetaf_index > Cnfabetaf_nf) + Cnfabetaf_nf = Cnfabetaf_index; + token5 >> flap_value; + Cnfabetaf_fArray[Cnfabetaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cnfabetaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cnfabetaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cnfabetaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cnfabetaf_aArray[Cnfabetaf_index] = datafile_xArray; + Cnfabetaf_betaArray[Cnfabetaf_index] = datafile_yArray; + Cnfabetaf_CnArray[Cnfabetaf_index] = datafile_zArray; + Cnfabetaf_nAlphaArray[Cnfabetaf_index] = datafile_nxArray; + Cnfabetaf_nbeta[Cnfabetaf_index] = datafile_ny; + if (Cnfabetaf_first==true) + { + if (Cnfabetaf_nice == 1) + { + Cnfabetaf_na_nice = datafile_nxArray[1]; + Cnfabetaf_nb_nice = datafile_ny; + Cnfabetaf_bArray_nice = datafile_yArray; + for (i=1; i<=Cnfabetaf_na_nice; i++) + Cnfabetaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroYawParts -> storeCommands (*command_line); + Cnfabetaf_first=false; + } + break; + } + case Cnfadaf_flag: + { + int Cnfadaf_index, i; + string Cnfadaf_file; + double flap_value; + Cnfadaf_file = aircraft_directory + linetoken3; + token4 >> Cnfadaf_index; + if (Cnfadaf_index < 0 || Cnfadaf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Cnfadaf_index > Cnfadaf_nf) + Cnfadaf_nf = Cnfadaf_index; + token5 >> flap_value; + Cnfadaf_fArray[Cnfadaf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cnfadaf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cnfadaf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cnfadaf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cnfadaf_aArray[Cnfadaf_index] = datafile_xArray; + Cnfadaf_daArray[Cnfadaf_index] = datafile_yArray; + Cnfadaf_CnArray[Cnfadaf_index] = datafile_zArray; + Cnfadaf_nAlphaArray[Cnfadaf_index] = datafile_nxArray; + Cnfadaf_nda[Cnfadaf_index] = datafile_ny; + if (Cnfadaf_first==true) + { + if (Cnfadaf_nice == 1) + { + Cnfadaf_na_nice = datafile_nxArray[1]; + Cnfadaf_nda_nice = datafile_ny; + Cnfadaf_daArray_nice = datafile_yArray; + for (i=1; i<=Cnfadaf_na_nice; i++) + Cnfadaf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroYawParts -> storeCommands (*command_line); + Cnfadaf_first=false; + } + break; + } + case Cnfadrf_flag: + { + int Cnfadrf_index, i; + string Cnfadrf_file; + double flap_value; + Cnfadrf_file = aircraft_directory + linetoken3; + token4 >> Cnfadrf_index; + if (Cnfadrf_index < 0 || Cnfadrf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Cnfadrf_index > Cnfadrf_nf) + Cnfadrf_nf = Cnfadrf_index; + token5 >> flap_value; + Cnfadrf_fArray[Cnfadrf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cnfadrf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cnfadrf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cnfadrf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cnfadrf_aArray[Cnfadrf_index] = datafile_xArray; + Cnfadrf_drArray[Cnfadrf_index] = datafile_yArray; + Cnfadrf_CnArray[Cnfadrf_index] = datafile_zArray; + Cnfadrf_nAlphaArray[Cnfadrf_index] = datafile_nxArray; + Cnfadrf_ndr[Cnfadrf_index] = datafile_ny; + if (Cnfadrf_first==true) + { + if (Cnfadrf_nice == 1) + { + Cnfadrf_na_nice = datafile_nxArray[1]; + Cnfadrf_ndr_nice = datafile_ny; + Cnfadrf_drArray_nice = datafile_yArray; + for (i=1; i<=Cnfadrf_na_nice; i++) + Cnfadrf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroYawParts -> storeCommands (*command_line); + Cnfadrf_first=false; + } + break; + } + case Cnfapf_flag: + { + int Cnfapf_index, i; + string Cnfapf_file; + double flap_value; + Cnfapf_file = aircraft_directory + linetoken3; + token4 >> Cnfapf_index; + if (Cnfapf_index < 0 || Cnfapf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Cnfapf_index > Cnfapf_nf) + Cnfapf_nf = Cnfapf_index; + token5 >> flap_value; + Cnfapf_fArray[Cnfapf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cnfapf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cnfapf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cnfapf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cnfapf_aArray[Cnfapf_index] = datafile_xArray; + Cnfapf_pArray[Cnfapf_index] = datafile_yArray; + Cnfapf_CnArray[Cnfapf_index] = datafile_zArray; + Cnfapf_nAlphaArray[Cnfapf_index] = datafile_nxArray; + Cnfapf_np[Cnfapf_index] = datafile_ny; + if (Cnfapf_first==true) + { + if (Cnfapf_nice == 1) + { + Cnfapf_na_nice = datafile_nxArray[1]; + Cnfapf_np_nice = datafile_ny; + Cnfapf_pArray_nice = datafile_yArray; + for (i=1; i<=Cnfapf_na_nice; i++) + Cnfapf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroYawParts -> storeCommands (*command_line); + Cnfapf_first=false; + } + break; + } + case Cnfarf_flag: + { + int Cnfarf_index, i; + string Cnfarf_file; + double flap_value; + Cnfarf_file = aircraft_directory + linetoken3; + token4 >> Cnfarf_index; + if (Cnfarf_index < 0 || Cnfarf_index >= 100) + uiuc_warnings_errors(1, *command_line); + if (Cnfarf_index > Cnfarf_nf) + Cnfarf_nf = Cnfarf_index; + token5 >> flap_value; + Cnfarf_fArray[Cnfarf_index] = flap_value; + token6 >> token_value_convert1; + token7 >> token_value_convert2; + token8 >> token_value_convert3; + token9 >> Cnfarf_nice; + convert_z = uiuc_convert(token_value_convert1); + convert_x = uiuc_convert(token_value_convert2); + convert_y = uiuc_convert(token_value_convert3); + /* call 2D File Reader with file name (Cnfarf_file) and + conversion factors; function returns array of + elevator deflections (deArray) and corresponding + alpha (aArray) and delta CZ (CZArray) values and + max number of terms in alpha arrays (nAlphaArray) + and delfection array (nde) */ + uiuc_2DdataFileReader(Cnfarf_file, + datafile_xArray, + datafile_yArray, + datafile_zArray, + datafile_nxArray, + datafile_ny); + Cnfarf_aArray[Cnfarf_index] = datafile_xArray; + Cnfarf_rArray[Cnfarf_index] = datafile_yArray; + Cnfarf_CnArray[Cnfarf_index] = datafile_zArray; + Cnfarf_nAlphaArray[Cnfarf_index] = datafile_nxArray; + Cnfarf_nr[Cnfarf_index] = datafile_ny; + if (Cnfarf_first==true) + { + if (Cnfarf_nice == 1) + { + Cnfarf_na_nice = datafile_nxArray[1]; + Cnfarf_nr_nice = datafile_ny; + Cnfarf_rArray_nice = datafile_yArray; + for (i=1; i<=Cnfarf_na_nice; i++) + Cnfarf_aArray_nice[i] = datafile_xArray[1][i]; + } + aeroYawParts -> storeCommands (*command_line); + Cnfarf_first=false; + } + break; + } default: { uiuc_warnings_errors(2, *command_line); @@ -3894,6 +5240,16 @@ void uiuc_menu( string aircraft_name ) recordParts -> storeCommands (*command_line); break; } + case flap_goal_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case flap_pos_record: + { + recordParts -> storeCommands (*command_line); + break; + } /****************** Aero Coefficients ******************/ case CD_record: @@ -3926,6 +5282,111 @@ void uiuc_menu( string aircraft_name ) recordParts -> storeCommands (*command_line); break; } + case CXfabetafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CXfadefI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CXfaqfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CDo_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CDK_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CD_a_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CD_adot_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CD_q_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CD_ih_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CD_de_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CXo_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CXK_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_a_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_a2_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_a3_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_adot_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_q_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_de_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_dr_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_df_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CX_adf_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } case CL_record: { recordParts -> storeCommands (*command_line); @@ -3956,6 +5417,106 @@ void uiuc_menu( string aircraft_name ) recordParts -> storeCommands (*command_line); break; } + case CZfaI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZfabetafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZfadefI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZfaqfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CLo_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CL_a_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CL_adot_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CL_q_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CL_ih_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CL_de_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZo_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_a_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_a2_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_a3_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_adot_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_q_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_de_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_deb2_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_df_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CZ_adf_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } case Cm_record: { recordParts -> storeCommands (*command_line); @@ -3981,6 +5542,71 @@ void uiuc_menu( string aircraft_name ) recordParts -> storeCommands (*command_line); break; } + case CmfabetafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CmfadefI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CmfaqfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cmo_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_a_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_a2_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_adot_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_q_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_ih_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_de_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_b2_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_r_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cm_df_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } case CY_record: { recordParts -> storeCommands (*command_line); @@ -3996,6 +5622,71 @@ void uiuc_menu( string aircraft_name ) recordParts -> storeCommands (*command_line); break; } + case CYfabetafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CYfadafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CYfadrfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CYfapfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CYfarfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CYo_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CY_beta_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CY_p_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CY_r_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CY_da_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CY_dr_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CY_dra_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CY_bdot_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } case Cl_record: { recordParts -> storeCommands (*command_line); @@ -4011,6 +5702,66 @@ void uiuc_menu( string aircraft_name ) recordParts -> storeCommands (*command_line); break; } + case ClfabetafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case ClfadafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case ClfadrfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case ClfapfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case ClfarfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Clo_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cl_beta_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cl_p_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cl_r_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cl_da_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cl_dr_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cl_daa_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } case Cn_record: { recordParts -> storeCommands (*command_line); @@ -4026,6 +5777,71 @@ void uiuc_menu( string aircraft_name ) recordParts -> storeCommands (*command_line); break; } + case CnfabetafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CnfadafI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CnfadrfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CnfapfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case CnfarfI_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cno_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cn_beta_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cn_p_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cn_r_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cn_da_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cn_dr_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cn_q_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } + case Cn_b3_save_record: + { + recordParts -> storeCommands (*command_line); + break; + } /******************** Ice Detection ********************/ case CLclean_wing_record: diff --git a/src/FDM/UIUCModel/uiuc_recorder.cpp b/src/FDM/UIUCModel/uiuc_recorder.cpp index 44afd0d88..80ccc60c7 100644 --- a/src/FDM/UIUCModel/uiuc_recorder.cpp +++ b/src/FDM/UIUCModel/uiuc_recorder.cpp @@ -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 + Robert Deters ---------------------------------------------------------------------- @@ -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: diff --git a/src/FDM/UIUCModel/uiuc_wrapper.cpp b/src/FDM/UIUCModel/uiuc_wrapper.cpp index 1fa2b40e6..32c167942 100644 --- a/src/FDM/UIUCModel/uiuc_wrapper.cpp +++ b/src/FDM/UIUCModel/uiuc_wrapper.cpp @@ -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 Robert Deters + Glen Dimock David Megginson ---------------------------------------------------------------------- @@ -86,8 +90,9 @@ #include "uiuc_menu.h" #include "uiuc_betaprobe.h" #include -// #include "Main/simple_udp.h" +//#include "Main/simple_udp.h" #include "uiuc_fog.h" //321654 +//#include "uiuc_network.h" #if !defined (SG_HAVE_NATIVE_SGI_COMPILERS) SG_USING_STD(cout); @@ -99,6 +104,7 @@ extern "C" void uiuc_force_moment(double dt); extern "C" void uiuc_engine_routine(); extern "C" void uiuc_gear_routine(); extern "C" void uiuc_record_routine(double dt); +//extern "C" void uiuc_network_routine(); extern "C" void uiuc_vel_init (); extern "C" void uiuc_initial_init (); @@ -184,21 +190,24 @@ void uiuc_force_moment(double dt) uiuc_aerodeflections(dt); uiuc_coefficients(); - /* Calculate the wind axis forces */ + /* Calculate the forces */ if (CX && CZ) { - CD = -CX * cos(Alpha) - CZ * sin(Alpha); - CL = CX * sin(Alpha) - CZ * cos(Alpha); + F_X_aero = CX * qS; + F_Y_aero = CY * qS; + F_Z_aero = CZ * qS; + } + else + { + F_X_wind = -CD * qS; + F_Y_wind = CY * qS; + F_Z_wind = -CL * qS; + + /* wind-axis to body-axis transformation */ + F_X_aero = F_X_wind * Cos_alpha * Cos_beta - F_Y_wind * Cos_alpha * Sin_beta - F_Z_wind * Sin_alpha; + F_Y_aero = F_X_wind * Sin_beta + F_Y_wind * Cos_beta; + F_Z_aero = F_X_wind * Sin_alpha * Cos_beta - F_Y_wind * Sin_alpha * Sin_beta + F_Z_wind * Cos_alpha; } - F_X_wind = -1 * CD * qS; - F_Y_wind = CY * qS; - F_Z_wind = -1 * CL * qS; - - /* wind-axis to body-axis transformation */ - F_X_aero = F_X_wind * Cos_alpha * Cos_beta - F_Y_wind * Cos_alpha * Sin_beta - F_Z_wind * Sin_alpha; - F_Y_aero = F_X_wind * Sin_beta + F_Y_wind * Cos_beta; - F_Z_aero = F_X_wind * Sin_alpha * Cos_beta - F_Y_wind * Sin_alpha * Sin_beta + F_Z_wind * Cos_alpha; - /* Moment calculations */ M_l_aero = Cl * qSb; M_m_aero = Cm * qScbar; @@ -263,4 +272,9 @@ void uiuc_record_routine(double dt) if (Simtime >= recordStartTime) uiuc_recorder(dt); } + +//void uiuc_network_routine () +//{ +// uiuc_network(); +//} //end uiuc_wrapper.cpp diff --git a/src/FDM/UIUCModel/uiuc_wrapper.h b/src/FDM/UIUCModel/uiuc_wrapper.h index c19d9356c..93d33ea9a 100644 --- a/src/FDM/UIUCModel/uiuc_wrapper.h +++ b/src/FDM/UIUCModel/uiuc_wrapper.h @@ -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 ();