PEGASUS 5 User's Guide
Previous Section Return to Table of Contents Next Section




Section 3: PROGRAM IMPLEMENTATION

3.1 Compilation PEGASUS will usually be obtained in a "gzipped" tar file. When the file is unzipped and extracted, the top directory will contain a configure script and several subdirectories. The /peg subdirectory contains the source code, and the /tools subdirectory contains several PEGASUS utilities that aid in setting up the input, plotting, file conversion, and diagnostics.

PEGASUS has been developed and tested on SGI, LINUX, and Cray platforms. Every attempt has been made to conform to standard Fortran 90 conventions; therefore, compilation on other platforms with compliant Fortran 90 compilers should be straightforward.

To compile and install PEGASUS and all of the utility programs and scripts, follow these steps:

  1. Run the configure script. Type "configure -help" to see a list of options. Examples include:
    configure --enable-dp To enable double-precision
    configure --enable-mpi To enable MPI parallel execution (See MPI Compilation below)
    configure --enable-mpilog To enable MPI parallel exection with MPE logging
    configure --enable-mips2 SGI -mips2 compiler option
    configure --enable-mips3 SGI -mips3 compiler option
    configure --enable-mips4 SGI -mips4 compiler option
    configure --enable-debug To enable debug compiler flags and output
    configure --with-pgi Use Portland Group compilers
    configure --installdir=DIR Executables will be installed in directory DIR

     
  2. Compile: type "make"
     
  3. Install: type "make CMD=install"

The executable will be named pegasus5.

It is recommended that PEGASUS be compiled and run in double precision when viscous grids are used. Running viscous cases in single precision has been seen to sometimes adversely affect the hole-generation process, and in some cases can affect interpolation as well.

3.1.1 MPI Compilation

As of version 5.1g, PEGASUS5 has a parallel execution option which utilizes Message-Passing Interface (MPI) standard. This option must be enabled when the code is compiled. Use of the --enable-mpi or the --enble-mpilog configure options will produce a peg/Makefile which enables MPI, and will produce an executable named pegasus5mpi. The MPI version of PEGASUS5 has been tested using the mpich implementation of MPI. The MPI version of the peg/Makefile utilizes mpif90, which is a script interface to your f90 compiler that is created when you install mpich. If another implemntation of mpi is to be used, you need to edit your peg/Makefile appropriately. See http://www-unix.mcs.anl.gov/mpi/mpich/ for more information about mpich. See Section 4.2 for information about running pegasus5mpi.

3.2 User Inputs

Two types of input must be supplied: the volume grids, and the standard input file. There are some utility codes, which are described in Section 3.3, which help in the preparation of this input. The details of these inputs are described in this section.

The individual volume grids are stored in a sub-directory within the project directory called X_DIR. See Section 3.5 for a description of the directory structure used by PEGASUS5 code. The grids are to be stored as unformatted, single-zone, PLOT3D grid files. These grid files are named "mesh_nameA.x", "mesh_nameB.x", etc, where mesh_nameA, mesh_nameB, ... correspond to the NAME variables in the $MESH namelists in the standard input file.

All of the user inputs to PEGASUS are read from the standard input. All inputs are in a form similar to FORTRAN NAMELISTS. The following is a list of all of the NAMELISTS defined in PEGASUS . Not all of these NAMELISTS have to be included in the input, and the order in which the NAMELISTS appear in the input does not matter. Most problems will only require input to be specified in the first three of these NAMELISTS:


Note that all user input record names are capitalized and all alpha-numeric names (i.e., NAME, ISPARTOF) are case sensitive. Examples of some these inputs is given in Appendix B. Obsolete user inputs (those used in version 4.x but not in version 5.1) are listed in Appendix C.

In the namelists which require grid indices, negative numbers can be used to specify indices relative to the last index. For example, an index of j=-1 is equivalent to j=jmax, j=-2 is equivalent to j=jmax-1, etc.

$GLOBAL

This input sets global values for all meshes. Each record can be overridden for any individual mesh by using the $MESH input. However, the mesh override is limited to that individual mesh. For subsequent meshes, the global values are used unless specifically overridden.
 

Variable Description Default
ANGLE Maximum angle, in degrees, between the surface normal of the projected point and the reference surface of projection. If greater than this angle, the projection is not allowed. 30.0
CARTX
CARTY
CARTZ
Each of these inputs is a pair of numbers to set the min and max boundaries in the x, y, or z directions of the Cartesian boxes used in the automatic hole cutting. If they are left at their default values, the hole-cutting cartesian boundaries are set to extend just beyond the surfaces making up the hole cutter.

This input can be used to limit the extent of the of the volume in which holes can be blanked out by the hole-cutters, and in some instances, can be used to help close off leaks in a hole-cutting surface.
-1.e30, 1.e30
CENTER Set equal to .TRUE. to create output for a cell-centered grid system. This causes the code to generate interpolation stencils for target coordinates at the cell centers using donor coordinates from the cell centers. The iblank array values will be cell-center based. If this option is selected, the user should also change the type of output file the OUTTYPE input variable. .FALSE.
CNX, CNY, CNZ Integer dimensions of Cartesian grids (hole maps) used for hole cutting. 512
DISTANCE A positive integer value that controls the maximum distance that a surface point can be projected. The input DISTANCE is the number of grid cells in the solid-wall normal direction used to compute the actual distance limit. 20
EPS Tolerance of interpolation coefficient. Value of interpolation coefficients less than 0 and greater than 1.0 that is allowed for a converged stencil. Should be larger than machine epsilon. 0.001
EXCLBC Set equal to .TRUE. if the points specified as boundary conditions are to be excluded as interpolated boundary points. (deferred implementation) .TRUE.
FIXXSYM If true, the code will attempt to force all of the stencils to be symmetric about the X=0 plane for all meshes which are detected to have bilaterally symmetric about the X=0 plane. .FALSE.
FIXYSYM If true, the code will attempt to force all of the stencils to be symmetric about the Y=0 plane for all meshes which are detected to be bilaterally symmetric about the Y=0 plane. .FALSE.
FIXZSYM If true, the code will attempt to force all of the stencils to be symmetric about the Z=0 plane for all meshes which are detected to have bilaterally symmetric about the Z=0 plane. .FALSE.
FRINGE Set equal to 1 for single fringe, 2 for double fringe, and 3 for triple fringe. 1
HBFRNG Hole boundary fringe. Set equal to 1 for single fringe, 2 for double fringe, or 3 for triple fringe. Value of FRINGE
HOLE1ST If set equal to .TRUE., hole cutting, both manual and automatic, are performed prior to interpolation. .FALSE.
HCUT Set equal to .TRUE. if automatic hole cutting is to be performed. .TRUE.
INCORE Specifies if main data (e.g., meshes, interpolation values, etc.) are kept incore (=.TRUE.) or written and read from file (=.FALSE.) .FALSE.
LEVEL2 Set equal to .TRUE. if "level 2" interpolation is to be performed. .TRUE.
OBFRNG Outer boundary fringe. Set equal to 1 for single fringe, 2 for double fringe, or 3 for triple fringe. If this value is not specified it takes on the value of FRINGE. Value of FRINGE
OFFSET Set to a positive integer value, zero or greater. This value specifies the increase of the minimum hole that was created by an automatic hole cutter. For example, if OFFSET=2, all field points within 2 indices of the hole are changed to hole points. 0
ORPHFIX Set equal to .TRUE., second fringe orphan points will be fixed, i.e., returned to field values. Certain flow solvers (e.g., OVERFLOW and INS3D) allow for mixed fringed conditions (single and double) and can use this option. .TRUE.
OUTER Set equal to .TRUE. if automatic outer boundary specifications are to be performed. .TRUE.
OUTTYPE This selects which type of interpolation-data output file will be written.

1=XINTOUT format, filename = XINTOUT

2=DCI format, two-dimensional, filename = pegasus5.dci

3=DCI format, three-dimneional, filename = pegasus5.dci

If CENTER is true, then OUTTYPE must be set to 2 or 3.

If CENTER is false, then OUTTYPE must be set to 1.

1

START

THRU

The value of THRU can be changed to stop the execution before all processing is complete. Set THRU to the name of a process to have the program perform processing up to and including that process.

The value of START can be changed to force the program to start the execution beginning with a specific process. In this case the output files from a previous run from the processes preceeding START must exist in the WORK directory, or an error will occur. Normally this will not be necessary as the program will only run the processes when their output files are out of date with respect to their input. However, on certain very slow file systems, checking each of the existing output files can be very slow and START can speed up restart executions.

The following are the possible process names to be used for setting START and THRU, in the order that they are executed:

projection - project meshes with solid boundary conditions

cellcenter - compute cell-center coordinates for each mesh

adt - creates alternating digital tree for each mesh

interpolate - interpolates each mesh-to-mesh combination

auto_hbound - creats automatic Cartesian hole cutters

man_hbound - creates surface cutter based on user inputs

auto_cut - cuts holes using automatic Cartesian hole cutter

man_cut - cuts holes using manual hole cutting

comp_hole - assembles composite holes

spec_int1 - specify points for "level 1" interpolation

spec_level1 - pick "best" points for "level 1" interpolation

level1fix - final processing of the level 1 interpolation

spec_int2 - specifies points for "level 2" interpolation

spec_level2 - pick "best" points for "level 2" interpolation

xintout - produces the XINTOUT output file

START='projection'

THRU='xintout'

PROJECT Set equal to .TRUE. if projection of solid wall boundary surfaces is to be preformed. .TRUE.
SHIFT This input is the same as the shift parameter in PROGRD and is used only if PROJECT=.TRUE., If equal to 1, move all points in J/K/L direction by same increment as surface point. If equal to 2, move nearest half of point in J/K/L direction by same increment as surface point. If equal to 3, hold opposite boundary fixed in J/K/L direction and redistribute interior points proportional to arclength distance from wall. 3
QCUTOFF The level of quality that is accepted for a mesh. Interpolated boundary points with a value of quality below this level will be considered an "orphan" point and no interpolation information will be supplied. 0.1
QTOL Tolerance band for quality. This value is used when selecting the "best" interpolated boundary point cell-interpolation stencil pair (see Section 2.3 and Figure 7). 0.01
XINCLUDE,
YINCLUDE,
ZINCLUDE
Range of X, Y, and Z values, respectively, to be included as boundary points. Composed of two values (a minimum and a maximum value) in each of the X, Y, and Z directions, respectively. none
$MESH
Variable Description Default
QTOL Tolerance band for quality for a. This value is used when selecting the "best" interpolated boundary point cell-interpolation stencil pair (see Section 2.3 and Figure 7). 0.01 or QTOL specified in $GLOBAL
QCUTOFF The level of quality that is accepted for a. Interpolated boundary points with a value of quality below this level will be considered an "orphan" point and no interpolation information will be supplied. The value of QCUTOFF in $GLOBAL
HBFRNG Hole boundary fringe. Set equal to 1 for single fringe, 2 for double fringe, or 3 for triple fringe. The value of the next fringe value specified in the ascending order: FRINGE for this mesh, HBFRNG for $GLOBAL, FRINGE for $GLOBAL
OBFRNG Outer boundary fringe. Set equal to 1 for single fringe, 2 for double fringe, or 3 for triple fringe. The value of the next fringe value specified in the ascending order: FRINGE for this mesh, OBFRNG for $GLOBAL, FRINGE for $GLOBAL
ORPHFIX Set equal to .TRUE., second fringe orphan points will be fixed, i.e., returned to field values. Certain flow solvers (e.g., OVERFLOW and INS3D) that allow for mixed fringed conditions (single and double) can use this option. .FALSE.
PHANTOM Setting PHANTOM=.TRUE. denotes this mesh is a "phantom" mesh, to be used only for hole cutting, and is not part of the final grid system. .FALSE.
ALPHA, BETA, GAMMA Euler angles (degrees) determining rotation of input meshes. ALPHA, BETA, and GAMMA are rotations about the Z, Y, and X coordinates, respectively. The coordinates of a mesh are transformed in the following sequence of operations: (1) scaling, (2) translation, and (3) rotation. 0.0
EPS Tolerance of interpolation coefficient. Value of interpolation coefficients less than 0 and greater than 1.0 that is allowed for a converged stencil. Should be larger than machine epsilon. Value of EPS in $GLOBAL
FRINGE Set equal to 1 for single fringe or equal to 2 for double fringe. Value of FRINGE in $GLOBAL
JINCLUDE, KINCLUDE, LINCLUDE Range of J, K, and L indices, respectively, to be included for boundary points. Composed of two values (a starting and an ending value) in each of the J, K, and L directions, respectively. none
NAME Name of mesh to which NAMELIST record refers (must be any alpha-numeric characters with no special symbols). A NAME is a string not exceeding ICHAR characters. none
SCALE Mesh scaling factor. The original mesh coordinates are multiplied by the scaling factor. The coordinates of a mesh are transformed in the following sequence of operations: (1) scaling, (2) translation, and (3) rotation. 1.0
XINCLUDE, YINCLUDE, ZINCLUDE Range of X, Y, and Z values, respectively, to be included for boundary points. Composed of two values (a minimum and a maximum value) in each of the X, Y, and Z directions, respectively. none
XR,YR,ZR Point (in translated and scaled coordinates) about which input mesh is to be rotated. The coordinates of a mesh are transformed in the following sequence of operations: (1) scaling, (2) translation, and (3) rotation. 0.0
X0,Y0,Z0 Mesh translation factors. These factors are added to the original mesh coordinates. The coordinates of a mesh are transformed in the following sequence of operations: (1) scaling, (2) translation, and (3) rotation. 0.0
OFFSET Set to a positive integer value, zero or greater. This value specifies the increase of the minimum hole that was created by an automatic hole cutter. For example, if OFFSET=2, all field points within 2 indices of the hole are changed to hole points. 0
PROJECT Logical variable which controls whether or not solid-wall points in this mesh will actively project themselves onto other solid-wall surfaces in other meshes. Even it this is set to .FALSE., this meshes solid walls may be used as a reference surfaces for other meshes to project onto, unless this mesh is listed in the PEXCLUDE list for all other meshes. Value of $GLOBAL PROJECT.
SHIFT This input is the same as the shift parameter in PROGRD and is used only if PROJECT=.TRUE., If equal to 1, move all points in J/K/L direction by same increment as surface point. If equal to 2, move nearest half of point in J/K/L direction by same increment as surface point. If equal to 3, hold opposite boundary fixed in J/K/L direction and redistribute interior points proportional to arclength distance from wall. 3
ANGLE Maximum angle between the surface normal of the projected point and the reference surface of projection. If greater than this angle, the projection is not allowed. 30.0
DISTANCE A positive integer value that controls the maximum distance that a surface point can be projected. The input DISTANCE is the number of grid cells in the solid-wall normal direction used to compute the actual distance limit. 20
PINCLUDE Names of meshes that are to be included for projection with this mesh. All meshes.
PEXCLUDE Names of meshes that are to be excluded from projection with this mesh. No meshes.
$BCINP

This input is like the BCINP namelist in the OVERFLOW flow solver. This namelist specifies all of the boundary conditions for each mesh. PEGASUS uses this information to automatically cut holes (based on the specification of the solid walls), and to automatically determine the outer boundary points which will require interpolation. It also uses these boundary conditions to determine certain mesh topologies, such as o-grid periodic meshes, 2D meshes, and symmetry planes.

Variable Description Default
ISPARTOF Name of MESH for which these boundary conditions apply. None
IBTYP List of boundary condition types
-1 = dummy solid wall: used as a solid wall for hole-cutting, but these points will still be added to the list of outer-boundary interpolation points
1 - 8 = Solid wall
10 = O-grid periodicity (apply to first or last plane)
11 = Symmetry in X
12 = Symmetry in Y
13 = Symmetry in Z
14 = Axis (J around)
15 = Axis (K around)
16 = Axis (L around)
17 = Symmetry with no reflection plane
20 = Point-wise matched block boundary
21 = 2-D condition in Y (apply to one face)
(3 planes supplied at Y=-1,0,1)
22 = Axisymmetric in Y, (apply to one face)
(3 planes supplied, +/- 1 deg rotation about X)
30 = Outflow (extrapolation)
31 = Characteristic condition
32 = Supersonic/subsonic inflow/outflow
33 = Specified pressure outflow
35 = Outflow (1st-order extrapolation)
40 = Impose freestream
41 = Nozzle inflow
42 = Prescribed Q
43 = Prescribed Q with slow start
44 = actuator disk
45-46 = prescribed Q/inflow-outflow condition
47 = Freestream/characteristic condition
49 = Default (no change)
51 = C-grid flow-through (specify one side)
(J is C-direction)
52 = C-grid flow-through (specify one side)
(K is C-direction)
53 = C-grid flow-through (specify one side)
(L is C-direction)
54 = Fold-over cut flow-through (fold-over in J)
55 = Fold-over cut flow-through (fold-over in K)
56 = Fold-over cut flow-through (fold-over in L)
57 = C-grid at a wall (apply wall first)
(J is C-direction)
58 = C-grid at a wall (apply wall first)
(K is C-direction)
59 = C-grid at a wall (apply wall first)
(L is C-direction)
61 = Blank out region (set IBLANK=0)
70 = Copy to
71 = Copy from
81 = Slotted wind-tunnel wall
82 = Slotted wind-tunnel wall
86 = Wind tunnel exit
None
IBDIR List of index directions:
1 = positive J direction
-1 = negative J direction
2 = positive K direction
-2 = negative K direction
3 = positive L direction
-3 = negative L direction
None
JBCB list of beginning j-indices None
JBCE list of ending j-indices None
KBCB list of beginning k-indices None
KBCE list of ending k-indices None
LBCB list of beginning l-indices None
LBCE list of ending l-indices None
XSYM symmetry at X=0.0 1 if ibtyp=11
0 otherwise
YSYM symmetry at Y=0.0 1 if ibtyp=12
0 otherwise
ZSYM symmetry at Z=0.0 1 if ibtyp=13
0 otherwise
X2D 2-dimensional in X
supply 3 planes in X=-1,0,1
0
Y2D 2-dimensional in Y
supply 3 planes in Y=-1,0,1
1 if ibtyp=21
0 otherwise
Z2D 2-dimensional in Z
supply 3 planes in Z=-1,0,1
0
$HCUT

This input specifies a group of meshes that be used to create a hole cutting boundary, as well as which meshes will be cut by this hole cutting boundary. Entries in the $BCINP namelist must be present for this method to work. Both solid boundary and symmetry plane information must be present in the $BCINP namelist for the meshes that are used for the hole cutting boundary. If no $HCUT namelist groups are specified and HCUT is equal to .TRUE. (in namelist group $GLOBAL), a hole cutting boundary will be created from all solid boundaries in all of the $BCINP namelists, and this hole cutting boundary will cut a hole in all meshes. There can be zero to many $HCUT namelist groups specified in the user inputs.

Variable Description Default
NAME Name of hole cutting group (must be any alphanumeric characters with no special symbols). none
MEMBER List of meshes that make up a group. This group of meshes must define a completely enclosed volume. all meshes
INCLUDE List of meshes that will have minimum holes cut by this group of meshes. all meshes
EXCLUDE List of meshes that will not have minimum holes cut by this group of meshes. This input is only used when INCLUDE is not specified, i.e., when all meshes have been specified. none
CNX,CNY,CNZ Integer dimensions of Cartesian grids (hole maps) used for hole cutting. Global values of CNX, CNY, CNZ
CARTX
CARTY
CARTZ
Each of these inputs is a pair of numbers to set the min and max boundaries in the x, y, or z directions of the Cartesian boxes used in the automatic hole cutting. If they are left at their default values, the hole-cutting cartesian boundaries are set to extend just beyond the surfaces making up the hole cutter.

This input can be used to limit the extent of the of the volume in which holes can be blanked out by the hole-cutters, and in some instances, can be used to help close off leaks in a hole-cutting surface.
Global values of CARTX, CARTY, CARTZ
INTERNAL Logical variable which controls whether the hole cutter assumes an internal or an external flow orientation. Set this to .true. for fully-enclosed internal-flow type geometries, ie - flow through an duct. Set to .false. for external-flow geometries, ie - flow around an airplane. .false.
$OUTER

If this input is not specified and OUTER is equal to .TRUE. (in namelist group $GLOBAL) outer boundaries for all meshes will be specified automatically. This means that meshes which do not have boundary condition data given in the $BCINP namelist will have outer boundary points specified on all mesh faces. The $OUTER namelist group should be used only if a specific group of meshes needs to be included or excluded from automatic outer boundary specification. Only one $OUTER namelist group can be specified.

Variable Description Default
INCLUDE List of meshes that will have outer boundaries determined from input boundary conditions. all meshes
EXCLUDE List of meshes that will not have the outer boundaries determined from input boundary conditions. This input is only used when INCLUDE is not specified, i.e., when all meshes have been specified. none
$BOUNDARY

There are two types of BOUNDARY entities: a hole BOUNDARY and an outer BOUNDARY. To create a hole BOUNDARY, include the MHOLEIN variable in the namelist input and set it to a list of mesh names. Otherwise, if MHOLEIN is not included in the namelist, it will be an outer BOUNDARY. Any number of $BOUNDARY namelists may be included in the input.

A hole BOUNDARY has an associated set of one or more $SURFACE namelists, or a set of $BOX namelists. The $SURFACE namelist(s) define the surfaces that will bound the manual hole. The $BOX namelist(s) define a range of X, Y, and Z coordinates: any target grid points inside that range of coordinates will be turned into hole points.

A surface BOUNDARY has an associated set of one or more $SURFACE namelists, whose range of J, K, and L indices define an outer-boundary surface whose points require interpolation. In general, all outer-boundaries of meshes are determined automatically, and this is only used in special circumstances.

Variable Description Default
CLOSED When CLOSED=.TRUE., the BOUNDARY/SURFACE manual hole cut will be limited to cutting points inside the minmax box of the sum of the SURFACES. When CLOSED=.FALSE., the manual hole cut will be allowed to cut all points in the meshes in the MHOLEIN list. .TRUE.
FAST If .TRUE. then any BOUNDARY/SURFACE manual-hole cuts for this BOUNDARY will use a more efficient approximate-search algorithm. Manual hole cuts can be expensive when the SURFACES have many points cutting holes in very large meshes. Setting FAST=.TRUE. can reduce CPU time by a factor of 10. The FAST algorithm will not always produce the same holes as the original algorithm, particularly when the SURFACES are not smooth, have slope discontinuities, contain only fewer than six sides, or for CLOSED=.FALSE. boundaries. .FALSE.
ISPARTOF Mesh which contains boundary (must be any alpha-numeric characters with no special symbols). ISPARTOF is a string not exceeding ICHAR characters. none
MHOLEIN Meshes in which the named boundary causes holes. MHOLEIN's are specified as follows: MHOLEIN = 'mesh name 1', 'mesh name 2', etc. Each mesh name in MHOLEIN is a string not exceeding ICHAR characters. none
NAME Name of boundary (must be any alpha-numeric characters with no special symbols). A boundary name is a string not exceeding ICHAR characters. none
$SURFACE

A SURFACE namelist must be associated with a BOUNDARY using the ISPARTOF variable.

Variable Description Default
ISPARTOF Boundary to which surface belongs (must be any alpha-numeric characters with no special symbols). ISPARTOF is a string not exceeding ICHAR characters. none
JRANGE, KRANGE, LRANGE Ranges of indices that define surface. Composed of two values (a starting and an ending value) in each of the J, K, and L directions, respectively. Maximum allowable ranges are:
JRANGE: 1,JMAX
KRANGE: 1,KMAX
LRANGE: 1,LMAX
Default: none
MESHNAME Name of mesh that contains the surface (ISPARTOF) (must be any alpha-numeric characters with no special symbols). NAME is used only for hole creation boundaries. Name is a string not exceeding ICHAR characters. mesh name given in ISPARTOF for $BOUNDARY.
NVOUT Direction of normal outward from hole. NVOUT is required only for hole creation boundaries. Allowable values are "+J", "-J","+K", "-K", "+L", and "-L". none
$BOX

A BOX namelist must be associated with a BOUNDARY using the ISPARTOF variable.

Variable Description Default
ISPARTOF Boundary to which box belongs (must be any alpha-numeric characters with no special symbols). ISPARTOF is a string not exceeding ICHAR characters. none
XRANGE,
YRANGE,
ZRANGE
Ranges of X, Y, and Z coordinates that define box. Composed of two values (a minimum and a maximum value) in each of the X, Y, and Z directions, respectively. none
$REGION
Variable Description Default
ISPARTOF Mesh which contains region (must be any alpha-numeric characters with no special symbols). ISPARTOF is a string not exceeding ICHAR characters. none
NAME Name of region (must be any alpha-numeric characters with no special symbols). A region name is a string not exceeding ICHAR characters. none
TYPE Defines type of region being specified.

TYPE='HOLE': hole with a fringe is created; all points in the ranges specifed in the $VOLUME(s) for this REGION are blanked out.

If TYPE='UNBL': specified points will not be hole points: all points in the ranges specifed in the $VOLUME(s) for this REGION are unblanked.

TYPE='INTR': an interior region will be blanked out, but no fringe points will be created; blanks out only the points interior to the ranges specified in the $VOLUME(s) for this REGION. The VOLUME ranges for this TYPE are allowed to range from 0 to the meshes max dimension plus one. For example, a VOLUME range that is part of a REGION of this type can have JRANGE=0,0, which will be interpreted as JRANGE=0,jmax+1. This will blank out the points for j=1,jmax.

HOLE
$VOLUME
Variable Description Default
ISPARTOF Region to which volume belongs (must be any alpha-numeric characters with no special symbols). ISPARTOF is a string not exceeding ICHAR characters. none
JRANGE,
KRANGE,
LRANGE
Ranges of indices that define volume. Composed of two values (a starting and an ending value) in each of the J, K, and L directions, respectively. Maximum allowable ranges are:
JRANGE: 1,JMAX
KRANGE: 1,KMAX
LRANGE: 1,LMAX
unless the VOLUME is part of a REGION of TYPE = 'INTR', in which case the maximum allowable ranges are:
JRANGE: 0,JMAX+1
KRANGE: 0,KMAX+1
LRANGE: 0,LMAX+1
Note that JRANGE=0,0 is interpreted as JRANGE=0,JMAX+1
none
$LEVEL2

If this input is not specified and LEVEL2 is equal to .TRUE. (in namelist group $GLOBAL) "level 2" interpolation for all meshes will be specified automatically. The $LEVEL2 namelist group should be used only if a specific group of meshes needs to be included or excluded from "level 2" interpolation. Only one $LEVEL2 namelist group (INCLUDE or EXCLUDE) can be specified.

Variable Description Default
INCLUDE List of meshes that will have "level 2 interpolation" performed on them. all meshes
EXCLUDE List of meshes that will not have "level 2 interpolation" performed on them. This input is only used when INCLUDE is not specified, i.e., when all meshes have been specified. none

3.3 Utility Codes
 

Several utility codes are supplied with PEGASUS in the /tools directory:
 

peg_setup - This is a menu-driven script which gives the user options to initialize a PEGASUS problem, remove a PEGASUS problem, prepare to restart a PEGASUS run from the beginning, or redo the hole-cutting from the beginning. The first option requires that the user supply a multi-zone PLOT3D grid file containing all of the volume grids to be used. Also, you can supply an OVERFLOW input file to provide the boundary conditions. It executes mesh_lister, peg_in, make_WORK, p3d2peg, and peg_hole_surf. This option will split up the user-supplied multi-zone grid into individual meshes and place them in the X_DIR directory, ready for PEGASUS5. It creates a standard input file called peg.in.raw to help get you started. If an OVERFLOW input file is supplied, it will add the boundary condition data to the input file, and will also create a PLOT3D file of the solid surfaces of the configuration, called hcutter.g. This file makes it easy to plot and check that the solid-wall boundaries form a closed surface, which is necessary for the automatic hole cutting to work. See Section 4.2 for more information on the use of peg_setup.
 

The following six utility codes can be executed by running peg_setup, but can also be executed as stand-alone codes:

peg_in [-no_add_te] - Creates a minimal PEGASUS5 input file. It is written to a file called peg.in.raw with the intention that it be reviewed and edited if necessary before use. It requires the mesh_list file, which can be generated with the mesh_lister program. peg_in will also read the boundary condition data from an OVERFLOW input file and add this information into peg.in.raw The mesh names must be present in the OVERFLOW input file, otherwise the boundary condition information can not be used by PEGASUS.

The -no_add_te flag will cause it to not add an extra solid surface (ibtyp=-1) at the trailing edge of a component where a flow-through boundary starts.
 

peg_hole_surf [-sp] - creates one unformatted, multi-zone PLOT3D grid file for each HCUT namelist in the pegasus input file (or just one grid file if there is no HCUT namelist). The grid file will contain all of the no-slip and slip-wall surfaces from the meshes which are members of the HCUT hole cutter. This is very useful for verifying that the HCUT hole-cutter surfaces comprise an airtight surface.

This program requires the pegasus input file, and it reads the grid coordinates from the mesh files in the X_DIR directory. If the code was compiled using double-precision, one can produce a single-precision grid file by adding the command-line argument -sp.

p3d2peg - breaks up the user-supplied PLOT3D file into single grid files which are placed in the /X_DIR directory.
 
 

make_WORK. -creates the WORK directory and its sub-directories which are needed within the project directory. If these are not created before-hand, PEGASUS5 will create them when it is executed.
 

mesh_lister - generates a list of mesh names for use by the other utility codes. The names will be generated from an OVERFLOW input file, if it exists; otherwise, the user will be prompted to either enter mesh names or assign default names to each grid in the user-supplied PLOT3D grid file.
 

clean_holes - removes the contents of /WORK sub-directories which are relevant to hole generation. Use this script if it is desired to re-run only the hole-generation processes again. If one one wants to re-run the entire PEGASUS process from the beginning, simply remove or rename the WORK directory.
 
 

The following utility codes are supplied for diagnostic purposes:
 

peg_plot [-sp] [-noorphfix] - produces an unformatted, multiple grid PLOT3D file (with IBLANKs) of the grid system. It reads the iblank and stencil data from the XINTOUT file, and so can only be used after PEGASUS5 has been run to completion (THRU = 'xintout'). Use peg_hole to plot the holes if you have only run with THRU = 'comp_hole'. The program prompts for the name of the output file, and for the level of fringes to plot, where the fringe level can be:

1 = single fringe: blank out level-2 and higher fringe points
2 = double fringe: blank out level-3 and higher fringe points
3 = all: only the minimum holes are blanked out

If the code was compiled using double-precision, one can produce a single-precision grid file by adding the command-line argument -sp.

It assigns an iblank value of 101 to first level ORPHAN points so they can be plotted; for example, use function 3 in PLOT3D. The code will automatically assign second-level ORPHAN points an iblank value of 1 (a valid interior point) unless used with the -noorphfix argument, in which case the iblank will be assigned a value of 101.

peg_plot_center [-sp] [-noorphfix] - produces an unformatted, multiple grid PLOT3D file (with IBLANKs) of the grid system for cell-centered grids. The cell-center coordinates are written to the grid file. It reads the iblank and stencil data from the pegasus5.dci file. The program prompts for the name of the output file, and for the level of fringes to plot, where the fringe level can be:

1 = single fringe: blank out level-2 and higher fringe points
2 = double fringe: blank out level-3 and higher fringe points
3 = all: only the minimum holes are blanked out

If the code was compiled using double-precision, one can produce a single-precision grid file by adding the command-line argument -sp.

It assigns an iblank value of 101 to first level ORPHAN points so they can be plotted; for example, use function 3 in PLOT3D. The code will automatically assign second-level ORPHAN points an iblank value of 1 (a valid interior point) unless used with the -noorphfix argument, in which case the iblank will be assigned a value of 101.

peg_diag [-sp] - produces a diagnostic file for plotting. It can be produced after PEGASUS execution has been completed. The file that is created allows the user to visualize quality and cell difference parameter with PLOT3D or FAST (as well as any visualization software that reads PLOT3D grid and solution files). This file can be used with the grid file produced with peg_plot. There are no PHANTOM meshes included in this file. The values in this file are as follows:

Variable Value or parameter Grid point type
Q(1) Quality Parameter
1.0
Legal Interpolated Boundary Point
Field Point
Q(2) Cell Difference Parameter
0.0
Legal Interpolated Boundary Point
Field Point
Q(3) Connecting Mesh Number
Current Mesh Number
0.0
Legal Interpolated Boundary Point
Field Point
Orphan Point
Q(4) 1.0
0.0
-1.0
Field Point
Legal Interpolated Boundary Point
Orphan Point
Q(5) Connecting Mesh Number
0.0
-1.0
Legal Interpolated Boundary Point
Field Point
Orphan Point
If the code was compiled using double-precision, one can produce a single-precision grid file by adding the command-line argument -sp.

peg_hole [-sp] - creates a grid file with IBLANK for the hole system that has been created. PEGASUS must be executed through (at least) the "comp_hole" process in order to use this utility. An unformatted, multiple grid, with IBLANK, PLOT3D file is produced. This code must be executed in the project directory.

If the code was compiled using double-precision, one can produce a single-precision grid file by adding the command-line argument -sp.

peg_proj [-sp] - creates diagnostic multi-zone PLOT3D grid and solution files, named peg_proj.g and peg_proj.q, which contain a zone for each solid-wall boundary surface. The grid file contains the grid-cooridnates at the surface points, and the q file contains fields 1, dx, dy, dz, and 1. The dx, dy, and dz data are the components of the projection vector at each surface point for the projection of that point with the greatest magnitude. This data is best used by plotting velocity vectors at all the points, and coloring the vectors by velocity magnitude. Typically, it is best to scale the velocity vectors by a factor in the range 10 - 100. peg_proj creates a PLOT3D command file named peg_proj.com, which can be used to create this type of plot using PLOT3D. peg_proj also reports the maximum distance moved for each mesh, and onto which mesh that maximum projection occured.

If the code was compiled using double-precision, one can produce a single-precision grid file by adding the command-line argument -sp.

peg_orph [-noorphfix] - Lists the orphan points for all of the meshes or for a specified mesh. The output can be sent to a file or to the screen. If the -noorphfix command-line argument is given, it will not fix the 2nd-fringe orphans, and they will be included in the list.
 

peg_mem - estimates memory requirements for a given PEGASUS problem. Requires the pegasus5 input file, and the grid files in the X_DIR directory.
 

peg_sym - checks for bilinear symmetry. This utility program should be run from the pegasus5 run directory. It reads the grid coordinates and determines which zones have bi-lateral symmetry. It then reads the XINTOUT file and determines if the iblank array and the interpolation stencils are also symmetric.
 

XINtegrity - checks the XINTOUT file produced by PEGASUS for internal consistency. This utility checks the accuracy of interpolations and determines whether interpolated boundary points are receiving information from the correct mesh elements.
 

dcintegrity - checks the pegasus5.dci file produced by PEGASUS for internal consistency for cell-centered grids. This utility checks the accuracy of interpolations and determines whether interpolated boundary points are receiving information from the correct mesh elements.
 

XIN2sp - converts a double precision XINTOUT file to single precision. This utility is used if it is desired to run the flow solver in single precision, but PEGASUS was run in double precision.
 

cmpxint - compares two XINTOUT files. If they have the same grid dimensions and number if stencils, it reports the maximum difference in the stencils weights and number of differences in the iblank arrays.
 

It is recommended that all of the utility codes be executed from the project directory, as most of them require information from the /WORK and /X_DIR directories.
 

Figure 9. Data Flow Between Utility Codes and PEGASUS

 



3.4 Output File Formats

Standard Output

Only error messages are written to stdout.

Log File

PEGASUS5 writes all of its output to a log file with the name of log.dddd.tttt, where dddd is the current date and tttt is the current time. The log file contains the following:


 

XINTOUT

The XINTOUT file contains all of the interpolation stencils for the fringe points and outer-boundary points, as well as an iblank array defining the hole-cuts. The file is unformatted, and contains the following four records for each mesh M.
 

Record Number Variable Name
1 IBPNTS(M),IIPNTS(M),IIEPTR(M),IISPTR(M),
MJMAX(M),MKMAX(M), MLMAX(M)
2 (JI(I),I=1,IINPTS(M)),
(KI(I), I=1,IINPTS(M)),
(LI(I), I=1,IINPTS(M)),
(DXINT(I), I=1,IINPTS(M)),
(DYINT(I), I=1,IINPTS(M)),
(DZINT(I),I=1,IIPNTS(M))
3
(JB(I), I=1,IBNPTS(M)),
(KB(I), I=1,IBNPTS(M)),
(LB(I), I=1,IBNPTS(M)),
(IBC(I),I=1,IBPNTS(M))
4
(IBLANK(I),I=I1,I2)

where I1 = 1 and I2 = MJMAX(M)*MKMAX(M)*MLMAX(M)

3.5 Directory Structure
 

PEGASUS 5.1 stores its files and information in a specific directory structure which it will create when it is first executed in a particular project directory. These directories can also be created in advance using the make_WORK script, which is also executed by the peg_setup script.

Execution of PEGASUS 5.1 must be performed in the project directory (see Figure 10). The user must supply the standard input file, see Section 3.2 for input descriptions) and the individual volume grids. The individual volume grids are stored in the X_DIR directory as unformatted, single-zone, PLOT3D grid files. These grid files are named "mesh_nameA.x", "mesh_nameB.x", etc, where mesh_nameA, mesh_nameB, ... correspond to the NAME variables in the $MESH namelists.
 

Figure 10. Directory Structure


PEGASUS 5 User's Guide
Previous Section Return to Table of Contents Next Section