| Line 13... |
Line 13... |
{
|
{
|
Mat A; /* operator matrix */
|
Mat A; /* operator matrix */
|
Vec x;
|
Vec x;
|
EPS eps; /* eigenproblem solver context */
|
EPS eps; /* eigenproblem solver context */
|
ST st;
|
ST st;
|
KSP ksp;
|
|
PC pc;
|
|
EPSType type;
|
EPSType type;
|
PetscReal error, tol, re, im;
|
PetscReal error, tol, re, im;
|
PetscScalar kr, ki;
|
PetscScalar kr, ki;
|
int N, n=10, m, nev, ierr, maxit, i, j, I, J, its, nconv, Istart, Iend;
|
int N, n=10, m, nev, ierr, maxit, i, j, I, J, its, nconv, Istart, Iend;
|
PetscScalar v, w, one = 1.0;
|
PetscScalar v, w, one = 1.0;
|
| Line 71... |
Line 69... |
|
|
/*
|
/*
|
Specify some options: use shift-and-invert to compute eigenpairs
|
Specify some options: use shift-and-invert to compute eigenpairs
|
close to the origin
|
close to the origin
|
*/
|
*/
|
ierr = EPSSetType(eps,EPSSUBSPACE);CHKERRQ(ierr);
|
|
ierr = EPSGetST(eps,&st);CHKERRQ(ierr);
|
ierr = EPSGetST(eps,&st);CHKERRQ(ierr);
|
ierr = STSetType(st,STSINV);CHKERRQ(ierr);
|
ierr = STSetType(st,STSINV);CHKERRQ(ierr);
|
ierr = STSetShift(st,1e-3);CHKERRQ(ierr);
|
ierr = STSetShift(st,0);CHKERRQ(ierr);
|
ierr = STGetKSP(st,&ksp);CHKERRQ(ierr);
|
|
ierr = KSPSetType(ksp,KSPPREONLY);CHKERRQ(ierr);
|
|
ierr = KSPGetPC(ksp,&pc);CHKERRQ(ierr);
|
|
ierr = PCSetType(pc,PCLU);CHKERRQ(ierr);
|
|
|
|
/*
|
/*
|
Set solver parameters at runtime
|
Set solver parameters at runtime
|
*/
|
*/
|
ierr = EPSSetFromOptions(eps);CHKERRQ(ierr);
|
ierr = EPSSetFromOptions(eps);CHKERRQ(ierr);
|