GrACE - Grid Adaptive Computational Engine Version 0.1, 01/21/99 Manish Parashar parashar@caip.rutgers.edu GrACE provides a set of C++ class libraries to support parallel adaptive mesh refinement and parallel mutligrid. DAGH -> GrACE ============= To use DAGH application - Edit application makefile to change DAGH_HOME environment variable to GrACE_HOME. Other changes include 1) DAGHCluster[1,2,3]d -> GrACECluster[1,2,3]d 2) DAGH.h -> GrACE.h 3) DAGHIO.h -> GrACEIO.h 4) Installation ============ <<<<<<<<<<< May 21, '04 changes: wta Locations of MPI and HDF4 are now read in from MakeIncl.Meshes. This holds true only if GrACE is being compiled along with GrACEComponent. If GrACE is to be compiled as a stand alone library -- ignore this note. run configure in Meshes and do make in GrACEComponent. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> GrACE depends only on MPI and needs to know where this resides on the machine it is being installed on. Installation consists of 3 steps: (1) Selecting the machine specific makefile This is done using the one of the following commands: setenv SYSTEM where arch is one of linux (single machine only) beowulf (with MPI) crayt3e, crayt3d sp2, rs6000+MPI, rs6000 o2000, sgi64, sgi (N32) sun, e10k Select this using configure. Configure works as e.g. configure beowulf (2) Edit arch_makes/make.defn. This file consists of all the definition specific to the architecture. In particular the locations of MPI libraries must be appropriately set. Also additional compiler flags (defined below) can be added to the XTRAFLAGS line This also include path for related software packages you may use. These include HDF (hdf.ncsa.uiuc.edu) IEEEIO (bach.ncsa.uiuc.edu) RNPL (wwwrel.ph.utexas.edu) ParserSrc (A generic parameter parser) TCP++ (A C++ socket library) Alternatively, you can set the MPI and HDF home directories using configure. E.g. configure beowulf /usr/local/mpich-1.2.4 /home/jaray/HDF. configure beowulf, by itself, will default to configure beowulf /usr/local/mpich ../../ (3) Compilation: - to make the main GrACE library make grace - to make the main GrACE IO support library with HDF and RNPL make graceio - to make both GrACE and GrACE IO libraries make (you could also do make SYSTEM= ...) Compiling Applications ====================== In any GrACE application makefile, the variable GrACE_HOME points to the installation of GrACE, and the SYSTEM environment variable is used to determine which library to use. A sample makefile (Makefile.App) is present in the utilities directory. GrACE IO ======= GrACE IO support enables to user to allocate specialised IO server processors that process IO requests. User defined routines are called to actually perform the IO. Current support includes IEEIO & HDF based IO using John Shalf's (jshalf@ncsa.uiuc.edu) IO system and using RNPL (M. Choptuik et al) IO routines. Compile Flags ============= // Fortran calling convention (default is as is) -DUPPERCASE // All uppercase -DLOWERCASE // All lowercase -DUNDERSCORE // Trailing undescore // Pre-defined interfaces based on machine type -DRS6000 // IBM RS 6000 Workstations -DSPX // IBM SP1 and SP2 -DnCUBE2 // nCUBE -DCRAYC90 // Cray C90 -DCRAYT3D // Cray T3D -DCRAYT3E // Cray T3E -DLINUX // Linux box with gnu compilers -DLINUX_ABSOFT // Linux box with absoft fortran compiler -DBEOWULF // Beowulf box with gnu compilers -DBEOWULF_ABSOFT // Beowulf with Absoft fortran compiler -DWIN32 // Windows with cygwin -DWINNT_DEC // Windows with DEC Fortran (Visual Studio) -DSGI // SGI (32 or 64) -DE10K // SUN E10K // Compile without MPI -DACE_NO_MPI // Compile with out MPI // Handling Templates -DWant_c_files // Use this to include the template definations // in the header file. This is true for all system // except the IBM RS6K (atleast the last version I // used) // Enable vector GridFunctions -DACEVectorGridFunction // GridData/GridFuntion -DACENOCOPYGD // When using the copy constructor to create // a GridFunction/GridData object don't copy // the actual data (copy only the specifications) // Flag boundaries (adaptive) that only partially abutt // a sister grid. -DGDBNOHYBRIDBNDRY // For global refinements (still being tested) -DACE_GLOBAL_CLUSTER // Do clustering globally (across all processors) -DACE_GLOBAL_REFINE // Do clustering locally by refine globally. // Dump bounding box information after each recompose -DACE_WRITEBOXES // IO Related -DIO_NCSAIO // Use NCSA IO library ? -DIO_OLDNCSA // Use Old NCSA IO library ? -DIO_IEEEIO // Use IEEEIO/FlexIO ? -DHDF4 // We have hdf4. -DIO_RNPLIO // Use RNPL IO interface -DDEBUG_IO // Print IO related debug messages // For Interaction and Steering with DISCOVER -DDICE // Compile interaction/steering code // Message Passing -DMPICH // Using MPICH MPI // Other compiler related definitions _VCPP // Using Visual C++ __GNUC__ // Using gcc (automatically defined) __GNUG__ // Using g++ (automatically defined) __STDC__ // Std. C (automatically defined) __cplusplus // Using c++ (automatically defiend) _LANGUAGE_C_PLUS_PLUS // Using c++ ANSI // Using ANSI C/C++