diff options
author | gundlach <gundlach@e296648e-0e4f-0410-bd07-d597d9acff87> | 2000-11-16 11:31:15 +0000 |
---|---|---|
committer | gundlach <gundlach@e296648e-0e4f-0410-bd07-d597d9acff87> | 2000-11-16 11:31:15 +0000 |
commit | 03b42b8f116d9482b424f22a125e7705161ac398 (patch) | |
tree | 6f032282a9dbda51d193ff535afc105844b90ad6 /schedule.ccl | |
parent | 35c8175c4423073ce67dbe35d9b9808eca9d4d4b (diff) |
Major rewrite. The previous version was correct but not very logical.
The new version is more systematic, and it also adds functionality.
1) "exact" (exact solution on a trivial slice): The functionality has
not changed, I have only reordered the order within the file.
2) I have added "exact" boundary conditions though through a new
parameter.
3) "slice" (exact solution on an arbitrary slice:) Now using this just
for initial data, and for faking an evolution, are scheduled
separately. This is both clearer, and it saves storage.
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/Exact/trunk@36 e296648e-0e4f-0410-bd07-d597d9acff87
Diffstat (limited to 'schedule.ccl')
-rw-r--r-- | schedule.ccl | 73 |
1 files changed, 58 insertions, 15 deletions
diff --git a/schedule.ccl b/schedule.ccl index a6e9cbf..0956c17 100644 --- a/schedule.ccl +++ b/schedule.ccl @@ -1,31 +1,55 @@ # Schedule definitions for thorn Exact -# $Header$ +####################################################################### +# INITIAL DATA +####################################################################### -# Initial data from exact solution. +# Initial data (g and K) from a trivial slice through an exact solution. -if ((CCTK_Equals(initial_data,"exact")) || (CCTK_Equals(initial_lapse,"exact"))) +if (CCTK_Equals(initial_data,"exact")) { schedule exactinitialize at CCTK_INITIAL { LANG: Fortran - } "Set initial data from exact solution" + } "Set initial data and/or gauge from exact solution on a trivial slice" } +# Initial data from an arbitrary slice through an exact solution, +# but NOT evolving the slice afterwards. +# Note we only need storage for the slice itself, and only at startup. -# Exact lapse and/or shift. - -if ((CCTK_Equals(slicing,"exact")) || (CCTK_Equals(shift,"exact"))) +if ( (CCTK_Equals(initial_data,"slice")) && ! (CCTK_Equals(evolution_system,"slice")) ) { - schedule Exact_RegisterSlicing at CCTK_STARTUP + schedule slice_initialize at CCTK_INITIAL { - LANG: C - } "Register slicings" + STORAGE: Exact_slice + LANG: Fortran + } "Set initial data from exact solution on arbitrary slice" +} + +####################################################################### +# LAPSE AND SHIFT +####################################################################### +# Lapse and/or shift from a trivial slice through an exact solution. +# At the initial time: + +if ( (CCTK_Equals(initial_lapse,"exact")) || (CCTK_Equals(initial_shift,"exact")) ) +{ schedule exactgauge at CCTK_POSTINITIAL { LANG: Fortran } "Set initial lapse and/or shift from exact solution" +} + +# During the evolution: + +if ( (CCTK_Equals(slicing,"exact")) || (CCTK_Equals(shift,"exact")) ) +{ + schedule Exact_RegisterSlicing at CCTK_STARTUP + { + LANG: C + } "Register slicings" schedule exactgauge at CCTK_PRESTEP { @@ -33,10 +57,18 @@ if ((CCTK_Equals(slicing,"exact")) || (CCTK_Equals(shift,"exact"))) } "Set evolution lapse and/or shift from exact solution" } +####################################################################### +# EVOLUTION +####################################################################### -# The slice evolver. +# Fake the evolution of g and K by evolving the slice and +# reading them off from the slice again. We need the slice and two +# temporary copies throughout. Note that if we set evolution_system +# = "slice" without also setting initial_data = "slice", nothing will +# happen as a failsafe, and Cactus should complain about not having an +# evolution routine. Setting initial_data = "slice" on its own is ok though. -if ((CCTK_Equals(initial_data,"slice")) || (CCTK_Equals(evolution_system,"slice"))) +if ( (CCTK_Equals(evolution_system,"slice")) && (CCTK_Equals(initial_data,"slice")) ) { STORAGE: Exact_slice STORAGE: Exact_slicetemp1 @@ -46,12 +78,23 @@ if ((CCTK_Equals(initial_data,"slice")) || (CCTK_Equals(evolution_system,"slice" { LANG: Fortran } "Set initial data from exact solution on arbitrary slice" + + schedule slice_evolve at CCTK_EVOL + { + LANG: Fortran + } "Evolve arbitrary slice and extract Cauchy data" } -if (CCTK_Equals(evolution_system,"slice")) +####################################################################### +# BOUNDARY DATA +####################################################################### + +if (CCTK_Equals(overwrite_boundary,"exact")) { - schedule slice_evolve at CCTK_EVOL + schedule exactboundary at CCTK_POSTSTEP { LANG: Fortran - } "Evolve arbitrary slice and extract Cauchy data" + } "Overwrite g and K on the boundary with exact solution data" } + + |