Actual source code: gmres2.c

      1: #define PETSCKSP_DLL

     3:  #include src/ksp/ksp/impls/gmres/gmresp.h

      7: /*@C
      8:    KSPGMRESSetOrthogonalization - Sets the orthogonalization routine used by GMRES and FGMRES.

     10:    Collective on KSP

     12:    Input Parameters:
     13: +  ksp - iterative context obtained from KSPCreate
     14: -  fcn - orthogonalization function

     16:    Calling Sequence of function:
     17: $   errorcode = int fcn(KSP ksp,int it);
     18: $   it is one minus the number of GMRES iterations since last restart;
     19: $    i.e. the size of Krylov space minus one

     21:    Notes:
     22:    Two orthogonalization routines are predefined, including

     24:    KSPGMRESModifiedGramSchmidtOrthogonalization()

     26:    KSPGMRESClassicalGramSchmidtOrthogonalization() - Default. Use KSPGMRESSetCGSRefinementType() to determine if
     27:      iterative refinement is used to increase stability.

     30:    Options Database Keys:

     32: +  -ksp_gmres_classicalgramschmidt - Activates KSPGMRESClassicalGramSchmidtOrthogonalization() (default)
     33: -  -ksp_gmres_modifiedgramschmidt - Activates KSPGMRESModifiedGramSchmidtOrthogonalization()

     35:    Level: intermediate

     37: .keywords: KSP, GMRES, set, orthogonalization, Gram-Schmidt, iterative refinement

     39: .seealso: KSPGMRESSetRestart(), KSPGMRESSetPreAllocateVectors(), KSPGMRESSetCGSRefinementType(),
     40:           KSPGMRESModifiedGramSchmidtOrthogonalization(), KSPGMRESClassicalGramSchmidtOrthogonalization()
     41: @*/
     42: PetscErrorCode PETSCKSP_DLLEXPORT KSPGMRESSetOrthogonalization(KSP ksp,PetscErrorCode (*fcn)(KSP,PetscInt))
     43: {
     44:   PetscErrorCode ierr,(*f)(KSP,PetscErrorCode (*)(KSP,PetscInt));

     48:   PetscObjectQueryFunction((PetscObject)ksp,"KSPGMRESSetOrthogonalization_C",(void (**)(void))&f);
     49:   if (f) {
     50:     (*f)(ksp,fcn);
     51:   }
     52:   return(0);
     53: }