%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % README file explaining the data organisation structure, and file contents % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Introduction %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This README file describes the data published to accompany the paper 'Adapting Three-Dimensional Shock Control for Swept Flows' by N. R. Jones, J. P. Eastwood and J. P. Jarrett, published in the AIAA Journal. Data supporting the publication is made available due to Open Access requirements of the research funder, the UK Engineering and Physical Sciences Research Council (EPSRC). For information about the research and methodology, see the original publication. This file describes only the contents of the data as made publicly available, and familiarity with the terms used in the publication will be assumed. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Contents % Data Organisation % Available data % Folder organisation % Accessing the Data % Validation Cases % % Axes Convention % % Structure of datasummary.mat % Field entries % % Structure of results.mat % Field entries %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Data Organisation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Available data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Due to the large size of the files comprising each CFD simulation (as performed in ANSYS Fluent), the original simulation files are not shared. Instead, for greater convenience, a post-processed data file is provided for each case, containing such information extracted from the raw files as was necessary or useful to the conclusions in the paper. To generate these files, Fluent simulation are post-processed using another ANSYS CFD-Post. Various surfaces/planes of interest are defined, such as the aerofoil surface. Flow variables interpolated onto these surfaces are then exported. The exported files are imported into Matlab for further analysis. This processed data is subsequently stored in two ways: - summary file, one for the entire data set, named 'datasummary.mat' - results files, one for each case, all named 'results.mat' The single summary file contains details of each case (SCB geometries, test conditions, etc) as well as the useful statistics (principally Cl, Cd, L/D). This file speeds up analyses comparing numerous SCB designs, since there is then no need to open the individual results files for each case. 'datasummary.mat' is stored in the main folder, where this README file is also found. The results file for each case contains additional data, which would be neither simply organised nor efficiently stored (in terms of memory) within the summary file. This might include, for example, wall pressure on the aerofoil surface. 'results.mat' for each case is stored in the appropriate case folder. This is explained the next section. The contents of both 'datasummary.mat' and a typical 'results.mat' file are also explained later in this file. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Folder Organisation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Firstly we define what is meant by a 'case'. A unique simulation case is defined as by the section shape of the underlying wing, the SCB's geometric parameters, and the freestream flow condition. Cases are organised by a system of folders, according to 3-tiers. The names of folders in each tier are strings following a specific format. These can be interpreted to identify the parameters or variables describing the unique case. The three tiers are ordered as wing / scb geometry / test condition and so typical directory name for a unique test case would be: OAT15AV/A07_R008_C004_T018_X048_W004_E008_G008_S040_Y020_H000/M0710_a2.50_s300 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Wing The first folder is a 7-digit ID for the wing section. This is typically the aerofoil section's name, shorted or lengthened to fit the field width. For example, all tests in the published paper use the OAT15A section, stored in a folder 'OAT15AV' (last letter arbitrary). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SCB geometry The second folder identifies the SCB geometry, with a more complex string, but again of fixed field length. Each substring (see below) is also of fixed length. Using the case above as an example, the SCB geometry is obtained as follows: 'A07_R008_C004_T018_X048_W004_E008_G008_S040_Y020_H000' sub- MATLAB Publication Variable string Symbol Value Symbol Name A07 A = 7 degrees theta SCB ramp angle R008 R = 0.08c l_r SCB ramp length C004 C = 0.04c l_c SCB crest length T018 T = 0.18c l_t SCB tail length X048 X = 0.48c x_c location of centre of SCB crest W004 W = 0.04c b_w width of SCB (central portion) E001 E = 0.01c b_e width of SCB edge towards -z axis G001 G = 0.01c width of SCB edge towards +z axis S040 S = 0.40c b_s spacing between SCBs Y020 Y = 20 degrees psi rotation applied to SCB H000 H = 0 degrees tau shear applied to SCB Note 1: the letters used to denote parameters with the results files are not consistent with those in the publication, due to the absence of greek letters in matlab. Note 2: edge widths E and G (or b_e, b_g) are treated together as b_e in the publication, where all the SCBs considered have symmetrical edges. The distinction is made in the SCB indentity string to enable future work which might include asymmetrical edges. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Test condition The third folder identifies the freestream test condition. Again using the case above as an example, the freestream condition is identified as: 'M0710_a2.50_s000' sub- MATLAB Publication Variable string Symbol Value Symbol Name M0710 M = 0.71 M_n freestream, wing normal Mach number a2.50 alpha = 2.50 deg alpha_n freestream, wing normal angle of attack s300 sweep = 30 deg Lambda_infty freestream sweep %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Accessing the Data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Due to the volume of data (~200 cases), accessing the data might be complex or confusing. Therefore to facilitate access by unfamiliar users, versions of some of the scripts used to access and analyse the data are also included. These are in the folder 'scripts'. Within the folder 'scripts', another README file provide some further guidance. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Validation Cases %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Validation data is included in a separate folder - (most of) these cases are not included in the main body of the data. This is due to the various additional differences, such as turbulence model and grid resolution, which occur between cases used for validation purposes but which do not vary within the main data set. Accessing data within the main set is made simpler by their exclusion. A separate README file is included within the validation folder to explain the contents. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Axes Convention %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Axes conventions used in the data are not consistent in the published paper. By default, ANSYS Fluent/ICEM-CFD/CFD-POST treat x as the streamwise coordinate as usual, but y as the vertical coordinate (thus as 2D simulation would use xy only), and z as the spanwise coordinate. To summarise: Axis Publication Results files Streamwise x x Vertical z y Spanwise y z The xyz axes form a conventional right handed set in both cases. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Structure of the datasummary.mat file %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% When loaded into Matlab, the 'datasummary.mat' file places a single struct variable into the workspace, with the name 'datasummary'. It's structure is as follows. Using a example where datasummary contains 228 test cases, datasummary would contain: datasummary = caselist: {228x1 cell} wing: {228x1 cell} bump: {228x1 cell} mach: [228x1 double] alpha: [228x1 double] sweep: [228x1 double] cl: [228x1 double] cd: [228x1 double] cm: [228x1 double] T: [228x1 double] P: [228x1 double] LD: [228x1 double] xshavg: [1x1 struct] mshavg: [1x1 struct] Forces: [1x1 struct] Coeffs: [1x1 struct] scb: [1x1 struct] These fields will now be explained in turn, where some of the examples are illustrated for an arbitrary entry (i) in the array. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Field entries in datasummary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary.caselist(i) = 'OAT15AA/A07_R008_C004_T018_X048_W004_E008_G008_S040_Y020_H000/M0710_a2.50_s000' 'caselist' is the directory in which data for the case is contained, as explained above. This is used to identify the location of the files corresponding to the simulation case, including results.mat. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary.wing(i) = 'OAT15AA' 'wing' contains the 7-digit identifier for the wing section, as explained above. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary.bump(i) = 'A07_R008_C004_T018_X048_W004_E008_G008_S040_Y020_H000' 'bump' contains only the string which identifies the SCB geometry, as explained above. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary. = scb: [1x1 struct] sweep: [1x228 double] % freestream sweep, needed to calc effective isolation A: [1x228 double] % SCB ramp angle, theta R: [1x228 double] % SCB ramp length, l_r C: [1x228 double] % SCB crest length, l_c T: [1x228 double] % SCB tail length, l_t X: [1x228 double] % position of centre of SCB crest, x_c W: [1x228 double] % SCB width, b_w E: [1x228 double] % SCB edge width, on z- side, b_e G: [1x228 double] % SCB edge width, on z+ side S: [1x228 double] % SCB spacing, b_s Y: [1x228 double] % SCB rotation, psi H: [1x228 double] % SCB shear, tau Cstart: [1x228 double] % for unrotated scb: location of start of crest Cend: [1x228 double] % as above, but rear of crest Bstart: [1x228 double] % as above, but start of ramp Bend: [1x228 double] % as above, but end of tail iso: [1x228 double] % isolation, original definition isoeff: [1x228 double] % effective isolation, extended definition The bumpdecode.m function decodes an SCB string, and returns a struct containing the SCB's geometric parameters, plus additional calculations from them, such as the SCB isolation. The input is a cell with a string - such as {results.bump}. The output struct is stored as datasummary.scb. Further, the bumpdecode.m function will accept cell arrays (of strings) such as datasummary.bump, returning as depicted above, a struct with scalar arrays as fields. The bumpdecode.m function also optionally accepts a value of sweep, which is required for the calculation of effective isolation. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary. mach: [228x1 double] alpha: [228x1 double] sweep: [228x1 double] T: [228x1 double] P: [228x1 double] Freestream, wing-normal test conditions, plus freestream temperature and pressure for each case %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary. cl: [228x1 double] cd: [228x1 double] cm: [228x1 double] LD: [228x1 double] Coefficients of body forces on the infinite wing, and performance metric L/D. These are read by an automated Fortran script from the last line of the convergence history files output by Fluent. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary. xshavg: [1x1 struct] mshavg: [1x1 struct] datasummary.xshavg Y0005: [228x2 double] Y001: [228x2 double] Y0025: [228x2 double] Y005: [228x2 double] Y01: [228x2 double] Y02: [228x2 double] Y0275: [228x2 double] Contains an average of the shock position (xshavg) and strength (mshavg). There are 2 entries per case (228 cases) which attempt to give an average position of both front and rear shock legs. Comments on accuracy: the average is a reasonably accurate description for the rear-shock leg, though obviously not for the front leg, which is strongly draped around the scb ramp. For clean-wing cases both entries should (if the algorithm functioned correctly) contain the same value. The accuracy of the algorithm with any 2D SCB cases has not been checked, since these were added much after the work on the shock-detection algorithm was done, however results should be reasonably descriptive of both shock legs. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% datasummary. Forces: [1x1 struct] Coeffs: [1x1 struct] datasummary.Forces = Pressure: [1x1 struct] Viscous: [1x1 struct] Total: [1x1 struct] datasummary.Forces.Pressure = x: [1x228 double] y: [1x228 double] z: [1x228 double] Fluent can provide a breakdown of the body forces on a surface, in this case the 2.5D wing surface. Body forces are broken down into viscous and pressure components (with the total also provided), and then further into x,y,z components for each. 'Forces' contains the body forces, and 'Coeffs' the non-dimensionalised counterparts. Scalar arrays of these are recorded at each x,y,z level, with each array having one entry for each case (there are 228 cases in the example above). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Structure of a typical results.mat file %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Results files named results.mat are contained within each 3rd-tier directory (explained above). The raw simulation files would also be contained in the same location, but are not made publicly available due to the large file size. Results files all have identical names for simplicity of data access, but the test case and geometry can be identified from the opened data file, as well as the directory structure. Upon loading a results.mat file into Matlab (eg: double click on a file on the working path), a struct variable named 'results' is loaded into the workspace. The contents of a typical 'results' struct is as follows: results = casename: 'OAT15AV/A07_R008_C004_T018_X048_W004_E008_G00…' bump: 'A07_R008_C004_T018_X048_W004_E008_G008_S040_Y…' scb: [1x1 struct] aero: [1x1 struct] mach: 0.7100 alpha: 2.5000 sweep: 0 dataY0005: [1x1 struct] dataY001: [1x1 struct] dataY0025: [1x1 struct] dataY005: [1x1 struct] dataY01: [1x1 struct] dataY02: [1x1 struct] dataY0275: [1x1 struct] dataZ: [1x1 struct] walldata: [1x1 struct] chordz0: [1x1 struct] Forces: [1x1 struct] Coeffs: [1x1 struct] xshavg: [1x1 struct] mshavg: [1x1 struct] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Fields in results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = casename: 'OAT15AA/A07_R008_C004_T018_X048_W004_E008_G008_S040_Y020_H000/M0710_a2.50_s000' bump: 'A07_R008_C004_T018_X048_W004_E008_G008_S040_Y020_H000' 'casename' is the folder in which data for the case is contained, as explained above. This is used primarily when the data is first imported to Matlab processed, and therefore retained. 'bump' is similar to casename, but contains only the 2nd level folder name, which identifies the SCB geometry. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = scb: [1x1 struct] results.scb = sweep: 0 % freestream sweep, needed to calc effective isolation A: 7 % SCB ramp angle theta R: 0.0800 % SCB ramp length C: 0.0400 % SCB crest length T: 0.1800 % SCB tail length X: 0.4800 % location of centre of SCB crest W: 0.0400 % width of SCB (central portion) E: 0.0800 % width of SCB edge towards +y G: 0.0800 % width of SCB edge towards -y S: 0.4000 % spacing between SCBs Y: 20 % rotation applied to SCB H: 0 % shear applied to SCB Cstart: 0.4600 % for unrotated/unsheared scb: location of start of crest Cend: 0.5000 % as above, but rear of crest Bstart: 0.3800 % as above, but start of ramp Bend: 0.6800 % as above, but end of tail iso: 0.5000 % isolation parameter (ie: original definition) isoeff: 0.4617 % effective isolation parameter (ie: extended definition) The bumpdecode.m function decodes an SCB string, and returns a struct containing the SCB's geometric parameters, plus additional calculations from them, such as the SCB isolation. The input is a cell with a string - such as {results.bump}. The output struct is stored as results.scb (or as datasummary.scb). The bumpdecode.m function also optionally accepts a value of sweep, which is required for the calculation of effective isolation. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = aero: [1x1 struct] results.aero = points: [7200x3 double] Np: 600 Nc: 12 This contains the geometry file used to create the mesh in IcemCFD. Each geometry file for a 3D-SCB case consists of Nc curves, each of Np points. In total, there are Nc*Np points (here 7200), each with an (x,y,z) location in space. The three columns of results.aero.points represent x,y,z coordinates in the usual order. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = mach: 0.7100 alpha: 2.5000 sweep: 0 The freestream, wing-normal test conditions. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = dataY0005: [1x1 struct] dataY001: [1x1 struct] dataY0025: [1x1 struct] dataY005: [1x1 struct] dataY01: [1x1 struct] dataY02: [1x1 struct] dataY0275: [1x1 struct] dataZ: [1x1 struct] These are some of the selected regions of data exported from CFD Post. None of this data is used in the publication, however a shock-detection algorithm was written during early research to enable very simple visualisation of the shock structure. Fields titled 'dataY0###' refer to surfaces offset from the wing model by 0.### in all directions. The last field, 'dataZ' refers to 5 streamwise planes: z = -S/2, -S/4, 0, S/4, S/2. Combined, these selected regions of the flowfield give a simple picture of the 3D shock structure. For speed, the shock-detections algorithm uses only a further-reduced number of points from these regions. This relies on data-reduction in both CFD-Post (to export the described offset or vertical surfaces), followed by a simple Fortran script to discard data points not close to the shock. The number of points retained in each data#### struct is therefore small, limited to only data points identified as near the shock. The variables in each struct field are as follows: results.dataZ = NodeNumber: [412x1 double] % number used by Fluent only X: [412x1 double] % streamwise coordinate Y: [412x1 double] % vertical coordinate Z: [412x1 double] % spanwise coordinate Density: [412x1 double] % Pressure: [412x1 double] % Temperature: [412x1 double] % Velocity: [412x1 double] % fs: [412x1 double] % shock indicator function dfsX: [412x1 double] % ... streamwise gradient dfsY: [412x1 double] % ... vertical gradient dfsZ: [412x1 double] % ... spanwise gradient machno: [412x1 double] % mach number shocksurfind: [1x282 double] % list identifying which of the points in this struct (here out of 1:412) which are determined to be on the shock front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = walldata: [1x1 struct] NodeNumber: [15974x1 double] % number used by fluent X: [15974x1 double] Y: [15974x1 double] Z: [15974x1 double] Density: [15974x1 double] Pressure: [15974x1 double] Temperature: [15974x1 double] WallShear: [15974x1 double] WallShearX: [15974x1 double] WallShearY: [15974x1 double] WallShearZ: [15974x1 double] USinds: [7593x1 double] % list of which nodes in 'walldata' (from 1:15974) which are on the upper surface of the wing Data exported for the aerofoil surface. The variables exported are reasonably self-explanatory. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = chordz0: [1x1 struct] NodeNumber: [7588x1 double] X: [7588x1 double] % streamwise coordinate Y: [7588x1 double] % vertical coordinate Z: [7588x1 double] % spanwise coordinate Density: [7588x1 double] Pressure: [7588x1 double] Temperature: [7588x1 double] Velocity: [7588x1 double] Velocityu: [7588x1 double] VelocityuGradientX: [7588x1 double] % d(streamwise velocity) / dx VelocityuGradientY: [7588x1 double] % d(streamwise velocity) / dy VelocityuGradientZ: [7588x1 double] % d(streamwise velocity) / dz Velocityv: [7588x1 double] VelocityvGradientX: [7588x1 double] % d(vertical velocity) / dx VelocityvGradientY: [7588x1 double] % d(vertical velocity) / dy VelocityvGradientZ: [7588x1 double] % d(vertical velocity) / dz Velocityw: [7588x1 double] VelocitywGradientX: [7588x1 double] % d(spanwise velocity) / dx VelocitywGradientY: [7588x1 double] % d(spanwise velocity) / dy VelocitywGradientZ: [7588x1 double] % d(spanwise velocity) / dz machno: [7588x1 double] p0: [7588x1 double] % stagnation pressure Data exported along the streamwise plane at z=0, confined to a region near the wing. This is used mostly for boundary layer calculations on the clean-wing, to determine for example the local flow direction within the boundary layer. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results = Forces: [1x1 struct] Coeffs: [1x1 struct] results.Forces = Pressure: [1x1 struct] Viscous: [1x1 struct] Total: [1x1 struct] results.Forces.Pressure = x: -152.1568 y: 5.3702e+03 z: -0.0177 Forces and Coeffs are exports from Fluent, which can provide a breakdown of the body forces on a surface, in this case the 2.5D wing surface. Forces are broken down into viscous and pressure components, with the total also provided, and then again into x,y,z components for each. Coeffs is the non-dimensional form of Forces. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% results. xshavg: [1x1 struct] mshavg: [1x1 struct] results.xshavg dataY0005: [0.3838 0.4623] dataY001: [0.3886 0.4791] dataY0025: [0.3977 0.4882] dataY005: [0.4085 0.4949] dataY01: [0.4371 0.4867] dataY02: [0.4611 0.4611] dataY0275: [0.4505 0.4505] Contains an average of the shock position (xshavg) and strength (mshavg), calculated for each of the datasets listed (though for a fixed distance from the aerofoil surface) There are 2 entries in each field, which attempt to give an average position of both front and rear shock legs respectively. Comments on accuracy: the average is a reasonably accurate description for the rear-shock leg, though obviously not for the front leg, which is strongly draped around the scb ramp. For clean-wing cases both entries should (if the algorithm functioned correctly) contain the same value. The accuracy of the algorithm with any 2D SCB cases has not been checked, since these were added much after the work on the shock-detection algorithm was done, however results should be reasonably descriptive of both shock legs. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Additional data, such as lift and drag coefficients, are contained in a separate file, 'datasummary.mat'. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%