#include <deal.II/lac/trilinos_parallel_block_vector.h>
#include <deal.II/lac/trilinos_sparse_matrix.h>
#include <deal.II/lac/trilinos_block_sparse_matrix.h>
#include <deal.II/lac/block_sparsity_pattern.h>
#include <deal.II/lac/trilinos_precondition.h>
#include <deal.II/lac/trilinos_solver.h>

namespace LA
{
   using namespace dealii::TrilinosWrappers;
}

using namespace dealii;

//------------------------------------------------------------------------------
int
main(int argc, char **argv)
{
   Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1);

   LA::BlockSparseMatrix     system_matrix;
   LA::MPI::BlockVector      solution;
   LA::MPI::BlockVector      system_rhs;

   SolverControl solver_control(1000, 1e-6 * system_rhs.l2_norm());
   LA::SolverGMRES::AdditionalData additional_data(false, 30);
   LA::SolverGMRES solver(solver_control, additional_data);
   solver.solve(system_matrix, solution, system_rhs, LA::PreconditionIdentity());

   return 0;
}
