Actual source code: slepcip.h

  1: /*
  2:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  3:    SLEPc - Scalable Library for Eigenvalue Problem Computations
  4:    Copyright (c) 2002-2009, Universidad Politecnica de Valencia, Spain

  6:    This file is part of SLEPc.
  7:       
  8:    SLEPc is free software: you can redistribute it and/or modify it under  the
  9:    terms of version 3 of the GNU Lesser General Public License as published by
 10:    the Free Software Foundation.

 12:    SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY 
 13:    WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS 
 14:    FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for 
 15:    more details.

 17:    You  should have received a copy of the GNU Lesser General  Public  License
 18:    along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
 19:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 20: */

 24:  #include slepc.h


 29: /*E
 30:     IPOrthogonalizationType - determines what type of orthogonalization to use

 32:     Level: advanced

 34: .seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
 35: E*/
 36: typedef enum { IP_MGS_ORTH,  IP_CGS_ORTH } IPOrthogonalizationType;

 38: /*E
 39:     IPOrthogonalizationRefinementType - determines what type of refinement
 40:     to use during orthogonalization

 42:     Level: advanced

 44: .seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
 45: E*/
 46: typedef enum { IP_ORTH_REFINE_NEVER, IP_ORTH_REFINE_IFNEEDED,
 47:                IP_ORTH_REFINE_ALWAYS } IPOrthogonalizationRefinementType;

 49: /*S
 50:      IP - Abstraction of a vector inner product, that can be defined
 51:      in different ways. Using this object is not required for application
 52:      programmers.

 54:    Level: beginner

 56: .seealso:  IPCreate()
 57: S*/
 58: typedef struct _p_IP* IP;

 60: EXTERN PetscErrorCode IPInitializePackage(char *path);
 61: EXTERN PetscErrorCode IPCreate(MPI_Comm,IP*);
 62: EXTERN PetscErrorCode IPSetOptionsPrefix(IP,const char *);
 63: EXTERN PetscErrorCode IPAppendOptionsPrefix(IP,const char *);
 64: EXTERN PetscErrorCode IPGetOptionsPrefix(IP,const char *[]);
 65: EXTERN PetscErrorCode IPSetFromOptions(IP);
 66: EXTERN PetscErrorCode IPSetOrthogonalization(IP,IPOrthogonalizationType,IPOrthogonalizationRefinementType,PetscReal);
 67: EXTERN PetscErrorCode IPGetOrthogonalization(IP,IPOrthogonalizationType*,IPOrthogonalizationRefinementType*,PetscReal*);
 68: EXTERN PetscErrorCode IPView(IP,PetscViewer);
 69: EXTERN PetscErrorCode IPDestroy(IP);

 71: EXTERN PetscErrorCode IPOrthogonalize(IP,PetscInt,PetscTruth*,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*,Vec,PetscScalar*);
 72: EXTERN PetscErrorCode IPOrthogonalizeCGS(IP,PetscInt,PetscTruth*,Vec*,Vec,PetscScalar*,PetscReal*,PetscReal*,Vec);
 73: EXTERN PetscErrorCode IPBiOrthogonalize(IP,PetscInt,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
 74: EXTERN PetscErrorCode IPQRDecomposition(IP,Vec*,PetscInt,PetscInt,PetscScalar*,PetscInt,Vec);

 76: /*E
 77:     IPBilinearForm - determines the type of bilinear/sesquilinear form

 79:     Level: developer

 81: .seealso: IPSetBilinearForm(), IPGetBilinearForm()
 82: E*/
 83: typedef enum { IPINNER_HERMITIAN, IPINNER_SYMMETRIC } IPBilinearForm;
 84: EXTERN PetscErrorCode IPSetBilinearForm(IP,Mat,IPBilinearForm);
 85: EXTERN PetscErrorCode IPGetBilinearForm(IP,Mat*,IPBilinearForm*);
 86: EXTERN PetscErrorCode IPApplyMatrix(IP,Vec,Vec);

 88: EXTERN PetscErrorCode IPInnerProduct(IP ip,Vec,Vec,PetscScalar*);
 89: EXTERN PetscErrorCode IPInnerProductBegin(IP ip,Vec,Vec,PetscScalar*);
 90: EXTERN PetscErrorCode IPInnerProductEnd(IP ip,Vec,Vec,PetscScalar*);
 91: EXTERN PetscErrorCode IPMInnerProduct(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
 92: EXTERN PetscErrorCode IPMInnerProductBegin(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
 93: EXTERN PetscErrorCode IPMInnerProductEnd(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
 94: EXTERN PetscErrorCode IPNorm(IP ip,Vec,PetscReal*);
 95: EXTERN PetscErrorCode IPNormBegin(IP ip,Vec,PetscReal*);
 96: EXTERN PetscErrorCode IPNormEnd(IP ip,Vec,PetscReal*);

 98: EXTERN PetscErrorCode IPGetOperationCounters(IP,PetscInt*);
 99: EXTERN PetscErrorCode IPResetOperationCounters(IP);

102: #endif