17#ifdef DEAL_II_WITH_PETSC
31# ifdef DEAL_II_HAVE_CXX20
46 std::vector<size_type> block_sizes(num_blocks, 0);
48 if (this->
components.size() != this->n_blocks())
51 for (
unsigned int i = 0; i < this->
n_blocks(); ++i)
63 PetscObjectTypeCompare(
reinterpret_cast<PetscObject
>(v),
71 ierr = VecNestGetSize(v, &nb);
73 for (PetscInt i = 0; i < nb; ++i)
76 ierr = VecNestGetSubVec(v, i, &vv);
87 std::vector<size_type> block_sizes(nb, 0);
91 for (
unsigned int i = 0; i < nb; ++i)
101 ierr = PetscObjectReference(
reinterpret_cast<PetscObject
>(v));
115 BlockVector::operator
const Vec &()
const
117 return petsc_nest_vector;
142 std::vector<Vec> pcomponents(n);
143 for (
unsigned int i = 0; i < n; i++)
147 pcomponents.size() > 0 ?
148 PetscObjectComm(
reinterpret_cast<PetscObject
>(pcomponents[0])) :
void reinit(const unsigned int n_blocks, const size_type n_elements_per_block)
unsigned int n_blocks() const
void compress(VectorOperation::values operation)
std::vector< Vector > components
BlockIndices block_indices
void compress(VectorOperation::values operation)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define AssertThrow(cond, exc)
void petsc_increment_state_counter(Vec v)
unsigned int global_dof_index
*braid_SplitCommworld & comm