aboutsummaryrefslogtreecommitdiff
path: root/schedule.ccl
diff options
context:
space:
mode:
authorgundlach <gundlach@e296648e-0e4f-0410-bd07-d597d9acff87>2000-11-16 11:31:15 +0000
committergundlach <gundlach@e296648e-0e4f-0410-bd07-d597d9acff87>2000-11-16 11:31:15 +0000
commit03b42b8f116d9482b424f22a125e7705161ac398 (patch)
tree6f032282a9dbda51d193ff535afc105844b90ad6 /schedule.ccl
parent35c8175c4423073ce67dbe35d9b9808eca9d4d4b (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.ccl73
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"
}
+
+