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