An error occurred in line <129> of file </Users/jaekwangkim/Program/dealii-8.5.0/include/deal.II/lac/sparse_ilu.templates.h> in function
void dealii::SparseILU<double>::initialize(const SparseMatrix<somenumber> &, const dealii::SparseILU::AdditionalData &) [number = double, somenumber = double]
The violated condition was:
luval[ia[k]] != 0
Additional information:
While computing the ILU decomposition, the algorithm found a zero pivot on the diagonal of row 34. This must stop the ILU algorithm because it means that the matrix for which you try to compute a decomposition is singular.
template <int dim>
void StokesProblem<dim>::solve_transport ()
{
std::cout << " -solve transport begins"<< std::endl;
SolverControl solver_control (std::pow(10,6), system_rhs.block(2).l2_norm() * pow(10,-4));
unsigned int restart = 500;
SolverGMRES< Vector<double> >::AdditionalData gmres_additional_data(restart+2);
SolverGMRES< Vector<double> > solver(solver_control, gmres_additional_data);
//make preconditioner
SparseILU<double>::AdditionalData additional_data(0,500); // (0 , additional diagonal terms)
std::cout << "B" << std::endl;
SparseILU<double> preconditioner;
preconditioner.initialize (system_matrix.block(2,2), additional_data);
std::cout << "A" << std::endl;
solver.solve (system_matrix.block(2,2), solution.block(2), system_rhs.block(2), preconditioner);
// constraints.distribute (solution);
}