Cactus Code Thorn AHFinderDirect Authors : Jonathan Thornburg Maintainer : Jonathan Thornburg CVS info : $Header$ -------------------------------------------------------------------------- Purpose of the thorn ==================== This thorn finds an apparent horizon given the 3D xyz-grid metric and extrinsic curvature (and optionally the StaticConformal conformal factor). It uses a direct method, writing the apparent horizon equation as an elliptic PDE on angular-coordinate space. This is fast, but does require an intitial guess for the apparent horizon position. Documentation ============= The doc/ directory contains detailed documentation for this thorn. There are also a lot of comments in the param.ccl file on how to set the (many) parameters. The par/ directory contains some sample par files. See below in this file for notes on compiling this thorn. Copyright ========= This thorn is copyright (C) 2001-2002 by Jonathan Thornburg . This thorn is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This thorn is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this thorn (see the file COPYING in this directory); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Other Software Required ======================= This thorn inherits from ADMBase and StaticConformal (both in the CactusEinstein arrangement), since it uses Cactus various grid functions which are defined in those thorns. This thorn uses the new CCTK_InterpLocalUniform() interpolator API, which at present is only supplied by the CactusBase/InterpLocal thorn. This thorn is written in C++, so you'll need a C++ compiler -- in fact a fairly modern one -- to compile this thorn. See the "Compilation Notes" section below for details. Most of this thorn's relativity code is machine-generated using Maple (version 7), but you don't need Maple unless you want to modify the relativity code. This thorn uses the LAPACK library (which in turn uses the BLAS library). If you don't have these installed on your system already, you can get Fortran 77 source code and/or binaries for various architectures, from http://www.netlib.org/lapack/ and http://www.netlib.org/blas/ respectively. But many systems have these installed already -- try 'locate liblapack' and 'locate libblas' on your system. Library Configuration ===================== Before compiling (a Cactus configuration which includes) AHFinderDirect, you must set the environment variable LAPACK_DIR = a directory (or blank-separated list of directories) containing the LAPACK and BLAS libraries. (On GNU/Linux systems this is usually /usr/lib or /usr/local/lib.) If the LAPACK and/or BLAS libraries were compiled with a (Fortran) compiler which is *not* used to compile any part of this Cactus' configuration, then you may also need to set the environment variables LAPACK_EXTRA_LIBS = the name (or blank-separated list of names) of that (Fortran) compiler's run-time support library(ies) LAPACK_EXTRA_LIBDIRS = the directory (or blank-separated list of directories) containing that library(ies) For example, if your LAPACK and/or BLAS were compiled with the GNU g77 compiler (as is common on GNU/Linux and *BSD systems), and you are *not* using g77 to compile any part of your Cactus configuration, then you may need to set the environment variables to point to the g77 support library g2c: LAPACK_EXTRA_LIBS = g2c LAPACK_EXTRA_LIBDIRS = `g77 --print-file-name=libg2c.a | xargs basename` For example, on the AEI xeons the settings would be LAPACK_DIR = /usr/lib LAPACK_EXTRA_LIBS = g2c LAPACK_EXTRA_LIBDIRS = `g77 --print-file-name=libg2c.a | xargs dirname` Note that all of these settings are of shell environment variables, using the syntax (eg) % export LAPACK_DIR=/usr/lib # bash % setenv LAPACK_DIR /usr/lib # csh,tcsh Alas, setting these in your ~/.cactus/config file doesn't work. :( Code Notes ========== This thorn is written in C++, and requires a fairly modern C++ compiler. In particular: * Templates are used, but only rather simple ones for containers or other low-level stuff templated on the floating-point or integer datatype. These templates are always instantiated explicitly. * bool, mutable, typename are used. * The new-style casts static_cast<...> and const_cast<...> are used. reinterpret_cast<...> and dynamic_cast<...> are *not* used. * The code will compile ok under either the archaic or the modern for-loop declaration scope rules. * C header files are used in the pre-namespaces form (eg ). (In ISO-standard C++ this is deprecated (but still supported), but alas none of the more modern forms ( and namespace std::) seem to be supported on as wide a range of systems as the pre-namespaces form.) * vector is the only part of the C++ standard template library (STL) used. Either or is #included, depending on which of them exists (this is probed by the Cactus configuration process). Compiler Notes ============== The code has been compiled and run successfully using * gcc version 2.95.3 20010125 (prerelease) * gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98) * g++ (GCC) 3.2 * Intel(R) C++ Compiler for 32-bit applications, Version 5.0.1 Build 010730D0 * Intel C++ Compiler for Linux, version 6.0 The code will almost certainly *not* compile using * any "egcs" version of gcc, or more generally, any version of gcc earlier than 2.95 * any version of Microsoft Visual C++ up to and including mid-2002