[Carpet] WaveMoL in parallel

Bela Szilagyi szilagyi at aei.mpg.de
Thu Mar 16 07:13:28 CET 2006


On Wednesday 15 March 2006 18:50, Erik Schnetter wrote:
...
>
> Near the boundary, this stencil has a width of 3 ghost zones.  The
> dissipation may also use one more ghost zone.  Peter?  If that is so,
> then there should be a check and a parameter warning for that.  Béla,
> I assume that there are no warnings printed when SummationByParts is
> initialised?
...
> > As a note, I had also tried to add my own dissipation right into
> > the WaveMoL
> > RHS routine and got the same result.
>
> What stencil width did you use for that?

SummationByParts is apparently happy with my parfile. 

What I notice (comparing HDF5 files) is a difference between the runs that is 
localized to the (outer) buffer zone's intersection with the ghostzones.

The reason SummationByParts may make a difference is that it actually uses 
more than just one ghost point, while the evolution code itself does not.  
Also, the near-boundary stencils for the dissipation are turned on, I 
believe, ONLY for penalty type boundaries, from what I understand:

in SummationByParts/src/dissipation.c "bbox" appears to be set to one for 
non-ghost boundaries that have to do something with multipach

  pen_sym_handle = SymmetryHandleOfName ( "multipatch" );

  for (d=0; d<6; ++d) {
    if ( symbnd[d] == pen_sym_handle && cctk_bbox[d] == 1 ) {
      bbox[d] = 1;
    } else {
      bbox[d] = 0;
    }
  }

while the Dissipation_*.F90 files only use modified SBP near-boundary stencils 
if this bbox is non-zero.

That is, I am not using anything else than centered (D_+D_-)^2 that is applied 
evenly at all points that are not too close to the boundary.

This is, by the way, the stencil I had also manually insert into WaveMoL, at 
points not too close to the boundary, to repeat the test.  

There's no place where I see a need for three ghost points.  Or does Carpet 
need that somewhere?  It should complain then.


I eliminated the problem by setting things as below.  My buffer_width setting 
is completely heuristic, but seems necessary.  Which I don't understand, 
given the "smart_outer_boundaries" feature being turned on.  Here I am using 
3 ghostzones and a higher order dissipation, but that is non-essential.  
Though may influence the minimum necessary buffer width.

Whatever the outcome, Erik, if you give me enough info (let it be some threads 
on the mailing list or a sketch of yours) I am willing to compile it into a 
section on "how to set up your grid with carpet" in the documentation.  Or, 
is there such a description already available?

# grid
#-----------------------------------------

Carpet::domain_from_coordbase = yes
Carpet::max_refinement_levels = 10

driver::ghost_size              = 3
Carpet::num_integrator_substeps = 3

Carpet::prolongation_order_space = 3
Carpet::prolongation_order_time  = 2

Carpet::convergence_level = 0

# Carpet::init_3_timelevels = yes

CoordBase::domainsize = minmax

CoordBase::xmin = -5.0
CoordBase::ymin = -5.0
CoordBase::zmin = -5.0
CoordBase::xmax =  5.0
CoordBase::ymax =  5.0
CoordBase::zmax =  5.0
CoordBase::dx   =  0.2
CoordBase::dy   =  0.2
CoordBase::dz   =  0.2

CartGrid3D::type         = coordbase
CartGrid3D::avoid_origin = no

CarpetRegrid::refinement_levels = 2
CarpetRegrid::refined_regions = manual-coordinate-list
CarpetRegrid::smart_outer_boundaries = yes
CarpetRegrid::coordinates = "
        [ [ ([-3.0,-3.0,-3.0]:[+3.0,+3.0,+3.0]:[0.10,0.10,0.10]) ] ]
"
CarpetRegrid::keep_same_grid_structure = yes
Carpet::buffer_width          = 2
CarpetLib::save_memory_during_regridding = yes



-- 
Bela Szilagyi
----------------------------------------------------
Max-Planck-Institut für Gravitationsphysik
Albert-Einstein-Institut
Tel: +49 331 567 7632
Fax: +49 331 567 7649
----------------------------------------------------




More information about the developers mailing list