Actual source code: cgtype.c
petsc-3.7.1 2016-05-15
Report Typos and Errors

      2: #include <../src/ksp/ksp/impls/cg/cgimpl.h>       /*I "petscksp.h" I*/

      6: /*@
      7:     KSPCGSetType - Sets the variant of the conjugate gradient method to
      8:     use for solving a linear system with a complex coefficient matrix.
      9:     This option is irrelevant when solving a real system.

     11:     Logically Collective on KSP

     13:     Input Parameters:
     14: +   ksp - the iterative context
     15: -   type - the variant of CG to use, one of
     16: .vb
     17:       KSP_CG_HERMITIAN - complex, Hermitian matrix (default)
     18:       KSP_CG_SYMMETRIC - complex, symmetric matrix
     19: .ve

     21:     Level: intermediate

     23:     Options Database Keys:
     24: +   -ksp_cg_Hermitian - Indicates Hermitian matrix
     25: -   -ksp_cg_symmetric - Indicates symmetric matrix

     27:     Note:
     28:     By default, the matrix is assumed to be complex, Hermitian.

     30: .keywords: CG, conjugate gradient, Hermitian, symmetric, set, type
     31: @*/
     32: PetscErrorCode  KSPCGSetType(KSP ksp,KSPCGType type)
     33: {

     38:   PetscTryMethod(ksp,"KSPCGSetType_C",(KSP,KSPCGType),(ksp,type));
     39:   return(0);
     40: }

     44: /*@
     45:     KSPCGUseSingleReduction - Merge the two inner products needed in CG into a single MPI_Allreduce() call.

     47:     Logically Collective on KSP

     49:     Input Parameters:
     50: +   ksp - the iterative context
     51: -   flg - turn on or off the single reduction

     53:     Options Database:
     54: .   -ksp_cg_single_reduction

     56:     Level: intermediate

     58:      The algorithm used in this case is described as Method 1 in Lapack Working Note 56, "Conjugate Gradient Algorithms with Reduced Synchronization Overhead
     59:      Distributed Memory Multiprocessors", by E. F. D'Azevedo, V. L. Eijkhout, and C. H. Romine, December 3, 1999. V. Eijkhout creates the algorithm
     60:      initially to Chronopoulos and Gear.

     62:      It requires two extra work vectors than the conventional implementation in PETSc.

     64:      See also KSPPIPECG, KSPPIPECR, and KSPGROPPCG that use non-blocking reductions.

     66: .keywords: CG, conjugate gradient, Hermitian, symmetric, set, type, KSPPGMRES
     67: @*/
     68: PetscErrorCode  KSPCGUseSingleReduction(KSP ksp,PetscBool flg)
     69: {

     75:   PetscTryMethod(ksp,"KSPCGUseSingleReduction_C",(KSP,PetscBool),(ksp,flg));
     76:   return(0);
     77: }