diff --git a/src/DCPSE/DCPSE_op/tests/DCPSE_op_test_base_tests.cpp b/src/DCPSE/DCPSE_op/tests/DCPSE_op_test_base_tests.cpp index a6c4a45ea16c17b2f0559c9e0e6d4be89313967c..b2f0b0018fd8310f690b9a56de6bb4e38c289817 100644 --- a/src/DCPSE/DCPSE_op/tests/DCPSE_op_test_base_tests.cpp +++ b/src/DCPSE/DCPSE_op/tests/DCPSE_op_test_base_tests.cpp @@ -168,6 +168,73 @@ BOOST_AUTO_TEST_CASE(dcpse_op_tests) { BOOST_REQUIRE(worst < 0.03); } + BOOST_AUTO_TEST_CASE(dcpse_op_save_load2) { + size_t edgeSemiSize = 40; + const size_t sz[2] = {2 * edgeSemiSize, 2 * edgeSemiSize}; + Box<2, double> box({0, 0}, {2 * M_PI, 2 * M_PI}); + size_t bc[2] = {NON_PERIODIC, NON_PERIODIC}; + double spacing[2]; + spacing[0] = 2 * M_PI / (sz[0] - 1); + spacing[1] = 2 * M_PI / (sz[1] - 1); + Ghost<2, double> ghost(spacing[0] * 3.9); + double rCut = 3.9 * spacing[0]; + BOOST_TEST_MESSAGE("Init vector_dist..."); + double sigma2 = spacing[0] * spacing[1] / (2 * 4); + + vector_dist<2, double, aggregate<double, double, double, VectorS<2, double>, VectorS<2, double>>> domain(0, box, + bc, + ghost); + + //Init_DCPSE(domain) + BOOST_TEST_MESSAGE("Init domain..."); + + auto it = domain.getGridIterator(sz); + size_t pointId = 0; + size_t counter = 0; + double minNormOne = 999; + while (it.isNext()) { + domain.add(); + auto key = it.get(); + mem_id k0 = key.get(0); + double x = k0 * spacing[0]; + domain.getLastPos()[0] = x;//+ gaussian(rng); + mem_id k1 = key.get(1); + double y = k1 * spacing[1]; + domain.getLastPos()[1] = y;//+gaussian(rng); + // Here fill the function value + domain.template getLastProp<0>() = sin(domain.getLastPos()[0]) + sin(domain.getLastPos()[1]); + domain.template getLastProp<2>() = 2*cos(domain.getLastPos()[0]) + cos(domain.getLastPos()[1]); + ++counter; + ++it; + } + BOOST_TEST_MESSAGE("Sync domain across processors..."); + + domain.map(); + domain.ghost_get<0>(); + auto v = getV<1>(domain); + auto v2 = getV<3>(domain); + auto P = getV<0>(domain); + Derivative_x DxLoaded(domain, 2, rCut,1,support_options::LOAD); + Derivative_y DyLoaded(domain, 2, rCut,1,support_options::LOAD); + DxLoaded.load(domain,"DX_test"); + DyLoaded.load(domain,"DY_test"); + v= 2*DxLoaded(P)+DyLoaded(P); + auto it2 = domain.getDomainIterator(); + double worst = 0.0; + while (it2.isNext()) { + auto p = it2.get(); + + if (fabs(domain.getProp<1>(p) - domain.getProp<2>(p)) > worst) { + worst = fabs(domain.getProp<1>(p) - domain.getProp<2>(p)); + } + + ++it2; + } + domain.deleteGhost(); + //std::cout<<worst; + BOOST_REQUIRE(worst < 0.03); + } + BOOST_AUTO_TEST_CASE(dcpse_op_tests_fa) { size_t edgeSemiSize = 40; const size_t sz[2] = {2 * edgeSemiSize, 2 * edgeSemiSize};