AFLR2C Example Cases
Data files for several AFLR2C sample cases are provided. Package
archives with all of the example cases are provided in aflr2c-examples.tar.gz
(tar-gzip archive for Linux/MacOSX) and aflr2c-examples.zip (zip archive for Windows).
Copy the package archive files and unpackage them in a location of your
choosing to run the example cases. All cases require minimal resources. The
input surface edge grid files provided for the sample cases are ASCII formatted
files of either BEDGE type or 2D FGRID type. In the following case examples the
output mesh file is a big-endian double precision C-binary (.b8) 2D UGRID type
file. Alternative file types can be used. By default the output volume mesh is
a big-endian double precision C-binary (.b8) 2D UGRID type file named
case_name.b8.ugrid. An isotropic element planar mesh can be generated for any
of the sample cases using the following command.
aflr2c -i case_name
See the AFLR2C documentation
for information on available options and usage. Alternatively you can view
text-based documentation at the command line with the following command.
aflr2c -help
The XPLT2 program is provided to visualize the mesh that is output
from AFLR2C. To display the output mesh using XPLT2 use
the following command.
xplt2 case_name.b8.ugrid
Text-based documentation is available at the command line with the following
command.
xplt2 -help
Several AFLR2C example cases are provided and described below.
Mesh
between two circles.
aflr2c -i circle
Quad/tria
mesh between two circles.
aflr2c -quad -i circle
Mesh
in a box.
aflr2c -i box
Quad/tria
mesh in a box.
aflr2c -quad box
Mesh around NACA0012 airfoil.
aflr2c -i n12
Quad/tria
mesh around NACA0012 airfoil.
aflr2c -quad -i n12
Mesh
about a multi-element airfoil.
aflr2c -i m3
Quad/tria
mesh about a multi-element airfoil.
aflr2c -quad -i m3
Mesh
with multiple different inner and outer shapes.
aflr2c -i shapes.fgrid
Quad/tria
mesh with multiple different inner and outer shapes.
aflr2c -quad -i shapes.fgrid
Mesh for Atlantic ocean with field growth.
aflr2c -grow1 -i atlantic
Quad/tria
mesh for Atlantic ocean with field growth.
aflr2c -grow1 -quad -i atlantic
Quad/tria
mesh for multiple objects with a quad interior core mesh.
aflr2c -i things_ic_bnd -ice -o things_ic.b8.ugrid
Quad/tria
mesh around NACA0012 airfoil with a quad interior core mesh.
aflr2c -i n12 -ice -o n12_v3.b8.ugrid
Quad/tria
mesh around multi-element airfoil with a quad interior core mesh.
aflr2c -i m3 -ice -o m3_v3.b8.ugrid
Mesh
Sizing
In
default mode AFLR2C determines element sizing based on interpolation
between boundary points (and source points, if any). As mesh generation
advances the sizing is propagated by continued interpolation locally.
Alternatively, an external sizing function can be coded and linked with the
executable. A built-in external sizing function is provided for testing and
example. By itself it is not useful for practical problems. However, developers
can integrate specialized sizing functions within the AFLR2C executable.
The built-in function simply creates a continuous field that varies radially
from the center of the domain outward to the boundaries. At the center the
sizing is smaller than specified at the boundaries. Another alternative for
sizing is to use a background mesh and function file for interpolation. If the
files case_name.back.b8.ugrid and case_name.back.sfunc exist then it is assumed
that use of a background mesh is desired. Note that any supported and readable
mesh and function file format and type are equally as acceptable as .b8.ugrid
and .sfunc. The case name case_name must be the same as the input surface mesh
file. The option flag -no_back can be added to ignore these files.
Box with external isotropic sizing function. The following example uses
the built-in external sizing function. If an alternative routine is created
then use of that function can be controlled in the same manner or by using the
correct meval=# for the alternative function. The provided built-in sizing
function has test cases for meval=1,2,...6 (4,5,6 require use of a metric - see
next section). This case also creates a background grid sizing field that will be
used in the next case. The option flag meval=1 activates use of the alternative
built-in external sizing function #1 and the flag mwbgfunc=1 (not required for
normal usage) simply creates an output function file box.back.sfunc which
contains the isotropic sizing for each mesh vertex.
aflr2c -i box meval=1 mwbgfunc=1
Box
with background mesh for interpolation of isotropic sizing.
Another alternative for sizing is to use a background mesh and function file
for interpolation. If the files box.back.b8.ugrid and box.back.sfunc exist then
it is assumed that use of a background mesh is desired. Note that any supported
and readable mesh and function file format and type are equally as acceptable
as .b8.ugrid and .sfunc. The option flag -no_back can be added to ignore these
files. In this test case the background mesh sizing field is derived from the
previous case. It could also be generated from another code that bases the
sizing on the computed physics or other criteria. The resulting mesh is
equivalent to the previous case (on which it is based). However, it does differ
since here we are interpolating rather than determining the sizing
analytically.
cp box.b8.ugrid box.back.b8.ugrid
aflr2c -i box
Anisotropic Adaptation/Generation
In
default mode AFLR2C determines element sizing based on interpolation
between boundary points (and source points, if any). Alternatively, the sizing
can be interpolated from a background mesh. In addition, the background mesh
may specify, in a function file, either the isotropic mesh sizing or
directional metric based sizing. If the executable is able to find a set of
files named case_name.back.* for the background mesh that is a valid mesh type
file along with a background sizing function file that is a valid function file
then the background data will be read in and used. The case name case_name must
be the same as the input surface mesh file. The option flag -no_back can be
added to ignore these files. If the metric option is on (mmet=1 or 2) then the
function file must contain a metric for every background mesh vertex. And, if
the metric option is off (mmet=0) as it is by default then the function file
must contain an isotropic spacing for every background mesh vertex. With a
background mesh all element sizing is interpolated from the background mesh.
The first step in the mesh generation process in adaptation mode is a
regeneration of the input boundary edge grid. The vertex spacing on the
boundary edges is determined from the background mesh. Cubic splines based upon
the input boundary edge grid are used for geometric specification. As such, the
input boundary edge grid should be of sufficient resolution to resolve the
geometry. Splines are split between boundary edges of different IDs and at
discontinuities. The detection of discontinuities is controlled by the input
parameter angdbe (discontinuous boundary edge angle). If the angle between two
adjacent boundary edge vectors differ by more than angdbe then the location is
considered discontinuous. The discontinuity angle may need to be modified for
configurations that do not have differing boundary edge IDs and low-angle
discontinuities.
Subsequent mesh generation steps follow the normal process, except that sizing
is interpolated from the background mesh. With metric based adaptation/generation
it is recommended that right angle elements be used (mpp=3) as the point
placement strategy uses alignment with the background metric. Typically the
only option required is -met3 (mmet=1 mpp=3). Note that at present smoothing is
turned off when metrics are used.
Box with a cross. The following example uses the built-in external
sizing function and creates the metric field instead of using a background
mesh. If an alternative routine is created then use of that function can be
controlled in the same manner or by using the correct meval=# for the
alternative function. The provided built-in sizing function has test cases for
meval=1,2,...6 (4,5,6 require use of a metric - see next section). The option
flag met3 turns on use of the metric and right angle point placement and the
option flag meval=5 activates use of the alternative built-in external sizing
function #3 (blended cross).
aflr2c -i cross -met3 meval=5
Supersonic
NACA Airfoil. The following example for a NACA airfoil in a supersonic
flow field uses a supplied background mesh and metric field. The option
flag met3 turns on use of the metric and right angle point placement.
aflr2c -i naca -met3
Scramjet. The
following example for a scramjet field uses a supplied background mesh and
metric field. The option flag met3 turns on use of the metric and right
angle point placement.
aflr2c -i scramjet -met3
Shock
Bubble Interaction. The following example for a shock interacting with bubble in
a supersonic flow field uses a supplied background mesh and metric
field. The option flag met3 turns on use of the metric and right angle
point placement.
aflr2c -i shock_bubble -met3
The
BSURF2 program is also provided to generate boundary edge grid files. It is
an interactive program and the prompts should be descriptive enough to allow
usage. Package archives with example files for the BSURF2 code are
provided in bsurf2-examples.tar.gz
(tar-gzip archive for Linux/MacOSX) and bsurf2-examples.zip (zip archive for Windows).
BSURF2 is not that well documented and it would be much
easier to use in a GUI. However it gets the job done and is not that painful to
use. The objects in the geometry can be a circle, polygon, or come from a data
file. The data file must be a string of x and y coordinates (one set per line)
in sequential order that form a closed curve (do not duplicate the last data
point). The direction (clockwise or not) is not important. A spline is
generated for each object and automatically split at the first and last data
points and at detected discontinuities. Spline split points can be added or deleted.
A script file is created that allows one to rerun a case with a corrected error
or slightly different parameters. Edit the script file (default name is
bsurf2.script) to make changes and rerun BSURF2. The # comments should
provide information necessary to modify the right parameters. If you make an
error while running BSURF2 and want to start over from a previous point
in the session then kill the process. In this case edit the script file by
deleting everything from the point you made the unwanted step to the end of the
file. Then rerun BSURF2 using the script file you edited as the input
script file. The program will redo all the steps contained in the script file
and return standard input control to you when it reaches the end of the file.
To run BSURF2 in interactive mode simply enter the following and follow
the interactive prompts.
bsurf2
Note that BSURF2 generates ASCII formatted type BEDGE edge grid files.
These are exactly the same as the older, and now obsolete, BSURF type files
that older versions of BSURF2 generated. AFLR2C can input BEDGE,
BSURF, 2D FGRID or 2D UGRID file types. See the UG_IO documentation for
a description of standard UG_IO file types used by AFLR2C.
BSURF2 example cases are provided and described below. The script files
for each are configured to generate a suitable boundary edge grid for AFLR2C.
Mesh around NACA0012 airfoil.
bsurf2 n12
aflr2c -i n12
Mesh with multiple different inner and outer shapes.
bsurf2 shapes
aflr2c -i shapes