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 PEP routines | ||
12 | */ | ||
13 | |||
14 | #include <slepc/private/pepimpl.h> /*I "slepcpep.h" I*/ | ||
15 | |||
16 | /* Logging support */ | ||
17 | PetscClassId PEP_CLASSID = 0; | ||
18 | PetscLogEvent PEP_SetUp = 0,PEP_Solve = 0,PEP_Refine = 0,PEP_CISS_SVD = 0; | ||
19 | |||
20 | /* List of registered PEP routines */ | ||
21 | PetscFunctionList PEPList = NULL; | ||
22 | PetscBool PEPRegisterAllCalled = PETSC_FALSE; | ||
23 | |||
24 | /* List of registered PEP monitors */ | ||
25 | PetscFunctionList PEPMonitorList = NULL; | ||
26 | PetscFunctionList PEPMonitorCreateList = NULL; | ||
27 | PetscFunctionList PEPMonitorDestroyList = NULL; | ||
28 | PetscBool PEPMonitorRegisterAllCalled = PETSC_FALSE; | ||
29 | |||
30 | /*@ | ||
31 | PEPCreate - Creates the default PEP context. | ||
32 | |||
33 | Collective | ||
34 | |||
35 | Input Parameter: | ||
36 | . comm - MPI communicator | ||
37 | |||
38 | Output Parameter: | ||
39 | . outpep - location to put the PEP context | ||
40 | |||
41 | Note: | ||
42 | The default PEP type is PEPTOAR | ||
43 | |||
44 | Level: beginner | ||
45 | |||
46 | .seealso: PEPSetUp(), PEPSolve(), PEPDestroy(), PEP | ||
47 | @*/ | ||
48 | 1991 | PetscErrorCode PEPCreate(MPI_Comm comm,PEP *outpep) | |
49 | { | ||
50 | 1991 | PEP pep; | |
51 | |||
52 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1991 | 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.
|
1991 | PetscAssertPointer(outpep,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.
|
1991 | PetscCall(PEPInitializePackage()); |
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.
|
1991 | PetscCall(SlepcHeaderCreate(pep,PEP_CLASSID,"PEP","Polynomial Eigenvalue Problem","PEP",comm,PEPDestroy,PEPView)); |
56 | |||
57 | 1991 | pep->max_it = PETSC_DETERMINE; | |
58 | 1991 | pep->nev = 1; | |
59 | 1991 | pep->ncv = PETSC_DETERMINE; | |
60 | 1991 | pep->mpd = PETSC_DETERMINE; | |
61 | 1991 | pep->nini = 0; | |
62 | 1991 | pep->target = 0.0; | |
63 | 1991 | pep->tol = PETSC_DETERMINE; | |
64 | 1991 | pep->conv = PEP_CONV_REL; | |
65 | 1991 | pep->stop = PEP_STOP_BASIC; | |
66 | 1991 | pep->which = (PEPWhich)0; | |
67 | 1991 | pep->basis = PEP_BASIS_MONOMIAL; | |
68 | 1991 | pep->problem_type = (PEPProblemType)0; | |
69 | 1991 | pep->scale = PEP_SCALE_NONE; | |
70 | 1991 | pep->sfactor = 1.0; | |
71 | 1991 | pep->dsfactor = 1.0; | |
72 | 1991 | pep->sits = 5; | |
73 | 1991 | pep->slambda = 1.0; | |
74 | 1991 | pep->refine = PEP_REFINE_NONE; | |
75 | 1991 | pep->npart = 1; | |
76 | 1991 | pep->rtol = PETSC_DETERMINE; | |
77 | 1991 | pep->rits = PETSC_DETERMINE; | |
78 | 1991 | pep->scheme = (PEPRefineScheme)0; | |
79 | 1991 | pep->extract = (PEPExtract)0; | |
80 | 1991 | pep->trackall = PETSC_FALSE; | |
81 | |||
82 | 1991 | pep->converged = PEPConvergedRelative; | |
83 | 1991 | pep->convergeduser = NULL; | |
84 | 1991 | pep->convergeddestroy= NULL; | |
85 | 1991 | pep->stopping = PEPStoppingBasic; | |
86 | 1991 | pep->stoppinguser = NULL; | |
87 | 1991 | pep->stoppingdestroy = NULL; | |
88 | 1991 | pep->convergedctx = NULL; | |
89 | 1991 | pep->stoppingctx = NULL; | |
90 | 1991 | pep->numbermonitors = 0; | |
91 | |||
92 | 1991 | pep->st = NULL; | |
93 | 1991 | pep->ds = NULL; | |
94 | 1991 | pep->V = NULL; | |
95 | 1991 | pep->rg = NULL; | |
96 | 1991 | pep->A = NULL; | |
97 | 1991 | pep->nmat = 0; | |
98 | 1991 | pep->Dl = NULL; | |
99 | 1991 | pep->Dr = NULL; | |
100 | 1991 | pep->IS = NULL; | |
101 | 1991 | pep->eigr = NULL; | |
102 | 1991 | pep->eigi = NULL; | |
103 | 1991 | pep->errest = NULL; | |
104 | 1991 | pep->perm = NULL; | |
105 | 1991 | pep->pbc = NULL; | |
106 | 1991 | pep->solvematcoeffs = NULL; | |
107 | 1991 | pep->nwork = 0; | |
108 | 1991 | pep->work = NULL; | |
109 | 1991 | pep->refineksp = NULL; | |
110 | 1991 | pep->refinesubc = NULL; | |
111 | 1991 | pep->data = NULL; | |
112 | |||
113 | 1991 | pep->state = PEP_STATE_INITIAL; | |
114 | 1991 | pep->nconv = 0; | |
115 | 1991 | pep->its = 0; | |
116 | 1991 | pep->n = 0; | |
117 | 1991 | pep->nloc = 0; | |
118 | 1991 | pep->nrma = NULL; | |
119 | 1991 | pep->sfactor_set = PETSC_FALSE; | |
120 | 1991 | pep->lineariz = PETSC_FALSE; | |
121 | 1991 | pep->reason = PEP_CONVERGED_ITERATING; | |
122 | |||
123 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1991 | PetscCall(PetscNew(&pep->sc)); |
124 | 1991 | *outpep = pep; | |
125 |
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.
|
1991 | PetscFunctionReturn(PETSC_SUCCESS); |
126 | } | ||
127 | |||
128 | /*@ | ||
129 | PEPSetType - Selects the particular solver to be used in the PEP object. | ||
130 | |||
131 | Logically Collective | ||
132 | |||
133 | Input Parameters: | ||
134 | + pep - the polynomial eigensolver context | ||
135 | - type - a known method | ||
136 | |||
137 | Options Database Key: | ||
138 | . -pep_type <method> - Sets the method; use -help for a list | ||
139 | of available methods | ||
140 | |||
141 | Notes: | ||
142 | See "slepc/include/slepcpep.h" for available methods. The default | ||
143 | is PEPTOAR. | ||
144 | |||
145 | Normally, it is best to use the PEPSetFromOptions() command and | ||
146 | then set the PEP type from the options database rather than by using | ||
147 | this routine. Using the options database provides the user with | ||
148 | maximum flexibility in evaluating the different available methods. | ||
149 | The PEPSetType() routine is provided for those situations where it | ||
150 | is necessary to set the iterative solver independently of the command | ||
151 | line or options database. | ||
152 | |||
153 | Level: intermediate | ||
154 | |||
155 | .seealso: PEPType | ||
156 | @*/ | ||
157 | 1900 | PetscErrorCode PEPSetType(PEP pep,PEPType type) | |
158 | { | ||
159 | 1900 | PetscErrorCode (*r)(PEP); | |
160 | 1900 | PetscBool match; | |
161 | |||
162 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1900 | PetscFunctionBegin; |
163 |
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.
|
1900 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
164 |
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.
|
1900 | PetscAssertPointer(type,2); |
165 | |||
166 |
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.
|
1900 | PetscCall(PetscObjectTypeCompare((PetscObject)pep,type,&match)); |
167 |
2/14✓ Branch 0 taken 8 times.
✓ Branch 1 taken 2 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.
|
1900 | if (match) PetscFunctionReturn(PETSC_SUCCESS); |
168 | |||
169 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1900 | PetscCall(PetscFunctionListFind(PEPList,type,&r)); |
170 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1900 | PetscCheck(r,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_UNKNOWN_TYPE,"Unknown PEP type given: %s",type); |
171 | |||
172 |
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.
|
1900 | PetscTryTypeMethod(pep,destroy); |
173 |
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.
|
1900 | PetscCall(PetscMemzero(pep->ops,sizeof(struct _PEPOps))); |
174 | |||
175 | 1900 | pep->state = PEP_STATE_INITIAL; | |
176 |
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.
|
1900 | PetscCall(PetscObjectChangeTypeName((PetscObject)pep,type)); |
177 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1900 | PetscCall((*r)(pep)); |
178 |
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.
|
368 | PetscFunctionReturn(PETSC_SUCCESS); |
179 | } | ||
180 | |||
181 | /*@ | ||
182 | PEPGetType - Gets the PEP type as a string from the PEP object. | ||
183 | |||
184 | Not Collective | ||
185 | |||
186 | Input Parameter: | ||
187 | . pep - the eigensolver context | ||
188 | |||
189 | Output Parameter: | ||
190 | . type - name of PEP method | ||
191 | |||
192 | Level: intermediate | ||
193 | |||
194 | .seealso: PEPSetType() | ||
195 | @*/ | ||
196 | 84 | PetscErrorCode PEPGetType(PEP pep,PEPType *type) | |
197 | { | ||
198 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
84 | PetscFunctionBegin; |
199 |
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.
|
84 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
200 |
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.
|
84 | PetscAssertPointer(type,2); |
201 | 84 | *type = ((PetscObject)pep)->type_name; | |
202 |
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.
|
84 | PetscFunctionReturn(PETSC_SUCCESS); |
203 | } | ||
204 | |||
205 | /*@C | ||
206 | PEPRegister - Adds a method to the polynomial eigenproblem solver package. | ||
207 | |||
208 | Not Collective | ||
209 | |||
210 | Input Parameters: | ||
211 | + name - name of a new user-defined solver | ||
212 | - function - routine to create the solver context | ||
213 | |||
214 | Notes: | ||
215 | PEPRegister() may be called multiple times to add several user-defined solvers. | ||
216 | |||
217 | Example Usage: | ||
218 | .vb | ||
219 | PEPRegister("my_solver",MySolverCreate); | ||
220 | .ve | ||
221 | |||
222 | Then, your solver can be chosen with the procedural interface via | ||
223 | $ PEPSetType(pep,"my_solver") | ||
224 | or at runtime via the option | ||
225 | $ -pep_type my_solver | ||
226 | |||
227 | Level: advanced | ||
228 | |||
229 | .seealso: PEPRegisterAll() | ||
230 | @*/ | ||
231 | 10425 | PetscErrorCode PEPRegister(const char *name,PetscErrorCode (*function)(PEP)) | |
232 | { | ||
233 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10425 | PetscFunctionBegin; |
234 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10425 | PetscCall(PEPInitializePackage()); |
235 |
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.
|
10425 | PetscCall(PetscFunctionListAdd(&PEPList,name,function)); |
236 |
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.
|
1997 | PetscFunctionReturn(PETSC_SUCCESS); |
237 | } | ||
238 | |||
239 | /*@C | ||
240 | PEPMonitorRegister - Registers a PEP monitor routine that may be accessed with PEPMonitorSetFromOptions(). | ||
241 | |||
242 | Not Collective | ||
243 | |||
244 | Input Parameters: | ||
245 | + name - name of a new monitor routine | ||
246 | . vtype - a PetscViewerType for the output | ||
247 | . format - a PetscViewerFormat for the output | ||
248 | . monitor - monitor routine, see PEPMonitorRegisterFn | ||
249 | . create - creation routine, or NULL | ||
250 | - destroy - destruction routine, or NULL | ||
251 | |||
252 | Notes: | ||
253 | PEPMonitorRegister() may be called multiple times to add several user-defined monitors. | ||
254 | |||
255 | The calling sequence for the given function matches the calling sequence of PEPMonitorFn | ||
256 | functions passed to PEPMonitorSet() with the additional requirement that its final argument | ||
257 | be a PetscViewerAndFormat. | ||
258 | |||
259 | Example Usage: | ||
260 | .vb | ||
261 | PEPMonitorRegister("my_monitor",PETSCVIEWERASCII,PETSC_VIEWER_ASCII_INFO_DETAIL,MyMonitor,NULL,NULL); | ||
262 | .ve | ||
263 | |||
264 | Then, your monitor can be chosen with the procedural interface via | ||
265 | $ PEPMonitorSetFromOptions(pep,"-pep_monitor_my_monitor","my_monitor",NULL) | ||
266 | or at runtime via the option | ||
267 | $ -pep_monitor_my_monitor | ||
268 | |||
269 | Level: advanced | ||
270 | |||
271 | .seealso: PEPMonitorSet(), PEPMonitorRegisterAll() | ||
272 | @*/ | ||
273 | 11334 | PetscErrorCode PEPMonitorRegister(const char name[],PetscViewerType vtype,PetscViewerFormat format,PEPMonitorRegisterFn *monitor,PEPMonitorRegisterCreateFn *create,PEPMonitorRegisterDestroyFn *destroy) | |
274 | { | ||
275 | 11334 | char key[PETSC_MAX_PATH_LEN]; | |
276 | |||
277 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
11334 | PetscFunctionBegin; |
278 |
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.
|
11334 | PetscCall(PEPInitializePackage()); |
279 |
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.
|
11334 | PetscCall(SlepcMonitorMakeKey_Internal(name,vtype,format,key)); |
280 |
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.
|
11334 | PetscCall(PetscFunctionListAdd(&PEPMonitorList,key,monitor)); |
281 |
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.
|
11334 | if (create) PetscCall(PetscFunctionListAdd(&PEPMonitorCreateList,key,create)); |
282 |
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.
|
11334 | if (destroy) PetscCall(PetscFunctionListAdd(&PEPMonitorDestroyList,key,destroy)); |
283 |
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.
|
2172 | PetscFunctionReturn(PETSC_SUCCESS); |
284 | } | ||
285 | |||
286 | /*@ | ||
287 | PEPReset - Resets the PEP context to the initial state (prior to setup) | ||
288 | and destroys any allocated Vecs and Mats. | ||
289 | |||
290 | Collective | ||
291 | |||
292 | Input Parameter: | ||
293 | . pep - eigensolver context obtained from PEPCreate() | ||
294 | |||
295 | Level: advanced | ||
296 | |||
297 | .seealso: PEPDestroy() | ||
298 | @*/ | ||
299 | 2281 | PetscErrorCode PEPReset(PEP pep) | |
300 | { | ||
301 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2281 | PetscFunctionBegin; |
302 |
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.
|
2281 | if (pep) PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
303 |
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.
|
2074 | if (!pep) PetscFunctionReturn(PETSC_SUCCESS); |
304 |
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.
|
2281 | PetscTryTypeMethod(pep,reset); |
305 |
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.
|
2281 | if (pep->st) PetscCall(STReset(pep->st)); |
306 |
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.
|
2281 | if (pep->refineksp) PetscCall(KSPReset(pep->refineksp)); |
307 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2281 | if (pep->nmat) { |
308 |
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.
|
1956 | PetscCall(MatDestroyMatrices(pep->nmat,&pep->A)); |
309 |
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.
|
1956 | PetscCall(PetscFree2(pep->pbc,pep->nrma)); |
310 |
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.
|
1956 | PetscCall(PetscFree(pep->solvematcoeffs)); |
311 | 1956 | pep->nmat = 0; | |
312 | } | ||
313 |
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.
|
2281 | PetscCall(VecDestroy(&pep->Dl)); |
314 |
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.
|
2281 | PetscCall(VecDestroy(&pep->Dr)); |
315 |
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.
|
2281 | PetscCall(BVDestroy(&pep->V)); |
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.
|
2281 | PetscCall(VecDestroyVecs(pep->nwork,&pep->work)); |
317 | 2281 | pep->nwork = 0; | |
318 | 2281 | pep->state = PEP_STATE_INITIAL; | |
319 |
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.
|
2281 | PetscFunctionReturn(PETSC_SUCCESS); |
320 | } | ||
321 | |||
322 | /*@ | ||
323 | PEPDestroy - Destroys the PEP context. | ||
324 | |||
325 | Collective | ||
326 | |||
327 | Input Parameter: | ||
328 | . pep - eigensolver context obtained from PEPCreate() | ||
329 | |||
330 | Level: beginner | ||
331 | |||
332 | .seealso: PEPCreate(), PEPSetUp(), PEPSolve() | ||
333 | @*/ | ||
334 | 2056 | PetscErrorCode PEPDestroy(PEP *pep) | |
335 | { | ||
336 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2056 | PetscFunctionBegin; |
337 |
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.
|
2056 | if (!*pep) PetscFunctionReturn(PETSC_SUCCESS); |
338 |
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.
|
2034 | PetscValidHeaderSpecific(*pep,PEP_CLASSID,1); |
339 |
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.
|
2034 | if (--((PetscObject)*pep)->refct > 0) { *pep = NULL; PetscFunctionReturn(PETSC_SUCCESS); } |
340 |
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.
|
1991 | PetscCall(PEPReset(*pep)); |
341 |
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.
|
1991 | PetscTryTypeMethod(*pep,destroy); |
342 |
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.
|
1991 | if ((*pep)->eigr) PetscCall(PetscFree4((*pep)->eigr,(*pep)->eigi,(*pep)->errest,(*pep)->perm)); |
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.
|
1991 | PetscCall(STDestroy(&(*pep)->st)); |
344 |
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.
|
1991 | PetscCall(RGDestroy(&(*pep)->rg)); |
345 |
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.
|
1991 | PetscCall(DSDestroy(&(*pep)->ds)); |
346 |
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.
|
1991 | PetscCall(KSPDestroy(&(*pep)->refineksp)); |
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.
|
1991 | PetscCall(PetscSubcommDestroy(&(*pep)->refinesubc)); |
348 |
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.
|
1991 | PetscCall(PetscFree((*pep)->sc)); |
349 | /* just in case the initial vectors have not been used */ | ||
350 |
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.
|
1991 | PetscCall(SlepcBasisDestroy_Private(&(*pep)->nini,&(*pep)->IS)); |
351 |
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.
|
1991 | if ((*pep)->convergeddestroy) PetscCall((*(*pep)->convergeddestroy)(&(*pep)->convergedctx)); |
352 |
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.
|
1991 | if ((*pep)->stoppingdestroy) PetscCall((*(*pep)->stoppingdestroy)(&(*pep)->stoppingctx)); |
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.
|
1991 | PetscCall(PEPMonitorCancel(*pep)); |
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.
|
1991 | PetscCall(PetscHeaderDestroy(pep)); |
355 |
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.
|
368 | PetscFunctionReturn(PETSC_SUCCESS); |
356 | } | ||
357 | |||
358 | /*@ | ||
359 | PEPSetBV - Associates a basis vectors object to the polynomial eigensolver. | ||
360 | |||
361 | Collective | ||
362 | |||
363 | Input Parameters: | ||
364 | + pep - eigensolver context obtained from PEPCreate() | ||
365 | - bv - the basis vectors object | ||
366 | |||
367 | Note: | ||
368 | Use PEPGetBV() to retrieve the basis vectors context (for example, | ||
369 | to free it at the end of the computations). | ||
370 | |||
371 | Level: advanced | ||
372 | |||
373 | .seealso: PEPGetBV() | ||
374 | @*/ | ||
375 | ✗ | PetscErrorCode PEPSetBV(PEP pep,BV bv) | |
376 | { | ||
377 | ✗ | PetscFunctionBegin; | |
378 | ✗ | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); | |
379 | ✗ | PetscValidHeaderSpecific(bv,BV_CLASSID,2); | |
380 | ✗ | PetscCheckSameComm(pep,1,bv,2); | |
381 | ✗ | PetscCall(PetscObjectReference((PetscObject)bv)); | |
382 | ✗ | PetscCall(BVDestroy(&pep->V)); | |
383 | ✗ | pep->V = bv; | |
384 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
385 | } | ||
386 | |||
387 | /*@ | ||
388 | PEPGetBV - Obtain the basis vectors object associated to the polynomial | ||
389 | eigensolver object. | ||
390 | |||
391 | Not Collective | ||
392 | |||
393 | Input Parameters: | ||
394 | . pep - eigensolver context obtained from PEPCreate() | ||
395 | |||
396 | Output Parameter: | ||
397 | . bv - basis vectors context | ||
398 | |||
399 | Level: advanced | ||
400 | |||
401 | .seealso: PEPSetBV() | ||
402 | @*/ | ||
403 | 1990 | PetscErrorCode PEPGetBV(PEP pep,BV *bv) | |
404 | { | ||
405 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1990 | PetscFunctionBegin; |
406 |
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.
|
1990 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
407 |
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.
|
1990 | PetscAssertPointer(bv,2); |
408 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1990 | if (!pep->V) { |
409 |
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.
|
1970 | PetscCall(BVCreate(PetscObjectComm((PetscObject)pep),&pep->V)); |
410 |
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.
|
1970 | PetscCall(PetscObjectIncrementTabLevel((PetscObject)pep->V,(PetscObject)pep,0)); |
411 |
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.
|
1970 | PetscCall(PetscObjectSetOptions((PetscObject)pep->V,((PetscObject)pep)->options)); |
412 | } | ||
413 | 1990 | *bv = pep->V; | |
414 |
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.
|
1990 | PetscFunctionReturn(PETSC_SUCCESS); |
415 | } | ||
416 | |||
417 | /*@ | ||
418 | PEPSetRG - Associates a region object to the polynomial eigensolver. | ||
419 | |||
420 | Collective | ||
421 | |||
422 | Input Parameters: | ||
423 | + pep - eigensolver context obtained from PEPCreate() | ||
424 | - rg - the region object | ||
425 | |||
426 | Note: | ||
427 | Use PEPGetRG() to retrieve the region context (for example, | ||
428 | to free it at the end of the computations). | ||
429 | |||
430 | Level: advanced | ||
431 | |||
432 | .seealso: PEPGetRG() | ||
433 | @*/ | ||
434 | 30 | PetscErrorCode PEPSetRG(PEP pep,RG rg) | |
435 | { | ||
436 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
437 |
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.
|
30 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
438 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | if (rg) { |
439 |
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.
|
30 | PetscValidHeaderSpecific(rg,RG_CLASSID,2); |
440 |
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.
|
30 | PetscCheckSameComm(pep,1,rg,2); |
441 | } | ||
442 |
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.
|
30 | PetscCall(PetscObjectReference((PetscObject)rg)); |
443 |
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.
|
30 | PetscCall(RGDestroy(&pep->rg)); |
444 | 30 | pep->rg = rg; | |
445 |
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.
|
30 | PetscFunctionReturn(PETSC_SUCCESS); |
446 | } | ||
447 | |||
448 | /*@ | ||
449 | PEPGetRG - Obtain the region object associated to the | ||
450 | polynomial eigensolver object. | ||
451 | |||
452 | Not Collective | ||
453 | |||
454 | Input Parameters: | ||
455 | . pep - eigensolver context obtained from PEPCreate() | ||
456 | |||
457 | Output Parameter: | ||
458 | . rg - region context | ||
459 | |||
460 | Level: advanced | ||
461 | |||
462 | .seealso: PEPSetRG() | ||
463 | @*/ | ||
464 | 2160 | PetscErrorCode PEPGetRG(PEP pep,RG *rg) | |
465 | { | ||
466 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2160 | PetscFunctionBegin; |
467 |
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.
|
2160 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
468 |
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.
|
2160 | PetscAssertPointer(rg,2); |
469 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2160 | if (!pep->rg) { |
470 |
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.
|
1870 | PetscCall(RGCreate(PetscObjectComm((PetscObject)pep),&pep->rg)); |
471 |
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.
|
1870 | PetscCall(PetscObjectIncrementTabLevel((PetscObject)pep->rg,(PetscObject)pep,0)); |
472 |
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.
|
1870 | PetscCall(PetscObjectSetOptions((PetscObject)pep->rg,((PetscObject)pep)->options)); |
473 | } | ||
474 | 2160 | *rg = pep->rg; | |
475 |
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.
|
2160 | PetscFunctionReturn(PETSC_SUCCESS); |
476 | } | ||
477 | |||
478 | /*@ | ||
479 | PEPSetDS - Associates a direct solver object to the polynomial eigensolver. | ||
480 | |||
481 | Collective | ||
482 | |||
483 | Input Parameters: | ||
484 | + pep - eigensolver context obtained from PEPCreate() | ||
485 | - ds - the direct solver object | ||
486 | |||
487 | Note: | ||
488 | Use PEPGetDS() to retrieve the direct solver context (for example, | ||
489 | to free it at the end of the computations). | ||
490 | |||
491 | Level: advanced | ||
492 | |||
493 | .seealso: PEPGetDS() | ||
494 | @*/ | ||
495 | ✗ | PetscErrorCode PEPSetDS(PEP pep,DS ds) | |
496 | { | ||
497 | ✗ | PetscFunctionBegin; | |
498 | ✗ | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); | |
499 | ✗ | PetscValidHeaderSpecific(ds,DS_CLASSID,2); | |
500 | ✗ | PetscCheckSameComm(pep,1,ds,2); | |
501 | ✗ | PetscCall(PetscObjectReference((PetscObject)ds)); | |
502 | ✗ | PetscCall(DSDestroy(&pep->ds)); | |
503 | ✗ | pep->ds = ds; | |
504 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
505 | } | ||
506 | |||
507 | /*@ | ||
508 | PEPGetDS - Obtain the direct solver object associated to the | ||
509 | polynomial eigensolver object. | ||
510 | |||
511 | Not Collective | ||
512 | |||
513 | Input Parameters: | ||
514 | . pep - eigensolver context obtained from PEPCreate() | ||
515 | |||
516 | Output Parameter: | ||
517 | . ds - direct solver context | ||
518 | |||
519 | Level: advanced | ||
520 | |||
521 | .seealso: PEPSetDS() | ||
522 | @*/ | ||
523 | 1900 | PetscErrorCode PEPGetDS(PEP pep,DS *ds) | |
524 | { | ||
525 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1900 | PetscFunctionBegin; |
526 |
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.
|
1900 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
527 |
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.
|
1900 | PetscAssertPointer(ds,2); |
528 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1900 | if (!pep->ds) { |
529 |
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.
|
1900 | PetscCall(DSCreate(PetscObjectComm((PetscObject)pep),&pep->ds)); |
530 |
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.
|
1900 | PetscCall(PetscObjectIncrementTabLevel((PetscObject)pep->ds,(PetscObject)pep,0)); |
531 |
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.
|
1900 | PetscCall(PetscObjectSetOptions((PetscObject)pep->ds,((PetscObject)pep)->options)); |
532 | } | ||
533 | 1900 | *ds = pep->ds; | |
534 |
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.
|
1900 | PetscFunctionReturn(PETSC_SUCCESS); |
535 | } | ||
536 | |||
537 | /*@ | ||
538 | PEPSetST - Associates a spectral transformation object to the eigensolver. | ||
539 | |||
540 | Collective | ||
541 | |||
542 | Input Parameters: | ||
543 | + pep - eigensolver context obtained from PEPCreate() | ||
544 | - st - the spectral transformation object | ||
545 | |||
546 | Note: | ||
547 | Use PEPGetST() to retrieve the spectral transformation context (for example, | ||
548 | to free it at the end of the computations). | ||
549 | |||
550 | Level: advanced | ||
551 | |||
552 | .seealso: PEPGetST() | ||
553 | @*/ | ||
554 | 10 | PetscErrorCode PEPSetST(PEP pep,ST st) | |
555 | { | ||
556 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
557 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
10 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
558 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
10 | PetscValidHeaderSpecific(st,ST_CLASSID,2); |
559 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
10 | PetscCheckSameComm(pep,1,st,2); |
560 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscObjectReference((PetscObject)st)); |
561 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(STDestroy(&pep->st)); |
562 | 10 | pep->st = st; | |
563 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
10 | PetscFunctionReturn(PETSC_SUCCESS); |
564 | } | ||
565 | |||
566 | /*@ | ||
567 | PEPGetST - Obtain the spectral transformation (ST) object associated | ||
568 | to the eigensolver object. | ||
569 | |||
570 | Not Collective | ||
571 | |||
572 | Input Parameters: | ||
573 | . pep - eigensolver context obtained from PEPCreate() | ||
574 | |||
575 | Output Parameter: | ||
576 | . st - spectral transformation context | ||
577 | |||
578 | Level: intermediate | ||
579 | |||
580 | .seealso: PEPSetST() | ||
581 | @*/ | ||
582 | 308719 | PetscErrorCode PEPGetST(PEP pep,ST *st) | |
583 | { | ||
584 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
308719 | PetscFunctionBegin; |
585 |
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.
|
308719 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
586 |
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.
|
308719 | PetscAssertPointer(st,2); |
587 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
308719 | if (!pep->st) { |
588 |
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.
|
1890 | PetscCall(STCreate(PetscObjectComm((PetscObject)pep),&pep->st)); |
589 |
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.
|
1890 | PetscCall(PetscObjectIncrementTabLevel((PetscObject)pep->st,(PetscObject)pep,0)); |
590 |
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.
|
1890 | PetscCall(PetscObjectSetOptions((PetscObject)pep->st,((PetscObject)pep)->options)); |
591 | } | ||
592 | 308719 | *st = pep->st; | |
593 |
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.
|
308719 | PetscFunctionReturn(PETSC_SUCCESS); |
594 | } | ||
595 | |||
596 | /*@ | ||
597 | PEPRefineGetKSP - Obtain the ksp object used by the eigensolver | ||
598 | object in the refinement phase. | ||
599 | |||
600 | Collective | ||
601 | |||
602 | Input Parameters: | ||
603 | . pep - eigensolver context obtained from PEPCreate() | ||
604 | |||
605 | Output Parameter: | ||
606 | . ksp - ksp context | ||
607 | |||
608 | Level: advanced | ||
609 | |||
610 | .seealso: PEPSetRefine() | ||
611 | @*/ | ||
612 | 2080 | PetscErrorCode PEPRefineGetKSP(PEP pep,KSP *ksp) | |
613 | { | ||
614 | 2080 | MPI_Comm comm; | |
615 | |||
616 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2080 | PetscFunctionBegin; |
617 |
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.
|
2080 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
618 |
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.
|
2080 | PetscAssertPointer(ksp,2); |
619 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2080 | if (!pep->refineksp) { |
620 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1820 | if (pep->npart>1) { |
621 | /* Split in subcomunicators */ | ||
622 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(PetscSubcommCreate(PetscObjectComm((PetscObject)pep),&pep->refinesubc)); |
623 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(PetscSubcommSetNumber(pep->refinesubc,pep->npart)); |
624 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(PetscSubcommSetType(pep->refinesubc,PETSC_SUBCOMM_CONTIGUOUS)); |
625 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(PetscSubcommGetChild(pep->refinesubc,&comm)); |
626 |
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.
|
1700 | } else PetscCall(PetscObjectGetComm((PetscObject)pep,&comm)); |
627 |
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.
|
1820 | PetscCall(KSPCreate(comm,&pep->refineksp)); |
628 |
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.
|
1820 | PetscCall(PetscObjectIncrementTabLevel((PetscObject)pep->refineksp,(PetscObject)pep,0)); |
629 |
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.
|
1820 | PetscCall(PetscObjectSetOptions((PetscObject)pep->refineksp,((PetscObject)pep)->options)); |
630 |
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.
|
1820 | PetscCall(KSPSetOptionsPrefix(*ksp,((PetscObject)pep)->prefix)); |
631 |
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.
|
1820 | PetscCall(KSPAppendOptionsPrefix(*ksp,"pep_refine_")); |
632 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
3624 | PetscCall(KSPSetTolerances(pep->refineksp,SlepcDefaultTol(pep->rtol),PETSC_CURRENT,PETSC_CURRENT,PETSC_CURRENT)); |
633 | } | ||
634 | 2080 | *ksp = pep->refineksp; | |
635 |
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.
|
2080 | PetscFunctionReturn(PETSC_SUCCESS); |
636 | } | ||
637 | |||
638 | /*@ | ||
639 | PEPSetTarget - Sets the value of the target. | ||
640 | |||
641 | Logically Collective | ||
642 | |||
643 | Input Parameters: | ||
644 | + pep - eigensolver context | ||
645 | - target - the value of the target | ||
646 | |||
647 | Options Database Key: | ||
648 | . -pep_target <scalar> - the value of the target | ||
649 | |||
650 | Notes: | ||
651 | The target is a scalar value used to determine the portion of the spectrum | ||
652 | of interest. It is used in combination with PEPSetWhichEigenpairs(). | ||
653 | |||
654 | In the case of complex scalars, a complex value can be provided in the | ||
655 | command line with [+/-][realnumber][+/-]realnumberi with no spaces, e.g. | ||
656 | -pep_target 1.0+2.0i | ||
657 | |||
658 | Level: intermediate | ||
659 | |||
660 | .seealso: PEPGetTarget(), PEPSetWhichEigenpairs() | ||
661 | @*/ | ||
662 | 925 | PetscErrorCode PEPSetTarget(PEP pep,PetscScalar target) | |
663 | { | ||
664 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
925 | PetscFunctionBegin; |
665 |
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.
|
925 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
666 |
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.
|
925 | PetscValidLogicalCollectiveScalar(pep,target,2); |
667 | 925 | pep->target = target; | |
668 |
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.
|
925 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
669 |
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.
|
925 | PetscCall(STSetDefaultShift(pep->st,target)); |
670 |
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.
|
181 | PetscFunctionReturn(PETSC_SUCCESS); |
671 | } | ||
672 | |||
673 | /*@ | ||
674 | PEPGetTarget - Gets the value of the target. | ||
675 | |||
676 | Not Collective | ||
677 | |||
678 | Input Parameter: | ||
679 | . pep - eigensolver context | ||
680 | |||
681 | Output Parameter: | ||
682 | . target - the value of the target | ||
683 | |||
684 | Note: | ||
685 | If the target was not set by the user, then zero is returned. | ||
686 | |||
687 | Level: intermediate | ||
688 | |||
689 | .seealso: PEPSetTarget() | ||
690 | @*/ | ||
691 | 26 | PetscErrorCode PEPGetTarget(PEP pep,PetscScalar* target) | |
692 | { | ||
693 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
26 | PetscFunctionBegin; |
694 |
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.
|
26 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
695 |
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.
|
26 | PetscAssertPointer(target,2); |
696 | 26 | *target = pep->target; | |
697 |
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.
|
26 | PetscFunctionReturn(PETSC_SUCCESS); |
698 | } | ||
699 | |||
700 | /*@ | ||
701 | PEPSetInterval - Defines the computational interval for spectrum slicing. | ||
702 | |||
703 | Logically Collective | ||
704 | |||
705 | Input Parameters: | ||
706 | + pep - eigensolver context | ||
707 | . inta - left end of the interval | ||
708 | - intb - right end of the interval | ||
709 | |||
710 | Options Database Key: | ||
711 | . -pep_interval <a,b> - set [a,b] as the interval of interest | ||
712 | |||
713 | Notes: | ||
714 | Spectrum slicing is a technique employed for computing all eigenvalues of | ||
715 | symmetric eigenproblems in a given interval. This function provides the | ||
716 | interval to be considered. It must be used in combination with PEP_ALL, see | ||
717 | PEPSetWhichEigenpairs(). | ||
718 | |||
719 | In the command-line option, two values must be provided. For an open interval, | ||
720 | one can give an infinite, e.g., -pep_interval 1.0,inf or -pep_interval -inf,1.0. | ||
721 | An open interval in the programmatic interface can be specified with | ||
722 | PETSC_MAX_REAL and -PETSC_MAX_REAL. | ||
723 | |||
724 | Level: intermediate | ||
725 | |||
726 | .seealso: PEPGetInterval(), PEPSetWhichEigenpairs() | ||
727 | @*/ | ||
728 | 90 | PetscErrorCode PEPSetInterval(PEP pep,PetscReal inta,PetscReal intb) | |
729 | { | ||
730 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
90 | PetscFunctionBegin; |
731 |
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.
|
90 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
732 |
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.
|
90 | PetscValidLogicalCollectiveReal(pep,inta,2); |
733 |
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.
|
90 | PetscValidLogicalCollectiveReal(pep,intb,3); |
734 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
90 | PetscCheck(inta<intb,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_WRONG,"Badly defined interval, must be inta<intb"); |
735 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
90 | if (pep->inta != inta || pep->intb != intb) { |
736 | 90 | pep->inta = inta; | |
737 | 90 | pep->intb = intb; | |
738 | 90 | pep->state = PEP_STATE_INITIAL; | |
739 | } | ||
740 |
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.
|
18 | PetscFunctionReturn(PETSC_SUCCESS); |
741 | } | ||
742 | |||
743 | /*@ | ||
744 | PEPGetInterval - Gets the computational interval for spectrum slicing. | ||
745 | |||
746 | Not Collective | ||
747 | |||
748 | Input Parameter: | ||
749 | . pep - eigensolver context | ||
750 | |||
751 | Output Parameters: | ||
752 | + inta - left end of the interval | ||
753 | - intb - right end of the interval | ||
754 | |||
755 | Level: intermediate | ||
756 | |||
757 | Note: | ||
758 | If the interval was not set by the user, then zeros are returned. | ||
759 | |||
760 | .seealso: PEPSetInterval() | ||
761 | @*/ | ||
762 | 40 | PetscErrorCode PEPGetInterval(PEP pep,PetscReal* inta,PetscReal* intb) | |
763 | { | ||
764 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
40 | PetscFunctionBegin; |
765 |
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.
|
40 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
766 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
40 | if (inta) *inta = pep->inta; |
767 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
40 | if (intb) *intb = pep->intb; |
768 |
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.
|
40 | PetscFunctionReturn(PETSC_SUCCESS); |
769 | } | ||
770 |