aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetRegrid/param.ccl
blob: 63d4f2c602195992636df3cd8e88ba09e3e0c735 (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
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
# Parameter definitions for thorn CarpetRegrid



BOOLEAN verbose "Print screen output while running"
{
} "no"

BOOLEAN veryverbose "Print much screen output while running"
{
} "no"



CCTK_INT refinement_levels "Number of refinement levels (including the base level)" STEERABLE=always
{
  1:* :: "must be positive, and must not be larger than Carpet::max_refinement_levels"
} 1



CCTK_INT regrid_every "Regrid every n time steps" STEERABLE=always
{
  -1   :: "regrid never"
   0   :: "regrid during initial data calculation only"
   1:* :: "regrid every n time steps"
} 0



KEYWORD activate_levels_on_regrid "Whether to activate or deactivate new levels on regridding" STEERABLE=always
{
  "none"     :: "Do not activate or deactivate any levels"
  "fixed"    :: "Activate or deactivate a fixed number of levels"
  "function" :: "Activate or deactivate a variable number of levels, determined by a user-specified function.  When this option is used, the parameters num_new_levels and activate_next have no effect and should not be set."
} "none"

CCTK_INT num_new_levels "When regridding, activate this many new levels (if possible).  Note that this will steer the parameter refinement_levels." STEERABLE=always
{
  : :: "Number of new levels to activate (negative numbers deactivate)"
} 0

CCTK_INT activate_next "The next iteration at which new levels should be activated" STEERABLE=always
{
  0: :: "Note that this parameter is steered when new levels are activated"
} 1

BOOLEAN keep_same_grid_structure "Do not allow the grid structure to change; only allow levels to be switched on or off" STEERABLE=always
{
} "no"



KEYWORD refined_regions "Regions where the grid is refined" STEERABLE=always
{
  "none"                   :: "Don't refine"
  "centre"                 :: "Refine around the centre of the grid only"
  "manual-gridpoints"      :: "Refine the regions specified by integer grid points l[123]i[xyz]{min,max}"
  "manual-coordinates"     :: "Refine the regions specified by coordinates l[123][xyz]{min,max}"
  "manual-gridpoint-list"  :: "Refine the regions specified by integer grid points in the parameter 'gridpoints'"
  "manual-coordinate-list" :: "Refine the regions specified by coordinates in the parameter 'coordinates'"
  "moving"                 :: "Refine a moving region"
  "automatic"              :: "Refine automatically"
} "centre"



BOOLEAN smart_outer_boundaries "Use the CoordBase interface for outer boundaries" STEERABLE=always
{
} no

BOOLEAN merge_overlapping_components "Merge overlapping components" STEERABLE=always
{
} no

BOOLEAN tracking "Enable tracking" STEERABLE=always
{
} no




# Region specifications for centre refinement

BOOLEAN symmetry_x "Refine the lower half in x-direction" STEERABLE=always
{
} "no"
BOOLEAN symmetry_y "Refine the lower half in y-direction" STEERABLE=always
{
} "no"
BOOLEAN symmetry_z "Refine the lower half in z-direction" STEERABLE=always
{
} "no"



# Region specifications for moving boxes

KEYWORD moving_trajectory "Type of trajectory" STEERABLE=always
{
  "point"  :: "Do not move"
  "circle" :: "Move in a circle"
} "point"

CCTK_REAL moving_region_radius "Radius of the moving region (on the first refined level)" STEERABLE=always
{
  (0: :: ""
} 1.0

CCTK_REAL moving_centre_x "x-coordinate of the centre" STEERABLE=always
{
  : :: ""
} 0.0

CCTK_REAL moving_centre_y "y-coordinate of the centre" STEERABLE=always
{
  : :: ""
} 0.0

CCTK_REAL moving_centre_z "z-coordinate of the centre" STEERABLE=always
{
  : :: ""
} 0.0

CCTK_REAL moving_circle_radius "Radius of the circle" STEERABLE=always
{
  0: :: ""
} 1.0

CCTK_REAL moving_circle_frequency "Angular frequency on the circle" STEERABLE=always
{
  0: :: ""
} 1.0



# Region specifications for manual gridpoint refinement

CCTK_INT l1ixmin "Lower boundary of level 1 box in x-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_INT l1iymin "Lower boundary of level 1 box in y-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_INT l1izmin "Lower boundary of level 1 box in z-direction" STEERABLE=always
{
  : :: ""
} 0

CCTK_INT l1ixmax "Upper boundary of level 1 box in x-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_INT l1iymax "Upper boundary of level 1 box in y-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_INT l1izmax "Upper boundary of level 1 box in z-direction" STEERABLE=always
{
  : :: ""
} -1



CCTK_INT l2ixmin "Lower boundary of level 2 box in x-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_INT l2iymin "Lower boundary of level 2 box in y-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_INT l2izmin "Lower boundary of level 2 box in z-direction" STEERABLE=always
{
  : :: ""
} 0

CCTK_INT l2ixmax "Upper boundary of level 2 box in x-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_INT l2iymax "Upper boundary of level 2 box in y-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_INT l2izmax "Upper boundary of level 2 box in z-direction" STEERABLE=always
{
  : :: ""
} -1



CCTK_INT l3ixmin "Lower boundary of level 3 box in x-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_INT l3iymin "Lower boundary of level 3 box in y-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_INT l3izmin "Lower boundary of level 3 box in z-direction" STEERABLE=always
{
  : :: ""
} 0

CCTK_INT l3ixmax "Upper boundary of level 3 box in x-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_INT l3iymax "Upper boundary of level 3 box in y-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_INT l3izmax "Upper boundary of level 3 box in z-direction" STEERABLE=always
{
  : :: ""
} -1



# Region specifications for manual coordinate refinement

CCTK_REAL l1xmin "Lower boundary of level 1 box in x-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_REAL l1ymin "Lower boundary of level 1 box in y-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_REAL l1zmin "Lower boundary of level 1 box in z-direction" STEERABLE=always
{
  : :: ""
} 0

CCTK_REAL l1xmax "Upper boundary of level 1 box in x-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_REAL l1ymax "Upper boundary of level 1 box in y-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_REAL l1zmax "Upper boundary of level 1 box in z-direction" STEERABLE=always
{
  : :: ""
} -1



CCTK_REAL l2xmin "Lower boundary of level 2 box in x-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_REAL l2ymin "Lower boundary of level 2 box in y-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_REAL l2zmin "Lower boundary of level 2 box in z-direction" STEERABLE=always
{
  : :: ""
} 0

CCTK_REAL l2xmax "Upper boundary of level 2 box in x-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_REAL l2ymax "Upper boundary of level 2 box in y-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_REAL l2zmax "Upper boundary of level 2 box in z-direction" STEERABLE=always
{
  : :: ""
} -1



CCTK_REAL l3xmin "Lower boundary of level 3 box in x-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_REAL l3ymin "Lower boundary of level 3 box in y-direction" STEERABLE=always
{
  : :: ""
} 0
CCTK_REAL l3zmin "Lower boundary of level 3 box in z-direction" STEERABLE=always
{
  : :: ""
} 0

CCTK_REAL l3xmax "Upper boundary of level 3 box in x-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_REAL l3ymax "Upper boundary of level 3 box in y-direction" STEERABLE=always
{
  : :: ""
} -1
CCTK_REAL l3zmax "Upper boundary of level 3 box in z-direction" STEERABLE=always
{
  : :: ""
} -1



# Refinement criteria for manual-gridpoint-list

CCTK_STRING gridpoints "List of bounding box gridpoints" STEERABLE=always
{
# We want the string to contain a list of bboxes.  Each bbox contains
# three vectors specifying the lower bound, upper bound, and stride.
# (The upper bound is inclusive.  All values are nonnegative integers.)
# The syntax for vectors, bboxes, and lists is described below.
# All spaces are optional.

# Almost human readable explanation follows.
# The specification is hierarchical.

# The following definitions are generic:
# VECT2(x) := "[ x, x ]"
#    two x, separated by commas, enclosed in square brackets
# VECT3(x) := "[ x, x, x ]"
#    three x, separated by commas, enclosed in square brackets
# LIST(x) := "[ {{ x, }* x}? ]"
#    zero or more x, separated by commas, enclosed in square brackets

# A domain is built up as follows:
# REGION   := VECT3(VECT2(double))
# REFLEVEL := LIST(REGION)
# DOMAIN   := LIST(REFLEVEL)

  "^$" :: "leave empty for no refinement"
  ".*" :: "[ [ ([<imin>,<jmin>,<kmin>]:[<imax>,<jmax>,<kmax>]:[<istride>,<jstride>,<kstride>]), ... ], ... ]"
} ""



# Refinement criteria for manual-coordinate-list

CCTK_STRING coordinates "List of bounding box coordinates" STEERABLE=always
{
# We want the string to contain a list of bboxes.  Each bbox contains
# three vectors specifying the lower bound, upper bound, and stride.
# (The upper bound is inclusive.  All values are nonnegative integers.)
# The syntax for vectors, bboxes, and lists is described below.
# All spaces are optional.

# Almost human readable explanation follows.
# The specification is hierarchical.

# The following definitions are generic:
# VECT2(x) := "[ x, x ]"
#    two x, separated by commas, enclosed in square brackets
# VECT3(x) := "[ x, x, x ]"
#    three x, separated by commas, enclosed in square brackets
# LIST(x) := "[ {{ x, }* x}? ]"
#    zero or more x, separated by commas, enclosed in square brackets

# A domain is built up as follows:
# REGION   := VECT3(VECT2(double))
# REFLEVEL := LIST(REGION)
# DOMAIN   := LIST(REFLEVEL)

  "^$" :: "leave empty for no refinement"
  ".*" :: "[ [ ([<xmin>,<ymin>,<zmin>]:[<xmax>,<ymax>,<zmax>]:[<xstride>,<ystride>,<zstride>]), ... ], ... ]"
} ""



# Offsets for manual-coordinate-list

RESTRICTED:

CCTK_INT num_offsets "Number of given offsets" STEERABLE=always
{
  0:10 :: ""
} 0

CCTK_INT offset_firstlevel "First (lowest) refinement level that should have an offset applied" STEERABLE=always
{
  1:* :: ""
} 1

CCTK_REAL offsetx[10] "x-coordinate of offset" STEERABLE=always
{
  (*:*) :: ""
} 0.0
CCTK_REAL offsety[10] "y-coordinate of offset" STEERABLE=always
{
  (*:*) :: ""
} 0.0
CCTK_REAL offsetz[10] "z-coordinate of offset" STEERABLE=always
{
  (*:*) :: ""
} 0.0

PRIVATE:



# Outer boundaries for manual-gridpoint-list and manual-coordinate-list

CCTK_STRING outerbounds "Outer boundaries" STEERABLE=always
{
  "^$" :: "leave empty for no outer boundaries"

# Each vector element is 0 or 1,
# where 0 is handled by synchronisation or prolongation,
# and 1 stands for a user-supplied ("outer") boundary condition.

# BND := " [ 0 , 0 ]"
# VECT := " [ BND , BND , BND ]"
# LIST := " [{{VECT ,}*VECT}? ]"

# Almost human readable explanation follows.
# The specification is hierarchical.

# The following definitions are generic:
# VECT2(x) := "[ x, x ]"
#    two x, separated by commas, enclosed in square brackets
# VECT3(x) := "[ x, x, x ]"
#    three x, separated by commas, enclosed in square brackets
# LIST(x) := "[ {{ x, }* x}? ]"
#    zero or more x, separated by commas, enclosed in square brackets

# A domain is built up as follows:
# REGION   := VECT3(VECT2(double))
# REFLEVEL := LIST(REGION)
# DOMAIN   := LIST(REFLEVEL)

  ".*" :: "[ [ [[?,?],[?,?],[?,?]], ... ], ...]"
} ""



# Refinement criteria for automatic refining

CCTK_INT minwidth "Minimum width of refined region" STEERABLE=always
{
  1:* :: "must be positive"
} 8

CCTK_REAL minfraction "Minimum fraction of points in need of refinement in a refined region" STEERABLE=always
{
  0:1 :: "must be positive and less than one"
} 0.75

CCTK_REAL maxerror "Maximum allowed error for non-refined grid points" STEERABLE=always
{
  *:* :: "everything goes"
} 1.0

CCTK_STRING errorvar "Name of grid function that contains the error" STEERABLE=always
{
  ".*" :: "must be the name of a grid function"
} ""