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 / progtools
Name Modified Size InfoDownloads / Week
Parent folder
README 2023-05-27 6.4 kB
add_delimiters.f90 2023-05-18 4.6 kB
prmodules.tar.gz 2022-05-10 81.9 kB
get_coordinates.f90 2017-02-11 4.0 kB
build 2014-01-29 137 Bytes
Totals: 5 Items   97.1 kB 0
The progtools collection contains mostly character string manipulation
utilities prompted by keyword-type input schemes.  Prompting utility
READER also enables defaulting of scalar control variables by handling
<CR> (carriage return) as a valid response, along with ^D (EOF = quit)
and retries for bad inputs.

FORTRAN 77 introduced user-friendly character string handling, so most
of these early utilities remain relevant for modern applications.

Note that list-directed reads often suffice.  However,
                  read (lun, *, iostat=ios)
ignores <CR> or EOR and waits for a non-null input (possibly from the
keyboard, with no indication of what has happened).  Also, any '/'
character behaves as end-of-information, so list-directed reads cannot be
used for entering Unix-type file names with preceding paths (subdirectory
names).  See NOQUOTES.

Namelist reads can also be extremely convenient for easy addition of
new control inputs and setting of defaults.  Namelist inputs were once
restricted to starting at or beyond column 2, but this peculiarity no
longer seems to be an issue.  Consider using namelist I/O before
implementing more elaborate input schemes.

A namelist-like scheme (internal subroutine read_constraints within fun.f90
in the NPOPT_DRIVER directory) may also be of interest for reading such
inputs as linear and nonlinear constraints by name.

On the other hand, how would one handle entry of an indefinite list of
integers at a prompt?  Not with a namelist read.  See RDLIST and RDLISTC
for solutions, and also the DECODE_ILIST/DECODE_RLIST pair.

Use of one of the SCAN routines in a loop that finds one token per iteration
until end of buffer is most capable of isolating tokens in the buffer. 

add_delimiters.f90      Ensures all tokens are enclosed before using SCAN4
alpha.f          Flag a string as alphanumeric if it appears not a number
check_existence.f90     Check for a file by name + diagnostic if missing
cleantext.f      Remove likely separators; separate tokens by one blank
column_widths.f90       Use format string (...) to assist right-justifying
count_records.f90       Count # lines (formatted) or # records (unformatted)
countr.f         Count # tokens in first significant line; see TOKEN_COUNT
decode_ilist.f90 Decodes an indefinite list of integers in a string
decode_number.f90       Extracts an integer|real|both|neither from a string
decode_rlist.f90 Decodes an indefinite list of reals in a string
digit.f90        T means the given single character is in 0-9
echo.f           Copy input file to printable output & to a scratch copy
extend_name.f90  Construct composite [HDF5 group?] name; see NUMBERED_NAME
getargs.f90      Return command line command name & arguments as an array
get_coordinates.f90  Extract ndim "coordinates" from a file name
getline.f        Read 1 line (may be empty); suppress trailing comment|' 's
index_or_not.f90 Distinguish a list of indices from a list of coordinates
int_to_char.f90  Convert an integer to a left-justified character string
locase.f         Converse of UPCASE; return input string as all lowercase
lookup.f         Dictionary look-up with option for abbreviations|synonyms
lookup2.f        Simpler variant of LOOKUP (exact matches only)
lstfil.f         Variant of ECHO without the extra scratch file copy
mpi_dummy.f      Used by CFD_IO_PACKAGE (which is now deprecated)
ndigits.f90      Count the # digits in an integer; e.g., 1001 & -999 have 4
noblanks.f90     Ensures single-token column headers: T (K) or T [K] -> T,K
noquotes.f90     Left-justify given string in place; suppress any '|" chars
number.f         Flag a string as a likely integer|real number, or not
numbered_name.f90     Convert string & integer to numbered name: 'x3'|'x 3'
numbered_name_2d.f90  Form of NUMBERED_NAME for pair of prefixes & integers
opener.f         Prompt for & open a file; retry if necessary
pairs.f          Parse a string into arrays of keyword/value string pairs
parsenam.f       Isolate a file name and extension (if any); Unix or VMS
qpldat.f         QPLFRM & QPLCRV entry points write QPLOTable data
rdlist.f         Prompt for & read a [compact?] list of n integers; n >= 0
rdlistc.f90      Variant of RDLIST for string tokens [on 1 line | 2+ lines]
rdqpl.f          Early read-a-curve utility still used by program PROFILE
rdreals.f        Read an indefinite number of real values; optional prompt
rdtuples.f       [Prompt?]; read an indefinite list of real pairs | triples
rdxyz.f          Read 1|2|3 columns from multiple columns of real data
rdxyz2.f         Variant of rdxyz.f with added argument (comment character)
readcols.f       Read 2 columns from many; indirection/keywords handled
reader.f         Prompting utility: scalar of any type; handle <CR> & ^D
read_to_line_feed.f90 Read ACCESS='stream' file one char. at a time to <LF>
scan2.f          Look for the next token in a string; user-supplied delims.
scan3.f          Backward-search variant of SCAN2: find the last token
scan4.f          SCAN2 variant: parse '*'|"*"|(*)|[*]|{*}; * may have ' 's
scan_column.f    As might be needed for dynamic alloc. of a character array
scannr.f         Look for the next token in a string; fixed delimiter list
second.f         Early CPU time utility; use intrinsic cpu_time now
select.f         Prompt; optional menu; accept choice by name or number
string_justify.f90  Module for left|right-justifying character data
stripper.f       Scan a string for enclosing delims.; return left-shifted
termin.f         Append a marker character to the end of a string
toggle.f         Display and switch on/off options
tokens.f         Parse a string into uppercase tokens; fixed delimiter list
token2.f         Variant of TOKENS with user-supplied delimiter list
token2l.f        Variant of TOKEN2 that does NOT convert to uppercase
token4.f90       Variant of TOKEN2 for tokens of the type handled by SCAN4
token_count.f90  Count # tokens in a string (no I/O, unlike COUNTR)
upcase.f         Converse of LOCASE; return input string as all uppercase
writer.f         Error-message analogue of READER, but its multiple entry
                 points are now deprecated

06/09/2021       Added digit.f90 and column_widths.f90 as part of right-
                 justification of column headers.
05/17/2023       Added add_delimiters as part of handling a mix of double
                 quoted variable names with unenclosed names in tecplot_io.
Source: README, updated 2023-05-27