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 | EPS routines related to various viewers | ||
12 | */ | ||
13 | |||
14 | #include <slepc/private/epsimpl.h> /*I "slepceps.h" I*/ | ||
15 | #include <slepc/private/bvimpl.h> | ||
16 | #include <petscdraw.h> | ||
17 | |||
18 | /*@ | ||
19 | EPSView - Prints the EPS data structure. | ||
20 | |||
21 | Collective | ||
22 | |||
23 | Input Parameters: | ||
24 | + eps - the eigenproblem solver context | ||
25 | - viewer - optional visualization context | ||
26 | |||
27 | Options Database Key: | ||
28 | . -eps_view - Calls EPSView() at end of EPSSolve() | ||
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 | 79 | PetscErrorCode EPSView(EPS eps,PetscViewer viewer) | |
46 | { | ||
47 | 79 | const char *type=NULL,*extr=NULL,*bal=NULL; | |
48 | 79 | char str[50]; | |
49 | 79 | PetscBool isascii,isexternal,istrivial,isstruct=PETSC_FALSE,flg; | |
50 | 79 | Mat A; | |
51 | |||
52 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
79 | PetscFunctionBegin; |
53 |
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.
|
79 | PetscValidHeaderSpecific(eps,EPS_CLASSID,1); |
54 |
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.
|
79 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)eps),&viewer)); |
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.
|
79 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2); |
56 |
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.
|
79 | PetscCheckSameComm(eps,1,viewer,2); |
57 | |||
58 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
59 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
79 | if (isascii) { |
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.
|
79 | PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)eps,viewer)); |
61 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIPushTab(viewer)); |
62 |
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.
|
79 | PetscTryTypeMethod(eps,view,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.
|
79 | PetscCall(PetscViewerASCIIPopTab(viewer)); |
64 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
79 | if (eps->problem_type) { |
65 |
3/9✓ Branch 0 taken 10 times.
✓ Branch 1 taken 6 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
79 | switch (eps->problem_type) { |
66 | 51 | case EPS_HEP: type = SLEPC_STRING_HERMITIAN " eigenvalue problem"; break; | |
67 | 6 | case EPS_GHEP: type = "generalized " SLEPC_STRING_HERMITIAN " eigenvalue problem"; break; | |
68 | 22 | case EPS_NHEP: type = "non-" SLEPC_STRING_HERMITIAN " eigenvalue problem"; break; | |
69 | ✗ | case EPS_GNHEP: type = "generalized non-" SLEPC_STRING_HERMITIAN " eigenvalue problem"; break; | |
70 | ✗ | case EPS_PGNHEP: type = "generalized non-" SLEPC_STRING_HERMITIAN " eigenvalue problem with " SLEPC_STRING_HERMITIAN " positive definite B"; break; | |
71 | ✗ | case EPS_GHIEP: type = "generalized " SLEPC_STRING_HERMITIAN "-indefinite eigenvalue problem"; break; | |
72 | ✗ | case EPS_BSE: type = "structured Bethe-Salpeter eigenvalue problem"; break; | |
73 | ✗ | case EPS_HAMILT: type = "structured Hamiltonian eigenvalue problem"; break; | |
74 | } | ||
75 | } else type = "not yet set"; | ||
76 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIPrintf(viewer," problem type: %s\n",type)); |
77 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(EPSGetOperators(eps,&A,NULL)); |
78 |
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.
|
79 | if (A) PetscCall(SlepcCheckMatStruct(A,0,&isstruct)); |
79 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
79 | if (isstruct) { |
80 | ✗ | PetscCall(SlepcCheckMatStruct(A,SLEPC_MAT_STRUCT_BSE,&flg)); | |
81 | ✗ | if (flg) PetscCall(PetscViewerASCIIPrintf(viewer," matrix A has a Bethe-Salpeter structure\n")); | |
82 | ✗ | PetscCall(SlepcCheckMatStruct(A,SLEPC_MAT_STRUCT_HAMILT,&flg)); | |
83 | ✗ | if (flg) PetscCall(PetscViewerASCIIPrintf(viewer," matrix A has a Hamiltonian structure\n")); | |
84 | } | ||
85 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
79 | if (eps->extraction) { |
86 |
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.
|
20 | switch (eps->extraction) { |
87 | ✗ | case EPS_RITZ: extr = "Rayleigh-Ritz"; break; | |
88 | 20 | case EPS_HARMONIC: extr = "harmonic Ritz"; break; | |
89 | ✗ | case EPS_HARMONIC_RELATIVE: extr = "relative harmonic Ritz"; break; | |
90 | ✗ | case EPS_HARMONIC_RIGHT: extr = "right harmonic Ritz"; break; | |
91 | ✗ | case EPS_HARMONIC_LARGEST: extr = "largest harmonic Ritz"; break; | |
92 | ✗ | case EPS_REFINED: extr = "refined Ritz"; break; | |
93 | ✗ | case EPS_REFINED_HARMONIC: extr = "refined harmonic Ritz"; break; | |
94 | } | ||
95 |
4/6✓ Branch 0 taken 2 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(PetscViewerASCIIPrintf(viewer," extraction type: %s\n",extr)); |
96 | } | ||
97 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
79 | if (!eps->ishermitian && eps->balance!=EPS_BALANCE_NONE) { |
98 |
1/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
10 | switch (eps->balance) { |
99 | case EPS_BALANCE_NONE: break; | ||
100 | 10 | case EPS_BALANCE_ONESIDE: bal = "one-sided Krylov"; break; | |
101 | ✗ | case EPS_BALANCE_TWOSIDE: bal = "two-sided Krylov"; break; | |
102 | ✗ | case EPS_BALANCE_USER: bal = "user-defined matrix"; break; | |
103 | } | ||
104 |
4/6✓ Branch 0 taken 2 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," balancing enabled: %s",bal)); |
105 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_FALSE)); |
106 |
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 | if (eps->balance==EPS_BALANCE_ONESIDE || eps->balance==EPS_BALANCE_TWOSIDE) PetscCall(PetscViewerASCIIPrintf(viewer,", with its=%" PetscInt_FMT,eps->balance_its)); |
107 |
1/10✗ 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.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
10 | if (eps->balance==EPS_BALANCE_TWOSIDE && eps->balance_cutoff!=0.0) PetscCall(PetscViewerASCIIPrintf(viewer," and cutoff=%g",(double)eps->balance_cutoff)); |
108 |
4/6✓ Branch 0 taken 2 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(PetscViewerASCIIUseTabs(viewer,PETSC_TRUE)); |
109 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n")); |
110 | } | ||
111 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIPrintf(viewer," selected portion of the spectrum: ")); |
112 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(SlepcSNPrintfScalar(str,sizeof(str),eps->target,PETSC_FALSE)); |
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.
|
79 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_FALSE)); |
114 |
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.
|
79 | if (!eps->which) PetscCall(PetscViewerASCIIPrintf(viewer,"not yet set\n")); |
115 |
5/12✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
|
79 | else switch (eps->which) { |
116 | ✗ | case EPS_WHICH_USER: | |
117 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"user defined\n")); | |
118 | break; | ||
119 | 28 | case EPS_TARGET_MAGNITUDE: | |
120 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
28 | PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (in magnitude)\n",str)); |
121 | break; | ||
122 | ✗ | case EPS_TARGET_REAL: | |
123 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (along the real axis)\n",str)); | |
124 | break; | ||
125 | ✗ | case EPS_TARGET_IMAGINARY: | |
126 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (along the imaginary axis)\n",str)); | |
127 | break; | ||
128 | 20 | case EPS_LARGEST_MAGNITUDE: | |
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.
|
20 | PetscCall(PetscViewerASCIIPrintf(viewer,"largest eigenvalues in magnitude\n")); |
130 | break; | ||
131 | ✗ | case EPS_SMALLEST_MAGNITUDE: | |
132 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"smallest eigenvalues in magnitude\n")); | |
133 | break; | ||
134 | 22 | case EPS_LARGEST_REAL: | |
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.
|
22 | PetscCall(PetscViewerASCIIPrintf(viewer,"largest real parts\n")); |
136 | break; | ||
137 | 6 | case EPS_SMALLEST_REAL: | |
138 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
6 | PetscCall(PetscViewerASCIIPrintf(viewer,"smallest real parts\n")); |
139 | break; | ||
140 | ✗ | case EPS_LARGEST_IMAGINARY: | |
141 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"largest imaginary parts\n")); | |
142 | break; | ||
143 | ✗ | case EPS_SMALLEST_IMAGINARY: | |
144 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"smallest imaginary parts\n")); | |
145 | break; | ||
146 | 3 | case EPS_ALL: | |
147 |
5/10✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
|
3 | if (eps->inta || eps->intb) PetscCall(PetscViewerASCIIPrintf(viewer,"all eigenvalues in interval [%g,%g]\n",(double)eps->inta,(double)eps->intb)); |
148 | ✗ | else PetscCall(PetscViewerASCIIPrintf(viewer,"all eigenvalues in the region\n")); | |
149 | break; | ||
150 | } | ||
151 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_TRUE)); |
152 |
1/12✗ 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.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
79 | if (eps->twosided && eps->problem_type!=EPS_HEP && eps->problem_type!=EPS_GHEP) PetscCall(PetscViewerASCIIPrintf(viewer," using two-sided variant (for left eigenvectors)\n")); |
153 |
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.
|
79 | if (eps->purify) PetscCall(PetscViewerASCIIPrintf(viewer," postprocessing eigenvectors with purification\n")); |
154 |
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.
|
79 | if (eps->trueres) PetscCall(PetscViewerASCIIPrintf(viewer," computing true residuals explicitly\n")); |
155 |
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.
|
79 | if (eps->trackall) PetscCall(PetscViewerASCIIPrintf(viewer," computing all residuals (for tracking convergence)\n")); |
156 |
1/12✗ 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.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
79 | if (eps->stop==EPS_STOP_THRESHOLD) PetscCall(PetscViewerASCIIPrintf(viewer," computing eigenvalues %s the threshold: %g%s\n",(eps->which==EPS_SMALLEST_MAGNITUDE||eps->which==EPS_SMALLEST_REAL)?"below":"above",(double)eps->thres,eps->threlative?" (relative)":"")); |
157 |
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.
|
79 | if (eps->nev) PetscCall(PetscViewerASCIIPrintf(viewer," number of eigenvalues (nev): %" PetscInt_FMT "\n",eps->nev)); |
158 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIPrintf(viewer," number of column vectors (ncv): %" PetscInt_FMT "\n",eps->ncv)); |
159 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIPrintf(viewer," maximum dimension of projected problem (mpd): %" PetscInt_FMT "\n",eps->mpd)); |
160 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIPrintf(viewer," maximum number of iterations: %" PetscInt_FMT "\n",eps->max_it)); |
161 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIPrintf(viewer," tolerance: %g\n",(double)eps->tol)); |
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.
|
79 | PetscCall(PetscViewerASCIIPrintf(viewer," convergence test: ")); |
163 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_FALSE)); |
164 |
2/5✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
79 | switch (eps->conv) { |
165 | ✗ | case EPS_CONV_ABS: | |
166 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"absolute\n"));break; | |
167 | 59 | case EPS_CONV_REL: | |
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.
|
59 | PetscCall(PetscViewerASCIIPrintf(viewer,"relative to the eigenvalue\n"));break; |
169 | 20 | case EPS_CONV_NORM: | |
170 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
20 | PetscCall(PetscViewerASCIIPrintf(viewer,"relative to the eigenvalue and matrix norms\n")); |
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.
|
20 | PetscCall(PetscViewerASCIIPrintf(viewer," computed matrix norms: norm(A)=%g",(double)eps->nrma)); |
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.
|
20 | if (eps->isgeneralized) PetscCall(PetscViewerASCIIPrintf(viewer,", norm(B)=%g",(double)eps->nrmb)); |
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.
|
20 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n")); |
174 | break; | ||
175 | ✗ | case EPS_CONV_USER: | |
176 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"user-defined\n"));break; | |
177 | } | ||
178 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_TRUE)); |
179 |
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.
|
79 | if (eps->nini) PetscCall(PetscViewerASCIIPrintf(viewer," dimension of user-provided initial space: %" PetscInt_FMT "\n",PetscAbs(eps->nini))); |
180 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
79 | if (eps->ninil) PetscCall(PetscViewerASCIIPrintf(viewer," dimension of user-provided left initial space: %" PetscInt_FMT "\n",PetscAbs(eps->ninil))); |
181 |
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.
|
79 | if (eps->nds) PetscCall(PetscViewerASCIIPrintf(viewer," dimension of user-provided deflation space: %" PetscInt_FMT "\n",PetscAbs(eps->nds))); |
182 | ✗ | } else PetscTryTypeMethod(eps,view,viewer); | |
183 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(PetscObjectTypeCompareAny((PetscObject)eps,&isexternal,EPSARPACK,EPSBLOPEX,EPSELEMENTAL,EPSFEAST,EPSPRIMME,EPSSCALAPACK,EPSELPA,EPSEVSL,"")); |
184 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 6 times.
|
79 | if (!isexternal) { |
185 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
70 | PetscCall(PetscViewerPushFormat(viewer,PETSC_VIEWER_ASCII_INFO)); |
186 |
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.
|
70 | if (!eps->V) PetscCall(EPSGetBV(eps,&eps->V)); |
187 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
70 | PetscCall(BVView(eps->V,viewer)); |
188 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
70 | if (eps->rg) { |
189 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
70 | PetscCall(RGIsTrivial(eps->rg,&istrivial)); |
190 |
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.
|
70 | if (!istrivial) PetscCall(RGView(eps->rg,viewer)); |
191 | } | ||
192 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
70 | if (eps->useds) { |
193 |
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.
|
70 | if (!eps->ds) PetscCall(EPSGetDS(eps,&eps->ds)); |
194 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
70 | PetscCall(DSView(eps->ds,viewer)); |
195 | } | ||
196 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
70 | PetscCall(PetscViewerPopFormat(viewer)); |
197 | } | ||
198 |
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.
|
79 | if (!eps->st) PetscCall(EPSGetST(eps,&eps->st)); |
199 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
79 | PetscCall(STView(eps->st,viewer)); |
200 |
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.
|
17 | PetscFunctionReturn(PETSC_SUCCESS); |
201 | } | ||
202 | |||
203 | /*@ | ||
204 | EPSViewFromOptions - View from options | ||
205 | |||
206 | Collective | ||
207 | |||
208 | Input Parameters: | ||
209 | + eps - the eigensolver context | ||
210 | . obj - optional object | ||
211 | - name - command line option | ||
212 | |||
213 | Level: intermediate | ||
214 | |||
215 | .seealso: EPSView(), EPSCreate() | ||
216 | @*/ | ||
217 | 19090 | PetscErrorCode EPSViewFromOptions(EPS eps,PetscObject obj,const char name[]) | |
218 | { | ||
219 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
19090 | PetscFunctionBegin; |
220 |
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.
|
19090 | PetscValidHeaderSpecific(eps,EPS_CLASSID,1); |
221 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
19090 | PetscCall(PetscObjectViewFromOptions((PetscObject)eps,obj,name)); |
222 |
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.
|
3680 | PetscFunctionReturn(PETSC_SUCCESS); |
223 | } | ||
224 | |||
225 | /*@ | ||
226 | EPSConvergedReasonView - Displays the reason an EPS solve converged or diverged. | ||
227 | |||
228 | Collective | ||
229 | |||
230 | Input Parameters: | ||
231 | + eps - the eigensolver context | ||
232 | - viewer - the viewer to display the reason | ||
233 | |||
234 | Options Database Keys: | ||
235 | . -eps_converged_reason - print reason for convergence, and number of iterations | ||
236 | |||
237 | Note: | ||
238 | To change the format of the output call PetscViewerPushFormat(viewer,format) before | ||
239 | this call. Use PETSC_VIEWER_DEFAULT for the default, use PETSC_VIEWER_FAILED to only | ||
240 | display a reason if it fails. The latter can be set in the command line with | ||
241 | -eps_converged_reason ::failed | ||
242 | |||
243 | Level: intermediate | ||
244 | |||
245 | .seealso: EPSSetConvergenceTest(), EPSSetTolerances(), EPSGetIterationNumber(), EPSConvergedReasonViewFromOptions() | ||
246 | @*/ | ||
247 | 20 | PetscErrorCode EPSConvergedReasonView(EPS eps,PetscViewer viewer) | |
248 | { | ||
249 | 20 | PetscBool isAscii; | |
250 | 20 | PetscViewerFormat format; | |
251 | 20 | PetscInt nconv; | |
252 | |||
253 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
20 | PetscFunctionBegin; |
254 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
20 | if (!viewer) viewer = PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)eps)); |
255 |
4/6✓ Branch 0 taken 2 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(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isAscii)); |
256 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
20 | if (isAscii) { |
257 |
4/6✓ Branch 0 taken 2 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)); |
258 |
4/6✓ Branch 0 taken 2 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(PetscViewerASCIIAddTab(viewer,((PetscObject)eps)->tablevel)); |
259 |
4/6✓ Branch 0 taken 2 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(EPS_GetActualConverged(eps,&nconv)); |
260 |
9/14✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
20 | if (eps->reason > 0 && format != PETSC_VIEWER_FAILED) PetscCall(PetscViewerASCIIPrintf(viewer,"%s Linear eigensolve converged (%" PetscInt_FMT " eigenpair%s) due to %s; iterations %" PetscInt_FMT "\n",((PetscObject)eps)->prefix?((PetscObject)eps)->prefix:"",nconv,(nconv>1)?"s":"",EPSConvergedReasons[eps->reason],eps->its)); |
261 | ✗ | else if (eps->reason <= 0) PetscCall(PetscViewerASCIIPrintf(viewer,"%s Linear eigensolve did not converge due to %s; iterations %" PetscInt_FMT "\n",((PetscObject)eps)->prefix?((PetscObject)eps)->prefix:"",EPSConvergedReasons[eps->reason],eps->its)); | |
262 |
4/6✓ Branch 0 taken 2 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(PetscViewerASCIISubtractTab(viewer,((PetscObject)eps)->tablevel)); |
263 | } | ||
264 |
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.
|
4 | PetscFunctionReturn(PETSC_SUCCESS); |
265 | } | ||
266 | |||
267 | /*@ | ||
268 | EPSConvergedReasonViewFromOptions - Processes command line options to determine if/how | ||
269 | the EPS converged reason is to be viewed. | ||
270 | |||
271 | Collective | ||
272 | |||
273 | Input Parameter: | ||
274 | . eps - the eigensolver context | ||
275 | |||
276 | Level: developer | ||
277 | |||
278 | .seealso: EPSConvergedReasonView() | ||
279 | @*/ | ||
280 | 9545 | PetscErrorCode EPSConvergedReasonViewFromOptions(EPS eps) | |
281 | { | ||
282 | 9545 | PetscViewer viewer; | |
283 | 9545 | PetscBool flg; | |
284 | 9545 | static PetscBool incall = PETSC_FALSE; | |
285 | 9545 | PetscViewerFormat format; | |
286 | |||
287 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9545 | PetscFunctionBegin; |
288 |
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.
|
9545 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
289 | 9545 | incall = PETSC_TRUE; | |
290 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
9545 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)eps),((PetscObject)eps)->options,((PetscObject)eps)->prefix,"-eps_converged_reason",&viewer,&format,&flg)); |
291 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9545 | if (flg) { |
292 |
4/6✓ Branch 0 taken 2 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)); |
293 |
4/6✓ Branch 0 taken 2 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(EPSConvergedReasonView(eps,viewer)); |
294 |
4/6✓ Branch 0 taken 2 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)); |
295 |
4/6✓ Branch 0 taken 2 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)); |
296 | } | ||
297 | 9545 | incall = PETSC_FALSE; | |
298 |
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.
|
9545 | PetscFunctionReturn(PETSC_SUCCESS); |
299 | } | ||
300 | |||
301 | 5371 | static PetscErrorCode EPSErrorView_ASCII(EPS eps,EPSErrorType etype,PetscViewer viewer) | |
302 | { | ||
303 | 5371 | PetscReal error; | |
304 | 5371 | PetscScalar kr,ki; | |
305 | 5371 | PetscInt i,j,nvals,nconv; | |
306 | |||
307 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
5371 | PetscFunctionBegin; |
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.
|
5371 | PetscCall(EPS_GetActualConverged(eps,&nconv)); |
309 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
5371 | nvals = (eps->which==EPS_ALL || eps->stop==EPS_STOP_THRESHOLD)? nconv: eps->nev; |
310 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
|
5371 | if (eps->which!=EPS_ALL && nconv<nvals) { |
311 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," Problem: less than %" PetscInt_FMT " eigenvalues converged\n\n",eps->nev)); | |
312 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
313 | } | ||
314 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
5371 | if (eps->which==EPS_ALL && !nvals) { |
315 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," No eigenvalues have been found\n\n")); | |
316 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
317 | } | ||
318 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
46179 | for (i=0;i<nvals;i++) { |
319 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40808 | PetscCall(EPSComputeError(eps,i,etype,&error)); |
320 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
40808 | if (error>=5.0*eps->tol) { |
321 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," Problem: some of the first %" PetscInt_FMT " relative errors are higher than the tolerance\n\n",nvals)); | |
322 |
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.
|
8068 | PetscFunctionReturn(PETSC_SUCCESS); |
323 | } | ||
324 | } | ||
325 |
8/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
5371 | if (eps->which==EPS_ALL || eps->stop==EPS_STOP_THRESHOLD) PetscCall(PetscViewerASCIIPrintf(viewer," Found %" PetscInt_FMT " eigenvalues, all of them computed up to the required tolerance:",nvals)); |
326 |
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.
|
4572 | else PetscCall(PetscViewerASCIIPrintf(viewer," All requested eigenvalues computed up to the required tolerance:")); |
327 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
13176 | for (i=0;i<=(nvals-1)/8;i++) { |
328 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
7805 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n ")); |
329 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
48613 | for (j=0;j<PetscMin(8,nvals-8*i);j++) { |
330 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40808 | PetscCall(EPSGetEigenvalue(eps,8*i+j,&kr,&ki)); |
331 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40808 | PetscCall(SlepcPrintEigenvalueASCII(viewer,kr,ki)); |
332 |
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.
|
40808 | if (8*i+j+1<nvals) PetscCall(PetscViewerASCIIPrintf(viewer,", ")); |
333 | } | ||
334 | } | ||
335 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
5371 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n\n")); |
336 |
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.
|
1050 | PetscFunctionReturn(PETSC_SUCCESS); |
337 | } | ||
338 | |||
339 | 16 | static PetscErrorCode EPSErrorView_DETAIL(EPS eps,EPSErrorType etype,PetscViewer viewer) | |
340 | { | ||
341 | 16 | PetscReal error,re,im; | |
342 | 16 | PetscScalar kr,ki; | |
343 | 16 | PetscInt i,nconv; | |
344 | 16 | char ex[30],sep[]=" ---------------------- --------------------\n"; | |
345 | |||
346 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
347 |
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.
|
16 | if (!eps->nconv) PetscFunctionReturn(PETSC_SUCCESS); |
348 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
16 | switch (etype) { |
349 | ✗ | case EPS_ERROR_ABSOLUTE: | |
350 | ✗ | PetscCall(PetscSNPrintf(ex,sizeof(ex)," ||Ax-k%sx||",eps->isgeneralized?"B":"")); | |
351 | break; | ||
352 | 6 | case EPS_ERROR_RELATIVE: | |
353 |
2/8✓ 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 not taken.
|
12 | PetscCall(PetscSNPrintf(ex,sizeof(ex),"||Ax-k%sx||/||kx||",eps->isgeneralized?"B":"")); |
354 | break; | ||
355 | 10 | case EPS_ERROR_BACKWARD: | |
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.
|
10 | PetscCall(PetscSNPrintf(ex,sizeof(ex)," eta(x,k)")); |
357 | break; | ||
358 | } | ||
359 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16 | PetscCall(PetscViewerASCIIPrintf(viewer,"%s k %s\n%s",sep,ex,sep)); |
360 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16 | PetscCall(EPS_GetActualConverged(eps,&nconv)); |
361 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
106 | for (i=0;i<nconv;i++) { |
362 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
90 | PetscCall(EPSGetEigenvalue(eps,i,&kr,&ki)); |
363 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
90 | PetscCall(EPSComputeError(eps,i,etype,&error)); |
364 | #if defined(PETSC_USE_COMPLEX) | ||
365 | 45 | re = PetscRealPart(kr); | |
366 | 45 | im = PetscImaginaryPart(kr); | |
367 | #else | ||
368 | 45 | re = kr; | |
369 | 45 | im = ki; | |
370 | #endif | ||
371 |
6/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 6 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.
|
90 | if (im!=0.0) PetscCall(PetscViewerASCIIPrintf(viewer," % 9f%+9fi %12g\n",(double)re,(double)im,(double)error)); |
372 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
90 | else PetscCall(PetscViewerASCIIPrintf(viewer," % 12f %12g\n",(double)re,(double)error)); |
373 | } | ||
374 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16 | PetscCall(PetscViewerASCIIPrintf(viewer,"%s",sep)); |
375 |
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); |
376 | } | ||
377 | |||
378 | 10 | static PetscErrorCode EPSErrorView_MATLAB(EPS eps,EPSErrorType etype,PetscViewer viewer) | |
379 | { | ||
380 | 10 | PetscReal error; | |
381 | 10 | PetscInt i,nconv; | |
382 | 10 | const char *name; | |
383 | |||
384 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
385 |
4/6✓ Branch 0 taken 2 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)eps,&name)); |
386 |
4/6✓ Branch 0 taken 2 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)); |
387 |
4/6✓ Branch 0 taken 2 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(EPS_GetActualConverged(eps,&nconv)); |
388 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
70 | for (i=0;i<nconv;i++) { |
389 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(EPSComputeError(eps,i,etype,&error)); |
390 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(PetscViewerASCIIPrintf(viewer,"%18.16e\n",(double)error)); |
391 | } | ||
392 |
4/6✓ Branch 0 taken 2 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")); |
393 |
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); |
394 | } | ||
395 | |||
396 | /*@ | ||
397 | EPSErrorView - Displays the errors associated with the computed solution | ||
398 | (as well as the eigenvalues). | ||
399 | |||
400 | Collective | ||
401 | |||
402 | Input Parameters: | ||
403 | + eps - the eigensolver context | ||
404 | . etype - error type | ||
405 | - viewer - optional visualization context | ||
406 | |||
407 | Options Database Keys: | ||
408 | + -eps_error_absolute - print absolute errors of each eigenpair | ||
409 | . -eps_error_relative - print relative errors of each eigenpair | ||
410 | - -eps_error_backward - print backward errors of each eigenpair | ||
411 | |||
412 | Notes: | ||
413 | By default, this function checks the error of all eigenpairs and prints | ||
414 | the eigenvalues if all of them are below the requested tolerance. | ||
415 | If the viewer has format=PETSC_VIEWER_ASCII_INFO_DETAIL then a table with | ||
416 | eigenvalues and corresponding errors is printed. | ||
417 | |||
418 | Level: intermediate | ||
419 | |||
420 | .seealso: EPSSolve(), EPSValuesView(), EPSVectorsView() | ||
421 | @*/ | ||
422 | 5397 | PetscErrorCode EPSErrorView(EPS eps,EPSErrorType etype,PetscViewer viewer) | |
423 | { | ||
424 | 5397 | PetscBool isascii; | |
425 | 5397 | PetscViewerFormat format; | |
426 | |||
427 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
5397 | PetscFunctionBegin; |
428 |
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.
|
5397 | PetscValidHeaderSpecific(eps,EPS_CLASSID,1); |
429 |
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.
|
5397 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)eps),&viewer)); |
430 |
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.
|
5397 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,3); |
431 |
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.
|
5397 | PetscCheckSameComm(eps,1,viewer,3); |
432 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
5397 | EPSCheckSolved(eps,1); |
433 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
5397 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
434 |
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.
|
5397 | if (!isascii) PetscFunctionReturn(PETSC_SUCCESS); |
435 | |||
436 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
5397 | PetscCall(PetscViewerGetFormat(viewer,&format)); |
437 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
5397 | switch (format) { |
438 | 5371 | case PETSC_VIEWER_DEFAULT: | |
439 | case PETSC_VIEWER_ASCII_INFO: | ||
440 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
5371 | PetscCall(EPSErrorView_ASCII(eps,etype,viewer)); |
441 | break; | ||
442 | 16 | case PETSC_VIEWER_ASCII_INFO_DETAIL: | |
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.
|
16 | PetscCall(EPSErrorView_DETAIL(eps,etype,viewer)); |
444 | break; | ||
445 | 10 | case PETSC_VIEWER_ASCII_MATLAB: | |
446 |
4/6✓ Branch 0 taken 2 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(EPSErrorView_MATLAB(eps,etype,viewer)); |
447 | break; | ||
448 | ✗ | default: | |
449 | ✗ | PetscCall(PetscInfo(eps,"Unsupported viewer format %s\n",PetscViewerFormats[format])); | |
450 | } | ||
451 |
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.
|
1054 | PetscFunctionReturn(PETSC_SUCCESS); |
452 | } | ||
453 | |||
454 | /*@ | ||
455 | EPSErrorViewFromOptions - Processes command line options to determine if/how | ||
456 | the errors of the computed solution are to be viewed. | ||
457 | |||
458 | Collective | ||
459 | |||
460 | Input Parameter: | ||
461 | . eps - the eigensolver context | ||
462 | |||
463 | Level: developer | ||
464 | |||
465 | .seealso: EPSErrorView() | ||
466 | @*/ | ||
467 | 9545 | PetscErrorCode EPSErrorViewFromOptions(EPS eps) | |
468 | { | ||
469 | 9545 | PetscViewer viewer; | |
470 | 9545 | PetscBool flg; | |
471 | 9545 | static PetscBool incall = PETSC_FALSE; | |
472 | 9545 | PetscViewerFormat format; | |
473 | |||
474 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9545 | PetscFunctionBegin; |
475 |
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.
|
9545 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
476 | 9545 | incall = PETSC_TRUE; | |
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.
|
9545 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)eps),((PetscObject)eps)->options,((PetscObject)eps)->prefix,"-eps_error_absolute",&viewer,&format,&flg)); |
478 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9545 | if (flg) { |
479 |
4/6✓ Branch 0 taken 2 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)); |
480 |
4/6✓ Branch 0 taken 2 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(EPSErrorView(eps,EPS_ERROR_ABSOLUTE,viewer)); |
481 |
4/6✓ Branch 0 taken 2 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)); |
482 |
4/6✓ Branch 0 taken 2 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)); |
483 | } | ||
484 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
9545 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)eps),((PetscObject)eps)->options,((PetscObject)eps)->prefix,"-eps_error_relative",&viewer,&format,&flg)); |
485 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9545 | if (flg) { |
486 |
4/6✓ Branch 0 taken 2 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(PetscViewerPushFormat(viewer,format)); |
487 |
4/6✓ Branch 0 taken 2 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(EPSErrorView(eps,EPS_ERROR_RELATIVE,viewer)); |
488 |
4/6✓ Branch 0 taken 2 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(PetscViewerPopFormat(viewer)); |
489 |
4/6✓ Branch 0 taken 2 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(PetscViewerDestroy(&viewer)); |
490 | } | ||
491 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
9545 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)eps),((PetscObject)eps)->options,((PetscObject)eps)->prefix,"-eps_error_backward",&viewer,&format,&flg)); |
492 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9545 | if (flg) { |
493 |
4/6✓ Branch 0 taken 2 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)); |
494 |
4/6✓ Branch 0 taken 2 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(EPSErrorView(eps,EPS_ERROR_BACKWARD,viewer)); |
495 |
4/6✓ Branch 0 taken 2 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)); |
496 |
4/6✓ Branch 0 taken 2 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)); |
497 | } | ||
498 | 9545 | incall = PETSC_FALSE; | |
499 |
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.
|
9545 | PetscFunctionReturn(PETSC_SUCCESS); |
500 | } | ||
501 | |||
502 | 16 | static PetscErrorCode EPSValuesView_DRAW(EPS eps,PetscViewer viewer) | |
503 | { | ||
504 | 16 | PetscDraw draw; | |
505 | 16 | PetscDrawSP drawsp; | |
506 | 16 | PetscReal re,im; | |
507 | 16 | PetscScalar kr,ki; | |
508 | 16 | PetscInt i,nconv; | |
509 | |||
510 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
511 |
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 (!eps->nconv) PetscFunctionReturn(PETSC_SUCCESS); |
512 |
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)); |
513 |
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")); |
514 |
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)); |
515 |
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(EPS_GetActualConverged(eps,&nconv)); |
516 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 8 times.
|
56 | for (i=0;i<nconv;i++) { |
517 |
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.
|
40 | PetscCall(EPSGetEigenvalue(eps,i,&kr,&ki)); |
518 | #if defined(PETSC_USE_COMPLEX) | ||
519 | 15 | re = PetscRealPart(kr); | |
520 | 15 | im = PetscImaginaryPart(kr); | |
521 | #else | ||
522 | 25 | re = kr; | |
523 | 25 | im = ki; | |
524 | #endif | ||
525 |
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.
|
40 | PetscCall(PetscDrawSPAddPoint(drawsp,&re,&im)); |
526 | } | ||
527 |
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)); |
528 |
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)); |
529 |
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)); |
530 |
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); |
531 | } | ||
532 | |||
533 | 10 | static PetscErrorCode EPSValuesView_BINARY(EPS eps,PetscViewer viewer) | |
534 | { | ||
535 | 10 | PetscScalar kr,ki; | |
536 | #if defined(PETSC_HAVE_COMPLEX) | ||
537 | 10 | PetscInt i,nconv; | |
538 | 10 | PetscComplex *ev; | |
539 | #endif | ||
540 | |||
541 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
542 | #if defined(PETSC_HAVE_COMPLEX) | ||
543 |
4/6✓ Branch 0 taken 2 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(EPS_GetActualConverged(eps,&nconv)); |
544 |
4/6✓ Branch 0 taken 2 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(nconv,&ev)); |
545 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
50 | for (i=0;i<nconv;i++) { |
546 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40 | PetscCall(EPSGetEigenvalue(eps,i,&kr,&ki)); |
547 | #if defined(PETSC_USE_COMPLEX) | ||
548 | 20 | ev[i] = kr; | |
549 | #else | ||
550 | 20 | ev[i] = PetscCMPLX(kr,ki); | |
551 | #endif | ||
552 | } | ||
553 |
4/6✓ Branch 0 taken 2 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,nconv,PETSC_COMPLEX)); |
554 |
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)); |
555 | #endif | ||
556 |
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); |
557 | } | ||
558 | |||
559 | #if defined(PETSC_HAVE_HDF5) | ||
560 | static PetscErrorCode EPSValuesView_HDF5(EPS eps,PetscViewer viewer) | ||
561 | { | ||
562 | PetscInt i,n,N,nconv; | ||
563 | PetscScalar eig; | ||
564 | PetscMPIInt rank; | ||
565 | Vec v; | ||
566 | char vname[30]; | ||
567 | const char *ename; | ||
568 | |||
569 | PetscFunctionBegin; | ||
570 | PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)eps),&rank)); | ||
571 | PetscCall(EPS_GetActualConverged(eps,&nconv)); | ||
572 | N = nconv; | ||
573 | n = rank? 0: N; | ||
574 | /* create a vector containing the eigenvalues */ | ||
575 | PetscCall(VecCreateMPI(PetscObjectComm((PetscObject)eps),n,N,&v)); | ||
576 | PetscCall(PetscObjectGetName((PetscObject)eps,&ename)); | ||
577 | PetscCall(PetscSNPrintf(vname,sizeof(vname),"eigr_%s",ename)); | ||
578 | PetscCall(PetscObjectSetName((PetscObject)v,vname)); | ||
579 | if (!rank) { | ||
580 | for (i=0;i<nconv;i++) { | ||
581 | PetscCall(EPSGetEigenvalue(eps,i,&eig,NULL)); | ||
582 | PetscCall(VecSetValue(v,i,eig,INSERT_VALUES)); | ||
583 | } | ||
584 | } | ||
585 | PetscCall(VecAssemblyBegin(v)); | ||
586 | PetscCall(VecAssemblyEnd(v)); | ||
587 | PetscCall(VecView(v,viewer)); | ||
588 | #if !defined(PETSC_USE_COMPLEX) | ||
589 | /* in real scalars write the imaginary part as a separate vector */ | ||
590 | PetscCall(PetscSNPrintf(vname,sizeof(vname),"eigi_%s",ename)); | ||
591 | PetscCall(PetscObjectSetName((PetscObject)v,vname)); | ||
592 | if (!rank) { | ||
593 | for (i=0;i<nconv;i++) { | ||
594 | PetscCall(EPSGetEigenvalue(eps,i,NULL,&eig)); | ||
595 | PetscCall(VecSetValue(v,i,eig,INSERT_VALUES)); | ||
596 | } | ||
597 | } | ||
598 | PetscCall(VecAssemblyBegin(v)); | ||
599 | PetscCall(VecAssemblyEnd(v)); | ||
600 | PetscCall(VecView(v,viewer)); | ||
601 | #endif | ||
602 | PetscCall(VecDestroy(&v)); | ||
603 | PetscFunctionReturn(PETSC_SUCCESS); | ||
604 | } | ||
605 | #endif | ||
606 | |||
607 | 20 | static PetscErrorCode EPSValuesView_ASCII(EPS eps,PetscViewer viewer) | |
608 | { | ||
609 | 20 | PetscInt i,nconv; | |
610 | 20 | PetscScalar kr,ki; | |
611 | |||
612 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
20 | PetscFunctionBegin; |
613 |
4/6✓ Branch 0 taken 2 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(PetscViewerASCIIPrintf(viewer,"Eigenvalues = \n")); |
614 |
4/6✓ Branch 0 taken 2 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(EPS_GetActualConverged(eps,&nconv)); |
615 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
120 | for (i=0;i<nconv;i++) { |
616 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
100 | PetscCall(EPSGetEigenvalue(eps,i,&kr,&ki)); |
617 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
100 | PetscCall(PetscViewerASCIIPrintf(viewer," ")); |
618 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
100 | PetscCall(SlepcPrintEigenvalueASCII(viewer,kr,ki)); |
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.
|
100 | PetscCall(PetscViewerASCIIPrintf(viewer,"\n")); |
620 | } | ||
621 |
4/6✓ Branch 0 taken 2 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(PetscViewerASCIIPrintf(viewer,"\n")); |
622 |
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.
|
4 | PetscFunctionReturn(PETSC_SUCCESS); |
623 | } | ||
624 | |||
625 | 10 | static PetscErrorCode EPSValuesView_MATLAB(EPS eps,PetscViewer viewer) | |
626 | { | ||
627 | 10 | PetscInt i,nconv; | |
628 | 10 | PetscReal re,im; | |
629 | 10 | PetscScalar kr,ki; | |
630 | 10 | const char *name; | |
631 | |||
632 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
633 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscObjectGetName((PetscObject)eps,&name)); |
634 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscViewerASCIIPrintf(viewer,"Lambda_%s = [\n",name)); |
635 |
4/6✓ Branch 0 taken 2 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(EPS_GetActualConverged(eps,&nconv)); |
636 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
20 | for (i=0;i<nconv;i++) { |
637 |
4/6✓ Branch 0 taken 2 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(EPSGetEigenvalue(eps,i,&kr,&ki)); |
638 | #if defined(PETSC_USE_COMPLEX) | ||
639 | 5 | re = PetscRealPart(kr); | |
640 | 5 | im = PetscImaginaryPart(kr); | |
641 | #else | ||
642 | 5 | re = kr; | |
643 | 5 | im = ki; | |
644 | #endif | ||
645 |
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.
|
10 | if (im!=0.0) PetscCall(PetscViewerASCIIPrintf(viewer,"%18.16e%+18.16ei\n",(double)re,(double)im)); |
646 |
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.
|
10 | else PetscCall(PetscViewerASCIIPrintf(viewer,"%18.16e\n",(double)re)); |
647 | } | ||
648 |
4/6✓ Branch 0 taken 2 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")); |
649 |
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); |
650 | } | ||
651 | |||
652 | /*@ | ||
653 | EPSValuesView - Displays the computed eigenvalues in a viewer. | ||
654 | |||
655 | Collective | ||
656 | |||
657 | Input Parameters: | ||
658 | + eps - the eigensolver context | ||
659 | - viewer - the viewer | ||
660 | |||
661 | Options Database Key: | ||
662 | . -eps_view_values - print computed eigenvalues | ||
663 | |||
664 | Level: intermediate | ||
665 | |||
666 | .seealso: EPSSolve(), EPSVectorsView(), EPSErrorView() | ||
667 | @*/ | ||
668 | 56 | PetscErrorCode EPSValuesView(EPS eps,PetscViewer viewer) | |
669 | { | ||
670 | 56 | PetscBool isascii,isdraw,isbinary; | |
671 | 56 | PetscViewerFormat format; | |
672 | #if defined(PETSC_HAVE_HDF5) | ||
673 | PetscBool ishdf5; | ||
674 | #endif | ||
675 | |||
676 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
56 | PetscFunctionBegin; |
677 |
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.
|
56 | PetscValidHeaderSpecific(eps,EPS_CLASSID,1); |
678 |
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.
|
56 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)eps),&viewer)); |
679 |
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.
|
56 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2); |
680 |
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.
|
56 | PetscCheckSameComm(eps,1,viewer,2); |
681 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
56 | EPSCheckSolved(eps,1); |
682 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
56 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERDRAW,&isdraw)); |
683 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
56 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERBINARY,&isbinary)); |
684 | #if defined(PETSC_HAVE_HDF5) | ||
685 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERHDF5,&ishdf5)); | ||
686 | #endif | ||
687 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
56 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
688 |
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.
|
56 | if (isdraw) PetscCall(EPSValuesView_DRAW(eps,viewer)); |
689 |
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.
|
40 | else if (isbinary) PetscCall(EPSValuesView_BINARY(eps,viewer)); |
690 | #if defined(PETSC_HAVE_HDF5) | ||
691 | else if (ishdf5) PetscCall(EPSValuesView_HDF5(eps,viewer)); | ||
692 | #endif | ||
693 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
30 | else if (isascii) { |
694 |
4/6✓ Branch 0 taken 2 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(PetscViewerGetFormat(viewer,&format)); |
695 |
2/3✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
30 | switch (format) { |
696 | 20 | case PETSC_VIEWER_DEFAULT: | |
697 | case PETSC_VIEWER_ASCII_INFO: | ||
698 | case PETSC_VIEWER_ASCII_INFO_DETAIL: | ||
699 |
4/6✓ Branch 0 taken 2 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(EPSValuesView_ASCII(eps,viewer)); |
700 | break; | ||
701 | 10 | case PETSC_VIEWER_ASCII_MATLAB: | |
702 |
4/6✓ Branch 0 taken 2 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(EPSValuesView_MATLAB(eps,viewer)); |
703 | break; | ||
704 | ✗ | default: | |
705 | ✗ | PetscCall(PetscInfo(eps,"Unsupported viewer format %s\n",PetscViewerFormats[format])); | |
706 | } | ||
707 | } | ||
708 |
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); |
709 | } | ||
710 | |||
711 | /*@ | ||
712 | EPSValuesViewFromOptions - Processes command line options to determine if/how | ||
713 | the computed eigenvalues are to be viewed. | ||
714 | |||
715 | Collective | ||
716 | |||
717 | Input Parameters: | ||
718 | . eps - the eigensolver context | ||
719 | |||
720 | Level: developer | ||
721 | |||
722 | .seealso: EPSValuesView() | ||
723 | @*/ | ||
724 | 9545 | PetscErrorCode EPSValuesViewFromOptions(EPS eps) | |
725 | { | ||
726 | 9545 | PetscViewer viewer; | |
727 | 9545 | PetscBool flg; | |
728 | 9545 | static PetscBool incall = PETSC_FALSE; | |
729 | 9545 | PetscViewerFormat format; | |
730 | |||
731 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9545 | PetscFunctionBegin; |
732 |
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.
|
9545 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
733 | 9545 | incall = PETSC_TRUE; | |
734 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
9545 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)eps),((PetscObject)eps)->options,((PetscObject)eps)->prefix,"-eps_view_values",&viewer,&format,&flg)); |
735 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9545 | if (flg) { |
736 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
56 | PetscCall(PetscViewerPushFormat(viewer,format)); |
737 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
56 | PetscCall(EPSValuesView(eps,viewer)); |
738 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
56 | PetscCall(PetscViewerPopFormat(viewer)); |
739 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
56 | PetscCall(PetscViewerDestroy(&viewer)); |
740 | } | ||
741 | 9545 | incall = PETSC_FALSE; | |
742 |
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.
|
9545 | PetscFunctionReturn(PETSC_SUCCESS); |
743 | } | ||
744 | |||
745 | /*@ | ||
746 | EPSVectorsView - Outputs computed eigenvectors to a viewer. | ||
747 | |||
748 | Collective | ||
749 | |||
750 | Input Parameters: | ||
751 | + eps - the eigensolver context | ||
752 | - viewer - the viewer | ||
753 | |||
754 | Options Database Key: | ||
755 | . -eps_view_vectors - output eigenvectors. | ||
756 | |||
757 | Notes: | ||
758 | If PETSc was configured with real scalars, complex conjugate eigenvectors | ||
759 | will be viewed as two separate real vectors, one containing the real part | ||
760 | and another one containing the imaginary part. | ||
761 | |||
762 | If left eigenvectors were computed with a two-sided eigensolver, the right | ||
763 | and left eigenvectors are interleaved, that is, the vectors are output in | ||
764 | the following order X0, Y0, X1, Y1, X2, Y2, ... | ||
765 | |||
766 | Level: intermediate | ||
767 | |||
768 | .seealso: EPSSolve(), EPSValuesView(), EPSErrorView() | ||
769 | @*/ | ||
770 | 10 | PetscErrorCode EPSVectorsView(EPS eps,PetscViewer viewer) | |
771 | { | ||
772 | 10 | PetscInt i,nconv; | |
773 | 10 | Vec xr,xi=NULL; | |
774 | |||
775 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
776 |
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(eps,EPS_CLASSID,1); |
777 |
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)eps),&viewer)); |
778 |
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); |
779 |
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(eps,1,viewer,2); |
780 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
10 | EPSCheckSolved(eps,1); |
781 |
4/6✓ Branch 0 taken 2 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(EPS_GetActualConverged(eps,&nconv)); |
782 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | if (nconv) { |
783 |
4/6✓ Branch 0 taken 2 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(eps->V,&xr)); |
784 | #if !defined(PETSC_USE_COMPLEX) | ||
785 |
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(eps->V,&xi)); |
786 | #endif | ||
787 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
50 | for (i=0;i<nconv;i++) { |
788 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40 | PetscCall(EPSGetEigenvector(eps,i,xr,xi)); |
789 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40 | PetscCall(SlepcViewEigenvector(viewer,xr,xi,"X",i,(PetscObject)eps)); |
790 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
40 | if (eps->twosided || eps->problem_type==EPS_BSE) { |
791 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40 | PetscCall(EPSGetLeftEigenvector(eps,i,xr,xi)); |
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.
|
40 | PetscCall(SlepcViewEigenvector(viewer,xr,xi,"Y",i,(PetscObject)eps)); |
793 | } | ||
794 | } | ||
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(VecDestroy(&xr)); |
796 | #if !defined(PETSC_USE_COMPLEX) | ||
797 |
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)); |
798 | #endif | ||
799 | } | ||
800 |
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); |
801 | } | ||
802 | |||
803 | /*@ | ||
804 | EPSVectorsViewFromOptions - Processes command line options to determine if/how | ||
805 | the computed eigenvectors are to be viewed. | ||
806 | |||
807 | Collective | ||
808 | |||
809 | Input Parameter: | ||
810 | . eps - the eigensolver context | ||
811 | |||
812 | Level: developer | ||
813 | |||
814 | .seealso: EPSVectorsView() | ||
815 | @*/ | ||
816 | 9545 | PetscErrorCode EPSVectorsViewFromOptions(EPS eps) | |
817 | { | ||
818 | 9545 | PetscViewer viewer; | |
819 | 9545 | PetscBool flg = PETSC_FALSE; | |
820 | 9545 | static PetscBool incall = PETSC_FALSE; | |
821 | 9545 | PetscViewerFormat format; | |
822 | |||
823 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9545 | PetscFunctionBegin; |
824 |
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.
|
9545 | if (incall) PetscFunctionReturn(PETSC_SUCCESS); |
825 | 9545 | incall = PETSC_TRUE; | |
826 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
9545 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)eps),((PetscObject)eps)->options,((PetscObject)eps)->prefix,"-eps_view_vectors",&viewer,&format,&flg)); |
827 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9545 | if (flg) { |
828 |
4/6✓ Branch 0 taken 2 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)); |
829 |
4/6✓ Branch 0 taken 2 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(EPSVectorsView(eps,viewer)); |
830 |
4/6✓ Branch 0 taken 2 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)); |
831 |
4/6✓ Branch 0 taken 2 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)); |
832 | } | ||
833 | 9545 | incall = PETSC_FALSE; | |
834 |
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.
|
9545 | PetscFunctionReturn(PETSC_SUCCESS); |
835 | } | ||
836 |