xx CoordGauge

CoordGauge

Tom Goodale

Date

Abstract

This thorn provides an infrastructure for dynamic gauge selection. However, at present (summer 2004) many thorns don’t use this infrastructure.

1 The Infrastructure The CoordGauge implementation schedules five groups:

CoordGauge
LapseSelectxINxCoordGaugexBEFORExPickCoordGauge
LapseApplyxxINxCoordGaugexAFTERxxPickCoordGauge
ShiftSelectxINxCoordGaugexBEFORExPickCoordGauge
ShiftApplyxxINxCoordGaugexAFTERxxPickCoordGauge

and one function

PickCoordGaugexINxCoordGauge

and has two public grid scalars

selected_lapse
selected_shift

and two string parameters

lapse_list
shift_list

It also provides four aliased functions

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

(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 function 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.

2 Current Status

As of summer 2004, many thorns don’t use the above mechanism, instead they directly extend

ADMBase::lapse_evolution_method and/or ADMBase::shift_evolution_method. That is, the thorn

implementing a coordinate condition thorn says in its param.ccl:

EXTENDSxKEYWORDxlapse_evolution_methodx"Whichxlapsexconditionxtoxuse"
{
"super-duper"x::x"myxsuper-duperxnewxlapsexcondition"
}x""

(and/or the equivalent for shift_evolution_method).

The thorn then schedules a routine in some suitable schedule bin/group (probably CCTK_PRESTEP or

MOL_PRESTEP) to check ADMBase::lapse_evolution_method and/or ADMBase::shift_evolution_method, and

if they’re equal to the appropriate string, it does the coordinate condition.

3 Parameters

11slicingxverbose 10Scope: privatex01 KEYWORD

11Description: Print information on current slicing

11 Range 10 x01 Default: no
11yes  10print slicing info
11no  10do not print slicing info

11

11lapsexlist  10Scope: restrictedx01  STRING

11Description: List of allowed lapses to use

11 Range 10 x01 Default: (none)
11.*  10Any string

11

11shiftxlist  10Scope: restrictedx01  STRING

11Description: List of allowed shifts to use

11 Range 10 x01 Default: (none)
11.*  10Any string

11

11lapsexevolutionxmethod 10Scope: shared from ADMBASEx01  KEYWORD

11Extends ranges:

11coordgauge  10Use dynamic stuff from CoordGauge

11

11shiftxevolutionxmethod 10Scope: shared from ADMBASEx01  KEYWORD

11Extends ranges:

11coordgauge  10Use dynamic stuff from CoordGauge

4 Interfaces

General Implements: coordgauge

Grid Variables

4.0.1 PUBLIC GROUPS

11x Group Names x10x Variable Names xx01 Details x11x
11 slicingxflags 10 x01 compact110
11                 10 activexslicingxhandle x01 description11Slicing and shift stuff
11                 10  x01 dimensions110
11                 10  x01 distribution11CONSTANT
11                 10  x01 group type11SCALAR
11                 10  x01 timelevels111
11                 10  x01variable type11INT

11

Adds header: Slicing.h

5 Schedule This section lists all the variables which are assigned storage by thorn EinsteinBase/CoordGauge. Storage can either last for the duration of the run (Always means that if this thorn is activated storage will be assigned, Conditional means that if this thorn is activated storage will be assigned for the duration of the run if some condition is met), or can be turned on for the duration of a schedule function.

Storage x

11Always: 11x
11slicingxflags11x

11x  11x

11

Scheduled Functions

CCTKxWRAGH x einsteinxactivateslicing x initialize slicing, setup priorities for mixed slicings x

11x11Language:11c
11 x 11Type: 11function

11

CCTKxWRAGH x einsteinxsetnextslicing x identify the slicing for the next iteration x

11x11After: 11einsteinxactivateslicing
11 x 11Language:11c
11 x 11Type: 11function

11

CCTKxPRESTEP x einsteinxsetnextslicing x identify the slicing for the next iteration x

11x11Language:11c
11 x 11Type: 11function

11

CCTKxPRESTEP (conditional) x coordgauge x coordinate gauge group x

11x11Type:11group

11

CoordGauge (conditional) x lapseselect x lapse selection group

11x11Before:11pickcoordgauge
11 x 11Type: 11group

11

CoordGauge (conditional) x lapseapply x lapse application group x

11x11After:11pickcoordgauge
11 x 11Type:11group

11

CoordGauge (conditional) x shiftselect x shift selection group x

11x11Before:11pickcoordgauge
11 x 11Type: 11group

11

CoordGauge (conditional) x shiftapply x shift application group x

11x11After:11pickcoordgauge
11 x 11Type:11group