FORTRAN Source Codes
Over the years, I have collected, modified, adapted, adopted
or created a number of software packages in FORTRAN.
You might be able to use one of these libraries, or a routine or
two from a library.
The packages are at different levels of completion. Some are
unfinished, others just sketches under development. In some
cases, the routines are inaccurate, balky, and unreliable.
Don't take anything on faith; if a routine says it computes
the Fred function, be sure you know what the Fred function is,
and what its values ought to be.
I don't mind receiving your comments, compliments, corrections
or complaints, but please be warned that
I will not do your damn homework.
For each package listed below, if you click on its name, you can see
an expanded explanation of its purpose, a list of its contents, and
copy the entire source code file, a sample calling program, or the
results of running the calling program.
Available software includes:
-
ARBY4, a reduced basis fluid
flow code;
-
ASA159, compute a random table
with given row and column sums;
-
BIVAR, construct and evaluate
an interpolating function Z(X,Y) from scattered data;
-
BLEND, 1/2/3D blending interpolation;
-
BUMP, computation of flow over a bump (RETIRED);
-
CALPAK, calendar calculations;
-
CBLAS, Complex Basic
Linear Algebra Subprograms;
-
CHANNEL, computation of variable strength channel flow (RETIRED);
-
CHRPAK, a character manipulation
library;
-
CLUSTER_ENERGY,
computes the minimal cluster energy of a set of points;
-
CODEPACK, graph codes or
"signatures";
-
COLORS, RGB color conversion;
-
COLUMN, extracts a given column
from a file;
-
COMBO, Kreher and Stinson
combinatorial routines;
-
CONVERT, converts units of measurement (RETIRED);
-
CRYSTAL, simulates the
creation of silicon crystals;
-
CRYSTAL_QED,
minimize crystallization cost parameters;
-
CVT, a code that positions a given
number of points in an arbitrary region, using probabilistic
centroidal Voronoi tesselation techniques to achieve good
coverage and separation;
-
CVT_BASIS, a code under
development, for using CVT techniques to extract a small set of
representative behaviors from a large set of solutions of a PDE;
-
CVT_BASIS_CAVITY,
500 flow velocity solutions in a driven cavity, for use by CVT_BASIS;
-
CVT_BASIS_DATA,
hundreds of data files for use by CVT_BASIS;
-
CVT_BASIS_INOUT,
500 flow velocity solutions in a cell with inflow and outflow,
for use by CVT_BASIS;
-
CVT_BASIS_TCELL,
500 flow velocity solutions in a T-cell for use by CVT_BASIS;
-
CVT_DENSE, attempt to
prescribe CVT cell sizes using a density function (experimental
code; no good results yet);
-
CVT_MAX, attempt to prescribe
CVT cell sizes (experimental code; not producing good results yet);
-
CVT_PARK, attempt to prescribe
CVT cell sizes (experimental code; not producing good results yet);
-
CVT_SIZE, attempt to prescribe
CVT cell sizes using weighted distances (experimental code; not
producing great results yet);
-
CVT_WEIGHT, my last
attempt to try to prescribe CVT cell sizes, and another failure!;
-
DBLAS, Double Precision Basic Linear
Algebra Subprograms;
-
DCDFLIB, probability CDF evaluation (RETIRED);
-
DESIGN, spherical designs for
quadrature on the sphere;
-
DIVDIF, divided difference tables;
-
DQED, double precision bounded
and constrained least squares and nonlinear equation solver;
-
DUTCH, some computational geometry
routines;
-
EISPACK, an "ancient" eigenvalue
package superseded by LAPACK;
-
ERRORS, numerical nonsense;
-
EXTRACT, extracts a module from
a FORTRAN file;
-
F90, simple FORTRAN90 examples;
-
F90SPLIT, splits FORTRAN77 or
FORTRAN90 source into individual files;
-
FEM_CODES, some simple
finite element method demonstration programs;
-
FEMOD1, 1D interactive finite
element code;
-
FEMOD2, 2D interactive finite
element code;
-
FEMPACK, simple finite element
routines;
-
FFTPACK, Fourier transforms;
-
FILUM, file utilities;
-
FIXCON, convert F77 continuation
to F90;
-
FLOW3, finite element fluid flow solver, version 3 (RETIRED);
-
FLOW4, finite element fluid flow solver, version 4 (RETIRED);
-
FLOW5, finite element fluid flow
solver, version 5;
-
FLOW6, finite element fluid flow
solver, version 6;
-
FLOW7, finite element fluid flow
solver, version 7 (under development);
-
FOOTBALL, computing football
team rankings from game scores;
-
GENE_CLUSTER,
investigate energy-minimizing clusters of genetic expression data;
-
GEOMETRY, 2D/3D geometric
calculations;
-
GEOMPACK, Voronoi diagram,
Delaunay triangulation;
-
GEOMPACK3, Voronoi diagram,
Delaunay triangulation;
-
GRAFPACK, calculations for
graphs;
-
HALTON, the Halton subrandom
sequence;
-
HELP, display a VMS help file;
-
HPF, High Performance FORTRAN examples (RETIRED);
-
INTLIB, routines
for approximate integration (quadrature) in one dimension;
-
IQPACK, interpolatory quadrature formulas (RETIRED);
-
KMEANS, routines for the
K-Means problem;
-
LAPACKS, a linear algebra
library;
-
LAU_NP, heuristics for NP problems.
-
LAUPACK, graph routines.
-
LAWSON,
Lawson-Hanson least squares routines;
-
LINPACK_BENCH,
the LINPACK benchmark;
-
LINPACKC, a complex
arithmetic linear algebra library;
-
LINPACKD, a double precision linear algebra library (RETIRED);
-
LINPACKS, a single precision
linear algebra library;
-
LINPLUS, routines the LINPACK
guys forgot to write;
-
MACHAR, dynamically compute
real and double precision machine precision constants;
-
MATALG, an interactive matrix
calculator;
-
MATH142_F00, the raw
data from the student survey for Math 142, Fall 2000;
-
MATH142_F01, the raw
data from the student survey for Math 142, Fall 2001;
-
MATMAN, a new version of MATMAN;
-
MATMUL, an interactive matrix
multiplication benchmark;
-
MINPACK, least squares
minimization;
-
MIXED, mixed language programming;
-
MLESS, centroidal Voronoi
computations;
-
MPI, message passing interface examples;
-
NINTLIB, routines
for approximate integration (quadrature) in N dimensions;
-
NMS, library for "Numerical Methods
and Software";
-
NSPCG, nonsymmetric preconditioned conjugate gradient package
(RETIRED);
-
NSWC, a general software library;
-
OPEN_MP, examples of using
OpenMP for parallel execution;
-
ORTHPOL, orthogonal polynomials for quadrature (RETIRED);
-
PACKER, manipulate data in
multidimensional arrays;
-
PARANOIA, checks the
properties of floating point arithmetic;
-
PITCON, continuation method for
nonlinear systems;
-
POLPAK, recursively defined
polynomials;
-
PRAXIS, Richard Brent's
code for minimizing a scalar function of several variables
without using derivatives;
-
PROB, probability density functions;
-
QFEPDE, a simple finite
element program;
-
QSHEP2D, interpolate scattered
data in 2D;
-
QSHEP3D, interpolate scattered
data in 3D;
-
QUADPACK, routines
for approximate integration (quadrature) in one dimension;
-
QUADRULE, rules for
approximate integration (quadrature) in one dimension;
-
QUOTE, print a random quote from
a file;
-
RANDOM, random numbers (RETIRED);
-
RANDOM_DATA, generation
of sets of random points for test data;
-
RAW_IO, a few routines for
manipulating raw binary data with FORTRAN;
-
RBF, radial basis function method.
includes an interesting run-time use of GNUPLOT;
-
REFINE, extend a FLOW6 solution to a refined grid;
-
REGION, groups contiguous voxels
into regions;
-
REGRESSION, software and
tests for linear regression;
-
REJOIN, "rejoin" data that was
divvied up evenly over a rectangular array of processors;
-
RKF45, Runge-Kutta-Fehlberg
ODE solver;
-
ROOT, interactive root finder;
-
SBLAS, Single Precision Basic
Linear Algebra Subprograms;
-
SCALAPACK, parallel linear algebra routines (RETIRED);
-
SCVT, a code that positions a given
number of points on a sphere in 3D, using probabilistic
centroidal Voronoi tesselation techniques to achieve good
coverage and separation;
-
SEQUENCE,
guesses missing terms in a numerical sequence;
-
SLAP, sparse linear algebra package (RETIRED);
-
SLATEC, a large software library (RETIRED, TOO LARGE);
-
SPAETH, techniques for cluster
analysis of data (NOT DEBUGGED);
-
SPAETH2, more techniques
for cluster analysis of data (UNDER DEVELOPMENT);
-
SPARSPAK, an old version of the Waterloo sparse matrix package
(RETIRED);
-
SPLINE, interpolation and
approximation via splines;
-
SPLPAK, DeBoor's cubic spline routines (RETIRED);
-
SQED, single precision bounded and constrained least squares and
nonlinear equation solver (RETIRED);
-
STEAM, routines based on
the NBS steam table package;
-
STRIPACK, Renka's ACM
algorithm 772, for Delaunay triangulation and Voronoi diagrams
on a sphere;
-
STRIPPER, file modification;
-
STROUD, routines for
numerical integration (quadrature) over N-dimensional regions,
including spheres, toruses and other shapes;
-
SUBPAK, a utility library;
-
SUBSET, combinatorial routines;
-
TEMPLATES, templates for iterative linear solvers (RETIRED);
-
TESTAPPROX, test
functions for approximation and interpolation.
-
TESTCON, test functions for
continuation.
-
TESTINT, test problems
for approximate integration (quadrature) in one dimension.
-
TESTMAT, test matrices.
-
TESTOPT, test problems for
minimization of a scalar function of a scalar variable.
-
TESTNINT, test problems
for approximate integration (quadrature) in multiple dimensions.
-
TESTNLS, nonlinear least
squares test problems.
-
TESTNONLIN, test problems
for the solution of systems of nonlinear equations.
-
TESTODE, initial value (ODE)
test problems.
-
TESTOPT, test problems for
minimization of a scalar function of several variables.
-
TESTZERO, test problems
for the solution of a single nonlinear equation in one variable.
-
TIMER, various real time and CPU
time tests.
-
TO_F90, convert FORTRAN source to FORTRAN90 format (RETIRED).
-
TOEPLITZ, Toeplitz matrix
system solvers.
-
TOMS611S, unconstrained
minimization, single precision version;
-
TOMS611D, unconstrained
minimization, double precision version;
-
TRIPACK, Renka's ACM algorithm
751, for constrained Delaunay triangulation in the plane;
-
UPJODE, an interactive ODE solver;
-
WORDSNAKE, seeks a word
snake with a high overlap score.
-
ZOOMIN, a variety of scalar
zero finders.
Back to the home page.
Last revised on 20 June 2002.