1: /*
2: Private header for PEPJD.
4: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5: SLEPc - Scalable Library for Eigenvalue Problem Computations
6: Copyright (c) 2002-2015, 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: PetscReal keep; /* restart parameter */
29: PetscReal mtol; /* tolerance for eigenvalue multiplicity */
30: PetscReal htol; /* tolerance for harmonic JD */
31: PetscReal stol; /* tolerance for harmonic shift */
32: PetscInt fnini; /* first initial search space */
33: PetscBool randini; /* use random initial search space */
34: PetscBool custpc; /* use custom correction equation preconditioner */
35: PetscBool flglk; /* whether in locking step */
36: PetscBool flgre; /* whether in restarting step */
37: BV *W; /* work basis vectors to store A_i*V */
38: PC pcshell; /* preconditioner including basic precond+projector */
39: } PEP_JD;
41: typedef struct {
42: PC pc; /* basic preconditioner */
43: Vec Bp; /* preconditioned residual of derivative polynomial, B\p */
44: Vec u; /* Ritz vector */
45: PetscScalar gamma; /* precomputed scalar u'*B\p */
46: } PEP_JD_PCSHELL;
48: PETSC_INTERN PetscErrorCode PEPView_JD(PEP,PetscViewer);
49: PETSC_INTERN PetscErrorCode PEPSetFromOptions_JD(PetscOptions*,PEP);
50: PETSC_INTERN PetscErrorCode PEPJDSetRestart_JD(PEP,PetscReal);
51: PETSC_INTERN PetscErrorCode PEPJDGetRestart_JD(PEP,PetscReal*);
52: PETSC_INTERN PetscErrorCode PEPJDSetTolerances_JD(PEP,PetscReal,PetscReal,PetscReal);
53: PETSC_INTERN PetscErrorCode PEPJDGetTolerances_JD(PEP,PetscReal*,PetscReal*,PetscReal*);
55: #endif