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
2757 jroman 1
/*
2
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3
   SLEPc - Scalable Library for Eigenvalue Problem Computations
4
   Copyright (c) 2002-2011, Universitat Politecnica de Valencia, Spain
5
 
6
   This file is part of SLEPc.
7
 
8
   SLEPc is free software: you can redistribute it and/or modify it under  the
9
   terms of version 3 of the GNU Lesser General Public License as published by
10
   the Free Software Foundation.
11
 
12
   SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY
13
   WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS
14
   FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for
15
   more details.
16
 
17
   You  should have received a copy of the GNU Lesser General  Public  License
18
   along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
19
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
20
*/
21
 
22
#ifndef _PSIMPL
23
#define _PSIMPL
24
 
25
#include <slepcps.h>
26
 
2771 jroman 27
extern PetscLogEvent PS_Solve,PS_Sort,PS_Other;
2757 jroman 28
 
29
typedef struct _PSOps *PSOps;
30
 
31
struct _PSOps {
32
  PetscErrorCode (*allocate)(PS,PetscInt);
33
  PetscErrorCode (*computevector)(PS,PetscInt,PSMatType,PetscBool*);
2759 jroman 34
  PetscErrorCode (*solve)(PS,PetscScalar*,PetscScalar*);
2763 jroman 35
  PetscErrorCode (*sort)(PS,PetscScalar*,PetscScalar*,PetscErrorCode(*)(PetscScalar,PetscScalar,PetscScalar,PetscScalar,PetscInt*,void*),void*);
2766 jroman 36
  PetscErrorCode (*cond)(PS,PetscReal*);
2772 jroman 37
  PetscErrorCode (*translate)(PS,PetscScalar,PetscScalar,PetscScalar*);
2757 jroman 38
};
39
 
40
struct _p_PS {
41
  PETSCHEADER(struct _PSOps);
2766 jroman 42
  PetscInt     ld;                 /* leading dimension */
43
  PetscInt     l;                  /* number of locked (inactive) leading columns */
44
  PetscInt     n;                  /* current dimension */
45
  PetscInt     k;                  /* intermediate dimension (e.g. position of arrow) */
46
  PSStateType  state;              /* the current state */
47
  PetscScalar  *mat[PS_NUM_MAT];   /* the matrices */
48
  PetscReal    *rmat[PS_NUM_MAT];  /* the matrices (real) */
49
  PetscScalar  *work;
50
  PetscReal    *rwork;
51
  PetscBLASInt *iwork;
2770 jroman 52
  PetscInt     lwork,lrwork,liwork;
2757 jroman 53
};
54
 
2758 jroman 55
extern PetscErrorCode PSAllocateMat_Private(PS,PSMatType);
2770 jroman 56
extern PetscErrorCode PSAllocateWork_Private(PS,PetscInt,PetscInt,PetscInt);
2758 jroman 57
 
2757 jroman 58
#endif