public void FlightModel(double dt) { force.SetVec(0.0D, 0.0D, 0.0D); torque.SetVec(0.0D, 0.0D, 0.0D); interference.Calc_interference(this, dt); t_force.SetVec(0.0D, 0.0D, 0.0D); t_torque.SetVec(0.0D, 0.0D, 0.0D); a_force.SetVec(0.0D, 0.0D, 0.0D); a_torque.SetVec(0.0D, 0.0D, 0.0D); f_force.SetVec(0.0D, 0.0D, 0.0D); f_torque.SetVec(0.0D, 0.0D, 0.0D); n_force.SetVec(0.0D, 0.0D, 0.0D); n_torque.SetVec(0.0D, 0.0D, 0.0D); ControlLink(dt); int i; for (i = 0; i < n_powerPlant; i++) { powerPlant[i].Calc_dynamics(this, dt); t_force = t_force.Add(powerPlant[i].engine.GetForce()); t_torque = t_torque.Add(powerPlant[i].engine.GetTorque()); } for (i = 0; i < n_fuselage; i++) { for (int lr = 0; lr <= 1; lr++) { fuslage[i, lr].Calc_dynamics(lr, this, interference.fuselage_dv[i, lr]); a_force = a_force.Add(fuslage[i, lr].fv); a_torque = a_torque.Add(fuslage[i, lr].tv); } } for (i = 0; i < n_canard; i++) { canard[i].Calc_dynamics(this, ZERO_VECTOR_PAIR, ONE_PAIR, ONE_PAIR); a_force = a_force.Add(canard[i].fv); a_torque = a_torque.Add(canard[i].tv); } for (i = 0; i < n_canard_elevator; i++) { for (int lr_0 = 0; lr_0 <= 1; lr_0++) { canard_elevator[i, lr_0].Calc_dynamics(lr_0, this, ZERO_VECTOR, 1.0D, 1.0D); a_force = a_force.Add(canard_elevator[i, lr_0].d_fv); a_torque = a_torque.Add(canard_elevator[i, lr_0].d_tv); } } for (i = 0; i < n_wing; i++) { wing[i].Calc_dynamics(this, ZERO_VECTOR_PAIR, ONE_PAIR, ONE_PAIR); a_force = a_force.Add(wing[i].fv); a_torque = a_torque.Add(wing[i].tv); } for (i = 0; i < n_aileron; i++) { for (int lr_1 = 0; lr_1 <= 1; lr_1++) { aileron[i, lr_1].Calc_dynamics(lr_1, this, ZERO_VECTOR, 1.0D, 1.0D); a_force = a_force.Add(aileron[i, lr_1].d_fv); a_torque = a_torque.Add(aileron[i, lr_1].d_tv); } } for (i = 0; i < n_l_flap; i++) { for (int lr_2 = 0; lr_2 <= 1; lr_2++) { l_flap[i, lr_2].Calc_dynamics(lr_2, this, ZERO_VECTOR, 1.0D, 1.0D); a_force = a_force.Add(l_flap[i, lr_2].d_fv); a_torque = a_torque.Add(l_flap[i, lr_2].d_tv); } } for (i = 0; i < n_t_flap; i++) { for (int lr_3 = 0; lr_3 <= 1; lr_3++) { t_flap[i, lr_3].Calc_dynamics(lr_3, this, ZERO_VECTOR, 1.0D, 1.0D); a_force = a_force.Add(t_flap[i, lr_3].d_fv); a_torque = a_torque.Add(t_flap[i, lr_3].d_tv); } } for (i = 0; i < n_htail; i++) { htail[i].Calc_dynamics(this, interference.htail_dv, interference.htail_k_q, ONE_PAIR); a_force = a_force.Add(htail[i].fv); a_torque = a_torque.Add(htail[i].tv); } for (i = 0; i < n_elevator; i++) { for (int lr_4 = 0; lr_4 <= 1; lr_4++) { elevator[i, lr_4].Calc_dynamics(lr_4, this, interference.htail_dv[lr_4], interference.htail_k_q[lr_4], 1.0D); a_force = a_force.Add(elevator[i, lr_4].d_fv); a_torque = a_torque.Add(elevator[i, lr_4].d_tv); } } for (i = 0; i < n_vtail; i++) { vtail[i].Calc_dynamics(this, interference.vtail_dv, interference.vtail_k_q, interference.vtail_k_S); a_force = a_force.Add(vtail[i].fv); a_torque = a_torque.Add(vtail[i].tv); } for (i = 0; i < n_rudder; i++) { for (int lr_5 = 0; lr_5 <= 1; lr_5++) { rudder[i, lr_5].Calc_dynamics(lr_5, this, interference.vtail_dv[lr_5], interference.vtail_k_q[lr_5], interference.vtail_k_S[lr_5]); a_force = a_force.Add(rudder[i, lr_5].d_fv); a_torque = a_torque.Add(rudder[i, lr_5].d_tv); } } for (i = 0; i < n_fin; i++) { fin[i].Calc_dynamics(this, ZERO_VECTOR_PAIR, ONE_PAIR, ONE_PAIR); a_force = a_force.Add(fin[i].fv); a_torque = a_torque.Add(fin[i].tv); } max_k_stall_wing = Get_max_k_stall_wing(); max_k_stall_htail = Get_max_k_stall_htail(); flag_landing_gear = 1; flag_land = 1; for (i = 0; i < n_LandingGear; i++) { for (int lr_6 = 0; lr_6 <= 1; lr_6++) { if (landing_gear[i, lr_6].flag != 0) { landing_gear[i, lr_6].Set_landling_gear_delta(lr_6, cif, dt); landing_gear[i, lr_6].Calc_dynamics(lr_6, this, dt); n_force = n_force.Add(landing_gear[i, lr_6].n_fv); n_torque = n_torque.Add(landing_gear[i, lr_6].n_tv); f_force = f_force.Add(landing_gear[i, lr_6].f_fv); f_torque = f_torque.Add(landing_gear[i, lr_6].f_tv); a_force = a_force.Add(landing_gear[i, lr_6].a_fv); a_torque = a_torque.Add(landing_gear[i, lr_6].a_tv); if (landing_gear[i, lr_6].delta != 1.0D) { flag_landing_gear = 0; } if (landing_gear[i, lr_6].flag_land != 1) { flag_land = 0; } } } } force = force.Add(t_force); torque = torque.Add(t_torque); force = force.Add(n_force); torque = torque.Add(n_torque); if (pMotion.vc.Length() >= 0.1D) { force = force.Add(a_force); torque = torque.Add(a_torque); force = force.Add(f_force); torque = torque.Add(f_torque); } else if (cif.throttle_pos > 0.0D) { force = force.Add(a_force); torque = torque.Add(a_torque); } else if (flag_land == 1) { pMotion.vc.SetVec(0.0D, 0.0D, 0.0D); pMotion.omega.SetVec(0.0D, 0.0D, 0.0D); } }