aboutsummaryrefslogtreecommitdiff
path: root/doc/documentation.tex
blob: 8165f8ca907703fcf2f21dbbdbb23e9ae144f076 (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
\documentclass{article}
\begin{document}

\title{CoordGauge}
\author{Tom Goodale}
\date{April 2002}
\maketitle

\abstract{Base thorn to provide the infrastructure for dynamic gauge selection}

\section{Purpose}

The CoordGauge implementation schedules five groups

CoordGauge

LapseSelect IN CoordGauge BEFORE PickCoordGauge
LapseApply  IN CoordGauge AFTER  PickCoordGauge

ShiftSelect IN CoordGauge BEFORE PickCoordGauge
ShiftApply  IN CoordGauge AFTER  PickCoordGauge

and one function

PickCoordGauge IN CoordGauge

and has two public grid scalars

selected\_lapse
selected\_shift

and two string parameters

lapse\_list
shift\_list

It also provides four aliased functions

\begin{verbatim}

int CoordGauge_RegisterLapse("lapse-name")
int CoordGauge_RegisterShift("shift-name")

CoordGauge_Lapse("lapse-name")
CoordGauge_Shift("shift-name")

\end{verbatim}

(If someone can think of better names, please say so 8-)

Then each thorn which wants to apply a coordinate gauge condition
registers itself, receiving a unique integer as an id, and schedules a
selection routine and an application routine in the appropriate schedule
groups.

The selection routine decides if this gauge condition should be applied at
this time, and calls the CoordGauge_Lapse/Shift aliased function.  (It
should check that it is actually in the appropriate parameter as a
minimum.)

The PickCoordGauge traverses the list of lapses/shifts and selects the
first one in the list which has called the CoordGauge\_Lapse/Shift aliased
function and sets the appropriate grid scalar to the id of this one.

The application routine checks to see if the grid scalar is set to its id,
and if so, applies the gauge condition.

Evolution thorns could schedule CoordGauge at the appropriate point or
points in their schedule.

An advantage of this scheme over the current one is that it provides the
selection routines with a full set of variables from which to decide
whether they should apply a guage or not.  So it becomes very easy to
choose to switch off maximal if the lapse has collapsed within a certain
volume, etc.

This is simpler than the previous scheme as there is no arbitrary 'bid'
floating around.  It also allows us to keep the logic of the final
selection in one place, thus allowing people to override this logic if
they need to.

\section{Comments}



% Automatically created from the ccl files by using gmake thorndoc
\include{interface}
\include{param}
\include{schedule}

\end{document}