void test_superlu_support() { SuperLU<SparseMatrix<double> > superlu_double_colmajor; SuperLU<SparseMatrix<std::complex<double> > > superlu_cplxdouble_colmajor; CALL_SUBTEST_1( check_sparse_square_solving(superlu_double_colmajor) ); CALL_SUBTEST_2( check_sparse_square_solving(superlu_cplxdouble_colmajor) ); CALL_SUBTEST_1( check_sparse_square_determinant(superlu_double_colmajor) ); CALL_SUBTEST_2( check_sparse_square_determinant(superlu_cplxdouble_colmajor) ); }
template<typename T> void test_sparselu_T() { SparseLU<SparseMatrix<T, ColMajor>, COLAMDOrdering<int> > sparselu_colamd; SparseLU<SparseMatrix<T, ColMajor>, AMDOrdering<int> > sparselu_amd; SparseLU<SparseMatrix<T, ColMajor, long int>, NaturalOrdering<long int> > sparselu_natural; check_sparse_square_solving(sparselu_colamd); check_sparse_square_solving(sparselu_amd); check_sparse_square_solving(sparselu_natural); }
template<typename T, typename I> void test_bicgstab_T() { BiCGSTAB<SparseMatrix<T,0,I>, DiagonalPreconditioner<T> > bicgstab_colmajor_diag; BiCGSTAB<SparseMatrix<T,0,I>, IdentityPreconditioner > bicgstab_colmajor_I; BiCGSTAB<SparseMatrix<T,0,I>, IncompleteLUT<T,I> > bicgstab_colmajor_ilut; //BiCGSTAB<SparseMatrix<T>, SSORPreconditioner<T> > bicgstab_colmajor_ssor; CALL_SUBTEST( check_sparse_square_solving(bicgstab_colmajor_diag) ); // CALL_SUBTEST( check_sparse_square_solving(bicgstab_colmajor_I) ); CALL_SUBTEST( check_sparse_square_solving(bicgstab_colmajor_ilut) ); //CALL_SUBTEST( check_sparse_square_solving(bicgstab_colmajor_ssor) ); }
template<typename T> void test_sparselu_T() { SparseLU<SparseMatrix<T, ColMajor> /*, COLAMDOrdering<int>*/ > sparselu_colamd; // COLAMDOrdering is the default SparseLU<SparseMatrix<T, ColMajor>, AMDOrdering<int> > sparselu_amd; SparseLU<SparseMatrix<T, ColMajor, long int>, NaturalOrdering<long int> > sparselu_natural; check_sparse_square_solving(sparselu_colamd); check_sparse_square_solving(sparselu_amd); check_sparse_square_solving(sparselu_natural); check_sparse_square_abs_determinant(sparselu_colamd); check_sparse_square_abs_determinant(sparselu_amd); }
template<typename T> void test_pastix_T() { PastixLLT< SparseMatrix<T, ColMajor>, Eigen::Lower > pastix_llt_lower; PastixLDLT< SparseMatrix<T, ColMajor>, Eigen::Lower > pastix_ldlt_lower; PastixLLT< SparseMatrix<T, ColMajor>, Eigen::Upper > pastix_llt_upper; PastixLDLT< SparseMatrix<T, ColMajor>, Eigen::Upper > pastix_ldlt_upper; PastixLU< SparseMatrix<T, ColMajor> > pastix_lu; check_sparse_spd_solving(pastix_llt_lower); check_sparse_spd_solving(pastix_ldlt_lower); check_sparse_spd_solving(pastix_llt_upper); check_sparse_spd_solving(pastix_ldlt_upper); check_sparse_square_solving(pastix_lu); }
template<typename T> void test_pardiso_T() { PardisoLLT < SparseMatrix<T, RowMajor>, Lower> pardiso_llt_lower; PardisoLLT < SparseMatrix<T, RowMajor>, Upper> pardiso_llt_upper; PardisoLDLT < SparseMatrix<T, RowMajor>, Lower> pardiso_ldlt_lower; PardisoLDLT < SparseMatrix<T, RowMajor>, Upper> pardiso_ldlt_upper; PardisoLU < SparseMatrix<T, RowMajor> > pardiso_lu; check_sparse_spd_solving(pardiso_llt_lower); check_sparse_spd_solving(pardiso_llt_upper); check_sparse_spd_solving(pardiso_ldlt_lower); check_sparse_spd_solving(pardiso_ldlt_upper); check_sparse_square_solving(pardiso_lu); }
// There is no support for selfadjoint matrices with PaStiX. // Complex symmetric matrices should pass though template<typename T> void test_pastix_T_LU() { PastixLU< SparseMatrix<T, ColMajor> > pastix_lu; check_sparse_square_solving(pastix_lu); }
template<typename T> void test_metis_T() { SparseLU<SparseMatrix<T, ColMajor>, MetisOrdering<int> > sparselu_metis; check_sparse_square_solving(sparselu_metis); }