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 options that can be set via the command-line | ||
12 | or procedurally | ||
13 | */ | ||
14 | |||
15 | #include <slepc/private/nepimpl.h> /*I "slepcnep.h" I*/ | ||
16 | #include <petscdraw.h> | ||
17 | |||
18 | /*@C | ||
19 | NEPMonitorSetFromOptions - Sets a monitor function and viewer appropriate for the type | ||
20 | indicated by the user. | ||
21 | |||
22 | Collective | ||
23 | |||
24 | Input Parameters: | ||
25 | + nep - the nonlinear eigensolver context | ||
26 | . opt - the command line option for this monitor | ||
27 | . name - the monitor type one is seeking | ||
28 | . ctx - an optional user context for the monitor, or NULL | ||
29 | - trackall - whether this monitor tracks all eigenvalues or not | ||
30 | |||
31 | Level: developer | ||
32 | |||
33 | .seealso: NEPMonitorSet(), NEPSetTrackAll() | ||
34 | @*/ | ||
35 | 3927 | PetscErrorCode NEPMonitorSetFromOptions(NEP nep,const char opt[],const char name[],void *ctx,PetscBool trackall) | |
36 | { | ||
37 | 3927 | PetscErrorCode (*mfunc)(NEP,PetscInt,PetscInt,PetscScalar*,PetscScalar*,PetscReal*,PetscInt,void*); | |
38 | 3927 | PetscErrorCode (*cfunc)(PetscViewer,PetscViewerFormat,void*,PetscViewerAndFormat**); | |
39 | 3927 | PetscErrorCode (*dfunc)(PetscViewerAndFormat**); | |
40 | 3927 | PetscViewerAndFormat *vf; | |
41 | 3927 | PetscViewer viewer; | |
42 | 3927 | PetscViewerFormat format; | |
43 | 3927 | PetscViewerType vtype; | |
44 | 3927 | char key[PETSC_MAX_PATH_LEN]; | |
45 | 3927 | PetscBool flg; | |
46 | |||
47 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
3927 | PetscFunctionBegin; |
48 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
3927 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,opt,&viewer,&format,&flg)); |
49 |
8/14✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
3927 | if (!flg) PetscFunctionReturn(PETSC_SUCCESS); |
50 | |||
51 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
54 | PetscCall(PetscViewerGetType(viewer,&vtype)); |
52 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
54 | PetscCall(SlepcMonitorMakeKey_Internal(name,vtype,format,key)); |
53 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
54 | PetscCall(PetscFunctionListFind(NEPMonitorList,key,&mfunc)); |
54 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
54 | PetscCheck(mfunc,PetscObjectComm((PetscObject)nep),PETSC_ERR_SUP,"Specified viewer and format not supported"); |
55 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
54 | PetscCall(PetscFunctionListFind(NEPMonitorCreateList,key,&cfunc)); |
56 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
54 | PetscCall(PetscFunctionListFind(NEPMonitorDestroyList,key,&dfunc)); |
57 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
54 | if (!cfunc) cfunc = PetscViewerAndFormatCreate_Internal; |
58 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
54 | if (!dfunc) dfunc = PetscViewerAndFormatDestroy; |
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.
|
54 | PetscCall((*cfunc)(viewer,format,ctx,&vf)); |
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.
|
54 | PetscCall(PetscViewerDestroy(&viewer)); |
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.
|
54 | PetscCall(NEPMonitorSet(nep,mfunc,vf,(PetscCtxDestroyFn*)dfunc)); |
63 |
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.
|
54 | if (trackall) PetscCall(NEPSetTrackAll(nep,PETSC_TRUE)); |
64 |
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); |
65 | } | ||
66 | |||
67 | /*@ | ||
68 | NEPSetFromOptions - Sets NEP options from the options database. | ||
69 | This routine must be called before NEPSetUp() if the user is to be | ||
70 | allowed to set the solver type. | ||
71 | |||
72 | Collective | ||
73 | |||
74 | Input Parameters: | ||
75 | . nep - the nonlinear eigensolver context | ||
76 | |||
77 | Notes: | ||
78 | To see all options, run your program with the -help option. | ||
79 | |||
80 | Level: beginner | ||
81 | |||
82 | .seealso: NEPSetOptionsPrefix() | ||
83 | @*/ | ||
84 | 1309 | PetscErrorCode NEPSetFromOptions(NEP nep) | |
85 | { | ||
86 | 1309 | char type[256]; | |
87 | 1309 | PetscBool set,flg,flg1,flg2,flg3,flg4,flg5,bval; | |
88 | 1309 | PetscReal r; | |
89 | 1309 | PetscScalar s; | |
90 | 1309 | PetscInt i,j,k; | |
91 | 1309 | NEPRefine refine; | |
92 | 1309 | NEPRefineScheme scheme; | |
93 | |||
94 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1309 | PetscFunctionBegin; |
95 |
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.
|
1309 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
96 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(NEPRegisterAll()); |
97 |
8/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2 times.
|
3927 | PetscObjectOptionsBegin((PetscObject)nep); |
98 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1759 | PetscCall(PetscOptionsFList("-nep_type","Nonlinear eigensolver method","NEPSetType",NEPList,(char*)(((PetscObject)nep)->type_name?((PetscObject)nep)->type_name:NEPRII),type,sizeof(type),&flg)); |
99 |
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.
|
1309 | if (flg) PetscCall(NEPSetType(nep,type)); |
100 |
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.
|
369 | else if (!((PetscObject)nep)->type_name) PetscCall(NEPSetType(nep,NEPRII)); |
101 | |||
102 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBoolGroupBegin("-nep_general","General nonlinear eigenvalue problem","NEPSetProblemType",&flg)); |
103 |
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.
|
1309 | if (flg) PetscCall(NEPSetProblemType(nep,NEP_GENERAL)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroupEnd("-nep_rational","Rational eigenvalue problem","NEPSetProblemType",&flg)); |
105 |
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.
|
1309 | if (flg) PetscCall(NEPSetProblemType(nep,NEP_RATIONAL)); |
106 | |||
107 | 1309 | refine = nep->refine; | |
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.
|
1309 | PetscCall(PetscOptionsEnum("-nep_refine","Iterative refinement method","NEPSetRefine",NEPRefineTypes,(PetscEnum)refine,(PetscEnum*)&refine,&flg1)); |
109 | 1309 | i = nep->npart; | |
110 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsInt("-nep_refine_partitions","Number of partitions of the communicator for iterative refinement","NEPSetRefine",nep->npart,&i,&flg2)); |
111 | 1309 | r = nep->rtol; | |
112 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1325 | PetscCall(PetscOptionsReal("-nep_refine_tol","Tolerance for iterative refinement","NEPSetRefine",nep->rtol==(PetscReal)PETSC_DETERMINE?SLEPC_DEFAULT_TOL/1000:nep->rtol,&r,&flg3)); |
113 | 1309 | j = nep->rits; | |
114 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsInt("-nep_refine_its","Maximum number of iterations for iterative refinement","NEPSetRefine",nep->rits,&j,&flg4)); |
115 | 1309 | scheme = nep->scheme; | |
116 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsEnum("-nep_refine_scheme","Scheme used for linear systems within iterative refinement","NEPSetRefine",NEPRefineSchemes,(PetscEnum)scheme,(PetscEnum*)&scheme,&flg5)); |
117 |
10/16✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 8 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
|
1309 | if (flg1 || flg2 || flg3 || flg4 || flg5) PetscCall(NEPSetRefine(nep,refine,i,r,j,scheme)); |
118 | |||
119 | 1309 | i = nep->max_it; | |
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.
|
1309 | PetscCall(PetscOptionsInt("-nep_max_it","Maximum number of iterations","NEPSetTolerances",nep->max_it,&i,&flg1)); |
121 | 1309 | r = nep->tol; | |
122 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
2102 | PetscCall(PetscOptionsReal("-nep_tol","Tolerance","NEPSetTolerances",SlepcDefaultTol(nep->tol),&r,&flg2)); |
123 |
7/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ 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.
|
1309 | if (flg1 || flg2) PetscCall(NEPSetTolerances(nep,r,i)); |
124 | |||
125 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBoolGroupBegin("-nep_conv_rel","Relative error convergence test","NEPSetConvergenceTest",&flg)); |
126 |
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.
|
1309 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_REL)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_conv_norm","Convergence test relative to the matrix norms","NEPSetConvergenceTest",&flg)); |
128 |
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.
|
1309 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_NORM)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_conv_abs","Absolute error convergence test","NEPSetConvergenceTest",&flg)); |
130 |
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.
|
1309 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_ABS)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroupEnd("-nep_conv_user","User-defined convergence test","NEPSetConvergenceTest",&flg)); |
132 |
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.
|
1309 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_USER)); |
133 | |||
134 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBoolGroupBegin("-nep_stop_basic","Stop iteration if all eigenvalues converged or max_it reached","NEPSetStoppingTest",&flg)); |
135 |
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.
|
1309 | if (flg) PetscCall(NEPSetStoppingTest(nep,NEP_STOP_BASIC)); |
136 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBoolGroupEnd("-nep_stop_user","User-defined stopping test","NEPSetStoppingTest",&flg)); |
137 |
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.
|
1309 | if (flg) PetscCall(NEPSetStoppingTest(nep,NEP_STOP_USER)); |
138 | |||
139 | 1309 | i = nep->nev; | |
140 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsInt("-nep_nev","Number of eigenvalues to compute","NEPSetDimensions",nep->nev,&i,&flg1)); |
141 | 1309 | j = nep->ncv; | |
142 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsInt("-nep_ncv","Number of basis vectors","NEPSetDimensions",nep->ncv,&j,&flg2)); |
143 | 1309 | k = nep->mpd; | |
144 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsInt("-nep_mpd","Maximum dimension of projected problem","NEPSetDimensions",nep->mpd,&k,&flg3)); |
145 |
9/12✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 8 times.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
1309 | if (flg1 || flg2 || flg3) PetscCall(NEPSetDimensions(nep,i,j,k)); |
146 | |||
147 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBoolGroupBegin("-nep_largest_magnitude","Compute largest eigenvalues in magnitude","NEPSetWhichEigenpairs",&flg)); |
148 |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_LARGEST_MAGNITUDE)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_smallest_magnitude","Compute smallest eigenvalues in magnitude","NEPSetWhichEigenpairs",&flg)); |
150 |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_SMALLEST_MAGNITUDE)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_largest_real","Compute eigenvalues with largest real parts","NEPSetWhichEigenpairs",&flg)); |
152 |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_LARGEST_REAL)); |
153 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_smallest_real","Compute eigenvalues with smallest real parts","NEPSetWhichEigenpairs",&flg)); |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_SMALLEST_REAL)); |
155 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_largest_imaginary","Compute eigenvalues with largest imaginary parts","NEPSetWhichEigenpairs",&flg)); |
156 |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_LARGEST_IMAGINARY)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_smallest_imaginary","Compute eigenvalues with smallest imaginary parts","NEPSetWhichEigenpairs",&flg)); |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_SMALLEST_IMAGINARY)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_target_magnitude","Compute eigenvalues closest to target","NEPSetWhichEigenpairs",&flg)); |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_MAGNITUDE)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_target_real","Compute eigenvalues with real parts closest to target","NEPSetWhichEigenpairs",&flg)); |
162 |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_REAL)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroup("-nep_target_imaginary","Compute eigenvalues with imaginary parts closest to target","NEPSetWhichEigenpairs",&flg)); |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_IMAGINARY)); |
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.
|
1309 | PetscCall(PetscOptionsBoolGroupEnd("-nep_all","Compute all eigenvalues in a region","NEPSetWhichEigenpairs",&flg)); |
166 |
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.
|
1309 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_ALL)); |
167 | |||
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.
|
1309 | PetscCall(PetscOptionsScalar("-nep_target","Value of the target","NEPSetTarget",nep->target,&s,&flg)); |
169 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1309 | if (flg) { |
170 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 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.
|
727 | if (nep->which!=NEP_TARGET_REAL && nep->which!=NEP_TARGET_IMAGINARY) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_MAGNITUDE)); |
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.
|
727 | PetscCall(NEPSetTarget(nep,s)); |
172 | } | ||
173 | |||
174 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBool("-nep_two_sided","Use two-sided variant (to compute left eigenvectors)","NEPSetTwoSided",nep->twosided,&bval,&flg)); |
175 |
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.
|
1309 | if (flg) PetscCall(NEPSetTwoSided(nep,bval)); |
176 | |||
177 | /* -----------------------------------------------------------------------*/ | ||
178 | /* | ||
179 | Cancels all monitors hardwired into code before call to NEPSetFromOptions() | ||
180 | */ | ||
181 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsBool("-nep_monitor_cancel","Remove any hardwired monitor routines","NEPMonitorCancel",PETSC_FALSE,&flg,&set)); |
182 |
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.
|
1309 | if (set && flg) PetscCall(NEPMonitorCancel(nep)); |
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.
|
1309 | PetscCall(NEPMonitorSetFromOptions(nep,"-nep_monitor","first_approximation",NULL,PETSC_FALSE)); |
184 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(NEPMonitorSetFromOptions(nep,"-nep_monitor_all","all_approximations",NULL,PETSC_TRUE)); |
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.
|
1309 | PetscCall(NEPMonitorSetFromOptions(nep,"-nep_monitor_conv","convergence_history",NULL,PETSC_FALSE)); |
186 | |||
187 | /* -----------------------------------------------------------------------*/ | ||
188 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsName("-nep_view","Print detailed information on solver used","NEPView",&set)); |
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.
|
1309 | PetscCall(PetscOptionsName("-nep_view_vectors","View computed eigenvectors","NEPVectorsView",&set)); |
190 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsName("-nep_view_values","View computed eigenvalues","NEPValuesView",&set)); |
191 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsName("-nep_converged_reason","Print reason for convergence, and number of iterations","NEPConvergedReasonView",&set)); |
192 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsName("-nep_error_absolute","Print absolute errors of each eigenpair","NEPErrorView",&set)); |
193 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(PetscOptionsName("-nep_error_relative","Print relative errors of each eigenpair","NEPErrorView",&set)); |
194 | |||
195 |
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.
|
1309 | PetscTryTypeMethod(nep,setfromoptions,PetscOptionsObject); |
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.
|
1309 | PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)nep,PetscOptionsObject)); |
197 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscOptionsEnd(); |
198 | |||
199 |
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.
|
1309 | if (!nep->V) PetscCall(NEPGetBV(nep,&nep->V)); |
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.
|
1309 | PetscCall(BVSetFromOptions(nep->V)); |
201 |
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.
|
1309 | if (!nep->rg) PetscCall(NEPGetRG(nep,&nep->rg)); |
202 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(RGSetFromOptions(nep->rg)); |
203 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1309 | if (nep->useds) { |
204 |
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.
|
1059 | if (!nep->ds) PetscCall(NEPGetDS(nep,&nep->ds)); |
205 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1059 | PetscCall(NEPSetDSType(nep)); |
206 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1059 | PetscCall(DSSetFromOptions(nep->ds)); |
207 | } | ||
208 |
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.
|
1309 | if (!nep->refineksp) PetscCall(NEPRefineGetKSP(nep,&nep->refineksp)); |
209 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1309 | PetscCall(KSPSetFromOptions(nep->refineksp)); |
210 |
9/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2 times.
|
3888 | if (nep->fui==NEP_USER_INTERFACE_SPLIT) for (i=0;i<nep->nt;i++) PetscCall(FNSetFromOptions(nep->f[i])); |
211 |
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.
|
245 | PetscFunctionReturn(PETSC_SUCCESS); |
212 | } | ||
213 | |||
214 | /*@ | ||
215 | NEPGetTolerances - Gets the tolerance and maximum iteration count used | ||
216 | by the NEP convergence tests. | ||
217 | |||
218 | Not Collective | ||
219 | |||
220 | Input Parameter: | ||
221 | . nep - the nonlinear eigensolver context | ||
222 | |||
223 | Output Parameters: | ||
224 | + tol - the convergence tolerance | ||
225 | - maxits - maximum number of iterations | ||
226 | |||
227 | Notes: | ||
228 | The user can specify NULL for any parameter that is not needed. | ||
229 | |||
230 | Level: intermediate | ||
231 | |||
232 | .seealso: NEPSetTolerances() | ||
233 | @*/ | ||
234 | 87 | PetscErrorCode NEPGetTolerances(NEP nep,PetscReal *tol,PetscInt *maxits) | |
235 | { | ||
236 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
87 | PetscFunctionBegin; |
237 |
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.
|
87 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
238 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
87 | if (tol) *tol = nep->tol; |
239 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
87 | if (maxits) *maxits = nep->max_it; |
240 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
87 | PetscFunctionReturn(PETSC_SUCCESS); |
241 | } | ||
242 | |||
243 | /*@ | ||
244 | NEPSetTolerances - Sets the tolerance and maximum iteration count used | ||
245 | by the NEP convergence tests. | ||
246 | |||
247 | Logically Collective | ||
248 | |||
249 | Input Parameters: | ||
250 | + nep - the nonlinear eigensolver context | ||
251 | . tol - the convergence tolerance | ||
252 | - maxits - maximum number of iterations to use | ||
253 | |||
254 | Options Database Keys: | ||
255 | + -nep_tol <tol> - Sets the convergence tolerance | ||
256 | - -nep_max_it <maxits> - Sets the maximum number of iterations allowed | ||
257 | |||
258 | Notes: | ||
259 | Use PETSC_CURRENT to retain the current value of any of the parameters. | ||
260 | Use PETSC_DETERMINE for either argument to assign a default value computed | ||
261 | internally (may be different in each solver). | ||
262 | For maxits use PETSC_UMLIMITED to indicate there is no upper bound on this value. | ||
263 | |||
264 | Level: intermediate | ||
265 | |||
266 | .seealso: NEPGetTolerances() | ||
267 | @*/ | ||
268 | 686 | PetscErrorCode NEPSetTolerances(NEP nep,PetscReal tol,PetscInt maxits) | |
269 | { | ||
270 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
686 | PetscFunctionBegin; |
271 |
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.
|
686 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
272 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
686 | PetscValidLogicalCollectiveReal(nep,tol,2); |
273 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
686 | PetscValidLogicalCollectiveInt(nep,maxits,3); |
274 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
686 | if (tol == (PetscReal)PETSC_DETERMINE) { |
275 | ✗ | nep->tol = PETSC_DETERMINE; | |
276 | ✗ | nep->state = NEP_STATE_INITIAL; | |
277 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
686 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
278 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
676 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
279 | 676 | nep->tol = tol; | |
280 | } | ||
281 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
686 | if (maxits == PETSC_DETERMINE) { |
282 | 160 | nep->max_it = PETSC_DETERMINE; | |
283 | 160 | nep->state = NEP_STATE_INITIAL; | |
284 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
526 | } else if (maxits == PETSC_UNLIMITED) { |
285 | ✗ | nep->max_it = PETSC_INT_MAX; | |
286 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
526 | } else if (maxits != PETSC_CURRENT) { |
287 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
26 | PetscCheck(maxits>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of maxits. Must be > 0"); |
288 | 26 | nep->max_it = maxits; | |
289 | } | ||
290 |
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.
|
132 | PetscFunctionReturn(PETSC_SUCCESS); |
291 | } | ||
292 | |||
293 | /*@ | ||
294 | NEPGetDimensions - Gets the number of eigenvalues to compute | ||
295 | and the dimension of the subspace. | ||
296 | |||
297 | Not Collective | ||
298 | |||
299 | Input Parameter: | ||
300 | . nep - the nonlinear eigensolver context | ||
301 | |||
302 | Output Parameters: | ||
303 | + nev - number of eigenvalues to compute | ||
304 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
305 | - mpd - the maximum dimension allowed for the projected problem | ||
306 | |||
307 | Notes: | ||
308 | The user can specify NULL for any parameter that is not needed. | ||
309 | |||
310 | Level: intermediate | ||
311 | |||
312 | .seealso: NEPSetDimensions() | ||
313 | @*/ | ||
314 | 539 | PetscErrorCode NEPGetDimensions(NEP nep,PetscInt *nev,PetscInt *ncv,PetscInt *mpd) | |
315 | { | ||
316 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
539 | PetscFunctionBegin; |
317 |
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.
|
539 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
318 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
539 | if (nev) *nev = nep->nev; |
319 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
539 | if (ncv) *ncv = nep->ncv; |
320 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
539 | if (mpd) *mpd = nep->mpd; |
321 |
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.
|
539 | PetscFunctionReturn(PETSC_SUCCESS); |
322 | } | ||
323 | |||
324 | /*@ | ||
325 | NEPSetDimensions - Sets the number of eigenvalues to compute | ||
326 | and the dimension of the subspace. | ||
327 | |||
328 | Logically Collective | ||
329 | |||
330 | Input Parameters: | ||
331 | + nep - the nonlinear eigensolver context | ||
332 | . nev - number of eigenvalues to compute | ||
333 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
334 | - mpd - the maximum dimension allowed for the projected problem | ||
335 | |||
336 | Options Database Keys: | ||
337 | + -nep_nev <nev> - Sets the number of eigenvalues | ||
338 | . -nep_ncv <ncv> - Sets the dimension of the subspace | ||
339 | - -nep_mpd <mpd> - Sets the maximum projected dimension | ||
340 | |||
341 | Notes: | ||
342 | Use PETSC_DETERMINE for ncv and mpd to assign a reasonably good value, which is | ||
343 | dependent on the solution method. For any of the arguments, use PETSC_CURRENT | ||
344 | to preserve the current value. | ||
345 | |||
346 | The parameters ncv and mpd are intimately related, so that the user is advised | ||
347 | to set one of them at most. Normal usage is that | ||
348 | (a) in cases where nev is small, the user sets ncv (a reasonable default is 2*nev); and | ||
349 | (b) in cases where nev is large, the user sets mpd. | ||
350 | |||
351 | The value of ncv should always be between nev and (nev+mpd), typically | ||
352 | ncv=nev+mpd. If nev is not too large, mpd=nev is a reasonable choice, otherwise | ||
353 | a smaller value should be used. | ||
354 | |||
355 | Level: intermediate | ||
356 | |||
357 | .seealso: NEPGetDimensions() | ||
358 | @*/ | ||
359 | 1034 | PetscErrorCode NEPSetDimensions(NEP nep,PetscInt nev,PetscInt ncv,PetscInt mpd) | |
360 | { | ||
361 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1034 | PetscFunctionBegin; |
362 |
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.
|
1034 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
363 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1034 | PetscValidLogicalCollectiveInt(nep,nev,2); |
364 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1034 | PetscValidLogicalCollectiveInt(nep,ncv,3); |
365 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1034 | PetscValidLogicalCollectiveInt(nep,mpd,4); |
366 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1034 | if (nev != PETSC_CURRENT) { |
367 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1034 | PetscCheck(nev>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of nev. Must be > 0"); |
368 | 1034 | nep->nev = nev; | |
369 | } | ||
370 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1034 | if (ncv == PETSC_DETERMINE) { |
371 | 878 | nep->ncv = PETSC_DETERMINE; | |
372 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
156 | } else if (ncv != PETSC_CURRENT) { |
373 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
151 | PetscCheck(ncv>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of ncv. Must be > 0"); |
374 | 151 | nep->ncv = ncv; | |
375 | } | ||
376 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1034 | if (mpd == PETSC_DETERMINE) { |
377 | 1009 | nep->mpd = PETSC_DETERMINE; | |
378 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
25 | } else if (mpd != PETSC_CURRENT) { |
379 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
10 | PetscCheck(mpd>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of mpd. Must be > 0"); |
380 | 10 | nep->mpd = mpd; | |
381 | } | ||
382 | 1034 | nep->state = NEP_STATE_INITIAL; | |
383 |
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.
|
1034 | PetscFunctionReturn(PETSC_SUCCESS); |
384 | } | ||
385 | |||
386 | /*@ | ||
387 | NEPSetWhichEigenpairs - Specifies which portion of the spectrum is | ||
388 | to be sought. | ||
389 | |||
390 | Logically Collective | ||
391 | |||
392 | Input Parameters: | ||
393 | + nep - eigensolver context obtained from NEPCreate() | ||
394 | - which - the portion of the spectrum to be sought | ||
395 | |||
396 | Options Database Keys: | ||
397 | + -nep_largest_magnitude - Sets largest eigenvalues in magnitude | ||
398 | . -nep_smallest_magnitude - Sets smallest eigenvalues in magnitude | ||
399 | . -nep_largest_real - Sets largest real parts | ||
400 | . -nep_smallest_real - Sets smallest real parts | ||
401 | . -nep_largest_imaginary - Sets largest imaginary parts | ||
402 | . -nep_smallest_imaginary - Sets smallest imaginary parts | ||
403 | . -nep_target_magnitude - Sets eigenvalues closest to target | ||
404 | . -nep_target_real - Sets real parts closest to target | ||
405 | . -nep_target_imaginary - Sets imaginary parts closest to target | ||
406 | - -nep_all - Sets all eigenvalues in a region | ||
407 | |||
408 | Notes: | ||
409 | The parameter 'which' can have one of these values | ||
410 | |||
411 | + NEP_LARGEST_MAGNITUDE - largest eigenvalues in magnitude (default) | ||
412 | . NEP_SMALLEST_MAGNITUDE - smallest eigenvalues in magnitude | ||
413 | . NEP_LARGEST_REAL - largest real parts | ||
414 | . NEP_SMALLEST_REAL - smallest real parts | ||
415 | . NEP_LARGEST_IMAGINARY - largest imaginary parts | ||
416 | . NEP_SMALLEST_IMAGINARY - smallest imaginary parts | ||
417 | . NEP_TARGET_MAGNITUDE - eigenvalues closest to the target (in magnitude) | ||
418 | . NEP_TARGET_REAL - eigenvalues with real part closest to target | ||
419 | . NEP_TARGET_IMAGINARY - eigenvalues with imaginary part closest to target | ||
420 | . NEP_ALL - all eigenvalues contained in a given region | ||
421 | - NEP_WHICH_USER - user defined ordering set with NEPSetEigenvalueComparison() | ||
422 | |||
423 | Not all eigensolvers implemented in NEP account for all the possible values | ||
424 | stated above. If SLEPc is compiled for real numbers NEP_LARGEST_IMAGINARY | ||
425 | and NEP_SMALLEST_IMAGINARY use the absolute value of the imaginary part | ||
426 | for eigenvalue selection. | ||
427 | |||
428 | The target is a scalar value provided with NEPSetTarget(). | ||
429 | |||
430 | NEP_ALL is intended for use in the context of the CISS solver for | ||
431 | computing all eigenvalues in a region. | ||
432 | |||
433 | Level: intermediate | ||
434 | |||
435 | .seealso: NEPGetWhichEigenpairs(), NEPSetTarget(), NEPSetEigenvalueComparison(), NEPWhich | ||
436 | @*/ | ||
437 | 791 | PetscErrorCode NEPSetWhichEigenpairs(NEP nep,NEPWhich which) | |
438 | { | ||
439 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
791 | PetscFunctionBegin; |
440 |
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.
|
791 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
441 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
791 | PetscValidLogicalCollectiveEnum(nep,which,2); |
442 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
791 | switch (which) { |
443 | 791 | case NEP_LARGEST_MAGNITUDE: | |
444 | case NEP_SMALLEST_MAGNITUDE: | ||
445 | case NEP_LARGEST_REAL: | ||
446 | case NEP_SMALLEST_REAL: | ||
447 | case NEP_LARGEST_IMAGINARY: | ||
448 | case NEP_SMALLEST_IMAGINARY: | ||
449 | case NEP_TARGET_MAGNITUDE: | ||
450 | case NEP_TARGET_REAL: | ||
451 | #if defined(PETSC_USE_COMPLEX) | ||
452 | case NEP_TARGET_IMAGINARY: | ||
453 | #endif | ||
454 | case NEP_ALL: | ||
455 | case NEP_WHICH_USER: | ||
456 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
791 | if (nep->which != which) { |
457 | 771 | nep->state = NEP_STATE_INITIAL; | |
458 | 771 | nep->which = which; | |
459 | } | ||
460 | 152 | break; | |
461 | #if !defined(PETSC_USE_COMPLEX) | ||
462 | ✗ | case NEP_TARGET_IMAGINARY: | |
463 | ✗ | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_SUP,"NEP_TARGET_IMAGINARY can be used only with complex scalars"); | |
464 | #endif | ||
465 | ✗ | default: | |
466 | ✗ | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'which' value"); | |
467 | } | ||
468 |
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.
|
152 | PetscFunctionReturn(PETSC_SUCCESS); |
469 | } | ||
470 | |||
471 | /*@ | ||
472 | NEPGetWhichEigenpairs - Returns which portion of the spectrum is to be | ||
473 | sought. | ||
474 | |||
475 | Not Collective | ||
476 | |||
477 | Input Parameter: | ||
478 | . nep - eigensolver context obtained from NEPCreate() | ||
479 | |||
480 | Output Parameter: | ||
481 | . which - the portion of the spectrum to be sought | ||
482 | |||
483 | Notes: | ||
484 | See NEPSetWhichEigenpairs() for possible values of 'which'. | ||
485 | |||
486 | Level: intermediate | ||
487 | |||
488 | .seealso: NEPSetWhichEigenpairs(), NEPWhich | ||
489 | @*/ | ||
490 | 16 | PetscErrorCode NEPGetWhichEigenpairs(NEP nep,NEPWhich *which) | |
491 | { | ||
492 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
493 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
494 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(which,2); |
495 | 16 | *which = nep->which; | |
496 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
497 | } | ||
498 | |||
499 | /*@C | ||
500 | NEPSetEigenvalueComparison - Specifies the eigenvalue comparison function | ||
501 | when NEPSetWhichEigenpairs() is set to NEP_WHICH_USER. | ||
502 | |||
503 | Logically Collective | ||
504 | |||
505 | Input Parameters: | ||
506 | + nep - eigensolver context obtained from NEPCreate() | ||
507 | . comp - a pointer to the comparison function | ||
508 | - ctx - a context pointer (the last parameter to the comparison function) | ||
509 | |||
510 | Note: | ||
511 | The returning parameter 'res' can be | ||
512 | + negative - if the 1st eigenvalue is preferred to the 2st one | ||
513 | . zero - if both eigenvalues are equally preferred | ||
514 | - positive - if the 2st eigenvalue is preferred to the 1st one | ||
515 | |||
516 | Level: advanced | ||
517 | |||
518 | .seealso: NEPSetWhichEigenpairs(), NEPWhich | ||
519 | @*/ | ||
520 | 5 | PetscErrorCode NEPSetEigenvalueComparison(NEP nep,SlepcEigenvalueComparisonFn *comp,void *ctx) | |
521 | { | ||
522 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
5 | PetscFunctionBegin; |
523 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 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.
|
5 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
524 | 5 | nep->sc->comparison = comp; | |
525 | 5 | nep->sc->comparisonctx = ctx; | |
526 | 5 | nep->which = NEP_WHICH_USER; | |
527 |
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.
|
5 | PetscFunctionReturn(PETSC_SUCCESS); |
528 | } | ||
529 | |||
530 | /*@ | ||
531 | NEPSetProblemType - Specifies the type of the nonlinear eigenvalue problem. | ||
532 | |||
533 | Logically Collective | ||
534 | |||
535 | Input Parameters: | ||
536 | + nep - the nonlinear eigensolver context | ||
537 | - type - a known type of nonlinear eigenvalue problem | ||
538 | |||
539 | Options Database Keys: | ||
540 | + -nep_general - general problem with no particular structure | ||
541 | - -nep_rational - a rational eigenvalue problem defined in split form with all f_i rational | ||
542 | |||
543 | Notes: | ||
544 | Allowed values for the problem type are general (NEP_GENERAL), and rational | ||
545 | (NEP_RATIONAL). | ||
546 | |||
547 | This function is used to provide a hint to the NEP solver to exploit certain | ||
548 | properties of the nonlinear eigenproblem. This hint may be used or not, | ||
549 | depending on the solver. By default, no particular structure is assumed. | ||
550 | |||
551 | Level: intermediate | ||
552 | |||
553 | .seealso: NEPSetType(), NEPGetProblemType(), NEPProblemType | ||
554 | @*/ | ||
555 | 1305 | PetscErrorCode NEPSetProblemType(NEP nep,NEPProblemType type) | |
556 | { | ||
557 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1305 | PetscFunctionBegin; |
558 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1305 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
559 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1305 | PetscValidLogicalCollectiveEnum(nep,type,2); |
560 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1305 | PetscCheck(type==NEP_GENERAL || type==NEP_RATIONAL,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_WRONG,"Unknown eigenvalue problem type"); |
561 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1305 | if (type != nep->problem_type) { |
562 | 1305 | nep->problem_type = type; | |
563 | 1305 | nep->state = NEP_STATE_INITIAL; | |
564 | } | ||
565 |
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.
|
247 | PetscFunctionReturn(PETSC_SUCCESS); |
566 | } | ||
567 | |||
568 | /*@ | ||
569 | NEPGetProblemType - Gets the problem type from the NEP object. | ||
570 | |||
571 | Not Collective | ||
572 | |||
573 | Input Parameter: | ||
574 | . nep - the nonlinear eigensolver context | ||
575 | |||
576 | Output Parameter: | ||
577 | . type - the problem type | ||
578 | |||
579 | Level: intermediate | ||
580 | |||
581 | .seealso: NEPSetProblemType(), NEPProblemType | ||
582 | @*/ | ||
583 | 32 | PetscErrorCode NEPGetProblemType(NEP nep,NEPProblemType *type) | |
584 | { | ||
585 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
32 | PetscFunctionBegin; |
586 |
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.
|
32 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
587 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
32 | PetscAssertPointer(type,2); |
588 | 32 | *type = nep->problem_type; | |
589 |
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.
|
32 | PetscFunctionReturn(PETSC_SUCCESS); |
590 | } | ||
591 | |||
592 | /*@ | ||
593 | NEPSetTwoSided - Sets the solver to use a two-sided variant so that left | ||
594 | eigenvectors are also computed. | ||
595 | |||
596 | Logically Collective | ||
597 | |||
598 | Input Parameters: | ||
599 | + nep - the eigensolver context | ||
600 | - twosided - whether the two-sided variant is to be used or not | ||
601 | |||
602 | Options Database Keys: | ||
603 | . -nep_two_sided <boolean> - Sets/resets the twosided flag | ||
604 | |||
605 | Notes: | ||
606 | If the user sets twosided=PETSC_TRUE then the solver uses a variant of | ||
607 | the algorithm that computes both right and left eigenvectors. This is | ||
608 | usually much more costly. This option is not available in all solvers. | ||
609 | |||
610 | When using two-sided solvers, the problem matrices must have both the | ||
611 | MatMult and MatMultTranspose operations defined. | ||
612 | |||
613 | Level: advanced | ||
614 | |||
615 | .seealso: NEPGetTwoSided(), NEPGetLeftEigenvector() | ||
616 | @*/ | ||
617 | 100 | PetscErrorCode NEPSetTwoSided(NEP nep,PetscBool twosided) | |
618 | { | ||
619 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
100 | PetscFunctionBegin; |
620 |
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.
|
100 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
621 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
100 | PetscValidLogicalCollectiveBool(nep,twosided,2); |
622 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
100 | if (twosided!=nep->twosided) { |
623 | 70 | nep->twosided = twosided; | |
624 | 70 | nep->state = NEP_STATE_INITIAL; | |
625 | } | ||
626 |
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.
|
100 | PetscFunctionReturn(PETSC_SUCCESS); |
627 | } | ||
628 | |||
629 | /*@ | ||
630 | NEPGetTwoSided - Returns the flag indicating whether a two-sided variant | ||
631 | of the algorithm is being used or not. | ||
632 | |||
633 | Not Collective | ||
634 | |||
635 | Input Parameter: | ||
636 | . nep - the eigensolver context | ||
637 | |||
638 | Output Parameter: | ||
639 | . twosided - the returned flag | ||
640 | |||
641 | Level: advanced | ||
642 | |||
643 | .seealso: NEPSetTwoSided() | ||
644 | @*/ | ||
645 | 30 | PetscErrorCode NEPGetTwoSided(NEP nep,PetscBool *twosided) | |
646 | { | ||
647 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
648 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
30 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
649 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
30 | PetscAssertPointer(twosided,2); |
650 | 30 | *twosided = nep->twosided; | |
651 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
30 | PetscFunctionReturn(PETSC_SUCCESS); |
652 | } | ||
653 | |||
654 | /*@C | ||
655 | NEPSetConvergenceTestFunction - Sets a function to compute the error estimate | ||
656 | used in the convergence test. | ||
657 | |||
658 | Logically Collective | ||
659 | |||
660 | Input Parameters: | ||
661 | + nep - nonlinear eigensolver context obtained from NEPCreate() | ||
662 | . conv - convergence test function, see NEPConvergenceTestFn for the calling sequence | ||
663 | . ctx - context for private data for the convergence routine (may be NULL) | ||
664 | - destroy - a routine for destroying the context (may be NULL), see PetscCtxDestroyFn for the calling sequence | ||
665 | |||
666 | Note: | ||
667 | If the error estimate returned by the convergence test function is less than | ||
668 | the tolerance, then the eigenvalue is accepted as converged. | ||
669 | |||
670 | Level: advanced | ||
671 | |||
672 | .seealso: NEPSetConvergenceTest(), NEPSetTolerances() | ||
673 | @*/ | ||
674 | 10 | PetscErrorCode NEPSetConvergenceTestFunction(NEP nep,NEPConvergenceTestFn *conv,void *ctx,PetscCtxDestroyFn *destroy) | |
675 | { | ||
676 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | 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.
|
10 | PetscValidHeaderSpecific(nep,NEP_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.
|
10 | if (nep->convergeddestroy) PetscCall((*nep->convergeddestroy)(&nep->convergedctx)); |
679 | 10 | nep->convergeduser = conv; | |
680 | 10 | nep->convergeddestroy = destroy; | |
681 | 10 | nep->convergedctx = ctx; | |
682 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (conv == NEPConvergedRelative) nep->conv = NEP_CONV_REL; |
683 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | else if (conv == NEPConvergedNorm) nep->conv = NEP_CONV_NORM; |
684 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | else if (conv == NEPConvergedAbsolute) nep->conv = NEP_CONV_ABS; |
685 | else { | ||
686 | 10 | nep->conv = NEP_CONV_USER; | |
687 | 10 | nep->converged = nep->convergeduser; | |
688 | } | ||
689 |
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); |
690 | } | ||
691 | |||
692 | /*@ | ||
693 | NEPSetConvergenceTest - Specifies how to compute the error estimate | ||
694 | used in the convergence test. | ||
695 | |||
696 | Logically Collective | ||
697 | |||
698 | Input Parameters: | ||
699 | + nep - nonlinear eigensolver context obtained from NEPCreate() | ||
700 | - conv - the type of convergence test | ||
701 | |||
702 | Options Database Keys: | ||
703 | + -nep_conv_abs - Sets the absolute convergence test | ||
704 | . -nep_conv_rel - Sets the convergence test relative to the eigenvalue | ||
705 | - -nep_conv_user - Selects the user-defined convergence test | ||
706 | |||
707 | Note: | ||
708 | The parameter 'conv' can have one of these values | ||
709 | + NEP_CONV_ABS - absolute error ||r|| | ||
710 | . NEP_CONV_REL - error relative to the eigenvalue l, ||r||/|l| | ||
711 | . NEP_CONV_NORM - error relative matrix norms, ||r||/sum_i(|f_i(l)|*||A_i||) | ||
712 | - NEP_CONV_USER - function set by NEPSetConvergenceTestFunction() | ||
713 | |||
714 | Level: intermediate | ||
715 | |||
716 | .seealso: NEPGetConvergenceTest(), NEPSetConvergenceTestFunction(), NEPSetStoppingTest(), NEPConv | ||
717 | @*/ | ||
718 | 26 | PetscErrorCode NEPSetConvergenceTest(NEP nep,NEPConv conv) | |
719 | { | ||
720 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
26 | PetscFunctionBegin; |
721 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
26 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
722 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
26 | PetscValidLogicalCollectiveEnum(nep,conv,2); |
723 |
2/5✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
26 | switch (conv) { |
724 | 16 | case NEP_CONV_ABS: nep->converged = NEPConvergedAbsolute; break; | |
725 | ✗ | case NEP_CONV_REL: nep->converged = NEPConvergedRelative; break; | |
726 | 10 | case NEP_CONV_NORM: nep->converged = NEPConvergedNorm; break; | |
727 | ✗ | case NEP_CONV_USER: | |
728 | ✗ | PetscCheck(nep->convergeduser,PetscObjectComm((PetscObject)nep),PETSC_ERR_ORDER,"Must call NEPSetConvergenceTestFunction() first"); | |
729 | ✗ | nep->converged = nep->convergeduser; | |
730 | ✗ | break; | |
731 | ✗ | default: | |
732 | ✗ | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'conv' value"); | |
733 | } | ||
734 | 26 | nep->conv = conv; | |
735 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
26 | PetscFunctionReturn(PETSC_SUCCESS); |
736 | } | ||
737 | |||
738 | /*@ | ||
739 | NEPGetConvergenceTest - Gets the method used to compute the error estimate | ||
740 | used in the convergence test. | ||
741 | |||
742 | Not Collective | ||
743 | |||
744 | Input Parameters: | ||
745 | . nep - nonlinear eigensolver context obtained from NEPCreate() | ||
746 | |||
747 | Output Parameters: | ||
748 | . conv - the type of convergence test | ||
749 | |||
750 | Level: intermediate | ||
751 | |||
752 | .seealso: NEPSetConvergenceTest(), NEPConv | ||
753 | @*/ | ||
754 | 16 | PetscErrorCode NEPGetConvergenceTest(NEP nep,NEPConv *conv) | |
755 | { | ||
756 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
757 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
758 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(conv,2); |
759 | 16 | *conv = nep->conv; | |
760 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
761 | } | ||
762 | |||
763 | /*@C | ||
764 | NEPSetStoppingTestFunction - Sets a function to decide when to stop the outer | ||
765 | iteration of the eigensolver. | ||
766 | |||
767 | Logically Collective | ||
768 | |||
769 | Input Parameters: | ||
770 | + nep - nonlinear eigensolver context obtained from NEPCreate() | ||
771 | . stop - the stopping test function, see NEPStoppingTestFn for the calling sequence | ||
772 | . ctx - context for private data for the stopping routine (may be NULL) | ||
773 | - destroy - a routine for destroying the context (may be NULL), see PetscCtxDestroyFn for the calling sequence | ||
774 | |||
775 | Note: | ||
776 | Normal usage is to first call the default routine NEPStoppingBasic() and then | ||
777 | set reason to NEP_CONVERGED_USER if some user-defined conditions have been | ||
778 | met. To let the eigensolver continue iterating, the result must be left as | ||
779 | NEP_CONVERGED_ITERATING. | ||
780 | |||
781 | Level: advanced | ||
782 | |||
783 | .seealso: NEPSetStoppingTest(), NEPStoppingBasic() | ||
784 | @*/ | ||
785 | 10 | PetscErrorCode NEPSetStoppingTestFunction(NEP nep,NEPStoppingTestFn *stop,void *ctx,PetscCtxDestroyFn *destroy) | |
786 | { | ||
787 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
788 |
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(nep,NEP_CLASSID,1); |
789 |
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->stoppingdestroy) PetscCall((*nep->stoppingdestroy)(&nep->stoppingctx)); |
790 | 10 | nep->stoppinguser = stop; | |
791 | 10 | nep->stoppingdestroy = destroy; | |
792 | 10 | nep->stoppingctx = ctx; | |
793 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (stop == NEPStoppingBasic) nep->stop = NEP_STOP_BASIC; |
794 | else { | ||
795 | 10 | nep->stop = NEP_STOP_USER; | |
796 | 10 | nep->stopping = nep->stoppinguser; | |
797 | } | ||
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.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
799 | } | ||
800 | |||
801 | /*@ | ||
802 | NEPSetStoppingTest - Specifies how to decide the termination of the outer | ||
803 | loop of the eigensolver. | ||
804 | |||
805 | Logically Collective | ||
806 | |||
807 | Input Parameters: | ||
808 | + nep - nonlinear eigensolver context obtained from NEPCreate() | ||
809 | - stop - the type of stopping test | ||
810 | |||
811 | Options Database Keys: | ||
812 | + -nep_stop_basic - Sets the default stopping test | ||
813 | - -nep_stop_user - Selects the user-defined stopping test | ||
814 | |||
815 | Note: | ||
816 | The parameter 'stop' can have one of these values | ||
817 | + NEP_STOP_BASIC - default stopping test | ||
818 | - NEP_STOP_USER - function set by NEPSetStoppingTestFunction() | ||
819 | |||
820 | Level: advanced | ||
821 | |||
822 | .seealso: NEPGetStoppingTest(), NEPSetStoppingTestFunction(), NEPSetConvergenceTest(), NEPStop | ||
823 | @*/ | ||
824 | 16 | PetscErrorCode NEPSetStoppingTest(NEP nep,NEPStop stop) | |
825 | { | ||
826 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
827 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
828 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
16 | PetscValidLogicalCollectiveEnum(nep,stop,2); |
829 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
16 | switch (stop) { |
830 | 16 | case NEP_STOP_BASIC: nep->stopping = NEPStoppingBasic; break; | |
831 | ✗ | case NEP_STOP_USER: | |
832 | ✗ | PetscCheck(nep->stoppinguser,PetscObjectComm((PetscObject)nep),PETSC_ERR_ORDER,"Must call NEPSetStoppingTestFunction() first"); | |
833 | ✗ | nep->stopping = nep->stoppinguser; | |
834 | ✗ | break; | |
835 | ✗ | default: | |
836 | ✗ | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'stop' value"); | |
837 | } | ||
838 | 16 | nep->stop = stop; | |
839 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
840 | } | ||
841 | |||
842 | /*@ | ||
843 | NEPGetStoppingTest - Gets the method used to decide the termination of the outer | ||
844 | loop of the eigensolver. | ||
845 | |||
846 | Not Collective | ||
847 | |||
848 | Input Parameters: | ||
849 | . nep - nonlinear eigensolver context obtained from NEPCreate() | ||
850 | |||
851 | Output Parameters: | ||
852 | . stop - the type of stopping test | ||
853 | |||
854 | Level: advanced | ||
855 | |||
856 | .seealso: NEPSetStoppingTest(), NEPStop | ||
857 | @*/ | ||
858 | 16 | PetscErrorCode NEPGetStoppingTest(NEP nep,NEPStop *stop) | |
859 | { | ||
860 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
861 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
862 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(stop,2); |
863 | 16 | *stop = nep->stop; | |
864 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
865 | } | ||
866 | |||
867 | /*@ | ||
868 | NEPSetTrackAll - Specifies if the solver must compute the residual of all | ||
869 | approximate eigenpairs or not. | ||
870 | |||
871 | Logically Collective | ||
872 | |||
873 | Input Parameters: | ||
874 | + nep - the eigensolver context | ||
875 | - trackall - whether compute all residuals or not | ||
876 | |||
877 | Notes: | ||
878 | If the user sets trackall=PETSC_TRUE then the solver explicitly computes | ||
879 | the residual for each eigenpair approximation. Computing the residual is | ||
880 | usually an expensive operation and solvers commonly compute the associated | ||
881 | residual to the first unconverged eigenpair. | ||
882 | |||
883 | The option '-nep_monitor_all' automatically activates this option. | ||
884 | |||
885 | Level: developer | ||
886 | |||
887 | .seealso: NEPGetTrackAll() | ||
888 | @*/ | ||
889 | 18 | PetscErrorCode NEPSetTrackAll(NEP nep,PetscBool trackall) | |
890 | { | ||
891 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
18 | PetscFunctionBegin; |
892 |
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.
|
18 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
893 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
18 | PetscValidLogicalCollectiveBool(nep,trackall,2); |
894 | 18 | nep->trackall = trackall; | |
895 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
18 | PetscFunctionReturn(PETSC_SUCCESS); |
896 | } | ||
897 | |||
898 | /*@ | ||
899 | NEPGetTrackAll - Returns the flag indicating whether all residual norms must | ||
900 | be computed or not. | ||
901 | |||
902 | Not Collective | ||
903 | |||
904 | Input Parameter: | ||
905 | . nep - the eigensolver context | ||
906 | |||
907 | Output Parameter: | ||
908 | . trackall - the returned flag | ||
909 | |||
910 | Level: developer | ||
911 | |||
912 | .seealso: NEPSetTrackAll() | ||
913 | @*/ | ||
914 | 280 | PetscErrorCode NEPGetTrackAll(NEP nep,PetscBool *trackall) | |
915 | { | ||
916 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
280 | PetscFunctionBegin; |
917 |
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.
|
280 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
918 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
280 | PetscAssertPointer(trackall,2); |
919 | 280 | *trackall = nep->trackall; | |
920 |
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.
|
280 | PetscFunctionReturn(PETSC_SUCCESS); |
921 | } | ||
922 | |||
923 | /*@ | ||
924 | NEPSetRefine - Specifies the refinement type (and options) to be used | ||
925 | after the solve. | ||
926 | |||
927 | Logically Collective | ||
928 | |||
929 | Input Parameters: | ||
930 | + nep - the nonlinear eigensolver context | ||
931 | . refine - refinement type | ||
932 | . npart - number of partitions of the communicator | ||
933 | . tol - the convergence tolerance | ||
934 | . its - maximum number of refinement iterations | ||
935 | - scheme - which scheme to be used for solving the involved linear systems | ||
936 | |||
937 | Options Database Keys: | ||
938 | + -nep_refine <type> - refinement type, one of <none,simple,multiple> | ||
939 | . -nep_refine_partitions <n> - the number of partitions | ||
940 | . -nep_refine_tol <tol> - the tolerance | ||
941 | . -nep_refine_its <its> - number of iterations | ||
942 | - -nep_refine_scheme - to set the scheme for the linear solves | ||
943 | |||
944 | Notes: | ||
945 | By default, iterative refinement is disabled, since it may be very | ||
946 | costly. There are two possible refinement strategies, simple and multiple. | ||
947 | The simple approach performs iterative refinement on each of the | ||
948 | converged eigenpairs individually, whereas the multiple strategy works | ||
949 | with the invariant pair as a whole, refining all eigenpairs simultaneously. | ||
950 | The latter may be required for the case of multiple eigenvalues. | ||
951 | |||
952 | In some cases, especially when using direct solvers within the | ||
953 | iterative refinement method, it may be helpful for improved scalability | ||
954 | to split the communicator in several partitions. The npart parameter | ||
955 | indicates how many partitions to use (defaults to 1). | ||
956 | |||
957 | The tol and its parameters specify the stopping criterion. In the simple | ||
958 | method, refinement continues until the residual of each eigenpair is | ||
959 | below the tolerance (tol defaults to the NEP tol, but may be set to a | ||
960 | different value). In contrast, the multiple method simply performs its | ||
961 | refinement iterations (just one by default). | ||
962 | |||
963 | The scheme argument is used to change the way in which linear systems are | ||
964 | solved. Possible choices are explicit, mixed block elimination (MBE), | ||
965 | and Schur complement. | ||
966 | |||
967 | Use PETSC_CURRENT to retain the current value of npart, tol or its. Use | ||
968 | PETSC_DETERMINE to assign a default value. | ||
969 | |||
970 | Level: intermediate | ||
971 | |||
972 | .seealso: NEPGetRefine() | ||
973 | @*/ | ||
974 | 136 | PetscErrorCode NEPSetRefine(NEP nep,NEPRefine refine,PetscInt npart,PetscReal tol,PetscInt its,NEPRefineScheme scheme) | |
975 | { | ||
976 | 136 | PetscMPIInt size; | |
977 | |||
978 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
136 | PetscFunctionBegin; |
979 |
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.
|
136 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
980 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
136 | PetscValidLogicalCollectiveEnum(nep,refine,2); |
981 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
136 | PetscValidLogicalCollectiveInt(nep,npart,3); |
982 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
136 | PetscValidLogicalCollectiveReal(nep,tol,4); |
983 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
136 | PetscValidLogicalCollectiveInt(nep,its,5); |
984 |
27/62✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
136 | PetscValidLogicalCollectiveEnum(nep,scheme,6); |
985 | 136 | nep->refine = refine; | |
986 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
136 | if (refine) { /* process parameters only if not REFINE_NONE */ |
987 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
136 | if (npart!=nep->npart) { |
988 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
80 | PetscCall(PetscSubcommDestroy(&nep->refinesubc)); |
989 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
80 | PetscCall(KSPDestroy(&nep->refineksp)); |
990 | } | ||
991 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
136 | if (npart == PETSC_DETERMINE) { |
992 | ✗ | nep->npart = 1; | |
993 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
136 | } else if (npart != PETSC_CURRENT) { |
994 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
136 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)nep),&size)); |
995 |
2/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
136 | PetscCheck(npart>0 && npart<=size,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of npart"); |
996 | 136 | nep->npart = npart; | |
997 | } | ||
998 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
136 | if (tol == (PetscReal)PETSC_DETERMINE) { |
999 | 120 | nep->rtol = PETSC_DETERMINE; | |
1000 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
1001 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
1002 | 16 | nep->rtol = tol; | |
1003 | } | ||
1004 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
136 | if (its==PETSC_DETERMINE) { |
1005 | 110 | nep->rits = PETSC_DETERMINE; | |
1006 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
26 | } else if (its != PETSC_CURRENT) { |
1007 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
26 | PetscCheck(its>=0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of its. Must be >= 0"); |
1008 | 26 | nep->rits = its; | |
1009 | } | ||
1010 | 136 | nep->scheme = scheme; | |
1011 | } | ||
1012 | 136 | nep->state = NEP_STATE_INITIAL; | |
1013 |
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.
|
136 | PetscFunctionReturn(PETSC_SUCCESS); |
1014 | } | ||
1015 | |||
1016 | /*@ | ||
1017 | NEPGetRefine - Gets the refinement strategy used by the NEP object, and the | ||
1018 | associated parameters. | ||
1019 | |||
1020 | Not Collective | ||
1021 | |||
1022 | Input Parameter: | ||
1023 | . nep - the nonlinear eigensolver context | ||
1024 | |||
1025 | Output Parameters: | ||
1026 | + refine - refinement type | ||
1027 | . npart - number of partitions of the communicator | ||
1028 | . tol - the convergence tolerance | ||
1029 | . its - maximum number of refinement iterations | ||
1030 | - scheme - the scheme used for solving linear systems | ||
1031 | |||
1032 | Level: intermediate | ||
1033 | |||
1034 | Note: | ||
1035 | The user can specify NULL for any parameter that is not needed. | ||
1036 | |||
1037 | .seealso: NEPSetRefine() | ||
1038 | @*/ | ||
1039 | 16 | PetscErrorCode NEPGetRefine(NEP nep,NEPRefine *refine,PetscInt *npart,PetscReal *tol,PetscInt *its,NEPRefineScheme *scheme) | |
1040 | { | ||
1041 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
1042 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
1043 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (refine) *refine = nep->refine; |
1044 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (npart) *npart = nep->npart; |
1045 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (tol) *tol = nep->rtol; |
1046 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (its) *its = nep->rits; |
1047 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (scheme) *scheme = nep->scheme; |
1048 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
1049 | } | ||
1050 | |||
1051 | /*@ | ||
1052 | NEPSetOptionsPrefix - Sets the prefix used for searching for all | ||
1053 | NEP options in the database. | ||
1054 | |||
1055 | Logically Collective | ||
1056 | |||
1057 | Input Parameters: | ||
1058 | + nep - the nonlinear eigensolver context | ||
1059 | - prefix - the prefix string to prepend to all NEP option requests | ||
1060 | |||
1061 | Notes: | ||
1062 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
1063 | The first character of all runtime options is AUTOMATICALLY the | ||
1064 | hyphen. | ||
1065 | |||
1066 | For example, to distinguish between the runtime options for two | ||
1067 | different NEP contexts, one could call | ||
1068 | .vb | ||
1069 | NEPSetOptionsPrefix(nep1,"neig1_") | ||
1070 | NEPSetOptionsPrefix(nep2,"neig2_") | ||
1071 | .ve | ||
1072 | |||
1073 | Level: advanced | ||
1074 | |||
1075 | .seealso: NEPAppendOptionsPrefix(), NEPGetOptionsPrefix() | ||
1076 | @*/ | ||
1077 | 24 | PetscErrorCode NEPSetOptionsPrefix(NEP nep,const char *prefix) | |
1078 | { | ||
1079 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
24 | PetscFunctionBegin; |
1080 |
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.
|
24 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
1081 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
24 | if (!nep->V) PetscCall(NEPGetBV(nep,&nep->V)); |
1082 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
24 | PetscCall(BVSetOptionsPrefix(nep->V,prefix)); |
1083 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
24 | if (!nep->ds) PetscCall(NEPGetDS(nep,&nep->ds)); |
1084 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
24 | PetscCall(DSSetOptionsPrefix(nep->ds,prefix)); |
1085 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
24 | if (!nep->rg) PetscCall(NEPGetRG(nep,&nep->rg)); |
1086 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
24 | PetscCall(RGSetOptionsPrefix(nep->rg,prefix)); |
1087 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
24 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)nep,prefix)); |
1088 |
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); |
1089 | } | ||
1090 | |||
1091 | /*@ | ||
1092 | NEPAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
1093 | NEP options in the database. | ||
1094 | |||
1095 | Logically Collective | ||
1096 | |||
1097 | Input Parameters: | ||
1098 | + nep - the nonlinear eigensolver context | ||
1099 | - prefix - the prefix string to prepend to all NEP option requests | ||
1100 | |||
1101 | Notes: | ||
1102 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
1103 | The first character of all runtime options is AUTOMATICALLY the hyphen. | ||
1104 | |||
1105 | Level: advanced | ||
1106 | |||
1107 | .seealso: NEPSetOptionsPrefix(), NEPGetOptionsPrefix() | ||
1108 | @*/ | ||
1109 | 10 | PetscErrorCode NEPAppendOptionsPrefix(NEP nep,const char *prefix) | |
1110 | { | ||
1111 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
1112 |
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(nep,NEP_CLASSID,1); |
1113 |
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->V) PetscCall(NEPGetBV(nep,&nep->V)); |
1114 |
4/6✓ Branch 0 taken 2 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(BVAppendOptionsPrefix(nep->V,prefix)); |
1115 |
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->ds) PetscCall(NEPGetDS(nep,&nep->ds)); |
1116 |
4/6✓ Branch 0 taken 2 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(DSAppendOptionsPrefix(nep->ds,prefix)); |
1117 |
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->rg) PetscCall(NEPGetRG(nep,&nep->rg)); |
1118 |
4/6✓ Branch 0 taken 2 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(RGAppendOptionsPrefix(nep->rg,prefix)); |
1119 |
4/6✓ Branch 0 taken 2 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(PetscObjectAppendOptionsPrefix((PetscObject)nep,prefix)); |
1120 |
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); |
1121 | } | ||
1122 | |||
1123 | /*@ | ||
1124 | NEPGetOptionsPrefix - Gets the prefix used for searching for all | ||
1125 | NEP options in the database. | ||
1126 | |||
1127 | Not Collective | ||
1128 | |||
1129 | Input Parameters: | ||
1130 | . nep - the nonlinear eigensolver context | ||
1131 | |||
1132 | Output Parameters: | ||
1133 | . prefix - pointer to the prefix string used is returned | ||
1134 | |||
1135 | Note: | ||
1136 | On the Fortran side, the user should pass in a string 'prefix' of | ||
1137 | sufficient length to hold the prefix. | ||
1138 | |||
1139 | Level: advanced | ||
1140 | |||
1141 | .seealso: NEPSetOptionsPrefix(), NEPAppendOptionsPrefix() | ||
1142 | @*/ | ||
1143 | 31 | PetscErrorCode NEPGetOptionsPrefix(NEP nep,const char *prefix[]) | |
1144 | { | ||
1145 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
31 | PetscFunctionBegin; |
1146 |
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.
|
31 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
1147 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
31 | PetscAssertPointer(prefix,2); |
1148 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
31 | PetscCall(PetscObjectGetOptionsPrefix((PetscObject)nep,prefix)); |
1149 |
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); |
1150 | } | ||
1151 |