aboutsummaryrefslogtreecommitdiff
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
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
-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"
}
+
+