Block Splitting And Load Balancing


CONTENTS



BLOCK AND INPUT FILE SPLITTING

IF A LIMITER IS DESIRED, USE IFLIM=4. This will allow for consistent results with block splitting; iflim=3 is not recommended - iflim=4 is basically a correct implementation of iflim=3 for multiple blocks, and should now be viewed as the recommended limiter for any case that needs one.

Also, for exact consistency between split and unsplit grids, version 5 emulation (i.e. "Install -v5) should not be used. Version 5 (and earlier versions) made an approximation for cell volumes at 1-1 block interfaces that has been eliminated in version 6 in favor of the exact treatment.

The input file part of the splitter works by first converting the unsplit CFL3D input file to a TLNS3D map file, splitting the TLNS3D map file, then converting the split TLNS3D map file back to a CFL3D input file.

Caveats: The conversions from the CFL3D input file to a TLNS3D map file are not perfect! The user is urged check the resulting split CFL3D input (and patch) files. A useful check before actually splitting the files is to run this splitter with the number of splittings = 0, and the output grid file as null. This will cause to code to go through the translations, but the "split" files will have the same numbers of blocks, and the "split" grid will not be output. A "diff" or "gdiff" will point to translation-induced differences that should be easier to sort out than when coupled with true splitting. Note that the 2-step process almost always results in a *reordering* of some boundary condition segments.

Sample splitter input file:

This example splits block 1 in half in the i-direction, then splits each of the two resulting blocks in half in the j-direction; i.e. block 1 is split into 4 eqidimensioned blocks.

INPUT (UNSPLIT) FILES
cfl3d.inp
ronnie.inp
grid.unf
sd_grid.unf
ICFLVER   IRONVER   IGRDFMT    ISDFMT
      5         1         1         1
OUTPUT (SPLIT) FILES
cfl3d.inp_split
ronnie.inp_split
grid_split.unf
sd_grid_split.unf
ICFLVER   IRONVER   IGRDFMT    ISDFMT
      5         1         1         1
NSPLITS
2
1
1
0
1
2
0

Where:

cfl3d.inp
cfl3d input file for the unsplit grid

ronnie.inp
ronnie input file for the unsplit grid
if not a patched case, enter the word null

grid.unf
grid file for the unsplit grid; can be formatted or unformatted

sd_grid.unf
sensitivity file for the unsplit grid
NOTE: Currently not supported in Version 6; the same functionality is now handled via complex variables and a complex-valued grid file (see below); enter the word null

cfl3d.inp_split
cfl3d input file for the split grid

ronnie.inp_split
ronnie input file for the split grid
if not a patched case, enter the word null

grid_split.unf
grid file for the split grid; can be formatted or unformatted

sd_grid_split.unf
sensitivity file for the split grid
NOTE: Currently not supported in Version 6; the same functionality is now handled via complex variables and a complex-valued grid file (see below); enter the word null

icflver
=  4 the cfl3d input file is a version 4.1 type
= -4 the cfl3d input file is a version 4.1hp type
=  5 the cfl3d input file is a version 5/6 type

ironver
= 0 ronnie input file is the old style, with all "from" blocks listed on one line
= 1 ronnie input file is the new style, with each "from" block having it's own line
NOTE: a value for ironver must always be entered, even if the case does not involve patched grids.

igrdfmt
= 0 grid file is formatted
= 1 grid file is unformatted

isdfmt
= 0 sensitivity file is formatted
= 1 sensitivity file is unformatted
NOTE: Currently not supported in Version 6; the same functionality is now handled via complex variables and a complex-valued grid file (see below);however a value is still required - use 0 or 1

nsplits
number of grid splits to perform (can be 0 in order to convert grid from formatted to unformatted or vice versa

Following the value of nsplits, nsplits triplets of integers must appear, one integer of the triplet per line:

iblk
block number of the block to be split. NOTE: iblk always refers to the original, unsplit block number

ldir
= 1 split in the i-direction
= 2 split in the j-direction
= 3 split in the k-direction

index
split the block in the ldir direction at this value of the index
NOTE: use 0 for a quick way to split at the midpoint of the ldir direction...HOWEVER: if you want to do multiple splits in a particular coordinate direction, then the 0 index shortcut cannot be used.
for example, if block 6 has 129 points in say, the i-direction, and it is desired to split the block into 4 pieces in the i-direction (3 splits), then one must use:

NSPLITS
3
6
1
33
6
1
65
6
1
97

The 0 index shortcut could still be used in the j and/or k directions provided there is only one split in block 6 in either the j and/or k directions.

For sensitivity (derivative) evaluation, CFL3Dv6 uses complex variables. For geometrical derivatives, this requires that the grid be complex-valued. To split a complex-valued grid, use SPLITTERCMPLX rather than SPLITTER. All the information above holds for the complex case, except that now both the split and unsplit grids are complex-valued.

Return To Top


FILE CONVERSION

The splitter may also be used to convert files from formatted to formatted and vice versa, and from one cfl3d input file type to another.

For example, to convert the formatted grid file grid.fmt to the unformatted grid file grid.unf and at the same time convert the version 4 input file cfl3d.inp_v4 to a version 5/6 input file cfl3d.inp_v6:

INPUT (UNSPLIT) FILES
cfl3d.inp_v4
null
grid.fmt
null
ICFLVER   IRONVER   IGRDFMT    ISDFMT
      4         1         0         1
OUTPUT (SPLIT) FILES
cfl3d.inp_v6
null
grid.unf
null
ICFLVER   IRONVER   IGRDFMT    ISDFMT
      5         1         1         1
NSPLITS
0

Return To Top


LOAD BALANCING

Return To Top


Page Curator and NASA Responsible Official: Christopher L. Rumsey

Last Updated: January 16, 2007

Privacy Statement

LMS Feedback Form