Actual source code: feastp.h
slepc-3.11.2 2019-07-30
1: /*
2: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3: SLEPc - Scalable Library for Eigenvalue Problem Computations
4: Copyright (c) 2002-2019, Universitat Politecnica de Valencia, Spain
6: This file is part of SLEPc.
7: SLEPc is distributed under a 2-clause BSD license (see LICENSE).
8: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9: */
10: /*
11: Private data structure used by the FEAST interface
12: */
14: #if !defined(SLEPC_FEAST_H)
15: #define SLEPC_FEAST_H
17: typedef struct {
18: PetscScalar *work1,*work2,*Aq,*Bq; /* workspace */
19: PetscBLASInt npoints; /* number of contour points */
20: } EPS_FEAST;
22: /*
23: Definition of routines from the FEAST package
24: */
26: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
27: #define SLEPC_FEAST(lcase,ucase) lcase##_
28: #elif defined(SLEPC_FEAST_HAVE_CAPS)
29: #define SLEPC_FEAST(lcase,ucase) ucase
30: #else
31: #define SLEPC_FEAST(lcase,ucase) lcase
32: #endif
34: #if defined(PETSC_USE_COMPLEX)
36: #if defined(PETSC_USE_REAL_SINGLE)
38: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
39: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase##_
40: #elif defined(SLEPC_FEAST_HAVE_CAPS)
41: #define SLEPC_FEASTM(lcase,ucase) CFEAST_H##ucase
42: #else
43: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase
44: #endif
46: #else
48: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
49: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase##_
50: #elif defined(SLEPC_FEAST_HAVE_CAPS)
51: #define SLEPC_FEASTM(lcase,ucase) ZFEAST_H##ucase
52: #else
53: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase
54: #endif
56: #endif
58: #else
60: #if defined(PETSC_USE_REAL_SINGLE)
62: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
63: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase##_
64: #elif defined(SLEPC_FEAST_HAVE_CAPS)
65: #define SLEPC_FEASTM(lcase,ucase) SFEAST_S##ucase
66: #else
67: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase
68: #endif
70: #else
72: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
73: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase##_
74: #elif defined(SLEPC_FEAST_HAVE_CAPS)
75: #define SLEPC_FEASTM(lcase,ucase) DFEAST_S##ucase
76: #else
77: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase
78: #endif
80: #endif
82: #endif
84: #define FEASTinit_(a) SLEPC_FEAST(feastinit,FEASTINIT) ((a))
85: #define FEASTrci_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) SLEPC_FEASTM(rci,RCI) ((a),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n),(o),(p),(q),(r))
87: SLEPC_EXTERN void SLEPC_FEAST(feastinit,FEASTINIT)(PetscBLASInt*);
88: SLEPC_EXTERN void SLEPC_FEASTM(rci,RCI)(PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*,PetscReal*,PetscReal*,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*);
90: #endif