Actual source code: gmres2.c
  1: #include <../src/ksp/ksp/impls/gmres/gmresimpl.h>
  3: /*@C
  4:   KSPGMRESSetOrthogonalization - Sets the orthogonalization routine used by `KSPGMRES` and `KSPFGMRES`.
  6:   Logically Collective
  8:   Input Parameters:
  9: + ksp - iterative context obtained from `KSPCreate()`
 10: - fcn - orthogonalization function
 12:   Calling sequence of `fcn`:
 13: + ksp - the solver context
 14: - it  - the current iteration
 16:   Options Database Keys:
 17: + -ksp_gmres_classicalgramschmidt - Activates KSPGMRESClassicalGramSchmidtOrthogonalization() (default)
 18: - -ksp_gmres_modifiedgramschmidt  - Activates KSPGMRESModifiedGramSchmidtOrthogonalization()
 20:   Level: intermediate
 22:   Notes:
 23:   Two orthogonalization routines are predefined, `KSPGMRESModifiedGramSchmidtOrthogonalization()` and the default
 24:   `KSPGMRESClassicalGramSchmidtOrthogonalization()`.
 26:   Use `KSPGMRESSetCGSRefinementType()` to determine if iterative refinement is used to increase stability.
 28: .seealso: [](ch_ksp), `KSPGMRESSetRestart()`, `KSPGMRESSetPreAllocateVectors()`,
 29: `KSPGMRESSetCGSRefinementType()`, `KSPGMRESModifiedGramSchmidtOrthogonalization()`,
 30: `KSPGMRESClassicalGramSchmidtOrthogonalization()`, `KSPGMRESGetCGSRefinementType()`
 31: @*/
 32: PetscErrorCode KSPGMRESSetOrthogonalization(KSP ksp, PetscErrorCode (*fcn)(KSP ksp, PetscInt it))
 33: {
 34:   PetscFunctionBegin;
 36:   PetscTryMethod(ksp, "KSPGMRESSetOrthogonalization_C", (KSP, PetscErrorCode (*)(KSP, PetscInt)), (ksp, fcn));
 37:   PetscFunctionReturn(PETSC_SUCCESS);
 38: }
 40: /*@C
 41:   KSPGMRESGetOrthogonalization - Gets the orthogonalization routine used by `KSPGMRES` and `KSPFGMRES`.
 43:   Not Collective
 45:   Input Parameter:
 46: . ksp - iterative context obtained from `KSPCreate()`
 48:   Output Parameter:
 49: . fcn - orthogonalization function
 51:   Calling sequence of `fcn`:
 52: + ksp - the solver context
 53: - it  - the current iteration
 55:   Level: intermediate
 57:   Notes:
 58:   Two orthogonalization routines are predefined,  `KSPGMRESModifiedGramSchmidtOrthogonalization()`, and the default
 59:   `KSPGMRESClassicalGramSchmidtOrthogonalization()`
 61:   Use `KSPGMRESSetCGSRefinementType()` to determine if iterative refinement is used to increase stability.
 63: .seealso: [](ch_ksp), `KSPGMRESSetRestart()`, `KSPGMRESSetPreAllocateVectors()`, `KSPGMRESSetCGSRefinementType()`, `KSPGMRESSetOrthogonalization()`,
 64:           `KSPGMRESModifiedGramSchmidtOrthogonalization()`, `KSPGMRESClassicalGramSchmidtOrthogonalization()`, `KSPGMRESGetCGSRefinementType()`
 65: @*/
 66: PetscErrorCode KSPGMRESGetOrthogonalization(KSP ksp, PetscErrorCode (**fcn)(KSP ksp, PetscInt it))
 67: {
 68:   PetscFunctionBegin;
 70:   PetscUseMethod(ksp, "KSPGMRESGetOrthogonalization_C", (KSP, PetscErrorCode (**)(KSP, PetscInt)), (ksp, fcn));
 71:   PetscFunctionReturn(PETSC_SUCCESS);
 72: }