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 | The PEP routines related to various viewers | ||
12 | */ | ||
13 | |||
14 | #include <slepc/private/pepimpl.h> /*I "slepcpep.h" I*/ | ||
15 | #include <slepc/private/bvimpl.h> | ||
16 | #include <petscdraw.h> | ||
17 | |||
18 | /*@ | ||
19 | PEPView - Prints the PEP data structure. | ||
20 | |||
21 | Collective | ||
22 | |||
23 | Input Parameters: | ||
24 | + pep - the polynomial eigenproblem solver context | ||
25 | - viewer - optional visualization context | ||
26 | |||
27 | Options Database Key: | ||
28 | . -pep_view - Calls PEPView() at end of PEPSolve() | ||
29 | |||
30 | Note: | ||
31 | The available visualization contexts include | ||
32 | + PETSC_VIEWER_STDOUT_SELF - standard output (default) | ||
33 | - PETSC_VIEWER_STDOUT_WORLD - synchronized standard | ||
34 | output where only the first processor opens | ||
35 | the file. All other processors send their | ||
36 | data to the first processor to print. | ||
37 | |||
38 | The user can open an alternative visualization context with | ||
39 | PetscViewerASCIIOpen() - output to a specified file. | ||
40 | |||
41 | Level: beginner | ||
42 | |||
43 | .seealso: STView() | ||
44 | @*/ | ||
45 | 15 | PetscErrorCode PEPView(PEP pep,PetscViewer viewer) | |
46 | { | ||
47 | 15 | const char *type=NULL; | |
48 | 15 | char str[50]; | |
49 | 15 | PetscBool isascii,islinear,istrivial; | |
50 | 15 | PetscInt i; | |
51 | 15 | PetscViewer sviewer; | |
52 | 15 | MPI_Comm child; | |
53 | |||
54 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
15 | PetscFunctionBegin; |
55 |
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.
|
15 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
56 |
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.
|
15 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)pep),&viewer)); |
57 |
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.
|
15 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2); |
58 |
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.
|
15 | PetscCheckSameComm(pep,1,viewer,2); |
59 | |||
60 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
61 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
15 | if (isascii) { |
62 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)pep,viewer)); |
63 |
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.
|
15 | PetscCall(PetscViewerASCIIPushTab(viewer)); |
64 |
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.
|
15 | PetscTryTypeMethod(pep,view,viewer); |
65 |
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.
|
15 | PetscCall(PetscViewerASCIIPopTab(viewer)); |
66 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
15 | if (pep->problem_type) { |
67 |
1/5✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
15 | switch (pep->problem_type) { |
68 | 15 | case PEP_GENERAL: type = "general polynomial eigenvalue problem"; break; | |
69 | ✗ | case PEP_HERMITIAN: type = SLEPC_STRING_HERMITIAN " polynomial eigenvalue problem"; break; | |
70 | ✗ | case PEP_HYPERBOLIC: type = "hyperbolic polynomial eigenvalue problem"; break; | |
71 | ✗ | case PEP_GYROSCOPIC: type = "gyroscopic polynomial eigenvalue problem"; break; | |
72 | } | ||
73 | } else type = "not yet set"; | ||
74 |
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.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," problem type: %s\n",type)); |
75 |
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.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," polynomial represented in %s basis\n",PEPBasisTypes[pep->basis])); |
76 |
2/4✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
|
15 | switch (pep->scale) { |
77 | case PEP_SCALE_NONE: | ||
78 | break; | ||
79 | 5 | case PEP_SCALE_SCALAR: | |
80 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerASCIIPrintf(viewer," parameter scaling enabled, with scaling factor=%g\n",(double)pep->sfactor)); |
81 | break; | ||
82 | ✗ | case PEP_SCALE_DIAGONAL: | |
83 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," diagonal balancing enabled, with its=%" PetscInt_FMT " and lambda=%g\n",pep->sits,(double)pep->slambda)); | |
84 | break; | ||
85 | ✗ | case PEP_SCALE_BOTH: | |
86 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," parameter scaling & diagonal balancing enabled, with scaling factor=%g, its=%" PetscInt_FMT " and lambda=%g\n",(double)pep->sfactor,pep->sits,(double)pep->slambda)); | |
87 | break; | ||
88 | } | ||
89 |
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.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," selected portion of the spectrum: ")); |
90 |
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.
|
15 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_FALSE)); |
91 |
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.
|
15 | PetscCall(SlepcSNPrintfScalar(str,sizeof(str),pep->target,PETSC_FALSE)); |
92 |
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.
|
15 | if (!pep->which) PetscCall(PetscViewerASCIIPrintf(viewer,"not yet set\n")); |
93 |
2/12✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
15 | else switch (pep->which) { |
94 | ✗ | case PEP_WHICH_USER: | |
95 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"user defined\n")); | |
96 | break; | ||
97 | ✗ | case PEP_TARGET_MAGNITUDE: | |
98 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (in magnitude)\n",str)); | |
99 | break; | ||
100 | ✗ | case PEP_TARGET_REAL: | |
101 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (along the real axis)\n",str)); | |
102 | break; | ||
103 | ✗ | case PEP_TARGET_IMAGINARY: | |
104 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (along the imaginary axis)\n",str)); | |
105 | break; | ||
106 | 5 | case PEP_LARGEST_MAGNITUDE: | |
107 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerASCIIPrintf(viewer,"largest eigenvalues in magnitude\n")); |
108 | break; | ||
109 | ✗ | case PEP_SMALLEST_MAGNITUDE: | |
110 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"smallest eigenvalues in magnitude\n")); | |
111 | break; | ||
112 | 10 | case PEP_LARGEST_REAL: | |
113 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscViewerASCIIPrintf(viewer,"largest real parts\n")); |
114 | break; | ||
115 | ✗ | case PEP_SMALLEST_REAL: | |
116 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"smallest real parts\n")); | |
117 | break; | ||
118 | ✗ | case PEP_LARGEST_IMAGINARY: | |
119 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"largest imaginary parts\n")); | |
120 | break; | ||
121 | ✗ | case PEP_SMALLEST_IMAGINARY: | |
122 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"smallest imaginary parts\n")); | |
123 | break; | ||
124 | ✗ | case PEP_ALL: | |
125 | ✗ | if (pep->inta || pep->intb) PetscCall(PetscViewerASCIIPrintf(viewer,"all eigenvalues in interval [%g,%g]\n",(double)pep->inta,(double)pep->intb)); | |
126 | ✗ | else PetscCall(PetscViewerASCIIPrintf(viewer,"all eigenvalues in the region\n")); | |
127 | break; | ||
128 | } | ||
129 |
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.
|
15 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_TRUE)); |
130 |
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.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," number of eigenvalues (nev): %" PetscInt_FMT "\n",pep->nev)); |
131 |
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.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," number of column vectors (ncv): %" PetscInt_FMT "\n",pep->ncv)); |
132 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," maximum dimension of projected problem (mpd): %" PetscInt_FMT "\n",pep->mpd)); |
133 |
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.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," maximum number of iterations: %" PetscInt_FMT "\n",pep->max_it)); |
134 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," tolerance: %g\n",(double)pep->tol)); |
135 |
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.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," convergence test: ")); |
136 |
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.
|
15 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_FALSE)); |
137 |
2/5✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
15 | switch (pep->conv) { |
138 | ✗ | case PEP_CONV_ABS: | |
139 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"absolute\n"));break; | |
140 | 10 | case PEP_CONV_REL: | |
141 |
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(PetscViewerASCIIPrintf(viewer,"relative to the eigenvalue\n"));break; |
142 | 5 | case PEP_CONV_NORM: | |
143 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerASCIIPrintf(viewer,"relative to the matrix norms\n")); |
144 |
1/2✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
|
5 | if (pep->nrma) { |
145 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerASCIIPrintf(viewer," computed matrix norms: %g",(double)pep->nrma[0])); |
146 |
7/8✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 1 times.
|
15 | for (i=1;i<pep->nmat;i++) PetscCall(PetscViewerASCIIPrintf(viewer,", %g",(double)pep->nrma[i])); |
147 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n")); |
148 | } | ||
149 | break; | ||
150 | ✗ | case PEP_CONV_USER: | |
151 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"user-defined\n"));break; | |
152 | } | ||
153 |
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.
|
15 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_TRUE)); |
154 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(PetscViewerASCIIPrintf(viewer," extraction type: %s\n",PEPExtractTypes[pep->extract])); |
155 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
15 | if (pep->refine) { |
156 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," iterative refinement: %s, with %s scheme\n",PEPRefineTypes[pep->refine],PEPRefineSchemes[pep->scheme])); | |
157 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," refinement stopping criterion: tol=%g, its=%" PetscInt_FMT "\n",(double)pep->rtol,pep->rits)); | |
158 | ✗ | if (pep->npart>1) PetscCall(PetscViewerASCIIPrintf(viewer," splitting communicator in %" PetscInt_FMT " partitions for refinement\n",pep->npart)); | |
159 | } | ||
160 |
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.
|
15 | if (pep->nini) PetscCall(PetscViewerASCIIPrintf(viewer," dimension of user-provided initial space: %" PetscInt_FMT "\n",PetscAbs(pep->nini))); |
161 | ✗ | } else PetscTryTypeMethod(pep,view,viewer); | |
162 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(PetscViewerPushFormat(viewer,PETSC_VIEWER_ASCII_INFO)); |
163 |
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.
|
15 | if (!pep->V) PetscCall(PEPGetBV(pep,&pep->V)); |
164 |
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.
|
15 | PetscCall(BVView(pep->V,viewer)); |
165 |
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.
|
15 | if (!pep->rg) PetscCall(PEPGetRG(pep,&pep->rg)); |
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.
|
15 | PetscCall(RGIsTrivial(pep->rg,&istrivial)); |
167 |
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.
|
15 | if (!istrivial) PetscCall(RGView(pep->rg,viewer)); |
168 |
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.
|
15 | PetscCall(PetscObjectTypeCompare((PetscObject)pep,PEPLINEAR,&islinear)); |
169 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
15 | if (!islinear) { |
170 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
15 | if (!pep->ds) PetscCall(PEPGetDS(pep,&pep->ds)); |
171 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(DSView(pep->ds,viewer)); |
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.
|
15 | PetscCall(PetscViewerPopFormat(viewer)); |
174 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
15 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
175 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(STView(pep->st,viewer)); |
176 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
15 | if (pep->refine!=PEP_REFINE_NONE) { |
177 | ✗ | PetscCall(PetscViewerASCIIPushTab(viewer)); | |
178 | ✗ | if (pep->npart>1) { | |
179 | ✗ | if (pep->refinesubc->color==0) { | |
180 | ✗ | PetscCall(PetscSubcommGetChild(pep->refinesubc,&child)); | |
181 | ✗ | PetscCall(PetscViewerASCIIGetStdout(child,&sviewer)); | |
182 | ✗ | PetscCall(KSPView(pep->refineksp,sviewer)); | |
183 | } | ||
184 | ✗ | } else PetscCall(KSPView(pep->refineksp,viewer)); | |
185 | ✗ | PetscCall(PetscViewerASCIIPopTab(viewer)); | |
186 | } | ||
187 |
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.
|
3 | PetscFunctionReturn(PETSC_SUCCESS); |
188 | } | ||
189 | |||
190 | /*@ | ||
191 | PEPViewFromOptions - View from options | ||
192 | |||
193 | Collective | ||
194 | |||
195 | Input Parameters: | ||
196 | + pep - the eigensolver context | ||
197 | . obj - optional object | ||
198 | - name - command line option | ||
199 | |||
200 | Level: intermediate | ||
201 | |||
202 | .seealso: PEPView(), PEPCreate() | ||
203 | @*/ | ||
204 | 3912 | PetscErrorCode PEPViewFromOptions(PEP pep,PetscObject obj,const char name[]) | |
205 | { | ||
206 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
3912 | PetscFunctionBegin; |
207 |
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.
|
3912 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
208 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
3912 | PetscCall(PetscObjectViewFromOptions((PetscObject)pep,obj,name)); |
209 |
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.
|
764 | PetscFunctionReturn(PETSC_SUCCESS); |
210 | } | ||
211 | |||
212 | /*@ | ||
213 | PEPConvergedReasonView - Displays the reason a PEP solve converged or diverged. | ||
214 | |||
215 | Collective | ||
216 | |||
217 | Input Parameters: | ||
218 | + pep - the eigensolver context | ||
219 | - viewer - the viewer to display the reason | ||
220 | |||
221 | Options Database Keys: | ||
222 | . -pep_converged_reason - print reason for convergence, and number of iterations | ||
223 | |||
224 | Note: | ||
225 | To change the format of the output call PetscViewerPushFormat(viewer,format) before | ||
226 | this call. Use PETSC_VIEWER_DEFAULT for the default, use PETSC_VIEWER_FAILED to only | ||
227 | display a reason if it fails. The latter can be set in the command line with | ||
228 | -pep_converged_reason ::failed | ||
229 | |||
230 | Level: intermediate | ||
231 | |||
232 | .seealso: PEPSetConvergenceTest(), PEPSetTolerances(), PEPGetIterationNumber(), PEPConvergedReasonViewFromOptions() | ||
233 | @*/ | ||
234 | 50 | PetscErrorCode PEPConvergedReasonView(PEP pep,PetscViewer viewer) | |
235 | { | ||
236 | 50 | PetscBool isAscii; | |
237 | 50 | PetscViewerFormat format; | |
238 | |||
239 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
50 | PetscFunctionBegin; |
240 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
50 | if (!viewer) viewer = PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)pep)); |
241 |
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(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isAscii)); |
242 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
50 | if (isAscii) { |
243 |
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(PetscViewerGetFormat(viewer,&format)); |
244 |
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(PetscViewerASCIIAddTab(viewer,((PetscObject)pep)->tablevel)); |
245 |
10/14✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 8 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
60 | if (pep->reason > 0 && format != PETSC_VIEWER_FAILED) PetscCall(PetscViewerASCIIPrintf(viewer,"%s Polynomial eigensolve converged (%" PetscInt_FMT " eigenpair%s) due to %s; iterations %" PetscInt_FMT "\n",((PetscObject)pep)->prefix?((PetscObject)pep)->prefix:"",pep->nconv,(pep->nconv>1)?"s":"",PEPConvergedReasons[pep->reason],pep->its)); |
246 | ✗ | else if (pep->reason <= 0) PetscCall(PetscViewerASCIIPrintf(viewer,"%s Polynomial eigensolve did not converge due to %s; iterations %" PetscInt_FMT "\n",((PetscObject)pep)->prefix?((PetscObject)pep)->prefix:"",PEPConvergedReasons[pep->reason],pep->its)); | |
247 |
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(PetscViewerASCIISubtractTab(viewer,((PetscObject)pep)->tablevel)); |
248 | } | ||
249 |
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); |
250 | } | ||
251 | |||
252 | /*@ | ||
253 | PEPConvergedReasonViewFromOptions - Processes command line options to determine if/how | ||
254 | the PEP converged reason is to be viewed. | ||
255 | |||
256 | Collective | ||
257 | |||
258 | Input Parameter: | ||
259 | . pep - the eigensolver context | ||
260 | |||
261 | Level: developer | ||
262 | |||
263 | .seealso: PEPConvergedReasonView() | ||
264 | @*/ | ||
265 | 1956 | PetscErrorCode PEPConvergedReasonViewFromOptions(PEP pep) | |
266 | { | ||
267 | 1956 | PetscViewer viewer; | |
268 | 1956 | PetscBool flg; | |
269 | 1956 | static PetscBool incall = PETSC_FALSE; | |
270 | 1956 | PetscViewerFormat format; | |
271 | |||
272 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1956 | PetscFunctionBegin; |
273 |
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.
|
1956 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
274 | 1956 | incall = PETSC_TRUE; | |
275 |
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(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,"-pep_converged_reason",&viewer,&format,&flg)); |
276 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1956 | if (flg) { |
277 |
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(PetscViewerPushFormat(viewer,format)); |
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.
|
10 | PetscCall(PEPConvergedReasonView(pep,viewer)); |
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.
|
10 | PetscCall(PetscViewerPopFormat(viewer)); |
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.
|
10 | PetscCall(PetscViewerDestroy(&viewer)); |
281 | } | ||
282 | 1956 | incall = PETSC_FALSE; | |
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.
|
1956 | PetscFunctionReturn(PETSC_SUCCESS); |
284 | } | ||
285 | |||
286 | 1624 | static PetscErrorCode PEPErrorView_ASCII(PEP pep,PEPErrorType etype,PetscViewer viewer) | |
287 | { | ||
288 | 1624 | PetscReal error; | |
289 | 1624 | PetscInt i,j,k,nvals; | |
290 | |||
291 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1624 | PetscFunctionBegin; |
292 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1624 | nvals = (pep->which==PEP_ALL)? pep->nconv: pep->nev; |
293 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
|
1624 | if (pep->which!=PEP_ALL && pep->nconv<pep->nev) { |
294 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," Problem: less than %" PetscInt_FMT " eigenvalues converged\n\n",pep->nev)); | |
295 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
296 | } | ||
297 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
1624 | if (pep->which==PEP_ALL && !nvals) { |
298 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," No eigenvalues have been found\n\n")); | |
299 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
300 | } | ||
301 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
10415 | for (i=0;i<nvals;i++) { |
302 |
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.
|
8791 | PetscCall(PEPComputeError(pep,i,etype,&error)); |
303 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
8791 | if (error>=5.0*pep->tol) { |
304 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," Problem: some of the first %" PetscInt_FMT " relative errors are higher than the tolerance\n\n",nvals)); | |
305 |
0/12✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ 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.
|
1728 | PetscFunctionReturn(PETSC_SUCCESS); |
306 | } | ||
307 | } | ||
308 |
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.
|
1624 | if (pep->which==PEP_ALL) PetscCall(PetscViewerASCIIPrintf(viewer," Found %" PetscInt_FMT " eigenvalues, all of them computed up to the required tolerance:",nvals)); |
309 |
3/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
1489 | else PetscCall(PetscViewerASCIIPrintf(viewer," All requested eigenvalues computed up to the required tolerance:")); |
310 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
3566 | for (i=0;i<=(nvals-1)/8;i++) { |
311 |
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.
|
1942 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n ")); |
312 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
10733 | for (j=0;j<PetscMin(8,nvals-8*i);j++) { |
313 | 8791 | k = pep->perm[8*i+j]; | |
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.
|
8791 | PetscCall(SlepcPrintEigenvalueASCII(viewer,pep->eigr[k],pep->eigi[k])); |
315 |
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.
|
8791 | if (8*i+j+1<nvals) PetscCall(PetscViewerASCIIPrintf(viewer,", ")); |
316 | } | ||
317 | } | ||
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.
|
1624 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n\n")); |
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.
|
318 | PetscFunctionReturn(PETSC_SUCCESS); |
320 | } | ||
321 | |||
322 | 35 | static PetscErrorCode PEPErrorView_DETAIL(PEP pep,PEPErrorType etype,PetscViewer viewer) | |
323 | { | ||
324 | 35 | PetscReal error,re,im; | |
325 | 35 | PetscScalar kr,ki; | |
326 | 35 | PetscInt i; | |
327 | 35 | char ex[30],sep[]=" ---------------------- --------------------\n"; | |
328 | |||
329 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
35 | PetscFunctionBegin; |
330 |
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.
|
35 | if (!pep->nconv) PetscFunctionReturn(PETSC_SUCCESS); |
331 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
25 | switch (etype) { |
332 | ✗ | case PEP_ERROR_ABSOLUTE: | |
333 | ✗ | PetscCall(PetscSNPrintf(ex,sizeof(ex)," ||P(k)x||")); | |
334 | break; | ||
335 | 15 | case PEP_ERROR_RELATIVE: | |
336 |
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.
|
15 | PetscCall(PetscSNPrintf(ex,sizeof(ex),"||P(k)x||/||kx||")); |
337 | break; | ||
338 | 10 | case PEP_ERROR_BACKWARD: | |
339 |
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(PetscSNPrintf(ex,sizeof(ex)," eta(x,k)")); |
340 | break; | ||
341 | } | ||
342 |
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.
|
25 | PetscCall(PetscViewerASCIIPrintf(viewer,"%s k %s\n%s",sep,ex,sep)); |
343 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
200 | for (i=0;i<pep->nconv;i++) { |
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.
|
175 | PetscCall(PEPGetEigenpair(pep,i,&kr,&ki,NULL,NULL)); |
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.
|
175 | PetscCall(PEPComputeError(pep,i,etype,&error)); |
346 | #if defined(PETSC_USE_COMPLEX) | ||
347 | 75 | re = PetscRealPart(kr); | |
348 | 75 | im = PetscImaginaryPart(kr); | |
349 | #else | ||
350 | 100 | re = kr; | |
351 | 100 | im = ki; | |
352 | #endif | ||
353 |
6/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
175 | if (im!=0.0) PetscCall(PetscViewerASCIIPrintf(viewer," % 9f%+9fi %12g\n",(double)re,(double)im,(double)error)); |
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.
|
175 | else PetscCall(PetscViewerASCIIPrintf(viewer," % 12f %12g\n",(double)re,(double)error)); |
355 | } | ||
356 |
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.
|
25 | PetscCall(PetscViewerASCIIPrintf(viewer,"%s",sep)); |
357 |
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.
|
5 | PetscFunctionReturn(PETSC_SUCCESS); |
358 | } | ||
359 | |||
360 | 10 | static PetscErrorCode PEPErrorView_MATLAB(PEP pep,PEPErrorType etype,PetscViewer viewer) | |
361 | { | ||
362 | 10 | PetscReal error; | |
363 | 10 | PetscInt i; | |
364 | 10 | const char *name; | |
365 | |||
366 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
367 |
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(PetscObjectGetName((PetscObject)pep,&name)); |
368 |
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(PetscViewerASCIIPrintf(viewer,"Error_%s = [\n",name)); |
369 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
130 | for (i=0;i<pep->nconv;i++) { |
370 |
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(PEPComputeError(pep,i,etype,&error)); |
371 |
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(PetscViewerASCIIPrintf(viewer,"%18.16e\n",(double)error)); |
372 | } | ||
373 |
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(PetscViewerASCIIPrintf(viewer,"];\n")); |
374 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
375 | } | ||
376 | |||
377 | /*@ | ||
378 | PEPErrorView - Displays the errors associated with the computed solution | ||
379 | (as well as the eigenvalues). | ||
380 | |||
381 | Collective | ||
382 | |||
383 | Input Parameters: | ||
384 | + pep - the eigensolver context | ||
385 | . etype - error type | ||
386 | - viewer - optional visualization context | ||
387 | |||
388 | Options Database Keys: | ||
389 | + -pep_error_absolute - print absolute errors of each eigenpair | ||
390 | . -pep_error_relative - print relative errors of each eigenpair | ||
391 | - -pep_error_backward - print backward errors of each eigenpair | ||
392 | |||
393 | Notes: | ||
394 | By default, this function checks the error of all eigenpairs and prints | ||
395 | the eigenvalues if all of them are below the requested tolerance. | ||
396 | If the viewer has format=PETSC_VIEWER_ASCII_INFO_DETAIL then a table with | ||
397 | eigenvalues and corresponding errors is printed. | ||
398 | |||
399 | Level: intermediate | ||
400 | |||
401 | .seealso: PEPSolve(), PEPValuesView(), PEPVectorsView() | ||
402 | @*/ | ||
403 | 1669 | PetscErrorCode PEPErrorView(PEP pep,PEPErrorType etype,PetscViewer viewer) | |
404 | { | ||
405 | 1669 | PetscBool isascii; | |
406 | 1669 | PetscViewerFormat format; | |
407 | |||
408 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1669 | PetscFunctionBegin; |
409 |
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.
|
1669 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
410 |
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.
|
1669 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)pep),&viewer)); |
411 |
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.
|
1669 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,3); |
412 |
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.
|
1669 | PetscCheckSameComm(pep,1,viewer,3); |
413 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1669 | PEPCheckSolved(pep,1); |
414 |
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.
|
1669 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
415 |
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.
|
1669 | if (!isascii) PetscFunctionReturn(PETSC_SUCCESS); |
416 | |||
417 |
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.
|
1669 | PetscCall(PetscViewerGetFormat(viewer,&format)); |
418 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
1669 | switch (format) { |
419 | 1624 | case PETSC_VIEWER_DEFAULT: | |
420 | case PETSC_VIEWER_ASCII_INFO: | ||
421 |
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.
|
1624 | PetscCall(PEPErrorView_ASCII(pep,etype,viewer)); |
422 | break; | ||
423 | 35 | case PETSC_VIEWER_ASCII_INFO_DETAIL: | |
424 |
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.
|
35 | PetscCall(PEPErrorView_DETAIL(pep,etype,viewer)); |
425 | break; | ||
426 | 10 | case PETSC_VIEWER_ASCII_MATLAB: | |
427 |
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(PEPErrorView_MATLAB(pep,etype,viewer)); |
428 | break; | ||
429 | ✗ | default: | |
430 | ✗ | PetscCall(PetscInfo(pep,"Unsupported viewer format %s\n",PetscViewerFormats[format])); | |
431 | } | ||
432 |
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.
|
327 | PetscFunctionReturn(PETSC_SUCCESS); |
433 | } | ||
434 | |||
435 | /*@ | ||
436 | PEPErrorViewFromOptions - Processes command line options to determine if/how | ||
437 | the errors of the computed solution are to be viewed. | ||
438 | |||
439 | Collective | ||
440 | |||
441 | Input Parameter: | ||
442 | . pep - the eigensolver context | ||
443 | |||
444 | Level: developer | ||
445 | |||
446 | .seealso: PEPErrorView() | ||
447 | @*/ | ||
448 | 1956 | PetscErrorCode PEPErrorViewFromOptions(PEP pep) | |
449 | { | ||
450 | 1956 | PetscViewer viewer; | |
451 | 1956 | PetscBool flg; | |
452 | 1956 | static PetscBool incall = PETSC_FALSE; | |
453 | 1956 | PetscViewerFormat format; | |
454 | |||
455 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1956 | PetscFunctionBegin; |
456 |
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.
|
1956 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
457 | 1956 | incall = PETSC_TRUE; | |
458 |
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(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,"-pep_error_absolute",&viewer,&format,&flg)); |
459 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1956 | if (flg) { |
460 |
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(PetscViewerPushFormat(viewer,format)); |
461 |
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(PEPErrorView(pep,PEP_ERROR_ABSOLUTE,viewer)); |
462 |
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(PetscViewerPopFormat(viewer)); |
463 |
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(PetscViewerDestroy(&viewer)); |
464 | } | ||
465 |
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(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,"-pep_error_relative",&viewer,&format,&flg)); |
466 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
|
1956 | if (flg) { |
467 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerPushFormat(viewer,format)); |
468 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PEPErrorView(pep,PEP_ERROR_RELATIVE,viewer)); |
469 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerPopFormat(viewer)); |
470 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(PetscViewerDestroy(&viewer)); |
471 | } | ||
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.
|
1956 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,"-pep_error_backward",&viewer,&format,&flg)); |
473 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1956 | if (flg) { |
474 |
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(PetscViewerPushFormat(viewer,format)); |
475 |
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(PEPErrorView(pep,PEP_ERROR_BACKWARD,viewer)); |
476 |
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(PetscViewerPopFormat(viewer)); |
477 |
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(PetscViewerDestroy(&viewer)); |
478 | } | ||
479 | 1956 | incall = PETSC_FALSE; | |
480 |
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.
|
1956 | PetscFunctionReturn(PETSC_SUCCESS); |
481 | } | ||
482 | |||
483 | 16 | static PetscErrorCode PEPValuesView_DRAW(PEP pep,PetscViewer viewer) | |
484 | { | ||
485 | 16 | PetscDraw draw; | |
486 | 16 | PetscDrawSP drawsp; | |
487 | 16 | PetscReal re,im; | |
488 | 16 | PetscInt i,k; | |
489 | |||
490 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
491 |
2/14✓ Branch 0 taken 7 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.
|
16 | if (!pep->nconv) PetscFunctionReturn(PETSC_SUCCESS); |
492 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
16 | PetscCall(PetscViewerDrawGetDraw(viewer,0,&draw)); |
493 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
16 | PetscCall(PetscDrawSetTitle(draw,"Computed Eigenvalues")); |
494 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
16 | PetscCall(PetscDrawSPCreate(draw,1,&drawsp)); |
495 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 8 times.
|
141 | for (i=0;i<pep->nconv;i++) { |
496 | 125 | k = pep->perm[i]; | |
497 | #if defined(PETSC_USE_COMPLEX) | ||
498 | 45 | re = PetscRealPart(pep->eigr[k]); | |
499 | 45 | im = PetscImaginaryPart(pep->eigr[k]); | |
500 | #else | ||
501 | 80 | re = pep->eigr[k]; | |
502 | 80 | im = pep->eigi[k]; | |
503 | #endif | ||
504 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
125 | PetscCall(PetscDrawSPAddPoint(drawsp,&re,&im)); |
505 | } | ||
506 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
16 | PetscCall(PetscDrawSPDraw(drawsp,PETSC_TRUE)); |
507 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
16 | PetscCall(PetscDrawSPSave(drawsp)); |
508 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
16 | PetscCall(PetscDrawSPDestroy(&drawsp)); |
509 |
6/12✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
510 | } | ||
511 | |||
512 | 10 | static PetscErrorCode PEPValuesView_BINARY(PEP pep,PetscViewer viewer) | |
513 | { | ||
514 | #if defined(PETSC_HAVE_COMPLEX) | ||
515 | 10 | PetscInt i,k; | |
516 | 10 | PetscComplex *ev; | |
517 | #endif | ||
518 | |||
519 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
520 | #if defined(PETSC_HAVE_COMPLEX) | ||
521 |
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(PetscMalloc1(pep->nconv,&ev)); |
522 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
130 | for (i=0;i<pep->nconv;i++) { |
523 | 120 | k = pep->perm[i]; | |
524 | #if defined(PETSC_USE_COMPLEX) | ||
525 | 60 | ev[i] = pep->eigr[k]; | |
526 | #else | ||
527 | 60 | ev[i] = PetscCMPLX(pep->eigr[k],pep->eigi[k]); | |
528 | #endif | ||
529 | } | ||
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.
|
10 | PetscCall(PetscViewerBinaryWrite(viewer,ev,pep->nconv,PETSC_COMPLEX)); |
531 |
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.
|
10 | PetscCall(PetscFree(ev)); |
532 | #endif | ||
533 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
534 | } | ||
535 | |||
536 | #if defined(PETSC_HAVE_HDF5) | ||
537 | static PetscErrorCode PEPValuesView_HDF5(PEP pep,PetscViewer viewer) | ||
538 | { | ||
539 | PetscInt i,k,n,N; | ||
540 | PetscMPIInt rank; | ||
541 | Vec v; | ||
542 | char vname[30]; | ||
543 | const char *ename; | ||
544 | |||
545 | PetscFunctionBegin; | ||
546 | PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)pep),&rank)); | ||
547 | N = pep->nconv; | ||
548 | n = rank? 0: N; | ||
549 | /* create a vector containing the eigenvalues */ | ||
550 | PetscCall(VecCreateMPI(PetscObjectComm((PetscObject)pep),n,N,&v)); | ||
551 | PetscCall(PetscObjectGetName((PetscObject)pep,&ename)); | ||
552 | PetscCall(PetscSNPrintf(vname,sizeof(vname),"eigr_%s",ename)); | ||
553 | PetscCall(PetscObjectSetName((PetscObject)v,vname)); | ||
554 | if (!rank) { | ||
555 | for (i=0;i<pep->nconv;i++) { | ||
556 | k = pep->perm[i]; | ||
557 | PetscCall(VecSetValue(v,i,pep->eigr[k],INSERT_VALUES)); | ||
558 | } | ||
559 | } | ||
560 | PetscCall(VecAssemblyBegin(v)); | ||
561 | PetscCall(VecAssemblyEnd(v)); | ||
562 | PetscCall(VecView(v,viewer)); | ||
563 | #if !defined(PETSC_USE_COMPLEX) | ||
564 | /* in real scalars write the imaginary part as a separate vector */ | ||
565 | PetscCall(PetscSNPrintf(vname,sizeof(vname),"eigi_%s",ename)); | ||
566 | PetscCall(PetscObjectSetName((PetscObject)v,vname)); | ||
567 | if (!rank) { | ||
568 | for (i=0;i<pep->nconv;i++) { | ||
569 | k = pep->perm[i]; | ||
570 | PetscCall(VecSetValue(v,i,pep->eigi[k],INSERT_VALUES)); | ||
571 | } | ||
572 | } | ||
573 | PetscCall(VecAssemblyBegin(v)); | ||
574 | PetscCall(VecAssemblyEnd(v)); | ||
575 | PetscCall(VecView(v,viewer)); | ||
576 | #endif | ||
577 | PetscCall(VecDestroy(&v)); | ||
578 | PetscFunctionReturn(PETSC_SUCCESS); | ||
579 | } | ||
580 | #endif | ||
581 | |||
582 | 10 | static PetscErrorCode PEPValuesView_ASCII(PEP pep,PetscViewer viewer) | |
583 | { | ||
584 | 10 | PetscInt i,k; | |
585 | |||
586 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
587 |
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(PetscViewerASCIIPrintf(viewer,"Eigenvalues = \n")); |
588 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
130 | for (i=0;i<pep->nconv;i++) { |
589 | 120 | k = pep->perm[i]; | |
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.
|
120 | PetscCall(PetscViewerASCIIPrintf(viewer," ")); |
591 |
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(SlepcPrintEigenvalueASCII(viewer,pep->eigr[k],pep->eigi[k])); |
592 |
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(PetscViewerASCIIPrintf(viewer,"\n")); |
593 | } | ||
594 |
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(PetscViewerASCIIPrintf(viewer,"\n")); |
595 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
596 | } | ||
597 | |||
598 | 10 | static PetscErrorCode PEPValuesView_MATLAB(PEP pep,PetscViewer viewer) | |
599 | { | ||
600 | 10 | PetscInt i,k; | |
601 | 10 | PetscReal re,im; | |
602 | 10 | const char *name; | |
603 | |||
604 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
605 |
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(PetscObjectGetName((PetscObject)pep,&name)); |
606 |
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(PetscViewerASCIIPrintf(viewer,"Lambda_%s = [\n",name)); |
607 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
30 | for (i=0;i<pep->nconv;i++) { |
608 | 20 | k = pep->perm[i]; | |
609 | #if defined(PETSC_USE_COMPLEX) | ||
610 | 10 | re = PetscRealPart(pep->eigr[k]); | |
611 | 10 | im = PetscImaginaryPart(pep->eigr[k]); | |
612 | #else | ||
613 | 10 | re = pep->eigr[k]; | |
614 | 10 | im = pep->eigi[k]; | |
615 | #endif | ||
616 |
6/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
20 | if (im!=0.0) PetscCall(PetscViewerASCIIPrintf(viewer,"%18.16e%+18.16ei\n",(double)re,(double)im)); |
617 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
20 | else PetscCall(PetscViewerASCIIPrintf(viewer,"%18.16e\n",(double)re)); |
618 | } | ||
619 |
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(PetscViewerASCIIPrintf(viewer,"];\n")); |
620 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
621 | } | ||
622 | |||
623 | /*@ | ||
624 | PEPValuesView - Displays the computed eigenvalues in a viewer. | ||
625 | |||
626 | Collective | ||
627 | |||
628 | Input Parameters: | ||
629 | + pep - the eigensolver context | ||
630 | - viewer - the viewer | ||
631 | |||
632 | Options Database Key: | ||
633 | . -pep_view_values - print computed eigenvalues | ||
634 | |||
635 | Level: intermediate | ||
636 | |||
637 | .seealso: PEPSolve(), PEPVectorsView(), PEPErrorView() | ||
638 | @*/ | ||
639 | 46 | PetscErrorCode PEPValuesView(PEP pep,PetscViewer viewer) | |
640 | { | ||
641 | 46 | PetscBool isascii,isdraw,isbinary; | |
642 | 46 | PetscViewerFormat format; | |
643 | #if defined(PETSC_HAVE_HDF5) | ||
644 | PetscBool ishdf5; | ||
645 | #endif | ||
646 | |||
647 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
46 | PetscFunctionBegin; |
648 |
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.
|
46 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
649 |
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.
|
46 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)pep),&viewer)); |
650 |
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.
|
46 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2); |
651 |
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.
|
46 | PetscCheckSameComm(pep,1,viewer,2); |
652 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
46 | PEPCheckSolved(pep,1); |
653 |
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.
|
46 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERDRAW,&isdraw)); |
654 |
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.
|
46 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERBINARY,&isbinary)); |
655 | #if defined(PETSC_HAVE_HDF5) | ||
656 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERHDF5,&ishdf5)); | ||
657 | #endif | ||
658 |
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.
|
46 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
659 |
6/8✓ Branch 0 taken 8 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
46 | if (isdraw) PetscCall(PEPValuesView_DRAW(pep,viewer)); |
660 |
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.
|
30 | else if (isbinary) PetscCall(PEPValuesView_BINARY(pep,viewer)); |
661 | #if defined(PETSC_HAVE_HDF5) | ||
662 | else if (ishdf5) PetscCall(PEPValuesView_HDF5(pep,viewer)); | ||
663 | #endif | ||
664 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
20 | else if (isascii) { |
665 |
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.
|
20 | PetscCall(PetscViewerGetFormat(viewer,&format)); |
666 |
2/3✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | switch (format) { |
667 | 10 | case PETSC_VIEWER_DEFAULT: | |
668 | case PETSC_VIEWER_ASCII_INFO: | ||
669 | case PETSC_VIEWER_ASCII_INFO_DETAIL: | ||
670 |
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(PEPValuesView_ASCII(pep,viewer)); |
671 | break; | ||
672 | 10 | case PETSC_VIEWER_ASCII_MATLAB: | |
673 |
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(PEPValuesView_MATLAB(pep,viewer)); |
674 | break; | ||
675 | ✗ | default: | |
676 | ✗ | PetscCall(PetscInfo(pep,"Unsupported viewer format %s\n",PetscViewerFormats[format])); | |
677 | } | ||
678 | } | ||
679 |
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.
|
8 | PetscFunctionReturn(PETSC_SUCCESS); |
680 | } | ||
681 | |||
682 | /*@ | ||
683 | PEPValuesViewFromOptions - Processes command line options to determine if/how | ||
684 | the computed eigenvalues are to be viewed. | ||
685 | |||
686 | Collective | ||
687 | |||
688 | Input Parameter: | ||
689 | . pep - the eigensolver context | ||
690 | |||
691 | Level: developer | ||
692 | |||
693 | .seealso: PEPValuesView() | ||
694 | @*/ | ||
695 | 1956 | PetscErrorCode PEPValuesViewFromOptions(PEP pep) | |
696 | { | ||
697 | 1956 | PetscViewer viewer; | |
698 | 1956 | PetscBool flg; | |
699 | 1956 | static PetscBool incall = PETSC_FALSE; | |
700 | 1956 | PetscViewerFormat format; | |
701 | |||
702 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1956 | PetscFunctionBegin; |
703 |
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.
|
1956 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
704 | 1956 | incall = PETSC_TRUE; | |
705 |
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(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,"-pep_view_values",&viewer,&format,&flg)); |
706 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1956 | if (flg) { |
707 |
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.
|
46 | PetscCall(PetscViewerPushFormat(viewer,format)); |
708 |
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.
|
46 | PetscCall(PEPValuesView(pep,viewer)); |
709 |
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.
|
46 | PetscCall(PetscViewerPopFormat(viewer)); |
710 |
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.
|
46 | PetscCall(PetscViewerDestroy(&viewer)); |
711 | } | ||
712 | 1956 | incall = PETSC_FALSE; | |
713 |
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.
|
1956 | PetscFunctionReturn(PETSC_SUCCESS); |
714 | } | ||
715 | |||
716 | /*@ | ||
717 | PEPVectorsView - Outputs computed eigenvectors to a viewer. | ||
718 | |||
719 | Collective | ||
720 | |||
721 | Input Parameters: | ||
722 | + pep - the eigensolver context | ||
723 | - viewer - the viewer | ||
724 | |||
725 | Options Database Key: | ||
726 | . -pep_view_vectors - output eigenvectors. | ||
727 | |||
728 | Note: | ||
729 | If PETSc was configured with real scalars, complex conjugate eigenvectors | ||
730 | will be viewed as two separate real vectors, one containing the real part | ||
731 | and another one containing the imaginary part. | ||
732 | |||
733 | Level: intermediate | ||
734 | |||
735 | .seealso: PEPSolve(), PEPValuesView(), PEPErrorView() | ||
736 | @*/ | ||
737 | 10 | PetscErrorCode PEPVectorsView(PEP pep,PetscViewer viewer) | |
738 | { | ||
739 | 10 | PetscInt i,k; | |
740 | 10 | Vec xr,xi=NULL; | |
741 | |||
742 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
743 |
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); |
744 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
10 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)pep),&viewer)); |
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.
|
10 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2); |
746 |
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,viewer,2); |
747 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
10 | PEPCheckSolved(pep,1); |
748 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | if (pep->nconv) { |
749 |
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(PEPComputeVectors(pep)); |
750 |
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(BVCreateVec(pep->V,&xr)); |
751 | #if !defined(PETSC_USE_COMPLEX) | ||
752 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(BVCreateVec(pep->V,&xi)); |
753 | #endif | ||
754 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
25 | for (i=0;i<pep->nconv;i++) { |
755 | 15 | k = pep->perm[i]; | |
756 |
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.
|
15 | PetscCall(BV_GetEigenvector(pep->V,k,pep->eigi[k],xr,xi)); |
757 |
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.
|
15 | PetscCall(SlepcViewEigenvector(viewer,xr,xi,"X",i,(PetscObject)pep)); |
758 | } | ||
759 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(VecDestroy(&xr)); |
760 | #if !defined(PETSC_USE_COMPLEX) | ||
761 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
5 | PetscCall(VecDestroy(&xi)); |
762 | #endif | ||
763 | } | ||
764 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
765 | } | ||
766 | |||
767 | /*@ | ||
768 | PEPVectorsViewFromOptions - Processes command line options to determine if/how | ||
769 | the computed eigenvectors are to be viewed. | ||
770 | |||
771 | Collective | ||
772 | |||
773 | Input Parameter: | ||
774 | . pep - the eigensolver context | ||
775 | |||
776 | Level: developer | ||
777 | |||
778 | .seealso: PEPVectorsView() | ||
779 | @*/ | ||
780 | 1956 | PetscErrorCode PEPVectorsViewFromOptions(PEP pep) | |
781 | { | ||
782 | 1956 | PetscViewer viewer; | |
783 | 1956 | PetscBool flg = PETSC_FALSE; | |
784 | 1956 | static PetscBool incall = PETSC_FALSE; | |
785 | 1956 | PetscViewerFormat format; | |
786 | |||
787 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1956 | PetscFunctionBegin; |
788 |
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.
|
1956 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
789 | 1956 | incall = PETSC_TRUE; | |
790 |
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(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,"-pep_view_vectors",&viewer,&format,&flg)); |
791 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1956 | if (flg) { |
792 |
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(PetscViewerPushFormat(viewer,format)); |
793 |
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(PEPVectorsView(pep,viewer)); |
794 |
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(PetscViewerPopFormat(viewer)); |
795 |
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(PetscViewerDestroy(&viewer)); |
796 | } | ||
797 | 1956 | incall = PETSC_FALSE; | |
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.
|
1956 | PetscFunctionReturn(PETSC_SUCCESS); |
799 | } | ||
800 |