B.1. Structure of the Files

The POOMA Toolkit files are divided into directories according to their purposes. See Table B-1. In that table, directories and files are categorized:

use

introductions to the toolkit, its installation, and its use

user code

source code for POOMA programs. POOMA users can read these programs as examples how to use the toolkit.

documentation

user-level explanations of how to use the toolkit's features

source code

C++ files implementing the toolkit. In their programs, users may need to refer to header files. Otherwise, these files are mainly read by developers. Source code subdirectories are described in Table B-2.

development

used by POOMA developers when writing and preparing toolkit files

installation

used when converting the toolkit source code into an executable library. This process can involve architecture- and machine-dependent code.

The src directory, containing source code, contains many files so it is described in the separate table Table B-2. CVS subdirectories are scattered throughout the source code. The Concurrent Versions System is a version control system. The subdirectories have files storing the CVS state. Ignore these subdirectories.

Table B-1. Toolkit Directories and Files

directory or filetypecontents
benchmarksuser codesource code for programs used to test the toolkit's speed
bindevelopmentscripts useful for creating releases
configinstallationfiles used to configure the library
config/archinstallationmachine- and compiler-specific configuration files
config/Sharedinstallationmachine-independent configuration and make files
configureinstallationscript used by user to configure the library
docsdocumentationdocumentation describing using the toolkit
docs/manualdocumentationdocumentation describing using the R2.4 toolkit
examplesuser codesource code for programs used to illustrate using the toolkit
idedevelopmentfiles to support using integrated development environments to develop POOMA
libinstallationdirectory where POOMA library is placed
LICENSEusedescription of rules for using the POOMA Toolkit
makefileinstallationmakefile rules to create the toolkit
READMEuserelease notes for various versions
scriptsinstallationscripts to install POOMA and related libraries
srcsource codetoolkit source code. See Table B-2.
Not all directories and files are listed.  

Table B-2. Source Code Directories (Within src)

src subdirectorycontents
archfiles necessary for using specific architectures or compilers. Some replace missing header files. Others modify POOMA files.
Arraydeclaration and implementation of the Array container class
Array/testsprograms testing the Array code and features
CoordinateSystemsCartesian, cylindrical, and spherical coordinate system classes useful with meshes
DomainDomain declarations and implementations
Domain/testsprograms testing the Domain code and features
DynamicArraydeclaration and implementation of the DynamicArray container class
DynamicArray/testsprograms testing the DynamicArray code and features
Enginedeclarations and implementations of the Engine classes
Engine/testsprograms testing the Engine code and features
Evaluatorclasses evaluating expressions quickly. For example, one Evaluator evaluates data-parallel expressions.
Evaluator/testsprograms testing the Evaluator code
Fielddeclaration and implementation of the Field container class
Field/DiffOpsimplementation of Field stencils
Field/Meshdeclarations and implementations of meshes, which specify a field's spatial extent
Field/Relationsdeclarations and implementations of relations among Fields, supporting automatic computation of field values
Field/testsprograms testing the Field code and features
FileTemplatesfiles illustrating the usual structure of source code files
Functionsunsupported files currently under development
IOdeclarations and implementation of input-output classes to store containers in files
IO/testsprograms testing the input-output (IO) code
Layoutdeclarations and implementations of the Layout classes, which specify the mappings between processors and container values
Layout/testsprograms testing the Layout code and features
Particlesdeclares and implements the Particles class, which is not currently supported
Particles/testsprograms testing the unsupported Particles class code and features
Partitiondeclares and implements partitions, which specify how a container's domain is split into patches for distributed computation
Partition/testsprograms testing partition code and features
PETEimplements the PETE framework
Poomaheader files declaring all user-level classes
Pooma/PETEinput files integrating POOMA containers into the PETE framework for fast data-parallel expressions
Pooma/testsprograms testing simple POOMA programs
Threadsclasses integrating Smarts threads into POOMA
Tinydeclarations and implementations of TinyMatrix, Tensor, and Vector
Tiny/testsprograms testing TinyMatrix, Tensor, and Vector classes
Tulipinterface between POOMA and the Cheetah messaging library
Tulip/testsprograms testing the interface between POOMA and the Cheetah messaging library
Utilitiesdeclarations and implementations of classes used throughout the toolkit
Utilities/testsprograms testing utility classes
Not all directories and files are listed. 

A filename's suffix indicates its purpose. See Table B-3. Implementations of template classes are usually stored in header files so the C++ compiler can instantiate the classes. Sometimes some of the implementation of longer functions is stored in .cc files, which are included by the preprocessor in the corresponding header files. When C++ compilers and linkers fully support template class compilation, the inclusion will no longer be necessary.

Table B-3. Filename Suffixes

filename suffixmeaning
Source Code Files 
.cC-language file, usually containing an entire C program
.cppC++-language file, frequently containing an entire C++ POOMA program. Sometimes these illustrate using POOMA or test the source code. Others contain long definitions of template class functions.
.cmpl.cppC++ class implementation file to be compiled and included in the POOMA library. Only non-templated classes occur in these files.
.hC++ header file. Some are included directly in user programs. Others declare and implement classes, particularly templated classes. A few are C header files.
.inPETE input file
.inst.cpppreinstantiations of templated C++ classes.
Compilation and Execution Files 
.aPOOMA library
.mkfile containing Make rules, typically included within another makefile
.infolog file created when compiling POOMA source
Documentation Files 
.dslDSSSL stylesheet used to convert documentation in DocBook format into other formats
.gifGraphics Interchange Format file containing a figure suitable for display via the WWW
.htmlHTML documentation file suitable for display via the WWW
.mpMetaPost source code for manual illustrations.
.pdfPortable Document Format (PDF) file, usually containing toolkit documentation
.pngPortable Network Graphics file suitable for display via the WWW
.xmleXtended Markup Language (XML) file, usually containing toolkit documentation