Skip to main content
`Ctrl`+`K`

# BVSetOrthogonalization

Specifies the method used for the orthogonalization of vectors (classical or modified Gram-Schmidt with or without refinement), and for the block-orthogonalization (simultaneous orthogonalization of a set of vectors).

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVSetOrthogonalization(BV bv,BVOrthogType type,BVOrthogRefineType refine,PetscReal eta,BVOrthogBlockType block)

Logically Collective

## Input Parameters

- bv - the basis vectors context

- type - the method of vector orthogonalization

- refine - type of refinement

- eta - parameter for selective refinement

- block - the method of block orthogonalization

## Options Database Keys

- -bv_orthog_type <type> - the vector orthogonalization, either `cgs` or `mgs`

- -bv_orthog_refine <refine> - the refinement type, `never`, `ifneeded` (default) or `always`

- -bv_orthog_eta <eta> - the value of `eta`

- -bv_orthog_block <block> - the block-orthogonalization method

## Notes

The default settings work well for most problems.

The parameter `eta` should be a real value between 0 and 1, that is used only when the refinement type is `ifneeded`. Use `PETSC_DETERMINE` to set a reasonable default value. Use `PETSC_CURRENT` to leave the current value unchanged.

When using several processes, `BV_ORTHOG_MGS` is likely to result in bad scalability.

If the method set for block orthogonalization is `BV_ORTHOG_BLOCK_GS`, then the computation is done column by column with the vector orthogonalization.

## See Also

BV: Basis Vectors, `BVOrthogonalizeColumn()`, `BVGetOrthogonalization()`, `BVOrthogType`, `BVOrthogRefineType`, `BVOrthogBlockType`

## 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