]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/UIUCModel/uiuc_engine.cpp
Goodbye automake.
[flightgear.git] / src / FDM / UIUCModel / uiuc_engine.cpp
index 612bee1e4754710e4418e6e7660730c13967a864..453b4e37fa71388ce440853844ce39510ab6825f 100644 (file)
 
  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 <simgear/compiler.h>
 
 #include "uiuc_engine.h"
 
-#if !defined (SG_HAVE_NATIVE_SGI_COMPILERS)
-SG_USING_STD(cerr);
-#endif
-
 void uiuc_engine() 
 {
   stack command_list;
   string linetoken1;
   string linetoken2;
 
+  if (outside_control == false)
+    pilot_throttle_no = false;
   if (Throttle_pct_input)
     {
       double Throttle_pct_input_endTime = Throttle_pct_input_timeArray[Throttle_pct_input_ntime];
@@ -94,6 +91,7 @@ void uiuc_engine()
                          Throttle_pct_input_dTArray,
                          Throttle_pct_input_ntime,
                          time);
+         pilot_throttle_no = true;
         }
     }
   
@@ -121,8 +119,51 @@ void uiuc_engine()
         case simpleSingle_flag:
           {
             F_X_engine = Throttle[3] * simpleSingleMaxThrust;
+           F_Y_engine = 0.0;
+           F_Z_engine = 0.0;
+           M_l_engine = 0.0;
+           M_m_engine = 0.0;
+           M_n_engine = 0.0;
             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));
+           F_Y_engine = 0.0;
+           F_Z_engine = 0.0;
+           M_l_engine = 0.0;
+           M_m_engine = 0.0;
+           M_n_engine = 0.0;
+           if (b_slipstreamEffects) {
+             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_Cm_de_fac)   {eta_q_Cm_de   *= eta_q * eta_q_Cm_de_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