Actual source code: slepcip.h

  1: /*
  2:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  3:    SLEPc - Scalable Library for Eigenvalue Problem Computations
  4:    Copyright (c) 2002-2010, 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 slepcsys.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_ORTH_MGS,
 37:                IP_ORTH_CGS } IPOrthogonalizationType;

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

 43:     Level: advanced

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

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

 56:    Level: beginner

 58: .seealso:  IPCreate()
 59: S*/
 60: typedef struct _p_IP* IP;

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

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

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

 80:     Level: developer

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

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

100: EXTERN PetscErrorCode IPGetOperationCounters(IP,PetscInt*);
101: EXTERN PetscErrorCode IPResetOperationCounters(IP);

104: #endif