From b2aa10f71bc8acf92f127fde92adeb613578eb79 Mon Sep 17 00:00:00 2001 From: Incardona Pietro <incardon@mpi-cbg.de> Date: Mon, 19 Jul 2021 14:22:11 +0200 Subject: [PATCH] Fixing SparseGrid with vector --- openfpm_data | 2 +- src/Amr/grid_dist_amr.hpp | 12 ++++++------ src/Amr/grid_dist_amr_unit_tests.cpp | 12 ++++++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/openfpm_data b/openfpm_data index d78de3919..fff636ed0 160000 --- a/openfpm_data +++ b/openfpm_data @@ -1 +1 @@ -Subproject commit d78de3919144686d1e88a2c46a88ad3fa2a79043 +Subproject commit fff636ed0b30106e0084608c9e7aa6034a2d63c1 diff --git a/src/Amr/grid_dist_amr.hpp b/src/Amr/grid_dist_amr.hpp index 7c171bdc4..8fd296450 100644 --- a/src/Amr/grid_dist_amr.hpp +++ b/src/Amr/grid_dist_amr.hpp @@ -574,7 +574,7 @@ public: * \return the selected element * */ - template <unsigned int p>inline auto get(const grid_dist_amr_key<dim> & v1) const -> typename std::add_lvalue_reference<decltype(gd_array.get(v1.getLvl()).template get<p>(v1.getKey()))>::type + template <unsigned int p>inline auto get(const grid_dist_amr_key<dim> & v1) const -> decltype(gd_array.get(v1.getLvl()).template get<p>(v1.getKey())) { #ifdef SE_CLASS2 check_valid(this,8); @@ -590,7 +590,7 @@ public: * \return the selected element * */ - template <unsigned int p>inline auto get(const grid_dist_amr_key<dim> & v1) -> typename std::add_lvalue_reference<decltype(gd_array.get(v1.getLvl()).template get<p>(v1.getKey()))>::type + template <unsigned int p>inline auto get(const grid_dist_amr_key<dim> & v1) -> decltype(gd_array.get(v1.getLvl()).template get<p>(v1.getKey())) { #ifdef SE_CLASS2 check_valid(this,8); @@ -607,7 +607,7 @@ public: * \return the selected element * */ - template <unsigned int p>inline auto get(size_t lvl, const grid_dist_key_dx<dim> & v1) const -> typename std::add_lvalue_reference<decltype(gd_array.get(lvl).template get<p>(v1))>::type + template <unsigned int p>inline auto get(size_t lvl, const grid_dist_key_dx<dim> & v1) const -> decltype(gd_array.get(lvl).template get<p>(v1)) { #ifdef SE_CLASS2 check_valid(this,8); @@ -623,7 +623,7 @@ public: * \return the selected element * */ - template <unsigned int p>inline auto get(size_t lvl, const grid_dist_key_dx<dim> & v1) -> typename std::add_lvalue_reference<decltype(gd_array.get(lvl).template get<p>(v1))>::type + template <unsigned int p>inline auto get(size_t lvl, const grid_dist_key_dx<dim> & v1) -> decltype(gd_array.get(lvl).template get<p>(v1)) { #ifdef SE_CLASS2 check_valid(this,8); @@ -644,7 +644,7 @@ public: */ template <unsigned int p> inline auto insert(const grid_dist_amr_key<dim> & v1) - -> typename std::add_lvalue_reference<decltype(gd_array.get(v1.getLvl()).template insert<p>(v1.getKey()))>::type + -> decltype(gd_array.get(v1.getLvl()).template insert<p>(v1.getKey())) { #ifdef SE_CLASS2 check_valid(this,8); @@ -663,7 +663,7 @@ public: * */ template <unsigned int p>inline auto insert(size_t lvl, const grid_dist_key_dx<dim> & v1) - -> typename std::add_lvalue_reference<decltype(gd_array.get(lvl).template insert<p>(v1))>::type + -> decltype(gd_array.get(lvl).template insert<p>(v1)) { #ifdef SE_CLASS2 check_valid(this,8); diff --git a/src/Amr/grid_dist_amr_unit_tests.cpp b/src/Amr/grid_dist_amr_unit_tests.cpp index 96e07f01d..69b36180b 100644 --- a/src/Amr/grid_dist_amr_unit_tests.cpp +++ b/src/Amr/grid_dist_amr_unit_tests.cpp @@ -56,6 +56,14 @@ void Test3D_amr_create_levels(grid_amr & amr_g, Box<3,float> & domain, size_t co amr_g.template insert<0>(akey) = 3.0; + amr_g.template insert<1>(akey)[0] = 3.0; + amr_g.template insert<1>(akey)[1] = 3.0; + amr_g.template insert<1>(akey)[2] = 3.0; + + amr_g.template insert<2>(akey)[0] = 3; + amr_g.template insert<2>(akey)[1] = 3; + amr_g.template insert<2>(akey)[2] = 3; + count++; ++it; @@ -831,11 +839,11 @@ BOOST_AUTO_TEST_CASE( grid_dist_amr_test ) k = std::pow(k, 1/3.); Ghost<3,long int> g(0); - grid_dist_amr<3,float,aggregate<float>> amr_g(domain3,g); + grid_dist_amr<3,float,aggregate<float,float[3],int[3]>> amr_g(domain3,g); Test3D_amr_create_levels(amr_g,domain3,k,4); - sgrid_dist_amr<3,float,aggregate<float>> amr_g2(domain3,g); + sgrid_dist_amr<3,float,aggregate<float,float[3],int[3]>> amr_g2(domain3,g); Test3D_amr_create_levels(amr_g2,domain3,k,4); } -- GitLab