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
15BOOST_AUTO_TEST_SUITE (Domain_NN_cart_unit_test)
16
17BOOST_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
74BOOST_AUTO_TEST_SUITE_END()
75
76
77#endif /* SRC_DECOMPOSITION_DOMAIN_NN_CALCULATOR_CART_UNIT_TEST_CPP_ */
78