PEGASUS 5 Current Status
This web page is meant to be a status page for users of the PEGASUS
code, so that they can be kept apprised of known problems and bugs, new
releases, on-going work, and other operational issues. This is
created in an effort to promote the use of the PEGASUS 5
software and to provide a central location for users to share
their wisdom and experiences. In addition, anyone with the time and
ability to work on further development and/or bug fixes for the
software is encouraged to do so, and to share their results. Thus, a
"To Do" list is included below. Any improvements to the code can be
sent via email to
stuart.e.rogers@nasa.gov
for inclusion into the next release.
Other PEGASUS 5 resources include:
Contents:
News
- Sept 2016: Release of version 5.2b
- July 2015: Release of version 5.2a
- Apr 2014: Release of version 5.2
- May 2010: Released version 5.1l.
- Dec 2004: Fixed an array-bounds bug
- Dec 2004: Fixed bug with VOLUME arrays
- Oct 2003: Released version 5.1k.
- July 2003: MPI Bug limits number of CPUs
- Dec 2002: QCUTOFF should not be 0
- Apr 2002:
AIAA Paper 2002-3186 on PEGASUS5 is available
- Apr 2002: Phantom-mesh bug in auto-hole cutting
- Mar 2002: Released version 5.1j.
- Jan 2002: 2nd-fringe ORPHAN bug in version
5.1i
- Nov 2001: Allocate bug in peg_hole_surf
- Oct 2001: Orphan counting bug in version 5.1i.
- Sept 2001: Benign bug in version 5.1i.
- Sept 2001: Released version 5.1i.
- July 2001: Released version 5.1h.
- June 2001:
PEGASUS 5 Examples On-line
- May 2001: Released version 5.1g.
Current Release : PEGASUS Version 5.2b
Changes made in version 5.2b include additional HCUT inputs and minor bug fixes.
See the 5.2b release notes below for more details.
Changes made in version 5.2a include ???.
See the 5.2a release notes below for more details.
Changes made in version 5.2 include a number enhancements including
support for cell-centered meshes, an option for triple fringes, the
addition of automated domain decomposition into multiple hole cutters,
parallel-performance enhancements,
support for data-surface meshes, the additional of directional offset
inputs, and more enhancements. See the 5.2
release notes below for more details.
Changes made in version 5.1l include a number of bug fixes and minor
enhancements. See the 5.1k release notes
below for more details.
Changes made in version 5.1k include a number of bug fixes and minor
enhancements. See the 5.1k release notes
below for more details.
Changes made in version 5.1j include:
A modified stencil search and several bug fixes. See the 5.1j release notes below for more details.
Changes made in version 5.1i include:
Improvements to the interpolation stencil searches, resulting in fewer
ORPHANS for nearly all cases, and modifications leading to improved
performance for stencil searches; fixed bug for projection which would
cause bad problems for meshes with both viscous and inviscid walls;
fixed bug in namelist input: reading lines greater than 80 characters;
rewrote mesh_lister and peg_orph programs; minor changes and fixes for
Cray and HP. See the 5.1i release notes
below for more details.
Changes made in version 5.1h included:
A fix for the HP compiler and pgif90 compiler problems which resulted
in extremely slow execution (this was present only in 5.1g); fixing of
a number of memory leaks; more graceful abort for fatal errors,
including cleaning up and properly aborting all mpi processes; the
addition of the INTERNAL variable in the $HCUT namelist, which will
enable to perform auto hole cuts for internal flow problems; and new
versions of peg_mem, peg_in, and peg_hole_surf.
See the 5.1h release notes below for more details.
Changes made in the previous 5.1g release included an MPI parallel
option, fixes for several bugs, and implementation of the mesh scaling,
translation, and rotation capability.
See the 5.1g release notes below for more details.
This software package can be requested and used by U.S. citizens and
permanent residents belonging to a U.S. organization.
To obtain the software, you must fill out, sign, and submit a
NASA Non-Disclosure agreement for PEGASUS 5. Start this process at
the
NAS Software Distribution page.
If you have already signed a NASA Non-Disclosure agreement
for PEGASUS 5, send email to Stuart Rogers at
stuart.e.rogers@nasa.gov
to request a copy of the latest version.
Known Problems and Bugs, and Suggested Work Arounds
- Automatic holes cut away overlapping solid-wall surfaces:
This is the worst known problem with the current automatic
hole-cutting algorithm. This situation was improved in version 5.1f;
(see the 5.1f release notes for a
description), but still can be an issue requiring more user input. In
regions right at the wall at the edges of overlapping surfaces, the
automatic hole-cutting operation will sometimes cut very small, thin
holes in the overlapping surface grids, where no holes should be cut
at all. The easiest workaround is to use the EXCLUDE variable in the
$HCUT namelist. To do this, add
the name of the grid(s) which get cut by the the bad hole-cuts to the
EXCLUDE list, and these grids will not get cut by this $HCUT hole
cutter. If your initial input file did not contain any HCUT namelist
(and thus used only the default values for the automatic hole
cutting), you can add input that looks like this:
$HCUT NAME = 'hcutter1',
EXCLUDE = 'grid5', 'grid7',
$END
This work-around is only possible for certain grids, however, as one
often needs to have holes cut from these types of grids, and they
cannot be excluded altogether from the automatic hole-cutting.
Alternatively, one can unblank a subset of points of a particular
grid, this excludes these points from being cut by any of the
hole-cutting operations using. This option uses the REGION and VOLUME
namelists. For example:
$REGION NAME = 'Do_not_cut_these_points'
ISPARTOF = 'grid5',
TYPE = 'UNBL',
$END
$VOLUME ISPARTOF = 'Do_not_cut_these_points'
JRANGE = 1,80,
KRANGE = 1,-1,
LRANGE = 1,10,
$END
- Automatic holes too small near thin bodies:
As described and illustrated in Section 4.4.2
of the PEGASUS Users Guide, this problem is
characterized by ORPHAN points left inside a thin body, such as a thin
trailing edge of a wing or nacelle. The issue is that the cell size
of the Cartesian hole map can be larger than the thickness of the
body. This situation was greatly improved in version 5.1f;
see the 5.1f release notes for a description.
The easiest work-around is to increase the OFFSET input
variable for the grid which contains the ORPHANS points. If this does
not work, one can also try increasing the resolution of the Cartesian
hole map by increasing the values of CNX, CNY, CNZ. This approach
can result in a significant increase in CPU time and memory.
- Automatic holes leave points inside collar grids
This is a bug/feature of the automatic hole cutting involving the
intersection of two bodies or components which uses a collar grid.
It is typical to see one or two layers of ORPHANed grid points which
lie inside one of the intersecting bodies (like a wing) and which lie
on or just above the surface of the other intersecting body (like a
fuselage). The situation was greatly improved in version 5.1f;
see the 5.1f release notes for a description.
The suggested work-around is to increase the OFFSET input
variable for the grid which contains the ORPHAN points; this will
make the automatic hole larger, and usually removes the ORPHANS.
- Automatic holes in box grids too close to solid surfaces:
This is not a bug, but can be a problem if a surrounding Cartesian box
grid is as fine or finer than the outer region of a body-fitted grid
which is embedded inside the Cartesian box grid.
The additional automatic hole-cutting of box grids added in
version 5.1e improves some of these cases.
Additional improvements in these holes can be made by: increasing the
OFFSET input variable for the box grid; increasing the resolution of
the body-fitted grid; and/or increasing the outer-boundary distance of the
body-fitted grid.
Release Notes
Version 5.2b Modifications
Version 5.2b is a minor update with the following changes:
- Added new inputs to HCUT namelist to provide additional control:
CORNERO, HOFFSET, HOFFSTJ, HOFFSTK, and HOFFSTL.
- Bug fix to level 2 namelist processing: typo caused code
to ignore all LEVEL2 namelist inputs.
- Bug fix to the peg_in program from Pieter Buning.
- Performance improvements to the peg5_plotcpu.pl script: runs much faster
for very large log files, and now works correctly if the Pegasus5 run extends
across midnight.
- Update to the summary output at the end of the log file.
Version 5.2a Modifications
Version 5.2a is a minor update with the following changes:
- Complete re-write of the entire projection process. Replaced the
progrd based projection with a much more efficient search and project
approach. Check minmax boxes of donor and recipient surfaces; find
projected point as the intersection of the bilinear surface of the
reference face with a ray through the projected point which is parallel
to the reference-face normal. NOTE: kept all old progrd subroutines
for the cell-center version of projection, and defered modification of
the cell-center projection until later.
- Fixed bug in configure script: --with-bytwswapio option was processed
before --with-pgi, losing the addition to F90FLAGS.
- Fixed typo in the documentation for namelist BCINP: changed JBCB,KBCB,LBCB
to JBCS,KBCS,LBCS
- Improved layout of peg5_plotcpu, letting legend overlap with the
time-bar for xintout.
- Added command-line argument "-skip_startup" to peg5_plotcpu.pl.
- Modified peg_proj program: now write additional data to the
header records consistent with an Overflow solution file.
Version 5.2 Modifications
Version 5.2 includes many changes to the code. Many of the files in
the WORK directory have changed format and are not compatable with
previous versions of the code. Therefore old versions of the WORK
directory must be removed before running this version of the code.
The 5.2 release of the Pegasus overset-grid processing software
includes a number of significant changes from version 5.1n. Changes
and new features include:
- Added the ability to process cell-centered grids. This feature was
added to support the DPLR flow solver, which uses the DirtLib library
for its overset interface. To support this, the cell-centered option
in Pegasus5 writes the overset interpolation and blanking data to a
formatted .dci file. Added new utility programs peg_plot_center
and dcintegrity. For more details and notes on using the
cell-centered grid option, see the
Users Manual section 4.5
-
Improved parallel performance and load balancing: rewrote the
algorithm for parallel load balancing to use a fine-scale management
of individual processes. Improves parallel scaling to larger numbers
of processors.
-
Added autohcut option: automatically create multiple HCUT hole cutters
through automatic decomposition of the geometry. Additional
user-inputs to control autohct option: Created new namelist
$CUTTER_CONTROL; moved variables HCUT, AUTOHCT, CNX, CNY, CNZ, CARTX,
CARTY, CARTZ from $GLOBAL namelist to $CUTTER_CONTROL namelist.
Created new input variables: EXCLUDE, CUTPLVAL, CUTPLDIR, XCUTS,
YCUTS, ZCUTS. Also fixed bug in paint algorithm and simplified the
coding.
- Changed the computation of first-layer fringe points: include points
which share a face diagonal or volume diagonal with a hole point. This
increases the number of fringe points for most problems compared to results
from Pegasus version 5.1.
- Added the ability to provide three layers of fringes. The input
variables FRINGE, HBFRNG, and OBFRNG in the GLOBAL and MESH namelists
can now be set to values of 1, 2, or 3.
- Added OFFSETJ, OFFSETK, OFFSETL inputs to the MESH namelist, used
to control directional growth of the HCUT holes.
- Added support for "data-surface" zones. Designate a data-surface
zone by setting the input variable DATASURF to .TRUE. in the MESH
namelist. These zones will have holes cut, then all non-hole points
are marked as fringe points. The Overflow code designates any zone
with JMAX, KMAX, and/or LMAX = 1 as a data-surface zone. These are
zones whose points are used exclusively for monitoring the flow
solution. The data at the grid points are updated only via
interpolation, no field equations are solved in data-surface zones.
- Added new perl script peg5_plotcpu.pl. Given the output log file
from a pegasus5mpi run, this scripts creates a graph CPU usage versus
time. It illustrates which process type was run on each individual
CPU during the execution, and can be used to visualize the parallel
efficiency of the execution. This script requires the gnuplot
program. The following two figures are example plots from this script, one
for a run of Pegasus 5.2 run on 24 CPUs, the other run on 48 CPUs.
Example from peg5_plotcpu.pl for Pegasus 5.2 run with 24 CPUs.
Example from peg5_plotcpu.pl for Pegasus 5.2 run with 48 CPUs.
- Added new perl script script peg_man_hole.pl, written by Darby
Vicker, NASA/JSC. This script extracts surfaces for a given manual
hole-cutting BOUNDARY in a pegasus input file, making it easy to plot
and visualize the hole-cutting surfaces. Requires programs from
the Chimera Grid Tools software package.
- Made improvements to the manual hole cut algorithm: replaced the
exhaustive search to find the closest surface point with two new
algorithms. The default new algorithm is an exact binary-tree search
using recursive bounding-boxes. The algorithm and a majority of the
code was taken from over2.2c/walldist, originally authored by Larry
Wigton of Boeing, Dennis Jespersen of NASA/Ames, and others at NASA.
Another option, which is selected with FAST=.true. in the $BOUNDARY
namelist, is based on a simple point-marching approach. The starting
point for the point march uses the closest point from neighboring mesh
points. This fast algorithm is not accurate for cutting boundaries
with surfaces of high curvature, O-grid periodic surfaces, or some
boundaries with fewer than six surfaces. The new default algorithm is
O(10) faster than the original algorithm, and the fast algorithm is
O(100) faster for large meshes and large cutting surfaces.
- Converted all remaining Fortran77 source to Fortran90. Changed
most of the source file to replace the Fortran77 data typing
with the module mod_kind_defs. Added "implicit none" to all subroutines
which did not have this already. Modified the configure script
and Makefiles to no longer use the cpp pre-processor.
Changed operation of "make clean" in the Makefiles to avoid
removal of all source files on case-insensitive systems.
- Added command-line option to specify input file instead of reading
from input from stdin. Some mpi installations will not work with stdin
files greater than 64KB, this provides a work-around.
- Added error checking: report an error and stop if any regular zone
dimension is less than 3.
- Fixed bug in octcut: exit fringe-point loop when query_tree2_nr
returns zero triangles inside the Cartesian element.
- Fixed bug in paint: expansion of array holding seed points: changed
computation of new nsize from 130*nsize/100, to int(1.3*nsize), to avoid
potential integer overflow.
- Fixed bug in mod_comp_hole.F90, subroutine set_hregion_inp:
tmp volume arrays were hardcoded to length of 20, no checking
for too many input volume arrays.
- Additional changes include: improvements to the projection
searching routines; fixing a bug in the projection process in which
some surface points were projected more than once; improvements to the
stencil-searching routines; support for fortran90 type namelists which
begin with "&" and terminate with "/"; fixed bug in the checking of
the SURFACE, BOX, and REGION namelist inputs; fixed multiple bugs in
the projection subroutines; fixed clipping of lines longer than 82
characters in the MPI log files; removed unused namelist input
variables octree_level, octlevel, octlevelgl, and hole1st.
Version 5.1l Modifications
- Fixed a few minor internal bugs. Fixed bug in the allocation of temporary
arrays for the $VOLUME namelist inputs. Fixed bug in peg_in for ibtyp=-1.
Made some changes to be compatable with gfortran.
- Added time stamp output to the log file for the beginning of execution
of each process.
- Added support in the configure script for altix and altix_ice platforms.
- Changed newton-iteration convergence parameter tol_res for
single-precision from 1.e-9 to 1.e-6. Value of tol_res remains
unchanged at 1.e-9 for double-precision.
Version 5.1k Modifications
- Fixed bug: solid walls in phantom meshes were not used in auto hole cutting
surfaces. Any solid wall specified in part of a phantom mesh is now
utilized by the auto-hole cutting.
- Fixed bug in default value of QCUTOFF: increased from 0.0 to
0.1. See detailed discussion on the implications of this in the
section on Known Bugs
- Fixed bug in MPI coding that limited the number of CPUs. The bug
potentially caused problems when pegasus5mpi was used with more then
14 processors, due to an improperly dimensioned array.
- Fixed bug in fixing of 2nd-fringe orphan ponts on periodic
grid planes.
- Made changes to allow REGION/VOLUME of type INTR to blank out a region
extending to the boundary. Added this feature in the documentation for
type INTR. Now it excludes any points in a VOLUME of type INTR from the list
of single and double fringes. Fixed restart dependency: the list
of fringe points was not rebuilt when the interior volume range
input was changed.
- Added --with-byteswapio option to the configure script for
Portland group compilers. Added workaround for Portland compiler
version 5.0-2: internal compiler error when using -fast flag;
changed configure script to use "-fast -Mlre-noassoc" with pgi compilers;
This compiler bug is supposed to be fixed in their next release; this
does not slow the code down.
Version 5.1j Modifications
- Modifications where made to the interpolation stencil searchs
to make them more efficient and more robust for certain cases. This
will cause 5.1j to produce slightly different results than previous
versions. Extensive testing has shown that 5.1j produces the same or
fewer orphan points, and runs in slightly less computing time.
- Fixed several bugs, including: typo in index limit in do loop
when creating the XINTOUT file which would cause wrong count of 1st
or 2nd fringe orphans; fixed some coding errors inside some DEBUG
statements; fixed bug in mod_spec_int2 which could cause the code to
bomb for periodic o-grids in k; fixed memory allocation error in
peg_hole_surf utility which would bomb for multimle hole cutters.
- Modified peg_in for flow-through bc: simplified coding for first
part which adds the ityp=51,52, or 53. Added more checks to detect
a wingcap topology to fix cases where it was incorrectly adding
ityp=-1 surfaces for a wingcap wake.
Version 5.1i Modifications
- Improvements to the interpolation stencil searches, resulting in
fewer ORPHANS for nearly all cases tested. These mostly involved grid
topology checks such that the stencil walk could more readily jump
across O-grid periodic boundaries and C-grid flow-through boundaries.
With the use of rotated bounding boxes for each mesh, was able to
eliminate stencil-walk searches for many points outside of donor
meshes.
- Fixed bug for projection which would cause bad problems for
meshes with both viscous and inviscid walls. The projection
subroutines were still using some data from the auto-hole cutting wall
arrays. Added projection output to the log file indicating the number
of points which were not projected due to ANGLE and DISTANCE restrictions.
- Fixed bug in namelist input which would fail when reading lines
greater than 80 characters. Can now read up to 132 characters on a line.
- Added minor changes and fixes for Cray and HP compilers. This
included the addition of a false Fortran 90 module for mpi, as these
compilers fail on the Fortran 90 statement "use mpi".
- Rewrote the mesh_lister and peg_orph programs: better output,
more error checking.
Version 5.1h Modifications
-
A fix for the HP compiler and pgif90 compiler problems which resulted
in extremely slow execution (this was present only in 5.1g).
-
Fixed a number of memory leaks, resulting in lower memory requirements.
-
Implmented a more graceful abort for fatal errors,
including cleaning up and properly aborting all mpi processes;
-
The addition of the INTERNAL variable in the $HCUT namelist, which will
enable to perform auto hole cuts for internal flow problems
-
Re-wrote peg_mem to give realistic estimates, and to be much
easier to use: it gets its input from peg.in and X_DIR files instead
of prompting the user for information.
-
Re-wrote peg_hole_surf so it gets its input from peg.in and X_DIR.
-
Wrote a new version of the peg_in program which will provide
[jkl]include in the $MESH namelist which will exclude symmetry
planes and solid walls automatically.
- Fixed a bug in the implementation of $REGION TYPE='INTR'. In previous
versions, This type of REGION did not work as documented: the interior
points for these regions never got blanked out.
Version 5.1g Modifications
This release includes an MPI parallel option, fixes several bugs,
a modification to the level-2 fringe algorithm, and
implements the mesh scaling, translation, and rotation capability.
NOTE: one should not attempt to perform a restart execution of
Version 5.1g using a WORK directory from a previous verison.
Because of the bug-fixes to the interpolation stencil search, and
improvements to the level 2 fringe selection (changes 3-5 below),
version 5.1g will produce a slightly different XINTOUT files
than previous versions. Several OVERFLOW runs comparing the grid
systems computed by 5.1f and 5.1g show only a slight changes in the
flow solution. For two different aircraft configurations, changes in
computed lift and drag coefficients were on the order of 0.1%.
NOTE for Portland Group Compiler Users: change in version 5.1g have
created very large performance degradation (factor of 100 slower)
in a test of this version on a Red Hat 6.2 Linux PC.
UPDATE: This has been fixed in the 5.1h release. This was
identified as a compiler bug by the Portland Group support, but a
coding work-around was enables in version 5.1h.
Specific changes in version 5.1g include:
- Added MPI parallelization option. See the User's Guide sections
for details on compiling and
running this option.
- Modified output: all output is written to the log.dddd.tttt file
(where dddd is the date, tttt is the time). Only error messages are
written to stdout.
- Fixed EPS interpolation stencil bug: for cases where a non-default
value of the GLOBAL or
MESH namelist input variable
EPS was specified, some of the interpolation stencils output
in the XINTOUT file would have errors as large as one grid cell. This
could have produced significant errors in the solution.
- Fixed interpolation stencil bug: for certain degenerate grid
cells, such as those around a singular axis, bogus interpolation
stencils were being generated. The code was not performing a check
on the convergence of a newton stencil walk when computing
interpolation weights for level 1 and level 2 interpolation.
Rewrote the interpolation routines, changing from Fortran 77 to
Fortran 90 coding. Replaced two different implmentations
of the newton stencil walk with a single version, which is now
used in several parts of the code.
- Modified the level2 fringe point algorithm.
When computing cell-difference, compute the donor-cell weights, and
then shift the donor j,k,l index so that the donor cell which is being
measured is the one closest to the fringe point under consideration.
This removes a randomness and directional bias in the level 2 fringes for
pointwise matching grids, and fixes a problem which caused the
INS3D
flow solver stability problems.
- Implemented the scaling, translation, and rotation of mesh
coordinates using the
MESH namelist input variables SCALE, X0, Y0, Z0,
XR, YR, ZR, ALPHA, BETA, GAMMA. In previous versions of the
code these values were read in but never used. Changed the input
names from ALFA to ALPHA and GAMA to GAMMA. Implemented mesh
coordinate transformations in the tool programs peg_plot, peg_proj,
peg_hole, and XINtegrity.
- Added projection displacements to coordinates in XINtegrity so that
this utility can be used for the first time with problems which include
projection.
- Fixed projection bug: no longer use inviscid walls or ibtyp=-1
solid walls for projection surfaces.
- Fixed restart bug: modification of an existing input volume
grid file (X_DIR/*.x) did not cause the code to update the internal
alternating-digital-tree (adt) map for the modified mesh. This could
cause failed searches or segmentation violations.
- Changed default name of $HCUT NAME from "HOLE CUTTER" to "HOLE_CUTTER".
- Fixed restart bug for manual hole-cutting: was not re-cutting when
adding/changing $BOX namelist inputs.
- Changed reading of logical namelist value to check for both upper
and lower case T or F.
Version 5.1f Modifications
This version includes several modifications to the automatic
hole-cutting routines, which results in an increase in computer time
in the autocut process, adding about 25% more to the total execution
time. Also, one should not attempt to perform a restart execution of
Version 5.1f using a previous verison 5.1e run. Specific changes include:
- Implemented several modifications to the automatic hole-cutting
algorithm. In regions of overlapping solid-wall surfaces, attempt to
combine overlapping surface elements (which are represented as
triangles) into a unique set of non-overlapping Delauny trianges
used for the clear-line-of-sight (CLOS) test.
This fixes most, but not all, instances of the bad holes being cut
into overlapping solid walls. Also forced CLOS test to examine all
of the neighboring Cartesian hole-map elements, and then use majority
to determine inside versus outside.
- Added step to automatic hole-cutting process, which blanks points
on a solid wall when their neigbhoring point just above the wall is blanked.
This improves the hole cutting for intersecting bodies and collar grids.
- Added step to automatic hole-cutting process which will blank
certain unresolved points with no clear line of sight to an inside
or outside element. This examines the normal vectors of near-by
walls, and blanks the point if it appears to be on the inside of
all the walls. This dramatically improves problems with ORPHAN
points left inside of thin bodies, such as thin trailing edges
in wings.
- Added -sp option to the utility programs peg_hole,
peg_hole_surf, peg_diag, and peg_proj. The -sp flag
forces these utilities to write single-precision output grid
and/or solution files.
- Fixed bug in execute_comp_hole: implementation of REGION
TYPE='UNBL' (which has the effect of unblanking a specified subset of
a grid) never worked correctly.
- For 2D problems, added check to ensure that holes will be the
same on all three of the computational planes in the third direction.
- Fixed restart bug with projections: previously, changes to input
variables which control projection did not force the code to re-do
the interpolations, and thus the change in the projections was never
used.
- Fixed error checking for $BOUNDARY namelist: made it OK for
BOUNDARY to not specify ISPARTOF, as long as SURFACE specifies MESHNAME.
Added error checking for $SURFACE namelist, checked that MESHNAME matches
an existing mesh name. Changed MESH NAME to MESHNAME in documentation for
SURFACE namelist.
- Fixed bug when checking manual hole-cutting inputs. If the
number of surfaces was zero, it got stuck in an infinite loop
- Fixed bug specifying outer boundaries: it was setting second
fringe points at outer boundaries, in some cases setting boundary
points as fringe points, resulting in ORPHANS on solid walls.
Changed the index limits: only need to go all the way to the edge
for periodic grids.
Version 5.1e Modifications
- Additional automatic hole-cutting operation for Cartesian box
grids: This additional hole-cutting step will blank out cells of a
Cartesian box grid which contain a solid-wall boundary point. This
fixes the problem of PEGASUS auto hole cutting unable to blank out
large Cartesian box-grid cells which completely surround a solid body
and which do not have any vertices inside the solid body. The
previous workaround, which did not always work, was to increase the
OFFSET input parameter to values in the range 3 to 7 for Cartesian box
grids. This is no longer necessary, and thus, an appropriate value
for OFFSET for a Cartesian box grid is in the range 0 to 2, which is
the same appropriate range for body-fitted volume grids.
- Fixed large-hole restart BUG in automatic hole cutting:
This bug would cause a failure of the automatic hole cutting during a
restart run. The failure was characterized by a very large
rectangular hole: all points inside the min/max box of the hole cutter
would be blanked out. The bug was a failure to initialize the
variable ilen in mod_hole_octree during a restart run.
This caused all of the cartesian cells in the hole map to be labeled
as INSIDE the solid body.
- Fixed bug with Level 2 interpolation for periodic
O-grids: Previously, the Level 2 interpolation would not provide
interpolation stencils for points on a periodic plane. For example,
consider a volume grid which is periodic in K, and has significant
overlap with a neighboring grid, and which a body-normal direction in
L, with an outer boundary at L=LMAX. Level 2 interpolation might
provide stencils at points L=-10,-1 for all J and all K, except points
on the K=1 and K=KMAX planes. This bug has been corrected such that
Level 2 interpolation will provide stencils for all K points in a
periodic grid. This bug was causing major problems with the flow
solution in the vicinity of a the periodic planes.
- Fixed bug with periodic O-grid outer boundaries:
The code will now produce outer-boundary interpolation stencils on the
edges of a periodic plane. For example, consider an O-grid which is periodic in
the K-direction, and has an outer-boundary at L=LMAX which requires
interpolation stencils. Previously, PEGASUS would not provide
stencils on the edges given by {J=1,JMAX;K=1;L=LMAX} and
{J=1,JMAX;K=KMAX;L=LMAX}. This could cause a minor glitch in the flow
solution in this vicinity.
- Modified the clean_holes script:
No longer remove contents of WORK/HCUT_BC_DIR, since this forces the
code to redo the projections, and thus also the interpolations.
If this level of restart is required, the entire problem should be
re-run from the beginning by removing the entire WORK directory.
- Modification for LINUX:
Modified interpolate.F90 to change strange behavior on LINUX with pgf90
compiler: in first pass through interpolate, zmaxg and zming were always
computed to be nan after this statement:
zmaxg = zmaxg + dztol
zming = zming - dztol
even though before this point, zming and zmaxg and dztol are all
valid numbers. Mysteriously, the problem goes away if the previous lines:
dxtol = rvap*(xmaxg - xming)
dytol = rvap*(ymaxg - yming)
dztol = rvap*(zmaxg - zming)
are switched to this ordering:
dztol = rvap*(zmaxg - zming)
dytol = rvap*(ymaxg - yming)
dxtol = rvap*(xmaxg - xming)
With this change, version 5.1e seems to work OK on LINUX with the
pgf90 compiler, after only limited testing, including the examples
cases naca_airfoil, 30p30n_airfoil, and sphere.
Version 5.1d Modifications
- Fixed bug in automatic hole cutting: Was never allowed to
blank points which were part of a surface which had a specified
boundary condition. This caused major problems with O-grid periodic
surfaces, and some other cases. This, however, magnifies the problem
with erroneous hole cuts at overlapping surfaces.
- Fixed bug with GLOBAL namelist CARTX,CARTY,CARTZ inputs:
These user input values were not overriding those calculated
internally. Added CARTX, CARTY, CARTZ to HCUT namelist variables.
Added description of CART[XYZ] to the Users Guide (these were
previously undocumented).
- Set default value of $GLOBAL orphfix to .TRUE.
- Fixed bugs in peg_in.F90: was adding wrong IBDIR for
duplicate boundary condition on O-grid periodic plane, and for
IBTYP=54-59; was not processing IBTYP=51-59 properly; fixed IBTYP=-1
bug, adding of IBTYP=-1 extensions to TE was failing because logical
variable wingcap was never initialized. Added -no_add_te flag to
peg_in.
- Fixed bug in peg_plot.F90: -sp and -dp flags were not
coded properly. Caused CRAY or single-precision executables to not
write the x,y,z,iblank data unless using -sp,-dp flags. Removed -dp
flag; -sp flag can be used if the code was compiled as
double-precision. Added description of -sp to Users Guide.
- Fixed bug in peg_plot.F90: was assigning all ORPHAN points
an iblank value of 101, ignoring the effect of ORPHFIX. By default,
it now only sets iblank=101 for level ORPHANs; added the -noorphfix
flag, which causes level 2 ORPHANS to be flagged with iblank=101.
- Changed q5 field in peg_diag Changed output q file from
0.0 everywhere, to 0.0 at the field points, -1.0 for orphan points,
and connecting mesh number at all legal l1 and l2 boundary points.
- Modifications for compiling on LINUX: modified a number of
files to fix compiler problems on LINUX systems: both Compaq Alpha
Fortran 90 compiler, and Portland Group pgf90 compiler. Added
--with-pgi flap to configure script.
- Additional error checks: ensured that boundary condition
indicies and IBDIR are within an acceptable range; ensure that mesh
names given in BCINP and BOUNDARY input refer to existing meshes.
To Do List
In addition to working on the Known Bugs and
Problems listed above, here are more things to work on for PEGASUS 5.
- Investigate pruning away fringe levels greater than 3 (or 2) after
the level 2 interpolation.
- Investigate letting level 2 interpolation find stencils on
boundary points, not just interior points.
- For cases with a symmetry plane, add a feature to automatically
cut away grid points which stray onto the wrong side of a symmetry plane
- Projection issues: need to report number of points not projected due
to the DISTANCE and ANGLE restriction.
- For symmetry boundary condition IBTYP=17 BC, it should read in
grid to determine which physical plane is the symmetry plane, and
accordingly automatically set XSYM, YSYM, or ZSYM.
[an error occurred while processing this directive]