aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetReduce
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/CarpetReduce')
-rw-r--r--Carpet/CarpetReduce/interface.ccl4
-rw-r--r--Carpet/CarpetReduce/schedule.ccl11
-rw-r--r--Carpet/CarpetReduce/src/mask_allocate.c3
-rw-r--r--Carpet/CarpetReduce/src/mask_test.c25
-rw-r--r--Carpet/CarpetReduce/test/nonstaggered_excl.par69
-rw-r--r--Carpet/CarpetReduce/test/nonstaggered_excl/weight..asc8
-rw-r--r--Carpet/CarpetReduce/test/nonstaggered_excl/weight.d.asc41
-rw-r--r--Carpet/CarpetReduce/test/nonstaggered_excl/weight.x.asc41
-rw-r--r--Carpet/CarpetReduce/test/nonstaggered_excl/weight.y.asc71
-rw-r--r--Carpet/CarpetReduce/test/nonstaggered_excl/weight.z.asc59
10 files changed, 325 insertions, 7 deletions
diff --git a/Carpet/CarpetReduce/interface.ccl b/Carpet/CarpetReduce/interface.ccl
index fdbf627b3..f75460de5 100644
--- a/Carpet/CarpetReduce/interface.ccl
+++ b/Carpet/CarpetReduce/interface.ccl
@@ -17,6 +17,8 @@ uses include header: typeprops.hh
uses include header: loopcontrol.h
+includes header: bits.h IN CarpetReduce_bits.h
+
CCTK_INT FUNCTION \
@@ -90,3 +92,5 @@ INT iweight TYPE=gf TAGS='prolongation="none" InterpNumTimelevels=1 checkpoint="
REAL weight TYPE=gf TAGS='prolongation="none" InterpNumTimelevels=1 checkpoint="no"' "Weight function"
REAL one TYPE=gf TAGS='prolongation="none" InterpNumTimelevels=1 checkpoint="no"' "Constant one"
+
+CCTK_REAL excised_cells TYPE=scalar TAGS='checkpoint="no"' "Excised (ignored) volume in the simulation domain, in terms of coarse grid cells"
diff --git a/Carpet/CarpetReduce/schedule.ccl b/Carpet/CarpetReduce/schedule.ccl
index cecc8500a..910f7872d 100644
--- a/Carpet/CarpetReduce/schedule.ccl
+++ b/Carpet/CarpetReduce/schedule.ccl
@@ -9,6 +9,7 @@ schedule CarpetReduceStartup at STARTUP
# Should this move to a new thorn MaskBase?
STORAGE: weight
+STORAGE: excised_cells
@@ -50,7 +51,11 @@ SCHEDULE MaskBase_InitMask IN MaskBase_SetupMaskAll AFTER MaskBase_AllocateMask
OPTIONS: global loop-local
} "Initialise the weight function"
-SCHEDULE GROUP SetupIMask IN MaskBase_SetupMaskAll AFTER MaskBase_InitMask
+SCHEDULE GROUP SetupIMaskInternal IN MaskBase_SetupMaskAll AFTER MaskBase_InitMask
+{
+} "Set up the integer weight function (schedule other routines in here)"
+
+SCHEDULE GROUP SetupIMask IN MaskBase_SetupMaskAll AFTER SetupIMaskInternal
{
} "Set up the integer weight function (schedule other routines in here)"
@@ -73,14 +78,14 @@ SCHEDULE MaskBase_TestMask IN MaskBase_SetupMaskAll AFTER SetupMask
# Should this move to CoordBase?
-SCHEDULE CoordBase_SetupMask IN SetupIMask
+SCHEDULE CoordBase_SetupMask IN SetupIMaskInternal
{
LANG: C
OPTIONS: global loop-local
} "Set up the outer boundaries of the weight function"
# Should this move to CarpetMask?
-SCHEDULE CarpetMaskSetup IN SetupIMask
+SCHEDULE CarpetMaskSetup IN SetupIMaskInternal
{
LANG: C
OPTIONS: global loop-singlemap
diff --git a/Carpet/CarpetReduce/src/mask_allocate.c b/Carpet/CarpetReduce/src/mask_allocate.c
index 1219b7b95..c1c28afeb 100644
--- a/Carpet/CarpetReduce/src/mask_allocate.c
+++ b/Carpet/CarpetReduce/src/mask_allocate.c
@@ -17,4 +17,7 @@ MaskBase_AllocateMask (CCTK_ARGUMENTS)
CCTK_EnableGroupStorage (cctkGH, "CarpetReduce::iweight");
CCTK_EnableGroupStorage (cctkGH, "CarpetReduce::one");
+
+ /* Initialise excised cell count */
+ * excised_cells = 0.0;
}
diff --git a/Carpet/CarpetReduce/src/mask_test.c b/Carpet/CarpetReduce/src/mask_test.c
index 82fa4f306..8725291a8 100644
--- a/Carpet/CarpetReduce/src/mask_test.c
+++ b/Carpet/CarpetReduce/src/mask_test.c
@@ -31,7 +31,7 @@ MaskBase_TestMask (CCTK_ARGUMENTS)
assert (weight_var >= 0);
assert (one_var >= 0);
- CCTK_REAL sum_weight;
+ CCTK_REAL sum_weight, all_excised_cells;
{
int const ierr = CCTK_Reduce (cctkGH,
@@ -41,6 +41,16 @@ MaskBase_TestMask (CCTK_ARGUMENTS)
1, one_var);
assert (ierr >= 0);
}
+ {
+ int const ierr = CCTK_ReduceLocalScalar (cctkGH,
+ proc,
+ sum,
+ excised_cells,
+ &all_excised_cells,
+ CCTK_VARIABLE_REAL);
+ assert (ierr >= 0);
+ *excised_cells = all_excised_cells;
+ }
@@ -102,9 +112,14 @@ MaskBase_TestMask (CCTK_ARGUMENTS)
} /* for m */
+ /* Don't count excised regions towards the domain volume */
+ domain_volume -= * excised_cells;
+
if (verbose) {
CCTK_VInfo (CCTK_THORNSTRING,
- "Simulation domain volume: %.17g", (double)domain_volume);
+ "Simulation domain volume: %.17g", (double)domain_volume);
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "Additional excised volume: %.17g", (double)*excised_cells);
}
int const there_is_a_problem =
@@ -113,9 +128,11 @@ MaskBase_TestMask (CCTK_ARGUMENTS)
if (there_is_a_problem) {
if (!verbose) {
CCTK_VInfo (CCTK_THORNSTRING,
- "Simulation domain volume: %.15g", (double)domain_volume);
+ "Simulation domain volume: %.17g", (double)domain_volume);
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "Additional excised volume: %.17g", (double)*excised_cells);
CCTK_VInfo (CCTK_THORNSTRING,
- "Reduction weight sum: %.15g", (double)sum_weight);
+ "Reduction weight sum: %.17g", (double)sum_weight);
}
CCTK_VWarn (CCTK_WARN_ALERT, __LINE__, __FILE__, CCTK_THORNSTRING,
"Simulation domain volume and reduction weight sum differ");
diff --git a/Carpet/CarpetReduce/test/nonstaggered_excl.par b/Carpet/CarpetReduce/test/nonstaggered_excl.par
new file mode 100644
index 000000000..3e96a09a0
--- /dev/null
+++ b/Carpet/CarpetReduce/test/nonstaggered_excl.par
@@ -0,0 +1,69 @@
+ActiveThorns = "IOUtil Boundary CartGrid3D CoordBase SymBase MoL InitBase"
+ActiveThorns = "Carpet CarpetLib CarpetInterp GSL LoopControl CarpetReduce CarpetSlab"
+
+#---Geometry---
+
+CoordBase::domainsize = minmax
+CoordBase::spacing = numcells
+CartGrid3D::type = coordbase
+driver::ghost_size = 3
+Carpet::domain_from_coordbase = yes
+Carpet::convergence_level = 0
+
+CoordBase::ncells_x = 11
+CoordBase::xmin = -1
+CoordBase::xmax = 1
+CoordBase::boundary_size_x_lower = 0
+CoordBase::boundary_size_x_upper = 0
+CoordBase::boundary_staggered_x_lower = True
+CoordBase::boundary_staggered_x_upper = True
+CoordBase::boundary_shiftout_x_lower = 0
+CoordBase::boundary_shiftout_x_upper = 0
+
+CoordBase::ncells_y = 14
+CoordBase::ymin = -1
+CoordBase::ymax = 1
+CoordBase::boundary_size_y_lower = 3
+CoordBase::boundary_size_y_upper = 3
+CoordBase::boundary_staggered_y_lower = False
+CoordBase::boundary_staggered_y_upper = False
+CoordBase::boundary_shiftout_y_lower = 1
+CoordBase::boundary_shiftout_y_upper = 1
+
+CoordBase::ncells_z = 14
+CoordBase::zmin = 0
+CoordBase::zmax = 1
+CoordBase::boundary_size_z_lower = 2
+CoordBase::boundary_size_z_upper = 2
+CoordBase::boundary_staggered_z_lower = False
+CoordBase::boundary_staggered_z_upper = False
+CoordBase::boundary_shiftout_z_lower = 0
+CoordBase::boundary_shiftout_z_upper = 0
+
+#---Evolution---
+
+Cactus::terminate = iteration
+Cactus::cctk_itlast = 2
+
+#---exlude sphere---
+ActiveThorns = "SphericalSurface CarpetMask"
+SphericalSurface::nsurfaces = 1
+SphericalSurface::set_spherical[0] = yes
+SphericalSurface::radius[0] = 0.5
+CarpetMask::excluded_surface[0] = 0 # -1 to ignore
+
+
+#---Output---
+
+ActiveThorns = "CarpetIOASCII CarpetIOBasic"
+IO::out_dir = $parfile
+IO::parfile_write = "no"
+IO::out_fileinfo = "none"
+IOBasic::outInfo_every = 1
+Cactus::cctk_full_warnings = yes
+Carpet::print_timestats_every = 0
+CarpetReduce::verbose = yes
+IOASCII::out1D_every = 1
+IOASCII::out0D_every = 1
+IOASCII::out1D_vars = "CarpetReduce::weight"
+IOASCII::out0D_vars = "CarpetReduce::weight"
diff --git a/Carpet/CarpetReduce/test/nonstaggered_excl/weight..asc b/Carpet/CarpetReduce/test/nonstaggered_excl/weight..asc
new file mode 100644
index 000000000..3901e710d
--- /dev/null
+++ b/Carpet/CarpetReduce/test/nonstaggered_excl/weight..asc
@@ -0,0 +1,8 @@
+# 0D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 5 10 1 0 0 0 0 0
+
+1 0 0 0 0 5 10 1 1 0 0 0 0
+
+2 0 0 0 0 5 10 1 2 0 0 0 0
+
diff --git a/Carpet/CarpetReduce/test/nonstaggered_excl/weight.d.asc b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.d.asc
new file mode 100644
index 000000000..ed836c621
--- /dev/null
+++ b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.d.asc
@@ -0,0 +1,41 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 0 0 0 -0.909090909090909 -1.42857142857143 -0.0714285714285714 0
+0 0 0 0 0 1 1 1 0 -0.727272727272727 -1.28571428571429 0 0
+0 0 0 0 0 2 2 2 0 -0.545454545454545 -1.14285714285714 0.0714285714285714 0
+0 0 0 0 0 3 3 3 0 -0.363636363636364 -1 0.142857142857143 0.5
+0 0 0 0 0 4 4 4 0 -0.181818181818182 -0.857142857142857 0.214285714285714 1
+0 0 0 0 0 5 5 5 0 0 -0.714285714285714 0.285714285714286 1
+0 0 0 0 0 6 6 6 0 0.181818181818182 -0.571428571428571 0.357142857142857 1
+0 0 0 0 0 7 7 7 0 0.363636363636364 -0.428571428571429 0.428571428571429 1
+0 0 0 0 0 8 8 8 0 0.545454545454545 -0.285714285714286 0.5 1
+0 0 0 0 0 9 9 9 0 0.727272727272727 -0.142857142857143 0.571428571428571 1
+0 0 0 0 0 10 10 10 0 0.909090909090909 0 0.642857142857143 1
+
+
+1 0 0 0 0 0 0 0 1 -0.909090909090909 -1.42857142857143 -0.0714285714285714 0
+1 0 0 0 0 1 1 1 1 -0.727272727272727 -1.28571428571429 0 0
+1 0 0 0 0 2 2 2 1 -0.545454545454545 -1.14285714285714 0.0714285714285714 0
+1 0 0 0 0 3 3 3 1 -0.363636363636364 -1 0.142857142857143 0.5
+1 0 0 0 0 4 4 4 1 -0.181818181818182 -0.857142857142857 0.214285714285714 1
+1 0 0 0 0 5 5 5 1 0 -0.714285714285714 0.285714285714286 1
+1 0 0 0 0 6 6 6 1 0.181818181818182 -0.571428571428571 0.357142857142857 1
+1 0 0 0 0 7 7 7 1 0.363636363636364 -0.428571428571429 0.428571428571429 1
+1 0 0 0 0 8 8 8 1 0.545454545454545 -0.285714285714286 0.5 1
+1 0 0 0 0 9 9 9 1 0.727272727272727 -0.142857142857143 0.571428571428571 1
+1 0 0 0 0 10 10 10 1 0.909090909090909 0 0.642857142857143 1
+
+
+2 0 0 0 0 0 0 0 2 -0.909090909090909 -1.42857142857143 -0.0714285714285714 0
+2 0 0 0 0 1 1 1 2 -0.727272727272727 -1.28571428571429 0 0
+2 0 0 0 0 2 2 2 2 -0.545454545454545 -1.14285714285714 0.0714285714285714 0
+2 0 0 0 0 3 3 3 2 -0.363636363636364 -1 0.142857142857143 0.5
+2 0 0 0 0 4 4 4 2 -0.181818181818182 -0.857142857142857 0.214285714285714 1
+2 0 0 0 0 5 5 5 2 0 -0.714285714285714 0.285714285714286 1
+2 0 0 0 0 6 6 6 2 0.181818181818182 -0.571428571428571 0.357142857142857 1
+2 0 0 0 0 7 7 7 2 0.363636363636364 -0.428571428571429 0.428571428571429 1
+2 0 0 0 0 8 8 8 2 0.545454545454545 -0.285714285714286 0.5 1
+2 0 0 0 0 9 9 9 2 0.727272727272727 -0.142857142857143 0.571428571428571 1
+2 0 0 0 0 10 10 10 2 0.909090909090909 0 0.642857142857143 1
+
+
diff --git a/Carpet/CarpetReduce/test/nonstaggered_excl/weight.x.asc b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.x.asc
new file mode 100644
index 000000000..821556042
--- /dev/null
+++ b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.x.asc
@@ -0,0 +1,41 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 10 1 0 -0.909090909090909 0 0 0.5
+0 0 0 0 0 1 10 1 0 -0.727272727272727 0 0 0.5
+0 0 0 0 0 2 10 1 0 -0.545454545454545 0 0 0.5
+0 0 0 0 0 3 10 1 0 -0.363636363636364 0 0 0
+0 0 0 0 0 4 10 1 0 -0.181818181818182 0 0 0
+0 0 0 0 0 5 10 1 0 0 0 0 0
+0 0 0 0 0 6 10 1 0 0.181818181818182 0 0 0
+0 0 0 0 0 7 10 1 0 0.363636363636364 0 0 0
+0 0 0 0 0 8 10 1 0 0.545454545454545 0 0 0.5
+0 0 0 0 0 9 10 1 0 0.727272727272727 0 0 0.5
+0 0 0 0 0 10 10 1 0 0.909090909090909 0 0 0.5
+
+
+1 0 0 0 0 0 10 1 1 -0.909090909090909 0 0 0.5
+1 0 0 0 0 1 10 1 1 -0.727272727272727 0 0 0.5
+1 0 0 0 0 2 10 1 1 -0.545454545454545 0 0 0.5
+1 0 0 0 0 3 10 1 1 -0.363636363636364 0 0 0
+1 0 0 0 0 4 10 1 1 -0.181818181818182 0 0 0
+1 0 0 0 0 5 10 1 1 0 0 0 0
+1 0 0 0 0 6 10 1 1 0.181818181818182 0 0 0
+1 0 0 0 0 7 10 1 1 0.363636363636364 0 0 0
+1 0 0 0 0 8 10 1 1 0.545454545454545 0 0 0.5
+1 0 0 0 0 9 10 1 1 0.727272727272727 0 0 0.5
+1 0 0 0 0 10 10 1 1 0.909090909090909 0 0 0.5
+
+
+2 0 0 0 0 0 10 1 2 -0.909090909090909 0 0 0.5
+2 0 0 0 0 1 10 1 2 -0.727272727272727 0 0 0.5
+2 0 0 0 0 2 10 1 2 -0.545454545454545 0 0 0.5
+2 0 0 0 0 3 10 1 2 -0.363636363636364 0 0 0
+2 0 0 0 0 4 10 1 2 -0.181818181818182 0 0 0
+2 0 0 0 0 5 10 1 2 0 0 0 0
+2 0 0 0 0 6 10 1 2 0.181818181818182 0 0 0
+2 0 0 0 0 7 10 1 2 0.363636363636364 0 0 0
+2 0 0 0 0 8 10 1 2 0.545454545454545 0 0 0.5
+2 0 0 0 0 9 10 1 2 0.727272727272727 0 0 0.5
+2 0 0 0 0 10 10 1 2 0.909090909090909 0 0 0.5
+
+
diff --git a/Carpet/CarpetReduce/test/nonstaggered_excl/weight.y.asc b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.y.asc
new file mode 100644
index 000000000..6260ee906
--- /dev/null
+++ b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.y.asc
@@ -0,0 +1,71 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 5 0 1 0 0 -1.42857142857143 0 0
+0 0 0 0 0 5 1 1 0 0 -1.28571428571429 0 0
+0 0 0 0 0 5 2 1 0 0 -1.14285714285714 0 0
+0 0 0 0 0 5 3 1 0 0 -1 0 0.25
+0 0 0 0 0 5 4 1 0 0 -0.857142857142857 0 0.5
+0 0 0 0 0 5 5 1 0 0 -0.714285714285714 0 0.5
+0 0 0 0 0 5 6 1 0 0 -0.571428571428571 0 0.5
+0 0 0 0 0 5 7 1 0 0 -0.428571428571429 0 0
+0 0 0 0 0 5 8 1 0 0 -0.285714285714286 0 0
+0 0 0 0 0 5 9 1 0 0 -0.142857142857143 0 0
+0 0 0 0 0 5 10 1 0 0 0 0 0
+0 0 0 0 0 5 11 1 0 0 0.142857142857143 0 0
+0 0 0 0 0 5 12 1 0 0 0.285714285714286 0 0
+0 0 0 0 0 5 13 1 0 0 0.428571428571429 0 0
+0 0 0 0 0 5 14 1 0 0 0.571428571428571 0 0.5
+0 0 0 0 0 5 15 1 0 0 0.714285714285714 0 0.5
+0 0 0 0 0 5 16 1 0 0 0.857142857142857 0 0.5
+0 0 0 0 0 5 17 1 0 0 1 0 0.25
+0 0 0 0 0 5 18 1 0 0 1.14285714285714 0 0
+0 0 0 0 0 5 19 1 0 0 1.28571428571429 0 0
+0 0 0 0 0 5 20 1 0 0 1.42857142857143 0 0
+
+
+1 0 0 0 0 5 0 1 1 0 -1.42857142857143 0 0
+1 0 0 0 0 5 1 1 1 0 -1.28571428571429 0 0
+1 0 0 0 0 5 2 1 1 0 -1.14285714285714 0 0
+1 0 0 0 0 5 3 1 1 0 -1 0 0.25
+1 0 0 0 0 5 4 1 1 0 -0.857142857142857 0 0.5
+1 0 0 0 0 5 5 1 1 0 -0.714285714285714 0 0.5
+1 0 0 0 0 5 6 1 1 0 -0.571428571428571 0 0.5
+1 0 0 0 0 5 7 1 1 0 -0.428571428571429 0 0
+1 0 0 0 0 5 8 1 1 0 -0.285714285714286 0 0
+1 0 0 0 0 5 9 1 1 0 -0.142857142857143 0 0
+1 0 0 0 0 5 10 1 1 0 0 0 0
+1 0 0 0 0 5 11 1 1 0 0.142857142857143 0 0
+1 0 0 0 0 5 12 1 1 0 0.285714285714286 0 0
+1 0 0 0 0 5 13 1 1 0 0.428571428571429 0 0
+1 0 0 0 0 5 14 1 1 0 0.571428571428571 0 0.5
+1 0 0 0 0 5 15 1 1 0 0.714285714285714 0 0.5
+1 0 0 0 0 5 16 1 1 0 0.857142857142857 0 0.5
+1 0 0 0 0 5 17 1 1 0 1 0 0.25
+1 0 0 0 0 5 18 1 1 0 1.14285714285714 0 0
+1 0 0 0 0 5 19 1 1 0 1.28571428571429 0 0
+1 0 0 0 0 5 20 1 1 0 1.42857142857143 0 0
+
+
+2 0 0 0 0 5 0 1 2 0 -1.42857142857143 0 0
+2 0 0 0 0 5 1 1 2 0 -1.28571428571429 0 0
+2 0 0 0 0 5 2 1 2 0 -1.14285714285714 0 0
+2 0 0 0 0 5 3 1 2 0 -1 0 0.25
+2 0 0 0 0 5 4 1 2 0 -0.857142857142857 0 0.5
+2 0 0 0 0 5 5 1 2 0 -0.714285714285714 0 0.5
+2 0 0 0 0 5 6 1 2 0 -0.571428571428571 0 0.5
+2 0 0 0 0 5 7 1 2 0 -0.428571428571429 0 0
+2 0 0 0 0 5 8 1 2 0 -0.285714285714286 0 0
+2 0 0 0 0 5 9 1 2 0 -0.142857142857143 0 0
+2 0 0 0 0 5 10 1 2 0 0 0 0
+2 0 0 0 0 5 11 1 2 0 0.142857142857143 0 0
+2 0 0 0 0 5 12 1 2 0 0.285714285714286 0 0
+2 0 0 0 0 5 13 1 2 0 0.428571428571429 0 0
+2 0 0 0 0 5 14 1 2 0 0.571428571428571 0 0.5
+2 0 0 0 0 5 15 1 2 0 0.714285714285714 0 0.5
+2 0 0 0 0 5 16 1 2 0 0.857142857142857 0 0.5
+2 0 0 0 0 5 17 1 2 0 1 0 0.25
+2 0 0 0 0 5 18 1 2 0 1.14285714285714 0 0
+2 0 0 0 0 5 19 1 2 0 1.28571428571429 0 0
+2 0 0 0 0 5 20 1 2 0 1.42857142857143 0 0
+
+
diff --git a/Carpet/CarpetReduce/test/nonstaggered_excl/weight.z.asc b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.z.asc
new file mode 100644
index 000000000..af1ff88b8
--- /dev/null
+++ b/Carpet/CarpetReduce/test/nonstaggered_excl/weight.z.asc
@@ -0,0 +1,59 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 5 10 0 0 0 0 -0.0714285714285714 0
+0 0 0 0 0 5 10 1 0 0 0 0 0
+0 0 0 0 0 5 10 2 0 0 0 0.0714285714285714 0
+0 0 0 0 0 5 10 3 0 0 0 0.142857142857143 0
+0 0 0 0 0 5 10 4 0 0 0 0.214285714285714 0
+0 0 0 0 0 5 10 5 0 0 0 0.285714285714286 0
+0 0 0 0 0 5 10 6 0 0 0 0.357142857142857 0
+0 0 0 0 0 5 10 7 0 0 0 0.428571428571429 0
+0 0 0 0 0 5 10 8 0 0 0 0.5 0
+0 0 0 0 0 5 10 9 0 0 0 0.571428571428571 1
+0 0 0 0 0 5 10 10 0 0 0 0.642857142857143 1
+0 0 0 0 0 5 10 11 0 0 0 0.714285714285714 1
+0 0 0 0 0 5 10 12 0 0 0 0.785714285714286 1
+0 0 0 0 0 5 10 13 0 0 0 0.857142857142857 1
+0 0 0 0 0 5 10 14 0 0 0 0.928571428571429 1
+0 0 0 0 0 5 10 15 0 0 0 1 0.5
+0 0 0 0 0 5 10 16 0 0 0 1.07142857142857 0
+
+
+1 0 0 0 0 5 10 0 1 0 0 -0.0714285714285714 0
+1 0 0 0 0 5 10 1 1 0 0 0 0
+1 0 0 0 0 5 10 2 1 0 0 0.0714285714285714 0
+1 0 0 0 0 5 10 3 1 0 0 0.142857142857143 0
+1 0 0 0 0 5 10 4 1 0 0 0.214285714285714 0
+1 0 0 0 0 5 10 5 1 0 0 0.285714285714286 0
+1 0 0 0 0 5 10 6 1 0 0 0.357142857142857 0
+1 0 0 0 0 5 10 7 1 0 0 0.428571428571429 0
+1 0 0 0 0 5 10 8 1 0 0 0.5 0
+1 0 0 0 0 5 10 9 1 0 0 0.571428571428571 1
+1 0 0 0 0 5 10 10 1 0 0 0.642857142857143 1
+1 0 0 0 0 5 10 11 1 0 0 0.714285714285714 1
+1 0 0 0 0 5 10 12 1 0 0 0.785714285714286 1
+1 0 0 0 0 5 10 13 1 0 0 0.857142857142857 1
+1 0 0 0 0 5 10 14 1 0 0 0.928571428571429 1
+1 0 0 0 0 5 10 15 1 0 0 1 0.5
+1 0 0 0 0 5 10 16 1 0 0 1.07142857142857 0
+
+
+2 0 0 0 0 5 10 0 2 0 0 -0.0714285714285714 0
+2 0 0 0 0 5 10 1 2 0 0 0 0
+2 0 0 0 0 5 10 2 2 0 0 0.0714285714285714 0
+2 0 0 0 0 5 10 3 2 0 0 0.142857142857143 0
+2 0 0 0 0 5 10 4 2 0 0 0.214285714285714 0
+2 0 0 0 0 5 10 5 2 0 0 0.285714285714286 0
+2 0 0 0 0 5 10 6 2 0 0 0.357142857142857 0
+2 0 0 0 0 5 10 7 2 0 0 0.428571428571429 0
+2 0 0 0 0 5 10 8 2 0 0 0.5 0
+2 0 0 0 0 5 10 9 2 0 0 0.571428571428571 1
+2 0 0 0 0 5 10 10 2 0 0 0.642857142857143 1
+2 0 0 0 0 5 10 11 2 0 0 0.714285714285714 1
+2 0 0 0 0 5 10 12 2 0 0 0.785714285714286 1
+2 0 0 0 0 5 10 13 2 0 0 0.857142857142857 1
+2 0 0 0 0 5 10 14 2 0 0 0.928571428571429 1
+2 0 0 0 0 5 10 15 2 0 0 1 0.5
+2 0 0 0 0 5 10 16 2 0 0 1.07142857142857 0
+
+