Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
3 | SLEPc - Scalable Library for Eigenvalue Problem Computations | ||
4 | Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain | ||
5 | |||
6 | This file is part of SLEPc. | ||
7 | SLEPc is distributed under a 2-clause BSD license (see LICENSE). | ||
8 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
9 | */ | ||
10 | /* | ||
11 | PEP routines related to options that can be set via the command-line | ||
12 | or procedurally | ||
13 | */ | ||
14 | |||
15 | #include <slepc/private/pepimpl.h> /*I "slepcpep.h" I*/ | ||
16 | #include <petscdraw.h> | ||
17 | |||
18 | /*@C | ||
19 | PEPMonitorSetFromOptions - Sets a monitor function and viewer appropriate for the type | ||
20 | indicated by the user. | ||
21 | |||
22 | Collective | ||
23 | |||
24 | Input Parameters: | ||
25 | + pep - the polynomial eigensolver context | ||
26 | . opt - the command line option for this monitor | ||
27 | . name - the monitor type one is seeking | ||
28 | . ctx - an optional user context for the monitor, or NULL | ||
29 | - trackall - whether this monitor tracks all eigenvalues or not | ||
30 | |||
31 | Level: developer | ||
32 | |||
33 | .seealso: PEPMonitorSet(), PEPSetTrackAll() | ||
34 | @*/ | ||
35 | 5526 | PetscErrorCode PEPMonitorSetFromOptions(PEP pep,const char opt[],const char name[],void *ctx,PetscBool trackall) | |
36 | { | ||
37 | 5526 | PetscErrorCode (*mfunc)(PEP,PetscInt,PetscInt,PetscScalar*,PetscScalar*,PetscReal*,PetscInt,void*); | |
38 | 5526 | PetscErrorCode (*cfunc)(PetscViewer,PetscViewerFormat,void*,PetscViewerAndFormat**); | |
39 | 5526 | PetscErrorCode (*dfunc)(PetscViewerAndFormat**); | |
40 | 5526 | PetscViewerAndFormat *vf; | |
41 | 5526 | PetscViewer viewer; | |
42 | 5526 | PetscViewerFormat format; | |
43 | 5526 | PetscViewerType vtype; | |
44 | 5526 | char key[PETSC_MAX_PATH_LEN]; | |
45 | 5526 | PetscBool flg; | |
46 | |||
47 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
5526 | PetscFunctionBegin; |
48 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
5526 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,opt,&viewer,&format,&flg)); |
49 |
8/14✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
5526 | if (!flg) PetscFunctionReturn(PETSC_SUCCESS); |
50 | |||
51 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscViewerGetType(viewer,&vtype)); |
52 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(SlepcMonitorMakeKey_Internal(name,vtype,format,key)); |
53 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscFunctionListFind(PEPMonitorList,key,&mfunc)); |
54 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
59 | PetscCheck(mfunc,PetscObjectComm((PetscObject)pep),PETSC_ERR_SUP,"Specified viewer and format not supported"); |
55 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscFunctionListFind(PEPMonitorCreateList,key,&cfunc)); |
56 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscFunctionListFind(PEPMonitorDestroyList,key,&dfunc)); |
57 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
59 | if (!cfunc) cfunc = PetscViewerAndFormatCreate_Internal; |
58 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
59 | if (!dfunc) dfunc = PetscViewerAndFormatDestroy; |
59 | |||
60 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall((*cfunc)(viewer,format,ctx,&vf)); |
61 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscViewerDestroy(&viewer)); |
62 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PEPMonitorSet(pep,mfunc,vf,(PetscCtxDestroyFn*)dfunc)); |
63 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
59 | if (trackall) PetscCall(PEPSetTrackAll(pep,PETSC_TRUE)); |
64 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
10 | PetscFunctionReturn(PETSC_SUCCESS); |
65 | } | ||
66 | |||
67 | /*@ | ||
68 | PEPSetFromOptions - Sets PEP options from the options database. | ||
69 | This routine must be called before PEPSetUp() if the user is to be | ||
70 | allowed to set the solver type. | ||
71 | |||
72 | Collective | ||
73 | |||
74 | Input Parameters: | ||
75 | . pep - the polynomial eigensolver context | ||
76 | |||
77 | Notes: | ||
78 | To see all options, run your program with the -help option. | ||
79 | |||
80 | Level: beginner | ||
81 | |||
82 | .seealso: PEPSetOptionsPrefix() | ||
83 | @*/ | ||
84 | 1842 | PetscErrorCode PEPSetFromOptions(PEP pep) | |
85 | { | ||
86 | 1842 | char type[256]; | |
87 | 1842 | PetscBool set,flg,flg1,flg2,flg3,flg4,flg5; | |
88 | 1842 | PetscReal r,t,array[2]={0,0}; | |
89 | 1842 | PetscScalar s; | |
90 | 1842 | PetscInt i,j,k; | |
91 | 1842 | PEPScale scale; | |
92 | 1842 | PEPRefine refine; | |
93 | 1842 | PEPRefineScheme scheme; | |
94 | |||
95 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1842 | PetscFunctionBegin; |
96 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1842 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
97 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPRegisterAll()); |
98 |
8/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2 times.
|
5526 | PetscObjectOptionsBegin((PetscObject)pep); |
99 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1977 | PetscCall(PetscOptionsFList("-pep_type","Polynomial eigensolver method","PEPSetType",PEPList,(char*)(((PetscObject)pep)->type_name?((PetscObject)pep)->type_name:PEPTOAR),type,sizeof(type),&flg)); |
100 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetType(pep,type)); |
101 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
746 | else if (!((PetscObject)pep)->type_name) PetscCall(PEPSetType(pep,PEPTOAR)); |
102 | |||
103 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_general","General polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
104 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_GENERAL)); |
105 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_hermitian","Hermitian polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
106 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_HERMITIAN)); |
107 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_hyperbolic","Hyperbolic polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
108 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_HYPERBOLIC)); |
109 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_gyroscopic","Gyroscopic polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
110 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_GYROSCOPIC)); |
111 | |||
112 | 1842 | scale = pep->scale; | |
113 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_scale","Scaling strategy","PEPSetScale",PEPScaleTypes,(PetscEnum)scale,(PetscEnum*)&scale,&flg1)); |
114 | 1842 | r = pep->sfactor; | |
115 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsReal("-pep_scale_factor","Scale factor","PEPSetScale",pep->sfactor,&r,&flg2)); |
116 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
1842 | if (!flg2 && r==1.0) r = PETSC_DETERMINE; |
117 | 1842 | j = pep->sits; | |
118 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_scale_its","Number of iterations in diagonal scaling","PEPSetScale",pep->sits,&j,&flg3)); |
119 | 1842 | t = pep->slambda; | |
120 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsReal("-pep_scale_lambda","Estimate of eigenvalue (modulus) for diagonal scaling","PEPSetScale",pep->slambda,&t,&flg4)); |
121 |
9/14✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 8 times.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
1842 | if (flg1 || flg2 || flg3 || flg4) PetscCall(PEPSetScale(pep,scale,r,NULL,NULL,j,t)); |
122 | |||
123 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_extract","Extraction method","PEPSetExtract",PEPExtractTypes,(PetscEnum)pep->extract,(PetscEnum*)&pep->extract,NULL)); |
124 | |||
125 | 1842 | refine = pep->refine; | |
126 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_refine","Iterative refinement method","PEPSetRefine",PEPRefineTypes,(PetscEnum)refine,(PetscEnum*)&refine,&flg1)); |
127 | 1842 | i = pep->npart; | |
128 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_refine_partitions","Number of partitions of the communicator for iterative refinement","PEPSetRefine",pep->npart,&i,&flg2)); |
129 | 1842 | r = pep->rtol; | |
130 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1858 | PetscCall(PetscOptionsReal("-pep_refine_tol","Tolerance for iterative refinement","PEPSetRefine",pep->rtol==(PetscReal)PETSC_DETERMINE?SLEPC_DEFAULT_TOL/1000:pep->rtol,&r,&flg3)); |
131 | 1842 | j = pep->rits; | |
132 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_refine_its","Maximum number of iterations for iterative refinement","PEPSetRefine",pep->rits,&j,&flg4)); |
133 | 1842 | scheme = pep->scheme; | |
134 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_refine_scheme","Scheme used for linear systems within iterative refinement","PEPSetRefine",PEPRefineSchemes,(PetscEnum)scheme,(PetscEnum*)&scheme,&flg5)); |
135 |
10/16✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 8 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
|
1842 | if (flg1 || flg2 || flg3 || flg4 || flg5) PetscCall(PEPSetRefine(pep,refine,i,r,j,scheme)); |
136 | |||
137 | 1842 | i = pep->max_it; | |
138 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_max_it","Maximum number of iterations","PEPSetTolerances",pep->max_it,&i,&flg1)); |
139 | 1842 | r = pep->tol; | |
140 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
3009 | PetscCall(PetscOptionsReal("-pep_tol","Tolerance","PEPSetTolerances",SlepcDefaultTol(pep->tol),&r,&flg2)); |
141 |
8/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
1842 | if (flg1 || flg2) PetscCall(PEPSetTolerances(pep,r,i)); |
142 | |||
143 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_conv_rel","Relative error convergence test","PEPSetConvergenceTest",&flg)); |
144 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_REL)); |
145 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_conv_norm","Convergence test relative to the matrix norms","PEPSetConvergenceTest",&flg)); |
146 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_NORM)); |
147 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_conv_abs","Absolute error convergence test","PEPSetConvergenceTest",&flg)); |
148 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_ABS)); |
149 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_conv_user","User-defined convergence test","PEPSetConvergenceTest",&flg)); |
150 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_USER)); |
151 | |||
152 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_stop_basic","Stop iteration if all eigenvalues converged or max_it reached","PEPSetStoppingTest",&flg)); |
153 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetStoppingTest(pep,PEP_STOP_BASIC)); |
154 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_stop_user","User-defined stopping test","PEPSetStoppingTest",&flg)); |
155 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetStoppingTest(pep,PEP_STOP_USER)); |
156 | |||
157 | 1842 | i = pep->nev; | |
158 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_nev","Number of eigenvalues to compute","PEPSetDimensions",pep->nev,&i,&flg1)); |
159 | 1842 | j = pep->ncv; | |
160 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_ncv","Number of basis vectors","PEPSetDimensions",pep->ncv,&j,&flg2)); |
161 | 1842 | k = pep->mpd; | |
162 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_mpd","Maximum dimension of projected problem","PEPSetDimensions",pep->mpd,&k,&flg3)); |
163 |
9/12✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 8 times.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
1842 | if (flg1 || flg2 || flg3) PetscCall(PEPSetDimensions(pep,i,j,k)); |
164 | |||
165 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_basis","Polynomial basis","PEPSetBasis",PEPBasisTypes,(PetscEnum)pep->basis,(PetscEnum*)&pep->basis,NULL)); |
166 | |||
167 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_largest_magnitude","Compute largest eigenvalues in magnitude","PEPSetWhichEigenpairs",&flg)); |
168 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_LARGEST_MAGNITUDE)); |
169 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_smallest_magnitude","Compute smallest eigenvalues in magnitude","PEPSetWhichEigenpairs",&flg)); |
170 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_SMALLEST_MAGNITUDE)); |
171 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_largest_real","Compute eigenvalues with largest real parts","PEPSetWhichEigenpairs",&flg)); |
172 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_LARGEST_REAL)); |
173 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_smallest_real","Compute eigenvalues with smallest real parts","PEPSetWhichEigenpairs",&flg)); |
174 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_SMALLEST_REAL)); |
175 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_largest_imaginary","Compute eigenvalues with largest imaginary parts","PEPSetWhichEigenpairs",&flg)); |
176 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_LARGEST_IMAGINARY)); |
177 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_smallest_imaginary","Compute eigenvalues with smallest imaginary parts","PEPSetWhichEigenpairs",&flg)); |
178 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_SMALLEST_IMAGINARY)); |
179 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_target_magnitude","Compute eigenvalues closest to target","PEPSetWhichEigenpairs",&flg)); |
180 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_MAGNITUDE)); |
181 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_target_real","Compute eigenvalues with real parts closest to target","PEPSetWhichEigenpairs",&flg)); |
182 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_REAL)); |
183 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_target_imaginary","Compute eigenvalues with imaginary parts closest to target","PEPSetWhichEigenpairs",&flg)); |
184 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_IMAGINARY)); |
185 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_all","Compute all eigenvalues in an interval or a region","PEPSetWhichEigenpairs",&flg)); |
186 |
6/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_ALL)); |
187 | |||
188 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsScalar("-pep_target","Value of the target","PEPSetTarget",pep->target,&s,&flg)); |
189 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1842 | if (flg) { |
190 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
584 | if (pep->which!=PEP_TARGET_REAL && pep->which!=PEP_TARGET_IMAGINARY) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_MAGNITUDE)); |
191 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
584 | PetscCall(PEPSetTarget(pep,s)); |
192 | } | ||
193 | |||
194 | 1842 | k = 2; | |
195 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsRealArray("-pep_interval","Computational interval (two real values separated with a comma without spaces)","PEPSetInterval",array,&k,&flg)); |
196 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1842 | if (flg) { |
197 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
60 | PetscCheck(k>1,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_SIZ,"Must pass two values in -pep_interval (comma-separated without spaces)"); |
198 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(PEPSetWhichEigenpairs(pep,PEP_ALL)); |
199 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(PEPSetInterval(pep,array[0],array[1])); |
200 | } | ||
201 | |||
202 | /* -----------------------------------------------------------------------*/ | ||
203 | /* | ||
204 | Cancels all monitors hardwired into code before call to PEPSetFromOptions() | ||
205 | */ | ||
206 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBool("-pep_monitor_cancel","Remove any hardwired monitor routines","PEPMonitorCancel",PETSC_FALSE,&flg,&set)); |
207 |
7/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
1842 | if (set && flg) PetscCall(PEPMonitorCancel(pep)); |
208 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPMonitorSetFromOptions(pep,"-pep_monitor","first_approximation",NULL,PETSC_FALSE)); |
209 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPMonitorSetFromOptions(pep,"-pep_monitor_all","all_approximations",NULL,PETSC_TRUE)); |
210 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPMonitorSetFromOptions(pep,"-pep_monitor_conv","convergence_history",NULL,PETSC_FALSE)); |
211 | |||
212 | /* -----------------------------------------------------------------------*/ | ||
213 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_view","Print detailed information on solver used","PEPView",&set)); |
214 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_view_vectors","View computed eigenvectors","PEPVectorsView",&set)); |
215 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_view_values","View computed eigenvalues","PEPValuesView",&set)); |
216 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_converged_reason","Print reason for convergence, and number of iterations","PEPConvergedReasonView",&set)); |
217 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_error_absolute","Print absolute errors of each eigenpair","PEPErrorView",&set)); |
218 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_error_relative","Print relative errors of each eigenpair","PEPErrorView",&set)); |
219 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_error_backward","Print backward errors of each eigenpair","PEPErrorView",&set)); |
220 | |||
221 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | PetscTryTypeMethod(pep,setfromoptions,PetscOptionsObject); |
222 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)pep,PetscOptionsObject)); |
223 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscOptionsEnd(); |
224 | |||
225 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->V) PetscCall(PEPGetBV(pep,&pep->V)); |
226 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(BVSetFromOptions(pep->V)); |
227 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->rg) PetscCall(PEPGetRG(pep,&pep->rg)); |
228 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(RGSetFromOptions(pep->rg)); |
229 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->ds) PetscCall(PEPGetDS(pep,&pep->ds)); |
230 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPSetDSType(pep)); |
231 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(DSSetFromOptions(pep->ds)); |
232 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
233 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPSetDefaultST(pep)); |
234 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(STSetFromOptions(pep->st)); |
235 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->refineksp) PetscCall(PEPRefineGetKSP(pep,&pep->refineksp)); |
236 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(KSPSetFromOptions(pep->refineksp)); |
237 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
355 | PetscFunctionReturn(PETSC_SUCCESS); |
238 | } | ||
239 | |||
240 | /*@ | ||
241 | PEPGetTolerances - Gets the tolerance and maximum iteration count used | ||
242 | by the PEP convergence tests. | ||
243 | |||
244 | Not Collective | ||
245 | |||
246 | Input Parameter: | ||
247 | . pep - the polynomial eigensolver context | ||
248 | |||
249 | Output Parameters: | ||
250 | + tol - the convergence tolerance | ||
251 | - maxits - maximum number of iterations | ||
252 | |||
253 | Notes: | ||
254 | The user can specify NULL for any parameter that is not needed. | ||
255 | |||
256 | Level: intermediate | ||
257 | |||
258 | .seealso: PEPSetTolerances() | ||
259 | @*/ | ||
260 | 283 | PetscErrorCode PEPGetTolerances(PEP pep,PetscReal *tol,PetscInt *maxits) | |
261 | { | ||
262 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
283 | PetscFunctionBegin; |
263 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
283 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
264 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
283 | if (tol) *tol = pep->tol; |
265 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
283 | if (maxits) *maxits = pep->max_it; |
266 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
283 | PetscFunctionReturn(PETSC_SUCCESS); |
267 | } | ||
268 | |||
269 | /*@ | ||
270 | PEPSetTolerances - Sets the tolerance and maximum iteration count used | ||
271 | by the PEP convergence tests. | ||
272 | |||
273 | Logically Collective | ||
274 | |||
275 | Input Parameters: | ||
276 | + pep - the polynomial eigensolver context | ||
277 | . tol - the convergence tolerance | ||
278 | - maxits - maximum number of iterations to use | ||
279 | |||
280 | Options Database Keys: | ||
281 | + -pep_tol <tol> - Sets the convergence tolerance | ||
282 | - -pep_max_it <maxits> - Sets the maximum number of iterations allowed | ||
283 | |||
284 | Notes: | ||
285 | Use PETSC_CURRENT to retain the current value of any of the parameters. | ||
286 | Use PETSC_DETERMINE for either argument to assign a default value computed | ||
287 | internally (may be different in each solver). | ||
288 | For maxits use PETSC_UMLIMITED to indicate there is no upper bound on this value. | ||
289 | |||
290 | Level: intermediate | ||
291 | |||
292 | .seealso: PEPGetTolerances() | ||
293 | @*/ | ||
294 | 1141 | PetscErrorCode PEPSetTolerances(PEP pep,PetscReal tol,PetscInt maxits) | |
295 | { | ||
296 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1141 | PetscFunctionBegin; |
297 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1141 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
298 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
1141 | PetscValidLogicalCollectiveReal(pep,tol,2); |
299 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1141 | PetscValidLogicalCollectiveInt(pep,maxits,3); |
300 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
1141 | if (tol == (PetscReal)PETSC_DETERMINE) { |
301 | ✗ | pep->tol = PETSC_DETERMINE; | |
302 | ✗ | pep->state = PEP_STATE_INITIAL; | |
303 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1141 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
304 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1101 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
305 | 1101 | pep->tol = tol; | |
306 | } | ||
307 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1141 | if (maxits == PETSC_DETERMINE) { |
308 | 110 | pep->max_it = PETSC_DETERMINE; | |
309 | 110 | pep->state = PEP_STATE_INITIAL; | |
310 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
1031 | } else if (maxits == PETSC_UNLIMITED) { |
311 | ✗ | pep->max_it = PETSC_INT_MAX; | |
312 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1031 | } else if (maxits != PETSC_CURRENT) { |
313 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
342 | PetscCheck(maxits>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of maxits. Must be > 0"); |
314 | 342 | pep->max_it = maxits; | |
315 | } | ||
316 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
220 | PetscFunctionReturn(PETSC_SUCCESS); |
317 | } | ||
318 | |||
319 | /*@ | ||
320 | PEPGetDimensions - Gets the number of eigenvalues to compute | ||
321 | and the dimension of the subspace. | ||
322 | |||
323 | Not Collective | ||
324 | |||
325 | Input Parameter: | ||
326 | . pep - the polynomial eigensolver context | ||
327 | |||
328 | Output Parameters: | ||
329 | + nev - number of eigenvalues to compute | ||
330 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
331 | - mpd - the maximum dimension allowed for the projected problem | ||
332 | |||
333 | Notes: | ||
334 | The user can specify NULL for any parameter that is not needed. | ||
335 | |||
336 | Level: intermediate | ||
337 | |||
338 | .seealso: PEPSetDimensions() | ||
339 | @*/ | ||
340 | 824 | PetscErrorCode PEPGetDimensions(PEP pep,PetscInt *nev,PetscInt *ncv,PetscInt *mpd) | |
341 | { | ||
342 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
824 | PetscFunctionBegin; |
343 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
824 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
344 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
824 | if (nev) *nev = pep->nev; |
345 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
824 | if (ncv) *ncv = pep->ncv; |
346 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
824 | if (mpd) *mpd = pep->mpd; |
347 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
824 | PetscFunctionReturn(PETSC_SUCCESS); |
348 | } | ||
349 | |||
350 | /*@ | ||
351 | PEPSetDimensions - Sets the number of eigenvalues to compute | ||
352 | and the dimension of the subspace. | ||
353 | |||
354 | Logically Collective | ||
355 | |||
356 | Input Parameters: | ||
357 | + pep - the polynomial eigensolver context | ||
358 | . nev - number of eigenvalues to compute | ||
359 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
360 | - mpd - the maximum dimension allowed for the projected problem | ||
361 | |||
362 | Options Database Keys: | ||
363 | + -pep_nev <nev> - Sets the number of eigenvalues | ||
364 | . -pep_ncv <ncv> - Sets the dimension of the subspace | ||
365 | - -pep_mpd <mpd> - Sets the maximum projected dimension | ||
366 | |||
367 | Notes: | ||
368 | Use PETSC_DETERMINE for ncv and mpd to assign a reasonably good value, which is | ||
369 | dependent on the solution method. For any of the arguments, use PETSC_CURRENT | ||
370 | to preserve the current value. | ||
371 | |||
372 | The parameters ncv and mpd are intimately related, so that the user is advised | ||
373 | to set one of them at most. Normal usage is that | ||
374 | (a) in cases where nev is small, the user sets ncv (a reasonable default is 2*nev); and | ||
375 | (b) in cases where nev is large, the user sets mpd. | ||
376 | |||
377 | The value of ncv should always be between nev and (nev+mpd), typically | ||
378 | ncv=nev+mpd. If nev is not too large, mpd=nev is a reasonable choice, otherwise | ||
379 | a smaller value should be used. | ||
380 | |||
381 | When computing all eigenvalues in an interval, see PEPSetInterval(), these | ||
382 | parameters lose relevance, and tuning must be done with PEPSTOARSetDimensions(). | ||
383 | |||
384 | Level: intermediate | ||
385 | |||
386 | .seealso: PEPGetDimensions(), PEPSetInterval(), PEPSTOARSetDimensions() | ||
387 | @*/ | ||
388 | 1724 | PetscErrorCode PEPSetDimensions(PEP pep,PetscInt nev,PetscInt ncv,PetscInt mpd) | |
389 | { | ||
390 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1724 | PetscFunctionBegin; |
391 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1724 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
392 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1724 | PetscValidLogicalCollectiveInt(pep,nev,2); |
393 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1724 | PetscValidLogicalCollectiveInt(pep,ncv,3); |
394 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1724 | PetscValidLogicalCollectiveInt(pep,mpd,4); |
395 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1724 | if (nev != PETSC_CURRENT) { |
396 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1724 | PetscCheck(nev>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of nev. Must be > 0"); |
397 | 1724 | pep->nev = nev; | |
398 | } | ||
399 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1724 | if (ncv == PETSC_DETERMINE) { |
400 | 865 | pep->ncv = PETSC_DETERMINE; | |
401 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
859 | } else if (ncv != PETSC_CURRENT) { |
402 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
857 | PetscCheck(ncv>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of ncv. Must be > 0"); |
403 | 857 | pep->ncv = ncv; | |
404 | } | ||
405 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1724 | if (mpd == PETSC_DETERMINE) { |
406 | 1462 | pep->mpd = PETSC_DETERMINE; | |
407 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
262 | } else if (mpd != PETSC_CURRENT) { |
408 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
260 | PetscCheck(mpd>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of mpd. Must be > 0"); |
409 | 260 | pep->mpd = mpd; | |
410 | } | ||
411 | 1724 | pep->state = PEP_STATE_INITIAL; | |
412 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
1724 | PetscFunctionReturn(PETSC_SUCCESS); |
413 | } | ||
414 | |||
415 | /*@ | ||
416 | PEPSetWhichEigenpairs - Specifies which portion of the spectrum is | ||
417 | to be sought. | ||
418 | |||
419 | Logically Collective | ||
420 | |||
421 | Input Parameters: | ||
422 | + pep - eigensolver context obtained from PEPCreate() | ||
423 | - which - the portion of the spectrum to be sought | ||
424 | |||
425 | Options Database Keys: | ||
426 | + -pep_largest_magnitude - Sets largest eigenvalues in magnitude | ||
427 | . -pep_smallest_magnitude - Sets smallest eigenvalues in magnitude | ||
428 | . -pep_largest_real - Sets largest real parts | ||
429 | . -pep_smallest_real - Sets smallest real parts | ||
430 | . -pep_largest_imaginary - Sets largest imaginary parts | ||
431 | . -pep_smallest_imaginary - Sets smallest imaginary parts | ||
432 | . -pep_target_magnitude - Sets eigenvalues closest to target | ||
433 | . -pep_target_real - Sets real parts closest to target | ||
434 | . -pep_target_imaginary - Sets imaginary parts closest to target | ||
435 | - -pep_all - Sets all eigenvalues in an interval or region | ||
436 | |||
437 | Notes: | ||
438 | The parameter 'which' can have one of these values | ||
439 | |||
440 | + PEP_LARGEST_MAGNITUDE - largest eigenvalues in magnitude (default) | ||
441 | . PEP_SMALLEST_MAGNITUDE - smallest eigenvalues in magnitude | ||
442 | . PEP_LARGEST_REAL - largest real parts | ||
443 | . PEP_SMALLEST_REAL - smallest real parts | ||
444 | . PEP_LARGEST_IMAGINARY - largest imaginary parts | ||
445 | . PEP_SMALLEST_IMAGINARY - smallest imaginary parts | ||
446 | . PEP_TARGET_MAGNITUDE - eigenvalues closest to the target (in magnitude) | ||
447 | . PEP_TARGET_REAL - eigenvalues with real part closest to target | ||
448 | . PEP_TARGET_IMAGINARY - eigenvalues with imaginary part closest to target | ||
449 | . PEP_ALL - all eigenvalues contained in a given interval or region | ||
450 | - PEP_WHICH_USER - user defined ordering set with PEPSetEigenvalueComparison() | ||
451 | |||
452 | Not all eigensolvers implemented in PEP account for all the possible values | ||
453 | stated above. If SLEPc is compiled for real numbers PEP_LARGEST_IMAGINARY | ||
454 | and PEP_SMALLEST_IMAGINARY use the absolute value of the imaginary part | ||
455 | for eigenvalue selection. | ||
456 | |||
457 | The target is a scalar value provided with PEPSetTarget(). | ||
458 | |||
459 | The criterion PEP_TARGET_IMAGINARY is available only in case PETSc and | ||
460 | SLEPc have been built with complex scalars. | ||
461 | |||
462 | PEP_ALL is intended for use in combination with an interval (see | ||
463 | PEPSetInterval()), when all eigenvalues within the interval are requested, | ||
464 | and also for computing all eigenvalues in a region with the CISS solver. | ||
465 | In both cases, the number of eigenvalues is unknown, so the nev parameter | ||
466 | has a different sense, see PEPSetDimensions(). | ||
467 | |||
468 | Level: intermediate | ||
469 | |||
470 | .seealso: PEPGetWhichEigenpairs(), PEPSetTarget(), PEPSetInterval(), | ||
471 | PEPSetDimensions(), PEPSetEigenvalueComparison(), PEPWhich | ||
472 | @*/ | ||
473 | 1078 | PetscErrorCode PEPSetWhichEigenpairs(PEP pep,PEPWhich which) | |
474 | { | ||
475 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1078 | PetscFunctionBegin; |
476 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1078 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
477 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1078 | PetscValidLogicalCollectiveEnum(pep,which,2); |
478 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
1078 | switch (which) { |
479 | 1078 | case PEP_LARGEST_MAGNITUDE: | |
480 | case PEP_SMALLEST_MAGNITUDE: | ||
481 | case PEP_LARGEST_REAL: | ||
482 | case PEP_SMALLEST_REAL: | ||
483 | case PEP_LARGEST_IMAGINARY: | ||
484 | case PEP_SMALLEST_IMAGINARY: | ||
485 | case PEP_TARGET_MAGNITUDE: | ||
486 | case PEP_TARGET_REAL: | ||
487 | #if defined(PETSC_USE_COMPLEX) | ||
488 | case PEP_TARGET_IMAGINARY: | ||
489 | #endif | ||
490 | case PEP_ALL: | ||
491 | case PEP_WHICH_USER: | ||
492 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1078 | if (pep->which != which) { |
493 | 1038 | pep->state = PEP_STATE_INITIAL; | |
494 | 1038 | pep->which = which; | |
495 | } | ||
496 | 211 | break; | |
497 | #if !defined(PETSC_USE_COMPLEX) | ||
498 | ✗ | case PEP_TARGET_IMAGINARY: | |
499 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_SUP,"PEP_TARGET_IMAGINARY can be used only with complex scalars"); | |
500 | #endif | ||
501 | ✗ | default: | |
502 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'which' value"); | |
503 | } | ||
504 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
211 | PetscFunctionReturn(PETSC_SUCCESS); |
505 | } | ||
506 | |||
507 | /*@ | ||
508 | PEPGetWhichEigenpairs - Returns which portion of the spectrum is to be | ||
509 | sought. | ||
510 | |||
511 | Not Collective | ||
512 | |||
513 | Input Parameter: | ||
514 | . pep - eigensolver context obtained from PEPCreate() | ||
515 | |||
516 | Output Parameter: | ||
517 | . which - the portion of the spectrum to be sought | ||
518 | |||
519 | Notes: | ||
520 | See PEPSetWhichEigenpairs() for possible values of 'which'. | ||
521 | |||
522 | Level: intermediate | ||
523 | |||
524 | .seealso: PEPSetWhichEigenpairs(), PEPWhich | ||
525 | @*/ | ||
526 | 16 | PetscErrorCode PEPGetWhichEigenpairs(PEP pep,PEPWhich *which) | |
527 | { | ||
528 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
529 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
530 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(which,2); |
531 | 16 | *which = pep->which; | |
532 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
533 | } | ||
534 | |||
535 | /*@C | ||
536 | PEPSetEigenvalueComparison - Specifies the eigenvalue comparison function | ||
537 | when PEPSetWhichEigenpairs() is set to PEP_WHICH_USER. | ||
538 | |||
539 | Logically Collective | ||
540 | |||
541 | Input Parameters: | ||
542 | + pep - eigensolver context obtained from PEPCreate() | ||
543 | . comp - a pointer to the comparison function | ||
544 | - ctx - a context pointer (the last parameter to the comparison function) | ||
545 | |||
546 | Note: | ||
547 | The returning parameter 'res' can be | ||
548 | + negative - if the 1st eigenvalue is preferred to the 2st one | ||
549 | . zero - if both eigenvalues are equally preferred | ||
550 | - positive - if the 2st eigenvalue is preferred to the 1st one | ||
551 | |||
552 | Level: advanced | ||
553 | |||
554 | .seealso: PEPSetWhichEigenpairs(), PEPWhich | ||
555 | @*/ | ||
556 | 25 | PetscErrorCode PEPSetEigenvalueComparison(PEP pep,SlepcEigenvalueComparisonFn *comp,void *ctx) | |
557 | { | ||
558 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
25 | PetscFunctionBegin; |
559 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
25 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
560 | 25 | pep->sc->comparison = comp; | |
561 | 25 | pep->sc->comparisonctx = ctx; | |
562 | 25 | pep->which = PEP_WHICH_USER; | |
563 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
25 | PetscFunctionReturn(PETSC_SUCCESS); |
564 | } | ||
565 | |||
566 | /*@ | ||
567 | PEPSetProblemType - Specifies the type of the polynomial eigenvalue problem. | ||
568 | |||
569 | Logically Collective | ||
570 | |||
571 | Input Parameters: | ||
572 | + pep - the polynomial eigensolver context | ||
573 | - type - a known type of polynomial eigenvalue problem | ||
574 | |||
575 | Options Database Keys: | ||
576 | + -pep_general - general problem with no particular structure | ||
577 | . -pep_hermitian - problem whose coefficient matrices are Hermitian | ||
578 | . -pep_hyperbolic - Hermitian problem that satisfies the definition of hyperbolic | ||
579 | - -pep_gyroscopic - problem with Hamiltonian structure | ||
580 | |||
581 | Notes: | ||
582 | Allowed values for the problem type are general (PEP_GENERAL), Hermitian | ||
583 | (PEP_HERMITIAN), hyperbolic (PEP_HYPERBOLIC), and gyroscopic (PEP_GYROSCOPIC). | ||
584 | |||
585 | This function is used to instruct SLEPc to exploit certain structure in | ||
586 | the polynomial eigenproblem. By default, no particular structure is assumed. | ||
587 | |||
588 | If the problem matrices are Hermitian (symmetric in the real case) or | ||
589 | Hermitian/skew-Hermitian then the solver can exploit this fact to perform | ||
590 | less operations or provide better stability. Hyperbolic problems are a | ||
591 | particular case of Hermitian problems, some solvers may treat them simply as | ||
592 | Hermitian. | ||
593 | |||
594 | Level: intermediate | ||
595 | |||
596 | .seealso: PEPSetOperators(), PEPSetType(), PEPGetProblemType(), PEPProblemType | ||
597 | @*/ | ||
598 | 1986 | PetscErrorCode PEPSetProblemType(PEP pep,PEPProblemType type) | |
599 | { | ||
600 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1986 | PetscFunctionBegin; |
601 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1986 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
602 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1986 | PetscValidLogicalCollectiveEnum(pep,type,2); |
603 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1986 | PetscCheck(type==PEP_GENERAL || type==PEP_HERMITIAN || type==PEP_HYPERBOLIC || type==PEP_GYROSCOPIC,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_WRONG,"Unknown eigenvalue problem type"); |
604 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1986 | if (type != pep->problem_type) { |
605 | 1966 | pep->problem_type = type; | |
606 | 1966 | pep->state = PEP_STATE_INITIAL; | |
607 | } | ||
608 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
388 | PetscFunctionReturn(PETSC_SUCCESS); |
609 | } | ||
610 | |||
611 | /*@ | ||
612 | PEPGetProblemType - Gets the problem type from the PEP object. | ||
613 | |||
614 | Not Collective | ||
615 | |||
616 | Input Parameter: | ||
617 | . pep - the polynomial eigensolver context | ||
618 | |||
619 | Output Parameter: | ||
620 | . type - the problem type | ||
621 | |||
622 | Level: intermediate | ||
623 | |||
624 | .seealso: PEPSetProblemType(), PEPProblemType | ||
625 | @*/ | ||
626 | 42 | PetscErrorCode PEPGetProblemType(PEP pep,PEPProblemType *type) | |
627 | { | ||
628 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
42 | PetscFunctionBegin; |
629 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
42 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
630 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
42 | PetscAssertPointer(type,2); |
631 | 42 | *type = pep->problem_type; | |
632 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
42 | PetscFunctionReturn(PETSC_SUCCESS); |
633 | } | ||
634 | |||
635 | /*@ | ||
636 | PEPSetBasis - Specifies the type of polynomial basis used to describe the | ||
637 | polynomial eigenvalue problem. | ||
638 | |||
639 | Logically Collective | ||
640 | |||
641 | Input Parameters: | ||
642 | + pep - the polynomial eigensolver context | ||
643 | - basis - the type of polynomial basis | ||
644 | |||
645 | Options Database Key: | ||
646 | . -pep_basis <basis> - Select the basis type | ||
647 | |||
648 | Notes: | ||
649 | By default, the coefficient matrices passed via PEPSetOperators() are | ||
650 | expressed in the monomial basis, i.e. | ||
651 | P(lambda) = A_0 + lambda*A_1 + lambda^2*A_2 + ... + lambda^d*A_d. | ||
652 | Other polynomial bases may have better numerical behaviour, but the user | ||
653 | must then pass the coefficient matrices accordingly. | ||
654 | |||
655 | Level: intermediate | ||
656 | |||
657 | .seealso: PEPSetOperators(), PEPGetBasis(), PEPBasis | ||
658 | @*/ | ||
659 | 266 | PetscErrorCode PEPSetBasis(PEP pep,PEPBasis basis) | |
660 | { | ||
661 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
266 | PetscFunctionBegin; |
662 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
266 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
663 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
266 | PetscValidLogicalCollectiveEnum(pep,basis,2); |
664 | 266 | pep->basis = basis; | |
665 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
266 | PetscFunctionReturn(PETSC_SUCCESS); |
666 | } | ||
667 | |||
668 | /*@ | ||
669 | PEPGetBasis - Gets the type of polynomial basis from the PEP object. | ||
670 | |||
671 | Not Collective | ||
672 | |||
673 | Input Parameter: | ||
674 | . pep - the polynomial eigensolver context | ||
675 | |||
676 | Output Parameter: | ||
677 | . basis - the polynomial basis | ||
678 | |||
679 | Level: intermediate | ||
680 | |||
681 | .seealso: PEPSetBasis(), PEPBasis | ||
682 | @*/ | ||
683 | 121 | PetscErrorCode PEPGetBasis(PEP pep,PEPBasis *basis) | |
684 | { | ||
685 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
121 | PetscFunctionBegin; |
686 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
121 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
687 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
121 | PetscAssertPointer(basis,2); |
688 | 121 | *basis = pep->basis; | |
689 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
121 | PetscFunctionReturn(PETSC_SUCCESS); |
690 | } | ||
691 | |||
692 | /*@ | ||
693 | PEPSetTrackAll - Specifies if the solver must compute the residual of all | ||
694 | approximate eigenpairs or not. | ||
695 | |||
696 | Logically Collective | ||
697 | |||
698 | Input Parameters: | ||
699 | + pep - the eigensolver context | ||
700 | - trackall - whether compute all residuals or not | ||
701 | |||
702 | Notes: | ||
703 | If the user sets trackall=PETSC_TRUE then the solver explicitly computes | ||
704 | the residual for each eigenpair approximation. Computing the residual is | ||
705 | usually an expensive operation and solvers commonly compute the associated | ||
706 | residual to the first unconverged eigenpair. | ||
707 | |||
708 | The option '-pep_monitor_all' automatically activates this option. | ||
709 | |||
710 | Level: developer | ||
711 | |||
712 | .seealso: PEPGetTrackAll() | ||
713 | @*/ | ||
714 | 268 | PetscErrorCode PEPSetTrackAll(PEP pep,PetscBool trackall) | |
715 | { | ||
716 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
268 | PetscFunctionBegin; |
717 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
268 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
718 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
268 | PetscValidLogicalCollectiveBool(pep,trackall,2); |
719 | 268 | pep->trackall = trackall; | |
720 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
268 | PetscFunctionReturn(PETSC_SUCCESS); |
721 | } | ||
722 | |||
723 | /*@ | ||
724 | PEPGetTrackAll - Returns the flag indicating whether all residual norms must | ||
725 | be computed or not. | ||
726 | |||
727 | Not Collective | ||
728 | |||
729 | Input Parameter: | ||
730 | . pep - the eigensolver context | ||
731 | |||
732 | Output Parameter: | ||
733 | . trackall - the returned flag | ||
734 | |||
735 | Level: developer | ||
736 | |||
737 | .seealso: PEPSetTrackAll() | ||
738 | @*/ | ||
739 | 413 | PetscErrorCode PEPGetTrackAll(PEP pep,PetscBool *trackall) | |
740 | { | ||
741 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
413 | PetscFunctionBegin; |
742 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
413 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
743 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
413 | PetscAssertPointer(trackall,2); |
744 | 413 | *trackall = pep->trackall; | |
745 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
413 | PetscFunctionReturn(PETSC_SUCCESS); |
746 | } | ||
747 | |||
748 | /*@C | ||
749 | PEPSetConvergenceTestFunction - Sets a function to compute the error estimate | ||
750 | used in the convergence test. | ||
751 | |||
752 | Logically Collective | ||
753 | |||
754 | Input Parameters: | ||
755 | + pep - eigensolver context obtained from PEPCreate() | ||
756 | . conv - convergence test function, see PEPConvergenceTestFn for the calling sequence | ||
757 | . ctx - context for private data for the convergence routine (may be NULL) | ||
758 | - destroy - a routine for destroying the context (may be NULL), see PetscCtxDestroyFn for the calling sequence | ||
759 | |||
760 | Note: | ||
761 | If the error estimate returned by the convergence test function is less than | ||
762 | the tolerance, then the eigenvalue is accepted as converged. | ||
763 | |||
764 | Level: advanced | ||
765 | |||
766 | .seealso: PEPSetConvergenceTest(), PEPSetTolerances() | ||
767 | @*/ | ||
768 | 10 | PetscErrorCode PEPSetConvergenceTestFunction(PEP pep,PEPConvergenceTestFn *conv,void *ctx,PetscCtxDestroyFn *destroy) | |
769 | { | ||
770 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
771 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
10 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
772 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
10 | if (pep->convergeddestroy) PetscCall((*pep->convergeddestroy)(&pep->convergedctx)); |
773 | 10 | pep->convergeduser = conv; | |
774 | 10 | pep->convergeddestroy = destroy; | |
775 | 10 | pep->convergedctx = ctx; | |
776 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (conv == PEPConvergedRelative) pep->conv = PEP_CONV_REL; |
777 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | else if (conv == PEPConvergedNorm) pep->conv = PEP_CONV_NORM; |
778 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | else if (conv == PEPConvergedAbsolute) pep->conv = PEP_CONV_ABS; |
779 | else { | ||
780 | 10 | pep->conv = PEP_CONV_USER; | |
781 | 10 | pep->converged = pep->convergeduser; | |
782 | } | ||
783 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
784 | } | ||
785 | |||
786 | /*@ | ||
787 | PEPSetConvergenceTest - Specifies how to compute the error estimate | ||
788 | used in the convergence test. | ||
789 | |||
790 | Logically Collective | ||
791 | |||
792 | Input Parameters: | ||
793 | + pep - eigensolver context obtained from PEPCreate() | ||
794 | - conv - the type of convergence test | ||
795 | |||
796 | Options Database Keys: | ||
797 | + -pep_conv_abs - Sets the absolute convergence test | ||
798 | . -pep_conv_rel - Sets the convergence test relative to the eigenvalue | ||
799 | . -pep_conv_norm - Sets the convergence test relative to the matrix norms | ||
800 | - -pep_conv_user - Selects the user-defined convergence test | ||
801 | |||
802 | Note: | ||
803 | The parameter 'conv' can have one of these values | ||
804 | + PEP_CONV_ABS - absolute error ||r|| | ||
805 | . PEP_CONV_REL - error relative to the eigenvalue l, ||r||/|l| | ||
806 | . PEP_CONV_NORM - error relative matrix norms, ||r||/sum_i(l^i*||A_i||) | ||
807 | - PEP_CONV_USER - function set by PEPSetConvergenceTestFunction() | ||
808 | |||
809 | Level: intermediate | ||
810 | |||
811 | .seealso: PEPGetConvergenceTest(), PEPSetConvergenceTestFunction(), PEPSetStoppingTest(), PEPConv | ||
812 | @*/ | ||
813 | 71 | PetscErrorCode PEPSetConvergenceTest(PEP pep,PEPConv conv) | |
814 | { | ||
815 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
71 | PetscFunctionBegin; |
816 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
71 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
817 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
71 | PetscValidLogicalCollectiveEnum(pep,conv,2); |
818 |
3/5✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
71 | switch (conv) { |
819 | 26 | case PEP_CONV_ABS: pep->converged = PEPConvergedAbsolute; break; | |
820 | 20 | case PEP_CONV_REL: pep->converged = PEPConvergedRelative; break; | |
821 | 25 | case PEP_CONV_NORM: pep->converged = PEPConvergedNorm; break; | |
822 | ✗ | case PEP_CONV_USER: | |
823 | ✗ | PetscCheck(pep->convergeduser,PetscObjectComm((PetscObject)pep),PETSC_ERR_ORDER,"Must call PEPSetConvergenceTestFunction() first"); | |
824 | ✗ | pep->converged = pep->convergeduser; | |
825 | ✗ | break; | |
826 | ✗ | default: | |
827 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'conv' value"); | |
828 | } | ||
829 | 71 | pep->conv = conv; | |
830 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
71 | PetscFunctionReturn(PETSC_SUCCESS); |
831 | } | ||
832 | |||
833 | /*@ | ||
834 | PEPGetConvergenceTest - Gets the method used to compute the error estimate | ||
835 | used in the convergence test. | ||
836 | |||
837 | Not Collective | ||
838 | |||
839 | Input Parameters: | ||
840 | . pep - eigensolver context obtained from PEPCreate() | ||
841 | |||
842 | Output Parameters: | ||
843 | . conv - the type of convergence test | ||
844 | |||
845 | Level: intermediate | ||
846 | |||
847 | .seealso: PEPSetConvergenceTest(), PEPConv | ||
848 | @*/ | ||
849 | 16 | PetscErrorCode PEPGetConvergenceTest(PEP pep,PEPConv *conv) | |
850 | { | ||
851 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
852 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
853 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(conv,2); |
854 | 16 | *conv = pep->conv; | |
855 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
856 | } | ||
857 | |||
858 | /*@C | ||
859 | PEPSetStoppingTestFunction - Sets a function to decide when to stop the outer | ||
860 | iteration of the eigensolver. | ||
861 | |||
862 | Logically Collective | ||
863 | |||
864 | Input Parameters: | ||
865 | + pep - eigensolver context obtained from PEPCreate() | ||
866 | . stop - stopping test function, see PEPStoppingTestFn for the calling sequence | ||
867 | . ctx - context for private data for the stopping routine (may be NULL) | ||
868 | - destroy - a routine for destroying the context (may be NULL), see PetscCtxDestroyFn for the calling sequence | ||
869 | |||
870 | Note: | ||
871 | Normal usage is to first call the default routine PEPStoppingBasic() and then | ||
872 | set reason to PEP_CONVERGED_USER if some user-defined conditions have been | ||
873 | met. To let the eigensolver continue iterating, the result must be left as | ||
874 | PEP_CONVERGED_ITERATING. | ||
875 | |||
876 | Level: advanced | ||
877 | |||
878 | .seealso: PEPSetStoppingTest(), PEPStoppingBasic() | ||
879 | @*/ | ||
880 | 10 | PetscErrorCode PEPSetStoppingTestFunction(PEP pep,PEPStoppingTestFn *stop,void *ctx,PetscCtxDestroyFn *destroy) | |
881 | { | ||
882 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
883 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
10 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
884 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
10 | if (pep->stoppingdestroy) PetscCall((*pep->stoppingdestroy)(&pep->stoppingctx)); |
885 | 10 | pep->stoppinguser = stop; | |
886 | 10 | pep->stoppingdestroy = destroy; | |
887 | 10 | pep->stoppingctx = ctx; | |
888 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (stop == PEPStoppingBasic) pep->stop = PEP_STOP_BASIC; |
889 | else { | ||
890 | 10 | pep->stop = PEP_STOP_USER; | |
891 | 10 | pep->stopping = pep->stoppinguser; | |
892 | } | ||
893 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
894 | } | ||
895 | |||
896 | /*@ | ||
897 | PEPSetStoppingTest - Specifies how to decide the termination of the outer | ||
898 | loop of the eigensolver. | ||
899 | |||
900 | Logically Collective | ||
901 | |||
902 | Input Parameters: | ||
903 | + pep - eigensolver context obtained from PEPCreate() | ||
904 | - stop - the type of stopping test | ||
905 | |||
906 | Options Database Keys: | ||
907 | + -pep_stop_basic - Sets the default stopping test | ||
908 | - -pep_stop_user - Selects the user-defined stopping test | ||
909 | |||
910 | Note: | ||
911 | The parameter 'stop' can have one of these values | ||
912 | + PEP_STOP_BASIC - default stopping test | ||
913 | - PEP_STOP_USER - function set by PEPSetStoppingTestFunction() | ||
914 | |||
915 | Level: advanced | ||
916 | |||
917 | .seealso: PEPGetStoppingTest(), PEPSetStoppingTestFunction(), PEPSetConvergenceTest(), PEPStop | ||
918 | @*/ | ||
919 | 16 | PetscErrorCode PEPSetStoppingTest(PEP pep,PEPStop stop) | |
920 | { | ||
921 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
922 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
923 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
16 | PetscValidLogicalCollectiveEnum(pep,stop,2); |
924 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
16 | switch (stop) { |
925 | 16 | case PEP_STOP_BASIC: pep->stopping = PEPStoppingBasic; break; | |
926 | ✗ | case PEP_STOP_USER: | |
927 | ✗ | PetscCheck(pep->stoppinguser,PetscObjectComm((PetscObject)pep),PETSC_ERR_ORDER,"Must call PEPSetStoppingTestFunction() first"); | |
928 | ✗ | pep->stopping = pep->stoppinguser; | |
929 | ✗ | break; | |
930 | ✗ | default: | |
931 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'stop' value"); | |
932 | } | ||
933 | 16 | pep->stop = stop; | |
934 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
935 | } | ||
936 | |||
937 | /*@ | ||
938 | PEPGetStoppingTest - Gets the method used to decide the termination of the outer | ||
939 | loop of the eigensolver. | ||
940 | |||
941 | Not Collective | ||
942 | |||
943 | Input Parameters: | ||
944 | . pep - eigensolver context obtained from PEPCreate() | ||
945 | |||
946 | Output Parameters: | ||
947 | . stop - the type of stopping test | ||
948 | |||
949 | Level: advanced | ||
950 | |||
951 | .seealso: PEPSetStoppingTest(), PEPStop | ||
952 | @*/ | ||
953 | 16 | PetscErrorCode PEPGetStoppingTest(PEP pep,PEPStop *stop) | |
954 | { | ||
955 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
956 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
957 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(stop,2); |
958 | 16 | *stop = pep->stop; | |
959 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
960 | } | ||
961 | |||
962 | /*@ | ||
963 | PEPSetScale - Specifies the scaling strategy to be used. | ||
964 | |||
965 | Collective | ||
966 | |||
967 | Input Parameters: | ||
968 | + pep - the eigensolver context | ||
969 | . scale - scaling strategy | ||
970 | . alpha - the scaling factor used in the scalar strategy | ||
971 | . Dl - the left diagonal matrix of the diagonal scaling algorithm | ||
972 | . Dr - the right diagonal matrix of the diagonal scaling algorithm | ||
973 | . its - number of iterations of the diagonal scaling algorithm | ||
974 | - lambda - approximation to wanted eigenvalues (modulus) | ||
975 | |||
976 | Options Database Keys: | ||
977 | + -pep_scale <type> - scaling type, one of <none,scalar,diagonal,both> | ||
978 | . -pep_scale_factor <alpha> - the scaling factor | ||
979 | . -pep_scale_its <its> - number of iterations | ||
980 | - -pep_scale_lambda <lambda> - approximation to eigenvalues | ||
981 | |||
982 | Notes: | ||
983 | There are two non-exclusive scaling strategies, scalar and diagonal. | ||
984 | |||
985 | In the scalar strategy, scaling is applied to the eigenvalue, that is, | ||
986 | mu = lambda/alpha is the new eigenvalue and all matrices are scaled | ||
987 | accordingly. After solving the scaled problem, the original lambda is | ||
988 | recovered. Parameter 'alpha' must be positive. Use PETSC_DETERMINE to let | ||
989 | the solver compute a reasonable scaling factor, and PETSC_CURRENT to | ||
990 | retain a previously set value. | ||
991 | |||
992 | In the diagonal strategy, the solver works implicitly with matrix Dl*A*Dr, | ||
993 | where Dl and Dr are appropriate diagonal matrices. This improves the accuracy | ||
994 | of the computed results in some cases. The user may provide the Dr and Dl | ||
995 | matrices represented as Vec objects storing diagonal elements. If not | ||
996 | provided, these matrices are computed internally. This option requires | ||
997 | that the polynomial coefficient matrices are of MATAIJ type. | ||
998 | The parameter 'its' is the number of iterations performed by the method. | ||
999 | Parameter 'lambda' must be positive. Use PETSC_DETERMINE or set lambda = 1.0 | ||
1000 | if no information about eigenvalues is available. PETSC_CURRENT can also | ||
1001 | be used to leave its and lambda unchanged. | ||
1002 | |||
1003 | Level: intermediate | ||
1004 | |||
1005 | .seealso: PEPGetScale() | ||
1006 | @*/ | ||
1007 | 270 | PetscErrorCode PEPSetScale(PEP pep,PEPScale scale,PetscReal alpha,Vec Dl,Vec Dr,PetscInt its,PetscReal lambda) | |
1008 | { | ||
1009 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
270 | PetscFunctionBegin; |
1010 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
270 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1011 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
270 | PetscValidLogicalCollectiveEnum(pep,scale,2); |
1012 | 270 | pep->scale = scale; | |
1013 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
270 | if (scale==PEP_SCALE_SCALAR || scale==PEP_SCALE_BOTH) { |
1014 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
106 | PetscValidLogicalCollectiveReal(pep,alpha,3); |
1015 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
106 | if (alpha == (PetscReal)PETSC_DETERMINE) { |
1016 | 90 | pep->sfactor = 0.0; | |
1017 | 90 | pep->sfactor_set = PETSC_FALSE; | |
1018 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (alpha != (PetscReal)PETSC_CURRENT) { |
1019 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16 | PetscCheck(alpha>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of alpha. Must be > 0"); |
1020 | 16 | pep->sfactor = alpha; | |
1021 | 16 | pep->sfactor_set = PETSC_TRUE; | |
1022 | } | ||
1023 | } | ||
1024 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
270 | if (scale==PEP_SCALE_DIAGONAL || scale==PEP_SCALE_BOTH) { |
1025 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
184 | if (Dl) { |
1026 |
2/12✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
10 | PetscValidHeaderSpecific(Dl,VEC_CLASSID,4); |
1027 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
10 | PetscCheckSameComm(pep,1,Dl,4); |
1028 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscObjectReference((PetscObject)Dl)); |
1029 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(VecDestroy(&pep->Dl)); |
1030 | 10 | pep->Dl = Dl; | |
1031 | } | ||
1032 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
184 | if (Dr) { |
1033 |
2/12✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
10 | PetscValidHeaderSpecific(Dr,VEC_CLASSID,5); |
1034 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
10 | PetscCheckSameComm(pep,1,Dr,5); |
1035 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscObjectReference((PetscObject)Dr)); |
1036 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(VecDestroy(&pep->Dr)); |
1037 | 10 | pep->Dr = Dr; | |
1038 | } | ||
1039 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
184 | PetscValidLogicalCollectiveInt(pep,its,6); |
1040 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
184 | PetscValidLogicalCollectiveReal(pep,lambda,7); |
1041 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
184 | if (its==PETSC_DETERMINE) pep->sits = 5; |
1042 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
184 | else if (its!=PETSC_CURRENT) { |
1043 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
184 | PetscCheck(its>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of its. Must be > 0"); |
1044 | 184 | pep->sits = its; | |
1045 | } | ||
1046 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
184 | if (lambda == (PetscReal)PETSC_DETERMINE) pep->slambda = 1.0; |
1047 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
184 | else if (lambda != (PetscReal)PETSC_CURRENT) { |
1048 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
184 | PetscCheck(lambda>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of lambda. Must be > 0"); |
1049 | 184 | pep->slambda = lambda; | |
1050 | } | ||
1051 | } | ||
1052 | 270 | pep->state = PEP_STATE_INITIAL; | |
1053 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
270 | PetscFunctionReturn(PETSC_SUCCESS); |
1054 | } | ||
1055 | |||
1056 | /*@ | ||
1057 | PEPGetScale - Gets the scaling strategy used by the PEP object, and the | ||
1058 | associated parameters. | ||
1059 | |||
1060 | Not Collective | ||
1061 | |||
1062 | Input Parameter: | ||
1063 | . pep - the eigensolver context | ||
1064 | |||
1065 | Output Parameters: | ||
1066 | + scale - scaling strategy | ||
1067 | . alpha - the scaling factor used in the scalar strategy | ||
1068 | . Dl - the left diagonal matrix of the diagonal scaling algorithm | ||
1069 | . Dr - the right diagonal matrix of the diagonal scaling algorithm | ||
1070 | . its - number of iterations of the diagonal scaling algorithm | ||
1071 | - lambda - approximation to wanted eigenvalues (modulus) | ||
1072 | |||
1073 | Level: intermediate | ||
1074 | |||
1075 | Note: | ||
1076 | The user can specify NULL for any parameter that is not needed. | ||
1077 | |||
1078 | If Dl or Dr were not set by the user, then the ones computed internally are | ||
1079 | returned (or a null pointer if called before PEPSetUp). | ||
1080 | |||
1081 | .seealso: PEPSetScale(), PEPSetUp() | ||
1082 | @*/ | ||
1083 | 16 | PetscErrorCode PEPGetScale(PEP pep,PEPScale *scale,PetscReal *alpha,Vec *Dl,Vec *Dr,PetscInt *its,PetscReal *lambda) | |
1084 | { | ||
1085 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
1086 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1087 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (scale) *scale = pep->scale; |
1088 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (alpha) *alpha = pep->sfactor; |
1089 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (Dl) *Dl = pep->Dl; |
1090 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (Dr) *Dr = pep->Dr; |
1091 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (its) *its = pep->sits; |
1092 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (lambda) *lambda = pep->slambda; |
1093 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
1094 | } | ||
1095 | |||
1096 | /*@ | ||
1097 | PEPSetExtract - Specifies the extraction strategy to be used. | ||
1098 | |||
1099 | Logically Collective | ||
1100 | |||
1101 | Input Parameters: | ||
1102 | + pep - the eigensolver context | ||
1103 | - extract - extraction strategy | ||
1104 | |||
1105 | Options Database Keys: | ||
1106 | . -pep_extract <type> - extraction type, one of <none,norm,residual,structured> | ||
1107 | |||
1108 | Level: intermediate | ||
1109 | |||
1110 | .seealso: PEPGetExtract() | ||
1111 | @*/ | ||
1112 | 16 | PetscErrorCode PEPSetExtract(PEP pep,PEPExtract extract) | |
1113 | { | ||
1114 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
1115 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1116 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
16 | PetscValidLogicalCollectiveEnum(pep,extract,2); |
1117 | 16 | pep->extract = extract; | |
1118 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
1119 | } | ||
1120 | |||
1121 | /*@ | ||
1122 | PEPGetExtract - Gets the extraction strategy used by the PEP object. | ||
1123 | |||
1124 | Not Collective | ||
1125 | |||
1126 | Input Parameter: | ||
1127 | . pep - the eigensolver context | ||
1128 | |||
1129 | Output Parameter: | ||
1130 | . extract - extraction strategy | ||
1131 | |||
1132 | Level: intermediate | ||
1133 | |||
1134 | .seealso: PEPSetExtract(), PEPExtract | ||
1135 | @*/ | ||
1136 | 32 | PetscErrorCode PEPGetExtract(PEP pep,PEPExtract *extract) | |
1137 | { | ||
1138 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
32 | PetscFunctionBegin; |
1139 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
32 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1140 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
32 | PetscAssertPointer(extract,2); |
1141 | 32 | *extract = pep->extract; | |
1142 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
32 | PetscFunctionReturn(PETSC_SUCCESS); |
1143 | } | ||
1144 | |||
1145 | /*@ | ||
1146 | PEPSetRefine - Specifies the refinement type (and options) to be used | ||
1147 | after the solve. | ||
1148 | |||
1149 | Logically Collective | ||
1150 | |||
1151 | Input Parameters: | ||
1152 | + pep - the polynomial eigensolver context | ||
1153 | . refine - refinement type | ||
1154 | . npart - number of partitions of the communicator | ||
1155 | . tol - the convergence tolerance | ||
1156 | . its - maximum number of refinement iterations | ||
1157 | - scheme - which scheme to be used for solving the involved linear systems | ||
1158 | |||
1159 | Options Database Keys: | ||
1160 | + -pep_refine <type> - refinement type, one of <none,simple,multiple> | ||
1161 | . -pep_refine_partitions <n> - the number of partitions | ||
1162 | . -pep_refine_tol <tol> - the tolerance | ||
1163 | . -pep_refine_its <its> - number of iterations | ||
1164 | - -pep_refine_scheme - to set the scheme for the linear solves | ||
1165 | |||
1166 | Notes: | ||
1167 | By default, iterative refinement is disabled, since it may be very | ||
1168 | costly. There are two possible refinement strategies, simple and multiple. | ||
1169 | The simple approach performs iterative refinement on each of the | ||
1170 | converged eigenpairs individually, whereas the multiple strategy works | ||
1171 | with the invariant pair as a whole, refining all eigenpairs simultaneously. | ||
1172 | The latter may be required for the case of multiple eigenvalues. | ||
1173 | |||
1174 | In some cases, especially when using direct solvers within the | ||
1175 | iterative refinement method, it may be helpful for improved scalability | ||
1176 | to split the communicator in several partitions. The npart parameter | ||
1177 | indicates how many partitions to use (defaults to 1). | ||
1178 | |||
1179 | The tol and its parameters specify the stopping criterion. In the simple | ||
1180 | method, refinement continues until the residual of each eigenpair is | ||
1181 | below the tolerance (tol defaults to the PEP tol, but may be set to a | ||
1182 | different value). In contrast, the multiple method simply performs its | ||
1183 | refinement iterations (just one by default). | ||
1184 | |||
1185 | The scheme argument is used to change the way in which linear systems are | ||
1186 | solved. Possible choices are explicit, mixed block elimination (MBE), | ||
1187 | and Schur complement. | ||
1188 | |||
1189 | Use PETSC_CURRENT to retain the current value of npart, tol or its. Use | ||
1190 | PETSC_DETERMINE to assign a default value. | ||
1191 | |||
1192 | Level: intermediate | ||
1193 | |||
1194 | .seealso: PEPGetRefine() | ||
1195 | @*/ | ||
1196 | 301 | PetscErrorCode PEPSetRefine(PEP pep,PEPRefine refine,PetscInt npart,PetscReal tol,PetscInt its,PEPRefineScheme scheme) | |
1197 | { | ||
1198 | 301 | PetscMPIInt size; | |
1199 | |||
1200 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
301 | PetscFunctionBegin; |
1201 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
301 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1202 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveEnum(pep,refine,2); |
1203 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveInt(pep,npart,3); |
1204 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
301 | PetscValidLogicalCollectiveReal(pep,tol,4); |
1205 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveInt(pep,its,5); |
1206 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveEnum(pep,scheme,6); |
1207 | 301 | pep->refine = refine; | |
1208 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
|
301 | if (refine) { /* process parameters only if not REFINE_NONE */ |
1209 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
296 | if (npart!=pep->npart) { |
1210 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(PetscSubcommDestroy(&pep->refinesubc)); |
1211 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(KSPDestroy(&pep->refineksp)); |
1212 | } | ||
1213 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
296 | if (npart == PETSC_DETERMINE) { |
1214 | ✗ | pep->npart = 1; | |
1215 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
296 | } else if (npart != PETSC_CURRENT) { |
1216 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
296 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)pep),&size)); |
1217 |
2/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
296 | PetscCheck(npart>0 && npart<=size,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of npart"); |
1218 | 296 | pep->npart = npart; | |
1219 | } | ||
1220 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
296 | if (tol == (PetscReal)PETSC_DETERMINE) { |
1221 | 280 | pep->rtol = PETSC_DETERMINE; | |
1222 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
1223 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
1224 | 16 | pep->rtol = tol; | |
1225 | } | ||
1226 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
296 | if (its==PETSC_DETERMINE) { |
1227 | 280 | pep->rits = PETSC_DETERMINE; | |
1228 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (its != PETSC_CURRENT) { |
1229 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16 | PetscCheck(its>=0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of its. Must be >= 0"); |
1230 | 16 | pep->rits = its; | |
1231 | } | ||
1232 | 296 | pep->scheme = scheme; | |
1233 | } | ||
1234 | 301 | pep->state = PEP_STATE_INITIAL; | |
1235 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
301 | PetscFunctionReturn(PETSC_SUCCESS); |
1236 | } | ||
1237 | |||
1238 | /*@ | ||
1239 | PEPGetRefine - Gets the refinement strategy used by the PEP object, and the | ||
1240 | associated parameters. | ||
1241 | |||
1242 | Not Collective | ||
1243 | |||
1244 | Input Parameter: | ||
1245 | . pep - the polynomial eigensolver context | ||
1246 | |||
1247 | Output Parameters: | ||
1248 | + refine - refinement type | ||
1249 | . npart - number of partitions of the communicator | ||
1250 | . tol - the convergence tolerance | ||
1251 | . its - maximum number of refinement iterations | ||
1252 | - scheme - the scheme used for solving linear systems | ||
1253 | |||
1254 | Level: intermediate | ||
1255 | |||
1256 | Note: | ||
1257 | The user can specify NULL for any parameter that is not needed. | ||
1258 | |||
1259 | .seealso: PEPSetRefine() | ||
1260 | @*/ | ||
1261 | 16 | PetscErrorCode PEPGetRefine(PEP pep,PEPRefine *refine,PetscInt *npart,PetscReal *tol,PetscInt *its,PEPRefineScheme *scheme) | |
1262 | { | ||
1263 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
1264 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1265 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (refine) *refine = pep->refine; |
1266 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (npart) *npart = pep->npart; |
1267 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (tol) *tol = pep->rtol; |
1268 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (its) *its = pep->rits; |
1269 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (scheme) *scheme = pep->scheme; |
1270 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
1271 | } | ||
1272 | |||
1273 | /*@ | ||
1274 | PEPSetOptionsPrefix - Sets the prefix used for searching for all | ||
1275 | PEP options in the database. | ||
1276 | |||
1277 | Logically Collective | ||
1278 | |||
1279 | Input Parameters: | ||
1280 | + pep - the polynomial eigensolver context | ||
1281 | - prefix - the prefix string to prepend to all PEP option requests | ||
1282 | |||
1283 | Notes: | ||
1284 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
1285 | The first character of all runtime options is AUTOMATICALLY the | ||
1286 | hyphen. | ||
1287 | |||
1288 | For example, to distinguish between the runtime options for two | ||
1289 | different PEP contexts, one could call | ||
1290 | .vb | ||
1291 | PEPSetOptionsPrefix(pep1,"qeig1_") | ||
1292 | PEPSetOptionsPrefix(pep2,"qeig2_") | ||
1293 | .ve | ||
1294 | |||
1295 | Level: advanced | ||
1296 | |||
1297 | .seealso: PEPAppendOptionsPrefix(), PEPGetOptionsPrefix() | ||
1298 | @*/ | ||
1299 | 262 | PetscErrorCode PEPSetOptionsPrefix(PEP pep,const char *prefix) | |
1300 | { | ||
1301 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
262 | PetscFunctionBegin; |
1302 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
262 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1303 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
1304 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(STSetOptionsPrefix(pep->st,prefix)); |
1305 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->V) PetscCall(PEPGetBV(pep,&pep->V)); |
1306 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(BVSetOptionsPrefix(pep->V,prefix)); |
1307 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->ds) PetscCall(PEPGetDS(pep,&pep->ds)); |
1308 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(DSSetOptionsPrefix(pep->ds,prefix)); |
1309 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->rg) PetscCall(PEPGetRG(pep,&pep->rg)); |
1310 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(RGSetOptionsPrefix(pep->rg,prefix)); |
1311 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)pep,prefix)); |
1312 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
49 | PetscFunctionReturn(PETSC_SUCCESS); |
1313 | } | ||
1314 | |||
1315 | /*@ | ||
1316 | PEPAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
1317 | PEP options in the database. | ||
1318 | |||
1319 | Logically Collective | ||
1320 | |||
1321 | Input Parameters: | ||
1322 | + pep - the polynomial eigensolver context | ||
1323 | - prefix - the prefix string to prepend to all PEP option requests | ||
1324 | |||
1325 | Notes: | ||
1326 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
1327 | The first character of all runtime options is AUTOMATICALLY the hyphen. | ||
1328 | |||
1329 | Level: advanced | ||
1330 | |||
1331 | .seealso: PEPSetOptionsPrefix(), PEPGetOptionsPrefix() | ||
1332 | @*/ | ||
1333 | 248 | PetscErrorCode PEPAppendOptionsPrefix(PEP pep,const char *prefix) | |
1334 | { | ||
1335 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
248 | PetscFunctionBegin; |
1336 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
248 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1337 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
1338 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(STAppendOptionsPrefix(pep->st,prefix)); |
1339 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->V) PetscCall(PEPGetBV(pep,&pep->V)); |
1340 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(BVAppendOptionsPrefix(pep->V,prefix)); |
1341 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->ds) PetscCall(PEPGetDS(pep,&pep->ds)); |
1342 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(DSAppendOptionsPrefix(pep->ds,prefix)); |
1343 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->rg) PetscCall(PEPGetRG(pep,&pep->rg)); |
1344 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(RGAppendOptionsPrefix(pep->rg,prefix)); |
1345 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(PetscObjectAppendOptionsPrefix((PetscObject)pep,prefix)); |
1346 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
49 | PetscFunctionReturn(PETSC_SUCCESS); |
1347 | } | ||
1348 | |||
1349 | /*@ | ||
1350 | PEPGetOptionsPrefix - Gets the prefix used for searching for all | ||
1351 | PEP options in the database. | ||
1352 | |||
1353 | Not Collective | ||
1354 | |||
1355 | Input Parameters: | ||
1356 | . pep - the polynomial eigensolver context | ||
1357 | |||
1358 | Output Parameters: | ||
1359 | . prefix - pointer to the prefix string used is returned | ||
1360 | |||
1361 | Note: | ||
1362 | On the Fortran side, the user should pass in a string 'prefix' of | ||
1363 | sufficient length to hold the prefix. | ||
1364 | |||
1365 | Level: advanced | ||
1366 | |||
1367 | .seealso: PEPSetOptionsPrefix(), PEPAppendOptionsPrefix() | ||
1368 | @*/ | ||
1369 | 31 | PetscErrorCode PEPGetOptionsPrefix(PEP pep,const char *prefix[]) | |
1370 | { | ||
1371 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
31 | PetscFunctionBegin; |
1372 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
31 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
1373 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
31 | PetscAssertPointer(prefix,2); |
1374 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
31 | PetscCall(PetscObjectGetOptionsPrefix((PetscObject)pep,prefix)); |
1375 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
1376 | } | ||
1377 |