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.
----------------------------------------------------------------------
CALLS TO: uiuc_1Dinterpolation
uiuc_2Dinterpolation
uiuc_ice_filter
+ uiuc_3Dinterpolation
+ uiuc_3Dinterp_quick
----------------------------------------------------------------------
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.
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**********************************************************************/
#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)
CLiced_tail += CLo;
}
}
- CL += CLo;
+ CLo_save = CLo;
+ CL += CLo_save;
break;
}
case CL_a_flag:
CL_a = uiuc_ice_filter(CL_a_clean,kCL_a);
if (beta_model)
{
- CLclean_wing += CL_a_clean * Alpha;
- CLclean_tail += CL_a_clean * Alpha;
- CLiced_wing += CL_a * Alpha;
- CLiced_tail += CL_a * Alpha;
+ CLclean_wing += CL_a_clean * Std_Alpha;
+ CLclean_tail += CL_a_clean * Std_Alpha;
+ CLiced_wing += CL_a * Std_Alpha;
+ CLiced_tail += CL_a * Std_Alpha;
}
}
- CL += CL_a * Alpha;
+ CL_a_save = CL_a * Std_Alpha;
+ CL += CL_a_save;
break;
}
case CL_adot_flag:
CL_adot = uiuc_ice_filter(CL_adot_clean,kCL_adot);
if (beta_model)
{
- CLclean_wing += CL_adot_clean * Alpha_dot * cbar_2U;
- CLclean_tail += CL_adot_clean * Alpha_dot * ch_2U;
- CLiced_wing += CL_adot * Alpha_dot * cbar_2U;
- CLiced_tail += CL_adot * Alpha_dot * ch_2U;
+ CLclean_wing += CL_adot_clean * Std_Alpha_dot * cbar_2U;
+ CLclean_tail += CL_adot_clean * Std_Alpha_dot * ch_2U;
+ CLiced_wing += CL_adot * Std_Alpha_dot * cbar_2U;
+ CLiced_tail += CL_adot * Std_Alpha_dot * ch_2U;
}
}
/* CL_adot must be mulitplied by cbar/2U
(see Roskam Control book, Part 1, pg. 147) */
- CL += CL_adot * Alpha_dot * cbar_2U;
+ CL_adot_save = CL_adot * Std_Alpha_dot * cbar_2U;
+ CL += CL_adot_save;
break;
}
case CL_q_flag:
/* 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 += CL_q * Theta_dot * cbar_2U;
+ CL_q_save = CL_q * Theta_dot * cbar_2U;
+ CL += CL_q_save;
break;
}
case CL_ih_flag:
{
- CL += CL_ih * ih;
+ CL_ih_save = CL_ih * ih;
+ CL += CL_ih_save;
break;
}
case CL_de_flag:
CLiced_tail += CL_de * elevator;
}
}
- CL += CL_de * elevator;
+ CL_de_save = CL_de * elevator;
+ CL += CL_de_save;
+ break;
+ }
+ case CL_df_flag:
+ {
+ CL_df_save = CL_df * flap_pos;
+ CL += CL_df_save;
+ break;
+ }
+ case CL_ds_flag:
+ {
+ CL_ds_save = CL_ds * spoiler_pos;
+ CL += CL_ds_save;
+ break;
+ }
+ case CL_dg_flag:
+ {
+ CL_dg_save = CL_dg * gear_pos_norm;
+ CL += CL_dg_save;
break;
}
case CLfa_flag:
CLfaI = uiuc_1Dinterpolation(CLfa_aArray,
CLfa_CLArray,
CLfa_nAlpha,
- Alpha);
+ Std_Alpha);
CL += CLfaI;
break;
}
CLfade_CLArray,
CLfade_nAlphaArray,
CLfade_nde,
- Alpha,
+ Std_Alpha,
elevator);
CL += CLfadeI;
break;
CLfdfI = uiuc_1Dinterpolation(CLfdf_dfArray,
CLfdf_CLArray,
CLfdf_ndf,
- flap);
+ flap_pos);
CL += CLfdfI;
break;
}
CLfadf_CLArray,
CLfadf_nAlphaArray,
CLfadf_ndf,
- Alpha,
- flap);
+ Std_Alpha,
+ flap_pos);
CL += CLfadfI;
break;
}
CZiced_tail += CZo;
}
}
- CZ += CZo;
+ CZo_save = CZo;
+ CZ += CZo_save;
break;
}
case CZ_a_flag:
CZ_a = uiuc_ice_filter(CZ_a_clean,kCZ_a);
if (beta_model)
{
- CZclean_wing += CZ_a_clean * Alpha;
- CZclean_tail += CZ_a_clean * Alpha;
- CZiced_wing += CZ_a * Alpha;
- CZiced_tail += CZ_a * Alpha;
+ CZclean_wing += CZ_a_clean * Std_Alpha;
+ CZclean_tail += CZ_a_clean * Std_Alpha;
+ CZiced_wing += CZ_a * Std_Alpha;
+ CZiced_tail += CZ_a * Std_Alpha;
}
}
- CZ += CZ_a * Alpha;
+ CZ_a_save = CZ_a * Std_Alpha;
+ CZ += CZ_a_save;
break;
}
case CZ_a2_flag:
CZ_a2 = uiuc_ice_filter(CZ_a2_clean,kCZ_a2);
if (beta_model)
{
- CZclean_wing += CZ_a2_clean * Alpha * Alpha;
- CZclean_tail += CZ_a2_clean * Alpha * Alpha;
- CZiced_wing += CZ_a2 * Alpha * Alpha;
- CZiced_tail += CZ_a2 * Alpha * Alpha;
+ CZclean_wing += CZ_a2_clean * Std_Alpha * Std_Alpha;
+ CZclean_tail += CZ_a2_clean * Std_Alpha * Std_Alpha;
+ CZiced_wing += CZ_a2 * Std_Alpha * Std_Alpha;
+ CZiced_tail += CZ_a2 * Std_Alpha * Std_Alpha;
}
}
- CZ += CZ_a2 * Alpha * Alpha;
+ CZ_a2_save = CZ_a2 * Std_Alpha * Std_Alpha;
+ CZ += CZ_a2_save;
break;
}
case CZ_a3_flag:
CZ_a3 = uiuc_ice_filter(CZ_a3_clean,kCZ_a3);
if (beta_model)
{
- CZclean_wing += CZ_a3_clean * Alpha * Alpha * Alpha;
- CZclean_tail += CZ_a3_clean * Alpha * Alpha * Alpha;
- CZiced_wing += CZ_a3 * Alpha * Alpha * Alpha;
- CZiced_tail += CZ_a3 * Alpha * Alpha * Alpha;
+ CZclean_wing += CZ_a3_clean * Std_Alpha * Std_Alpha * Std_Alpha;
+ CZclean_tail += CZ_a3_clean * Std_Alpha * Std_Alpha * Std_Alpha;
+ CZiced_wing += CZ_a3 * Std_Alpha * Std_Alpha * Std_Alpha;
+ CZiced_tail += CZ_a3 * Std_Alpha * Std_Alpha * Std_Alpha;
}
}
- CZ += CZ_a3 * Alpha * Alpha * Alpha;
+ CZ_a3_save = CZ_a3 * Std_Alpha * Std_Alpha * Std_Alpha;
+ CZ += CZ_a3_save;
break;
}
case CZ_adot_flag:
CZ_adot = uiuc_ice_filter(CZ_adot_clean,kCZ_adot);
if (beta_model)
{
- CZclean_wing += CZ_adot_clean * Alpha_dot * cbar_2U;
- CZclean_tail += CZ_adot_clean * Alpha_dot * ch_2U;
- CZiced_wing += CZ_adot * Alpha_dot * cbar_2U;
- CZiced_tail += CZ_adot * Alpha_dot * ch_2U;
+ CZclean_wing += CZ_adot_clean * Std_Alpha_dot * cbar_2U;
+ CZclean_tail += CZ_adot_clean * Std_Alpha_dot * ch_2U;
+ CZiced_wing += CZ_adot * Std_Alpha_dot * cbar_2U;
+ CZiced_tail += CZ_adot * Std_Alpha_dot * ch_2U;
}
}
/* CZ_adot must be mulitplied by cbar/2U
(see Roskam Control book, Part 1, pg. 147) */
- CZ += CZ_adot * Alpha_dot * cbar_2U;
+ CZ_adot_save = CZ_adot * Std_Alpha_dot * cbar_2U;
+ CZ += CZ_adot_save;
break;
}
case CZ_q_flag:
}
/* CZ_q must be mulitplied by cbar/2U
(see Roskam Control book, Part 1, pg. 147) */
- CZ += CZ_q * Q_body * cbar_2U;
+ CZ_q_save = CZ_q * Q_body * cbar_2U;
+ CZ += CZ_q_save;
break;
}
case CZ_de_flag:
CZiced_tail += CZ_de * elevator;
}
}
- CZ += CZ_de * elevator;
+ CZ_de_save = CZ_de * elevator;
+ CZ += CZ_de_save;
break;
}
case CZ_deb2_flag:
CZ_deb2 = uiuc_ice_filter(CZ_deb2_clean,kCZ_deb2);
if (beta_model)
{
- CZclean_wing += CZ_deb2_clean * elevator * Beta * Beta;
- CZclean_tail += CZ_deb2_clean * elevator * Beta * Beta;
- CZiced_wing += CZ_deb2 * elevator * Beta * Beta;
- CZiced_tail += CZ_deb2 * elevator * Beta * Beta;
+ CZclean_wing += CZ_deb2_clean * elevator * Std_Beta * Std_Beta;
+ CZclean_tail += CZ_deb2_clean * elevator * Std_Beta * Std_Beta;
+ CZiced_wing += CZ_deb2 * elevator * Std_Beta * Std_Beta;
+ CZiced_tail += CZ_deb2 * elevator * Std_Beta * Std_Beta;
}
}
- CZ += CZ_deb2 * elevator * Beta * Beta;
+ CZ_deb2_save = CZ_deb2 * elevator * Std_Beta * Std_Beta;
+ CZ += CZ_deb2_save;
break;
}
case CZ_df_flag:
CZ_df = uiuc_ice_filter(CZ_df_clean,kCZ_df);
if (beta_model)
{
- CZclean_wing += CZ_df_clean * flap;
- CZclean_tail += CZ_df_clean * flap;
- CZiced_wing += CZ_df * flap;
- CZiced_tail += CZ_df * flap;
+ CZclean_wing += CZ_df_clean * flap_pos;
+ CZclean_tail += CZ_df_clean * flap_pos;
+ CZiced_wing += CZ_df * flap_pos;
+ CZiced_tail += CZ_df * flap_pos;
}
}
- CZ += CZ_df * flap;
+ CZ_df_save = CZ_df * flap_pos;
+ CZ += CZ_df_save;
break;
}
case CZ_adf_flag:
CZ_adf = uiuc_ice_filter(CZ_adf_clean,kCZ_adf);
if (beta_model)
{
- CZclean_wing += CZ_adf_clean * Alpha * flap;
- CZclean_tail += CZ_adf_clean * Alpha * flap;
- CZiced_wing += CZ_adf * Alpha * flap;
- CZiced_tail += CZ_adf * Alpha * flap;
+ CZclean_wing += CZ_adf_clean * Std_Alpha * flap_pos;
+ CZclean_tail += CZ_adf_clean * Std_Alpha * flap_pos;
+ CZiced_wing += CZ_adf * Std_Alpha * flap_pos;
+ CZiced_tail += CZ_adf * Std_Alpha * flap_pos;
}
}
- CZ += CZ_adf * Alpha * flap;
+ CZ_adf_save = CZ_adf * Std_Alpha * flap_pos;
+ CZ += CZ_adf_save;
break;
}
case CZfa_flag:
CZfaI = uiuc_1Dinterpolation(CZfa_aArray,
CZfa_CZArray,
CZfa_nAlpha,
- Alpha);
+ Std_Alpha);
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,
+ Std_Alpha,
+ Std_Beta);
+ else
+ CZfabetafI = uiuc_3Dinterpolation(CZfabetaf_fArray,
+ CZfabetaf_aArray,
+ CZfabetaf_betaArray,
+ CZfabetaf_CZArray,
+ CZfabetaf_nAlphaArray,
+ CZfabetaf_nbeta,
+ CZfabetaf_nf,
+ flap_pos,
+ Std_Alpha,
+ Std_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,
+ Std_Alpha,
+ elevator);
+ else
+ CZfadefI = uiuc_3Dinterpolation(CZfadef_fArray,
+ CZfadef_aArray,
+ CZfadef_deArray,
+ CZfadef_CZArray,
+ CZfadef_nAlphaArray,
+ CZfadef_nde,
+ CZfadef_nf,
+ flap_pos,
+ Std_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,
+ Std_Alpha,
+ q_nondim);
+ else
+ CZfaqfI = uiuc_3Dinterpolation(CZfaqf_fArray,
+ CZfaqf_aArray,
+ CZfaqf_qArray,
+ CZfaqf_CZArray,
+ CZfaqf_nAlphaArray,
+ CZfaqf_nq,
+ CZfaqf_nf,
+ flap_pos,
+ Std_Alpha,
+ q_nondim);
+ CZ += CZfaqfI;
+ break;
+ }
};
} // end CL map