## Overview of Thorn README files

Note: The maintainer of all thorns is the Cactus team and the licence of all thorns is LGPL.

### BetaThorns

Thorn | Author(s) | Purpose |
---|---|---|

Cartoon2D | Sai Iyer Denis Pollney Thomas Radke David Rideout |
Implements a "cartoon" axisymmetric evolution according to the method described in gr-qc/9908012. The original idea for 'Cartoon2D' was due to Steve Brandt. |

HTTPD | Tom Goodale |
This is a prototype C version of a web server thorn. |

HTTPDExtra | unknown |
not documented |

IOASCIIStream | unknown |
not documented |

### CactusBase

Thorn | Author(s) | Purpose |
---|---|---|

Boundary | Gabrielle Allen Gerd Lanfermann Miguel Alcubierre David Rideout |
This thorn defines a generic interface for boundary conditions, which allows, among other things, symmetry boundary conditions associated with the grid to be applied without other thorns having knowledge of them. |

CartGrid3D | Gabrielle Allen Gerd Lanfermann Joan Masso |
This thorn sets up a Cartesian grid, for a given domain. It also provides a method for registering symmetries of Grid Functions across the grid axes, and a call for applying symmetry boundary conditions. |

CoordBase | Cactus team |
Provides generic handling of coordinates for grid variables. |

IOASCII | Gabrielle Allen Tom Goodale Thomas Radke |
This thorn does 1D, 2D, and 3D output of 3D variables in ASCII format. |

IOBasic | Gabrielle Allen Thomas Radke |
This thorn provides two I/O methods "Info" and "Scalar" which output grid variables as scalars as a function on time. |

IOUtil | Gabrielle Allen Tom Goodale Thomas Radke |
This thorn is the flesh for IO - it always needs to be activated if you want to do some IO in Cactus. |

InitBase | Erik Schnetter |
Thorn InitBase specifis how initial data are to be set up. It does not set up any initial data by itself, nor does it contain any routines which are to be called. It is merely a convenient repository remembering how initial data are to be set up, so that other thorns can check their actions against this thorn. |

LocalInterp | Thomas Radke Jonathan Thornburg Erik Schnetter |
This thorn does processor-local interpolation of N-dimensional data arrays. In general there may be many input arrays (all defined on the same uniform Cartesian grid) all being interpolated to the same set of interpolation points. |

LocalReduce | Ravi Paruchuri Tom Goodale Yaakoub El Khamra |
Local array reduction implementation, using the new local reduction API. New features added, please refer to the thorn documentation for details and to TestLocalReduce thorn for examples of usage. |

MoL | Ian Hawke |
This thorn provides generic time integrators. This allows clean coupling when multiple thorns wish to integrate at the same time. It also means a physics thorn doesn't have to rewrite its own time integrator. This version is designed to work with Mesh Refinement codes as well as unigrid. |

SymBase | Erik Schnetter |
Provide generic handling of symmetries for grids and grid arrays. |

Time | Gabrielle Allen |
Thorn Time sets the timestep for the simulation by either |

### CactusBench

Thorn | Author(s) | Purpose |
---|---|---|

BenchADM | Gabrielle Allen Authors of CactusEinstein/ADM |
This thorn provides one of the key evolution methods of the Einstein Equations, to be used and optimised for benchmarking. |

BenchIO | Cactus team |
This thorn provides a number of benchmarking parameter files for some of the standard IO methods which the Cactus Computation Toolkit provides. |

### CactusConnect

Thorn | Author(s) | Purpose |
---|---|---|

HTTPD | Gabrielle Allen Tom Goodale Thomas Radke |
This is a prototype C version of a web server thorn. |

HTTPDExtra | Gabrielle Allen Tom Goodale Thomas Radke |
This thorn registers additional HTML pages with the web server provided by thorn HTTPD. |

Socket | Tom Goodale Thomas Radke John Shalf |
This thorn provides platform-independent socket calls. |

### CactusEinstein

Thorn | Author(s) | Purpose |
---|---|---|

ADM | Gabrielle Allen Bernd Bruegmann Gerd Lanfermann Joan Masso Mark Miller Paul Walker |
This thorn evolves the standard 3+1 variables using the ADM Evolution equations. |

ADMAnalysis | Tom Goodale |
This thorn does basic analysis of the metric and extrinsic curvature tensors. |

ADMBase | Tom Goodale |
This thorn provides the basic variables used to communicate between thorns doing General Relativity in the 3+1 formalism. |

ADMConstraints | Gabrielle Allen Mark Miller |
This analysis thorn calculates the violation in the ADM constraints using the standard Einstein variables. |

ADMCoupling | Ian Hawke |
The "friend of a friend" thorn to help matter / spacetime coupling. Does nothing itself. |

ADMMacros | Tom Goodale |
This thorn provides nothing but a load of macros for other thorns to use |

AHFinder | Miguel Alcubierre |
This thorn looks for apparent horizons (AH) in 3D. An AH is defined as a surface where the expansion of outgoing null geodesics is zero. |

CoordGauge | Tom Goodale |
Base thorn to provide the infrastructure for dynamic gauge selection. |

Einstein | Cactus team |
Thorn Einstein is now defunct and has been replaced with ADMBase plus other thorns: CactusEinstein/ADMAnalysis CactusEinstein/ADMBase CactusEinstein/ADMMacros CactusEinstein/CoordGauge CactusEinstein/IDSimple CactusEinstein/SpaceMask CactusEinstein/StaticConformal |

EvolSimple | unknown |
Simplistic evolver for the ADM equations, demonstrating the use of the CactusEinstein arrangement. |

Extract | Gabrielle Allen |
Calculate gauge invariant waveforms, using the Moncrief formalism, for cases when the spacetime approximates spherical symmetry. |

IDAnalyticBH | Steve Brandt Carsten Gundlach Joan Masso Ed Seidel Paul Walker |
This thorn calculates analytic initial data for the Einstein grid functions (lapse, shift, metric, curv) for various black hole spacetimes: |

IDAxiBrillBH | Steve Brandt Paul Walker Ryoji Takahashi |
This thorn calculates initial data for a black hole distorted by an even parity perturbation. |

IDBrillData | Carsten Gundlach Miguel Alcubierre |
Initializes Brill wave data. |

IDLinearWaves | Malcolm Tobias Joan Masso |
Provides analytic data for linear gravitational waves. |

IDSimple | Cactus team |
Simple initial data sets for 3-metric and extrinsic curvature. |

Maximal | unknown |
This thorn setus up the maximal slicing equation (dtrK/dt=0): |

PsiKadelia | Steve Brandt John Baker Hisaaki Shinkai Paul Walker |
This thorn provides a somewhat invariant means of measuring "waves" and other geometrical content in a numerically generated spacetime. |

SpaceMask | Denis Pollney |
Provides utilities for assigning states to individual grid points using a mask grid function. |

StaticConformal | Tom Goodale |
This thorn provides the variables defining a static conformal factor which is used to transform the physical metric. If this thorn is active and the ADMBase::metric_type parameter is set to `static conformal' then the ADMBase::g... variables are the conformal values as opposed to the physical values. |

TimeGeodesic | Miguel Alcubierre Florian Siebel |
This thorn integrates timelike geodesics. The integration is done `on the fly', that is, at the same time as the evolution of the spacetime is being calculated. The thorn can calculate geodesics either on the numerical spacetime, or on an exact spacetime (given by thorn Exact). |

### CactusElliptic

Thorn | Author(s) | Purpose |
---|---|---|

EllBase | unknown |
This thorn does ... |

EllPETSc | Cactus team |
This thorn shows how PETSc can be used with the EllBase Elliptic solver interface. |

EllSOR | Cactus team |
This thorn provides basic elliptic solvers for different equation types using SOR iterative methods. The thorn is written to be robust and pedagogical rather that a viable fast solver. |

### CactusExamples

Thorn | Author(s) | Purpose |
---|---|---|

DemoInterp | Thomas Radke |
This thorn demonstrates the use of the Cactus interpolation API. |

FleshInfo | Cactus team |
Demonstrates obtaining information about computational infrastructure from the flesh. |

HelloWorld | Cactus team |
Hello World example for Cactus, possibly the simplest thorn ever. |

IDWaveMoL | Ian Hawke |
Provides initial data for the WaveMoL thorn. |

SampleBoundary | Carsten Gundlach David Rideout |
This thorn provides a simple example of how to create and register a physical boundary condition. It implements a linear extrapolation boundary condition in three dimensions. |

SampleIO | Thomas Radke |
This thorn provides a very simple I/O method which prints the values of three-dimensional Cactus grid functions and arrays at a chosen location (selected by parameters) to screen. |

TimerInfo | Cactus team |
At the moment just prints out the value of all timers at chosen iteration intervals. Will be worked into a more useful thorn to report of different kinds of timing information in different ways |

WaveMoL | Ian Hawke |
This implements the wave equation in FOSH form for use with the Method of Lines thorn. Intended as a basic test. |

WaveToy1DF77 | Gabrielle Allen |
This thorn illustrates the solution of the scalar wave equation in 1D using centered explicit finite differencing. Included are routines to |

WaveToy2DF77 | Gabrielle Allen |
This thorn illustrates the solution of the scalar wave equation in 2D using centered explicit finite differencing. Included are routines to NOTE: This thorn isn't working properly yet for multiple processors, it will be fixed very soon in the development version. |

### CactusExternal

Thorn | Author(s) | Purpose |
---|---|---|

BLAS | Yaakoub Y El-Khamra Erik Schnetter |
This thorn enables a configuration to access the BLAS library. |

FFTWlib | Erik Schnetter |
This thorn enables a configuration to access the FFTW library. |

FlexIO | John Shalf |
Thorn FlexIO provides a library for writing multidimensional data from Cactus using the IEEEIO data format. The advantage of using this library is that it is distributed with Cactus and needs no additional libraries to be installed on a machine. |

GSL | Erik Schnetter |
Make the GSL (GNU Scientific Library) available to Cactus thorns. See http://www.gnu.org/software/gsl. |

HDF5 | Yaakoub Y El-Khamra |
This thorn provides a capability 'HDF5' and some utility programs to manipulate HDF5 files (independently of any Carpet or PUGH specifics). |

LAPACK | Yaakoub Y El-Khamra Erik Schnetter |
This thorn enables a configuration to access the LAPACK library. |

LORENE | Yaakoub Y El-Khamra Erik Schnetter |
This thorn enables a configuration to access the LORENE library. |

PETSc | Yaakoub Y El-Khamra Erik Schnetter |
This thorn adds PETSc capability to a configuration. |

SDF | Thomas Radke |
This thorns checks for an external SDF installation and, if one was found, provides the capability SDF. |

jpeg6b | The Independent JPEG Group |
This thorn contains a copy of the Independent JPEG Group's JPEG software of release 6b of 27-Mar-1998. See further details in the file src/README. |

### CactusIO

Thorn | Author(s) | Purpose |
---|---|---|

IOJpeg | John Shalf Gabrielle Allen Tom Goodale Gerd Lanfermann Thomas Radke |
This thorn does output of 2D slices from Cactus grid functions and arrays in jpeg image format. |

IOSDF | Thomas Radke |
This thorn does 1D, 2D, and 3D output of grid variables in SDF file format. |

### CactusPUGH

Thorn | Author(s) | Purpose |
---|---|---|

PUGH | Gabrielle Allen Tom Goodale Thomas Radke Matei Ripeanu Paul Walker |
This thorn provides a unigrid parallel driver with MPI. |

PUGHInterp | Paul Walker Thomas Radke |
This thorn implements the Cactus flesh interpolation API routine CCTK_InterpGridArrays() which provides interpolation of CCTK grid arrays at arbitrary points. |

PUGHReduce | Gabrielle Allen Tom Goodale Thomas Radke |
Standard reduction operators which use PUGH for communications |

PUGHSlab | Gabrielle Allen Tom Goodale Thomas Radke |
This thorn implements the following parts of the CCTK hyperslab API: |

### CactusPUGHIO

Thorn | Author(s) | Purpose |
---|---|---|

IOFlexIO | John Shalf Thomas Radke |
This thorn does output of arbitrary Cactus variables in IEEEIO file format. |

IOHDF5 | Thomas Radke |
This thorn does output of arbitrary Cactus variables in HDF5 file format. |

IOHDF5Util | Thomas Radke |
This thorn serves as a utility thorn for other HDF5 I/O thorns such as IOStreamedHDF5 and IOHDF5. |

IOPanda | Thomas Radke |
This thorn does output of 3D variables in IEEEIO format. It uses the I/O library Panda for writing files in parallel. |

IOStreamedHDF5 | Thomas Radke |
This thorn uses the HDF5 Stream Virtual File Driver to stream HDF5 data and checkpoint files via live sockets to any connected clients. |

IsoSurfacer | John Shalf |
This thorn extracts isosurfaces of grid functions. |

### CactusTest

Thorn | Author(s) | Purpose |
---|---|---|

TestAllTypes | Erik Schnetter |
Test all the variable types. |

TestArrays | unknown |
not documented |

TestComplex | unknown |
not documented |

TestCoordinates | Gabrielle Allen |
Test the Cactus coordinate infrastructure. |

TestFortranDependencies1 | Erik Schnetter |
Test Fortran intra-thorn and inter-thorn make dependencies. This thorn contains the intra-thorn dependencies, and depends on the thorn TestFortranDependencies2. |

TestFortranDependencies2 | Erik Schnetter |
Test Fortran intra-thorn and inter-thorn make dependencies. Thorn TestFortranDependencies1 depends on this thorn. |

TestFpointerNULL | Thomas Radke |
This thorn tests whether a Fortran routine accepts a NULL pointer reference as a function argument when called from a C function. The code should not crash as long as the NULL pointer argument isn't dereferenced. |

TestFreeF90 | Erik Schnetter |
Test automatic line breaks in free-form Fortran 90 code. |

TestGlobalReduce | Yaakoub Y El Khamra |
not documented |

TestInclude1 | unknown |
not documented |

TestInclude2 | unknown |
not documented |

TestLocalReduce | unknown |
not documented |

TestReduce | unknown |
not documented |

TestSchedule | Rion Dooley |
This thorn is used to test that all schedule bins are executed. |

TestStrings | Cactus team |
Test use of strings in Cactus. At the moment: |

TestTable | Jonathan Thornburg |
This thorn contains a test driver for the Cactus key/value tables API, Util_Table*(). |

TestTimers | Cactus team |
This thorn demonstrates and tests the use of Timers in thorns. |

TestTypes | Erik Schnetter |
Test most of the variable types. |

### CactusUtils

Thorn | Author(s) | Purpose |
---|---|---|

NaNChecker | Thomas Radke |
This thorn can be used to analyze CCTK variables of real or complex data type for NaN (Not-a-Number) and (on availability of finite(3)) infinite values. |

TimerReport | Cactus team |
Simplistic additional timer information. This thorn provides timer details to screen at different iterations and before checkpoints depending on parameter settings. |

### CactusWave

Thorn | Author(s) | Purpose |
---|---|---|

IDScalarWave | Tom Goodale Gabrielle Allen |
This thorns sets initial data for the scalar wave equation evolver |

IDScalarWaveC | Tom Goodale Gabrielle Allen Werner Benger |
This thorn sets initial data for the scalar wave equation evolver. |

IDScalarWaveCXX | Tom Goodale Gabrielle Allen Werner Benger |
This thorns sets initial data for the scalar wave equation evolver |

IDScalarWaveElliptic | unknown |
not documented |

WaveBinarySource | Gerd Lanfermann |
Provides a source term to the scalar field evolution for two rotating binary charges. |

WaveToyC | Gabrielle Allen Tom Goodale |
This thorn solves the linear wave equation. |

WaveToyCXX | unknown |
not documented |

WaveToyExtra | Cactus team |
Additional functionality for the WaveToy example |

WaveToyF77 | Tom Goodale |
This thorn solves the linear wave equation |

WaveToyF90 | Tom Goodale |
This thorn solves the linear wave equation |

WaveToyFreeF90 | Tom Goodale Erik Schnetter |
This thorn solves the linear wave equation, using free form (as opposed to fixed form) Fortran 90. |