Computational Toolkit
What is the Computational Toolkit?
Cactus is architectured to consist of modules (we call them
thorns) which plug into a core code (we call it
the flesh) which contains the APIs and infrastructure to
glue the thorns together.
The flesh on it's own doesn't actually do anything.
The thorns contain all the real activity, and can usually
be divided into application thorns (typically written
by scientists, solving problems in physics, astrophysics,
engineering, etc) and infrastructure thorns
(typically written by computational scientists, providing
IO, interpolations, drivers, elliptic solvers etc).
We group thorns together into arrangements, depending
on their functionality and applicability.
The Cactus Computational Toolkit is a set of
arrangements providing general computational
infrastructure for many different applications. This page
describes the different functionality provided by
different thorns in the Computational Toolkit, for details
of how to use the Toolkit, see the Documentation links.
Note that all the thorns in the Toolkit can be used for
parallel, or single processor, applications.
Finding Out More
- See the documentation in each thorn, either on these
web pages, or by typing
gmake ThornGuide in your Cactus installation.
- Browse the configuration files for thorn configuration
files
- We know that the documentation is patchy in
many places, please let us know
where it is lacking and we can give you the information
you need and hopefully improve the docs.
Drivers
A driver thorn is the most important thorn to have ... you need
one if you are using any grid variables in Cactus, since it
is responsible for all the memory management and, if you're
working on a parallel machine, for communications.
- Unigrid Parallel Driver
- CactusPUGH/PUGH
Boundary Conditions
In general, the boundary conditions listed can be applied in
1, 2 or 3-dimensional spacetimes to any of the supported
datatypes and can be individually applied in any direction.
- Periodic boundary conditions
- CactusPUGH/PUGH
- Symmetry boundary conditions
- CactusBase/CartGrid3D
- Scalar boundary conditions
- CactusBase/Boundary
- Radiation boundary conditions
- CactusBase/Boundary
- Flat boundary conditions
- CactusBase/Boundary
- Robin boundary conditions
- CactusBase/Boundary
- Copy boundary conditions
- CactusBase/Boundary
Coordinate Systems
So far we only have a general thorn for 3D Cartesian coordinates,
mainly because we're trying to think of a clever way to
include many different coordinate systems with a simple
choice of parameters.
- Cartesian coordinates
- CactusBase/CartGrid3D
- Time coordinate
- CactusBase/Time
- Adaptive Courant timestep
- CactusBase/Time
Output Methods
Output methods and data formats are also described on our
Visualization page. In general
output methods can be used in 1, 2 or 3-dimensions, and are
extremely customizable through parameter choices.
- Hyperslabbing (for finding data to output)
- CactusPUGH/PUGHSlab
- ASCII output
- CactusBase/IOASCII
- ASCII output of scalars (e.g. max, min)
- CactusBase/IOBasic
- Constant value isosurfaces
- CactusPUGHIO/IsoSurfacer
- HDF5 binary format
- CactusPUGHIO/IOHDF5
- FlexIO binary format
- CactusPUGHIO/IOFlexIO
- Jpegs
- CactusIO/IOJpeg
- Checkpointing
- CactusPUGHIO/IOHDF5, CactusPUGHIO/IOFlexIO
Interpolators and Reduction Operators
The interpolators and reduction operators described can
be applied in 1, 2 or 3-directions, on all supported data types.
- First, second or third order interpolation
- CactusPUGH/PUGHInterp
- Maximum and Minimum
- CactusPUGH/PUGHReduce
- Sum
- CactusPUGH/PUGHReduce
- Norms
- CactusPUGH/PUGHReduce
Elliptic Solvers
- SOR
- CactusElliptic/EllSOR
- Iterative (PETSc)
- CactusElliptic/EllPETSc
Utilities
- Simulation web server
- CactusConnect/HTTPD, CactusConnect/HTTPDExtra
- Tool for locating NaNs, infinities, and uninitialised memory
- CactusUtils/NaNChecker
|