Actual source code: arpackp.h

  1: /*
  2:    Private data structure used by the ARPACK interface

  4:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  5:    SLEPc - Scalable Library for Eigenvalue Problem Computations
  6:    Copyright (c) 2002-2009, Universidad Politecnica de Valencia, Spain
  7:  
  8:    This file is part of SLEPc.
  9:       
 10:    SLEPc is free software: you can redistribute it and/or modify it under  the
 11:    terms of version 3 of the GNU Lesser General Public License as published by
 12:    the Free Software Foundation.
 13:  
 14:    SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY 
 15:    WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS 
 16:    FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for 
 17:    more details.
 18:  
 19:    You  should have received a copy of the GNU Lesser General  Public  License
 20:    along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
 21:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 22: */


 27:  #include private/epsimpl.h

 29: typedef struct {
 30:   PetscTruth  *select;
 31:   PetscScalar *workev;
 32:   PetscScalar *workd;
 33:   PetscScalar *workl;
 34:   PetscBLASInt
 35:               lworkl;
 36: #if defined(PETSC_USE_COMPLEX)
 37:   PetscReal  *rwork;
 38: #endif
 39: } EPS_ARPACK;

 41: /*
 42:    Definition of routines from the ARPACK package
 43: */

 45: #if defined(SLEPC_ARPACK_HAVE_UNDERSCORE)
 46: #define SLEPC_ARPACK(lcase,ucase) lcase##_
 47: #elif defined(SLEPC_ARPACK_HAVE_CAPS)
 48: #define SLEPC_ARPACK(lcase,ucase) ucase
 49: #else
 50: #define SLEPC_ARPACK(lcase,ucase) lcase
 51: #endif

 53: #if !defined(PETSC_USE_COMPLEX)

 55: /*
 56:     These are real case 
 57: */

 59: #if defined(PETSC_USES_FORTRAN_SINGLE) 
 60: /*
 61:    For these machines we must call the single precision Fortran version
 62: */
 63: #define ARnaupd_ SLEPC_ARPACK(psnaupd,PSNAUPD)
 64: #define ARneupd_ SLEPC_ARPACK(psneupd,PSNEUPD)
 65: #define ARsaupd_ SLEPC_ARPACK(pssaupd,PSSAUPD)
 66: #define ARseupd_ SLEPC_ARPACK(psseupd,PSSEUPD)

 68: #else

 70: #define ARnaupd_ SLEPC_ARPACK(pdnaupd,PDNAUPD)
 71: #define ARneupd_ SLEPC_ARPACK(pdneupd,PDNEUPD)
 72: #define ARsaupd_ SLEPC_ARPACK(pdsaupd,PDSAUPD)
 73: #define ARseupd_ SLEPC_ARPACK(pdseupd,PDSEUPD)

 75: #endif

 77: #else
 78: /*
 79:    Complex 
 80: */
 81: #if defined(PETSC_USE_SINGLE) 

 83: #define ARnaupd_ SLEPC_ARPACK(pcnaupd,PCNAUPD)
 84: #define ARneupd_ SLEPC_ARPACK(pcneupd,PCNEUPD)

 86: #else

 88: #define ARnaupd_ SLEPC_ARPACK(pznaupd,PZNAUPD)
 89: #define ARneupd_ SLEPC_ARPACK(pzneupd,PZNEUPD)

 91: #endif

 93: #endif


 97: EXTERN void   ARsaupd_(MPI_Fint*,PetscBLASInt*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
 98:                        PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
 99:                        PetscBLASInt*,PetscBLASInt*,int,int);
100: EXTERN void   ARseupd_(MPI_Fint*,PetscTruth*,char*,PetscTruth*,PetscReal*,PetscReal*,PetscBLASInt*,PetscReal*,
101:                        char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,
102:                        PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,
103:                        PetscBLASInt*,int,int,int);

105: #if !defined(PETSC_USE_COMPLEX)
106: EXTERN void   ARnaupd_(MPI_Fint*,PetscBLASInt*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
107:                        PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
108:                        PetscBLASInt*,PetscBLASInt*,int,int);
109: EXTERN void   ARneupd_(MPI_Fint*,PetscTruth*,char*,PetscTruth*,PetscReal*,PetscReal*,PetscReal*,PetscBLASInt*,PetscReal*,
110:                        PetscReal*,PetscReal*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
111:                        PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
112:                        PetscBLASInt*,PetscBLASInt*,int,int,int);
113: #else
114: EXTERN void   ARnaupd_(MPI_Fint*,PetscBLASInt*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
115:                        PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
116:                        PetscBLASInt*,PetscReal*,PetscBLASInt*,int,int);
117: EXTERN void   ARneupd_(MPI_Fint*,PetscTruth*,char*,PetscTruth*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,
118:                        PetscScalar*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,
119:                        PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,
120:                        PetscReal*,PetscBLASInt*,int,int,int);
121: #endif


125: #endif