Reviewed Nov. 1998 by D. McCune (PPPL). OHE_model appears to be simple and easy to use. Comments in the .tex file indicate that the model's predictive power for tokamak plasma simulations is slight, but the simplicity (and speed) of the model may well provide a useful tool for benchmarking predictive transport code frameworks. In the reviewer's opinion, the code satisfies the standards necessary for acceptance into the NTCC modules library. Committee approval is recommended. ============================================================================= ** GENERAL STANDARDS ** ============================================================================= Standard: Provide source code for each physics module or code. - ----------------------------------------------------------------------------- The source code is in the tar file. ============================================================================= Standard: Provide test case(s) with driver program(s) with input and output data and their documentation. - ----------------------------------------------------------------------------- A test driver, input dataset, and reference output dataset, are provided in the tar file. ============================================================================= Standard: Provide script to compile and link (e.g., makefile). The script should make at least some provision for portability to multiple brands of UNIX (at minimum). Provide clear documentation (possibly in the README file) on how to use the script or makefile. - ----------------------------------------------------------------------------- The makefile provided supports building of single precision or double precision binaries on the following brands of unix workstations: DEC, IBM, SGI, SUN. Adding another supported workstation would not be difficult. The makefile relies on the externally defined environment variable CPU. One sets this environment variable to DEC, IBM, SGI or SOL (the latter for SUN/Solaris to get double precision versions of the code. To get a single precision version built, define CPU to be DEC_R4, IBM_R4, SGI_R4, or SOL_R4. The authors have not tested the code in single precision, but in the reviewer's judgement single precision would probably work just fine. ============================================================================= Standard: Provide a README file giving (a) the name of the module and its authors, (b) the location and form of general module documentation, and (c) information (or pointer to more detailed documentation) enabling a user to build binaries from the source code. - ----------------------------------------------------------------------------- A very clear README file, included in the tar file and accessible via the NTCC website as well, provides all the necessary information. ============================================================================= Standard: Provide documentation about how the module should be used, for example, whether the module needs to be initialized or used sequentially. Important usability issues, such as the existence of state information in COMMON or other static memory, which persists between calls, must be described. - ----------------------------------------------------------------------------- The .tex file provided describes this adequately. ============================================================================= Standard: Eliminate graphics calls embedded in physics modules. - ----------------------------------------------------------------------------- There are no graphics calls. ============================================================================= Standard: The source code files (e.g. *.f, *.c, or *.cpp files) should be submitted rather than requiring extraction from another file. - ----------------------------------------------------------------------------- A separate source file is provided, although the makefile treats the .tex file as the real source, from which the fortran is extracted as a preliminary step to compilation. All this is fine. ============================================================================= Standard: Authors may upgrade their modules with approval of the current chairperson of the NTCC modules committee. If the upgrade is extensive, the chairperson can require that the upgrade be subject to a full review. - ----------------------------------------------------------------------------- Upgrades to the makefile and documentation were made in response to the reviewer's comments on earlier drafts. ============================================================================= Goal: Multi-platform portability (code should run on different computers). - ----------------------------------------------------------------------------- DEC, IBM, SGI, SUN as described above. ============================================================================= Goal: Provide error checking (but not stops). - ----------------------------------------------------------------------------- Error checking on range of input variables is provided. ============================================================================= Goal: Portability (code should run in different environments, e.g. different operating systems). - ----------------------------------------------------------------------------- UNIX only at this point. ============================================================================= Goal: Minimize external dependencies that cost money (i.e. avoid using expensive proprietary licenses). - ----------------------------------------------------------------------------- No such dependencies. ============================================================================= Standard: Supply warnings in the documentation when the above goal has not been met. - ----------------------------------------------------------------------------- N.A. ============================================================================= Goal: Arrays should be dynamically allocated. - ----------------------------------------------------------------------------- no arrays! ============================================================================= Standard: The characteristics of I/O should be clearly documented (i.e. the implementation of I/O unit numbers, if any). - ----------------------------------------------------------------------------- no i/o! ============================================================================= 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 message output to a user specified file or I/O unit number. - ----------------------------------------------------------------------------- N.A. ============================================================================= ============================================================================= ** DOCUMENTATION STANDARDS ** ============================================================================= Standard: Provide name of contact person for support. - ----------------------------------------------------------------------------- in the README. ============================================================================= Standard: Provide date of last revision. - ----------------------------------------------------------------------------- Can be seen by the date of the .tar file. ============================================================================= Standard: Provide at least comments describing module or code, citations to publications (if any), and range of validity. - ----------------------------------------------------------------------------- .tex file discussion is adequate. ============================================================================= Standard: Specify the precision of floating point calculations. - ----------------------------------------------------------------------------- single or double precision is available, authors have done serious testing with double precision only. ============================================================================= Standard: Provide the index of input-output variables for each module (include type of variable, dimension, units). - ----------------------------------------------------------------------------- this is in the comments of the source (and in the .tex file). ============================================================================= Standard: List dependencies -- names of external routines called. - ----------------------------------------------------------------------------- no external routines are called. ============================================================================= Standard: Provide statement of known bugs. - ----------------------------------------------------------------------------- N.A. ============================================================================= Goal: Index of modules, routines, variables. - ----------------------------------------------------------------------------- there is only one subroutine. ============================================================================= Goal: Publication of code or module in journal (such as Computer Physics Communications). - ----------------------------------------------------------------------------- OK: see .tex file. ============================================================================= Goal: Online hyper-text reference documentation. - ----------------------------------------------------------------------------- not provided as a separate entity, but facilities available through the NTCC web site should be sufficient. ============================================================================= Goal: Interactive online help menus. - ----------------------------------------------------------------------------- not done, not really needed. ============================================================================= ============================================================================= **DATA STANDARDS** ============================================================================= ============================================================================= Goal: Provide interface routines to data. - ----------------------------------------------------------------------------- N.A. ============================================================================= Goal: Use self-describing data files (such as NetCDF). - ----------------------------------------------------------------------------- N.A. ============================================================================= Goal: Use public domain, portable, available and well-documented data file formats. - ----------------------------------------------------------------------------- N.A. ============================================================================= Goal: Establish standards for variable names, units, dimensions independent variables and grid descriptions as they appear in the module interfaces. - ----------------------------------------------------------------------------- dimensionless input quantities use the letter "z" in the first letter of their names. =============================================================================