aboutsummaryrefslogtreecommitdiff
path: root/schedule.ccl
blob: 6d97e4ac0777bd9e638a59f6e6a3da811a29bd7a (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
# Schedule definitions for thorn GRHydro_Init_Data

schedule GRHydro_InitData_CheckParameters  AT CCTK_PARAMCHECK
{
  LANG: C
} "Check parameters"

if (CCTK_Equals(initial_hydro,"monopole")) {
  schedule GRHydro_MonopoleM in HydroBase_Initial
    {
      LANG: Fortran
    } "Monopole initial data"
}

if (CCTK_Equals(initial_hydro,"rotor")) {
  schedule GRHydro_RotorM in HydroBase_Initial
    {
      LANG: Fortran
    } "MHD rotor initial data"
}

if (CCTK_Equals(initial_hydro,"advectedloop")) {
  schedule GRHydro_AdvectedLoopM in HydroBase_Initial
    {
      LANG: Fortran
    } "MHD advected loop initial data"
}

if (CCTK_Equals(initial_hydro,"alfvenwave")) {
  schedule GRHydro_AlfvenWaveM in HydroBase_Initial
    {
      LANG: Fortran
    } "Circularly polarized Alfven wave initial data"
}

if (CCTK_Equals(initial_hydro,"shocktube_hot")) {
    schedule GRHydro_shocktube_hot in HydroBase_Initial AFTER (HydroBase_Y_e_one,HydroBase_Zero)
    {
      LANG: Fortran
    } "Hot Shocktube initial data"
}

if (CCTK_Equals(initial_hydro,"shocktube")) {
  if(CCTK_Equals(initial_Bvec,"shocktube"))
  {
    schedule GRHydro_shocktubeM in HydroBase_Initial
    {
      LANG: Fortran
    } "Shocktube initial data - MHD version"

    if(CCTK_Equals(shocktube_type,"diagshock")) 
    {
      if(clean_divergence){
        schedule GRHydro_Diagshock_BoundaryM IN ApplyBCs AFTER BoundaryConditions AFTER Boundary::Boundary_ClearSelection
        {
          LANG: Fortran
          SYNC: GRHydro::dens, GRHydro::tau, GRHydro::scon, GRHydro::Bcons, GRHydro::psidc
        } "Diagonal shock boundary conditions"
      } else {
        schedule GRHydro_Diagshock_BoundaryM IN ApplyBCs AFTER BoundaryConditions AFTER Boundary::Boundary_ClearSelection
        {
          LANG: Fortran
          SYNC: GRHydro::dens, GRHydro::tau, GRHydro::scon, GRHydro::Bcons
        } "Diagonal shock boundary conditions"
      }
    }

    if(CCTK_Equals(shocktube_type,"diagshock2d")) 
    {
        schedule GRHydro_Diagshock2D_BoundaryM IN ApplyBCs AFTER BoundaryConditions AFTER Boundary::Boundary_ClearSelection
        {
          LANG: Fortran
        } "2-D Diagonal shock boundary conditions"
    }

#    if(CCTK_Equals(shocktube_type,"diagshock2d")) 
#    {
#      if(clean_divergence){
#        schedule GRHydro_Diagshock2D_BoundaryM IN ApplyBCs AFTER BoundaryConditions AFTER Boundary::Boundary_ClearSelection
#        {
#          LANG: Fortran
#          SYNC: GRHydro::dens, GRHydro::tau, GRHydro::scon, GRHydro::Bcons, GRHydro::psidc
#        } "2-D Diagonal shock boundary conditions"
#      } else {
#        schedule GRHydro_Diagshock2D_BoundaryM IN ApplyBCs AFTER BoundaryConditions AFTER Boundary::Boundary_ClearSelection
#        {
#          LANG: Fortran
#          SYNC: GRHydro::dens, GRHydro::tau, GRHydro::scon, GRHydro::Bcons
#        } "2-D Diagonal shock boundary conditions"
#      }
#    }

  } else {
    schedule GRHydro_shocktube in HydroBase_Initial
    {
      LANG: Fortran
    } "Shocktube initial data"

  }
}

if (CCTK_Equals(initial_hydro,"cylexp")) {
  schedule GRHydro_CylindricalExplosionM in HydroBase_Initial
    {
      LANG: Fortran
    } "Cylindrical Explosion initial data - MHD-only"
}

if (CCTK_Equals(initial_data,"con2primtest")) {
  STORAGE:GRHydro_init_data_reflevel
  schedule GRHydro_Init_Data_RefinementLevel IN HydroBase_Initial BEFORE GRHydro_con2primtest
  {
    LANG: Fortran
  } "Calculate current refinement level"

  schedule GRHydro_con2primtest in HydroBase_Initial
  {
    LANG: Fortran
  } "Testing the conservative to primitive solver"
}

if (CCTK_Equals(initial_data,"con2prim2con_test")) {
  STORAGE:GRHydro_init_data_reflevel
  schedule GRHydro_Init_Data_RefinementLevel IN HydroBase_Initial BEFORE c2p2c_call
  {
    LANG: Fortran
  } "Calculate current refinement level"

  if(CCTK_Equals(Bvec_evolution_method,"GRHydro"))
  {
    schedule c2p2cM in HydroBase_Initial AS c2p2c_call
    {
      LANG: Fortran
    } "Testing conservative to primitive to conservative - MHD version"
  } else {
    schedule c2p2c in HydroBase_Initial AS c2p2c_call
    {
      LANG: Fortran
    } "Testing conservative to primitive to conservative"
  }
}

if (CCTK_Equals(initial_data,"prim2con2prim_test")) {
  STORAGE:GRHydro_init_data_reflevel
  schedule GRHydro_Init_Data_RefinementLevel IN HydroBase_Initial BEFORE p2c2p_call
  {
    LANG: Fortran
  } "Calculate current refinement level"

  if(CCTK_Equals(Bvec_evolution_method,"GRHydro"))
  {
    schedule p2c2pM in HydroBase_Initial AS p2c2p_call
    {
      LANG: Fortran
    } "Testing primitive to conservative to primitive - MHD version"
  } else {
    schedule p2c2p in HydroBase_Initial AS p2c2p_call
    {
      LANG: Fortran
    } "Testing primitive to conservative to primitive"
  }
}

if (CCTK_Equals(initial_data,"prim2con2prim_polytype_test")) {
  STORAGE:GRHydro_init_data_reflevel
  schedule GRHydro_Init_Data_RefinementLevel IN HydroBase_Initial BEFORE p2c2p_call
  {
    LANG: Fortran
  } "Calculate current refinement level"

  if(CCTK_Equals(Bvec_evolution_method,"GRHydro"))
  {
    schedule p2c2pM_polytype in HydroBase_Initial AS p2c2p_call
    {
      LANG: Fortran
    } "Testing primitive to conservative to primitive - MHD polytype version"
  }
}

if (CCTK_Equals(initial_data,"reconstruction_test")) {
  schedule GRHydro_reconstruction_test in HydroBase_Initial
  {
    LANG: Fortran
    STORAGE: GRHydro_prim_bext
    STORAGE: GRHydro_scalars
    OPTIONS: global loop-local
  } "Testing the reconstruction"
}

if (CCTK_Equals(initial_hydro,"only_atmo")) {
  schedule GRHydro_Only_Atmo in HydroBase_Initial
  {
    LANG: Fortran
  } "Only atmosphere as initial data"
}

if (CCTK_Equals(initial_hydro,"read_conformal")) {
  schedule GRHydro_ReadConformalData in HydroBase_Initial
  {
    LANG: Fortran
  } "Set the missing quantities, after reading in from file initial data from conformally-flat codes (Garching)"
}

if (CCTK_Equals(initial_hydro,"simple_wave")) {
  STORAGE: simple_wave_grid_functions
  STORAGE: simple_wave_scalars
  schedule GRHydro_SimpleWave in HydroBase_Initial
  {
    LANG: Fortran
  } "Set initial data from Anile Miller Motta, Phys.Fluids. 26, 1450 (1983)"

  STORAGE: simple_wave_output
  schedule GRHydro_SimpleWave_Analysis AT CCTK_ANALYSIS AFTER GRHydro_Entropy
  {
    LANG: Fortran
  } "Compute some output variables for the Simple Wave"


}

if (CCTK_EQUALS(initial_hydro, "hydro_bondi_solution_iso"))
{
  SCHEDULE GRHydro_Bondi_Iso IN HydroBase_Initial AFTER HydroBase_ExcisionMaskSetup
  {
    LANGUAGE: Fortran
  } "setup GRHydro vars for the hydrodynamic Bondi solution"
}

if (CCTK_EQUALS(initial_hydro, "magnetized_bondi_solution_iso"))
{
  SCHEDULE GRHydro_BondiM_Iso IN HydroBase_Initial AFTER HydroBase_ExcisionMaskSetup
  {
    LANGUAGE: Fortran
  } "setup GRHydro vars for the magnetized Bondi solution"
}

if (CCTK_EQUALS(initial_hydro, "hydro_bondi_solution"))
{
  SCHEDULE GRHydro_Bondi IN HydroBase_Initial AFTER HydroBase_ExcisionMaskSetup
  {
    LANGUAGE: C
  } "setup GRHydro vars for the hydrodynamic Bondi solution"
}

if (CCTK_EQUALS(initial_hydro, "magnetized_bondi_solution"))
{
  SCHEDULE GRHydro_BondiM IN HydroBase_Initial AFTER HydroBase_ExcisionMaskSetup
  {
    LANGUAGE: C
  } "setup GRHydro vars for the magnetized Bondi solution"
}

if(bondi_evolve_only_annulus) {
SCHEDULE GRHydro_BondiM_Range IN HydroBase_Con2Prim BEFORE Con2Prim
{
  LANG: C
} "force analytic solution outside anulus"
}

if(bondi_overwrite_boundary ) {
# this is a terrible HACK. We really should at least schedule ourselves in
# Boundaries and look at cctk_bbox and the symmetry flags
# by now Cactus is convenient CCTK_LOOP macros for this...
SCHEDULE GRHydro_BondiM_Boundary IN HydroBase_Boundaries BEFORE HydroBase_Select_Boundaries
{
  LANG: C
} "force analytic solution in boundaries"
}

if (CCTK_EQUALS(initial_Bvec, "poloidalmagfield") || CCTK_EQUALS(initial_Avec, "poloidalmagfield"))
{
#  SCHEDULE GRHydro_PoloidalMagFieldM AT CCTK_INITIAL AFTER IN HydroBase_Initial AFTER rnsid_init AFTER TOV_Initial_Data after CCCC_StarMapper_InitialData
#  SCHEDULE GRHydro_PoloidalMagFieldM AT CCTK_POSTINITIAL 
  SCHEDULE GRHydro_PoloidalMagFieldM AT CCTK_INITIAL AFTER HydroBase_Initial BEFORE GRHydroTransformPrimToLocalBasis
  {
    LANGUAGE: Fortran
  } "Set up a poloidal magnetic field. It expects the other fluid variables already to be set, as for example in the TOV solution"
#  SCHEDULE group HydroBase_Boundaries IN HydroBase_Initial AFTER GRHydro_PoloidalMagFieldM 
  SCHEDULE group HydroBase_Boundaries IN CCTK_INITIAL AFTER GRHydro_PoloidalMagFieldM BEFORE GRHydroTransformPrimToLocalBasis
  {
  } "Call boundary conditions after magnetic field initial data setup"
}