8 #ifndef OPENFPM_NUMERICS_SRC_SOLVERS_PETSC_SOLVER_REPORT_UNIT_TESTS_HPP_
9 #define OPENFPM_NUMERICS_SRC_SOLVERS_PETSC_SOLVER_REPORT_UNIT_TESTS_HPP_
12 #include "Grid/grid_dist_id.hpp"
13 #include "Matrix/SparseMatrix.hpp"
14 #include "Vector/Vector.hpp"
15 #include "FiniteDifference/Laplacian.hpp"
16 #include "FiniteDifference/FDScheme.hpp"
17 #include "Solvers/petsc_solver.hpp"
18 #include "petsc_solver_AMG_report.hpp"
23 static const unsigned int dims = 3;
26 static const unsigned int nvar = 1;
49 BOOST_AUTO_TEST_SUITE( mg_solvers_report_test )
52 BOOST_AUTO_TEST_CASE( laplacian_3D_int_zero_mg_report )
54 constexpr
unsigned int phi = 0;
73 size_t center_x = psi.
size(0) / 2;
74 size_t center_y = psi.size(1) / 2;
75 size_t center_z = psi.size(2) / 2;
76 auto it = psi.getDomainIterator();
81 auto gkey = it.getGKey(
key);
83 float sx = (float)(gkey.get(0))-center_x;
84 float sy = (float)(gkey.get(1))-center_y;
85 float sz = (float)(gkey.get(2))-center_z;
87 float gs = 100.0*exp(-((sx*sx)+(sy*sy)+(sz*sz))/100.0);
89 psi.get<0>(
key) = sin(2*M_PI*sx/psi.size(0))*sin(2*M_PI*sy/psi.size(1))*sin(2*M_PI*sz/psi.size(2))*gs;
90 psi2.get<0>(
key) = sin(2*M_PI*sx/psi.size(0))*sin(2*M_PI*sy/psi.size(1))*sin(2*M_PI*sz/psi.size(2))*gs;
97 fd.template impose_dit<0>(poisson(),psi,psi.getDomainIterator());
103 rep.try_solve(fd.getA(),fd.getB());
106 BOOST_AUTO_TEST_SUITE_END()
Class to test AMG solvers.
Sparse Matrix implementation stub object when OpenFPM is compiled with no linear algebra support...
static const unsigned int dims
Number of dimansions of the problem.
SparseMatrix< double, int, PETSC_BASE > SparseMatrix_type
type of sparse grid that store the Matrix A
size_t size() const
Return the total number of points in the grid.
float stype
type of the space
Vector< double, PETSC_BASE > Vector_type
type of vector that store the solution
Implementation of VCluster class.
Sparse Matrix implementation.
This is a distributed grid.
static const unsigned int nvar
We have only one scalar unknown.
Laplacian second order on h (spacing)
This class is a trick to indicate the compiler a specific specialization pattern. ...
grid_dist_id< 3, float, aggregate< float > > b_grid
Grid that store the solution.
static const bool boundary[]
specify the boundary conditions
size_t getProcessingUnits()
Get the total number of processors.
void setTergetAMGAccuracy(double t_a)
Set the target accuracy to score the AMG solver.