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