[ET Trac] [Einstein Toolkit] #2030: Multi-block boundaries leave uninitialized boundary points

Einstein Toolkit trac-noreply at einsteintoolkit.org
Tue Apr 18 07:03:26 CDT 2017


#2030: Multi-block boundaries leave uninitialized boundary points
------------------------------------+---------------------------------------
  Reporter:  eschnett               |       Owner:                     
      Type:  defect                 |      Status:  new                
  Priority:  major                  |   Milestone:                     
 Component:  EinsteinToolkit thorn  |     Version:  development version
Resolution:                         |    Keywords:                     
------------------------------------+---------------------------------------

Comment (by hinder):

 When syncing ghost zones (for interprocess communication), each ghost
 point can be updated in precisely one way, which is to set its value to
 the value held by the process which "owns" the real point.  i.e., we have
 only one "boundary condition" which can be applied to that point.  A
 "standard" interpatch boundary point is the same; in the usual case, there
 is a single component on a single process which owns the point, and the
 boundary point is filled by interpolation from the neighbouring points in
 that component.  Similarly, a "standard" outer boundary point can be
 filled by applying the physical boundary condition.  However, a problem
 arises when a point is BOTH an outer boundary point and an interpatch
 boundary point.  This would happen for a point at r = r_max and phi =
 phi_max.

 I think this problem only happens during initialisation, not evolution.
 The steps are these:

 1. CCTK_INITIAL/ADMBase_InitialData: TwoPunctures initialises the ADMBase
 metric variables pointwise at every point on the grid.
 2. CCTK_INITIAL/ML_BSSN::ML_BSSN_InitialADMBase2Interior: McLachlan
 computes the BSSN variables from the ADMBase variables.  The BSSN Gamma
 variables are initialised using finite differencing, since they are
 computed from derivatives of the metric.  This means that they are set
 only on "interior" points.
 3. CCTK_INITIAL/ML_BSSN_Helper::ML_BSSN_ExtrapolateGammas: Fill the outer
 boundary of the Gammas by extrapolation (radial) from the interior.
 4. CCTK_POSTINITIAL/MoL_PostStep/Interpolate2::Interpolate2ApplyBC: The
 interpatch boundaries are applied, but ONLY to points which have a wide
 enough stencil. Specifically, the points on both the outer boundary and
 the interpatch boundary are NOT set.

 The extrapolation (step 3) extrapolates uninitialised points into the
 "corners" (those points which are both r = r_max and phi = phi_max)
 because the phi interpatch boundary points haven't been set yet.  The
 interpatch boundary condition doesn't touch these points, because the
 interpolation stencil cannot be applied so close to the outer boundary.
 Hence, the points remain uninitialised.

 If the interpatch BC was applied first, its stencil would include the
 uninitialised outer boundary points, and corrupt the interior.  The
 extrapolation into the outer boundary would then use this corrupted value,
 so you would have uninitialised data in both the interior and the
 exterior.

 A working solution is to follow the above steps, which leaves
 uninitialised corner points, and then apply the radial extrapolation a
 second time. We could probably implement this by manually scheduling
 ML_BSSN_Helper::ML_BSSN_ExtrapolateGammas in CCTK_POSTINITIAL after
 ML_BSSN_ADMBase_ApplyBCs.  I think the reason I didn't do this originally
 was that I wanted a general solution to this problem in Kranc, and that
 was a harder problem.  Here, we seem to be using the helper thorn to do
 this extrapolation anyway, so writing manual code to fix it seems like the
 best option. ... I have implemented this and put it on a branch of
 McLachlan.  See
 https://bitbucket.org/einsteintoolkit/mclachlan/branch/ianhinder/initgammas.
 It compiles and passes the tests, but there is no test for this problem.
 If someone has an example which currently shows uninitialised points,
 please try it with this version and see if it is fixed.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/2030#comment:4>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list