Commit 17d3a468 authored by incardon's avatar incardon

Fixing rounding error for sub-domain calculation

parent 0eff581f
......@@ -1309,6 +1309,11 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IallreduceW.hpp \
../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IrecvW.hpp \
../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IsendW.hpp \
../../OpenFPM_data/src/util/check_no_pointers.hpp \
../../OpenFPM_data/src/util/common.hpp \
../../OpenFPM_data/src/util/util_debug.hpp \
/usr/include/c++/4.9.2/cxxabi.h \
/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h \
../../OpenFPM_vcluster/src/util/Vcluster_log.hpp \
../../OpenFPM_data/src/timer.hpp \
../../OpenFPM_data/src/Space/SpaceBox.hpp \
......@@ -1322,10 +1327,7 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
../../OpenFPM_data/src/util/object_util.hpp \
../../OpenFPM_data/src/util/object_creator.hpp \
../../OpenFPM_data/src/util/util_debug.hpp \
/usr/include/c++/4.9.2/cxxabi.h \
/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h \
../../OpenFPM_data/src/util/check_no_pointers.hpp \
../../OpenFPM_data/src/util/common.hpp \
../../OpenFPM_data/src/util/object_s_di.hpp \
../../OpenFPM_data/src/util/object_si_d.hpp \
../../OpenFPM_devices/src/memory/ExtPreAlloc.hpp \
......@@ -1400,7 +1402,6 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
../../OpenFPM_vcluster/src/Packer.hpp \
../../OpenFPM_data/src/Grid/util.hpp \
../../OpenFPM_data/src/Vector/util.hpp \
../../OpenFPM_data/src/util/util_debug.hpp \
../../OpenFPM_vcluster/src/Pack_stat.hpp \
../../OpenFPM_vcluster/src/Pack_selector.hpp \
../../OpenFPM_vcluster/src/Unpacker.hpp \
......@@ -4323,6 +4324,16 @@ Grid/grid_dist_id.hpp:
../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IsendW.hpp:
../../OpenFPM_data/src/util/check_no_pointers.hpp:
../../OpenFPM_data/src/util/common.hpp:
../../OpenFPM_data/src/util/util_debug.hpp:
/usr/include/c++/4.9.2/cxxabi.h:
/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h:
../../OpenFPM_vcluster/src/util/Vcluster_log.hpp:
../../OpenFPM_data/src/timer.hpp:
......@@ -4351,14 +4362,8 @@ Grid/grid_dist_key.hpp:
../../OpenFPM_data/src/util/util_debug.hpp:
/usr/include/c++/4.9.2/cxxabi.h:
/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h:
../../OpenFPM_data/src/util/check_no_pointers.hpp:
../../OpenFPM_data/src/util/common.hpp:
../../OpenFPM_data/src/util/object_s_di.hpp:
../../OpenFPM_data/src/util/object_si_d.hpp:
......@@ -4507,8 +4512,6 @@ Grid/grid_dist_key.hpp:
../../OpenFPM_data/src/Vector/util.hpp:
../../OpenFPM_data/src/util/util_debug.hpp:
../../OpenFPM_vcluster/src/Pack_stat.hpp:
../../OpenFPM_vcluster/src/Pack_selector.hpp:
......
......@@ -335,10 +335,24 @@ private:
// Initialize ss_box and bbox
if (loc_box.size() >= 0)
{
SpaceBox<dim,T> sub_d(loc_box.get(0));
SpaceBox<dim,size_t> sub_dc = loc_box.get(0);
SpaceBox<dim,T> sub_d(sub_dc);
sub_d.mul(spacing);
sub_d.expand(spacing);
// Fixing sub-domains to cover all the domain
// Fixing sub_d
// if (loc_box) is a the boundary we have to ensure that the box span the full
// domain (avoiding rounding off error)
for (size_t i = 0 ; i < dim ; i++)
{
if (sub_dc.getHigh(i) == cd.getGrid().size(i) - 1)
{
sub_d.setHigh(i,domain.getHigh(i));
}
}
// add the sub-domain
sub_domains.add(sub_d);
......@@ -349,12 +363,26 @@ private:
// convert into sub-domain
for (size_t s = 1 ; s < loc_box.size() ; s++)
{
SpaceBox<dim,T> sub_d(loc_box.get(s));
SpaceBox<dim,size_t> sub_dc = loc_box.get(s);
SpaceBox<dim,T> sub_d(sub_dc);
// re-scale and add spacing (the end is the starting point of the next domain + spacing)
sub_d.mul(spacing);
sub_d.expand(spacing);
// Fixing sub-domains to cover all the domain
// Fixing sub_d
// if (loc_box) is a the boundary we have to ensure that the box span the full
// domain (avoiding rounding off error)
for (size_t i = 0 ; i < dim ; i++)
{
if (sub_dc.getHigh(i) == cd.getGrid().size(i) - 1)
{
sub_d.setHigh(i,domain.getHigh(i));
}
}
// add the sub-domain
sub_domains.add(sub_d);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment