Subversion Repositories slepc-dev

Rev

Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2312 Rev 2348
/*
/*
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   SLEPc - Scalable Library for Eigenvalue Problem Computations
   SLEPc - Scalable Library for Eigenvalue Problem Computations
   Copyright (c) 2002-2010, Universidad Politecnica de Valencia, Spain
   Copyright (c) 2002-2010, Universidad Politecnica de Valencia, Spain
 
 
   This file is part of SLEPc.
   This file is part of SLEPc.
     
     
   SLEPc is free software: you can redistribute it and/or modify it under  the
   SLEPc is free software: you can redistribute it and/or modify it under  the
   terms of version 3 of the GNU Lesser General Public License as published by
   terms of version 3 of the GNU Lesser General Public License as published by
   the Free Software Foundation.
   the Free Software Foundation.
 
 
   SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY
   SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY
   WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS
   WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS
   FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for
   FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for
   more details.
   more details.
 
 
   You  should have received a copy of the GNU Lesser General  Public  License
   You  should have received a copy of the GNU Lesser General  Public  License
   along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
   along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
*/
 
 
#if !defined(__SLEPCIP_H)
#if !defined(__SLEPCIP_H)
#define __SLEPCIP_H
#define __SLEPCIP_H
#include "slepcsys.h"
#include "slepcsys.h"
PETSC_EXTERN_CXX_BEGIN
PETSC_EXTERN_CXX_BEGIN
 
 
extern PetscClassId IP_CLASSID;
extern PetscClassId IP_CLASSID;
 
 
/*E
/*E
    IPOrthogonalizationType - determines what type of orthogonalization to use
    IPOrthogonalizationType - determines what type of orthogonalization to use
 
 
    Level: advanced
    Level: advanced
 
 
.seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
.seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
E*/
E*/
typedef enum { IP_ORTH_MGS,
typedef enum { IP_ORTH_MGS,
               IP_ORTH_CGS } IPOrthogonalizationType;
               IP_ORTH_CGS } IPOrthogonalizationType;
 
 
/*E
/*E
    IPOrthogonalizationRefinementType - determines what type of refinement
    IPOrthogonalizationRefinementType - determines what type of refinement
    to use during orthogonalization
    to use during orthogonalization
 
 
    Level: advanced
    Level: advanced
 
 
.seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
.seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
E*/
E*/
typedef enum { IP_ORTH_REFINE_NEVER,
typedef enum { IP_ORTH_REFINE_NEVER,
               IP_ORTH_REFINE_IFNEEDED,
               IP_ORTH_REFINE_IFNEEDED,
               IP_ORTH_REFINE_ALWAYS } IPOrthogonalizationRefinementType;
               IP_ORTH_REFINE_ALWAYS } IPOrthogonalizationRefinementType;
 
 
/*S
/*S
     IP - Abstraction of a vector inner product, that can be defined
     IP - Abstraction of a vector inner product, that can be defined
     in different ways. Using this object is not required for application
     in different ways. Using this object is not required for application
     programmers.
     programmers.
 
 
   Level: beginner
   Level: beginner
 
 
.seealso:  IPCreate()
.seealso:  IPCreate()
S*/
S*/
typedef struct _p_IP* IP;
typedef struct _p_IP* IP;
 
 
extern PetscErrorCode IPCreate(MPI_Comm,IP*);
extern PetscErrorCode IPCreate(MPI_Comm,IP*);
extern PetscErrorCode IPSetOptionsPrefix(IP,const char *);
extern PetscErrorCode IPSetOptionsPrefix(IP,const char *);
extern PetscErrorCode IPAppendOptionsPrefix(IP,const char *);
extern PetscErrorCode IPAppendOptionsPrefix(IP,const char *);
extern PetscErrorCode IPGetOptionsPrefix(IP,const char *[]);
extern PetscErrorCode IPGetOptionsPrefix(IP,const char *[]);
extern PetscErrorCode IPSetFromOptions(IP);
extern PetscErrorCode IPSetFromOptions(IP);
extern PetscErrorCode IPSetOrthogonalization(IP,IPOrthogonalizationType,IPOrthogonalizationRefinementType,PetscReal);
extern PetscErrorCode IPSetOrthogonalization(IP,IPOrthogonalizationType,IPOrthogonalizationRefinementType,PetscReal);
extern PetscErrorCode IPGetOrthogonalization(IP,IPOrthogonalizationType*,IPOrthogonalizationRefinementType*,PetscReal*);
extern PetscErrorCode IPGetOrthogonalization(IP,IPOrthogonalizationType*,IPOrthogonalizationRefinementType*,PetscReal*);
extern PetscErrorCode IPView(IP,PetscViewer);
extern PetscErrorCode IPView(IP,PetscViewer);
extern PetscErrorCode IPDestroy(IP*);
extern PetscErrorCode IPDestroy(IP*);
 
extern PetscErrorCode IPReset(IP);
 
 
extern PetscErrorCode IPOrthogonalize(IP,PetscInt,Vec*,PetscInt,PetscBool*,Vec*,Vec,PetscScalar*,PetscReal*,PetscBool*);
extern PetscErrorCode IPOrthogonalize(IP,PetscInt,Vec*,PetscInt,PetscBool*,Vec*,Vec,PetscScalar*,PetscReal*,PetscBool*);
extern PetscErrorCode IPBiOrthogonalize(IP,PetscInt,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
extern PetscErrorCode IPBiOrthogonalize(IP,PetscInt,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
extern PetscErrorCode IPQRDecomposition(IP,Vec*,PetscInt,PetscInt,PetscScalar*,PetscInt);
extern PetscErrorCode IPQRDecomposition(IP,Vec*,PetscInt,PetscInt,PetscScalar*,PetscInt);
 
 
/*E
/*E
    IPBilinearForm - determines the type of bilinear/sesquilinear form
    IPBilinearForm - determines the type of bilinear/sesquilinear form
 
 
    Level: developer
    Level: developer
 
 
.seealso: IPSetBilinearForm(), IPGetBilinearForm()
.seealso: IPSetBilinearForm(), IPGetBilinearForm()
E*/
E*/
typedef enum { IP_INNER_HERMITIAN,
typedef enum { IP_INNER_HERMITIAN,
               IP_INNER_SYMMETRIC } IPBilinearForm;
               IP_INNER_SYMMETRIC } IPBilinearForm;
extern PetscErrorCode IPSetBilinearForm(IP,Mat,IPBilinearForm);
extern PetscErrorCode IPSetBilinearForm(IP,Mat,IPBilinearForm);
extern PetscErrorCode IPGetBilinearForm(IP,Mat*,IPBilinearForm*);
extern PetscErrorCode IPGetBilinearForm(IP,Mat*,IPBilinearForm*);
extern PetscErrorCode IPApplyMatrix(IP,Vec,Vec);
extern PetscErrorCode IPApplyMatrix(IP,Vec,Vec);
 
 
extern PetscErrorCode IPInnerProduct(IP ip,Vec,Vec,PetscScalar*);
extern PetscErrorCode IPInnerProduct(IP ip,Vec,Vec,PetscScalar*);
extern PetscErrorCode IPInnerProductBegin(IP ip,Vec,Vec,PetscScalar*);
extern PetscErrorCode IPInnerProductBegin(IP ip,Vec,Vec,PetscScalar*);
extern PetscErrorCode IPInnerProductEnd(IP ip,Vec,Vec,PetscScalar*);
extern PetscErrorCode IPInnerProductEnd(IP ip,Vec,Vec,PetscScalar*);
extern PetscErrorCode IPMInnerProduct(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
extern PetscErrorCode IPMInnerProduct(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
extern PetscErrorCode IPMInnerProductBegin(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
extern PetscErrorCode IPMInnerProductBegin(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
extern PetscErrorCode IPMInnerProductEnd(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
extern PetscErrorCode IPMInnerProductEnd(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
extern PetscErrorCode IPNorm(IP ip,Vec,PetscReal*);
extern PetscErrorCode IPNorm(IP ip,Vec,PetscReal*);
extern PetscErrorCode IPNormBegin(IP ip,Vec,PetscReal*);
extern PetscErrorCode IPNormBegin(IP ip,Vec,PetscReal*);
extern PetscErrorCode IPNormEnd(IP ip,Vec,PetscReal*);
extern PetscErrorCode IPNormEnd(IP ip,Vec,PetscReal*);
 
 
extern PetscErrorCode IPGetOperationCounters(IP,PetscInt*);
extern PetscErrorCode IPGetOperationCounters(IP,PetscInt*);
extern PetscErrorCode IPResetOperationCounters(IP);
extern PetscErrorCode IPResetOperationCounters(IP);
 
 
PETSC_EXTERN_CXX_END
PETSC_EXTERN_CXX_END
#endif
#endif