GCC Code Coverage Report


Directory: ./
File: src/nep/interface/nepview.c
Date: 2025-10-04 04:19:13
Exec Total Coverage
Lines: 348 396 87.9%
Functions: 17 17 100.0%
Branches: 858 1850 46.4%

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 NEP routines related to various viewers
12 */
13
14 #include <slepc/private/nepimpl.h> /*I "slepcnep.h" I*/
15 #include <slepc/private/bvimpl.h>
16 #include <petscdraw.h>
17
18 /*@
19 NEPView - Prints the NEP data structure.
20
21 Collective
22
23 Input Parameters:
24 + nep - the nonlinear eigenproblem solver context
25 - viewer - optional visualization context
26
27 Options Database Key:
28 . -nep_view - Calls NEPView() at end of NEPSolve()
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: FNView()
44 @*/
45 45 PetscErrorCode NEPView(NEP nep,PetscViewer viewer)
46 {
47 45 const char *type=NULL;
48 45 char str[50];
49 45 PetscInt i;
50 45 PetscBool isascii,istrivial;
51 45 PetscViewer sviewer;
52 45 MPI_Comm child;
53
54
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
45 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.
45 PetscValidHeaderSpecific(nep,NEP_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.
45 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)nep),&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.
45 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.
45 PetscCheckSameComm(nep,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.
45 PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii));
61
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
45 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.
45 PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)nep,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.
45 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.
45 PetscTryTypeMethod(nep,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.
45 PetscCall(PetscViewerASCIIPopTab(viewer));
66
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
45 if (nep->problem_type) {
67
2/3
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
45 switch (nep->problem_type) {
68 35 case NEP_GENERAL: type = "general nonlinear eigenvalue problem"; break;
69 10 case NEP_RATIONAL: type = "rational eigenvalue problem"; break;
70 }
71 } else type = "not yet set";
72
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," problem type: %s\n",type));
73
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
45 if (nep->fui) {
74
1/3
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
45 switch (nep->fui) {
75 case NEP_USER_INTERFACE_CALLBACK:
76 PetscCall(PetscViewerASCIIPrintf(viewer," nonlinear operator from user callbacks\n"));
77 break;
78 45 case NEP_USER_INTERFACE_SPLIT:
79
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," nonlinear operator in split form\n"));
80
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," number of terms: %" PetscInt_FMT "\n",nep->nt));
81
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," nonzero pattern of the matrices: %s\n",MatStructures[nep->mstr]));
82 break;
83 }
84 } else PetscCall(PetscViewerASCIIPrintf(viewer," nonlinear operator not specified yet\n"));
85
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," selected portion of the spectrum: "));
86
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_FALSE));
87
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(SlepcSNPrintfScalar(str,sizeof(str),nep->target,PETSC_FALSE));
88
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.
45 if (!nep->which) PetscCall(PetscViewerASCIIPrintf(viewer,"not yet set\n"));
89
2/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 taken 5 times.
✗ Branch 11 not taken.
45 else switch (nep->which) {
90 case NEP_WHICH_USER:
91 PetscCall(PetscViewerASCIIPrintf(viewer,"user defined\n"));
92 break;
93 40 case NEP_TARGET_MAGNITUDE:
94
4/6
✓ Branch 0 taken 2 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(PetscViewerASCIIPrintf(viewer,"closest to target: %s (in magnitude)\n",str));
95 break;
96 case NEP_TARGET_REAL:
97 PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (along the real axis)\n",str));
98 break;
99 case NEP_TARGET_IMAGINARY:
100 PetscCall(PetscViewerASCIIPrintf(viewer,"closest to target: %s (along the imaginary axis)\n",str));
101 break;
102 case NEP_LARGEST_MAGNITUDE:
103 PetscCall(PetscViewerASCIIPrintf(viewer,"largest eigenvalues in magnitude\n"));
104 break;
105 case NEP_SMALLEST_MAGNITUDE:
106 PetscCall(PetscViewerASCIIPrintf(viewer,"smallest eigenvalues in magnitude\n"));
107 break;
108 case NEP_LARGEST_REAL:
109 PetscCall(PetscViewerASCIIPrintf(viewer,"largest real parts\n"));
110 break;
111 case NEP_SMALLEST_REAL:
112 PetscCall(PetscViewerASCIIPrintf(viewer,"smallest real parts\n"));
113 break;
114 case NEP_LARGEST_IMAGINARY:
115 PetscCall(PetscViewerASCIIPrintf(viewer,"largest imaginary parts\n"));
116 break;
117 case NEP_SMALLEST_IMAGINARY:
118 PetscCall(PetscViewerASCIIPrintf(viewer,"smallest imaginary parts\n"));
119 break;
120 5 case NEP_ALL:
121
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,"all eigenvalues in the region\n"));
122 break;
123 }
124
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_TRUE));
125
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.
45 if (nep->twosided) PetscCall(PetscViewerASCIIPrintf(viewer," using two-sided variant (for left eigenvectors)\n"));
126
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," number of eigenvalues (nev): %" PetscInt_FMT "\n",nep->nev));
127
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," number of column vectors (ncv): %" PetscInt_FMT "\n",nep->ncv));
128
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIPrintf(viewer," maximum dimension of projected problem (mpd): %" PetscInt_FMT "\n",nep->mpd));
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.
45 PetscCall(PetscViewerASCIIPrintf(viewer," maximum number of iterations: %" PetscInt_FMT "\n",nep->max_it));
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.
45 PetscCall(PetscViewerASCIIPrintf(viewer," tolerance: %g\n",(double)nep->tol));
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.
45 PetscCall(PetscViewerASCIIPrintf(viewer," convergence test: "));
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.
45 PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_FALSE));
133
2/5
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
45 switch (nep->conv) {
134 10 case NEP_CONV_ABS:
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.
10 PetscCall(PetscViewerASCIIPrintf(viewer,"absolute\n"));break;
136 35 case NEP_CONV_REL:
137
4/6
✓ Branch 0 taken 2 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(PetscViewerASCIIPrintf(viewer,"relative to the eigenvalue\n"));break;
138 case NEP_CONV_NORM:
139 PetscCall(PetscViewerASCIIPrintf(viewer,"relative to the matrix norms\n"));
140 if (nep->nrma) {
141 PetscCall(PetscViewerASCIIPrintf(viewer," computed matrix norms: %g",(double)nep->nrma[0]));
142 for (i=1;i<nep->nt;i++) PetscCall(PetscViewerASCIIPrintf(viewer,", %g",(double)nep->nrma[i]));
143 PetscCall(PetscViewerASCIIPrintf(viewer,"\n"));
144 }
145 break;
146 case NEP_CONV_USER:
147 PetscCall(PetscViewerASCIIPrintf(viewer,"user-defined\n"));break;
148 }
149
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerASCIIUseTabs(viewer,PETSC_TRUE));
150
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
45 if (nep->refine) {
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.
10 PetscCall(PetscViewerASCIIPrintf(viewer," iterative refinement: %s, with %s scheme\n",NEPRefineTypes[nep->refine],NEPRefineSchemes[nep->scheme]));
152
4/6
✓ Branch 0 taken 2 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," refinement stopping criterion: tol=%g, its=%" PetscInt_FMT "\n",(double)nep->rtol,nep->rits));
153
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 (nep->npart>1) PetscCall(PetscViewerASCIIPrintf(viewer," splitting communicator in %" PetscInt_FMT " partitions for refinement\n",nep->npart));
154 }
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.
45 if (nep->nini) PetscCall(PetscViewerASCIIPrintf(viewer," dimension of user-provided initial space: %" PetscInt_FMT "\n",PetscAbs(nep->nini)));
156 } else PetscTryTypeMethod(nep,view,viewer);
157
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerPushFormat(viewer,PETSC_VIEWER_ASCII_INFO));
158
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.
45 if (!nep->V) PetscCall(NEPGetBV(nep,&nep->V));
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.
45 PetscCall(BVView(nep->V,viewer));
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.
45 if (!nep->rg) PetscCall(NEPGetRG(nep,&nep->rg));
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.
45 PetscCall(RGIsTrivial(nep->rg,&istrivial));
162
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.
45 if (!istrivial) PetscCall(RGView(nep->rg,viewer));
163
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
45 if (nep->useds) {
164
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.
45 if (!nep->ds) PetscCall(NEPGetDS(nep,&nep->ds));
165
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(DSView(nep->ds,viewer));
166 }
167
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
45 PetscCall(PetscViewerPopFormat(viewer));
168
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
45 if (nep->refine!=NEP_REFINE_NONE) {
169
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
10 PetscCall(PetscViewerASCIIPushTab(viewer));
170
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
10 if (nep->npart>1) {
171 if (nep->refinesubc->color==0) {
172 PetscCall(PetscSubcommGetChild(nep->refinesubc,&child));
173 PetscCall(PetscViewerASCIIGetStdout(child,&sviewer));
174 PetscCall(KSPView(nep->refineksp,sviewer));
175 }
176
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
10 } else PetscCall(KSPView(nep->refineksp,viewer));
177
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
10 PetscCall(PetscViewerASCIIPopTab(viewer));
178 }
179
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.
9 PetscFunctionReturn(PETSC_SUCCESS);
180 }
181
182 /*@
183 NEPViewFromOptions - View from options
184
185 Collective
186
187 Input Parameters:
188 + nep - the nonlinear eigensolver context
189 . obj - optional object
190 - name - command line option
191
192 Level: intermediate
193
194 .seealso: NEPView(), NEPCreate()
195 @*/
196 2970 PetscErrorCode NEPViewFromOptions(NEP nep,PetscObject obj,const char name[])
197 {
198
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2970 PetscFunctionBegin;
199
3/16
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
2970 PetscValidHeaderSpecific(nep,NEP_CLASSID,1);
200
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
2970 PetscCall(PetscObjectViewFromOptions((PetscObject)nep,obj,name));
201
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.
566 PetscFunctionReturn(PETSC_SUCCESS);
202 }
203
204 /*@
205 NEPConvergedReasonView - Displays the reason a NEP solve converged or diverged.
206
207 Collective
208
209 Input Parameters:
210 + nep - the nonlinear eigensolver context
211 - viewer - the viewer to display the reason
212
213 Options Database Keys:
214 . -nep_converged_reason - print reason for convergence, and number of iterations
215
216 Note:
217 To change the format of the output call PetscViewerPushFormat(viewer,format) before
218 this call. Use PETSC_VIEWER_DEFAULT for the default, use PETSC_VIEWER_FAILED to only
219 display a reason if it fails. The latter can be set in the command line with
220 -nep_converged_reason ::failed
221
222 Level: intermediate
223
224 .seealso: NEPSetConvergenceTest(), NEPSetTolerances(), NEPGetIterationNumber(), NEPConvergedReasonViewFromOptions()
225 @*/
226 20 PetscErrorCode NEPConvergedReasonView(NEP nep,PetscViewer viewer)
227 {
228 20 PetscBool isAscii;
229 20 PetscViewerFormat format;
230
231
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
20 PetscFunctionBegin;
232
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
20 if (!viewer) viewer = PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)nep));
233
4/6
✓ Branch 0 taken 2 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));
234
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
20 if (isAscii) {
235
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
20 PetscCall(PetscViewerGetFormat(viewer,&format));
236
4/6
✓ Branch 0 taken 2 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)nep)->tablevel));
237
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.
30 if (nep->reason > 0 && format != PETSC_VIEWER_FAILED) PetscCall(PetscViewerASCIIPrintf(viewer,"%s Nonlinear eigensolve converged (%" PetscInt_FMT " eigenpair%s) due to %s; iterations %" PetscInt_FMT "\n",((PetscObject)nep)->prefix?((PetscObject)nep)->prefix:"",nep->nconv,(nep->nconv>1)?"s":"",NEPConvergedReasons[nep->reason],nep->its));
238 else if (nep->reason <= 0) PetscCall(PetscViewerASCIIPrintf(viewer,"%s Nonlinear eigensolve did not converge due to %s; iterations %" PetscInt_FMT "\n",((PetscObject)nep)->prefix?((PetscObject)nep)->prefix:"",NEPConvergedReasons[nep->reason],nep->its));
239
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
20 PetscCall(PetscViewerASCIISubtractTab(viewer,((PetscObject)nep)->tablevel));
240 }
241
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);
242 }
243
244 /*@
245 NEPConvergedReasonViewFromOptions - Processes command line options to determine if/how
246 the NEP converged reason is to be viewed.
247
248 Collective
249
250 Input Parameter:
251 . nep - the nonlinear eigensolver context
252
253 Level: developer
254
255 .seealso: NEPConvergedReasonView()
256 @*/
257 1485 PetscErrorCode NEPConvergedReasonViewFromOptions(NEP nep)
258 {
259 1485 PetscViewer viewer;
260 1485 PetscBool flg;
261 1485 static PetscBool incall = PETSC_FALSE;
262 1485 PetscViewerFormat format;
263
264
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1485 PetscFunctionBegin;
265
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.
1485 if (incall) PetscFunctionReturn(PETSC_SUCCESS);
266 1485 incall = PETSC_TRUE;
267
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1485 PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,"-nep_converged_reason",&viewer,&format,&flg));
268
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1485 if (flg) {
269
4/6
✓ Branch 0 taken 2 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));
270
4/6
✓ Branch 0 taken 2 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(NEPConvergedReasonView(nep,viewer));
271
4/6
✓ Branch 0 taken 2 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));
272
4/6
✓ Branch 0 taken 2 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));
273 }
274 1485 incall = PETSC_FALSE;
275
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.
1485 PetscFunctionReturn(PETSC_SUCCESS);
276 }
277
278 1404 static PetscErrorCode NEPErrorView_ASCII(NEP nep,NEPErrorType etype,PetscViewer viewer)
279 {
280 1404 PetscReal error;
281 1404 PetscInt i,j,k,nvals;
282
283
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1404 PetscFunctionBegin;
284
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
1404 nvals = (nep->which==NEP_ALL)? nep->nconv: nep->nev;
285
3/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
1404 if (nep->which!=NEP_ALL && nep->nconv<nvals) {
286 PetscCall(PetscViewerASCIIPrintf(viewer," Problem: less than %" PetscInt_FMT " eigenvalues converged\n\n",nep->nev));
287 PetscFunctionReturn(PETSC_SUCCESS);
288 }
289
3/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
1404 if (nep->which==NEP_ALL && !nvals) {
290 PetscCall(PetscViewerASCIIPrintf(viewer," No eigenvalues have been found\n\n"));
291 PetscFunctionReturn(PETSC_SUCCESS);
292 }
293
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
5303 for (i=0;i<nvals;i++) {
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.
3899 PetscCall(NEPComputeError(nep,i,etype,&error));
295
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
3899 if (error>=5.0*nep->tol) {
296 PetscCall(PetscViewerASCIIPrintf(viewer," Problem: some of the first %" PetscInt_FMT " relative errors are higher than the tolerance\n\n",nvals));
297
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.
761 PetscFunctionReturn(PETSC_SUCCESS);
298 }
299 }
300
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.
1404 if (nep->which==NEP_ALL) PetscCall(PetscViewerASCIIPrintf(viewer," Found %" PetscInt_FMT " eigenvalues, all of them computed up to the required tolerance:",nvals));
301
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.
1208 else PetscCall(PetscViewerASCIIPrintf(viewer," All requested eigenvalues computed up to the required tolerance:"));
302
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
2819 for (i=0;i<=(nvals-1)/8;i++) {
303
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1415 PetscCall(PetscViewerASCIIPrintf(viewer,"\n "));
304
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
5314 for (j=0;j<PetscMin(8,nvals-8*i);j++) {
305 3899 k = nep->perm[8*i+j];
306
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
3899 PetscCall(SlepcPrintEigenvalueASCII(viewer,nep->eigr[k],nep->eigi[k]));
307
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.
3899 if (8*i+j+1<nvals) PetscCall(PetscViewerASCIIPrintf(viewer,", "));
308 }
309 }
310
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1404 PetscCall(PetscViewerASCIIPrintf(viewer,"\n\n"));
311
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.
269 PetscFunctionReturn(PETSC_SUCCESS);
312 }
313
314 10 static PetscErrorCode NEPErrorView_DETAIL(NEP nep,NEPErrorType etype,PetscViewer viewer)
315 {
316 10 PetscReal error,re,im;
317 10 PetscScalar kr,ki;
318 10 PetscInt i;
319 10 char ex[30],sep[]=" ---------------------- --------------------\n";
320
321
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
10 PetscFunctionBegin;
322
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.
10 if (!nep->nconv) PetscFunctionReturn(PETSC_SUCCESS);
323
1/4
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
10 switch (etype) {
324 case NEP_ERROR_ABSOLUTE:
325 PetscCall(PetscSNPrintf(ex,sizeof(ex)," ||T(k)x||"));
326 break;
327 case NEP_ERROR_RELATIVE:
328 PetscCall(PetscSNPrintf(ex,sizeof(ex)," ||T(k)x||/||kx||"));
329 break;
330 10 case NEP_ERROR_BACKWARD:
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.
10 PetscCall(PetscSNPrintf(ex,sizeof(ex)," eta(x,k)"));
332 break;
333 }
334
4/6
✓ Branch 0 taken 2 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,"%s k %s\n%s",sep,ex,sep));
335
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
20 for (i=0;i<nep->nconv;i++) {
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.
10 PetscCall(NEPGetEigenpair(nep,i,&kr,&ki,NULL,NULL));
337
4/6
✓ Branch 0 taken 2 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(NEPComputeError(nep,i,etype,&error));
338 #if defined(PETSC_USE_COMPLEX)
339 5 re = PetscRealPart(kr);
340 5 im = PetscImaginaryPart(kr);
341 #else
342 5 re = kr;
343 5 im = ki;
344 #endif
345
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," % 9f%+9fi %12g\n",(double)re,(double)im,(double)error));
346
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," % 12f %12g\n",(double)re,(double)error));
347 }
348
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
10 PetscCall(PetscViewerASCIIPrintf(viewer,"%s",sep));
349
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);
350 }
351
352 20 static PetscErrorCode NEPErrorView_MATLAB(NEP nep,NEPErrorType etype,PetscViewer viewer)
353 {
354 20 PetscReal error;
355 20 PetscInt i;
356 20 const char *name;
357
358
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
20 PetscFunctionBegin;
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.
20 PetscCall(PetscObjectGetName((PetscObject)nep,&name));
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.
20 PetscCall(PetscViewerASCIIPrintf(viewer,"Error_%s = [\n",name));
361
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
70 for (i=0;i<nep->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.
50 PetscCall(NEPComputeError(nep,i,etype,&error));
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.
50 PetscCall(PetscViewerASCIIPrintf(viewer,"%18.16e\n",(double)error));
364 }
365
4/6
✓ Branch 0 taken 2 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"));
366
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);
367 }
368
369 /*@
370 NEPErrorView - Displays the errors associated with the computed solution
371 (as well as the eigenvalues).
372
373 Collective
374
375 Input Parameters:
376 + nep - the nonlinear eigensolver context
377 . etype - error type
378 - viewer - optional visualization context
379
380 Options Database Keys:
381 + -nep_error_absolute - print absolute errors of each eigenpair
382 . -nep_error_relative - print relative errors of each eigenpair
383 - -nep_error_backward - print backward errors of each eigenpair
384
385 Notes:
386 By default, this function checks the error of all eigenpairs and prints
387 the eigenvalues if all of them are below the requested tolerance.
388 If the viewer has format=PETSC_VIEWER_ASCII_INFO_DETAIL then a table with
389 eigenvalues and corresponding errors is printed.
390
391 Level: intermediate
392
393 .seealso: NEPSolve(), NEPValuesView(), NEPVectorsView()
394 @*/
395 1434 PetscErrorCode NEPErrorView(NEP nep,NEPErrorType etype,PetscViewer viewer)
396 {
397 1434 PetscBool isascii;
398 1434 PetscViewerFormat format;
399
400
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1434 PetscFunctionBegin;
401
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.
1434 PetscValidHeaderSpecific(nep,NEP_CLASSID,1);
402
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.
1434 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)nep),&viewer));
403
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.
1434 PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,3);
404
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.
1434 PetscCheckSameComm(nep,1,viewer,3);
405
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1434 NEPCheckSolved(nep,1);
406
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1434 PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii));
407
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.
1434 if (!isascii) PetscFunctionReturn(PETSC_SUCCESS);
408
409
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1434 PetscCall(PetscViewerGetFormat(viewer,&format));
410
3/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
1434 switch (format) {
411 1404 case PETSC_VIEWER_DEFAULT:
412 case PETSC_VIEWER_ASCII_INFO:
413
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1404 PetscCall(NEPErrorView_ASCII(nep,etype,viewer));
414 break;
415 10 case PETSC_VIEWER_ASCII_INFO_DETAIL:
416
4/6
✓ Branch 0 taken 2 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(NEPErrorView_DETAIL(nep,etype,viewer));
417 break;
418 20 case PETSC_VIEWER_ASCII_MATLAB:
419
4/6
✓ Branch 0 taken 2 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(NEPErrorView_MATLAB(nep,etype,viewer));
420 break;
421 default:
422 PetscCall(PetscInfo(nep,"Unsupported viewer format %s\n",PetscViewerFormats[format]));
423 }
424
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.
275 PetscFunctionReturn(PETSC_SUCCESS);
425 }
426
427 /*@
428 NEPErrorViewFromOptions - Processes command line options to determine if/how
429 the errors of the computed solution are to be viewed.
430
431 Collective
432
433 Input Parameter:
434 . nep - the nonlinear eigensolver context
435
436 Level: developer
437
438 .seealso: NEPErrorView()
439 @*/
440 1485 PetscErrorCode NEPErrorViewFromOptions(NEP nep)
441 {
442 1485 PetscViewer viewer;
443 1485 PetscBool flg;
444 1485 static PetscBool incall = PETSC_FALSE;
445 1485 PetscViewerFormat format;
446
447
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1485 PetscFunctionBegin;
448
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.
1485 if (incall) PetscFunctionReturn(PETSC_SUCCESS);
449 1485 incall = PETSC_TRUE;
450
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1485 PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,"-nep_error_absolute",&viewer,&format,&flg));
451
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1485 if (flg) {
452
4/6
✓ Branch 0 taken 2 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));
453
4/6
✓ Branch 0 taken 2 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(NEPErrorView(nep,NEP_ERROR_ABSOLUTE,viewer));
454
4/6
✓ Branch 0 taken 2 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));
455
4/6
✓ Branch 0 taken 2 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));
456 }
457
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1485 PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,"-nep_error_relative",&viewer,&format,&flg));
458
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1485 if (flg) {
459
4/6
✓ Branch 0 taken 2 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));
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(NEPErrorView(nep,NEP_ERROR_RELATIVE,viewer));
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(PetscViewerPopFormat(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(PetscViewerDestroy(&viewer));
463 }
464
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1485 PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,"-nep_error_backward",&viewer,&format,&flg));
465
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1485 if (flg) {
466
4/6
✓ Branch 0 taken 2 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));
467
4/6
✓ Branch 0 taken 2 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(NEPErrorView(nep,NEP_ERROR_BACKWARD,viewer));
468
4/6
✓ Branch 0 taken 2 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));
469
4/6
✓ Branch 0 taken 2 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));
470 }
471 1485 incall = PETSC_FALSE;
472
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.
1485 PetscFunctionReturn(PETSC_SUCCESS);
473 }
474
475 16 static PetscErrorCode NEPValuesView_DRAW(NEP nep,PetscViewer viewer)
476 {
477 16 PetscDraw draw;
478 16 PetscDrawSP drawsp;
479 16 PetscReal re,im;
480 16 PetscInt i,k;
481
482
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
16 PetscFunctionBegin;
483
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 (!nep->nconv) PetscFunctionReturn(PETSC_SUCCESS);
484
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));
485
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"));
486
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));
487
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 8 times.
72 for (i=0;i<nep->nconv;i++) {
488 56 k = nep->perm[i];
489 #if defined(PETSC_USE_COMPLEX)
490 21 re = PetscRealPart(nep->eigr[k]);
491 21 im = PetscImaginaryPart(nep->eigr[k]);
492 #else
493 35 re = nep->eigr[k];
494 35 im = nep->eigi[k];
495 #endif
496
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.
56 PetscCall(PetscDrawSPAddPoint(drawsp,&re,&im));
497 }
498
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));
499
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));
500
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));
501
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);
502 }
503
504 10 static PetscErrorCode NEPValuesView_BINARY(NEP nep,PetscViewer viewer)
505 {
506 #if defined(PETSC_HAVE_COMPLEX)
507 10 PetscInt i,k;
508 10 PetscComplex *ev;
509 #endif
510
511
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
10 PetscFunctionBegin;
512 #if defined(PETSC_HAVE_COMPLEX)
513
4/6
✓ Branch 0 taken 2 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(nep->nconv,&ev));
514
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
50 for (i=0;i<nep->nconv;i++) {
515 40 k = nep->perm[i];
516 #if defined(PETSC_USE_COMPLEX)
517 20 ev[i] = nep->eigr[k];
518 #else
519 20 ev[i] = PetscCMPLX(nep->eigr[k],nep->eigi[k]);
520 #endif
521 }
522
4/6
✓ Branch 0 taken 2 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,nep->nconv,PETSC_COMPLEX));
523
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));
524 #endif
525
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);
526 }
527
528 #if defined(PETSC_HAVE_HDF5)
529 static PetscErrorCode NEPValuesView_HDF5(NEP nep,PetscViewer viewer)
530 {
531 PetscInt i,k,n,N;
532 PetscMPIInt rank;
533 Vec v;
534 char vname[30];
535 const char *ename;
536
537 PetscFunctionBegin;
538 PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)nep),&rank));
539 N = nep->nconv;
540 n = rank? 0: N;
541 /* create a vector containing the eigenvalues */
542 PetscCall(VecCreateMPI(PetscObjectComm((PetscObject)nep),n,N,&v));
543 PetscCall(PetscObjectGetName((PetscObject)nep,&ename));
544 PetscCall(PetscSNPrintf(vname,sizeof(vname),"eigr_%s",ename));
545 PetscCall(PetscObjectSetName((PetscObject)v,vname));
546 if (!rank) {
547 for (i=0;i<nep->nconv;i++) {
548 k = nep->perm[i];
549 PetscCall(VecSetValue(v,i,nep->eigr[k],INSERT_VALUES));
550 }
551 }
552 PetscCall(VecAssemblyBegin(v));
553 PetscCall(VecAssemblyEnd(v));
554 PetscCall(VecView(v,viewer));
555 #if !defined(PETSC_USE_COMPLEX)
556 /* in real scalars write the imaginary part as a separate vector */
557 PetscCall(PetscSNPrintf(vname,sizeof(vname),"eigi_%s",ename));
558 PetscCall(PetscObjectSetName((PetscObject)v,vname));
559 if (!rank) {
560 for (i=0;i<nep->nconv;i++) {
561 k = nep->perm[i];
562 PetscCall(VecSetValue(v,i,nep->eigi[k],INSERT_VALUES));
563 }
564 }
565 PetscCall(VecAssemblyBegin(v));
566 PetscCall(VecAssemblyEnd(v));
567 PetscCall(VecView(v,viewer));
568 #endif
569 PetscCall(VecDestroy(&v));
570 PetscFunctionReturn(PETSC_SUCCESS);
571 }
572 #endif
573
574 10 static PetscErrorCode NEPValuesView_ASCII(NEP nep,PetscViewer viewer)
575 {
576 10 PetscInt i,k;
577
578
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
10 PetscFunctionBegin;
579
4/6
✓ Branch 0 taken 2 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"));
580
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
20 for (i=0;i<nep->nconv;i++) {
581 10 k = nep->perm[i];
582
4/6
✓ Branch 0 taken 2 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," "));
583
4/6
✓ Branch 0 taken 2 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(SlepcPrintEigenvalueASCII(viewer,nep->eigr[k],nep->eigi[k]));
584
4/6
✓ Branch 0 taken 2 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"));
585 }
586
4/6
✓ Branch 0 taken 2 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"));
587
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);
588 }
589
590 10 static PetscErrorCode NEPValuesView_MATLAB(NEP nep,PetscViewer viewer)
591 {
592 10 PetscInt i,k;
593 10 PetscReal re,im;
594 10 const char *name;
595
596
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
10 PetscFunctionBegin;
597
4/6
✓ Branch 0 taken 2 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)nep,&name));
598
4/6
✓ Branch 0 taken 2 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));
599
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
20 for (i=0;i<nep->nconv;i++) {
600 10 k = nep->perm[i];
601 #if defined(PETSC_USE_COMPLEX)
602 5 re = PetscRealPart(nep->eigr[k]);
603 5 im = PetscImaginaryPart(nep->eigr[k]);
604 #else
605 5 re = nep->eigr[k];
606 5 im = nep->eigi[k];
607 #endif
608
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));
609
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));
610 }
611
4/6
✓ Branch 0 taken 2 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"));
612
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);
613 }
614
615 /*@
616 NEPValuesView - Displays the computed eigenvalues in a viewer.
617
618 Collective
619
620 Input Parameters:
621 + nep - the nonlinear eigensolver context
622 - viewer - the viewer
623
624 Options Database Key:
625 . -nep_view_values - print computed eigenvalues
626
627 Level: intermediate
628
629 .seealso: NEPSolve(), NEPVectorsView(), NEPErrorView()
630 @*/
631 46 PetscErrorCode NEPValuesView(NEP nep,PetscViewer viewer)
632 {
633 46 PetscBool isascii,isdraw,isbinary;
634 46 PetscViewerFormat format;
635 #if defined(PETSC_HAVE_HDF5)
636 PetscBool ishdf5;
637 #endif
638
639
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
46 PetscFunctionBegin;
640
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(nep,NEP_CLASSID,1);
641
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)nep),&viewer));
642
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);
643
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(nep,1,viewer,2);
644
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
46 NEPCheckSolved(nep,1);
645
4/6
✓ Branch 0 taken 2 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));
646
4/6
✓ Branch 0 taken 2 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));
647 #if defined(PETSC_HAVE_HDF5)
648 PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERHDF5,&ishdf5));
649 #endif
650
4/6
✓ Branch 0 taken 2 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));
651
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(NEPValuesView_DRAW(nep,viewer));
652
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(NEPValuesView_BINARY(nep,viewer));
653 #if defined(PETSC_HAVE_HDF5)
654 else if (ishdf5) PetscCall(NEPValuesView_HDF5(nep,viewer));
655 #endif
656
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
20 else if (isascii) {
657
4/6
✓ Branch 0 taken 2 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));
658
2/3
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
20 switch (format) {
659 10 case PETSC_VIEWER_DEFAULT:
660 case PETSC_VIEWER_ASCII_INFO:
661 case PETSC_VIEWER_ASCII_INFO_DETAIL:
662
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
10 PetscCall(NEPValuesView_ASCII(nep,viewer));
663 break;
664 10 case PETSC_VIEWER_ASCII_MATLAB:
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.
10 PetscCall(NEPValuesView_MATLAB(nep,viewer));
666 break;
667 default:
668 PetscCall(PetscInfo(nep,"Unsupported viewer format %s\n",PetscViewerFormats[format]));
669 }
670 }
671
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);
672 }
673
674 /*@
675 NEPValuesViewFromOptions - Processes command line options to determine if/how
676 the computed eigenvalues are to be viewed.
677
678 Collective
679
680 Input Parameter:
681 . nep - the nonlinear eigensolver context
682
683 Level: developer
684
685 .seealso: NEPValuesView()
686 @*/
687 1485 PetscErrorCode NEPValuesViewFromOptions(NEP nep)
688 {
689 1485 PetscViewer viewer;
690 1485 PetscBool flg;
691 1485 static PetscBool incall = PETSC_FALSE;
692 1485 PetscViewerFormat format;
693
694
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1485 PetscFunctionBegin;
695
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.
1485 if (incall) PetscFunctionReturn(PETSC_SUCCESS);
696 1485 incall = PETSC_TRUE;
697
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
1485 PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,"-nep_view_values",&viewer,&format,&flg));
698
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1485 if (flg) {
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.
46 PetscCall(PetscViewerPushFormat(viewer,format));
700
4/6
✓ Branch 0 taken 2 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(NEPValuesView(nep,viewer));
701
4/6
✓ Branch 0 taken 2 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));
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.
46 PetscCall(PetscViewerDestroy(&viewer));
703 }
704 1485 incall = PETSC_FALSE;
705
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.
1485 PetscFunctionReturn(PETSC_SUCCESS);
706 }
707
708 /*@
709 NEPVectorsView - Outputs computed eigenvectors to a viewer.
710
711 Collective
712
713 Input Parameters:
714 + nep - the nonlinear eigensolver context
715 - viewer - the viewer
716
717 Options Database Key:
718 . -nep_view_vectors - output eigenvectors.
719
720 Notes:
721 If PETSc was configured with real scalars, complex conjugate eigenvectors
722 will be viewed as two separate real vectors, one containing the real part
723 and another one containing the imaginary part.
724
725 If left eigenvectors were computed with a two-sided eigensolver, the right
726 and left eigenvectors are interleaved, that is, the vectors are output in
727 the following order X0, Y0, X1, Y1, X2, Y2, ...
728
729 Level: intermediate
730
731 .seealso: NEPSolve(), NEPValuesView(), NEPErrorView()
732 @*/
733 30 PetscErrorCode NEPVectorsView(NEP nep,PetscViewer viewer)
734 {
735 30 PetscInt i,k;
736 30 Vec xr,xi=NULL;
737
738
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
30 PetscFunctionBegin;
739
3/16
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
30 PetscValidHeaderSpecific(nep,NEP_CLASSID,1);
740
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.
30 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)nep),&viewer));
741
3/16
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
30 PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2);
742
13/32
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
30 PetscCheckSameComm(nep,1,viewer,2);
743
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
30 NEPCheckSolved(nep,1);
744
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
30 if (nep->nconv) {
745
4/6
✓ Branch 0 taken 2 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(NEPComputeVectors(nep));
746
4/6
✓ Branch 0 taken 2 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(BVCreateVec(nep->V,&xr));
747 #if !defined(PETSC_USE_COMPLEX)
748
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.
15 PetscCall(BVCreateVec(nep->V,&xi));
749 #endif
750
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
60 for (i=0;i<nep->nconv;i++) {
751 30 k = nep->perm[i];
752
4/6
✓ Branch 0 taken 2 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(BV_GetEigenvector(nep->V,k,nep->eigi[k],xr,xi));
753
4/6
✓ Branch 0 taken 2 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(SlepcViewEigenvector(viewer,xr,xi,"X",i,(PetscObject)nep));
754
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
30 if (nep->twosided) {
755
4/6
✓ Branch 0 taken 2 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(BV_GetEigenvector(nep->W,k,nep->eigi[k],xr,xi));
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.
30 PetscCall(SlepcViewEigenvector(viewer,xr,xi,"Y",i,(PetscObject)nep));
757 }
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.
30 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.
15 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.
6 PetscFunctionReturn(PETSC_SUCCESS);
765 }
766
767 /*@
768 NEPVectorsViewFromOptions - Processes command line options to determine if/how
769 the computed eigenvectors are to be viewed.
770
771 Collective
772
773 Input Parameter:
774 . nep - the nonlinear eigensolver context
775
776 Level: developer
777
778 .seealso: NEPVectorsView()
779 @*/
780 1485 PetscErrorCode NEPVectorsViewFromOptions(NEP nep)
781 {
782 1485 PetscViewer viewer;
783 1485 PetscBool flg = PETSC_FALSE;
784 1485 static PetscBool incall = PETSC_FALSE;
785 1485 PetscViewerFormat format;
786
787
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1485 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.
1485 if (incall) PetscFunctionReturn(PETSC_SUCCESS);
789 1485 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.
1485 PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,"-nep_view_vectors",&viewer,&format,&flg));
791
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1485 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.
30 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.
30 PetscCall(NEPVectorsView(nep,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.
30 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.
30 PetscCall(PetscViewerDestroy(&viewer));
796 }
797 1485 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.
1485 PetscFunctionReturn(PETSC_SUCCESS);
799 }
800