![]() ![]() ![]() ![]() Next: Current Status Up: CoordGauge Previous: Abstract Contents The InfrastructureThe 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 PickCoordGaugeand one function PickCoordGauge IN CoordGaugeand has two public grid scalars selected_lapse selected_shiftand two string parameters lapse_list shift_list It also provides four aliased functions int CoordGauge_RegisterLapse("lapse-name") int CoordGauge_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
The 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.
![]() ![]() ![]() ![]() Next: Current Status Up: CoordGauge Previous: Abstract Contents |