]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/UIUCModel/uiuc_coef_pitch.cpp
Port over remaining Point3D usage to the more type and unit safe SG* classes.
[flightgear.git] / src / FDM / UIUCModel / uiuc_coef_pitch.cpp
index a85d52727ca2f4bb60d339456decfea233dd3e19..613261d4b3379f2dc83aa2aa42e642f15c0e13ae 100644 (file)
@@ -80,8 +80,7 @@
 
  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.
 
 **********************************************************************/
 
@@ -112,7 +111,7 @@ void uiuc_coef_pitch()
                 Cmo = uiuc_ice_filter(Cmo_clean,kCmo);
               }
            Cmo_save = Cmo;
-            Cm += Cmo;
+            Cm += Cmo_save;
             break;
           }
         case Cm_a_flag:
@@ -121,8 +120,8 @@ void uiuc_coef_pitch()
               {
                 Cm_a = uiuc_ice_filter(Cm_a_clean,kCm_a);
               }
-           Cm_a_save = Cm_a * Alpha;
-            Cm += Cm_a * Alpha;
+           Cm_a_save = Cm_a * Std_Alpha;
+            Cm += Cm_a_save;
             break;
           }
         case Cm_a2_flag:
@@ -131,8 +130,8 @@ 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;
+           Cm_a2_save = Cm_a2 * Std_Alpha * Std_Alpha;
+            Cm += Cm_a2_save;
             break;
           }
         case Cm_adot_flag:
@@ -143,8 +142,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;
+           Cm_adot_save = Cm_adot * Std_Alpha_dot * cbar_2U;
            if (eta_q_Cm_adot_fac)
              {
                Cm += Cm_adot_save * eta_q_Cm_adot_fac;
@@ -164,7 +162,6 @@ 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;
            if (eta_q_Cm_q_fac)
              {
                Cm += Cm_q_save * eta_q_Cm_q_fac;
@@ -178,7 +175,7 @@ void uiuc_coef_pitch()
         case Cm_ih_flag:
           {
            Cm_ih_save = Cm_ih * ih;
-            Cm += Cm_ih * ih;
+            Cm += Cm_ih_save;
             break;
           }
         case Cm_de_flag:
@@ -188,7 +185,14 @@ void uiuc_coef_pitch()
                 Cm_de = uiuc_ice_filter(Cm_de_clean,kCm_de);
               }
            Cm_de_save = Cm_de * elevator;
-            Cm += Cm_de * elevator;
+           if (eta_q_Cm_de_fac)
+             {
+               Cm += Cm_de_save * eta_q_Cm_de_fac;
+             }
+           else
+             {
+               Cm += Cm_de_save;
+             }
             break;
           }
         case Cm_b2_flag:
@@ -197,8 +201,8 @@ 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;
+           Cm_b2_save = Cm_b2 * Std_Beta * Std_Beta;
+            Cm += Cm_b2_save;
             break;
           }
         case Cm_r_flag:
@@ -208,7 +212,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;
+            Cm += Cm_r_save;
             break;
           }
         case Cm_df_flag:
@@ -217,8 +221,20 @@ void uiuc_coef_pitch()
               {
                 Cm_df = uiuc_ice_filter(Cm_df_clean,kCm_df);
               }
-           Cm_df_save = Cm_df * flap;
-            Cm += Cm_df * flap;
+           Cm_df_save = Cm_df * flap_pos;
+            Cm += Cm_df_save;
+            break;
+          }
+        case Cm_ds_flag:
+          {
+           Cm_ds_save = Cm_ds * spoiler_pos;
+            Cm += Cm_ds_save;
+            break;
+          }
+        case Cm_dg_flag:
+          {
+           Cm_dg_save = Cm_dg * gear_pos_norm;
+            Cm += Cm_dg_save;
             break;
           }
         case Cmfa_flag:
@@ -226,33 +242,50 @@ void uiuc_coef_pitch()
             CmfaI = uiuc_1Dinterpolation(Cmfa_aArray,
                                          Cmfa_CmArray,
                                          Cmfa_nAlpha,
-                                         Alpha);
+                                         Std_Alpha);
             Cm += CmfaI;
             break;
           }
         case Cmfade_flag:
           {
-           // 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,
-                                           AlphaTail,
-                                           elevator); */
-           CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
-                                           Cmfade_deArray,
-                                           Cmfade_CmArray,
-                                           Cmfade_nAlphaArray,
-                                           Cmfade_nde,
-                                           Alpha,
-                                           elevator);
-                   // Cm += CmfadeI;
+           if(b_downwashMode)
+             {
+               // compute the induced velocity on the tail to account for tail downwash
+               switch(downwashMode)
+                 {
+                 case 100:            
+                   if (V_rel_wind < dyn_on_speed)
+                     {
+                       alphaTail = Std_Alpha;
+                     }
+                   else
+                     {
+                       gammaWing = V_rel_wind * Sw * CL / (2.0 * bw);
+                       // printf("gammaWing = %.4f\n", (gammaWing));
+                       downwash  = downwashCoef * gammaWing;
+                       downwashAngle = atan(downwash/V_rel_wind);
+                       alphaTail = Std_Alpha - downwashAngle;
+                     }
+                   CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
+                                                  Cmfade_deArray,
+                                                  Cmfade_CmArray,
+                                                  Cmfade_nAlphaArray,
+                                                  Cmfade_nde,
+                                                  alphaTail,
+                                                  elevator);
+                   break;
+                 }
+             }
+           else
+             {
+               CmfadeI = uiuc_2Dinterpolation(Cmfade_aArray,
+                                              Cmfade_deArray,
+                                              Cmfade_CmArray,
+                                              Cmfade_nAlphaArray,
+                                              Cmfade_nde,
+                                              Std_Alpha,
+                                              elevator); 
+             }
            if (eta_q_Cmfade_fac)
              {
                Cm += CmfadeI * eta_q_Cmfade_fac;
@@ -268,7 +301,7 @@ void uiuc_coef_pitch()
             CmfdfI = uiuc_1Dinterpolation(Cmfdf_dfArray,
                                           Cmfdf_CmArray,
                                           Cmfdf_ndf,
-                                          flap);
+                                          flap_pos);
             Cm += CmfdfI;
             break;
           }
@@ -279,8 +312,8 @@ void uiuc_coef_pitch()
                                            Cmfadf_CmArray,
                                            Cmfadf_nAlphaArray,
                                            Cmfadf_ndf,
-                                           Alpha,
-                                           flap);
+                                           Std_Alpha,
+                                           flap_pos);
             Cm += CmfadfI;
             break;
           }
@@ -295,8 +328,8 @@ void uiuc_coef_pitch()
                                               Cmfabetaf_nb_nice,
                                               Cmfabetaf_nf,
                                               flap_pos,
-                                              Alpha,
-                                              Beta);
+                                              Std_Alpha,
+                                              Std_Beta);
            else
              CmfabetafI = uiuc_3Dinterpolation(Cmfabetaf_fArray,
                                                Cmfabetaf_aArray,
@@ -306,8 +339,8 @@ void uiuc_coef_pitch()
                                                Cmfabetaf_nbeta,
                                                Cmfabetaf_nf,
                                                flap_pos,
-                                               Alpha,
-                                               Beta);
+                                               Std_Alpha,
+                                               Std_Beta);
             Cm += CmfabetafI;
             break;
           }
@@ -322,7 +355,7 @@ void uiuc_coef_pitch()
                                             Cmfadef_nde_nice,
                                             Cmfadef_nf,
                                             flap_pos,
-                                            Alpha,
+                                            Std_Alpha,
                                             elevator);
            else
              CmfadefI = uiuc_3Dinterpolation(Cmfadef_fArray,
@@ -333,7 +366,7 @@ void uiuc_coef_pitch()
                                              Cmfadef_nde,
                                              Cmfadef_nf,
                                              flap_pos,
-                                             Alpha,
+                                             Std_Alpha,
                                              elevator);
            Cm += CmfadefI;
             break;
@@ -350,7 +383,7 @@ void uiuc_coef_pitch()
                                            Cmfaqf_nq_nice,
                                            Cmfaqf_nf,
                                            flap_pos,
-                                           Alpha,
+                                           Std_Alpha,
                                            q_nondim);
            else
              CmfaqfI = uiuc_3Dinterpolation(Cmfaqf_fArray,
@@ -361,7 +394,7 @@ void uiuc_coef_pitch()
                                             Cmfaqf_nq,
                                             Cmfaqf_nf,
                                             flap_pos,
-                                            Alpha,
+                                            Std_Alpha,
                                             q_nondim);
             Cm += CmfaqfI;
             break;