Download Latest Version geomlib.tar.gz (58.3 kB)
Email in envelope

Get an email when there's a new version of CFD Utilities

Home / PROFILE
Name Modified Size InfoDownloads / Week
Parent folder
build.bplot 2014-02-04 253 Bytes
build 2014-02-04 619 Bytes
README 2013-10-30 35.7 kB
profile.f 2008-07-31 387.9 kB
sine-bumps.inp 2008-03-25 543 Bytes
bplot.f 2007-12-01 12.7 kB
naca0012.dat 2004-05-18 1.3 kB
getbumps.f 1996-12-20 20.2 kB
bplot.inp 1996-07-31 271 Bytes
Totals: 9 Items   459.4 kB 0
PURPOSE:
         PROFILE is a utility for manipulating and/or displaying the
         coordinates and other properties of airfoils.  It processes
         one or more profiles at a time in various ways (one way per
         run).   The input and output profiles may be in one of four
         formats described below (basically as separate surfaces, as
         a wrap-around surface, or in three-column form).

         If plotting of the airfoil geometry is  requested,  all  of
         the profiles  in  the input  dataset will be plotted on the
         same pair of axes unless the  "THREED"  option is selected.
         The plots  can  be  of  the  original input data,  or  data
         derived by PROFILE,  or both.   Curvature distributions may
         also be plotted as may the optional pressure distributions.

         Plotting of the airfoil geometries, curvature distributions
         or pressure distributions is handled by a separate program,
         QPLOT, which should accompany PROFILE.    Users' guides are
         available for PROFILE and QPLOT.

         The  four  main choices for manipulating input profiles are
         to REDISTRIBUTE the abscissas using conventional splines or
         parametric splines depending on whether leading or trailing
         edges are rounded;  to MODIFY or perturb the  ordinates  in
         some way according to shape functions added  interactively;
         to REFINE the ordinates by manipulating the curvature (act-
         ually 2nd derivative) distribution while seeking or retain-
         ing some maximum thickness value; and to OPTIMIZE one surf-
         ace of one airfoil automatically, using a predetermined set
         of shape functions with some of their parameters  variable,
         and a target curvature distribution to  be  matched  in the
         least squares sense.

         Lesser options permit the user to RECTIFY profiles which do
         not have the point common to the two surfaces in the  usual
         place, and to NORMALIZE or DENORMALIZE profiles. TRANSFORM-
         ing between upper/lower surface representation and  camber/
         thickness representation (either way) is provided for, with
         decambering as an option.  Applying twist is available from
         the ROTATE option.

         Two options involve a "secondary" profile  (prompted for at
         a lower level): an option to COMBINE profiles (one of which
         may be boundary layer displacement thickness);  and  an op-
         tion to LOFT linearly between two profiles.

         A  "nose-job"  option permits ROUNDing or SHARPENing of the
         leading edge region  -  operations which have been made  as
         reversible as possible.   More generally, the SMOOTH option
         smooths the entire airfoil (or just one surface) by fitting
         combinations of "Wagner" functions, which are also employed
         by the OPTIMIZE and MODIFY options,  or  by implicit and/or
         explicit smoothing (possibly weighted nonuniformly).

         Tabulation of coordinates along with derivatives and curva-
         ture is provided, as well as saving the manipulated profile
         as a new output file.

         Saving of y" distributions is also an option,  for possible
         editing and reuse in REFINE mode.

         Spreadsheet-compatible output of all likely tabular quanti-
         ties is also provided for the simpler operating modes. This
         requires the two surfaces to have common abscissas.

NOTES:
         PROFILE  has evolved considerably since its inception as  a
         basic redistribute-and/or-plot program. Provision for arbi-
         trary perturbations to the input geometry,  with tabulation
         of the resultant coordinates and derivatives, required some
         reorganization, but the structure should now serve for most
         likely purposes. Some implementation considerations follow.

      *  The case of a 2-element airfoil forced the decision to plot
         all input profiles on the same page  (although the "THREED"
         option has since been introduced).    Normalization of such
         combinations proved an awkward option to provide.  The user
         should  use  the normalization option carefully.  Normaliz-
         ation of 3-D wings is not available.

      *  The multiple-profile case also prevented plotting  of  more
         than one frame type (such as curvature distributions in ad-
         dition  to  the  airfoils)  -  hence the saving of separate
         files for later plotting.

      *  Large-scale plots are feasible  (with optional  windowing),
         but exact scaling cannot be guaranteed because of the vari-
         ability  of  the  output devices  available.  (Plots of the
         same data on the same device can vary slightly from plot to
         plot.)

      *  Derivatives and curvature values are normally estimated  by
         finite differences for consistency with REFINE and OPTIMIZE
         modes.    It is well known that these approximations can be
         poor in the presence of very small X increments and limited
         precision in the Ys.

      *  An option to plot the full wrap-around curvature  distribu-
         tion using parametric spline derivatives has been  provided
         for a proper look at the leading edge region.  But the .ypp
         file of 2nd derivatives is suppressed in this case to avoid
         inappropriate use with the REFINE mode.

      *  For simplicity, each of the MODIFY,  REFINE,  and  OPTIMIZE
         options assumes that the coordinates have been normalized.

METHOD:

         The basic steps are as follows:

      *  Prompt for mode of operation and the input profile file name.

      *  Set defaults for user inputs and use an input control file
         to override some of them if necessary.

      *  Scan all of the input profiles, for scaling and normalizing
         purposes. Use EOF to handle the unknown number of profiles.

      *  Rewind the file and process the (now known number of) profiles
         one at a time, according to the selected mode.

      *  Write the following output files as requested:

            Revised profile coordinates in one of 4 formats

            Original and/or revised airfoil geometry for plotting
            (a QPLOT file)

            Tabulated coordinates with derivatives and curvatures

            A more complete, spreadsheet-compatible file

            Second derivatives for possible reuse by REFINE mode

            Original and revised curvature data, including target
            curvature data for OPTIMIZE mode (another QPLOT file)

            Cps estimated for original and revised airfoil (QPLOT
            format)


MODES OF OPERATION:

         MODE 0:  "Display" mode - no modifications involved.   Gen-
                  erate requested output files,  which could include
                  saving the coordinates in a different format. MODE
                  <=3 is required for spreadsheet-compatible output.

         MODE 1:  Rearrange or rectify the geometry data so that the
                  common leading-edge point is indeed the  one  with
                  minimum abscissa and shift ordinates by  an  input
                  input amount if required.   Only  the revised pro-
                  file may be tabulated/plotted in this case. A ver-
                  tical shift option is also provided.

         MODE 2:  Normalize profile(s) according to the total  range
                  of x or by input chord & leading edge coordinates.
                  A negative chord value will denormalize.  The same
                  input values are used for each element of a multi-
                  element airfoil.

         MODE 3:  Redistribute the abscissas  and derive correspond-
                  ing ordinates.   Conventional or parametric spline
                  techniques are used depending on whether the lead-
                  ing edge is sharp or rounded.  Distributions along
                  the arc (in T rather than X) are an option.  Menu:

                  -1 = Read new Xs (or Ts) from a file in standard
                       PROFILE format (though y coordinates may be
                       omitted if desired).
                   0 = Distribute points uniformly.
                   1 = Distribute points sinusoidally bunched near
                       the leading edge.
                   2 = Distribute  points  sinusoidally, near both
                       the leading and trailing edges.
                   3 = Sinusoidal bunching around an internal pt.
                   4 = Vinokur distribution (first, last increments
                       increments specirfied.

                  A prompt  will  also  be  issued for the number of
                  points to be generated on each surface.

         MODE 4:  Perturb geometry data  according  to user-selected
                  shape functions (interactive).

         MODE 5:  Refine the airfoil,  typically modifying  (or  re-
                  taining) its thickness while retaining (or modify-
                  ing) its curvature distribution(s).  Numerous user
                  inputs are prompted for in this case,  since there
                  are several likely ways provided for  manipulating
                  the curvature distributions. Defaults are provided
                  where possible.  The 4 main choices:

                  (1) Leave a surface unchanged  (while presumably
                      refining the other);
                  (2) Change the thickness with minimal changes to
                      the existing curvature  (none of the follow-
                      ing constraints on the  original y" values);
                  (3) Impose a constant-2nd-derivative  constraint
                      in some single region (to remove a bump or a
                      spike in the curvature distribution, or per-
                      haps  to  modify regions of flatness by con-
                      straining second derivatives - and hence the
                      curvature - away from zero);
                  (4) Constrain the curvature via an input file of
                      2nd derivative values (possibly derived from
                      an earlier run  of  PROFILE,  or prepared by
                      hand).  The table does not have to cover the
                      whole abscissa range; linearly interpolating
                      table look-ups are used.

                  Brief descriptions of the inputs prompted  for  in
                  "refine" mode follow:

           *  Desired % thickness:  <CR>  retains present thickness.

           *  Width param. for y:  Affects  the  nonuniform  scaling
                                   applied  to  the ordinates  (both
                  surfaces).   The default is 2.0.  Larger (3.0-4.0)
                  tends to retain leading/trailing  edge  shape more
                  while 1.0 would constrain fore and aft less.

           *  Input y" table:      <CR>  means there is  none,  else
                                   the file name is  entered.   This
                  file should be in the standard  "PROFILE"  format.
                  It can  cover  any  range  of  abscissas.  (Linear
                  interpolation  is  used.)   It  may  be an  edited
                  version  of  the  file  from  a  previous  run  of
                  PROFILE, or it may be much cruder.  The 2nd deriv-
                  ative values  entered  act  as constraints on  the
                  curvature since curvature and y" are related if y'
                  is not large.

           *  Constant y" value:   <CR>  means no such constraint  -
                                   retain existing curvature  values
                  as much as possible.   Otherwise,  a  value  of y"
                  entered will be sought in the  abscissa range that
                  is prompted for next.

           *  Corresp. x range:     Enter low and high  x  values on
                                    the same line.   Allow  for  the
                  fact that strict inequalities are  used  when  the
                  program tests for being within this range.   E.g.:
                  Enter  .39 .61  or  .39,.61  if you intend for the
                  constraint to apply in [0.4,0.6].

           *  Width param. for y":  Default is  3.0.   Affects  non-
                                    uniform weighting  of  the equa-
                  tions representing 2nd derivative  constraints  in
                  the overdetermined system being solved.  Since the
                  actual values of the  2nd derivatives being sought
                  also act in  a weighting sense,  effects  of  this
                  variable are not easy to predict. Values of 2.0 or
                  1.0 should tend to let y" change more.

           *  x for peak y" weight: The absolute values  of  Y"  are
                                    so much bigger than those  of  Y
                  that they all need to be scaled down in the system
                  being solved.   If you are trying  to  flatten the
                  curvature plot in some region,  pick the center of
                  the region for this input. Otherwise, use the mid-
                  chord value.

           *  y" weights, x/c=0,1:  Default is 0.004. See next item.

           *  peak y" weight:       Default is 0.04.  These  provide
                                    for the fact that  the  absolute
                  values of y" are  typically  smaller in  the  mid-
                  section than near the  leading/trailing  edges, so
                  they should be weighted more,  especially  in view
                  of the fact that any  y"  constraints applied  are
                  typically in the mid-section.  See above.

         MODE 6:  Optimize one surface of one profile  using  a pre-
                  determined set of shape functions, some parameters
                  of which are automatically varied so as to achieve
                  a curvature distribution matching some target cur-
                  vatures in the least squares sense.

         MODE 7:  Transform  representation  of  profile(s)  between
                  upper/lower surface  and  camber/thickness (either
                  way - the user is prompted for the direction).  An
                  option to decamber a section is also provided.

         MODE 8:  Rotate a profile about some point to apply twist.

         MODE 9:  Combine primary profile with a  secondary  profile
                  (read from a separate file).  This was prompted by
                  a need to add or remove a boundary layer displace-
                  ment thickness  (positive by definition)  but  has
                  been arranged to handle true  addition/subtraction
                  of distinct profiles as well.

         MODE 10: Loft between primary and secondary profiles.

         MODE 11: Nose-job option: Round or sharpen the leading edge
                  region via splines.

         MODE 12: Smooth either surface or both surfaces using least
                  squares techniques (linear combination of n Wagner
                  functions plus a "ramp" for thick trailing edges),
                  or by implicit and/or explicit methods involving a
                  (possibly nonuniform) weighting of y".


GEOMETRY INPUT:

         Standard PROFILE format is shown below. The lower surface
         is optional, but a zero must be read for NL if no lower
         surface is included unless this is the last airfoil in the
         file (meaning EOF can be used to indicate NL=0).  In this
         case, a symmetrical airfoil is assumed.

             TITLE                   <CHARACTER*80>
             NU   Upper surface      <Integer # pts., first token>
             X         Y             <Reals, first two tokens>
             X         Y                 :
             :         :                 :     (May be X/C, Y/C;
             :         :                 :      Xs are increasing)
             :         :                 :
             NL   Lower surface      <Integer, first token> <may be 0>
             X         Y             <Reals, first two tokens>
             X         Y                 :
             X         Y  ! Trailing comments are permitted
             :         :                 :
             :         :                 :     (Xs are increasing)
             :         :                 :
             ! X         Y           <Pt. suppressed; NL must be adjusted>
             :         :                 :
             :         :                 :

  NOTE:  For standard format, if both surfaces are present, PROFILE
         expects them to have the same leading edge point.  The trailing
         edge points may differ.

         The next two formats are wrap-around clockwise and wrap-around
         counterclockwise, where the coordinates begin at the trailing
         edge, wrap around the leading edge, and end at the trailing edge.
         The clockwise case begins with the lower surface, and the counter-
         clockwise case begins with the upper surface.  The format shown
         below is essentially the same for both cases.  NPTS is the total
         number of points on the airfoil.

             TITLE                   <CHARACTER*80>
             NPTS                    <Integer, first token>
             X         Y             <Reals, first two tokens>
             X         Y                 :
             :         :                 :     (May be X/C, Y/C;
             :         :                 :      Xs are decreasing
             :         :                 :      until the leading
             :         :                 :      edge, then increasing)

  NOTE:  Wrap-around formats do NOT have duplicate leading edge points.

         The fourth format is three-column format.  The airfoil has
         the same abscissas for both surfaces in the 1st column and
         ordinates for the upper and lower surfaces in the 2nd and 3rd
         columns respectively.  Abscissas are increasing as with standard
         format.  Here NPTS is the number of points on either surface.

             TITLE                           <CHARACTER*80>
             NPTS                            <Integer, first token>
             X         YU        YL          <Reals, first 3 tokens>
             X         YU        YL              :
             :         :         :               :   (May be X/C, Y/C;
             :         :         :               :    Xs are increasing)
             :         :         :               :
             :         :         :               :


CONTROL INPUTS:

         A file containing keyword inputs and values may be used to
         override default options.  In general, the keywords refer to
         the airfoil plot file and other output options, and apply
         to all modes.   Prompts are issued for inputs needed by a
         particular mode.

KEYWORD GUIDELINES AND DEFINITIONS:

         Keyword/value pairs may appear with more than one pair on a
         line.  However, the multivalued keywords PLTLINE, CPSLINE,
         CRVLINE, and NOFILE must not appear with other keywords on
         the same line.

         The default value in each case appears in square brackets.

KEYWORD  VALUES and synonyms     DESCRIPTION
-------  -------------------     -----------

FORMAT   [SAME]                  One of four formats for output profile.
         PROFILE or STANDARD     May be in standard PROFILE format (ab-
         CLOCKWISE or WRAPAROUND scissas increasing), clockwise wrap-around
         COUNTERCLOCKWISE        format, counterclockwise wrap-around for-
         THREE-COLUMN or         mat, or 3-column format.  SAME means the
         THREE_COLUMN or         same format as the input profile.  NOTE:
         THREECOLUMN  or         To allow easily for several synonyms for
         TABLE                   for the THREE-COLUMN value, only the first
                                 5 characters of the value are checked.

PLTLINE  [DEFAULT]               Controls line types of curves on profile
         LINE                    plots.  One value may be included for
         DASH                    each curve on the plot.  The default is
         DOT                     symbols connected by a solid line, with
         CHAINDASH               a different symbol type for each succes-
         CHAINDOT                sive curve.  The first curve typically
         THICK                   represents the original profile; the
         SYMBOLS                 second curve represents the revised one.
                                 Overriding the default might be desirable
                                 when plotting multi-element airfoils or
                                 when lines without symbols are required.
                                 At most 20 curves are provided for.  Note:
                                 All the line types in QPLOT are available.
                                 SYMBOLS refers to symbols with no line
                                 connecting them.

CPSLINE  [see PLTLINE above]     Controls line types on Cps plots in the
                                 same manner as PLTLINE above.  One value
                                 per curve may be included, chosen from
                                 the same list of values as those shown
                                 for PLTLINE.

CRVLINE  [see PLTLINE above]     Controls line types on curvature plots
                                 in the same way as PLTLINE and CPSLINE.

CURVATURE or [NONPARAMETRIC] or  CURVATURE and DERIVATIVES are synonymous
DERIVATIVES  [FINITE_DIFFERENCE] controls for the type of calculations
             SPLINE     or       used for derivatives and hence curvature.
             PARAMETRIC or       The default is separate-surface treatment
             WRAPAROUND          using finite differences, as needed for
                                 consistency with PROFILE's REFINE and
                                 OPTIMIZE options.  The two surfaces appear
                                 as separate frames in the curvature plot.
                                 Otherwise, the full wrap-around curvature
                                 distribution is calculated using a para-
                                 metric spline and plotted on one frame.

                                 The default normally suffices unless the
                                 region of interest is very near a rounded
                                 leading edge.  Note that not all of the
                                 possibilities are provided for, such as
                                 parametric finite differences.

MINCURVATURE   [-5.]             Cutoff values for plotted curvatures.
MAXCURVATURE   [+5.]             Practice shows that +/-5. give useful
                                 plot scaling by ignoring the high curv-
                                 ature values near the leading edge.  On
                                 the other hand, it may well be desired
                                 to focus on the leading edge region.  Set
                                 both to 999. to obtain the full range.
                                 See the CURVATURE/DERIVATIVES control.

NOFILE   [NONE]                  Used to suppress any combination of the
         DAT                     seven output files generated by PROFILE.
         PLT                     The values correspond to the extensions
         TAB                     of the file names.  See elsewhere for a
         CRV                     complete description of file contents.
         YPP                     NONE serves only to assist leaving the
         CPS                     NOFILE control word in the input file
         SPREAD                  even if all outputs are desired.

PLOT     [BOTH]                  Controls plotting of original OR revised
         ORIGINAL                profile.  The default is to plot both
         REVISED                 original and revised (if one exists).

PRECISION   [FULL]               Controls number of digits in output
         ENGINEERING             airfoil coordinates.  FULL gives F11.8
                                 if possible, or E15.8 if any X >=10.
                                 ENGINEERING gives the traditional F10.6
                                 common to many flow solvers.

THREED   [FALSE] or [NO]         For plotting of multiple stations from
         TRUE or YES             a 3-D wing. The default is the 2-D case.

XAXIS    [6.4]                   Length of x-axis in inches.  The default
                                 is normally appropriate for an 8.5 x 11
                                 page in portrait mode.

         The following four keywords apply to windowing.  Any or none
         of them may be used.

XMIN     [minima and             Minimum abscissa for desired window
XMAX     maxima of               Maximum abscissa for desired window
YMIN     the input               Minimum ordinate for desired window
YMAX     coordinates]            Maximum ordinate for desired window


SAMPLE CONTROL FILE:

         A sample input file follows.  Note that keywords and values
         may be separated with blanks, commas, colons, equals signs,
         pr tabs. Remember, keywords with more than one value should
         appear on separate lines.  Any keyword or text value may be
         truncated to unambiguous leading characters.   Blank  lines
         and trailing ! comments are ignored.


         FORMAT = STANDARD   PRECISION = FULL
         PLOT BOTH  THREED:NO
         PLTLINE = SOLID, SOLID
         CPSLINE = DOT, SYMBOLS
         CRVLINE = SOLID, DASH, CHAINDOT
         XAXIS = 20.
         XMIN = 0.  XMAX 0.1
         MAXCURVATURE = 999.   ! Both 999. means plot the full
         MINCURVATURE = 999.   ! curvature range
         DERIVATIVES = PARAMETRIC
         NOFILE: YPP SPREAD


OUTPUT FILES:

         The following seven output files are generated by  PROFILE.
         Any  of  the  files  may  be  suppressed  using the keyword
         NOFILE.  The user is prompted for an identifier, which will
         become  the first part of each file name.   File extensions
         are fixed.

<identifier>.DAT   Contains airfoil coordinates  that  have been re-
                   vised in some way. May be in one of four formats;
                   default is the same format as input coordinates.

<identifier>.PLT   Contains airfoil geometry coordinates  and  other
                   information necessary for later QPLOTing.  May be
                   a plot of original profile,  revised profile,  or
                   both.  (Default is both, superimposed.)

<identifier>.TAB   Contains tabulated coordinates,  first and second
                   derivatives and curvatures for the  original  and
                   revised profile  (if  a  revised profile exists).
                   Other diagnostics may be written here,  including
                   a record of selected  shape  functions  from  the
                   MODIFY option.

<identifier>.CRV   Contains curvatures of the  original  and revised
                   profiles (if a revised profile exists)  for later
                   QPLOTing.  Also to be used as the basis of target
                   curvature data when OPTIMIZE option is used.  The
                   MAXCURVATURE and MINCURVATURE keywords  determine
                   the plot axis range, but the full surfaces appear
                   in the file (except for the first and last pts.).
                   See the description of these keywords for how  to
                   obtain a full wrap-around curvature distribution.

<identifier>.YPP   Contains second derivatives  in  standard PROFILE
                   format,  for  possible  reuse  in  "refine" mode.
                   When a profile has been  revised,  the  file will
                   contain  only  the  second  derivatives  of   the
                   revised profile.   Otherwise,  the file will con-
                   tain only the second derivatives of the  original
                   profile.

<identifier>.CPS   Contains QPLOTable estimates of Cps for user-sup-
                   plied alpha and free stream Mach number  (revised
                   and/or original).

<ident>.SPREAD     Contains  spreadsheet-compatible  (tab-delimited)
                   tabular data.   Available only if MODE <= 3,  and
                   only if both surfaces have common abscissas.

ENVIRONMENT:
  DEC VMS; SGI IRIX; Fortran 90

HISTORY:

Dec. '82  DAS/RAK  Original design.
12/09/82    LJC    Original coding (plot/redistribute data points).
04/29/83    LJC    Added option to "rectify" input data points.
July '83    LJC    Added a 3-D capability and an option for reading
                   a file of new abscissas in "redistribute"  mode.
09/27/83    LJC    Interactive MODIFY routine incorporated.
Oct. '83    DAS    Integrated alternative version of MODIFY  as the
                   REFINE option; provided for saving curvature and
                   y" values; removed REDISTRIB function from main.
11/09/83    LJC    Added de-normalizing to normalizing option;  in-
                   cluded these as a separate MODE; reordered MODEs
                   in order of complexity.
01/20/84    DAS    Incorporated OPTIMIZE mode.
04/12/84    DAS    Took advantage of QPLOT's new legend capability.
July '84    LJC    Added reading and writing of wraparound formats.
07/24/84    LJC    Added calculation of thickness for all modes.
Aug. '84    LJC    Changed from namelist to keyword inputs.
09/14/84    LJC    Changed legend entry to be read from dataset and
                   added prompt for title.  Formerly, the title was
                   read from dataset and the legend was hard-coded.
Oct. '84    LJC    Arranged for all plotting to be done  outside of
                   PROFILE  using  QPLOT.  Formerly,  much  of  the
                   program  was  devoted  to  plotting  the airfoil
                   geometry with DISSPLA.
Dec. '84    DAS    Incorporated cheap estimates of Cp distributions
                   using algorithm supplied by Ilan Kroo of the RAC
                   Branch at NASA Ames.  Added Cl, Cm calculation.
01/24/85    LJC    Allowed for original and revised plots with MODE
                   = 3.  Also modified to take advantage of QPLOT's
                   new equal axis scaling option.
02/12/84    DAS    Added TRANSFORM option.
02/13/85    LJC    Added shifting of ordinates to RECTIFY mode.
02/19/85    DAS    Fixed REDISTRIB to handle rounded trailing edges
                   properly; took out "BLUNT" input parameter.
02/28/85    LJC    Added 3-column format to PRREAD and PRWRIT.
03/22/85    LJC    Allowed for absent  input control file  (meaning
                   an empty file is not needed). Also added two new
                   keywords to RDKEYS for controlling line types on
                   Cps and curvature plots.
06/17/85    DAS    Provided generalized distributions in REDISTRIB,
                   via GETDIS/DSTRIB in place of XGRID.
09/05/85    DAS    Fixed minor error in QPLOTable airfoil data file.
09/30/85    DAS    Added COMBINE option.
10/09/85    DAS    Suppressed plot windowing control values from
                   QPLOTable file if they are not in use.
10/21/85    DAS    Introduced LSTFIL to echo the input control file
                   to the .TAB file for future reference.
11/04/85    DAS    Mixup with END CURVE/END FRAME for OPTIMIZE mode
                   target curvatures crept in (how? used to be OK).
12/30/85    DAS    Added ROUND option (tentatively).
04/24/86    DAS    Cp at leading edge was wrong.
08/11/86    DAS    Added SMOOTH option (fitting of Wagner functions
                   in linear least squares sense).
09/24/86    DAS    AFGEOM in place of CALCTHICK in main program;
                   menu options by name now, as well as by number.
10/20/86    RAK    AFGEOM returns CAMBER and THICK as fractions; must
                   convert to % chord at calling level.
02/11/87    DAS    Functionality of BOUNDS changed somewhat.
03/11/87    DAS    Made use of PROTECT utility (prompted by duplicate
                   point case that dies ungracefully otherwise).
04/24/87    DAS    Menu items clarified and made more unique (because
                   of SELECT's option for choosing by name or number).
                   Greater precision in output coordinates now by default.
                   Also: traps bad IDENT now (more than one token is
                   presumed to be a goof).
04/27/87    DAS    Introduced PRECISION argument in PRWRIT.
08/31/87    DAS    Trailing edge angle added as AFGEOM output.
09/23/87    DAS    If MODE=0 but PRECISION is not the default, assume
                   that a revised airfoil dataset is required.
04/29/88    DAS    Added spreadsheet-compatible output file.
12/01/88    DAS    Turned on spreadsheet file for MODE <= 3 now.
11/29/89  DAS/RGL  Plots for multi-section 3D cases w/ blank subtitle from
                   the initial prompt now use the case titles as subtitles.
                   'Original' suppressed from headers if 'Revised' does not
                   apply.
02/14/90    DAS    Installed OPENER in 9 places.  File names are now in
                   lower case to indulge the Unix community.
03/13/90     "     Raised MXPTS from 201 to 300.
06/28/90     "     Added the LOFT option.
06/29/90     "     Added the ROTATE option.
04/22/91     "     Indicated "current axes" for thickness/camber printout.
10/22/91     "     Replaced the ROUND option with the "nose-job" option
                   (round or sharpen).  Providing for reversing the
                   operation can mean letting through a non-rectified
                   airfoil.
10/24/91     "     Provided for full wrap-around curvature plot (parametric
                   derivatives).  Adjusted the tabulations accordingly.
                   Added the control scheme description above (adapted from
                   RDKEYS) and the geometry data description (adapted from
                   PRREAD).
01/07/95     "     Original chord and leading edge are now tabulated;
                   "normalize" mode *.crv file had mismatched X min/max.
06/13/95     "     Output of the *.ypp file is now as advertised above.
11/21/95     "     TRANSFORM mode now has an option to decamber a section.
12/19/96     "     Added SINF and four "COS" shape functions.
12/20/96     "     Extended SMOOTH option to allow y"-based implicit and/or
                   explicit smoothing as an alternative to Wagner fitting.
10/20/99     "     Fortran 90 upgrade, mainly to eliminate use of '0' for
                   carriage control.

AUTHORS:
  Leslie Collins, David Saunders, Sterling Software/NASA Ames, Mt. View, CA

ACKNOWLEDGMENTS:
  Robert Kennelly (ex-Sterling, now NASA Ames) provided the inspiration and
  many key ideas.

  The Aerodynamics Division at NASA Ames funded this software under contract
  to Sterling Software (previously known as Informatics, Inc.).

-----------------------------------------------------------------------------
Source: README, updated 2013-10-30