slepc-3.22.1 2024-10-28
Report Typos and Errors

# 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

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