modules library reviewer: John Mandrekas, 19-May-2000
John Mandrekas, Ph.D.
Senior Research Scientist
Georgia Institute of Technology
Fusion Research Center
ESM Bldg. 0225
Atlanta, GA 30332-0225
I suggest that this library is approved by the committee.
The PortLib library contains a number of useful routines and
perform certain system tasks. Some of these tasks are very common
CPU time) and can be found in almost every code. While most Fortran
provide access to such routines, the interface is not standard
developer to re-write part of his/her code and use conditional
time the code is ported into a new environment.
The PortLib library provides a standardized interface to these
simplifying the porting of codes to new platforms.
I successfully built, tested (using the inlcuded porttest program)
the library on systems running Solaris 7 and HP-UX. I also linked
some of my
codes with the PortLib library and it worked fine. In addition, I
programs to test some of the less common routines included in
portlib, and they
worked as expected.
Standard: Provide source code for each physics module or code
Standard: Provide script to compile and link (e.g., Makefile). The
make at least some provision for portability to multiple brands of
minimum). Provide clear documentation (possible in the README file)
on how to
use the script or Makefile.
Installation script exists and works on various UNIX platforms. Most
platforms (including Linux) are included. Clear documentation
is included in
the README file. The GNU version of make (gmake) should be used.
Standard: Provide a README file giving (a) the name of the module and
authors, (b) the location and form of general module documentation,
information (or pointer to more detailed documentation) enabling a
user to build
binaries from the source code.
A README file exists with detailed information about the library. In
the source code of most of the routines includes useful comments.
Standard: Provide documentation about how the module should be used,
whether the module needs to be initialized or used sequentially.
usability issues, such as the existence of state information in
COMMON or other
static memory, which persists between calls, must be described.
Instructions about how this library should be linked are included in
file. Also, a test program (porttest) exists which tests various
routines in the
Standard: Eliminate graphics calls embedded in physics modules.
Standard: The source code files (e.g. *.f, *.c, or *.cpp files)
submitted rather than requiring extraction from another file.
Standard: Authors may upgrade their modules with approval of the
chairperson of the NTCC modules committee. If the upgrade is
chairperson can require that the upgrade be subject to a full
Goal: Multi-platform portability (code should run on different
The library can be used in multiple brands of UNIX and Linux.
Goal: Provide error checking (but not stops).
Some error checking exists.
Goal: Portability (code should run in different environments, e.g.,
Only UNIX (including LINUX) is confirmed.
Goal: Minimize external dependencies that cost money (i.e., avoid
expensive proprietary licenses).
Only gmake is required, which is freely available. The FPRERPOC
have already been approved and are included in the NTCC site) are
and are included in the distribution. These scripts
require PERL, which is also
Goal: Supply warnings in the documentation when the above goal has
not been met.
Goal: Arrays should be dynamically allocated.
OK in the f90 modules.
Standard: The characteristics of I/O should be clearly documented
implementation of I/O unit numbers, if any).
Goal: Avoid using hard-wired I/O unit numbers. Allow informational
output to be
switched on or off. Provide a method for rerouting warning or error
output to a user specified file or I/O unit number.
Standard: Provide name of contact person for support.
Standard: Provide date of last revision.
Included in the README file
Standard: Provide at least comments describing module or code,
publications (if any), and range of validity.
Standard: Specify the precision of floating point calculations.
Standard: Provide the index of input-output variables for each module
types of variable, dimension, units).
Standard: List dependencies - names of external routines called.
OK where applicable.
Standard: Provide statement of known bugs.
No known bugs are listed
Goal: Index of modules, routines, variables.
Goal: Publication of code or module in journal (such as Computer
Goal: Online hyper-text reference documentation.
Goal: Interactive online help menus.
None available. A brief man page is available. Useful comments exist
source code of most routines and functions.
Goal: Provide interface routines to data.
Goal: Use self-describing data files (sunc as NetCDF)
Goal: Use public domain, portable, available and well-documented data
Goal: Establish standards for variable names, units, dimensions,
variables and grid descriptions as they appear in the module