Date: 2013-09-02T10:05:19+00:00

Actual source code: feastp.h

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

      4:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      5:    SLEPc - Scalable Library for Eigenvalue Problem Computations
      6:    Copyright (c) 2002-2013, Universitat Politecnica de Valencia, Spain

      8:    This file is part of SLEPc.

     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.

     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.

     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: typedef struct {
     28:   PetscScalar  *work1,*work2,*Aq,*Bq;   /* workspace */
     29:   PetscBLASInt npoints;                 /* number of contour points */
     30: } EPS_FEAST;

     32: /*
     33:    Definition of routines from the FEAST package
     34: */

     36: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     37: #define SLEPC_FEAST(lcase,ucase) lcase##_
     38: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     39: #define SLEPC_FEAST(lcase,ucase) ucase
     40: #else
     41: #define SLEPC_FEAST(lcase,ucase) lcase
     42: #endif

     44: #if defined(PETSC_USE_COMPLEX)

     46: #if defined(PETSC_USE_REAL_SINGLE)

     48: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     49: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase##_
     50: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     51: #define SLEPC_FEASTM(lcase,ucase) CFEAST_H##ucase
     52: #else
     53: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase
     54: #endif

     56: #else

     58: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     59: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase##_
     60: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     61: #define SLEPC_FEASTM(lcase,ucase) ZFEAST_H##ucase
     62: #else
     63: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase
     64: #endif

     66: #endif

     68: #else

     70: #if defined(PETSC_USE_REAL_SINGLE)

     72: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     73: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase##_
     74: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     75: #define SLEPC_FEASTM(lcase,ucase) SFEAST_S##ucase
     76: #else
     77: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase
     78: #endif

     80: #else

     82: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     83: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase##_
     84: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     85: #define SLEPC_FEASTM(lcase,ucase) DFEAST_S##ucase
     86: #else
     87: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase
     88: #endif

     90: #endif

     92: #endif

     94: #define FEASTinit_(a) SLEPC_FEAST(feastinit,FEASTINIT) ((a))
     95: #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))

     97: PETSC_EXTERN void   SLEPC_FEAST(feastinit,FEASTINIT)(PetscBLASInt*);
     98: PETSC_EXTERN void   SLEPC_FEASTM(rci,RCI)(PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*,PetscReal*,PetscReal*,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*);

    100: #endif