| 1 | /* |
| 2 | * Domain_NN_calculator_cart_unit_test.hpp |
| 3 | * |
| 4 | * Created on: Mar 11, 2017 |
| 5 | * Author: i-bird |
| 6 | */ |
| 7 | |
| 8 | #ifndef SRC_DECOMPOSITION_DOMAIN_NN_CALCULATOR_CART_UNIT_TEST_CPP_ |
| 9 | #define SRC_DECOMPOSITION_DOMAIN_NN_CALCULATOR_CART_UNIT_TEST_CPP_ |
| 10 | |
| 11 | #include "VCluster/VCluster.hpp" |
| 12 | #include "Domain_NN_calculator_cart.hpp" |
| 13 | #include "NN/CellList/CellList.hpp" |
| 14 | |
| 15 | BOOST_AUTO_TEST_SUITE (Domain_NN_cart_unit_test) |
| 16 | |
| 17 | BOOST_AUTO_TEST_CASE( Domain_NN_cart_unit_test_usage ) |
| 18 | { |
| 19 | domain_nn_calculator_cart<3> dnn; |
| 20 | |
| 21 | Box<3,long int> pbox({20,30,40},{40,50,60}); |
| 22 | |
| 23 | openfpm::vector<Box<3,size_t>> loc_box; |
| 24 | loc_box.add(Box<3,size_t>({21,31,41},{30,40,50})); |
| 25 | loc_box.add(Box<3,size_t>({31,41,51},{39,49,59})); |
| 26 | |
| 27 | size_t sz[3]; |
| 28 | sz[0] = pbox.getHigh(0) - pbox.getLow(0) + 1; |
| 29 | sz[1] = pbox.getHigh(1) - pbox.getLow(1) + 1; |
| 30 | sz[2] = pbox.getHigh(2) - pbox.getLow(2) + 1; |
| 31 | |
| 32 | grid_sm<3,void> gs2(sz); |
| 33 | grid_key_dx<3> shift({5,5,5}); |
| 34 | |
| 35 | dnn.setParameters(pbox); |
| 36 | dnn.setNNParameters(loc_box,shift,gs2); |
| 37 | |
| 38 | // Linearized domain cell over pbox |
| 39 | openfpm::vector_std<size_t> & cd = dnn.getDomainCells(); |
| 40 | openfpm::vector_std<size_t> & cdCSRdom = dnn.getCRSDomainCells(); |
| 41 | openfpm::vector_std<subsub_lin<3>> & cdCSRanom = dnn.getCRSAnomDomainCells(); |
| 42 | |
| 43 | grid_sm<3,void> gs(sz); |
| 44 | |
| 45 | size_t tot_cl = 0; |
| 46 | for (size_t i = 0 ; i < loc_box.size() ; i++) |
| 47 | tot_cl += Box<3,size_t>(loc_box.get(i)).getVolumeKey(); |
| 48 | |
| 49 | BOOST_REQUIRE_EQUAL(cd.size(),tot_cl); |
| 50 | |
| 51 | Box<3,size_t> box0 = loc_box.get(0); |
| 52 | |
| 53 | size_t dom_cell = (box0.getHigh(0) - box0.getLow(0)) * |
| 54 | (box0.getHigh(1) - box0.getLow(1)) * |
| 55 | (box0.getHigh(2) - box0.getLow(2) + 1); |
| 56 | |
| 57 | Box<3,size_t> box1 = loc_box.get(1); |
| 58 | |
| 59 | dom_cell += (box1.getHigh(0) - box1.getLow(0)) * |
| 60 | (box1.getHigh(1) - box1.getLow(1)) * |
| 61 | (box1.getHigh(2) - box1.getLow(2) + 1); |
| 62 | |
| 63 | BOOST_REQUIRE_EQUAL(cdCSRdom.size(),dom_cell); |
| 64 | |
| 65 | size_t anom_cell = 2*(box0.getHigh(0) - box0.getLow(0) + 1) * ((box0.getHigh(2) - box0.getLow(2)) + 1); |
| 66 | anom_cell += 2*(box1.getHigh(0) - box1.getLow(0) + 1) * ((box1.getHigh(2) - box1.getLow(2)) + 1); |
| 67 | |
| 68 | anom_cell += 2*(box0.getHigh(1) - box0.getLow(1) + 1) * ((box0.getHigh(2) - box0.getLow(2)) + 1); |
| 69 | anom_cell += 2*(box1.getHigh(1) - box1.getLow(1) + 1) * ((box1.getHigh(2) - box1.getLow(2)) + 1); |
| 70 | |
| 71 | BOOST_REQUIRE_EQUAL(cdCSRanom.size(),anom_cell); |
| 72 | } |
| 73 | |
| 74 | BOOST_AUTO_TEST_SUITE_END() |
| 75 | |
| 76 | |
| 77 | #endif /* SRC_DECOMPOSITION_DOMAIN_NN_CALCULATOR_CART_UNIT_TEST_CPP_ */ |
| 78 | |