]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/UIUCModel/uiuc_coef_sideforce.cpp
Updated to match changes in radiostack.[ch]xx
[flightgear.git] / src / FDM / UIUCModel / uiuc_coef_sideforce.cpp
index e0e39637b415c2c0c7cc47243223a1e794bf6b8d..dc30657f55c0f227c8fe783a52e2eb05d78573be 100644 (file)
 ----------------------------------------------------------------------
 
  HISTORY:      04/15/2000   initial release
+               10/25/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model at zero flaps
+                           (CYfxxf0)
+              11/12/2001   (RD) Added new variables needed for the non-
+                           linear Twin Otter model with flaps
+                           (CYfxxf).  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.
 
 ----------------------------------------------------------------------
 
  AUTHOR(S):    Bipin Sehgal       <bsehgal@uiuc.edu>
                Jeff Scott         <jscott@mail.com>
+              Robert Deters      <rdeters@uiuc.edu>
 
 ----------------------------------------------------------------------
 
@@ -51,6 +63,8 @@
  CALLS TO:     uiuc_1Dinterpolation
                uiuc_2Dinterpolation
                uiuc_ice_filter
+              uiuc_3Dinterpolation
+              uiuc_3Dinterp_quick
 
 ----------------------------------------------------------------------
 
@@ -80,7 +94,10 @@ void uiuc_coef_sideforce()
   string linetoken1;
   string linetoken2;
   stack command_list;
-  
+
+  double p_nondim;
+  double r_nondim;
+
   command_list = aeroSideforceParts -> getCommands();
   
   for (LIST command_line = command_list.begin(); command_line!=command_list.end(); ++command_line)
@@ -96,6 +113,7 @@ void uiuc_coef_sideforce()
               {
                 CYo = uiuc_ice_filter(CYo_clean,kCYo);
               }
+           CYo_save = CYo;
             CY += CYo;
             break;
           }
@@ -105,6 +123,7 @@ void uiuc_coef_sideforce()
               {
                 CY_beta = uiuc_ice_filter(CY_beta_clean,kCY_beta);
               }
+           CY_beta_save = CY_beta * Beta;
             CY += CY_beta * Beta;
             break;
           }
@@ -116,6 +135,7 @@ 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;
             break;
           }
@@ -127,6 +147,7 @@ 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;
             break;
           }
@@ -136,6 +157,7 @@ void uiuc_coef_sideforce()
               {
                 CY_da = uiuc_ice_filter(CY_da_clean,kCY_da);
               }
+           CY_da_save = CY_da * aileron;
             CY += CY_da * aileron;
             break;
           }
@@ -145,6 +167,7 @@ void uiuc_coef_sideforce()
               {
                 CY_dr = uiuc_ice_filter(CY_dr_clean,kCY_dr);
               }
+           CY_dr_save = CY_dr * rudder;
             CY += CY_dr * rudder;
             break;
           }
@@ -154,6 +177,7 @@ void uiuc_coef_sideforce()
               {
                 CY_dra = uiuc_ice_filter(CY_dra_clean,kCY_dra);
               }
+           CY_dra_save = CY_dra * rudder * Alpha;
             CY += CY_dra * rudder * Alpha;
             break;
           }
@@ -163,6 +187,7 @@ void uiuc_coef_sideforce()
               {
                 CY_bdot = uiuc_ice_filter(CY_bdot_clean,kCY_bdot);
               }
+           CY_bdot_save = CY_bdot * Beta_dot * b_2U;
             CY += CY_bdot * Beta_dot * b_2U;
             break;
           }
@@ -190,7 +215,144 @@ void uiuc_coef_sideforce()
             CY += CYfbetadrI;
             break;
           }
-        };
+        case CYfabetaf_flag:
+          {
+           if (CYfabetaf_nice == 1)
+             CYfabetafI = uiuc_3Dinterp_quick(CYfabetaf_fArray,
+                                              CYfabetaf_aArray_nice,
+                                              CYfabetaf_bArray_nice,
+                                              CYfabetaf_CYArray,
+                                              CYfabetaf_na_nice,
+                                              CYfabetaf_nb_nice,
+                                              CYfabetaf_nf,
+                                              flap_pos,
+                                              Alpha,
+                                              Beta);
+           else
+             CYfabetafI = uiuc_3Dinterpolation(CYfabetaf_fArray,
+                                               CYfabetaf_aArray,
+                                               CYfabetaf_betaArray,
+                                               CYfabetaf_CYArray,
+                                               CYfabetaf_nAlphaArray,
+                                               CYfabetaf_nbeta,
+                                               CYfabetaf_nf,
+                                               flap_pos,
+                                               Alpha,
+                                               Beta);
+            CY += CYfabetafI;
+            break;
+          }
+        case CYfadaf_flag:
+          {
+           if (CYfadaf_nice == 1)
+             CYfadafI = uiuc_3Dinterp_quick(CYfadaf_fArray,
+                                            CYfadaf_aArray_nice,
+                                            CYfadaf_daArray_nice,
+                                            CYfadaf_CYArray,
+                                            CYfadaf_na_nice,
+                                            CYfadaf_nda_nice,
+                                            CYfadaf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            aileron);
+           else
+             CYfadafI = uiuc_3Dinterpolation(CYfadaf_fArray,
+                                             CYfadaf_aArray,
+                                             CYfadaf_daArray,
+                                             CYfadaf_CYArray,
+                                             CYfadaf_nAlphaArray,
+                                             CYfadaf_nda,
+                                             CYfadaf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             aileron);
+            CY += CYfadafI;
+            break;
+          }
+        case CYfadrf_flag:
+          {
+           if (CYfadrf_nice == 1)
+             CYfadrfI = uiuc_3Dinterp_quick(CYfadrf_fArray,
+                                            CYfadrf_aArray_nice,
+                                            CYfadrf_drArray_nice,
+                                            CYfadrf_CYArray,
+                                            CYfadrf_na_nice,
+                                            CYfadrf_ndr_nice,
+                                            CYfadrf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            rudder);
+           else
+             CYfadrfI = uiuc_3Dinterpolation(CYfadrf_fArray,
+                                             CYfadrf_aArray,
+                                             CYfadrf_drArray,
+                                             CYfadrf_CYArray,
+                                             CYfadrf_nAlphaArray,
+                                             CYfadrf_ndr,
+                                             CYfadrf_nf,
+                                             flap_pos,
+                                             Alpha,
+                                             rudder);
+            CY += CYfadrfI;
+            break;
+         }
+        case CYfapf_flag:
+         {
+           p_nondim = P_body * b_2U;
+           if (CYfapf_nice == 1)
+             CYfapfI = uiuc_3Dinterp_quick(CYfapf_fArray,
+                                           CYfapf_aArray_nice,
+                                           CYfapf_pArray_nice,
+                                           CYfapf_CYArray,
+                                           CYfapf_na_nice,
+                                           CYfapf_np_nice,
+                                           CYfapf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           p_nondim);
+           else
+             CYfapfI = uiuc_3Dinterpolation(CYfapf_fArray,
+                                            CYfapf_aArray,
+                                            CYfapf_pArray,
+                                            CYfapf_CYArray,
+                                            CYfapf_nAlphaArray,
+                                            CYfapf_np,
+                                            CYfapf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            p_nondim);
+            CY += CYfapfI;
+            break;
+          }
+       case CYfarf_flag:
+          {
+           r_nondim = R_body * b_2U;
+           if (CYfarf_nice == 1)
+             CYfarfI = uiuc_3Dinterp_quick(CYfarf_fArray,
+                                           CYfarf_aArray_nice,
+                                           CYfarf_rArray_nice,
+                                           CYfarf_CYArray,
+                                           CYfarf_na_nice,
+                                           CYfarf_nr_nice,
+                                           CYfarf_nf,
+                                           flap_pos,
+                                           Alpha,
+                                           r_nondim);
+           else
+             CYfarfI = uiuc_3Dinterpolation(CYfarf_fArray,
+                                            CYfarf_aArray,
+                                            CYfarf_rArray,
+                                            CYfarf_CYArray,
+                                            CYfarf_nAlphaArray,
+                                            CYfarf_nr,
+                                            CYfarf_nf,
+                                            flap_pos,
+                                            Alpha,
+                                            r_nondim);
+            CY += CYfarfI;
+            break;
+          }
+       };
     } // end CY map
   
   return;