Testing interval permutation in Solver
This test is located in Tests/solver_test000
###Brief
Solvers should accept intervals without dependence on their order.
##Description
Test generates simple matrix A = diag(10) and right hand side populated with local indexes for each processor r = (local_index_begin,local_index_end) and expect solver to return resulting vector x = (1/local_index_begin,1/local_index_end).
Local indexes are computed from current processor number with processor shift provided by user.
##Arguments
The test have two parameters, the first parameter is permutation value, the second parameter indicates solver type.
- For solver type argument the values have the following meaning::
- inner_ilu2, inner Solver based on BiCGStab(L) solver with second order IIU factorization as preconditioner;
- inner_ddpqiluc, inner Solver based on BiCGStab(L) solver with second order Crout-ILU with inversed-based condition estimation and unsymmetric reordering for diagonal dominance as preconditioner;
- inner_mptiluc, inner Solver based on BiCGStab(L) solver with second order Crout-ILU with inversed-based condition estimation and maximum product transversal reordering as preconditioner;
- inner_mptilu2, inner Solver based on BiCGStab(L) solver with second order ILU and maximum product transversal reordering as preconditione;
- trilinos_aztec, external Solver AztecOO from Trilinos package; currentty without preconditioner;
- trilinos_belos, external Solver Belos from Trilinos package, currently without preconditioner;
- trilinos_ml, external Solver AztecOO with ML preconditioner;
- trilinos_ifpack, external Solver AztecOO with Ifpack preconditioner;
- petsc, external Solver PETSc;
- ani, external Solver from ANI3D based on ILU2 (sequential Fortran version);
- fcbiilu2, external FCBIILU2 Solver (BIILU2 parallel F2C version);
- k3biilu2, internal K3BIILU2 Solver (BIILU2 parallel version).
##CMake tests
This test will generate solver_test000_serial_* tests for all activated solvers in CMake. Those tests will check that solvers correctly get input and correctly output solution.
If USE_MPI is activated and CMake have variable ${MPIEXEC} set up correctly then the test will seed solver_test000_parallel_* tests. These tests will check that solvers get input in parallel and correctly output solution as well as the solver will check correct functioning of permutation of local intervals. PETSc solver will avoid permutation test since it cannot handle the situation.
##Source
Test originated from https://github.com/INM-RAS/INMOST/issues/6