\BOOKMARK [-1][-]{part.1}{A Installation and Running}{} \BOOKMARK [0][-]{chapter.2}{Installation}{part.1} \BOOKMARK [1][-]{section.3}{Required software}{chapter.2} \BOOKMARK [1][-]{section.5}{Supported architectures}{chapter.2} \BOOKMARK [1][-]{section.6}{Checkout procedure}{chapter.2} \BOOKMARK [1][-]{section.7}{Directory structure}{chapter.2} \BOOKMARK [1][-]{section.8}{Getting help}{chapter.2} \BOOKMARK [0][-]{chapter.9}{Compilation}{part.1} \BOOKMARK [1][-]{section.13}{Creating a configuration}{chapter.9} \BOOKMARK [2][-]{subsection.15}{Configuration options}{section.13} \BOOKMARK [2][-]{subsection.19}{Available options}{section.13} \BOOKMARK [2][-]{subsection.20}{Compiling with extra packages}{section.13} \BOOKMARK [2][-]{subsection.26}{File layout}{section.13} \BOOKMARK [1][-]{section.27}{Building and Administering a configuration}{chapter.9} \BOOKMARK [2][-]{subsection.28}{gmake targets for building and administering configurations}{section.27} \BOOKMARK [2][-]{subsection.29}{Compiling in thorns}{section.27} \BOOKMARK [2][-]{subsection.30}{Notes and Caveats}{section.27} \BOOKMARK [2][-]{subsection.31}{gmake options for building configurations}{section.27} \BOOKMARK [1][-]{section.32}{Other gmake targets}{chapter.9} \BOOKMARK [1][-]{section.33}{Testing}{chapter.9} \BOOKMARK [0][-]{chapter.34}{Running Cactus}{part.1} \BOOKMARK [1][-]{section.35}{Command Line Options}{chapter.34} \BOOKMARK [1][-]{section.37}{Parameter File Syntax}{chapter.34} \BOOKMARK [1][-]{section.38}{Thorn Documentation}{chapter.34} \BOOKMARK [0][-]{chapter.39}{Getting and looking at output}{part.1} \BOOKMARK [1][-]{section.40}{Screen output}{chapter.39} \BOOKMARK [1][-]{section.41}{Output}{chapter.39} \BOOKMARK [1][-]{section.42}{Checkpointing/Recovery}{chapter.39} \BOOKMARK [-1][-]{part.43}{B Application thorn writing}{} \BOOKMARK [0][-]{chapter.44}{Overview}{part.43} \BOOKMARK [0][-]{chapter.45}{Thorn concepts}{part.43} \BOOKMARK [1][-]{section.46}{Thorns}{chapter.45} \BOOKMARK [1][-]{section.47}{Arrangements}{chapter.45} \BOOKMARK [1][-]{section.48}{Implementations}{chapter.45} \BOOKMARK [0][-]{chapter.49}{Anatomy of a thorn}{part.43} \BOOKMARK [1][-]{section.50}{Thorns}{chapter.49} \BOOKMARK [1][-]{section.51}{Creating a thorn}{chapter.49} \BOOKMARK [1][-]{section.54}{Configuring your thorn}{chapter.49} \BOOKMARK [2][-]{subsection.55}{General syntax of CCL files}{section.54} \BOOKMARK [2][-]{subsection.56}{The interface.ccl file}{section.54} \BOOKMARK [2][-]{subsection.57}{The param.ccl file}{section.54} \BOOKMARK [2][-]{subsection.59}{The schedule.ccl file}{section.54} \BOOKMARK [2][-]{subsection.61}{The configuration.ccl}{section.54} \BOOKMARK [1][-]{section.62}{Naming Conventions for Source Files}{chapter.49} \BOOKMARK [1][-]{section.63}{Adding source files}{chapter.49} \BOOKMARK [2][-]{subsection.64}{make.code.defn based thorn building}{section.63} \BOOKMARK [2][-]{subsection.65}{Makefile based thorn building}{section.63} \BOOKMARK [2][-]{subsection.66}{Other makefile variables}{section.63} \BOOKMARK [0][-]{chapter.67}{Cactus Variables}{part.43} \BOOKMARK [1][-]{section.68}{Data Type}{chapter.67} \BOOKMARK [1][-]{section.69}{Group Types}{chapter.67} \BOOKMARK [1][-]{section.70}{Timelevels}{chapter.67} \BOOKMARK [1][-]{section.73}{Size and Distrib}{chapter.67} \BOOKMARK [1][-]{section.74}{Ghost Size}{chapter.67} \BOOKMARK [1][-]{section.77}{Staggering}{chapter.67} \BOOKMARK [1][-]{section.79}{Information about Grid Variables}{chapter.67} \BOOKMARK [2][-]{subsection.80}{Group Information}{section.79} \BOOKMARK [0][-]{chapter.81}{Cactus Parameters}{part.43} \BOOKMARK [1][-]{section.82}{Types and Ranges}{chapter.81} \BOOKMARK [2][-]{subsection.83}{Integer}{section.82} \BOOKMARK [2][-]{subsection.84}{Real}{section.82} \BOOKMARK [2][-]{subsection.85}{Keyword}{section.82} \BOOKMARK [2][-]{subsection.86}{Boolean}{section.82} \BOOKMARK [2][-]{subsection.87}{String}{section.82} \BOOKMARK [1][-]{section.88}{Scope}{chapter.81} \BOOKMARK [1][-]{section.89}{Steerable}{chapter.81} \BOOKMARK [0][-]{chapter.90}{Scheduling}{part.43} \BOOKMARK [1][-]{section.91}{Schedule Bins}{chapter.90} \BOOKMARK [1][-]{section.92}{Groups}{chapter.90} \BOOKMARK [1][-]{section.93}{Schedule Options}{chapter.90} \BOOKMARK [1][-]{section.94}{The Schedule Block}{chapter.90} \BOOKMARK [1][-]{section.95}{How Cactus Calls Scheduled Functions}{chapter.90} \BOOKMARK [0][-]{chapter.96}{Writing a Thorn}{part.43} \BOOKMARK [1][-]{section.97}{Thorn Programming Languages}{chapter.96} \BOOKMARK [1][-]{section.98}{What the Flesh provides}{chapter.96} \BOOKMARK [2][-]{subsection.99}{Fortran Routines}{section.98} \BOOKMARK [2][-]{subsection.106}{C Routines}{section.98} \BOOKMARK [2][-]{subsection.112}{Cactus Variables}{section.98} \BOOKMARK [2][-]{subsection.113}{Cactus Data Types}{section.98} \BOOKMARK [2][-]{subsection.115}{Staggering}{section.98} \BOOKMARK [1][-]{section.119}{Parallelisation}{chapter.96} \BOOKMARK [0][-]{chapter.120}{Cactus Application Interfaces}{part.43} \BOOKMARK [1][-]{section.121}{Coordinates}{chapter.120} \BOOKMARK [2][-]{subsection.122}{Registering Coordinates and Coordinate Properties}{section.121} \BOOKMARK [2][-]{subsection.123}{Using Coordinates}{section.121} \BOOKMARK [1][-]{section.124}{IO}{chapter.120} \BOOKMARK [1][-]{section.125}{Interpolation Operators}{chapter.120} \BOOKMARK [1][-]{section.126}{Reduction Operators}{chapter.120} \BOOKMARK [0][-]{chapter.127}{Completing a Thorn}{part.43} \BOOKMARK [1][-]{section.128}{Commenting Source Code}{chapter.127} \BOOKMARK [1][-]{section.129}{Providing Runtime Information}{chapter.127} \BOOKMARK [1][-]{section.130}{Error handling, warnings and code termination}{chapter.127} \BOOKMARK [1][-]{section.131}{Adding documentation}{chapter.127} \BOOKMARK [2][-]{subsection.132}{README}{section.131} \BOOKMARK [2][-]{subsection.133}{Contribution to Thorn Guide}{section.131} \BOOKMARK [1][-]{section.134}{Adding a test suite}{chapter.127} \BOOKMARK [0][-]{chapter.135}{Advanced Thorn Writing}{part.43} \BOOKMARK [1][-]{section.136}{Using Cactus Timers}{chapter.135} \BOOKMARK [2][-]{subsection.137}{What are timers?}{section.136} \BOOKMARK [2][-]{subsection.138}{Timing calls}{section.136} \BOOKMARK [2][-]{subsection.139}{How to insert timers in your code}{section.136} \BOOKMARK [1][-]{section.140}{Include Files}{chapter.135} \BOOKMARK [1][-]{section.142}{Memory Tracing}{chapter.135} \BOOKMARK [2][-]{subsection.143}{Activating Memory Tracing}{section.142} \BOOKMARK [2][-]{subsection.144}{Using Memory Tracing}{section.142} \BOOKMARK [1][-]{section.145}{Calls to different language}{chapter.135} \BOOKMARK [2][-]{subsection.146}{Calling C routines from Fortran}{section.145} \BOOKMARK [2][-]{subsection.147}{String Arguments from Fortran}{section.145} \BOOKMARK [2][-]{subsection.148}{Calling Fortran routines from C}{section.145} \BOOKMARK [1][-]{section.149}{Function aliasing}{chapter.135} \BOOKMARK [2][-]{subsection.150}{Using an aliased function}{section.149} \BOOKMARK [2][-]{subsection.151}{Providing a function}{section.149} \BOOKMARK [2][-]{subsection.152}{Conventions and restrictions}{section.149} \BOOKMARK [2][-]{subsection.153}{Examples}{section.149} \BOOKMARK [2][-]{subsection.154}{Testing aliased functions}{section.149} \BOOKMARK [1][-]{section.155}{Naming conventions}{chapter.135} \BOOKMARK [1][-]{section.156}{General Naming Conventions}{chapter.135} \BOOKMARK [1][-]{section.157}{Data Types and Sizes}{chapter.135} \BOOKMARK [2][-]{subsection.158}{Fortran Thorn Writers}{section.157} \BOOKMARK [0][-]{chapter.159}{Telling the make system what to do}{part.43} \BOOKMARK [1][-]{section.160}{Basic Recipe}{chapter.159} \BOOKMARK [1][-]{section.161}{Make Concepts}{chapter.159} \BOOKMARK [1][-]{section.162}{The Four Files}{chapter.159} \BOOKMARK [1][-]{section.163}{How your code is built}{chapter.159} \BOOKMARK [-1][-]{part.164}{C Utility Routines}{} \BOOKMARK [0][-]{chapter.165}{Introduction}{part.164} \BOOKMARK [0][-]{chapter.166}{Key/Value Tables}{part.164} \BOOKMARK [1][-]{section.167}{Motivation}{chapter.166} \BOOKMARK [1][-]{section.168}{The Basic Idea}{chapter.166} \BOOKMARK [1][-]{section.175}{A Simple Example}{chapter.166} \BOOKMARK [1][-]{section.178}{Arrays as Table Values}{chapter.166} \BOOKMARK [1][-]{section.181}{Character Strings}{chapter.166} \BOOKMARK [1][-]{section.182}{Convenience Routines}{chapter.166} \BOOKMARK [1][-]{section.184}{Table Iterators}{chapter.166} \BOOKMARK [1][-]{section.186}{Multithreading and Multiprocessor Issues}{chapter.166} \BOOKMARK [1][-]{section.188}{Metadata about All Tables}{chapter.166} \BOOKMARK [-1][-]{part.189}{D Infrastructure Thorn Writer's Guide}{} \BOOKMARK [0][-]{chapter.190}{Introduction}{part.189} \BOOKMARK [0][-]{chapter.191}{Concepts and Terminology}{part.189} \BOOKMARK [1][-]{section.192}{Overloading and Registration}{chapter.191} \BOOKMARK [2][-]{subsection.193}{Overloading}{section.192} \BOOKMARK [2][-]{subsection.194}{Registration}{section.192} \BOOKMARK [1][-]{section.195}{GH Extensions}{chapter.191} \BOOKMARK [1][-]{section.196}{IO Methods}{chapter.191} \BOOKMARK [0][-]{chapter.197}{GH Extensions}{part.189} \BOOKMARK [0][-]{chapter.198}{Overloadable and Registerable Functions in Main}{part.189} \BOOKMARK [0][-]{chapter.199}{Overloadable and Registerable Functions in Comm}{part.189} \BOOKMARK [0][-]{chapter.200}{Overloadable and Registerable Functions in IO}{part.189} \BOOKMARK [0][-]{chapter.201}{Drivers}{part.189} \BOOKMARK [1][-]{section.202}{Anatomy}{chapter.201} \BOOKMARK [1][-]{section.203}{Startup}{chapter.201} \BOOKMARK [1][-]{section.217}{The GH Extension}{chapter.201} \BOOKMARK [1][-]{section.218}{Memory Functions}{chapter.201} \BOOKMARK [2][-]{subsection.223}{En/Disable Group Storage}{section.218} \BOOKMARK [2][-]{subsection.224}{En/Disable Group Comm}{section.218} \BOOKMARK [0][-]{chapter.225}{I/O Methods}{part.189} \BOOKMARK [1][-]{section.226}{I/O Method Registration}{chapter.225} \BOOKMARK [1][-]{section.227}{Periodic Output of Grid Variables}{chapter.225} \BOOKMARK [1][-]{section.228}{Triggered Output of Grid Variables}{chapter.225} \BOOKMARK [1][-]{section.229}{Unconditional Output of Grid Variables}{chapter.225} \BOOKMARK [0][-]{chapter.230}{Checkpointing/Recovery Methods}{part.189} \BOOKMARK [1][-]{section.231}{Checkpointing Invocation}{chapter.230} \BOOKMARK [1][-]{section.232}{Recovery Invocation}{chapter.230} \BOOKMARK [0][-]{chapter.233}{Clocks for Timing}{part.189} \BOOKMARK [-1][-]{part.234}{E Appendices}{} \BOOKMARK [0][-]{chapter.235}{Glossary}{part.234} \BOOKMARK [0][-]{chapter.237}{Configuration file syntax}{part.234} \BOOKMARK [1][-]{section.238}{General Concepts}{chapter.237} \BOOKMARK [1][-]{section.239}{interface.ccl}{chapter.237} \BOOKMARK [2][-]{subsection.240}{Header block}{section.239} \BOOKMARK [2][-]{subsection.241}{Include files}{section.239} \BOOKMARK [2][-]{subsection.242}{Function aliasing}{section.239} \BOOKMARK [2][-]{subsection.243}{Variable blocks}{section.239} \BOOKMARK [1][-]{section.244}{param.ccl}{chapter.237} \BOOKMARK [2][-]{subsection.245}{Parameter data scoping items}{section.244} \BOOKMARK [2][-]{subsection.246}{Parameter object specification items}{section.244} \BOOKMARK [1][-]{section.247}{schedule.ccl}{chapter.237} \BOOKMARK [2][-]{subsection.248}{Assignment Statements}{section.247} \BOOKMARK [2][-]{subsection.249}{Schedule Blocks}{section.247} \BOOKMARK [2][-]{subsection.251}{Conditional Statements}{section.247} \BOOKMARK [1][-]{section.252}{configuration.ccl}{chapter.237} \BOOKMARK [2][-]{subsection.253}{Configuration Scripts}{section.252} \BOOKMARK [0][-]{chapter.254}{Schedule bins}{part.234} \BOOKMARK [0][-]{chapter.255}{Flesh parameters}{part.234} \BOOKMARK [1][-]{section.256}{Private parameters}{chapter.255} \BOOKMARK [1][-]{section.257}{Restricted parameters}{chapter.255} \BOOKMARK [0][-]{chapter.258}{Using GNATS}{part.234} \BOOKMARK [0][-]{chapter.259}{Using CVS}{part.234} \BOOKMARK [1][-]{section.260}{Essential CVS commands}{chapter.259} \BOOKMARK [1][-]{section.261}{CVS Options}{chapter.259} \BOOKMARK [1][-]{section.262}{CVS Examples}{chapter.259} \BOOKMARK [1][-]{section.263}{Checking out Flesh and thorns with CVS}{chapter.259} \BOOKMARK [0][-]{chapter.264}{Using Tags}{part.234} \BOOKMARK [1][-]{section.265}{Tags with Emacs}{chapter.264} \BOOKMARK [1][-]{section.271}{Tags with vi}{chapter.264} \BOOKMARK [0][-]{chapter.278}{ThornLists}{part.234}