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

  1. Sept 2016: Release of version 5.2b

  2. July 2015: Release of version 5.2a

  3. Apr 2014: Release of version 5.2

  4. May 2010: Released version 5.1l.

  5. Dec 2004: Fixed an array-bounds bug

  6. Dec 2004: Fixed bug with VOLUME arrays

  7. Oct 2003: Released version 5.1k.

  8. July 2003: MPI Bug limits number of CPUs

  9. Dec 2002: QCUTOFF should not be 0

  10. Apr 2002: AIAA Paper 2002-3186 on PEGASUS5 is available

  11. Apr 2002: Phantom-mesh bug in auto-hole cutting

  12. Mar 2002: Released version 5.1j.

  13. Jan 2002: 2nd-fringe ORPHAN bug in version 5.1i

  14. Nov 2001: Allocate bug in peg_hole_surf

  15. Oct 2001: Orphan counting bug in version 5.1i.

  16. Sept 2001: Benign bug in version 5.1i.

  17. Sept 2001: Released version 5.1i.

  18. July 2001: Released version 5.1h.

  19. June 2001: PEGASUS 5 Examples On-line

  20. 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

  1. 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
    

  2. 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.

  3. 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.

  4. 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:
  1. Added new inputs to HCUT namelist to provide additional control: CORNERO, HOFFSET, HOFFSTJ, HOFFSTK, and HOFFSTL.

  2. Bug fix to level 2 namelist processing: typo caused code to ignore all LEVEL2 namelist inputs.

  3. Bug fix to the peg_in program from Pieter Buning.

  4. 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.

  5. 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:
  1. 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.

  2. Fixed bug in configure script: --with-bytwswapio option was processed before --with-pgi, losing the addition to F90FLAGS.

  3. Fixed typo in the documentation for namelist BCINP: changed JBCB,KBCB,LBCB to JBCS,KBCS,LBCS

  4. Improved layout of peg5_plotcpu, letting legend overlap with the time-bar for xintout.

  5. Added command-line argument "-skip_startup" to peg5_plotcpu.pl.

  6. 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:

  1. 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

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. Added OFFSETJ, OFFSETK, OFFSETL inputs to the MESH namelist, used to control directional growth of the HCUT holes.

  7. 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.

  8. 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.


  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. Added error checking: report an error and stop if any regular zone dimension is less than 3.

  14. Fixed bug in octcut: exit fringe-point loop when query_tree2_nr returns zero triangles inside the Cartesian element.

  15. 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.

  16. 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.

  17. 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

  1. 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.

  2. Added time stamp output to the log file for the beginning of execution of each process.

  3. Added support in the configure script for altix and altix_ice platforms.

  4. 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

  1. 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.

  2. 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

  3. 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.

  4. Fixed bug in fixing of 2nd-fringe orphan ponts on periodic grid planes.

  5. 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.

  6. 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

  1. 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.

  2. 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.

  3. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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".

  5. Rewrote the mesh_lister and peg_orph programs: better output, more error checking.

Version 5.1h Modifications

  1. A fix for the HP compiler and pgif90 compiler problems which resulted in extremely slow execution (this was present only in 5.1g).

  2. Fixed a number of memory leaks, resulting in lower memory requirements.

  3. Implmented a more graceful abort for fatal errors, including cleaning up and properly aborting all mpi processes;

  4. The addition of the INTERNAL variable in the $HCUT namelist, which will enable to perform auto hole cuts for internal flow problems

  5. 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.

  6. Re-wrote peg_hole_surf so it gets its input from peg.in and X_DIR.

  7. 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.

  8. 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:

  1. Added MPI parallelization option. See the User's Guide sections for details on compiling and running this option.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. Added projection displacements to coordinates in XINtegrity so that this utility can be used for the first time with problems which include projection.

  8. Fixed projection bug: no longer use inviscid walls or ibtyp=-1 solid walls for projection surfaces.

  9. 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.

  10. Changed default name of $HCUT NAME from "HOLE CUTTER" to "HOLE_CUTTER".

  11. Fixed restart bug for manual hole-cutting: was not re-cutting when adding/changing $BOX namelist inputs.

  12. 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. For 2D problems, added check to ensure that holes will be the same on all three of the computational planes in the third direction.

  7. 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.

  8. 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.

  9. Fixed bug when checking manual hole-cutting inputs. If the number of surfaces was zero, it got stuck in an infinite loop

  10. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  1. 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.

  2. 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).

  3. Set default value of $GLOBAL orphfix to .TRUE.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.
  1. Investigate pruning away fringe levels greater than 3 (or 2) after the level 2 interpolation.

  2. Investigate letting level 2 interpolation find stencils on boundary points, not just interior points.

  3. 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

  4. Projection issues: need to report number of points not projected due to the DISTANCE and ANGLE restriction.

  5. 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]