Defining a New Dataset

Overview

A dataset consists of a set of polar data (standard CL and CD coefficients vs α) spanning a matrix of T/C, camber, Mach, and Reynolds number. There are no minimums on the number of T/C, Mach, Reynolds or camber numbers needed... except that you need at least one.

The following sections illustrate the required format for the dataset in tabular, C/C++ pseudo code, and as an example. These three present complementary and overlapping information. You're probably best to begin with the tabular format, and use the C/C++ pseudo code and example to clarify things. Hopefully, you'll get a very clear picture of what's expected for the input format from the 3 views presented. Elements in the dataset can be separated by any number of whitespace characters (tab, space, carriage return, or comma).

 

Dataset Format Description (Tabular)

This table is the primary reference for the dataset format. Operating and geometric definitions in this table (Rey[], Mach[], TbyC[], Camber[], and Alpha[]) should be monotonic increasing. Linear interpolation is used when intermediate values are needed.

DATA DESCRIPTION
nMach, nRey, nTbyC, nCamber The number of Mach, Reynolds, T/C, and Camber values in the dataset.  Each parameter must be > 0. The upper limit is set by your computer memory... i.e. practically no limit.
Mach[0], Mach[1], Mach[2], --etc--, Mach[nMach - 1] The Mach numbers in the dataset.
Rey[0], Rey[1], Rey[2], --etc--, Rey[nRey - 1] The Reynolds numbers in the dataset.
TbyC[0], TbyC[0], TbyC[0], --etc--, TbyC[nTbyC - 1] The T/C numbers in the dataset.
Camber[0], Camber[1], Camber[2], --etc--, Camber[nCamber - 1] The Camber numbers in the dataset.
   
nAlpha  
Alpha[0], Alpha[1], Alpha[2], --etc--, Alpha[nAlpha - 1] Angle of incidence values in monotonic increasing order, with MIN=Alpha[0] and MAX=Alpha[nAlpha-1]. You should ideally have MAX = -MIN as that will enable PropGen to "flip" the airfoil to see if it works any better during design optimizations. e.g. when designing a wind turbine, PropGen may "flip" positively cambered airfoils to improve performance.
   
LIFT Enter "LIFT" to identify the start of CL data
TbyC[0], Camber[0], Rey[0] The (constant) T/C, camber, and Reynolds numbers used for the CL data on the following block of data.
DATABLOCK[TbyC[0], Camber[0], Rey[0]] See DATABLOCK description for the definition of this metadata.
   
TbyC[0], Camber[0], Rey[1] The (constant) T/C, camber, and Reynolds numbers used for the CL data on the following block of data.
DATABLOCK[TbyC[0], Camber[0], Rey[1]] See DATABLOCK description for the definition of this metadata.
   
--etc--  
   
TbyC[0], Camber[0], Rey[nRey] The (constant) T/C, camber, and Reynolds numbers used for the CL data on the following block of data.
DATABLOCK[TbyC[0], Camber[0], Rey[nRey]] See DATABLOCK description for the definition of this metadata.
   
TbyC[0], Camber[1], Rey[0] The (constant) T/C, camber, and Reynolds numbers used for the CL data on the following block of data.
DATABLOCK[TbyC[0], Camber[1], Rey[0]] See DATABLOCK description for the definition of this metadata.
   
TbyC[0], Camber[1], Rey[1] --etc--
DATABLOCK[TbyC[0], Camber[1], Rey[1]] --etc--
   
--etc--  
   
TbyC[0], Camber[1], Rey[nRey]  
DATABLOCK[TbyC[0], Camber[1], Rey[nRey]]  
   
iterate similarly through all the Camber values  
   
TbyC[1], Camber[0], Rey[0]  
DATABLOCK[TbyC[1], Camber[0], Rey[0]]  
   
TbyC[1], Camber[0], Rey[1]  
DATABLOCK[TbyC[1], Camber[0], Rey[1]]  
   
--etc--  
   
TbyC[1], Camber[0], Rey[nRey]   
DATABLOCK[TbyC[1], Camber[0], Rey[nRey]]  
   
TbyC[1], Camber[1], Rey[0]  
DATABLOCK[TbyC[1], Camber[0], Rey[0]]  
   
TbyC[1], Camber[1], Rey[1]  
DATABLOCK[TbyC[1], Camber[0], Rey[1]]  
   
--etc--  
   
TbyC[1], Camber[1], Rey[nRey]  
DATABLOCK[TbyC[1], Camber[0], Rey[nRey]]  
   
iterate similarly through all the T/C values  
   
DRAG Enter "DRAG" exactly as shown.
--the CD data-- DRAG data is entered similarly to LIFT data.  This is illustrated in the example dataset. 

 

 

DATABLOCK Description

This is how the actual CL and CD coefficients are specified. The pseudo code for this may add amplification.

Format for DATABLOCK[TbyC[x], Camber[y], Rey[z]] Description
Alpha[0] CL[Mach[0]] CL[Mach[1]] CL[Mach[2]] etc CL[Mach[nMach - 1]] CLat α[0] over the Mach number range - constant T/C, Camber, and Reynolds number.
Alpha[1] CL[Mach[0]] CL[Mach[1]] CL[Mach[2]] etc CL[Mach[nMach - 1]]  
Alpha[2] CL[Mach[0]] CL[Mach[1]] CL[Mach[2]] etc CL[Mach[nMach - 1]]  
--etc--            
Alpha[nAlpha] CL[Mach[0]] CL[Mach[1]] CL[Mach[2]] etc CL[Mach[nMach - 1]]  

 

Dataset Format Description (pseudo code)

The following pseudo code should give you a good idea of how the DATABLOCKs are formatted and the order in which data are required.

    int itbyc, icamb, irey, ialpha, imach;
    float *Tbyc;
    float *Camb;
    float *Rey;
    -etc-
    float *****lift_or_drag_data;
    -etc-
    
    for (itbyc = 0; itbyc < ndata.TBYC; itbyc++) {
        for (icamb = 0; icamb < ndata.CAMB; icamb++) {
            for (irey = 0; irey < ndata.REY; irey++) {
                *outs << Tbyc[itbyc] << "\t" << Camb[icamb] << "\t" << Rey[irey] << "\n";
                for (ialpha = 0; ialpha < nalpha; ialpha++) {
                    outs->width(7);
                    outs->precision(4);
                    *outs << alpha[ialpha] << TAB;
                    for (imach = 0; imach < ndata.MACH; imach++) {
                        *outs << lift_or_drag_data[itbyc][irey][imach][icamb][ialpha]
                              << TAB;
                    }
                    *outs << "\n";
                }
            }
        }
    }
          
          

Dataset Format Description (Example)

The following is a properly formated example of a dataset with nMach=2, nRey=2, nTbyC=3, and nCamber=3. Note the "LIFT" and "DRAG" sections of the table.

 2    2    3    3
 0.3	       0.5 
 1e+006	    3e+006 
 0.04	      0.06	      0.15 
 0	       0.1	       0.2 
 4
 -6	      0	     12	     30 
 4
 -6	      0	     12	     30 
LIFT 
 0.04	0	1e+006
 -6	   -0.3	   -0.3 
 0	      0	      0 
 12	   0.75	   0.75 
 30	  0.724	  0.724 
 0.04	0	3e+006
 -6	   -0.3	   -0.3 
 0	      0	      0 
 12	  0.757	  0.757 
 30	  0.732	  0.732 
 0.04	0.1	1e+006
 -6	   -0.2	  -0.19 
 0	    0.1	   0.11 
 12	   0.75	   0.75 
 30	  0.725	  0.725 
 0.04	0.1	3e+006
 -6	   -0.2	  -0.19 
 0	    0.1	   0.11 
 12	  0.757	  0.757 
 30	  0.733	  0.733 
 0.04	0.2	1e+006
 -6	 -0.114	 -0.105 
 0	  0.185	  0.195 
 12	   0.75	   0.75 
 30	  0.726	  0.726 
 0.04	0.2	3e+006
 -6	 -0.114	 -0.105 
 0	  0.185	  0.195 
 12	  0.757	  0.757 
 30	  0.734	  0.734 
 0.06	0	1e+006
 -6	   -0.3	   -0.3 
 0	      0	      0 
 12	   0.75	  0.765 
 30	  0.724	  0.739 
 0.06	0	3e+006
 -6	   -0.3	   -0.3 
 0	      0	      0 
 12	   0.76	  0.775 
 30	  0.735	   0.75 
 0.06	0.1	1e+006
 -6	 -0.199	 -0.186 
 0	  0.101	  0.114 
 12	   0.75	  0.765 
 30	  0.726	  0.741 
 0.06	0.1	3e+006
 -6	 -0.199	 -0.186 
 0	  0.101	  0.114 
 12	   0.76	  0.775 
 30	  0.736	  0.751 
 0.06	0.2	1e+006
 -6	 -0.119	 -0.099 
 0	   0.18	    0.2 
 12	   0.75	  0.765 
 30	  0.727	  0.742 
 0.06	0.2	3e+006
 -6	 -0.119	 -0.099 
 0	   0.18	    0.2 
 12	   0.76	  0.775 
 30	  0.737	  0.752 
 0.15	0	1e+006
 -6	   -0.3	   -0.3 
 0	      0	      0 
 12	  0.803	  0.748 
 30	  0.777	  0.722 
 0.15	0	3e+006
 -6	   -0.3	   -0.3 
 0	      0	      0 
 12	    -99	    -99 
 30	   1.19	   1.14 
 0.15	0.1	1e+006
 -6	 -0.205	 -0.205 
 0	  0.095	  0.095 
 12	  0.803	  0.748 
 30	  0.777	  0.722 
 0.15	0.1	3e+006
 -6	 -0.205	 -0.205 
 0	  0.095	  0.095 
 12	    -99	    -99 
 30	   1.19	   1.14 
 0.15	0.2	1e+006
 -6	 -0.132	 -0.132 
 0	  0.168	  0.168 
 12	  0.803	  0.748 
 30	  0.778	  0.723 
 0.15	0.2	3e+006
 -6	 -0.132	 -0.132 
 0	  0.168	  0.168 
 12	    -99	    -99 
 30	   1.19	   1.14 
 DRAG 
 0.04	0	1e+006
 -6	 0.0099	 0.0094 
 0	 0.0129	 0.0124 
 12	 0.0189	 0.0184 
 30	 0.5275	  0.527 
 0.04	0	3e+006
 -6	 0.0099	 0.0094 
 0	 0.0129	 0.0124 
 12	 0.0189	 0.0184 
 30	 0.5275	  0.527 
 0.04	0.1	1e+006
 -6	  0.005	  0.005 
 0	  0.008	  0.008 
 12	  0.014	  0.014 
 30	 0.5227	 0.5227 
 0.04	0.1	3e+006
 -6	  0.005	  0.005 
 0	  0.008	  0.008 
 12	  0.014	  0.014 
 30	 0.5227	 0.5227 
 0.04	0.2	1e+006
 -6	 0.0053	 0.0053 
 0	 0.0083	 0.0083 
 12	 0.0143	 0.0143 
 30	  0.523	  0.523 
 0.04	0.2	3e+006
 -6	 0.0053	 0.0053 
 0	 0.0083	 0.0083 
 12	 0.0143	 0.0143 
 30	  0.523	  0.523 
 0.06	0	1e+006
 -6	 0.0103	 0.0101 
 0	 0.0133	 0.0131 
 12	 0.0193	 0.0191 
 30	 0.5279	 0.5277 
 0.06	0	3e+006
 -6	 0.0103	 0.0101 
 0	 0.0133	 0.0131 
 12	 0.0193	 0.0191 
 30	 0.5279	 0.5277 
 0.06	0.1	1e+006
 -6	 0.0087	 0.0076 
 0	 0.0117	 0.0106 
 12	 0.0177	 0.0166 
 30	 0.5263	 0.5252 
 0.06	0.1	3e+006
 -6	 0.0087	 0.0076 
 0	 0.0117	 0.0106 
 12	 0.0177	 0.0166 
 30	 0.5263	 0.5252 
 0.06	0.2	1e+006
 -6	 0.0082	 0.0078 
 0	 0.0112	 0.0108 
 12	 0.0172	 0.0168 
 30	 0.5258	 0.5254 
 0.06	0.2	3e+006
 -6	 0.0082	 0.0078 
 0	 0.0112	 0.0108 
 12	 0.0172	 0.0168 
 30	 0.5258	 0.5254 
 0.15	0	1e+006
 -6	 0.0145	  0.015 
 0	 0.0175	  0.018 
 12	 0.0235	  0.024 
 30	 0.5322	 0.5326 
 0.15	0	3e+006
 -6	 0.0145	  0.015 
 0	 0.0175	  0.018 
 12	 0.0235	  0.024 
 30	 0.0325	  0.033 
 0.15	0.1	1e+006
 -6	 0.0105	 0.0106 
 0	 0.0135	 0.0136 
 12	 0.0195	 0.0196 
 30	 0.5281	 0.5283 
 0.15	0.1	3e+006
 -6	 0.0105	 0.0106 
 0	 0.0135	 0.0136 
 12	 0.0195	 0.0196 
 30	 0.0285	 0.0286 
 0.15	0.2	1e+006
 -6	  0.009	 0.0091 
 0	  0.012	 0.0121 
 12	  0.018	 0.0181 
 30	 0.5267	 0.5268 
 0.15	0.2	3e+006
 -6	  0.009	 0.0091 
 0	  0.012	 0.0121 
 12	  0.018	 0.0181 
 30	  0.027	 0.0271