Home
Name Modified Size InfoDownloads / Week
CAPSULE_GRID 2024-08-27
numodules 2024-08-27
GEN1D 2024-08-27
GEN_TO_GRID 2024-08-27
SHOCK_STAND_OFF 2024-08-27
RESHAPE 2024-08-27
interp3d 2024-08-27
SMOOTH 2024-08-27
interplib 2024-08-27
BLAYER 2024-08-27
special_functions 2024-08-27
gridlib 2024-08-27
DECONSTRUCT 2024-08-27
FLOW_INTERP 2024-08-27
SLOS 2024-08-27
geomlib 2024-08-27
COMPRESS2D 2024-08-27
REFLECT_BLOCKS 2024-08-27
progtools 2024-08-27
MORPH_LINE_SEGMENT 2024-08-27
SCALE_GRID 2024-08-27
ZEROMIN2 2024-08-27
Radio_Blackout 2024-08-27
SCALE_FLOW 2024-08-27
xyzq_io 2024-08-27
ADJUST_FLOW 2024-08-27
V2C 2024-08-27
SORT_ROWS 2024-08-27
searchlib 2024-08-27
INTERP_COLUMNS 2024-08-27
tecplot_io 2024-08-27
NEQAIR_DATA 2023-03-21
MAXMIN 2023-02-13
RESHAPE3D 2023-02-07
SURFACE_PEAKS 2023-02-02
USINTERP 2022-10-02
USLOS 2022-10-01
LAPACK_SUBSET 2022-09-02
Optimal_Interpolation 2022-09-02
linsys 2022-09-02
TRI_TO_QUAD 2022-08-24
TET_INTERP 2022-08-24
triangulation_io 2022-08-24
WINGSECTIONS 2022-07-18
SURFACE_INTERP 2022-06-09
USFLOWINTERP 2022-05-19
USREFLECT 2022-05-19
TRI_TO_TRI 2022-05-19
TRIANGULATION_TOOL 2022-05-19
GSMOOTH 2022-05-19
REDISTRIBUTE_XY 2022-05-19
surface_patch_utilities 2022-05-19
grid_block_utilities 2022-05-19
BODY_POINT_DATA 2022-05-19
MAKELIST 2022-05-19
TABLE_ARITHMETIC 2022-05-19
table_io 2022-05-19
RADIAL_INTERP 2022-05-19
REFINE_GRID 2022-05-19
Stardust_Lines 2022-05-19
NEQAIR_Integration 2022-05-19
LINE_GRID 2022-05-19
SCAN_GRID 2022-05-19
PREPARE_NEQAIR_DATA 2022-05-19
adt 2022-05-10
intrinsics 2022-05-10
ugridlib 2022-05-10
CGRID 2019-12-18
CAPSULE_SPOKES 2019-04-04
Aero_Coefs 2019-03-01
EXTRACT_FUNCTIONS 2018-09-19
EXTRACT_BLOCKS_2D 2018-09-19
POLAR_INTERP 2018-08-24
COLUMNEDIT 2018-07-19
GU 2018-04-05
A2B 2018-01-04
LINES_OF_SIGHT 2017-09-05
OUTBOUND 2017-07-07
PREPARE_LOCAL_ANALYSIS 2017-06-17
ANCHOR 2016-08-27
RADIAL_INTERP_2D 2016-04-20
UPDATE_GRID 2016-04-13
NPOPT_DRIVER 2015-12-17
SURFACE_PATCHES 2015-12-03
THIN_GRID 2015-06-04
interp2d 2015-04-16
SURFACE_INTERP_2D 2015-04-16
REFLECT_BLOCKS_2D 2015-04-16
ADJUST_GRID 2015-02-18
HEMISPHERES_OF_SIGHT 2015-01-27
MERGE_TABLES 2014-10-03
Traj_Fit 2014-09-25
FILTER_LINES 2014-09-05
LINES_OF_SIGHT_2D 2014-08-17
REVOLVE_GRID 2014-04-10
SMOOTH2D 2014-02-21
TEMPLATE 2014-02-11
XLINE 2014-02-05
XDECK 2014-02-05
UPSEQUENCE 2014-02-05
TRAIL 2014-02-05
THIN_GRID_2D 2014-02-05
THIN_FLOW 2014-02-05
SURFACE_PAD 2014-02-05
SURFACE_DIFFS 2014-02-05
SURFACE_CURVATURE 2014-02-05
SPLIT_GRID 2014-02-05
SORT_SURFACE_SLICE 2014-02-05
SHIFTSCALE 2014-02-05
SHADOWGRAPH 2014-02-05
REORDER_SEGMENTS 2014-02-04
REORDER_ROWS 2014-02-04
REORDER_BLOCKS 2014-02-04
RECTIFY_GRID 2014-02-04
QNMDRIVER3 2014-02-04
QNMDRIVER2 2014-02-04
PROFILE 2014-02-04
optlib 2014-02-04
PRECISION 2014-02-04
P3D2TEC 2014-02-04
NBYN 2014-02-04
MERGE_FILES 2014-02-03
MERGE_BLOCKS 2014-02-03
LOC 2014-02-03
JOIN_GRID 2014-02-03
INTERP_1D 2014-02-03
INSERT_LINES 2014-02-03
HYPER_AERO 2014-02-02
GRID_FACES 2014-02-02
GRADIENT_BASED 2014-02-02
FLOW_INTERP_2D 2014-02-02
kdtree 2014-02-02
EXTRACT_PEAKS 2014-02-02
EXTRACT_LINES 2014-02-02
EXTRACT_COLUMNS 2014-02-02
EXTRACT_BLOCKS 2014-02-02
DISTRIBUTE 2014-02-02
CURVATURE3D 2014-02-02
CURVATURE 2014-02-02
CROSS_SECTIONS 2014-02-02
CONES_OF_SIGHT 2014-02-01
COMBINE_BLOCKS 2014-02-01
CH_GRID 2014-02-01
CAVITY_MAP 2014-02-01
BUMP_FACTORS 2014-02-01
BSPROFILE 2014-02-01
AEROSURF 2014-02-01
COMPARE_PATCHES 2014-02-01
COMPARE_FLOWS 2014-02-01
COMPARE_BLOCKS 2014-02-01
COMBINE_BLOCKS_TURB 2014-02-01
eigenlib 2014-01-30
obsolete 2014-01-29
integrate 2014-01-28
forsythe 2014-01-28
dt_nurbs 2014-01-28
C_utilities 2014-01-28
blas2lib 2014-01-28
blaslib 2014-01-28
aa_nurbs 2014-01-28
TRAJ_OPT 2013-10-31
THROAT_CONDITIONS_3D 2013-10-31
NOZZLE_THROAT_CONDITIONS 2013-10-30
HEAT_SHIELD 2013-10-29
README.markdown 2023-02-02 25.3 kB
TRI_DIFFS 2022-08-24 995 Bytes
adt_utilities.f90 2015-04-13 283.5 kB
CFD_Utilities_NOSA_v3_FINAL_2014SEP5.pdf 2014-09-06 126.1 kB
Downloading.txt 2014-02-06 2.3 kB
Totals: 169 Items   438.2 kB 12

Outline and Formalities

On January 24, 2014, this project received final approval from NASA to upload actual software. This process was completed on February 5, 2014, although a few items in the one-liners have been held back for now. Provided are 30+ subroutine libraries (mostly lowercase library names, with a total of about 1200 .f and .f90 subroutine files) and more than 100 application programs (uppercase names), almost all in Fortran [90]. Most have been developed at NASA Ames Research Center over several decades of work in the Aerodynamics Division and Space Technology Division. Most are computational fluid dynamics-related (CFD), and many apply to multiblock structured data in PLOT2D/3D form (grids and function files). A number of the applications work with datasets in Tecplot format. (Tecplot is a de facto standard at NASA.) The mixture of generalized and specialized functionality offered is apparent from the one-liners below. Subroutine one-liner READMEs also appear with each library, while each application folder contains a README adapted from the main program header.

Use and Change Notice

Please refer to CFD_Utilities_License_NOSA.pdf on this Files page for details of the NASA Open Source Agreement under which the CFD Utilities are released.

Most of the subroutines and application programs are single-purpose utilities that are unlikely to warrant modification. If any would-be user chooses to make changes, the present authors urge that the History section found in each file be updated appropriately, along with other in-line documentation such as argument description or purpose outline that is affected by such changes. We do not require notification of any such changes, but would welcome any associated feedback.

Contacts

David.A.Saunders@NASA.gov, Todd.R.White@NASA.gov, or Jeffrey.P.Hill@NASA.gov

Downloading

Guidelines appear below and in the file Downloading.txt on this page.

Libraries/Modules

aa_nurbs ** | Supplements the DT_NURBS library, for B-spline airfoils adt ** | Rapid search/interpolation within computational meshes blaslib ** | Basic linear algebra subprogram utilities (vectors) blas2lib ** | NAG versions of the Level 2 BLAS Matrix-vector routines C_utilities ** | Handful of C translations from interplib, linsys, etc. dt_nurbs ** | (Dated) David Taylor Naval Research Center NURBS library eigenlib ** | Just the EISPACK routines used by CAVITY_MAP rotations forsythe ** | Original Forsythe, Malcolm & Moler library (historical) geomlib ** | Areas, rotations, nearest points, arc lengths, etc. grid_block_utilities ** | Volume grid analogues of the surface_patch_utilities gridlib ** | Mostly for structured 2/3-space grids; many 1-D distributions integrate ** | Numerical quadrature, mostly 1-D, with a driving program interplib ** | 1-D interpolation & smoothing utilities; see SMOOTH interp2d ** | 2-D interpolation, smoothing, & intersection utilities; see SMOOTH2D interp3d ** | 3-space interpolations, intersections, etc. intrinsics ** | Contains only trig_functions_in_degrees: g95 cosd, etc. kdtree ** | Matthew Kennel's open source package, now an option in FLOW_INTERP linsys ** | Linear system solvers, mostly dense factorization methods numodules ** | Miscellaneous utilities: finite differences, standard deviations, etc. obsolete ** | Still linked to by INTEGRATE, MAXMIN, PROFILE, and SMOOTH Optimal_Interpolation ** | Alexander Barth's Kriging-like package, with extensions optlib ** | 1-D zero/minimum finders; n-D unconstrained methods, etc. progtools ** | String-manipulation & prompting utilities, incl. string_justify module searchlib ** | 1-D search/sort routines; some for 2|3-D now deprecated special_functions ** | A few utilities related to erf(x), normal distributions, etc. surface_patch_utilities ** | For structured surface grids: scale/shift/transpose, etc. table_io ** | I/O utilities for plain text tables (headers + numeric rows) tecplot_io ** | Tecplot I/O package for structured multizone data triangulation_io ** | Tecplot I/O package for triangulated surface data ugridlib ** | Triangle and tetrahedron utilities xyq_io ** | PLOT2D-type multiblock structured grid I/O utilities, in xyzq_io folder xyzq_io ** | PLOT3D-type multiblock structured grid I/O utilities; see also f_io.f90

Applications

C = CFD, G = General Numerics, P = Programming Tool

A2B ** | G Converts a (large) ASCII file to a binary stream file. ADJUST_FLOW ** | C Analogue of ADJUST_GRID for PLOT3D-format flow solutions ADJUST_GRID ** | C 20-odd options: shift/scale/rotate/swap coordinates, etc. Aero_Coefs ** | C Aerodynamic force/moment coefs. for structured surface data containing p or Cp AEROSURF ** | C Wing/body/nacelle surface paneling; underlies shape optimization ANCHOR ** | G Applies Optimal_Interpolation package to aerodynamic or other unstructured data BLAYER ** | C Boundary layer analysis of a structured flow solution BODY_POINT_DATA ** | CG Aid to tabulating surface body point flow properties (pressure, heat flux, etc.) BSPROFILE ** | C B-spline curve analogue of PROFILE airfoil utility BUMP_FACTORS ** | C Compare related structured surface solutions as ratios CAPSULE_GRID ** | C Automated surface grid for sphere/cone; many aft body options CAPSULE_SPOKES ** | C Supplements POLAR_INTERP by setting up spoked body points for a capsule CAVITY_MAP ** | C Map local cavity flow solution to unit cube; slice it, etc. CH_GRID ** | C Stand-alone form of the automated C-H volume gridding in wing/body design code SYN87 COLUMNEDIT ** | P Insert/delete/replace column(s) in a dataset COMBINE_BLOCKS ** | C Combine multiblock grids/solutions; cavity block options COMBINE_BLOCKS_TURB | C COMBINE_BLOCKS variant required for turbulent flows COMPARE_BLOCKS ** | C Compare related structured grids: identical? maximum differences? COMPARE_FLOWS ** | C Flow field analogue of COMPARE_BLOCKS (volume | surface) COMPARE_PATCHES ** | C Surface grid analogue of COMPARE_BLOCKS COMPRESS2D ** | C CAPSULE_GRID tool; adjust upstream boundary, wall spacing, # radial grid points, etc. CONES_OF_SIGHT ** | C Body-normal sets of 9 discretized lines forming cones for radiation calculations CROSS_SECTIONS ** | C Slice a surface dataset (structured | unstructured) at many stations CURVATURE ** | C Evaluate curvature along X-Y curve; redistribute points according to curvature CURVATURE3D ** | C X-Y-Z curve analogue of CURVATURE DECONSTRUCT ** | C Convert a multiblock structured surface or volume grid to unstructured form DIGIT ** | P T means the given single character is in the range 0-9 DISTRIBUTE ** | C Drives available 1-D grid-point distribution utilities EXTRACT_BLOCKS ** | C Extract indicated block(s) from a multiblock grid/flow EXTRACT_BLOCKS_2D ** | C Extract indicated block(s) from a multiblock 2D grid/flow EXTRACT_COLUMNS ** | GP Extract column(s); options to scale/shift/reformat EXTRACT_FUNCTIONS ** ! C Extract selected functions efficiently from a PLOT3D function file. EXTRACT_LINES ** | GP Extract every nth line starting from some line EXTRACT_PEAKS ** | CGP For a list of files of column data, tabulate peak values FILTER_LINES ** | GP Remove non-numeric lines (excess headers?) from a table FLOW_INTERP ** | C Volume grid search & flow interpolation (ADT method and KDTREE method) FLOW_INTERP_2D ** | C 2-space analogue of FLOW_INTERP GEN1D ** | G Generate (x,y) datasets from a choice of y = f(x) functions GRADIENT_BASED ** | CG Redistribute points along an (x,y) curve according to |df/ds| where s is arc length, for some function f GRID_FACES ** | C Extract grid block face(s) from a multiblock grid/flow GSMOOTH ** | C Elliptic volume grid smoothing; option to detect bad cells GU ** | C Ryan McDaniel's multi-option tool for PLOT3D grids/flows HEAT_SHIELD ** | C Forebody shape optimization, axisymmetric option; Newtonian CL/CD HEMISPHERES_OF_SIGHT | C Sets of discretized lines forming hemispheres for radiation calculations; see also SLOS, USLOS HYPER_AERO ** | C Driver for available impact methods, including Modified Newtonian INSERT_LINES ** | P Insert lines from one file into another at some interval INTERP_1D ** | G Interactive linear/local spline interpolation, 1-D INTERP_COLUMNS ** | GP Adaptation of REGULARIZE; variable column to treat as "x" JOIN_GRID ** | C SPLIT_GRID companion for merging blocks LINE_GRID ** | GP Uniform grid between 2 points in 3-space; extrapolation OK LINES_OF_SIGHT ** | C Body-normal | shock-normal discretized lines for radiation calculations LINES_OF_SIGHT_2D ** | C 2-space analogue of 3-space LINES_OF_SIGHT LOC ** | P Count lines of code & comments in a Fortran source file MAKELIST ** | P Make a list of integers for given i1, i2, increment MAXMIN ** | G Analogue of SMOOTH for looking at 1st & 2nd derivatives MERGE_BLOCKS ** | C Variant of JOIN_GRID allowing for optional function file MERGE_FILES ** | C Merge variables of two Tecplot files (same structured grid) MERGE_TABLES ** | GP Rearrange columns from any number of tables into a new table NBYN ** | G Interactive solution of square n x n systems; n <= 6 NEQAIR_DATA ** | C Converts line-of-sight data from PLOT3D form to NEQAIR form NEQAIR_Integration ** | C Integrates radiances from hemisphere lines of sight to estimate radiative heat flux NOZZLE_THROAT_CONDITIONS ** | C Axisymmetric variant of THROAT_CONDITIONS_3D NPOPT_DRIVER ** | G Framework for a [sequence of] constrained minimization[s] OUTBOUND ** | C Off-line grid/shock alignment; other redistribution options P3D2TEC ** | C Convert between PLOT3D grid/flow format and Tecplot form POLAR_INTERP ** | C Pad spoked forebody radiation data nonlinearly PRECISION ** | G Estimate objective function precision (difference table) PREPARE_LOCAL_ANALYSIS ** | C Rapid set-up of DPLR-based damage/repair/feature calculations: cavity | protruding gap-filler PREPARE_NEQAIR_DATA | C Facilitates scripting of radiative heating calculations by NEQAIR PROFILE ** | C Airfoil geometry display/manipulation utility QNMDRIVER2 ** | G Framework for one unconstrained optimization (QNMDIF2) QNMDRIVER3 ** | G Framework for a sequence of unconstrained optimizations RADIAL_INTERP ** | C Rapid volume grid|flow interpolation for new surface grid (single layer of volume grid blocks) RADIAL_INTERP_2D ** | C 2-space RADIAL_INTERP analogue; both one layer of grid blocks RECTIFY_GRID ** | C Ensure right-handedness for 3-space volume or surface grid REDISTRIBUTE_XY ** | C Redistribute points in a 2- or 3-space line segment (1- or 2-sided stretching) REFINE_GRID ** | C Densify | thin multiblock grid/flow data, any multipliers REFLECT_BLOCKS ** | C Reflect 3-space grid/flow data; save reflected or both halves REFLECT_BLOCKS_2D ** | C Reflect 2-space grid/flow data; save reflected or both halves REORDER_BLOCKS ** | C Reorder some or all grid blocks; optional flow file REORDER_ROWS ** | GP Reorder tabular data so leading n columns vary differently REORDER_SEGMENTS ** | GC Reorder multiple 1-D Tecplot zones as 1 continuous zone RESHAPE ** | G For 2 of 2 or more columns, shift/scale/rotate/... (11 options) RESHAPE3D ** | G 3-space analogue of RESHAPE REVOLVE_GRID ** | C 2-space volume grid --> 3-space; may need RADIAL_INTERP next SCAN_GRID ** | C Tabulate data range, etc., by grid block; optional flow SHADOWGRAPH ** | C CFD density data --> shadowgraph/schlieren-like image SHIFTSCALE ** | G Interactive calculation of linear coefficients for transforming [a, b] -> [p, q] SHOCK_STAND_OFF ** | C For volume grid & flow field temperature, calculate shock stand-off distances SLOS ** | C USLOS-type merge of LINES_OF_SIGHT & HEMISPHERES_OF_SIGHT (structured grid) SMOOTH ** | G Drives available 1-D interpolation & smoothing utilities SMOOTH2D ** | G Bivariate analogue of SMOOTH SORT_ROWS ** | GP Sorts the output from grep (say) or a list of file names containing numeric substrings. SORT_SURFACE_SLICE ** | C Sort Tecplot surface slice into 1 or more curves for line plots SPLIT_GRID ** | C Split multiblock grid/flow and/or permute indices Stardust_Lines ** | C Radiation lines of sight for airborne or ground observation of an entry capsule Stardust_Integration ** | C Companion to Stardust_Lines SURFACE_CURVATURE ** | C Gaussian/mean/principal curvatures for surface/volume grid SURFACE_DIFFS ** | C Map Tecplot surface grid 1 to grid 2; save [%]differences SURFACE_INTERP ** | C Interpolate 3-space Tecplot surface data at target data point(s) SURFACE_INTERP_2D ** | C Interpolate 2-space Tecplot surface data at target data point(s) SURFACE_PAD ** | C Pad structured surface data nonlinearly: 1-D in i and|or j SURFACE_PATCHES ** | C ADJUST_GRID variant with more surface_patch_utilities options SURFACE_PEAKS ** | C Global max/min of a function in a structured Tecplot surface dataset, plus other outputs TABLE_ARITHMETC ** | G Manipulate one or two data tables by columns TEMPLATE ** | C Calculate block interface data and DPLR-type control file (structured volume grid) TET_INTERP ** | C Interpolate tetrahedral volume data to a structured multiblock grid THIN_FLOW ** | C THIN_GRID analogue for multiblock flow data THIN_GRID ** | C Extract every mth/nth[/kth] point in i/j[/k] directions THIN_GRID_2D ** | C THIN_GRID analogue for 2-space; grid only THROAT_CONDITIONS_3D ** | C Boundary conditions at arc-jet nozzle: rectangular|circular|semi-elliptic TRAIL ** | GP Truncate lines and|or strip trailing blanks Traj_Fit ** | C Nonlinear least squares fitting of f(rho(t),V(t) = C rho(t)^m V(t)^n via the QNMDRIVER2 framework TRAJ_OPT ** | CG Trajectory optimization: would need an NPOPT license from Stanford University TRI_TO_QUAD ** | C Impose a structured surface on a Tecplot triangulation TRI_TO_TRI ** | C Interpolate a single-zone Tecplot triangulation dataset to another 1+-zone target triangulation TRIANGULATION_TOOL ** | C Drives scale/shift/rotate transformations and area/volume/CM/moments of inertia calculations for a Tecplot unstructured surface or volume dataset (1+ zones) UPDATE_GRID ** | C Replace one or more grid blocks with same-sized block(s) from other file or files UPSEQUENCE ** | C Upsequence coarse cavity|plu|gap filler solution; impose fine local boundary flow USFLOWINTERP ** | C Interpolation within an unstructured 3D Tecplottable dataset (ADT search techniques) USINTERP ** | C Driver for the optimal interpolation package (scattered data interpolation in n dimensions) USLOS ** | C Merge of LINES_OF_SIGHT & HEMISPHERES_OF_SIGHT for unstructured surfaces V2C ** | C Convert grid [+ optional flow]: cell vertices to centers WINGSECTIONS ** | C B-spline sections + chord/thickness data --> B-spline wing XDECK ** | P Ancient precursor of TRAIL: remove trailing | leading characters **XLINE ** | P Remove lines starting with a target string

Downloading Guidelines

Presently, it is assumed that would-be users will not want the entire heterogeneous collection gathered here, but rather some application(s) and the libraries required for linking. Therefore, a *.tar.gz file is provided for each library with a simple build script. Each application folder contains the main program, a sample control file if any, a simple build script, and any other source files not in one of the libraries.

Use of a directory structure reflecting the folder structure of this web page is recommended. Suppose /xxx is the root of such a directory structure, and program CURVATURE is the application of interest:

(1) From /xxx enter "mkdir CURVATURE" and download the files curvature.f, build, and any others into /xxx/CURVATURE. The simple build script shows that the needed libraries are gridlib, geomlib, interplib, interp3d, linsys, numodules, searchlib, and prmodules from the progtools folder.

(2) Therefore, directories /xxx/geomlib, /xxx/gridlib, and so on need to be set up first if they are not already there from downloading some other application. E.g., place geomlib.tar.gz into /xxx/geomlib and extract the geomlib files into that directory using "tar -xvozf geomlib.tar.gz".

(3) Edit the file "build" to suit your compiler. 64-bit arithmetic is strongly recommended, via the -r8 switch or equivalent. Note that all the source code uses real declarations, but real*8 or double precision is intended via the appropriate compiler switch.

(4) "./build" compiles all subroutines, places the .o files into an object library such as f90geomlib.a, then removes the .o files.

(5) In the case of Fortran 90 modules, such as /xxx/adt/adt_utilities.f90, .mod and .o files are not removed, but they can be once successful compilation has been demonstrated. (Such modules are compiled into the application directory by the build file provided for the application.)

(6) Once all the needed libraries have been built, adjust the "build" in /xxx/CURVATURE similarly, and "./build" should link the application.

(7) Optionally, a directory /xxx/bin might be added, placed in the path of the user, and assigned symbolic links to each application, via commands such as "ln -s /xxx/CURVATURE/curvature ."

History

V13.08

Aug 30 2013  Initial preparation.
Sep 20 2013  Initial summary uploads to SourceForge.
Sep 30 2013  Still awaiting final NASA approval to upload software.
Oct 17 2013  CAPSULE_GRID document uploaded following 2.5-week government
             shutdown hiatus.
Oct 22 2013  Folders for all libraries are now set up with subroutine one-
             liner READMEs.
Oct 30 2013  Folders for all applications are now set up with README files.
Jan 24 2014  NASA approval for uploading the software proper.
Jan 29 2014  All the library *.tar.gz files are now in place; applications
             still to do.
Feb 05 2014  All straightforward applications have been uploaded with simple
             build scripts.
Feb 10 2014  UPDATE_GRID has been added; it and GSMOOTH now use xyzq_io, not
             the earlier cfd_io_package.
Jun 30 2014  Someone needed the DECONSTRUCT utility.  A few updates since
             Feb 10 include solid angle utilities in ugridlib, a handful of
             functions in special_functions, and a reworked form of the
             HEMISPHERES_OF_SIGHT application that defines lines of sight
             at a point on a convex body via a triangulated quadrant of a
             hemisphere rather than via latitude/longitude discretization.
Jul 03 2014  TRI_TO_TRI has been added; a triangulation_io glitch has been
             corrected.
Aug 07 2014  EXTRACT_BLAYER_DATA has been added to the BLAYER folder.
Aug 14 2014  Optimal_Interpolation now contains the package for treating
             unstructured data as modified at NASA Ames from Alexander
             Barth's original, following NASA approval of its added
             BSD 2-Clause License.
Sep 05 2014  FILTER_LINES and MERGE_TABLES have been added.
Sep 24 2014  Traj_Fit has been added.  It curve-fits heat flux or pressure
             pulse data using f(rho(t),V(t)) = C rho(t)**m V(t)**n within
             the QNMDRIVER2 framework, as might be needed for TPS sizing
             at an entry vehicle body point from selected CFD data points.
Oct 03 2014  The table_io module used by Traj_Fit has been updated.
Oct 22 2014  The triangulation_io package has been extended with options
             for calculation of area, volume, CM, and moments of inertia.
             See the new TRIANGULATION_TOOL for driving these options
             along with shift/scale/rotate options.
Nov 17 2014  Unstructured volume analogues of unstructured surface
             utilities have been added to triangulation_io and are
             driven by TRIANGULATION_TOOL.
Mar 18 2015  An apparently inconsequential glitch in BLAYER has been
             remedied.  This version can also read [unformatted] volume
             datasets to speed processing of large-grid cases.
Mar 13 2015  OUTBOUND now has an option to applied a CONSTANT margin
             as a way of moving the forebody boundary a little while
             barely affecting the wake boundary.
Apr 15 2015  The ADT rapid search package (/adt) now has 2-space multi-
             block curve analogues of the 3-space structured multiblock
             surface grid utilities.  LINES_OF_SIGHT_2D uses these to
             deal with reflected axisymmetric 2-space volume grid.
             SURFACE_INTERP_2D has been added, using the same 2-space
             ADT utilities.
Aug 23 2016  TET_INTERP has been added to interpolate tetrahedral volume
             data to a structured multiblock grid.
Mar 17 2017  SORT_ROWS (added Feb 14) has been extended to allow more
             than one numeric string in a text column, and to allow
             output in descending order if desired.
             Other recent refinements: COLUMNEDIT now allows extraction
             of more than one column at a time; the table_io module has
             an updated table_io_read_alpha utility prompted by SORT_ROWS
             that handles the case of all lines/rows treated as text and
             having the same number of columns (with no header records
             assumed).  Previously, all rows were interpreted as header
             records, meaning the table appeared empty.
Jun 23 2017  NEQAIR_DATA, NEQAIR_Integration, and PREPARE_NEQAIR_DATA
             have been added to assist radiation calculations with
             NEQAIR.  NEQAIR itself should be obtained through the
             Commercial Technology Office at NASA Ames Research Center.
Jan 04 2018  Added A2B utility.  Since June, minor changes have been
             made to GU, BLAYER, LINES_OF_SIGHT, SHOCK_STAND_OFF, and
             OUTBOUND.
Jun 06 2018  Added Aero_Coefs application (supplement to DPLR's Postflow).
             Since January, updates have been made to geomlib, gridlib,
             progtools, searchlib, CAPSULE_GRID, CONVERTQ, GU, HEMISPHERES_-
             OF_SIGHT, NEQAIR_Integration, RADIAL_INTERP, and RESHAPE3D.
Sep 19 2018  Added EXTRACT_BLOCKS_2D and EXTRACT_FUNCTIONS; xyq_io and f_io
             were missing from the xyzq_io folder; since June, several
             triangulation utilities have been extended to overcome any
             single-zone assumptions, NEQAIR_Integration has been improved,
             and POLAR_INTERP has had an option added to generate spoked
             body points (but see also CAPSULE_SPOKES, which had been over-
             looked here as well).
Nov 07 2018  Added SLOS (structured grid form of USLOS for lines of sight).
Mar 30 2021  Added REDISTRIBUTE_XY, Stardust_Lines, Stardust_Integration,
             and TABLE_ARITHMETIC. Library additions include curve_diffs
             (geomlib), intsec9 (interp3d), and safeguarded_lsqr (linsys).
May 18 2022  Added USINTERP driver for the optimal interpolation package,
             USFLOWINTERP for interpolation within 3D unstructured data via
             ADT searching, and USREFLECT analogue of REFLECT_BLOCKS.
Feb 01, 2023 SURFACE_PEAKS was missing, and has been updated.
Source: README.markdown, updated 2023-02-02