Skip to main content
`Ctrl`+`K`

# BVGetSplitRows

Splits the `BV` object into two `BV` objects that share the internal data, using a disjoint horizontal splitting.

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVGetSplitRows(BV bv,IS isup,IS islo,BV *U,BV *L)

Collective

## Input Parameters

- bv - the basis vectors context

- isup - the index set that defines the upper part of the horizontal splitting

- islo - the index set that defines the lower part of the horizontal splitting

## Output Parameters

- U - the resulting `BV` containing the upper rows

- L - the resulting `BV` containing the lower rows

## Notes

The index sets must be such that every MPI process can extract the selected rows from its local part of the input `BV`, and this part must be contiguous. With one process, `isup` will list contiguous indices starting from 0, and `islo` will contain the remaining indices, hence we refer to upper and lower part. However, with several processes the indices will be interleaved because `isup` will refer to the upper part of the local array.

The intended use of this function is with matrices of `MATNEST` type, where `MatNestGetISs()` will return the appropriate index sets.

The returned `BV`s must be seen as references (not copies) of the input `BV`, that is, modifying them will change the entries of `bv` as well. The returned `BV`s must not be destroyed. `BVRestoreSplitRows()` must be called when they are no longer needed.

Pass `NULL` for any of the output `BV`s that is not needed.

## See Also

BV: Basis Vectors, `BVRestoreSplitRows()`, `BVGetSplit()`

## Level

advanced

## Location

src/sys/classes/bv/interface/bvbasic.c

Index of all BV routines Table of Contents for all manual pages Index of all manual pages