aboutsummaryrefslogtreecommitdiff
path: root/schedule.ccl
blob: 089e683e3df23bb0be658a4ed8b1c8dda419d14f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Schedule definitions for thorn ADMMass
# $Header$

STORAGE:ADMMass_LoopCounterG
STORAGE:ADMMass_Masses
#######################################################################################################
# The storage of the following grid functions at all times is necessary only because carpet would 
# allocate them only for the finest level, if the STORAGE specification were only in the ADMMass group,
# as it was earlier. This will be changed back again, when carpet will be modified.
#######################################################################################################
STORAGE:ADMMass_GFs[3] 

schedule ADMMass_InitLoopCounter AT INITIAL
{
  LANG: C
  OPTIONS: global
} "Initialise the loop counter for ADMMass"

schedule ADMMass_SetLoopCounter AT POSTSTEP AFTER OutsideMask_UpdateMask
{
  LANG: C
  OPTIONS: global
} "Set the loop counter to the value of the parameter ADMMass:ADMMass_number"

schedule ADMMass_Loop IN ADMMass BEFORE ADMMass_Local
{
  LANG: C
  OPTIONS: global
} "Decrement loop counter"

#########################################################################################
# We must schedule the local routines to compute the integrals in global-loop-local 
# (as opposed to local) mode, in order to make sure that the scheduling condition
# "AFTER", which describes the ADMMass group, is respected. This group may depend 
# on local routines (excision, emask) and must be run after all local routines. 
# If we had no such a dependence, we could have scheduled the integral computations 
# simply in local mode.
##########################################################################################
schedule GROUP ADMMass AT POSTSTEP AFTER ADMMass_InitLoopCounter WHILE ADMMass::ADMMass_LoopCounter
{
  STORAGE:ADMMass_GFs[3]
  STORAGE:ADMMass_box
  STORAGE:grid_spacing_product
} "ADMMass loop"

schedule ADMMass_Surface IN ADMMass
{
  LANG: C
  OPTIONS: global loop-local
} "Calculate the ADMmass using a surface integral: local routine"

schedule ADMMass_Surface_Global IN ADMMass AFTER ADMMass_Surface
{
  LANG: C
  OPTIONS: global
} "Calculate the ADMmass using a surface integral: global routine"

schedule ADMMass_Surface_Lapse IN ADMMass AFTER ADMMass_Surface_Global
{
  LANG: C
  OPTIONS: global loop-local
} "Calculate the ADMmass*lapse using a surface integral: local routine"

schedule ADMMass_Surface_Lapse_Global IN ADMMass AFTER ADMMass_Surface_Lapse
{
  LANG: C
  OPTIONS: global
} "Calculate the ADMmass*lapse using a surface integral: global routine"


schedule ADMMass_Volume IN ADMMass
{
  LANG: C
  OPTIONS: global loop-local
  SYNC: ADMMass_GFs
} "Calculate the ADMmass using a volume integral: local routine"

schedule ADMMass_Volume_Global IN ADMMass  AFTER ADMMass_Volume
{
  LANG: C
  OPTIONS: global
} "Calculate the ADMmass using a volume integral: global routine"