aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2006-06-09 10:58:42 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2006-06-09 10:58:42 +0000
commitfe4e962d3e30527e164e194af8f360c701134e04 (patch)
tree6f5a0fdd31b5561fcfbc12c261488b9fb8dc49b6
parent56375fda6ef0bc0043ad426bba5864ca48cf2496 (diff)
redo the way mask-setting is scheduled:
it's now inside two new groups group_for_mask_stuff group_where_mask_is_set so other thorns (like AEIDevelopment/PreviousMask) can schedule stuff in group_for_mask_stuff before/after group_where_mask_is_set git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@1456 f88db872-0e4f-0410-b76b-b9085cfa78c5
-rw-r--r--doc/documentation.tex20
-rw-r--r--schedule.ccl61
2 files changed, 59 insertions, 22 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
index 21785a9..be8db7c 100644
--- a/doc/documentation.tex
+++ b/doc/documentation.tex
@@ -334,7 +334,7 @@ section~\ref{AHFinderDirect/sect-parameters/communicating-with-other-thorns}.
\section{Obtaining and Compiling \thorn{AHFinderDirect}}
You should be able to obtain the source code for this thorn via the
-usual procedures for anonymous cvs checkout; at present it lives inu
+usual procedures for anonymous cvs checkout; at present it lives in
the \arrangement{AEIThorns} arrangement.
This thorn is written primarily in \Cplusplus{}, calling C and
@@ -1151,6 +1151,24 @@ Note that \thorn{AHFinderDirect} doesn't itself register any bitfields
or states with \thorn{SpaceMask} -- you must arrange for some other thorn(s)
to do this before \thorn{AHFinderDirect} tries to find the horizon(s).
+If \thorn{AHFinderDirect} sets a mask or masks, this happens in the
+same schedule bin(s) as the horizon finding
+(see section~\ref{AHFinderDirect/sect-parameters/other-parameters}
+for a discussion of the parameters which control this).
+More precisely, \thorn{AHFinderDirect} creates two schedule groups
+for this purpose:
+\begin{itemize}
+\item The schedule group \verb|group_for_mask_stuff| is
+ scheduled to run just after the horizon is found.
+\item The schedule group \verb|group_where_mask_is_set|
+ is scheduled in (the schedule group) \verb|group_for_mask_stuff|.
+\item The actual setting of the mask is scheduled in
+ (the schedule group) \verb|group_where_mask_is_set|.
+\end{description}
+Thorn \thorn{PreviousMask} uses these schedule groups to keep a
+``previous'' as well as a ``current'' mask. See that thorn's thorn
+guide for further details.
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Communicating with Other Thorns}
diff --git a/schedule.ccl b/schedule.ccl
index 206df40..ae51c7a 100644
--- a/schedule.ccl
+++ b/schedule.ccl
@@ -122,42 +122,61 @@ if (run_at_CCTK_POSTINITIAL != 0)
#
# set excision mask
# FIXME: the name AHFinderDirect_maybe_do_masks is archaic,
-# AHFinderDirect_do_makss would be more apt
+# AHFinderDirect_do_masks would be more apt
+#
+# We use two Cactus Groups here:
+# group_for_mask_stuff
+# group_where_mask_is_set
+# AHFinderDirect_maybe_do_masks
+# this way other thorns can schedule routines which need to run immediately
+# before/after we set the mask in group_for_mask_stuff before/after
+# group_where_mask_is_set, without having to know in what higher-level
+# Cactus schedule bins/groups this thorn runs.
#
if (run_at_CCTK_ANALYSIS != 0)
{
- schedule AHFinderDirect_maybe_do_masks at CCTK_ANALYSIS \
- after AHFinderDirect_find_horizons
- {
- lang: C
- options: global loop-local
- } "maybe set mask(s) based on apparent horizon position(s)"
+ schedule group group_for_mask_stuff \
+ at CCTK_ANALYSIS \
+ after AHFinderDirect_find_horizons
+ {
+ } "schedule group for working with the excision mask(s)"
}
if (run_at_CCTK_POSTSTEP != 0)
{
- schedule AHFinderDirect_maybe_do_masks at CCTK_POSTSTEP \
- after AHFinderDirect_find_horizons
+ schedule group group_for_mask_stuff \
+ at CCTK_POSTSTEP \
+ after AHFinderDirect_find_horizons
{
- lang: C
- options: global loop-local
- } "maybe set mask(s) based on apparent horizon position(s)"
+ } "schedule group for working with the excision mask(s)"
}
if (run_at_CCTK_POSTINITIAL != 0)
{
- schedule AHFinderDirect_maybe_do_masks at CCTK_POSTINITIAL \
- after AHFinderDirect_find_horizons
+ schedule group group_for_mask_stuff \
+ at CCTK_POSTINITIAL \
+ after AHFinderDirect_find_horizons
{
- lang: C
- options: global loop-local
- } "maybe set mask(s) based on apparent horizon position(s)"
+ } "schedule group for working with the excision mask(s)"
}
# if using mesh refinement, reset the mask after regridding
-# if not using mesh refinement, POSTREGRID is ignored so this is a no-op
-schedule AHFinderDirect_maybe_do_masks at POSTREGRID \
-after (MaskOne MaskZero)
+# if not using mesh refinement, CCTK_POSTREGRID is ignored so this is a no-op
+schedule group group_for_mask_stuff \
+ at CCTK_POSTREGRID \
+ after (MaskOne MaskZero)
+ {
+ } "schedule group for working with the excision mask(s)"
+
+schedule group \
+ group_where_mask_is_set \
+ in group_for_mask_stuff
+ {
+ } "schedule group where we set the excision mask(s)"
+
+schedule AHFinderDirect_maybe_do_masks \
+ in group_where_mask_is_set
{
lang: C
- } "regrid ==> maybe reset mask(s) based on apparent horizon position(s)"
+ options: global loop-local
+ } "maybe set mask(s) based on apparent horizon position(s)"
########################################