> All right, but, where is the class Trilinos::BlockSparseMatrix? Possibly,
> could you let me know? If then, it must be a good reference for me.
The class TrilinosWrappers::BlockSparseMatrix header file sits in
lac/include/lac/trilinos_block_sparse_matrix.h, the source in
lac/source/trilinos_block_sparse_matrix.cc. The respective PETSc
structures are in the same directories, but are specified in serial in
lac/../petsc_block_sparse_matrix.h/.cc and for MPI in
lac/../petsc_parallel_block_sparse_matrix.h/.cc.
For your purpose, you'd need to copy the function
template <typename TrilinosMatrix, typename TrilinosBlockVector>
void
apply_block_boundary_values (const std::map<unsigned int,double>
&boundary_values,
TrilinosMatrix &matrix,
TrilinosBlockVector &solution,
TrilinosBlockVector &right_hand_side,
const bool eliminate_columns)
that sits in lines 807-887 in
deal.II/source/numerics/matrices.all_dimensions.cc to the respective
PETSc part of that file, and replace Trilinos by PETSc. Then you need to
create explicit instantiations for PETScWrappers::BlockSparseMatrix and
PETScWrappers::MPI::BlockSparseMatrix, just look how it is done for
non-block PETSc structures in lines 650-682.
Best,
Martin
_______________________________________________