From: heister <heister@0785d39b-7218-0410-832d-ea1e28bc413d> Date: Wed, 5 Jun 2013 20:55:55 +0000 (+0000) Subject: add new function for trilinos blockvectors X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c484a054261b4346642e1000d5c736a4832891c;p=dealii-svn.git add new function for trilinos blockvectors git-svn-id: https://svn.dealii.org/branches/branch_unify_linear_algebra@29770 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/include/deal.II/lac/trilinos_parallel_block_vector.h b/deal.II/include/deal.II/lac/trilinos_parallel_block_vector.h index 8c5408572d..1d2c473851 100644 --- a/deal.II/include/deal.II/lac/trilinos_parallel_block_vector.h +++ b/deal.II/include/deal.II/lac/trilinos_parallel_block_vector.h @@ -225,6 +225,14 @@ namespace TrilinosWrappers void reinit (const std::vector<IndexSet> ¶llel_partitioning, const MPI_Comm &communicator = MPI_COMM_WORLD, const bool fast = false); + /** + * like above, but with a second set of indices for + * ghost entries. + */ + void reinit (const std::vector<IndexSet> &partitioning, + const std::vector<IndexSet> &ghost_values, + const MPI_Comm &communicator = MPI_COMM_WORLD); + /** * Change the dimension to that diff --git a/deal.II/source/lac/trilinos_block_vector.cc b/deal.II/source/lac/trilinos_block_vector.cc index aaa3eb830c..010eeeebe3 100644 --- a/deal.II/source/lac/trilinos_block_vector.cc +++ b/deal.II/source/lac/trilinos_block_vector.cc @@ -136,6 +136,28 @@ namespace TrilinosWrappers collect_sizes(); } + void + BlockVector::reinit (const std::vector<IndexSet> ¶llel_partitioning, + const std::vector<IndexSet> &ghost_values, + const MPI_Comm &communicator) + { + const size_type no_blocks = parallel_partitioning.size(); + std::vector<size_type> block_sizes (no_blocks); + + for (size_type i=0; i<no_blocks; ++i) + { + block_sizes[i] = parallel_partitioning[i].size(); + } + + this->block_indices.reinit (block_sizes); + if (components.size() != n_blocks()) + components.resize(n_blocks()); + + for (size_type i=0; i<n_blocks(); ++i) + components[i].reinit(parallel_partitioning[i], ghost_values[i], communicator); + + collect_sizes(); + } void