Subversion Repositories slepc-dev

Rev

Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 dsic.upv.es!jroman 1
/*
2
   Private data structure used by the ARPACK interface
1376 slepc 3
 
4
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1672 slepc 5
   SLEPc - Scalable Library for Eigenvalue Problem Computations
2575 eromero 6
   Copyright (c) 2002-2011, Universitat Politecnica de Valencia, Spain
1672 slepc 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/>.
1376 slepc 21
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6 dsic.upv.es!jroman 22
*/
23
 
24
#if !defined(__ARPACKP_H)
25
#define __ARPACKP_H
26
 
27
typedef struct {
2216 jroman 28
  PetscBool   *select;
6 dsic.upv.es!jroman 29
  PetscScalar *workev;
30
  PetscScalar *workd;
31
  PetscScalar *workl;
1509 slepc 32
  PetscBLASInt
33
              lworkl;
6 dsic.upv.es!jroman 34
#if defined(PETSC_USE_COMPLEX)
35
  PetscReal  *rwork;
36
#endif
37
} EPS_ARPACK;
38
 
39
/*
40
   Definition of routines from the ARPACK package
41
*/
42
 
806 dsic.upv.es!antodo 43
#if defined(SLEPC_ARPACK_HAVE_UNDERSCORE)
44
#define SLEPC_ARPACK(lcase,ucase) lcase##_
45
#elif defined(SLEPC_ARPACK_HAVE_CAPS)
46
#define SLEPC_ARPACK(lcase,ucase) ucase
47
#else
48
#define SLEPC_ARPACK(lcase,ucase) lcase
49
#endif
6 dsic.upv.es!jroman 50
 
51
#if !defined(PETSC_USE_COMPLEX)
52
 
53
/*
54
    These are real case
55
*/
56
 
57
#if defined(PETSC_USES_FORTRAN_SINGLE)
58
/*
59
   For these machines we must call the single precision Fortran version
60
*/
806 dsic.upv.es!antodo 61
#define ARnaupd_ SLEPC_ARPACK(psnaupd,PSNAUPD)
62
#define ARneupd_ SLEPC_ARPACK(psneupd,PSNEUPD)
63
#define ARsaupd_ SLEPC_ARPACK(pssaupd,PSSAUPD)
64
#define ARseupd_ SLEPC_ARPACK(psseupd,PSSEUPD)
6 dsic.upv.es!jroman 65
 
66
#else
496 dsic.upv.es!antodo 67
 
806 dsic.upv.es!antodo 68
#define ARnaupd_ SLEPC_ARPACK(pdnaupd,PDNAUPD)
69
#define ARneupd_ SLEPC_ARPACK(pdneupd,PDNEUPD)
70
#define ARsaupd_ SLEPC_ARPACK(pdsaupd,PDSAUPD)
71
#define ARseupd_ SLEPC_ARPACK(pdseupd,PDSEUPD)
496 dsic.upv.es!antodo 72
 
6 dsic.upv.es!jroman 73
#endif
74
 
75
#else
76
/*
77
   Complex
78
*/
806 dsic.upv.es!antodo 79
#if defined(PETSC_USE_SINGLE)
6 dsic.upv.es!jroman 80
 
806 dsic.upv.es!antodo 81
#define ARnaupd_ SLEPC_ARPACK(pcnaupd,PCNAUPD)
82
#define ARneupd_ SLEPC_ARPACK(pcneupd,PCNEUPD)
496 dsic.upv.es!antodo 83
 
6 dsic.upv.es!jroman 84
#else
496 dsic.upv.es!antodo 85
 
806 dsic.upv.es!antodo 86
#define ARnaupd_ SLEPC_ARPACK(pznaupd,PZNAUPD)
87
#define ARneupd_ SLEPC_ARPACK(pzneupd,PZNEUPD)
496 dsic.upv.es!antodo 88
 
6 dsic.upv.es!jroman 89
#endif
90
 
91
#endif
92
 
93
EXTERN_C_BEGIN
94
 
2240 jroman 95
extern void   ARsaupd_(MPI_Fint*,PetscBLASInt*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
1509 slepc 96
                       PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
97
                       PetscBLASInt*,PetscBLASInt*,int,int);
2240 jroman 98
extern void   ARseupd_(MPI_Fint*,PetscBool*,char*,PetscBool*,PetscReal*,PetscReal*,PetscBLASInt*,PetscReal*,
1509 slepc 99
                       char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,
100
                       PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,
101
                       PetscBLASInt*,int,int,int);
6 dsic.upv.es!jroman 102
 
103
#if !defined(PETSC_USE_COMPLEX)
2240 jroman 104
extern void   ARnaupd_(MPI_Fint*,PetscBLASInt*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
1509 slepc 105
                       PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
106
                       PetscBLASInt*,PetscBLASInt*,int,int);
2240 jroman 107
extern void   ARneupd_(MPI_Fint*,PetscBool*,char*,PetscBool*,PetscReal*,PetscReal*,PetscReal*,PetscBLASInt*,PetscReal*,
1509 slepc 108
                       PetscReal*,PetscReal*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
109
                       PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
110
                       PetscBLASInt*,PetscBLASInt*,int,int,int);
6 dsic.upv.es!jroman 111
#else
2240 jroman 112
extern void   ARnaupd_(MPI_Fint*,PetscBLASInt*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,
1509 slepc 113
                       PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,
114
                       PetscBLASInt*,PetscReal*,PetscBLASInt*,int,int);
2240 jroman 115
extern void   ARneupd_(MPI_Fint*,PetscBool*,char*,PetscBool*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,
1509 slepc 116
                       PetscScalar*,char*,PetscBLASInt*,const char*,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,
117
                       PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,
118
                       PetscReal*,PetscBLASInt*,int,int,int);
6 dsic.upv.es!jroman 119
#endif
120
 
121
EXTERN_C_END
122
 
123
#endif
124