[ET Trac] [Einstein Toolkit] #797: N13CarpetRegrid211snap_coarseE does not hold after being enforced in cell centering
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Thu Apr 12 17:24:57 CDT 2012
#797: N13CarpetRegrid211snap_coarseE does not hold after being enforced in cell
centering
---------------------+------------------------------------------------------
Reporter: rhaas | Owner: eschnett
Type: defect | Status: new
Priority: major | Milestone:
Component: Carpet | Version:
Resolution: | Keywords:
---------------------+------------------------------------------------------
Comment (by rhaas):
Some carefully place printfs in property.cc show that for the regriddin in
question CarpetRegrid2 has put a small (2 cells high) strip of cells
between two boxes, ie. the two boxes for the NS are touching in one
corner:
{{{
+---------+
| 1 |
|_________|
+-----+ |
| 2 |
|__________+----+
| |
| 3 |
+----------+
}}}
Region "2" is the small one. In numbers from the code:
{{{
([22112,28896,23904]:[35744,28960,33952]:[64,64,64]/[345,451,373]:[558,452,530]/[214,2,158]/67624)
}}}
Snaptocoarse uses a
contracted_for(coarse_base).expand_for(fine_base).expand(buffer_with %
reffact) scheme to align the active (non-buffer) regions. Outputting the
strip, then after contraction and then after expand_for and finally the
expand (by 1 as it turns out) I get:
{{{
aa:
([22112,28896,23904]:[35744,28960,33952]:[64,64,64]/[345,451,373]:[558,452,530]/[214,2,158]/67624)
aa.expand():
([22112,28896,23904]:[35744,28960,33952]:[64,64,64]/[345,451,373]:[558,452,530]/[214,2,158]/67624)
aa.expand().contracted_for():
([22208,28992,24000]:[35648,28864,33856]:[128,128,128]/[173,226,187]:[278,225,264]/[106,0,78]/0)
aa.expand().contracted_for().expanded_for():
([2464,2464,2464]:[2400,2400,2400]:[64,64,64]/[38,38,38]:[37,37,37]/[0,0,0]/0)
aa.expand().contracted_for().expanded_for().expand():
([2400,2400,2400]:[2464,2464,2464]:[64,64,64]/[37,37,37]:[38,38,38]/[2,2,2]/8)
}}}
Notice that after expanded_for() the box is (a) empty and (b) has suddenly
moved (to what is the lower corner of baseextent(0,rl) for this level
[2464]). The final expand then turns it into a non-empty box in the wrong
spot. This is what eventually triggers the property-does-not-hold assert
(the test checks a difference between snapped and current grid to be empty
when &'ed with baseextent).
I'll try and understand why expanded_for() moves the box and if the logic
for alignment should also work with very small strips.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/797#comment:1>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list