[Carpet] when does Carpet call scheduled routines?

Erik Schnetter schnetter at cct.lsu.edu
Mon May 1 23:02:55 CEST 2006


On May 1, 2006, at 14:33:04, Jonathan Thornburg wrote:

> Hi, Erik,
>
> Thanks for your prompt and informative responce to my questions.
> I have a couple of further followup-questions:
>
>
> You wrote:
>> The basic algorithm in Carpet is the
>> Berger-Oliger time evolution scheme, which recursively evolves the
>> coarse levels before taking multiple steps on the finer levels.
>> There is a figure in CQG 21 1465 (gr-qc 0310042) which explains this
>> graphically.
>
> Ok, I understand this part.
>
>
>> There is also a latex document Carpet/Carpet/doc/
>> schedule.tex which details which schedule bins are executed in what
>> order in that recursive scheme.  Note the difference between initial
>> data and the time evolution loop.
>
> There is also a latex document  doc/internals.tex  which gives what
> seems to be a somewhat different description.  For example:
> * Section 3.2.1 "Initialization" gives BASEGRID (algorithm step 5)
>    *inside* the loop-over-refinement-levels, whereas  Carpet/doc/ 
> schedule.tex
>    shows BASEGRID *outside* the loop.

It is inside.  I will correct this.

> * Section 3.2.2 "Evolution" says (algorithm steps 6,7,8) that PRESTEP,
>    EVOL, and POSTSTEP for a given level are executed in sequence  
> with no
>    other levels intervening, whereas  Carpet/doc/schedule.tex  says
>    the recursion to other levels happens between EVOL and
>    POSTRESTRICT-and-POSTSTEP.

The recursion happens between evol and poststep.

> How does Carpet handle "multi-models" in the sense of
>
>> INFO (Carpet): Multi-Model listing:
>>    model 0: "world"
>> INFO (Carpet): Multi-Model processor distribution:
>>    processor 0: model 0 "world"
>> INFO (Carpet): Multi-Model: This is processor 0, model 0 "world"
>
> ?  That is, how are the executions of the different "multi-model  
> models"
> interleaved?

Ah, you want all the details.  Since the flesh contains global  
variables, it is at the moment not feasible to run more than one  
model in the same flesh.  Hence I cheated.  Different models have to  
run on different processors.  They are completely independent; they  
need to have different parameter files, and they can also have  
different executables.  The communication between the models happens  
e.g. via thorn TAT/Slab, which can exchange information across model  
boundaries.

The time evolution in different models is completely decoupled, and  
it is the task of the user to ensure that they remain synchronised.   
If there is mesh refinement near the model boundary, the user has to  
ensure that they have the same number of refinement levels, or that  
the inter-model boundary condition (which has to be written by the  
user anyway) interpolates in time if necessary.  In principle, the  
different models can even take incommensurate time steps.  All that  
TAT/Slab does is transfer information between the two models; it is  
nothing more than a glorified Alltoallv MPI call.

-erik

-- 
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/20060501/434cfb40/attachment.pgp 


More information about the developers mailing list