/*
|
/*
|
Private data structure used by the BLZPACK interface
|
Private data structure used by the BLZPACK interface
|
|
|
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
SLEPc - Scalable Library for Eigenvalue Problem Computations
|
|
Copyright (c) 2002-2007, Universidad Politecnica de Valencia, Spain
|
|
|
|
This file is part of SLEPc. See the README file for conditions of use
|
|
and additional information.
|
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
*/
|
*/
|
|
|
#if !defined(__BLZPACKP_H)
|
#if !defined(__BLZPACKP_H)
|
#define __BLZPACKP_H
|
#define __BLZPACKP_H
|
|
|
#include "src/eps/epsimpl.h"
|
#include "src/eps/epsimpl.h"
|
|
|
typedef struct {
|
typedef struct {
|
int block_size; /* block size */
|
int block_size; /* block size */
|
PetscReal initial,final; /* computational interval */
|
PetscReal initial,final; /* computational interval */
|
int slice; /* use spectrum slicing */
|
int slice; /* use spectrum slicing */
|
int nsteps; /* maximum number of steps per run */
|
int nsteps; /* maximum number of steps per run */
|
int *istor;
|
int *istor;
|
PetscReal *rstor;
|
PetscReal *rstor;
|
PetscScalar *u;
|
PetscScalar *u;
|
PetscScalar *v;
|
PetscScalar *v;
|
PetscScalar *eig;
|
PetscScalar *eig;
|
} EPS_BLZPACK;
|
} EPS_BLZPACK;
|
|
|
/*
|
/*
|
Definition of routines from the BLZPACK package
|
Definition of routines from the BLZPACK package
|
*/
|
*/
|
|
|
#if defined(SLEPC_BLZPACK_HAVE_UNDERSCORE)
|
#if defined(SLEPC_BLZPACK_HAVE_UNDERSCORE)
|
#define SLEPC_BLZPACK(lcase,ucase) lcase##_
|
#define SLEPC_BLZPACK(lcase,ucase) lcase##_
|
#elif defined(SLEPC_BLZPACK_HAVE_CAPS)
|
#elif defined(SLEPC_BLZPACK_HAVE_CAPS)
|
#define SLEPC_BLZPACK(lcase,ucase) ucase
|
#define SLEPC_BLZPACK(lcase,ucase) ucase
|
#else
|
#else
|
#define SLEPC_BLZPACK(lcase,ucase) lcase
|
#define SLEPC_BLZPACK(lcase,ucase) lcase
|
#endif
|
#endif
|
|
|
/*
|
/*
|
These are real case, current version of BLZPACK only supports real
|
These are real case, current version of BLZPACK only supports real
|
matrices
|
matrices
|
*/
|
*/
|
|
|
#if defined(PETSC_USE_SINGLE)
|
#if defined(PETSC_USE_SINGLE)
|
/*
|
/*
|
For these machines we must call the single precision Fortran version
|
For these machines we must call the single precision Fortran version
|
*/
|
*/
|
#define BLZpack_ SLEPC_BLZPACK(blzdrs,BLZDRS)
|
#define BLZpack_ SLEPC_BLZPACK(blzdrs,BLZDRS)
|
#else
|
#else
|
#define BLZpack_ SLEPC_BLZPACK(blzdrd,BLZDRD)
|
#define BLZpack_ SLEPC_BLZPACK(blzdrd,BLZDRD)
|
#endif
|
#endif
|
|
|
#define BLZistorr_ SLEPC_BLZPACK(istorr,ISTORR)
|
#define BLZistorr_ SLEPC_BLZPACK(istorr,ISTORR)
|
#define BLZrstorr_ SLEPC_BLZPACK(rstorr,RSTORR)
|
#define BLZrstorr_ SLEPC_BLZPACK(rstorr,RSTORR)
|
|
|
EXTERN_C_BEGIN
|
EXTERN_C_BEGIN
|
|
|
EXTERN void BLZpack_(int*,PetscReal*,PetscScalar*,int*,PetscScalar*,
|
EXTERN void BLZpack_(int*,PetscReal*,PetscScalar*,int*,PetscScalar*,
|
PetscScalar*,int*,int*,PetscScalar*,PetscScalar*);
|
PetscScalar*,int*,int*,PetscScalar*,PetscScalar*);
|
|
|
EXTERN int BLZistorr_(int*,const char*,int);
|
EXTERN int BLZistorr_(int*,const char*,int);
|
EXTERN PetscReal BLZrstorr_(PetscReal*,char*,int);
|
EXTERN PetscReal BLZrstorr_(PetscReal*,char*,int);
|
|
|
EXTERN_C_END
|
EXTERN_C_END
|
|
|
#endif
|
#endif
|
|
|
|
|
|
|