[Carpet] getting dt for the finest grid
Erik Schnetter
schnetter at cct.lsu.edu
Tue Aug 28 19:27:16 CEST 2007
On Aug 28, 2007, at 11:55:09, Yosef Zlochower wrote:
> Hi,
>
> Can you clarify one point for me? Suppose I schedule a local routine
> in a schedule group "mygroup" and a global routine after "mygroup"
> but in the same schedule bin (and perhaps even within the same group),
> can I force the global routine to be called after carpet finishes
> calling
> the local routine on all the appropriate levels using the AFTER
> keyword?
No, that is very unfortunately not possible. The schedule is
executed by the flesh, not by Carpet, and this happens in level
mode. Global mode means only to skip some calls that would otherwise
happen, i.e., to ensure that this routine is only called once per
time step. It will be called together with the first or the last
level mode routine in a particular bin, depending on the bin. If
there is interest, I can implement new options such as GLOBAL_FIRST
and GLOBAL_LAST, or GLOBAL_COARSEST and GLOBAL_FINEST, which would do
what you intend. Ultimately the Cactus scheduler needs to be made
more flexible and taught about the recursive evolution.
Consider the case where one wants to evolve some additional equation
together with the main evolution system, e.g. some geodesic or some
global quantity, and which is coupled with the main evolution
system. Let's call this quantity Q. That means that e.g. the BSSN
gauge RHS depends on Q, and the RHS for Q depends on the metric via
an interpolation or reduction.
With mesh refinement, it is not trivial to make this happen
correctly. If you schedule the evolution for Q after the metric
evolution, then the metric evolution doesn't have access to Q. And
vice versa. Similar to the spacetime/hydro coupling, you want to
evolve Q at the same time as the BSSN equations. If you look at how
the BSSN evolution proceeds -- it is quite non-monotonic in time --
then you'll find that you have to evolve first Q a large step into
the future, then undo that for the next finer level and evolve it by
several smaller steps.
If you just evolve Q in many fine steps, then you cannot access a
good value for Q for the first coarse grid BSSN step, since that BSSN
step is the first thing that happens in the Berger-Oliger scheme.
Unless you come up with a clean scheme, you can only achieve
independent time evolution, which means a first order coupling
between Q and the BSSN quantities. The error will be first order in
the coarse grid time step, which can be significant.
If you can guarantee that Q depends only on the finest grid, and that
only the fine grid evolution depends on Q (e.g. if it has something
to do with excision), then you can evolve Q together with the finest
grid, achieving easily first order accuracy in the fine grid dt, or
(if you use MoL for Q) also e.g. 4th order coupling with BSSN.
If Q is a pure analysis quantity (which does not influence the RHS of
the BSSN system), then you are lucky.
-erik
> E.G.
>
> schedule.ccl:
>
> schedule MyGlobal in SomeEvolGroup AFTER MyGroup
> {
> options: global
> LANG: C
> } "do some interpolation of gfs"
>
> schedule group mygroup in SomeEvolGroup
> {
> } "schedule group"
>
> schedule MyEvolutionCode in mygroup
> {
> options: local
> LANG: C
> } "update the gfs"
--
Erik Schnetter <schnetter at cct.lsu.edu>
My email is as private as my paper mail. I therefore support encrypting
and signing email messages. Get my PGP key from www.keyserver.net.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : /archives/developers/attachments/20070828/837a1108/attachment.pgp
More information about the developers
mailing list