Adrien Crovato
ULiege, 2016-2018
Aero was developed at the University of Liège during the academic year 2016-2017. The purpose of Aero was to compute the aerodynamic loads on an arbitrary wing for preliminary aircraft design computations.
To achieve this goal, a Field Panel Method (FPM) solving the Full Potential Equation was developed.
The FPM is an extension of the panel method. The body is discretized in panels onto which singularities are superimposed and a Cartesian grid is added around the body. The Cartesian grid also contain singularities (field sources) modeling the compressibility of the fluid.
Additional theory as well as references can be found in the documentation under the doc folder.
Several cases should be considered:
- Subcritical flow (M_local < 0.95)
The FPM will perform well, but the gain in accuracy will not be relevant compared to the increase in CPU cost when compared to the Panel Method (PM). A Fast Multipole Method (FMM) has to be implemented to decrease the computational time and make it close to a PM. Such methods have already been applied to the PM, so the extension should not be a problem. - Supercritical flow - really weak shock ( 0.95 < M_local < 1.15)
The FPM will give a better solution than the PM. The cost will not be that high. However, to remain competitive, an acceleration technique such as the Fast Multipole Method should be considered. - Supercritical flow - weak shock (1.15 < M_local < 1.3)
The FPM results will be better than the PM, but the shock will be smeared and displaced compared to traditional field methods (Finite Elements/Volumes). Even if the FMM is implemented, the lack in shock resolution would still pose a serious problem for transonic aircraft design. - Supercrtical flow - strong shock (M_local > 1.3)
The Full Potential Equation should not be used!
Test cases illustrating thoses results can be found in the documentation under the doc folder.
If you use this work, please acknowledge the authors:
"Aero - a Field Panel Method for Aerodynamic Loads Computation in Preliminary Aircraft Design" by Adrien Crovato, University of Liege
The main paper about this work can be found in the 2018 ICAS proceedings or on Orbi:
A. Crovato, G. Dimitriadis, V.E. Terrapon, University of Liège. *Higher Fidelity Transonic Aerodynamic Modeling in Preliminary Aircraft Design*, 31st Congress of the International Council of the Aeronautical Sciences (ICAS), 9-14th September 2018, Belo Horionte, Brazil.
Note that Aero is distributed under the Apache License 2.0
Aero is really simple to compile. It just needs to be linked to the pre-compiled (header based) Eigen library. All the configuration is handled by CMake, so you only need to set an environment variable pointing to your Eigen folder with the command line. Additionnaly, you may want to download gmsh to view some results during the post-processing.
Links to packages
Required packages
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install libeigen3-dev
sudo apt-get install gmshPath setting
export INCLUDE=/path/to/eigenCompilation
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 4Test
cd ../bin
./aero ../IO/N12.cfg ../IO/N12.ptsRequired packages
- CMake, Eigen3 and gmsh
- Clang (through Command Line Tools)
xcode-select --installPath setting
export INCLUDE=/path/to/eigenCompilation
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 4Test
cd ../bin
./aero ../IO/N12.cfg ../IO/N12.ptsRequired packages
- CMake, Eigen3 and gmsh
- MinGW
- download from https://sourceforge.net/projects/mingw/files/ (mingw-get)
- install the manager
- install
mingw32-baseandmingw32-gcc-g++ - add
\path\to\MinGW\mingw32\binto thePATHEnvironment Variable in Windows
Path setting
set INCLUDE=\path\to\eigenCompilation
md build
cd build
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..
mingw32-make -j 4Test
cd ..\bin
.\aero.exe ..\IO\N12.cfg ..\IO\N12.ptsThe mesh file (second input file, see below) is ASCII formatted and can be written by hand. If you have access to MATLAB, a meshing script is given to facilitate the generation of the mesh file. If you do not have MATLAB, an alternative is to try it with GNU Octave or to translate the script in Python.
In order to define a wing, the user must change the following parameters:
Files (ASCII Selig formatted) where the airfoils are defined:
% Folders and paths
nAirf = 3; % number of airfoil used to generate the wing
fname = cell(1,nAirf); % name of the airfoils data file
fpath = ''; % folder where airfoils data are
fname{1,1}(1,:) = 'nasaSC20714';
fname{1,2}(1,:) = 'nasaSC20712';
fname{1,3}(1,:) = 'nasaSC20712';
outFname = 'mesh.dat'; % output file nameGeometry of the wing:
% Wing geometry (multi planform defintion for HALF wing)
meanC4AirfSweep = 0*pi/180; % mean quarter-chord sweep (0 if airfoil coordinates are provided STREAMWISE, mean sweep angle if CHORDWISE)
span = [2; 4]; % panform span
taper = [0.6; 0.4]; % planform taper
sweepLE = [25; 25]*pi/180; % leading edge planform sweep
% sweepLE = atan(tan(sweepC4)+(1-taper)./((AR)*(1+taper))); %if quarter chord sweep provided instead
dihedral = [5; 2]*pi/180; % planform dihedral
twist = [0.; 0.; -1.]*pi/180; % planform twist
rootChord = 2; % root chord lengthMesh parameters:
% Mesh parameters
meshType = 1; % mesh distribution type (1=half-cosine, 2=linear, 3=geometric)
prog = 1.1; % if mesh type is geometric, defines progression
nSpanStat = [5; 11]; % number of spanwise stations (spanwise panels - 1) for EACH planform
nPoints = 101; % number of chordwise points (chordwise panels - 1), MUST BE ODD AND DIVISIBLE BY 4 when 1 is substractedAero needs two input files: a configuration .cfg file and a (surface) grid .pts file.
-
The cfg file is order in sections (marked by
$). The order of the lines and sections should not be changed. Below is a commented example file.bstands for boolean,istands for int anddstands for double.Config fileTitle line$symSymmetry sectionXZ_SYM = bSymmetry about xz plane (0=no, 1=yes)$numNumerical parameters sectionboxTol = dTolerance on the minimal size box enclosing the geometry (default: 1e-3)resRed = iTolerance on the relative source change (stop criterion) (default: 5)$geoGeometry parametersS_REF = dReference area (projected on the z-plane)$flowFlow parametersMACH = dMach numberAoA = dAngle of attack$gridCartesian grid parametersX_DIV = iNumber of cell in the x directionY_DIV = iNumber of cell in the y directionZ_DIV = iNumber of cell in the z direction$boxCartesian grid corner definition (reference looking in the +y direction)BOX_X0Y0Z0 = d d dCoordinates of front lower left cornerBOX_X1Y0Z0 = d d dCoordinates of front lower right cornerBOX_X0Y0Z1 = d d dCoordinates of front upper left cornerBOX_X1Y0Z1 = d d dCoordinates of front upper right cornerBOX_X0Y1Z0 = d d dCoordinates of back lower left cornerBOX_X1Y1Z0 = d d dCoordinates of back lower right cornerBOX_X0Y1Z1 = d d dCoordinates of back upper left cornerBOX_X1Y1Z1 = d d dCoordinates of back upper right corner$subSub-panelling parametersNS = iNumber of sub-panel per panel (16)NC = dCut-off percrentage of the distance cell-panel in the normal direction (default: 0.1)LC = dCut-off percrentage of the distance cell-panel in the longitudinal direction (default: 0.75)
-
The pts file is ordered in two sections and contains the corner points of the panels on the wing.
The first line is the title. Then, the first section$sizecontains the number of chordwise and spanwise points. The second section$pointscontains the panel corner points. They are ordered in Selig format in the chordwise direction: from suction side TE to pressure side TE. When an airfoil (section of the wing) has been fully defined, the next section in the spanwise direction is described.
All the points are given in terms of x (flow), y (span), z (vertical) coordinates.
Two test cases are given as examples: a rectangular naca0012 wing and the weel-known Onera M6 wing.
Aero writes four files after each run.
- sp.dat: ASCII formatted file containing the pressure coefficient at the center of each panel
- fv.dat: ASCII formatted file containing the field variables at the center of each field cell
- Cp.pos: ASCII formatted gmsh file displaying the pressure coefficient on the wing
- M.pos: ASCII formatted gmsh file displaying the Mach number in the field
