Commit daf36c05 authored by Pietro Incardona's avatar Pietro Incardona

Make ghost put test stringer

parent 2bd620dd
......@@ -8,8 +8,8 @@ All notable changes to this project will be documented in this file.
- Full-Support for complex property on vector-dist (Serialization) + example
### Fixed
- Installation in case of MPI preinstalled PETSC fail
- vector_dist with negative domain
- Installation PETSC installation fail in case of preinstalled MPI
- vector_dist with negative domain (Now supported)
- Grid 1D fixing
### Changed
......
......@@ -57,6 +57,9 @@ fi
if [ -d "$1/MPI" ]; then
configure_trilinos_options="$configure_trilinos_options -D MPI_BASE_DIR=$1/MPI "
mpi_dir="$1/MPI"
else
mpi_dir=$(dirname "$(dirname "$(which mpic++)")")
fi
### It seem that the PETSC --download-packege option has several problems and cannot produce
......@@ -286,9 +289,9 @@ fi
tar -xf petsc-lite-3.6.4.tar.gz
cd petsc-3.6.4
echo "./configure --with-cxx-dialect=C++11 --with-mpi-dir=$1/MPI $configure_options --prefix=$1/PETSC"
echo "./configure --with-cxx-dialect=C++11 --with-mpi-dir=$mpi_dir $configure_options --prefix=$1/PETSC"
./configure --with-cxx-dialect=C++11 $petsc_openmp --with-mpi-dir=$1/MPI $configure_options --with-mumps-lib="$MUMPS_extra_lib" --prefix=$1/PETSC
./configure --with-cxx-dialect=C++11 $petsc_openmp --with-mpi-dir=$mpi_dir $configure_options --with-mumps-lib="$MUMPS_extra_lib" --prefix=$1/PETSC
make all test
make install
......
......@@ -1632,6 +1632,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost_put )
// sync the ghost
vd.ghost_get<0>();
{
auto NN = vd.getCellList(1.3/k);
float a = 1.0f*k*k;
......@@ -1685,10 +1686,66 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost_put )
++it3;
}
BOOST_REQUIRE_EQUAL(ret,true);
}
{
auto NN = vd.getCellList(1.3/k);
float a = 1.0f*k*k;
// run trough all the particles + ghost
auto it2 = vd.getDomainIterator();
while (it2.isNext())
{
// particle p
auto p = it2.get();
Point<3,float> xp = vd.getPos(p);
// Get an iterator over the neighborhood particles of p
auto Np = NN.template getNNIterator<NO_CHECK>(NN.getCell(vd.getPos(p)));
// For each neighborhood particle ...
while (Np.isNext())
{
auto q = Np.get();
Point<3,float> xq = vd.getPos(q);
float dist = xp.distance(xq);
if (dist < 1.0/k)
vd.getProp<0>(q) += a*(-dist*dist+1.0/k/k);
++Np;
}
++it2;
}
vd.ghost_put<add_,0>();
bool ret = true;
auto it3 = vd.getDomainIterator();
float constant = vd.getProp<0>(it3.get());
float eps = 0.001;
while (it3.isNext())
{
float constant2 = vd.getProp<0>(it3.get());
if (fabs(constant - constant2)/constant > eps)
{
std::cout << Point<3,float>(vd.getPos(it3.get())).toString() << " " << constant2 << "/" << constant << " " << v_cl.getProcessUnitID() << std::endl;
ret = false;
break;
}
++it3;
}
BOOST_REQUIRE_EQUAL(ret,true);
}
}
}
#include "vector_dist_cell_list_tests.hpp"
......
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