1
0
Fork 0

Updates from Rob Deters.

This commit is contained in:
curt 2002-09-11 16:45:47 +00:00
parent 93c9f8cbf4
commit 1784ad74b6
12 changed files with 245 additions and 40 deletions

View file

@ -139,7 +139,7 @@
#include <math.h>
#include "uiuc_parsefile.h"
//#include "uiuc_flapdata.h"
// #include "uiuc_flapdata.h"
SG_USING_STD(map);
#if !defined (SG_HAVE_NATIVE_SGI_COMPILERS)
@ -2258,7 +2258,7 @@ struct AIRCRAFT
double F_X_aero_flapper, F_Z_aero_flapper;
#define F_X_aero_flapper aircraft_->F_X_aero_flapper
#define F_Z_aero_flapper aircraft_->F_Z_aero_flapper
*/
/* Other variables (not tokens) =================================*/
double convert_x, convert_y, convert_z;

View file

@ -144,7 +144,15 @@ 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;
//Cm += Cm_adot * Alpha_dot * cbar_2U;
if (eta_q_Cm_adot_fac)
{
Cm += Cm_adot_save * eta_q_Cm_adot_fac;
}
else
{
Cm += Cm_adot_save;
}
break;
}
case Cm_q_flag:
@ -156,7 +164,15 @@ 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;
// Cm += Cm_q * Q_body * cbar_2U;
if (eta_q_Cm_q_fac)
{
Cm += Cm_q_save * eta_q_Cm_q_fac;
}
else
{
Cm += Cm_q_save;
}
break;
}
case Cm_ih_flag:
@ -216,14 +232,28 @@ void uiuc_coef_pitch()
}
case Cmfade_flag:
{
CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
// compute the induced velocity on the tail to account for tail downwash
gamma_wing = V_rel_wind * Sw * CL / (2.0 * bw);
w_coef = 0.036;
w_induced = w_coef * gamma_wing;
downwash_angle = atan(w_induced/V_rel_wind);
AlphaTail = Alpha - downwash_angle;
CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
Cmfade_deArray,
Cmfade_CmArray,
Cmfade_nAlphaArray,
Cmfade_nde,
Alpha,
AlphaTail,
elevator);
Cm += CmfadeI;
// Cm += CmfadeI;
if (eta_q_Cmfade_fac)
{
Cm += CmfadeI * eta_q_Cmfade_fac;
}
else
{
Cm += CmfadeI;
}
break;
}
case Cmfdf_flag:

View file

@ -124,7 +124,15 @@ void uiuc_coef_roll()
Cl_beta = uiuc_ice_filter(Cl_beta_clean,kCl_beta);
}
Cl_beta_save = Cl_beta * Beta;
Cl += Cl_beta * Beta;
// Cl += Cl_beta * Beta;
if (eta_q_Cl_beta_fac)
{
Cl += Cl_beta_save * eta_q_Cl_beta_fac;
}
else
{
Cl += Cl_beta_save;
}
break;
}
case Cl_p_flag:
@ -136,7 +144,15 @@ 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;
// Cl += Cl_p * P_body * b_2U;
if (eta_q_Cl_p_fac)
{
Cl += Cl_p_save * eta_q_Cl_p_fac;
}
else
{
Cl += Cl_p_save;
}
break;
}
case Cl_r_flag:
@ -148,7 +164,15 @@ 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;
// Cl += Cl_r * R_body * b_2U;
if (eta_q_Cl_r_fac)
{
Cl += Cl_r_save * eta_q_Cl_r_fac;
}
else
{
Cl += Cl_r_save;
}
break;
}
case Cl_da_flag:
@ -168,7 +192,15 @@ void uiuc_coef_roll()
Cl_dr = uiuc_ice_filter(Cl_dr_clean,kCl_dr);
}
Cl_dr_save = Cl_dr * rudder;
Cl += Cl_dr * rudder;
// Cl += Cl_dr * rudder;
if (eta_q_Cl_dr_fac)
{
Cl += Cl_dr_save * eta_q_Cl_dr_fac;
}
else
{
Cl += Cl_dr_save;
}
break;
}
case Cl_daa_flag:

View file

@ -124,7 +124,15 @@ void uiuc_coef_sideforce()
CY_beta = uiuc_ice_filter(CY_beta_clean,kCY_beta);
}
CY_beta_save = CY_beta * Beta;
CY += CY_beta * Beta;
// CY += CY_beta * Beta;
if (eta_q_CY_beta_fac)
{
CY += CY_beta_save * eta_q_CY_beta_fac;
}
else
{
CY += CY_beta_save;
}
break;
}
case CY_p_flag:
@ -136,7 +144,15 @@ 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;
// CY += CY_p * P_body * b_2U;
if (eta_q_CY_p_fac)
{
CY += CY_p_save * eta_q_CY_p_fac;
}
else
{
CY += CY_p_save;
}
break;
}
case CY_r_flag:
@ -148,7 +164,15 @@ 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;
// CY += CY_r * R_body * b_2U;
if (eta_q_CY_r_fac)
{
CY += CY_r_save * eta_q_CY_r_fac;
}
else
{
CY += CY_r_save;
}
break;
}
case CY_da_flag:
@ -168,7 +192,15 @@ void uiuc_coef_sideforce()
CY_dr = uiuc_ice_filter(CY_dr_clean,kCY_dr);
}
CY_dr_save = CY_dr * rudder;
CY += CY_dr * rudder;
// CY += CY_dr * rudder;
if (eta_q_CY_dr_fac)
{
CY += CY_dr_save * eta_q_CY_dr_fac;
}
else
{
CY += CY_dr_save;
}
break;
}
case CY_dra_flag:

View file

@ -124,7 +124,15 @@ void uiuc_coef_yaw()
Cn_beta = uiuc_ice_filter(Cn_beta_clean,kCn_beta);
}
Cn_beta_save = Cn_beta * Beta;
Cn += Cn_beta * Beta;
// Cn += Cn_beta * Beta;
if (eta_q_Cn_beta_fac)
{
Cn += Cn_beta_save * eta_q_Cn_beta_fac;
}
else
{
Cn += Cn_beta_save;
}
break;
}
case Cn_p_flag:
@ -136,7 +144,15 @@ 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;
// Cn += Cn_p * P_body * b_2U;
if (eta_q_Cn_p_fac)
{
Cn += Cn_p_save * eta_q_Cn_p_fac;
}
else
{
Cn += Cn_p_save;
}
break;
}
case Cn_r_flag:
@ -148,7 +164,15 @@ 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;
// Cn += Cn_r * R_body * b_2U;
if (eta_q_Cn_r_fac)
{
Cn += Cn_r_save * eta_q_Cn_r_fac;
}
else
{
Cn += Cn_r_save;
}
break;
}
case Cn_da_flag:
@ -168,7 +192,15 @@ void uiuc_coef_yaw()
Cn_dr = uiuc_ice_filter(Cn_dr_clean,kCn_dr);
}
Cn_dr_save = Cn_dr * rudder;
Cn += Cn_dr * rudder;
// Cn += Cn_dr * rudder;
if (eta_q_Cn_dr_fac)
{
Cn += Cn_dr_save * eta_q_Cn_dr_fac;
}
else
{
Cn += Cn_dr_save;
}
break;
}
case Cn_q_flag:

View file

@ -117,6 +117,7 @@ void uiuc_coefficients(double dt)
{
cbar_2U = cbar / (2.0 * V_rel_wind);
b_2U = bw / (2.0 * V_rel_wind);
// ch is the horizontal tail chord
ch_2U = ch / (2.0 * V_rel_wind);
}
else if (use_dyn_on_speed_curve1)
@ -125,12 +126,14 @@ void uiuc_coefficients(double dt)
cbar_2U = cbar / (2.0 * V_rel_wind_dum);
b_2U = bw / (2.0 * V_rel_wind_dum);
ch_2U = ch / (2.0 * V_rel_wind_dum);
Alpha_dot = 0.0;
}
else
{
cbar_2U = 0.0;
b_2U = 0.0;
ch_2U = 0.0;
cbar_2U = 0.0;
b_2U = 0.0;
ch_2U = 0.0;
Alpha_dot = 0.0;
}
}
else if(use_abs_U_body_2U) // use absolute(U_body)
@ -147,12 +150,14 @@ void uiuc_coefficients(double dt)
cbar_2U = cbar / (2.0 * U_body_dum);
b_2U = bw / (2.0 * U_body_dum);
ch_2U = ch / (2.0 * U_body_dum);
Alpha_dot = 0.0;
}
else
{
cbar_2U = 0.0;
b_2U = 0.0;
ch_2U = 0.0;
cbar_2U = 0.0;
b_2U = 0.0;
ch_2U = 0.0;
Alpha_dot = 0.0;
}
}
else // use U_body
@ -169,16 +174,26 @@ void uiuc_coefficients(double dt)
cbar_2U = cbar / (2.0 * U_body_dum);
b_2U = bw / (2.0 * U_body_dum);
ch_2U = ch / (2.0 * U_body_dum);
Alpha_dot = 0.0;
beta_flow_clean_tail = cbar_2U;
}
else
{
cbar_2U = 0.0;
b_2U = 0.0;
ch_2U = 0.0;
cbar_2U = 0.0;
b_2U = 0.0;
ch_2U = 0.0;
Alpha_dot = 0.0;
}
}
// check if speed is sufficient to "trust" Alpha_dot value
if (use_Alpha_dot_on_speed)
{
if (V_rel_wind < Alpha_dot_on_speed)
Alpha_dot = 0.0;
}
// check to see if icing model engaged
if (ice_model)
{

View file

@ -123,6 +123,38 @@ void uiuc_engine()
F_X_engine = Throttle[3] * simpleSingleMaxThrust;
break;
}
case simpleSingleModel_flag:
{
/* simple model based on Hepperle's equation
* exponent dtdvvt was computed in uiuc_menu.cpp */
F_X_engine = Throttle[3] * t_v0 * (1 - pow((V_rel_wind/v_t0),dtdvvt));
if (slipstream_effects) {
tc = F_X_engine/(Dynamic_pressure * LS_PI * propDia * propDia / 4);
w_induced = 0.5 * V_rel_wind * (-1 + pow((1+tc),.5));
eta_q = (2* w_induced + V_rel_wind)*(2* w_induced + V_rel_wind)/(V_rel_wind * V_rel_wind);
/* add in a die-off function so that eta falls off w/ alfa and beta */
eta_q = Cos_alpha * Cos_alpha * Cos_beta * Cos_beta * eta_q;
/* determine the eta_q values for the respective coefficients */
if (eta_q_Cm_q_fac) {eta_q_Cm_q *= eta_q * eta_q_Cm_q_fac;}
if (eta_q_Cm_adot_fac) {eta_q_Cm_adot *= eta_q * eta_q_Cm_adot_fac;}
if (eta_q_Cmfade_fac) {eta_q_Cmfade *= eta_q * eta_q_Cmfade_fac;}
if (eta_q_Cl_beta_fac) {eta_q_Cl_beta *= eta_q * eta_q_Cl_beta_fac;}
if (eta_q_Cl_p_fac) {eta_q_Cl_p *= eta_q * eta_q_Cl_p_fac;}
if (eta_q_Cl_r_fac) {eta_q_Cl_r *= eta_q * eta_q_Cl_r_fac;}
if (eta_q_Cl_dr_fac) {eta_q_Cl_dr *= eta_q * eta_q_Cl_dr_fac;}
if (eta_q_CY_beta_fac) {eta_q_CY_beta *= eta_q * eta_q_CY_beta_fac;}
if (eta_q_CY_p_fac) {eta_q_CY_p *= eta_q * eta_q_CY_p_fac;}
if (eta_q_CY_r_fac) {eta_q_CY_r *= eta_q * eta_q_CY_r_fac;}
if (eta_q_CY_dr_fac) {eta_q_CY_dr *= eta_q * eta_q_CY_dr_fac;}
if (eta_q_Cn_beta_fac) {eta_q_Cn_beta *= eta_q * eta_q_Cn_beta_fac;}
if (eta_q_Cn_p_fac) {eta_q_Cn_p *= eta_q * eta_q_Cn_p_fac;}
if (eta_q_Cn_r_fac) {eta_q_Cn_r *= eta_q * eta_q_Cn_r_fac;}
if (eta_q_Cn_dr_fac) {eta_q_Cn_dr *= eta_q * eta_q_Cn_dr_fac;}
}
/* Need engineOmega for gyroscopic moments */
engineOmega = minOmega + Throttle[3] * (maxOmega - minOmega);
break;
}
case c172_flag:
{
//c172 engine lines ... looks like 0.83 is just a thrust increase

View file

@ -5,6 +5,7 @@
#include "uiuc_1Dinterpolation.h"
#include <FDM/LaRCsim/ls_generic.h>
#include <FDM/LaRCsim/ls_cockpit.h>
#include <FDM/LaRCsim/ls_constants.h>
#ifdef __cplusplus
extern "C" {

View file

@ -18,6 +18,7 @@
HISTORY: 04/08/2000 initial release
06/18/2001 (RD) Added Throttle_pct_input
08/29/2002 (MS) Added simpleSingleModel
----------------------------------------------------------------------
@ -71,13 +72,36 @@
void uiuc_map_engine()
{
engine_map["simpleSingle"] = simpleSingle_flag ;
engine_map["simpleSingleModel"] = simpleSingleModel_flag ;
engine_map["c172"] = c172_flag ;
engine_map["cherokee"] = cherokee_flag ;
engine_map["Throttle_pct_input"]= Throttle_pct_input_flag ;
engine_map["forcemom"] = forcemom_flag ;
engine_map["Xp_input"] = Xp_input_flag ;
engine_map["Zp_input"] = Zp_input_flag ;
engine_map["Mp_input"] = Mp_input_flag ;
engine_map["gyroForce_Q_body"] = gyroForce_Q_body_flag ;
engine_map["gyroForce_R_body"] = gyroForce_R_body_flag ;
engine_map["omega"] = omega_flag ;
engine_map["omegaRPM"] = omegaRPM_flag ;
engine_map["polarInertia"] = polarInertia_flag ;
engine_map["slipstream_effects"] = slipstream_effects_flag ;
engine_map["propDia"] = propDia_flag ;
engine_map["eta_q_Cm_q"] = eta_q_Cm_q_flag ;
engine_map["eta_q_Cm_adot"] = eta_q_Cm_adot_flag ;
engine_map["eta_q_Cmfade"] = eta_q_Cmfade_flag ;
engine_map["eta_q_Cl_beta"] = eta_q_Cl_beta_flag ;
engine_map["eta_q_Cl_p"] = eta_q_Cl_p_flag ;
engine_map["eta_q_Cl_r"] = eta_q_Cl_r_flag ;
engine_map["eta_q_Cl_dr"] = eta_q_Cl_dr_flag ;
engine_map["eta_q_CY_beta"] = eta_q_CY_beta_flag ;
engine_map["eta_q_CY_p"] = eta_q_CY_p_flag ;
engine_map["eta_q_CY_r"] = eta_q_CY_r_flag ;
engine_map["eta_q_CY_dr"] = eta_q_CY_dr_flag ;
engine_map["eta_q_Cn_beta"] = eta_q_Cn_beta_flag ;
engine_map["eta_q_Cn_p"] = eta_q_Cn_p_flag ;
engine_map["eta_q_Cn_r"] = eta_q_Cn_r_flag ;
engine_map["eta_q_Cn_dr"] = eta_q_Cn_dr_flag ;
engine_map["forcemom"] = forcemom_flag ;
engine_map["Xp_input"] = Xp_input_flag ;
engine_map["Zp_input"] = Zp_input_flag ;
engine_map["Mp_input"] = Mp_input_flag ;
}
// end uiuc_map_engine.cpp

View file

@ -96,6 +96,7 @@ void uiuc_map_init()
init_map["dyn_on_speed"] = dyn_on_speed_flag ;
init_map["dyn_on_speed_zero"] = dyn_on_speed_zero_flag ;
init_map["use_dyn_on_speed_curve1"] = use_dyn_on_speed_curve1_flag;
init_map["use_Alpha_dot_on_speed"] = use_Alpha_dot_on_speed_flag;
init_map["Alpha"] = Alpha_flag ;
init_map["Beta"] = Beta_flag ;
init_map["U_body"] = U_body_flag ;

View file

@ -122,13 +122,19 @@ void uiuc_map_record5()
record_map["M_n_rp"] = M_n_rp_record ;
/***********************Flapper Data********************/
/* record_map["flapper_freq"] = flapper_freq_record ;
record_map["flapper_freq"] = flapper_freq_record ;
record_map["flapper_phi"] = flapper_phi_record ;
record_map["flapper_phi_deg"] = flapper_phi_deg_record ;
record_map["flapper_Lift"] = flapper_Lift_record ;
record_map["flapper_Thrust"] = flapper_Thrust_record ;
record_map["flapper_Inertia"] = flapper_Inertia_record ;
record_map["flapper_Moment"] = flapper_Moment_record ;*/
record_map["flapper_Moment"] = flapper_Moment_record ;
/**************************Debug************************/
record_map["debug1"] = debug1_record ;
record_map["debug2"] = debug2_record ;
record_map["debug3"] = debug3_record ;
}
// end uiuc_map_record5.cpp

View file

@ -245,12 +245,12 @@ void uiuc_force_moment(double dt)
M_m_aero += -polarInertia * engineOmega * R_body;
// ornithopter support
if (flapper_model)
{
F_X_aero += F_X_aero_flapper;
F_Z_aero += F_Z_aero_flapper;
M_m_aero += flapper_Moment;
}
//if (flapper_model)
// {
// F_X_aero += F_X_aero_flapper;
// F_Z_aero += F_Z_aero_flapper;
// M_m_aero += flapper_Moment;
// }
// fog field update
Fog = 0;