GenASiSBasics provides Fortran 2003 classes furnishing extensible object-oriented utilitarian functionality for large-scale physics simulations on distributed memory supercomputers. This functionality includes physical units and constants; display to the screen or standard output device; message passing; I/O to disk; and runtime parameter management and usage statistics. This revision–Version 2 of Basics–makes mostly minor additions to functionality and includes some simplifying name changes. New version program summaryProgram Title: SineWaveAdvection, SawtoothWaveAdvection, and RiemannProblem (fluid dynamics example problems illustrating GenASiSBasics); ArgonEquilibrium and ClusterFormation (molecular dynamics example problems illustrating GenASiSBasics)Program Files doi:http://dx.doi.org/10.17632/6w9ygpygmc.1Licensing provisions: GPLv3Programming language: Fortran 2003 (tested with gfortran 6.1.0, Intel Fortran 16.0.3, Cray Compiler 8.5.3)Journal reference of previous version: Computer Physics Communications, 196 (2015) 506Does the new version supersede the previous version?: YesReasons for the new version: This version makes mostly minor additions to functionality and includes some simplifying name changes.Summary of revisions: Several additions to functionality are minor. Two new singleton objects are KIND_SMALL and KIND_TINY, for smaller sized numbers than those specified by the previously available KIND_DEFAULT. The class MeasuredValueForm can now handle some more complicated cases of unit string processing. The numerical values in the CONSTANT singleton have been updated to 2016 values [3], and CONSTANT and UNIT contain a few additional members.A new class TimerForm can be used to track the wall time occupied by various segments of code. The PROGRAM_HEADER singleton now contains an array member of this new class. With calls like [Display omitted] the user can initialize their own timers; on return iMyTimer contains the index of the newly initialized timer. The calls [Display omitted] and [Display omitted] should surround the block of code to be timed. The information displayed by calling the ShowStatistics method of PROGRAM_HEADER includes data from all initialized timers, including one for overall execution time which is present by default.The code now expects to be compiled with OpenMP, typically by applying compiler flags. Strictly speaking this is only required for the PROGRAM_HEADER singleton, which queries the number of threads via a library call. In GenASiSBasics, OpenMP directives (which appear as comments as far as the Fortran 2003 standard is concerned) are only used in the Clear and Copy commands.There have been a number of name changes, mostly for simplification and consistency. These include the classes in ArrayArrays, where for example ArrayInteger_1D_Form is now simply Integer_1D_Form. Similar streamlining changes have been made to MessagePassing classes: IncomingMessageArrayRealForm is now MessageIncoming_1D_R_Form, for instance. The class VariableGroupArrayMetadata is now VariableGroup_1D_Form. The name ParametersStreamForm has been changed by one character (deletion of an s) to ParameterStreamForm. The member Selected of VariableGroupForm has been changed to iaSelected, where the prefix ia is a conventional prefix we use for an array of array indices.The interface and functionality of the SetGrid member of StructuredGridImageForm have been modified so as not to include boundary cells exterior to the computational domain, which prevented display of the computational domain in 3D plots with VisIt [4] unless a Box operator was applied. See the fluid dynamics examples for the modified usage.Finally, version 4.10 of the Silo library [2] introduced an include file named silo_f9x.inc, which the FileSystem classes of GenASiSBasics now expect to be available instead of silo.inc.Nature of problem: By way of illustrating GenASiSBasics functionality, solve example fluid dynamics and molecular dynamics problems.Solution method: For fluid dynamics examples, finite-volume. For molecular dynamics examples, leapfrog and velocity-Verlet integration.External routines/libraries: MPI [1] and Silo [2]Additional comments including Restrictions and Unusual features:The example problems named above are not ends in themselves, but serve to illustrate our object-oriented approach and the functionality available though GenASiSBasics. In addition to these more substantial examples, we provide individual unit test programs for each of the classes comprised by GenASiSBasics.GenASiSBasics is available in the CPC Program Library and also at https://github.com/GenASiS. [1]http://www.mcs.anl.gov/mpi/[2]https://wci.llnl.gov/simulation/computer-codes/silo[3]C. Patrignani et al. (Particle Data Group), Chin. Phys. C 40 (2016) 100001[4]https://wci.llnl.gov/simulation/computer-codes/visit
Read full abstract