Cactus Code Thorn ADM Authors : Gabrielle Allen Bernd Bruegmann Gerd Lanfermann Joan Masso Mark Miller Paul Walker Managed by : Cactus Maintainer Date : Sep 23 1998 -------------------------------------------------------------------------- 1. Purpose of the thorn This thorn evolves the standard 3+1 variables using the ADM Evolution equations. Three methods are available: method = "stagleap" Staggered leapfrog. The 3-metric and the shift live on the integer timesteps and the extrinsic curvature lives on the half timesteps. Note that the analysis and output routines are given all variables, interpolated if needed, on the integer timesteps. method = "leapfrog" (CCTK_REAL) leapfrog. All variables live on integer timesteps. method = "ICN" Iterative Crank-Nicholson. All methods support matter, through the use of the T_munu include files. Note that when constructing T_munu the ADM routines make the upper physical metric and the determinant of the conformal 3-metric available (these are called uxx,uxy,uxz,uyy,uyz,uzz and det). There is some support for a shift, but nothing has been tested. If anyone would like to use a shift with ADM please contact the thorn maintainers. -------------------------------------------------------------------------- 2. Dependencies of the thorn This thorn additionally requires thorns StandardEinstein and util. Depending on the parameters, and availability, this thorn uses the thorns maximal and BonaMasso_Evolution/BMUtil. -------------------------------------------------------------------------- 3. Thorn distribution This thorn is publically available. -------------------------------------------------------------------------- 4. Slicing Conditions Supported slicing are: geodesic,static,1+log,harmonic,detg,external,maximal The slicing 1+log,harmonic,detg,(geodesic) are actually implemented in ADM. For the other slicing the lapse should not be touched within ADM. For the slicing which are implemented, the equation: d_t alpha = ADM_gauge * K + flatNablaAlpCoeff D_flat^2 alpha + nablaAlpCoeff D_g^2 alpha is solved, where ADM_gauge depends on the slicing condition according to: geodesic: lapse = 1 ADM_gauge = VERY_LARGE_NUMBER (so that we get an error if it is used) static: ADM_gauge = VERY_LARGE_NUMBER (so that we get an error if it is used) 1+log: This comes in several flavours ADM_slicingFlavour = "kleing" ADM_gauge = - 2d0*lapse*initial_lapse ADM_slicingFlavour = anything else (default) ADM_gauge = - lapse harmonic: ADM_gauge = -lapse^2 * harmonic_f detg: ADM_gauge = -lapse^2 external: ADM_gauge = VERY_LARGE_NUMBER (so that we get an error if it is used) maximal: ADM_gauge = VERY_LARGE_NUMBER (so that we get an error if it is used) -------------------------------------------------------------------------- 5. Additional information The thorn has a test suite which currently passes under: LINUX IRIX64 IRIX32 ALPHA T3E The relevant parameters for ADM are system = "ADM" method = "stagleap", "leapfrog", "ICN" ---------------------------------------------------------------------- PARAMETER : ADM_minimalCommunications --------- HISTORY: This parameter was added for the SC98 simulations which involved parallelising across processors in different locations. VALUES: no : default yes : only those parameters needed for a successful ADM evolution are synchronised. That is, the extrinsic curvature is not synchronised. This means for example that the ADM momentum constraints should not be calculated, or anything else involving derivatives of the lapse. COMMENTS: This parameter is currently only used in the double leapfrog and staggered leapfrog routines. ---------------------------------------------------------------------- PARAMETER : ADM_BMvariables HISTORY: This parameter should really default to no, in fact we shouldn't need it, since other routines should be calculating the BM variables if they want them. VALUES: yes : default no : don't calculate the BM variables at the end of each timestep. COMMENTS: Setting this parameter to yes greatly speeds up the routines if algebraic slicings are used. If maximal slicing is used, then since the default for BAM_Elliptic is to use the BM variables if the thorn is there, the (not rigourously tested) BAM parameter bam_laplacian = "delginv" must be used. Not calculating the BM variables could also have implications for other thorns, like apparent horizon finders at the moment. ---------------------------------------------------------------------- PARAMETER : ADM_constraintCommunication HISTORY: This was done by default originally, but I can't think of any reason why it would be needed, so I've made it an option VALUES: no : default yes : sychronise the ADM constraints across processors COMMENTS: Should only be needed if we need to take derivatives of the constraints. ---------------------------------------------------------------------- PARAMETER : ADM_keep_alp0 HISTORY: Introduced to be able to mimic Karen Camarda's kleing code VALUES: no : default yes : save the initial value of the lapse in the 3D array ADM_alp0 COMMENTS: This is used in ADM_Lapse if an algebraic slicing condition is used. ---------------------------------------------------------------------- PARAMETER : ADM_verbose VALUES: no : default yes : give more information during the evolution steps ---------------------------------------------------------------------- PARAMETER : ADM_DL_firstStep VALUES: ftcs : default. Do first timestep using a forward-time-centered-space step predcorr : Do first timestep using a predictor-corrector step COMMENTS: This parameter is only used for the CCTK_REAL Leapfrog evolution scheme ---------------------------------------------------------------------- ADM_flatNablaAlpCoeff ADM_nablaAlpCoeff ADM_constraintsPersist ADM_ICN_stopAtNorm ADM_ICN_normError ADM_SL_storage ADM_evolStorage ADM_slicingFlavour