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 |