]> git.mxchange.org Git - flightgear.git/commitdiff
Updates from Tony.
authorcurt <curt>
Tue, 17 Aug 1999 21:18:16 +0000 (21:18 +0000)
committercurt <curt>
Tue, 17 Aug 1999 21:18:16 +0000 (21:18 +0000)
src/FDM/LaRCsim/c172_aero.c
src/FDM/LaRCsim/c172_aero.h
src/FDM/LaRCsim/c172_engine.c
src/FDM/LaRCsim/c172_gear.c
src/FDM/LaRCsim/c172_main.c

index 0e84a443621fbb21bb1b881aede6ce7cee1d415b..8629dbecfcb7dca5a4fc4d79b031544b63c896a6 100644 (file)
@@ -123,9 +123,11 @@ SCALAR interp(SCALAR *y_table, SCALAR *x_table, int Ntable, SCALAR x)
        }        
        else if(x >= x_table[Ntable-1])
        {
-                y=y_table[Ntable-1];
-                /* printf("x larger than x_table[N]: %g %g %d\n",x,x_table[NCL-1],Ntable-1); */
-       }        
+               slope=(y_table[Ntable-1]-y_table[Ntable-2])/(x_table[Ntable-1]-x_table[Ntable-2]);
+           y=slope*(x-x_table[Ntable-1]) +y_table[Ntable-1];
+                
+/*              printf("x larger than x_table[N]: %g %g %d\n",x,x_table[NCL-1],Ntable-1);
+ */    }        
        else /*x is within the table, interpolate linearly to find y value*/
        {
            
@@ -150,11 +152,8 @@ void aero( SCALAR dt, int Initialize ) {
   static SCALAR alpha_ind[NCL]={-0.087,0,0.175,0.209,0.24,0.262,0.278,0.303,0.314,0.332,0.367};        
   static SCALAR CLtable[NCL]={-0.14,0.31,1.21,1.376,1.51249,1.591,1.63,1.60878,1.53712,1.376,1.142};
 
- /*Note that CLo,Cdo,Cmo will likely change with flap setting so 
-  they may not be declared static in the future */
    /* printf("Initialize= %d\n",Initialize); */
-   /* if (Initialize != 0)
-    { */
 /*        printf("Initializing aero model...Initialize= %d\n", Initialize);
  */       CLadot=1.7;
           CLq=3.9;
@@ -196,7 +195,11 @@ void aero( SCALAR dt, int Initialize ) {
           b=35.8; /*wing span ft */
           Sw=174; /*wing planform surface area ft^2*/
           rPiARe=0.054; /*reciprocal of Pi*AR*e*/
-    /* } */
+          
+          MaxTakeoffWeight=2550;
+          EmptyWeight=1500;
+       
+          Zcg=0.51;
   
   /*
   LaRCsim uses:
@@ -208,6 +211,29 @@ void aero( SCALAR dt, int Initialize ) {
        aileron > 0  => right wing up
        rudder > 0   => ANL
   */
+  
+  /*do weight & balance here since there is no better place*/
+  Weight=Mass / INVG;
+  
+  if(Weight > 2550)
+  {  Weight=2550; }
+  else if(Weight < 1500)
+  {  Weight=1500; }
+  
+  
+  if(Dx_cg > 0.5586)
+  {  Dx_cg = 0.5586; }
+  else if(Dx_cg < -0.4655)
+  {  Dx_cg = -0.4655; }
+  
+  Cg=Dx_cg/cbar +0.25;
+  
+  Dz_cg=Zcg*cbar;
+  
+       
+  
+  
+  
   long_trim=0;
   if(Aft_trim) long_trim = long_trim - trim_inc;
   if(Fwd_trim) long_trim = long_trim + trim_inc;
index fcbd85beca27bf6260ffb641736e12c7f516a8af..a6332f1499ba10637b27e502b213fad9d7b911f2 100644 (file)
@@ -2,47 +2,51 @@
 
 /*global declarations of aero model parameters*/
 
-  static SCALAR CLadot;
-  static SCALAR CLq;
-  static SCALAR CLde;
-  static SCALAR CLo;
-  
-  
-  static SCALAR Cdo;
-  static SCALAR Cda;  /*Not used*/
-  static SCALAR Cdde;
-  
-  static SCALAR Cma;
-  static SCALAR Cmadot;
-  static SCALAR Cmq;
-  static SCALAR Cmo; 
-  static SCALAR Cmde;
-  
-  static SCALAR Clbeta;
-  static SCALAR Clp;
-  static SCALAR Clr;
-  static SCALAR Clda;
-  static SCALAR Cldr;
-  
-  static SCALAR Cnbeta;
-  static SCALAR Cnp;
-  static SCALAR Cnr;
-  static SCALAR Cnda;
-  static SCALAR Cndr;
-  
-  static SCALAR Cybeta;
-  static SCALAR Cyp;
-  static SCALAR Cyr;
-  static SCALAR Cyda;
-  static SCALAR Cydr;
+   SCALAR CLadot;
+   SCALAR CLq;
+   SCALAR CLde;
+   SCALAR CLo;
+  
+  
+   SCALAR Cdo;
+   SCALAR Cda;  /*Not used*/
+   SCALAR Cdde;
+  
+   SCALAR Cma;
+   SCALAR Cmadot;
+   SCALAR Cmq;
+   SCALAR Cmo; 
+   SCALAR Cmde;
+  
+   SCALAR Clbeta;
+   SCALAR Clp;
+   SCALAR Clr;
+   SCALAR Clda;
+   SCALAR Cldr;
+  
+   SCALAR Cnbeta;
+   SCALAR Cnp;
+   SCALAR Cnr;
+   SCALAR Cnda;
+   SCALAR Cndr;
+  
+   SCALAR Cybeta;
+   SCALAR Cyp;
+   SCALAR Cyr;
+   SCALAR Cyda;
+   SCALAR Cydr;
   
   /*nondimensionalization quantities*/
   /*units here are ft and lbs */
-  static SCALAR cbar; /*mean aero chord ft*/
-  static SCALAR b; /*wing span ft */
-  static SCALAR Sw; /*wing planform surface area ft^2*/
-  static SCALAR rPiARe; /*reciprocal of Pi*AR*e*/
-  
+   SCALAR cbar; /*mean aero chord ft*/
+   SCALAR b; /*wing span ft */
+   SCALAR Sw; /*wing planform surface area ft^2*/
+   SCALAR rPiARe; /*reciprocal of Pi*AR*e*/
+   
+   SCALAR Weight; /*lbs*/
+   SCALAR MaxTakeoffWeight,EmptyWeight;
+   SCALAR Cg;     /*%MAC*/
+   SCALAR Zcg;    /*%MAC*/
   
   
   SCALAR CLwbh,CL,cm,cd,cn,cy,croll,cbar_2V,b_2V,qS,qScbar,qSb,ps,rs;
index e74983ea0e61075ea9a4a5b3daaf36126bf4926d..7f2f820a00bce78e08dd640f4af194114dafc949 100644 (file)
@@ -65,6 +65,7 @@ $Header$
 #include "ls_generic.h"
 #include "ls_sim_control.h"
 #include "ls_cockpit.h"
+#include "c172_aero.h"
 
 extern SIM_CONTROL     sim_control_;
 
@@ -77,6 +78,8 @@ void engine( SCALAR dt, int init ) {
     /* F_Z_engine = Throttle[3]*11.36/0.2; */  /* original code */
     F_X_engine = Throttle[3]*350/0.83;
     F_Z_engine = Throttle[3]*4.9/0.83;
+       M_m_engine = F_X_engine*0.734*cbar;
+       /* 0.734 - estimated (WAGged) location of thrust line in the z-axis*/
 
     Throttle_pct = Throttle[3];
 }
index 1f47bcfb0a1d0f06ac89d7085d6919fe6a6f50e3..809c13f1d34b064943d336897cb5ec8cfbced2b1 100644 (file)
@@ -12,8 +12,7 @@
 
 ----------------------------------------------------------------------------
 
-       GENEALOGY:  Renamed navion_gear.c originally created 931012 by E. B. Jackson    
-       
+       GENEALOGY:      Created 931012 by E. B. Jackson
 
 ----------------------------------------------------------------------------
 
 
 $Header$
 $Log$
-Revision 1.6  1999/08/08 15:12:33  curt
+Revision 1.7  1999/08/17 19:18:16  curt
 Updates from Tony.
 
-Revision 1.1.1.1  1999/04/05 21:32:45  curt
-Start of 0.6.x branch.
-
-Revision 1.6  1998/10/17 01:34:16  curt
-C++ ifying ...
-
-Revision 1.5  1998/09/29 02:03:00  curt
-Added a brake + autopilot mods.
-
-Revision 1.4  1998/08/06 12:46:40  curt
-Header change.
-
-Revision 1.3  1998/02/03 23:20:18  curt
-Lots of little tweaks to fix various consistency problems discovered by
-Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
-passed arguments along to the real printf().  Also incorporated HUD changes
-by Michele America.
-
-Revision 1.2  1998/01/19 18:40:29  curt
-Tons of little changes to clean up the code and to remove fatal errors
-when building with the c++ compiler.
-
-Revision 1.1  1997/05/29 00:10:02  curt
-Initial Flight Gear revision.
-
 
 ----------------------------------------------------------------------------
 
@@ -93,52 +67,51 @@ Initial Flight Gear revision.
 #include "ls_generic.h"
 #include "ls_cockpit.h"
 
-/* SCALAR Brake_pct; */
-void sub3( DATA v1[],  DATA v2[], DATA result[] )
+
+sub3( DATA v1[],  DATA v2[], DATA result[] )
 {
     result[0] = v1[0] - v2[0];
     result[1] = v1[1] - v2[1];
     result[2] = v1[2] - v2[2];
 }
 
-void add3( DATA v1[],  DATA v2[], DATA result[] )
+add3( DATA v1[],  DATA v2[], DATA result[] )
 {
     result[0] = v1[0] + v2[0];
     result[1] = v1[1] + v2[1];
     result[2] = v1[2] + v2[2];
 }
 
-void cross3( DATA v1[],  DATA v2[], DATA result[] )
+cross3( DATA v1[],  DATA v2[], DATA result[] )
 {
     result[0] = v1[1]*v2[2] - v1[2]*v2[1];
     result[1] = v1[2]*v2[0] - v1[0]*v2[2];
     result[2] = v1[0]*v2[1] - v1[1]*v2[0];
 }
 
-void multtrans3x3by3( DATA m[][3], DATA v[], DATA result[] )
+multtrans3x3by3( DATA m[][3], DATA v[], DATA result[] )
 {
     result[0] = m[0][0]*v[0] + m[1][0]*v[1] + m[2][0]*v[2];
     result[1] = m[0][1]*v[0] + m[1][1]*v[1] + m[2][1]*v[2];
     result[2] = m[0][2]*v[0] + m[1][2]*v[1] + m[2][2]*v[2];
 }
 
-void mult3x3by3( DATA m[][3], DATA v[], DATA result[] )
+mult3x3by3( DATA m[][3], DATA v[], DATA result[] )
 {
     result[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2];
     result[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];
     result[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];
 }
 
-void clear3( DATA v[] )
+clear3( DATA v[] )
 {
     v[0] = 0.; v[1] = 0.; v[2] = 0.;
 }
 
-void gear( SCALAR dt, int Initialize ) {
+gear()
+{
 char rcsid[] = "$Id$";
 
-  
-  
   /*
    * Aircraft specific initializations and data goes here
    */
@@ -183,7 +156,7 @@ char rcsid[] = "$Id$";
      *                V     V
      */
   
-    
+  
     static DATA sliding_mu   = 0.5;    
     static DATA rolling_mu   = 0.01;   
     static DATA max_brake_mu = 0.6;    
@@ -210,8 +183,6 @@ char rcsid[] = "$Id$";
 
     int i;                             /* per wheel loop counter */
   
-   Brake_pct=0; 
-  
   /*
    * Execution starts here
    */
@@ -224,8 +195,7 @@ char rcsid[] = "$Id$";
    * Put aircraft specific executable code here
    */
    
-    /* replace with cockpit brake handle connection code */
-    percent_brake[1] = Brake_pct;
+    percent_brake[1] = 0.; /* replace with cockpit brake handle connection code */
     percent_brake[2] = percent_brake[1];
     
     caster_angle_rad[0] = 0.03*Rudder_pedal;
index 3bf5ad9710c4e5a66ba957d13829c8a2ada1c8b6..fea77fa68d5b54c5b48e472f812661bca452f650 100644 (file)
@@ -43,6 +43,7 @@ typedef struct
        double latitude,longitude,altitude;
        double vc,alpha,beta,gamma;
        double theta,phi,psi;
+       double weight,cg;
        int use_gamma_tmg;
 }InitialConditions;
 
@@ -50,6 +51,8 @@ typedef struct
 // vc       knots (calibrated airspeed, close to indicated)
 // altitude ft
 // all angles in degrees
+// weight lbs
+// cg %MAC
 // if use_gamma_tmg =1 then theta will be computed
 // from theta=alpha+gamma and the value given will
 // be ignored. Otherwise gamma is computed from
@@ -61,6 +64,9 @@ void setIC(InitialConditions IC)
        SCALAR alphar,betar,thetar,phir,psir,gammar;
        SCALAR sigma,ps,Ts,a;
        
+       Mass=IC.weight*INVG;
+       Dx_cg=(IC.cg-0.25)*4.9;
+       
        Latitude=IC.latitude*DEG_TO_RAD;
        Longitude=IC.longitude*DEG_TO_RAD;
        Altitude=IC.altitude;
@@ -122,7 +128,7 @@ int trim_long(int kmax, InitialConditions IC)
        double tol=1E-3;
        double a_tol=tol/10;
        double alpha_step=0.001;
-       int k=0,i,j=0,jmax=75,sum=0;
+       int k=0,i,j=0,jmax=10,sum=0;
        ls_loop(0.0,-1);
        do{
                //printf("k: %d\n",k);
@@ -175,33 +181,135 @@ int trim_long(int kmax, InitialConditions IC)
        return k;                                       
 }
 
+int trim_ground(int kmax, InitialConditions IC)
+{
+       double elevator,alpha,qdot_prev,alt_prev,step;
+       double tol=1E-3;
+       double a_tol=tol/10;
+       double alpha_step=0.001;
+       int k=0,i,j=0,jmax=40,sum=0,m=0;
+       Throttle_pct=0;
+       Brake_pct=1;
+       Theta=5*DEG_TO_RAD;
+       IC.altitude=Runway_altitude;
+       printf("udot: %g\n",U_dot_body);
+       setIC(IC);
+       printf("Altitude: %g, Runway_altitude: %g\n",Altitude,Runway_altitude);
+       qdot_prev=1.0E6;
+       
+       ls_loop(0.0,-1);
+       
+       do{
+               //printf("k: %d\n",k);
+               step=1;
+           printf("IC.altitude: %g, Altitude: %g, Runway_altitude: %g,wdot: %g,F_Z_gear: %g, M_m_gear: %g,F_Z: %g\n",IC.altitude,Altitude,Runway_altitude,W_dot_body,F_Z_gear,M_m_gear,F_Z);
+
+               m=0;
+               while((fabs(W_dot_body) > tol) && (m < 10))
+               {
+                       
+                       j=0;
+                       
+                       do{
+                               alt_prev=IC.altitude;
+                               IC.altitude+=step;
+                               setIC(IC);
+               ls_loop(0.0,-1);
+                               printf("IC.altitude: %g, Altitude: %g, Runway_altitude: %g,wdot: %g,F_Z: %g\n",IC.altitude,Altitude,Runway_altitude,W_dot_body,F_Z);
+                               j++;
+                       }while((W_dot_body < 0) && (j < jmax));
+                       IC.altitude-=step;
+                       step/=10;
+                       printf("step: %g\n",step);
+                       m++;
+                       
+               }       
+               sum+=j;
+        printf("IC.altitude: %g, Altitude: %g, Runway_altitude: %g,wdot: %g,F_Z_gear: %g, M_m_gear: %g,F_Z: %g\n",IC.altitude,Altitude,Runway_altitude,W_dot_body,F_Z_gear,M_m_gear,F_Z);
+
+        j=0;
+               
+               while((Q_dot_body <= qdot_prev) && (j < jmax))
+               {
+
+            
+                       qdot_prev=Q_dot_body;
+                       IC.theta+=Q_dot_body;
+            setIC(IC);
+                       ls_loop(0.0,-1);
+                       j++;
+                       
+                       printf("\tTheta: %7.4f, qdot: %10.6f, qdot_prev: %10.6f, j: %d\n",Theta*RAD_TO_DEG,Q_dot_body,qdot_prev,j);
+               }
+               IC.theta-=qdot_prev;
+               sum+=j;
+               
+               printf("\tTheta: %7.4f, qdot: %10.6f, W_dot_body: %g\n",Theta,Q_dot_body,W_dot_body);
+        j=0;
+               if(W_dot_body > tol)
+               {
+                       step=1;
+                       while((W_dot_body > 0) && (j <jmax))
+                       {
+                               IC.altitude-=step;
+                               setIC(IC);
+                               ls_loop(0.0,-1);
+                               j++;
+                       }
+               }               
+               k++;j=0;
+    }while(((fabs(W_dot_body) > tol) || (fabs(Q_dot_body) > tol)) && (k < kmax));
+       printf("Total Iterations: %d\n",sum);
+       return k;                                       
+}
 void do_trims(int kmax,FILE *out,InitialConditions IC)
 {
-       int k=0;
-       double speed,elevator;
+       int k=0,i;
+       double speed,elevator,cmcl;
        out=fopen("trims.out","w");
        speed=55;
-       while(speed < 150)
+       
+       for(i=1;i<=5;i++)
        {
-          IC.vc=speed;
-          Long_control=0;Theta=0;Throttle_pct=0.2;
-          
-          k=trim_long(kmax,IC);
-          if(Long_control <= 0)
-                 elevator=Long_control*28;
-          else
-                elevator=Long_control*23;      
-          
-          fprintf(out,"%g,%g,%g,%g,%g,%d\n",V_calibrated_kts,Alpha*RAD_TO_DEG,Long_control,Throttle_pct,Gamma_vert_rad,k);
-          printf("%g,%g,%g,%g,%d,%g,%g,%g\n",V_calibrated_kts,Alpha*RAD_TO_DEG,elevator,Throttle_pct,k,W_body,U_body,Q_body);
-
-          if(k >= kmax)
-          {
-                printf("kmax exceeded at: %g knots\n",V_calibrated_kts);
-                printf("wdot: %g, udot: %g, qdot: %g\n\n",W_dot_body,U_dot_body,Q_dot_body);
-          }
-          speed+=10;     
-       }        
+               switch(i)
+               {
+                       case 1: IC.weight=1500;IC.cg=0.155;break;
+                       case 2: IC.weight=1500;IC.cg=0.364;break;
+                       case 3: IC.weight=1950;IC.cg=0.155;break;
+                       case 4: IC.weight=2550;IC.cg=0.257;break;
+                       case 5: IC.weight=2550;IC.cg=0.364;break;
+               }
+               
+               speed=50;
+               while(speed <= 150)
+               {
+                  IC.vc=speed;
+                  Long_control=0;Theta=0;Throttle_pct=0.0;
+
+                  k=trim_long(kmax,IC);
+                  if(Long_control <= 0)
+                         elevator=Long_control*28;
+                  else
+                        elevator=Long_control*23;      
+                  if(fabs(CL) > 1E-3)
+                  {
+                               cmcl=cm / CL;
+                  }    
+                  if(k < kmax)
+                  {
+                               fprintf(out,"%g,%g,%g,%g,%g,%d",V_calibrated_kts,Alpha*RAD_TO_DEG,Long_control,Throttle_pct,Gamma_vert_rad,k);
+                               fprintf(out,",%g,%g,%g,%g,%g\n",CL,cm,cmcl,Weight,Cg);
+/*                             printf("%g,%g,%g,%g,%g,%g,%g,%g,%g,%g\n",V_calibrated_kts,Alpha*RAD_TO_DEG,elevator,CL,cm,Cmo,Cma,Cmde,Mass*32.174,Dx_cg);
+ */               }    
+          else
+                  {
+                        printf("kmax exceeded at: %g knots, %g lbs, %g %%MAC\n",V_calibrated_kts,Weight,Cg);
+                        printf("wdot: %g, udot: %g, qdot: %g\n\n",W_dot_body,U_dot_body,Q_dot_body);
+
+                  }
+                  speed+=10;     
+               }
+    }
        fclose(out);
 }      
 
@@ -354,7 +462,7 @@ int main(int argc, char *argv[]) {
        
        double save_alt = 0.0;
     int multiloop=1,k=0,i;
-       double time=0,elev_trim,elev_trim_save,elevator,speed;
+       double time=0,elev_trim,elev_trim_save,elevator,speed,cmcl;
        FILE *out;
        double hgain,hdiffgain,herr,herrprev,herr_diff,htarget;
        InitialConditions IC;
@@ -370,22 +478,46 @@ int main(int argc, char *argv[]) {
        Runway_altitude =   18.0;
        IC.altitude=strtod(argv[2],NULL); 
        IC.vc=strtod(argv[1],NULL);
-       IC.alpha=strtod(argv[3],NULL);
+       IC.alpha=10;
        IC.beta=0;
-       IC.gamma=strtod(argv[3],NULL);
-       IC.use_gamma_tmg=1;
+       IC.theta=strtod(argv[3],NULL);
+       IC.use_gamma_tmg=0;
        IC.phi=0;
        IC.psi=0;
+       IC.weight=1500;
+       IC.cg=0.155;
        Long_control=strtod(argv[4],NULL);
     setIC(IC);
        printf("Out setIC\n");
        ls_ForceAltitude(IC.altitude);  
     fgLaRCsimInit(0.01);
        
-       /* printf("trim_long():\n");
-       k=trim_long(200,IC); */
-       
+       while(IC.alpha < 30.0)
+       {
+               setIC(IC);
+               ls_loop(0.0,-1);
+               printf("CL: %g ,Alpha: %g\n",CL,IC.alpha);
+               IC.alpha+=1.0;
+       }
        
+       /*trim_ground(10,IC);*/
+       /* printf("%g,%g\n",Theta,Gamma_vert_rad); 
+       printf("trim_long():\n");
+       k=trim_long(200,IC);
+       Throttle_pct=Throttle_pct-0.2;
+       printf("%g,%g\n",Theta,Gamma_vert_rad); 
+       out=fopen("dive.out","w");
+       time=0;
+       while(time < 30.0)
+       {
+                       ls_update(1);
+                       
+                       cmcl=cm/CL;
+                       fprintf(out,"%g,%g,%g,%g,%g,%d",V_calibrated_kts,Alpha*RAD_TO_DEG,Long_control,Throttle_pct,Gamma_vert_rad,k);
+                       fprintf(out,",%g,%g,%g\n",CL,cm,cmcl);
+                       time+=0.01;
+    }
+       fclose(out);
        printf("V_rel_wind: %8.2f, Alpha: %8.2f, Beta: %8.2f\n",V_rel_wind,Alpha*RAD_TO_DEG,Beta*RAD_TO_DEG);
        printf("Theta: %8.2f, Gamma: %8.2f, Alpha_tmg: %8.2f\n",Theta*RAD_TO_DEG,Gamma_vert_rad*RAD_TO_DEG,Theta*RAD_TO_DEG-Gamma_vert_rad*RAD_TO_DEG);
        printf("V_north: %8.2f, V_east_rel_ground: %8.2f, V_east: %8.2f, V_down: %8.2f\n",V_north,V_east_rel_ground,V_east,V_down);
@@ -396,12 +528,12 @@ int main(int argc, char *argv[]) {
        ls_update(1);
        printf("V_rel_wind: %8.2f, Alpha: %8.2f, Beta: %8.2f\n",V_rel_wind,Alpha*RAD_TO_DEG,Beta*RAD_TO_DEG);
        printf("Theta: %8.2f, Gamma: %8.2f, Alpha_tmg: %8.2f\n",Theta*RAD_TO_DEG,Gamma_vert_rad*RAD_TO_DEG,Theta*RAD_TO_DEG-Gamma_vert_rad*RAD_TO_DEG);
-
+ */
        
     /* Inform LaRCsim of the local terrain altitude */
     
     
-    do_trims(200,out,IC);
+    
     return 1;
 }
 
@@ -581,143 +713,7 @@ int FGInterface_2_LaRCsim (FGInterface& f) {
 
     return( 0 );
 }
+*/
 
 
-// Convert from the LaRCsim generic_ struct to the FGInterface struct
-int fgLaRCsim_2_FGInterface (FGInterface& f) {
-
-    // Mass properties and geometry values
-    f.set_Inertias( Mass, I_xx, I_yy, I_zz, I_xz );
-    // f.set_Pilot_Location( Dx_pilot, Dy_pilot, Dz_pilot );
-    f.set_CG_Position( Dx_cg, Dy_cg, Dz_cg );
-
-    // Forces
-    // f.set_Forces_Body_Total( F_X, F_Y, F_Z );
-    // f.set_Forces_Local_Total( F_north, F_east, F_down );
-    // f.set_Forces_Aero( F_X_aero, F_Y_aero, F_Z_aero );
-    // f.set_Forces_Engine( F_X_engine, F_Y_engine, F_Z_engine );
-    // f.set_Forces_Gear( F_X_gear, F_Y_gear, F_Z_gear );
-
-    // Moments
-    // f.set_Moments_Total_RP( M_l_rp, M_m_rp, M_n_rp );
-    // f.set_Moments_Total_CG( M_l_cg, M_m_cg, M_n_cg );
-    // f.set_Moments_Aero( M_l_aero, M_m_aero, M_n_aero );
-    // f.set_Moments_Engine( M_l_engine, M_m_engine, M_n_engine );
-    // f.set_Moments_Gear( M_l_gear, M_m_gear, M_n_gear );
-
-    // Accelerations
-    // f.set_Accels_Local( V_dot_north, V_dot_east, V_dot_down );
-    // f.set_Accels_Body( U_dot_body, V_dot_body, W_dot_body );
-    // f.set_Accels_CG_Body( A_X_cg, A_Y_cg, A_Z_cg );
-    // f.set_Accels_Pilot_Body( A_X_pilot, A_Y_pilot, A_Z_pilot );
-    // f.set_Accels_CG_Body_N( N_X_cg, N_Y_cg, N_Z_cg );
-    // f.set_Accels_Pilot_Body_N( N_X_pilot, N_Y_pilot, N_Z_pilot );
-    // f.set_Accels_Omega( P_dot_body, Q_dot_body, R_dot_body );
-
-    // Velocities
-    f.set_Velocities_Local( V_north, V_east, V_down );
-    // f.set_Velocities_Ground( V_north_rel_ground, V_east_rel_ground, 
-    //                      V_down_rel_ground );
-    // f.set_Velocities_Local_Airmass( V_north_airmass, V_east_airmass,
-    //                             V_down_airmass );
-    // f.set_Velocities_Local_Rel_Airmass( V_north_rel_airmass, 
-    //                          V_east_rel_airmass, V_down_rel_airmass );
-    // f.set_Velocities_Gust( U_gust, V_gust, W_gust );
-    // f.set_Velocities_Wind_Body( U_body, V_body, W_body );
-
-    // f.set_V_rel_wind( V_rel_wind );
-    // f.set_V_true_kts( V_true_kts );
-    // f.set_V_rel_ground( V_rel_ground );
-    // f.set_V_inertial( V_inertial );
-    // f.set_V_ground_speed( V_ground_speed );
-    // f.set_V_equiv( V_equiv );
-    f.set_V_equiv_kts( V_equiv_kts );
-    // f.set_V_calibrated( V_calibrated );
-    // f.set_V_calibrated_kts( V_calibrated_kts );
-
-    f.set_Omega_Body( P_body, Q_body, R_body );
-    // f.set_Omega_Local( P_local, Q_local, R_local );
-    // f.set_Omega_Total( P_total, Q_total, R_total );
-    
-    // f.set_Euler_Rates( Phi_dot, Theta_dot, Psi_dot );
-    f.set_Geocentric_Rates( Latitude_dot, Longitude_dot, Radius_dot );
-
-    FG_LOG( FG_FLIGHT, FG_DEBUG, "lon = " << Longitude 
-           << " lat_geoc = " << Lat_geocentric << " lat_geod = " << Latitude 
-           << " alt = " << Altitude << " sl_radius = " << Sea_level_radius 
-           << " radius_to_vehicle = " << Radius_to_vehicle );
-           
-    // Positions
-    f.set_Geocentric_Position( Lat_geocentric, Lon_geocentric, 
-                               Radius_to_vehicle );
-    f.set_Geodetic_Position( Latitude, Longitude, Altitude );
-    f.set_Euler_Angles( Phi, Theta, Psi );
-
-    // Miscellaneous quantities
-    f.set_T_Local_to_Body(T_local_to_body_m);
-    // f.set_Gravity( Gravity );
-    // f.set_Centrifugal_relief( Centrifugal_relief );
-
-    f.set_Alpha( Alpha );
-    f.set_Beta( Beta );
-    // f.set_Alpha_dot( Alpha_dot );
-    // f.set_Beta_dot( Beta_dot );
-
-    // f.set_Cos_alpha( Cos_alpha );
-    // f.set_Sin_alpha( Sin_alpha );
-    // f.set_Cos_beta( Cos_beta );
-    // f.set_Sin_beta( Sin_beta );
-
-    // f.set_Cos_phi( Cos_phi );
-    // f.set_Sin_phi( Sin_phi );
-    // f.set_Cos_theta( Cos_theta );
-    // f.set_Sin_theta( Sin_theta );
-    // f.set_Cos_psi( Cos_psi );
-    // f.set_Sin_psi( Sin_psi );
-
-    f.set_Gamma_vert_rad( Gamma_vert_rad );
-    // f.set_Gamma_horiz_rad( Gamma_horiz_rad );
-
-    // f.set_Sigma( Sigma );
-    // f.set_Density( Density );
-    // f.set_V_sound( V_sound );
-    // f.set_Mach_number( Mach_number );
-
-    // f.set_Static_pressure( Static_pressure );
-    // f.set_Total_pressure( Total_pressure );
-    // f.set_Impact_pressure( Impact_pressure );
-    // f.set_Dynamic_pressure( Dynamic_pressure );
-
-    // f.set_Static_temperature( Static_temperature );
-    // f.set_Total_temperature( Total_temperature );
-
-    f.set_Sea_level_radius( Sea_level_radius );
-    f.set_Earth_position_angle( Earth_position_angle );
-
-    f.set_Runway_altitude( Runway_altitude );
-    // f.set_Runway_latitude( Runway_latitude );
-    // f.set_Runway_longitude( Runway_longitude );
-    // f.set_Runway_heading( Runway_heading );
-    // f.set_Radius_to_rwy( Radius_to_rwy );
-
-    // f.set_CG_Rwy_Local( D_cg_north_of_rwy, D_cg_east_of_rwy, D_cg_above_rwy);
-    // f.set_CG_Rwy_Rwy( X_cg_rwy, Y_cg_rwy, H_cg_rwy );
-    // f.set_Pilot_Rwy_Local( D_pilot_north_of_rwy, D_pilot_east_of_rwy, 
-    //                        D_pilot_above_rwy );
-    // f.set_Pilot_Rwy_Rwy( X_pilot_rwy, Y_pilot_rwy, H_pilot_rwy );
-
-    f.set_sin_lat_geocentric(Lat_geocentric);
-    f.set_cos_lat_geocentric(Lat_geocentric);
-    f.set_sin_cos_longitude(Longitude);
-    f.set_sin_cos_latitude(Latitude);
-
-    // printf("sin_lat_geo %f  cos_lat_geo %f\n", sin_Lat_geoc, cos_Lat_geoc);
-    // printf("sin_lat     %f  cos_lat     %f\n", 
-    //        f.get_sin_latitude(), f.get_cos_latitude());
-    // printf("sin_lon     %f  cos_lon     %f\n",
-    //        f.get_sin_longitude(), f.get_cos_longitude());
-
-    return 0;
-} */
-