aboutsummaryrefslogtreecommitdiff
path: root/param.ccl
blob: ad0a3c8a48f8037cacf391e8838f6dd6d7d9ac64 (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
# Parameter definitions for thorn MoL
# $Header$

restricted:

CCTK_INT MoL_Num_Evolved_Vars "The maximum number of variables to be evolved by MoL" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_Evolved_Vars_Slow "The maximum number of 'slow' variables to be evolved by MoL" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0


CCTK_INT MoL_Num_Constrained_Vars "The maximum number of constrained variables with timelevels that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_SaveAndRestore_Vars "The maximum number of variables to be evolved outside of MoL but that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ComplexEvolved_Vars "The maximum number of complex variables to be evolved by MoL" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ComplexConstrained_Vars "The maximum number of complex constrained variables with timelevels that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ComplexSaveAndRestore_Vars "The maximum number of complex variables to be evolved outside of MoL but that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Max_Evolved_Array_Size "The maximum total size of any grid arrays to be evolved" ACCUMULATOR = (x+y)
{
  0:*          :: "Anything non negative. Accumulated by other thorns"
} 0

CCTK_INT MoL_Max_Evolved_ComplexArray_Size "The maximum total size of any complex grid arrays to be evolved" ACCUMULATOR = (x+y)
{
  0:*          :: "Anything non negative. Accumulated by other thorns"
} 0

CCTK_INT MoL_Num_ArrayEvolved_Vars "The maximum number of array variables to be evolved by MoL" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ArrayConstrained_Vars "The maximum number of array constrained variables with timelevels that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ArraySaveAndRestore_Vars "The maximum number of array variables to be evolved outside of MoL but that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ComplexArrayEvolved_Vars "The maximum number of complex array variables to be evolved by MoL" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ComplexArrayConstrained_Vars "The maximum number of complex array constrained variables with timelevels that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_ComplexArraySaveAndRestore_Vars "The maximum number of complex array variables to be evolved outside of MoL but that MoL needs to know about" ACCUMULATOR = (x+y)
{
  0:*		:: "Anything non negative. Added to by other thorns."
} 0

CCTK_INT MoL_Num_Scratch_Levels "Number of scratch levels required by the ODE method"
{
  0:*		:: "Anything non negative"
} 0

private:

KEYWORD ODE_Method "The ODE method use by MoL to do time integration"
{
  "Generic"	:: "Generic Shu-Osher Runge-Kutta type"
  "ICN"		:: "Iterative Crank Nicholson"
  "ICN-avg"	:: "Iterative Crank Nicholson with averaging"
  "Euler"	:: "Euler"
  "RK2"		:: "Efficient RK2"
  "RK3"		:: "Efficient RK3"
  "RK4"		:: "Efficient RK4"
  "RK45"        :: "RK45 (Fehlberg) with error estimation"
  "RK45CK"      :: "RK45CK (Cash-Karp) with error estimation"
  "RK65"        :: "RK65 with error estimation"
  "RK87"        :: "RK87 with error estimation"
  "AB"          :: "Adams-Bashforth"
  "RK2-MR-2:1"  :: "2nd order 2:1 multirate RK scheme based on RK2 due to Schlegel et al 2009"
  "RK4-MR-2:1"  :: "3rd order 2:1 multirate RK scheme based on RK43 due to Schlegel et al 2009"
  "RK4-RK2"     :: "RK4 as fast method and RK2 as slow method"
} "ICN"

KEYWORD Generic_Type "If using the generic method, which sort"
{
  "RK"		:: "One of the standard TVD Runge-Kutta methods"
  "ICN"		:: "Iterative Crank Nicholson as a generic method"
  "Table"       :: "Given from the generic method descriptor parameter"
  "Classic RK3"	:: "Efficient RK3 - classical version"
} "RK"

CCTK_REAL ICN_avg_theta "theta of averaged ICN method, usually 0.5"
{
  0:1 :: "0 <= theta <= 1"
} 0.5

BOOLEAN ICN_avg_swapped "Use swapped averages in ICN method?"
{
} "no"

KEYWORD AB_Type "If using the the AB method, which sort"
{
  "1" :: "same as forward Euler"
  "2" :: "second order"
  "3" :: "third order"
  "4" :: "fourth order"
  "5" :: "fifth order"
} "1"

BOOLEAN AB_initially_reduce_order "Reduce order of accuracy initially so that no past timelevels of initial data are required"
{
} "yes"

CCTK_INT MoL_Intermediate_Steps "Number of intermediate steps taken by the ODE method"
{
  1:*		:: "Anything greater than 1"
} 3

BOOLEAN MoL_Memory_Always_On "Do we keep the scratch arrays allocated all the time?"
{
} "yes"

CCTK_REAL MoL_Tiny "Effective local machine zero; required by generic solvers"
{
  0:*		:: "Defaults to 1.e-15"
} 1.e-15

BOOLEAN initial_data_is_crap "If the initial data routine fails to set up the previous time levels, copy the current backwards"
{
} "no"

# If  initial_data_is_crap  is false, this parameter is ignored.
# If  initial_data_is_crap  is true, this parameter controls *when*
#   in CCTK_POSTINITIAL we copy the initial data to previous time levels,
#   relative to our scheduling of MoL_PostStep.
#   false ==> copy *before* MoL_PostStep  (default, matches old behavior)
#   true  ==> copy *after*  MoL_PostStep  (may be preferable for new code)
BOOLEAN copy_ID_after_MoL_PostStep \
  "if  initial_data_is_crap  is true, *when* should we copy the		\
   current time level to all previous time levels:			\
   false ==> copy *before* MoL_PostStep  (default, matches old behavior)\
   true  ==> copy *after*  MoL_PostStep  (maybe preferable for new code)"
{
} "no"

BOOLEAN run_MoL_PostStep_in_Post_Recover_Variables "Schedule the PostStep parts after recovery so that symmetries are automatically done correctly." STEERABLE=recover
{
} "yes"


BOOLEAN set_ID_boundaries "Should boundaries be overwritten (via synchronization, prolongation, boundary conditions) by MoL?"
{
} "yes"



# The default for this parameter corresponds to generic RK2
STRING Generic_Method_Descriptor "A string used to create a table containing the description of the generic method"
{
  ".*"          :: "Should contain the Alpha and Beta arrays, and the number of intermediate steps"
} "GenericIntermediateSteps = 2 \
   GenericAlphaCoeffs = { 1.0 0.0 0.5 0.5 } \
   GenericBetaCoeffs = { 1.0 0.5 }"
       
BOOLEAN MoL_NaN_Check "Should the RHS GFs be checked for NaNs?"
{
} "no"

BOOLEAN disable_prolongation "If Mesh refinement is enabled should we use buffer zones in intermediate steps?"
{
} "yes"



BOOLEAN skip_initial_copy "Skip initial copy from previous to current time level" STEERABLE=recover
{
} "no"

BOOLEAN init_RHS_zero "Initialise the RHS to zero" STEERABLE=recover
{
} "yes"



BOOLEAN adaptive_stepsize "Choose the time step size adaptively"
{
} "no"

REAL maximum_absolute_error "Maximum allowed absolute error for adaptive stepsize control"
{
  (0.0:*) :: ""
} 1.0e-6

REAL maximum_relative_error "Maximum allowed relative error for adaptive stepsize control"
{
  (0.0:*) :: ""
} 1.0e-6

REAL RHS_error_weight "Weight of the RHS in the relative error calculation"
{
  0.0:* :: "should be between zero and one"
} 1.0

REAL safety_factor "Safety factor for stepsize control"
{
  (0.0:*) :: "should be less than one"
} 0.9

REAL maximum_decrease "Maximum stepsize decrease factor"
{
  (0.0:*) :: "should be larger than one"
} 10.0

REAL maximum_increase "Maximum stepsize increase factor"
{
  (0.0:*) :: "should be larger than one"
} 5.0



KEYWORD verbose "How verbose should MoL be?"
{
  "none"     :: "No output at all (not implemented)"
  "normal"   :: "Standard verbosity"
  "register" :: "List the variables registered as well"
  "extreme"  :: "Everything you never wanted to know"
} "normal"



shares: Cactus

USES CCTK_REAL cctk_initial_time