GCC Code Coverage Report


Directory: ./
File: src/eps/interface/epsbasic.c
Date: 2025-10-04 04:19:13
Exec Total Coverage
Lines: 253 277 91.3%
Functions: 20 23 87.0%
Branches: 612 1586 38.6%

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 Basic EPS routines
12 */
13
14 #include <slepc/private/epsimpl.h> /*I "slepceps.h" I*/
15
16 /* Logging support */
17 PetscClassId EPS_CLASSID = 0;
18 PetscLogEvent EPS_SetUp = 0,EPS_Solve = 0,EPS_CISS_SVD = 0;
19
20 /* List of registered EPS routines */
21 PetscFunctionList EPSList = NULL;
22 PetscBool EPSRegisterAllCalled = PETSC_FALSE;
23
24 /* List of registered EPS monitors */
25 PetscFunctionList EPSMonitorList = NULL;
26 PetscFunctionList EPSMonitorCreateList = NULL;
27 PetscFunctionList EPSMonitorDestroyList = NULL;
28 PetscBool EPSMonitorRegisterAllCalled = PETSC_FALSE;
29
30 /*@
31 EPSCreate - Creates the default EPS context.
32
33 Collective
34
35 Input Parameter:
36 . comm - MPI communicator
37
38 Output Parameter:
39 . outeps - location to put the EPS context
40
41 Note:
42 The default EPS type is EPSKRYLOVSCHUR
43
44 Level: beginner
45
46 .seealso: EPSSetUp(), EPSSolve(), EPSDestroy(), EPS
47 @*/
48 6944 PetscErrorCode EPSCreate(MPI_Comm comm,EPS *outeps)
49 {
50 6944 EPS eps;
51
52
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
6944 PetscFunctionBegin;
53
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.
6944 PetscAssertPointer(outeps,2);
54
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.
6944 PetscCall(EPSInitializePackage());
55
7/12
✓ 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 10 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
6944 PetscCall(SlepcHeaderCreate(eps,EPS_CLASSID,"EPS","Eigenvalue Problem Solver","EPS",comm,EPSDestroy,EPSView));
56
57 6944 eps->max_it = PETSC_DETERMINE;
58 6944 eps->nev = 0;
59 6944 eps->ncv = PETSC_DETERMINE;
60 6944 eps->mpd = PETSC_DETERMINE;
61 6944 eps->nini = 0;
62 6944 eps->nds = 0;
63 6944 eps->target = 0.0;
64 6944 eps->tol = PETSC_DETERMINE;
65 6944 eps->thres = PETSC_MIN_REAL;
66 6944 eps->threlative = PETSC_FALSE;
67 6944 eps->conv = EPS_CONV_REL;
68 6944 eps->stop = EPS_STOP_BASIC;
69 6944 eps->which = (EPSWhich)0;
70 6944 eps->inta = 0.0;
71 6944 eps->intb = 0.0;
72 6944 eps->problem_type = (EPSProblemType)0;
73 6944 eps->extraction = EPS_RITZ;
74 6944 eps->balance = EPS_BALANCE_NONE;
75 6944 eps->balance_its = 5;
76 6944 eps->balance_cutoff = 1e-8;
77 6944 eps->trueres = PETSC_FALSE;
78 6944 eps->trackall = PETSC_FALSE;
79 6944 eps->purify = PETSC_TRUE;
80 6944 eps->twosided = PETSC_FALSE;
81
82 6944 eps->converged = EPSConvergedRelative;
83 6944 eps->convergeduser = NULL;
84 6944 eps->convergeddestroy= NULL;
85 6944 eps->stopping = EPSStoppingBasic;
86 6944 eps->stoppinguser = NULL;
87 6944 eps->stoppingdestroy = NULL;
88 6944 eps->arbitrary = NULL;
89 6944 eps->convergedctx = NULL;
90 6944 eps->stoppingctx = NULL;
91 6944 eps->arbitraryctx = NULL;
92 6944 eps->numbermonitors = 0;
93
94 6944 eps->st = NULL;
95 6944 eps->ds = NULL;
96 6944 eps->V = NULL;
97 6944 eps->W = NULL;
98 6944 eps->rg = NULL;
99 6944 eps->D = NULL;
100 6944 eps->IS = NULL;
101 6944 eps->ISL = NULL;
102 6944 eps->defl = NULL;
103 6944 eps->eigr = NULL;
104 6944 eps->eigi = NULL;
105 6944 eps->errest = NULL;
106 6944 eps->rr = NULL;
107 6944 eps->ri = NULL;
108 6944 eps->perm = NULL;
109 6944 eps->nwork = 0;
110 6944 eps->work = NULL;
111 6944 eps->data = NULL;
112
113 6944 eps->state = EPS_STATE_INITIAL;
114 6944 eps->categ = EPS_CATEGORY_KRYLOV;
115 6944 eps->nconv = 0;
116 6944 eps->its = 0;
117 6944 eps->nloc = 0;
118 6944 eps->nrma = 0.0;
119 6944 eps->nrmb = 0.0;
120 6944 eps->useds = PETSC_FALSE;
121 6944 eps->isgeneralized = PETSC_FALSE;
122 6944 eps->ispositive = PETSC_FALSE;
123 6944 eps->ishermitian = PETSC_FALSE;
124 6944 eps->isstructured = PETSC_FALSE;
125 6944 eps->reason = EPS_CONVERGED_ITERATING;
126
127
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.
6944 PetscCall(PetscNew(&eps->sc));
128 6944 *outeps = eps;
129
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.
6944 PetscFunctionReturn(PETSC_SUCCESS);
130 }
131
132 /*@
133 EPSSetType - Selects the particular solver to be used in the EPS object.
134
135 Logically Collective
136
137 Input Parameters:
138 + eps - the eigensolver context
139 - type - a known method
140
141 Options Database Key:
142 . -eps_type <method> - Sets the method; use -help for a list
143 of available methods
144
145 Notes:
146 See "slepc/include/slepceps.h" for available methods. The default
147 is EPSKRYLOVSCHUR.
148
149 Normally, it is best to use the EPSSetFromOptions() command and
150 then set the EPS type from the options database rather than by using
151 this routine. Using the options database provides the user with
152 maximum flexibility in evaluating the different available methods.
153 The EPSSetType() routine is provided for those situations where it
154 is necessary to set the iterative solver independently of the command
155 line or options database.
156
157 Level: intermediate
158
159 .seealso: STSetType(), EPSType
160 @*/
161 7146 PetscErrorCode EPSSetType(EPS eps,EPSType type)
162 {
163 7146 PetscErrorCode (*r)(EPS);
164 7146 PetscBool match;
165
166
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
7146 PetscFunctionBegin;
167
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.
7146 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
168
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.
7146 PetscAssertPointer(type,2);
169
170
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.
7146 PetscCall(PetscObjectTypeCompare((PetscObject)eps,type,&match));
171
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.
7146 if (match) PetscFunctionReturn(PETSC_SUCCESS);
172
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.
6863 PetscCall(PetscFunctionListFind(EPSList,type,&r));
174
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
6863 PetscCheck(r,PetscObjectComm((PetscObject)eps),PETSC_ERR_ARG_UNKNOWN_TYPE,"Unknown EPS type given: %s",type);
175
176
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.
6863 PetscTryTypeMethod(eps,destroy);
177
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
6863 PetscCall(PetscMemzero(eps->ops,sizeof(struct _EPSOps)));
178
179 6863 eps->state = EPS_STATE_INITIAL;
180
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.
6863 PetscCall(PetscObjectChangeTypeName((PetscObject)eps,type));
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.
6863 PetscCall((*r)(eps));
182
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.
1341 PetscFunctionReturn(PETSC_SUCCESS);
183 }
184
185 /*@
186 EPSGetType - Gets the EPS type as a string from the EPS object.
187
188 Not Collective
189
190 Input Parameter:
191 . eps - the eigensolver context
192
193 Output Parameter:
194 . type - name of EPS method
195
196 Level: intermediate
197
198 .seealso: EPSSetType()
199 @*/
200 1148 PetscErrorCode EPSGetType(EPS eps,EPSType *type)
201 {
202
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1148 PetscFunctionBegin;
203
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.
1148 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
204
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.
1148 PetscAssertPointer(type,2);
205 1148 *type = ((PetscObject)eps)->type_name;
206
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.
1148 PetscFunctionReturn(PETSC_SUCCESS);
207 }
208
209 /*@C
210 EPSRegister - Adds a method to the eigenproblem solver package.
211
212 Not Collective
213
214 Input Parameters:
215 + name - name of a new user-defined solver
216 - function - routine to create the solver context
217
218 Notes:
219 EPSRegister() may be called multiple times to add several user-defined solvers.
220
221 Example Usage:
222 .vb
223 EPSRegister("my_solver",MySolverCreate);
224 .ve
225
226 Then, your solver can be chosen with the procedural interface via
227 $ EPSSetType(eps,"my_solver")
228 or at runtime via the option
229 $ -eps_type my_solver
230
231 Level: advanced
232
233 .seealso: EPSRegisterAll()
234 @*/
235 93943 PetscErrorCode EPSRegister(const char *name,PetscErrorCode (*function)(EPS))
236 {
237
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
93943 PetscFunctionBegin;
238
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.
93943 PetscCall(EPSInitializePackage());
239
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.
93943 PetscCall(PetscFunctionListAdd(&EPSList,name,function));
240
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.
19301 PetscFunctionReturn(PETSC_SUCCESS);
241 }
242
243 /*@C
244 EPSMonitorRegister - Registers an EPS monitor routine that may be accessed with EPSMonitorSetFromOptions().
245
246 Not Collective
247
248 Input Parameters:
249 + name - name of a new monitor routine
250 . vtype - a PetscViewerType for the output
251 . format - a PetscViewerFormat for the output
252 . monitor - monitor routine, see EPSMonitorRegisterFn
253 . create - creation routine, or NULL
254 - destroy - destruction routine, or NULL
255
256 Notes:
257 EPSMonitorRegister() may be called multiple times to add several user-defined monitors.
258
259 The calling sequence for the given function matches the calling sequence of EPSMonitorFn
260 functions passed to EPSMonitorSet() with the additional requirement that its final argument
261 be a PetscViewerAndFormat.
262
263 Example Usage:
264 .vb
265 EPSMonitorRegister("my_monitor",PETSCVIEWERASCII,PETSC_VIEWER_ASCII_INFO_DETAIL,MyMonitor,NULL,NULL);
266 .ve
267
268 Then, your monitor can be chosen with the procedural interface via
269 $ EPSMonitorSetFromOptions(eps,"-eps_monitor_my_monitor","my_monitor",NULL)
270 or at runtime via the option
271 $ -eps_monitor_my_monitor
272
273 Level: advanced
274
275 .seealso: EPSMonitorSet(), EPSMonitorRegisterAll()
276 @*/
277 37968 PetscErrorCode EPSMonitorRegister(const char name[],PetscViewerType vtype,PetscViewerFormat format,EPSMonitorRegisterFn *monitor,EPSMonitorRegisterCreateFn *create,EPSMonitorRegisterDestroyFn *destroy)
278 {
279 37968 char key[PETSC_MAX_PATH_LEN];
280
281
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
37968 PetscFunctionBegin;
282
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.
37968 PetscCall(EPSInitializePackage());
283
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.
37968 PetscCall(SlepcMonitorMakeKey_Internal(name,vtype,format,key));
284
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.
37968 PetscCall(PetscFunctionListAdd(&EPSMonitorList,key,monitor));
285
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.
37968 if (create) PetscCall(PetscFunctionListAdd(&EPSMonitorCreateList,key,create));
286
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.
37968 if (destroy) PetscCall(PetscFunctionListAdd(&EPSMonitorDestroyList,key,destroy));
287
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.
7464 PetscFunctionReturn(PETSC_SUCCESS);
288 }
289
290 /*@
291 EPSReset - Resets the EPS context to the initial state (prior to setup)
292 and destroys any allocated Vecs and Mats.
293
294 Collective
295
296 Input Parameter:
297 . eps - eigensolver context obtained from EPSCreate()
298
299 Note:
300 This can be used when a problem of different matrix size wants to be solved.
301 All options that have previously been set are preserved, so in a next use
302 the solver configuration is the same, but new sizes for matrices and vectors
303 are allowed.
304
305 Level: advanced
306
307 .seealso: EPSDestroy()
308 @*/
309 8762 PetscErrorCode EPSReset(EPS eps)
310 {
311
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
8762 PetscFunctionBegin;
312
3/14
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
8762 if (eps) PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
313
2/14
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 1 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.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
7887 if (!eps) PetscFunctionReturn(PETSC_SUCCESS);
314
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.
8762 PetscTryTypeMethod(eps,reset);
315
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.
8762 if (eps->st) PetscCall(STReset(eps->st));
316
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.
8762 PetscCall(VecDestroy(&eps->D));
317
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.
8762 PetscCall(BVDestroy(&eps->V));
318
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.
8762 PetscCall(BVDestroy(&eps->W));
319
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.
8762 PetscCall(VecDestroyVecs(eps->nwork,&eps->work));
320 8762 eps->nwork = 0;
321 8762 eps->state = EPS_STATE_INITIAL;
322
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.
8762 PetscFunctionReturn(PETSC_SUCCESS);
323 }
324
325 /*@
326 EPSDestroy - Destroys the EPS context.
327
328 Collective
329
330 Input Parameter:
331 . eps - eigensolver context obtained from EPSCreate()
332
333 Level: beginner
334
335 .seealso: EPSCreate(), EPSSetUp(), EPSSolve()
336 @*/
337 7756 PetscErrorCode EPSDestroy(EPS *eps)
338 {
339
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
7756 PetscFunctionBegin;
340
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.
7756 if (!*eps) PetscFunctionReturn(PETSC_SUCCESS);
341
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.
7363 PetscValidHeaderSpecific(*eps,EPS_CLASSID,1);
342
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.
7363 if (--((PetscObject)*eps)->refct > 0) { *eps = NULL; PetscFunctionReturn(PETSC_SUCCESS); }
343
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.
6944 PetscCall(EPSReset(*eps));
344
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.
6944 PetscTryTypeMethod(*eps,destroy);
345
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.
6944 if ((*eps)->eigr) PetscCall(PetscFree4((*eps)->eigr,(*eps)->eigi,(*eps)->errest,(*eps)->perm));
346
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.
6944 if ((*eps)->rr) PetscCall(PetscFree2((*eps)->rr,(*eps)->ri));
347
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.
6944 PetscCall(STDestroy(&(*eps)->st));
348
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.
6944 PetscCall(RGDestroy(&(*eps)->rg));
349
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.
6944 PetscCall(DSDestroy(&(*eps)->ds));
350
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.
6944 PetscCall(PetscFree((*eps)->sc));
351 /* just in case the initial vectors have not been used */
352
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.
6944 PetscCall(SlepcBasisDestroy_Private(&(*eps)->nds,&(*eps)->defl));
353
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.
6944 PetscCall(SlepcBasisDestroy_Private(&(*eps)->nini,&(*eps)->IS));
354
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.
6944 PetscCall(SlepcBasisDestroy_Private(&(*eps)->ninil,&(*eps)->ISL));
355
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.
6944 if ((*eps)->convergeddestroy) PetscCall((*(*eps)->convergeddestroy)(&(*eps)->convergedctx));
356
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.
6944 if ((*eps)->stoppingdestroy) PetscCall((*(*eps)->stoppingdestroy)(&(*eps)->stoppingctx));
357
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.
6944 PetscCall(EPSMonitorCancel(*eps));
358
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.
6944 PetscCall(PetscHeaderDestroy(eps));
359
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.
1339 PetscFunctionReturn(PETSC_SUCCESS);
360 }
361
362 /*@
363 EPSSetTarget - Sets the value of the target.
364
365 Logically Collective
366
367 Input Parameters:
368 + eps - eigensolver context
369 - target - the value of the target
370
371 Options Database Key:
372 . -eps_target <scalar> - the value of the target
373
374 Notes:
375 The target is a scalar value used to determine the portion of the spectrum
376 of interest. It is used in combination with EPSSetWhichEigenpairs().
377
378 In the case of complex scalars, a complex value can be provided in the
379 command line with [+/-][realnumber][+/-]realnumberi with no spaces, e.g.
380 -eps_target 1.0+2.0i
381
382 Level: intermediate
383
384 .seealso: EPSGetTarget(), EPSSetWhichEigenpairs()
385 @*/
386 1739 PetscErrorCode EPSSetTarget(EPS eps,PetscScalar target)
387 {
388
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1739 PetscFunctionBegin;
389
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.
1739 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
390
30/68
✗ 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 taken 2 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 2 times.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
1739 PetscValidLogicalCollectiveScalar(eps,target,2);
391 1739 eps->target = target;
392
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.
1739 if (!eps->st) PetscCall(EPSGetST(eps,&eps->st));
393
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.
1739 PetscCall(STSetDefaultShift(eps->st,target));
394
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.
354 PetscFunctionReturn(PETSC_SUCCESS);
395 }
396
397 /*@
398 EPSGetTarget - Gets the value of the target.
399
400 Not Collective
401
402 Input Parameter:
403 . eps - eigensolver context
404
405 Output Parameter:
406 . target - the value of the target
407
408 Note:
409 If the target was not set by the user, then zero is returned.
410
411 Level: intermediate
412
413 .seealso: EPSSetTarget()
414 @*/
415 13734 PetscErrorCode EPSGetTarget(EPS eps,PetscScalar* target)
416 {
417
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
13734 PetscFunctionBegin;
418
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.
13734 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
419
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.
13734 PetscAssertPointer(target,2);
420 13734 *target = eps->target;
421
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.
13734 PetscFunctionReturn(PETSC_SUCCESS);
422 }
423
424 /*@
425 EPSSetInterval - Defines the computational interval for spectrum slicing.
426
427 Logically Collective
428
429 Input Parameters:
430 + eps - eigensolver context
431 . inta - left end of the interval
432 - intb - right end of the interval
433
434 Options Database Key:
435 . -eps_interval <a,b> - set [a,b] as the interval of interest
436
437 Notes:
438 Spectrum slicing is a technique employed for computing all eigenvalues of
439 symmetric eigenproblems in a given interval. This function provides the
440 interval to be considered. It must be used in combination with EPS_ALL, see
441 EPSSetWhichEigenpairs().
442
443 In the command-line option, two values must be provided. For an open interval,
444 one can give an infinite, e.g., -eps_interval 1.0,inf or -eps_interval -inf,1.0.
445 An open interval in the programmatic interface can be specified with
446 PETSC_MAX_REAL and -PETSC_MAX_REAL.
447
448 Level: intermediate
449
450 .seealso: EPSGetInterval(), EPSSetWhichEigenpairs()
451 @*/
452 537 PetscErrorCode EPSSetInterval(EPS eps,PetscReal inta,PetscReal intb)
453 {
454
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
537 PetscFunctionBegin;
455
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.
537 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
456
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.
537 PetscValidLogicalCollectiveReal(eps,inta,2);
457
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.
537 PetscValidLogicalCollectiveReal(eps,intb,3);
458
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
537 PetscCheck(inta<intb,PetscObjectComm((PetscObject)eps),PETSC_ERR_ARG_WRONG,"Badly defined interval, must be inta<intb");
459
3/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
537 if (eps->inta != inta || eps->intb != intb) {
460 507 eps->inta = inta;
461 507 eps->intb = intb;
462 507 eps->state = EPS_STATE_INITIAL;
463 }
464
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.
97 PetscFunctionReturn(PETSC_SUCCESS);
465 }
466
467 /*@
468 EPSGetInterval - Gets the computational interval for spectrum slicing.
469
470 Not Collective
471
472 Input Parameter:
473 . eps - eigensolver context
474
475 Output Parameters:
476 + inta - left end of the interval
477 - intb - right end of the interval
478
479 Level: intermediate
480
481 Note:
482 If the interval was not set by the user, then zeros are returned.
483
484 .seealso: EPSSetInterval()
485 @*/
486 95 PetscErrorCode EPSGetInterval(EPS eps,PetscReal* inta,PetscReal* intb)
487 {
488
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
95 PetscFunctionBegin;
489
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.
95 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
490
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
95 if (inta) *inta = eps->inta;
491
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
95 if (intb) *intb = eps->intb;
492
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.
95 PetscFunctionReturn(PETSC_SUCCESS);
493 }
494
495 /*@
496 EPSSetST - Associates a spectral transformation object to the eigensolver.
497
498 Collective
499
500 Input Parameters:
501 + eps - eigensolver context obtained from EPSCreate()
502 - st - the spectral transformation object
503
504 Note:
505 Use EPSGetST() to retrieve the spectral transformation context (for example,
506 to free it at the end of the computations).
507
508 Level: advanced
509
510 .seealso: EPSGetST()
511 @*/
512 12 PetscErrorCode EPSSetST(EPS eps,ST st)
513 {
514
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
12 PetscFunctionBegin;
515
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.
12 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
516
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.
12 PetscValidHeaderSpecific(st,ST_CLASSID,2);
517
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.
12 PetscCheckSameComm(eps,1,st,2);
518
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.
12 PetscCall(PetscObjectReference((PetscObject)st));
519
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.
12 PetscCall(STDestroy(&eps->st));
520 12 eps->st = st;
521
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.
12 PetscFunctionReturn(PETSC_SUCCESS);
522 }
523
524 /*@
525 EPSGetST - Obtain the spectral transformation (ST) object associated
526 to the eigensolver object.
527
528 Not Collective
529
530 Input Parameters:
531 . eps - eigensolver context obtained from EPSCreate()
532
533 Output Parameter:
534 . st - spectral transformation context
535
536 Level: intermediate
537
538 .seealso: EPSSetST()
539 @*/
540 42338 PetscErrorCode EPSGetST(EPS eps,ST *st)
541 {
542
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
42338 PetscFunctionBegin;
543
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.
42338 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
544
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.
42338 PetscAssertPointer(st,2);
545
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
42338 if (!eps->st) {
546
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.
6841 PetscCall(STCreate(PetscObjectComm((PetscObject)eps),&eps->st));
547
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.
6841 PetscCall(PetscObjectIncrementTabLevel((PetscObject)eps->st,(PetscObject)eps,0));
548
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.
6841 PetscCall(PetscObjectSetOptions((PetscObject)eps->st,((PetscObject)eps)->options));
549 }
550 42338 *st = eps->st;
551
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.
42338 PetscFunctionReturn(PETSC_SUCCESS);
552 }
553
554 /*@
555 EPSSetBV - Associates a basis vectors object to the eigensolver.
556
557 Collective
558
559 Input Parameters:
560 + eps - eigensolver context obtained from EPSCreate()
561 - V - the basis vectors object
562
563 Level: advanced
564
565 .seealso: EPSGetBV()
566 @*/
567 PetscErrorCode EPSSetBV(EPS eps,BV V)
568 {
569 PetscFunctionBegin;
570 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
571 PetscValidHeaderSpecific(V,BV_CLASSID,2);
572 PetscCheckSameComm(eps,1,V,2);
573 PetscCall(PetscObjectReference((PetscObject)V));
574 PetscCall(BVDestroy(&eps->V));
575 eps->V = V;
576 PetscFunctionReturn(PETSC_SUCCESS);
577 }
578
579 /*@
580 EPSGetBV - Obtain the basis vectors object associated to the eigensolver object.
581
582 Not Collective
583
584 Input Parameters:
585 . eps - eigensolver context obtained from EPSCreate()
586
587 Output Parameter:
588 . V - basis vectors context
589
590 Level: advanced
591
592 .seealso: EPSSetBV()
593 @*/
594 7390 PetscErrorCode EPSGetBV(EPS eps,BV *V)
595 {
596
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
7390 PetscFunctionBegin;
597
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.
7390 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
598
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.
7390 PetscAssertPointer(V,2);
599
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
7390 if (!eps->V) {
600
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.
7181 PetscCall(BVCreate(PetscObjectComm((PetscObject)eps),&eps->V));
601
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.
7181 PetscCall(PetscObjectIncrementTabLevel((PetscObject)eps->V,(PetscObject)eps,0));
602
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.
7181 PetscCall(PetscObjectSetOptions((PetscObject)eps->V,((PetscObject)eps)->options));
603 }
604 7390 *V = eps->V;
605
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.
7390 PetscFunctionReturn(PETSC_SUCCESS);
606 }
607
608 /*@
609 EPSSetRG - Associates a region object to the eigensolver.
610
611 Collective
612
613 Input Parameters:
614 + eps - eigensolver context obtained from EPSCreate()
615 - rg - the region object
616
617 Note:
618 Use EPSGetRG() to retrieve the region context (for example,
619 to free it at the end of the computations).
620
621 Level: advanced
622
623 .seealso: EPSGetRG()
624 @*/
625 50 PetscErrorCode EPSSetRG(EPS eps,RG rg)
626 {
627
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
50 PetscFunctionBegin;
628
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.
50 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
629
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
50 if (rg) {
630
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.
50 PetscValidHeaderSpecific(rg,RG_CLASSID,2);
631
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.
50 PetscCheckSameComm(eps,1,rg,2);
632 }
633
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.
50 PetscCall(PetscObjectReference((PetscObject)rg));
634
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.
50 PetscCall(RGDestroy(&eps->rg));
635 50 eps->rg = rg;
636
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.
50 PetscFunctionReturn(PETSC_SUCCESS);
637 }
638
639 /*@
640 EPSGetRG - Obtain the region object associated to the eigensolver.
641
642 Not Collective
643
644 Input Parameters:
645 . eps - eigensolver context obtained from EPSCreate()
646
647 Output Parameter:
648 . rg - region context
649
650 Level: advanced
651
652 .seealso: EPSSetRG()
653 @*/
654 6843 PetscErrorCode EPSGetRG(EPS eps,RG *rg)
655 {
656
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
6843 PetscFunctionBegin;
657
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.
6843 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
658
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.
6843 PetscAssertPointer(rg,2);
659
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
6843 if (!eps->rg) {
660
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.
6843 PetscCall(RGCreate(PetscObjectComm((PetscObject)eps),&eps->rg));
661
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.
6843 PetscCall(PetscObjectIncrementTabLevel((PetscObject)eps->rg,(PetscObject)eps,0));
662
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.
6843 PetscCall(PetscObjectSetOptions((PetscObject)eps->rg,((PetscObject)eps)->options));
663 }
664 6843 *rg = eps->rg;
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.
6843 PetscFunctionReturn(PETSC_SUCCESS);
666 }
667
668 /*@
669 EPSSetDS - Associates a direct solver object to the eigensolver.
670
671 Collective
672
673 Input Parameters:
674 + eps - eigensolver context obtained from EPSCreate()
675 - ds - the direct solver object
676
677 Note:
678 Use EPSGetDS() to retrieve the direct solver context (for example,
679 to free it at the end of the computations).
680
681 Level: advanced
682
683 .seealso: EPSGetDS()
684 @*/
685 PetscErrorCode EPSSetDS(EPS eps,DS ds)
686 {
687 PetscFunctionBegin;
688 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
689 PetscValidHeaderSpecific(ds,DS_CLASSID,2);
690 PetscCheckSameComm(eps,1,ds,2);
691 PetscCall(PetscObjectReference((PetscObject)ds));
692 PetscCall(DSDestroy(&eps->ds));
693 eps->ds = ds;
694 PetscFunctionReturn(PETSC_SUCCESS);
695 }
696
697 /*@
698 EPSGetDS - Obtain the direct solver object associated to the eigensolver object.
699
700 Not Collective
701
702 Input Parameters:
703 . eps - eigensolver context obtained from EPSCreate()
704
705 Output Parameter:
706 . ds - direct solver context
707
708 Level: advanced
709
710 .seealso: EPSSetDS()
711 @*/
712 6472 PetscErrorCode EPSGetDS(EPS eps,DS *ds)
713 {
714
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
6472 PetscFunctionBegin;
715
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.
6472 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
716
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.
6472 PetscAssertPointer(ds,2);
717
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
6472 if (!eps->ds) {
718
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.
6472 PetscCall(DSCreate(PetscObjectComm((PetscObject)eps),&eps->ds));
719
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.
6472 PetscCall(PetscObjectIncrementTabLevel((PetscObject)eps->ds,(PetscObject)eps,0));
720
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.
6472 PetscCall(PetscObjectSetOptions((PetscObject)eps->ds,((PetscObject)eps)->options));
721 }
722 6472 *ds = eps->ds;
723
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.
6472 PetscFunctionReturn(PETSC_SUCCESS);
724 }
725
726 /*@
727 EPSIsGeneralized - Ask if the EPS object corresponds to a generalized
728 eigenvalue problem.
729
730 Not Collective
731
732 Input Parameter:
733 . eps - the eigenproblem solver context
734
735 Output Parameter:
736 . is - the answer
737
738 Level: intermediate
739
740 .seealso: EPSIsHermitian(), EPSIsPositive(), EPSIsStructured()
741 @*/
742 16 PetscErrorCode EPSIsGeneralized(EPS eps,PetscBool* is)
743 {
744
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
16 PetscFunctionBegin;
745
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(eps,EPS_CLASSID,1);
746
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(is,2);
747 16 *is = eps->isgeneralized;
748
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);
749 }
750
751 /*@
752 EPSIsHermitian - Ask if the EPS object corresponds to a Hermitian
753 eigenvalue problem.
754
755 Not Collective
756
757 Input Parameter:
758 . eps - the eigenproblem solver context
759
760 Output Parameter:
761 . is - the answer
762
763 Level: intermediate
764
765 .seealso: EPSIsGeneralized(), EPSIsPositive(), EPSIsStructured()
766 @*/
767 16 PetscErrorCode EPSIsHermitian(EPS eps,PetscBool* is)
768 {
769
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
16 PetscFunctionBegin;
770
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(eps,EPS_CLASSID,1);
771
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(is,2);
772 16 *is = eps->ishermitian;
773
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);
774 }
775
776 /*@
777 EPSIsPositive - Ask if the EPS object corresponds to an eigenvalue
778 problem type that requires a positive (semi-) definite matrix B.
779
780 Not Collective
781
782 Input Parameter:
783 . eps - the eigenproblem solver context
784
785 Output Parameter:
786 . is - the answer
787
788 Level: intermediate
789
790 .seealso: EPSIsGeneralized(), EPSIsHermitian(), EPSIsStructured()
791 @*/
792 16 PetscErrorCode EPSIsPositive(EPS eps,PetscBool* is)
793 {
794
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
16 PetscFunctionBegin;
795
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(eps,EPS_CLASSID,1);
796
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(is,2);
797 16 *is = eps->ispositive;
798
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);
799 }
800
801 /*@
802 EPSIsStructured - Ask if the EPS object corresponds to a structured
803 eigenvalue problem.
804
805 Not Collective
806
807 Input Parameter:
808 . eps - the eigenproblem solver context
809
810 Output Parameter:
811 . is - the answer
812
813 Note:
814 The result will be true if the problem type has been set to some
815 structured type such as EPS_BSE. This is independent of whether the
816 input matrix has been built with a certain structure with a helper function.
817
818 Level: intermediate
819
820 .seealso: EPSIsGeneralized(), EPSIsHermitian(), EPSIsPositive(), EPSSetProblemType()
821 @*/
822 PetscErrorCode EPSIsStructured(EPS eps,PetscBool* is)
823 {
824 PetscFunctionBegin;
825 PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
826 PetscAssertPointer(is,2);
827 *is = eps->isstructured;
828 PetscFunctionReturn(PETSC_SUCCESS);
829 }
830