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 | MFN routines related to options that can be set via the command-line | ||
12 | or procedurally | ||
13 | */ | ||
14 | |||
15 | #include <slepc/private/mfnimpl.h> /*I "slepcmfn.h" I*/ | ||
16 | #include <petscdraw.h> | ||
17 | |||
18 | /*@C | ||
19 | MFNMonitorSetFromOptions - Sets a monitor function and viewer appropriate for the type | ||
20 | indicated by the user. | ||
21 | |||
22 | Collective | ||
23 | |||
24 | Input Parameters: | ||
25 | + mfn - the matrix function 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 | |||
30 | Level: developer | ||
31 | |||
32 | .seealso: MFNMonitorSet() | ||
33 | @*/ | ||
34 | 204 | PetscErrorCode MFNMonitorSetFromOptions(MFN mfn,const char opt[],const char name[],void *ctx) | |
35 | { | ||
36 | 204 | PetscErrorCode (*mfunc)(MFN,PetscInt,PetscReal,void*); | |
37 | 204 | PetscErrorCode (*cfunc)(PetscViewer,PetscViewerFormat,void*,PetscViewerAndFormat**); | |
38 | 204 | PetscErrorCode (*dfunc)(PetscViewerAndFormat**); | |
39 | 204 | PetscViewerAndFormat *vf; | |
40 | 204 | PetscViewer viewer; | |
41 | 204 | PetscViewerFormat format; | |
42 | 204 | PetscViewerType vtype; | |
43 | 204 | char key[PETSC_MAX_PATH_LEN]; | |
44 | 204 | PetscBool flg; | |
45 | |||
46 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
204 | PetscFunctionBegin; |
47 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)mfn),((PetscObject)mfn)->options,((PetscObject)mfn)->prefix,opt,&viewer,&format,&flg)); |
48 |
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.
|
204 | if (!flg) PetscFunctionReturn(PETSC_SUCCESS); |
49 | |||
50 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
18 | PetscCall(PetscViewerGetType(viewer,&vtype)); |
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.
|
18 | PetscCall(SlepcMonitorMakeKey_Internal(name,vtype,format,key)); |
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.
|
18 | PetscCall(PetscFunctionListFind(MFNMonitorList,key,&mfunc)); |
53 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
18 | PetscCheck(mfunc,PetscObjectComm((PetscObject)mfn),PETSC_ERR_SUP,"Specified viewer and format not supported"); |
54 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
18 | PetscCall(PetscFunctionListFind(MFNMonitorCreateList,key,&cfunc)); |
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.
|
18 | PetscCall(PetscFunctionListFind(MFNMonitorDestroyList,key,&dfunc)); |
56 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
|
18 | if (!cfunc) cfunc = PetscViewerAndFormatCreate_Internal; |
57 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
18 | if (!dfunc) dfunc = PetscViewerAndFormatDestroy; |
58 | |||
59 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
18 | PetscCall((*cfunc)(viewer,format,ctx,&vf)); |
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.
|
18 | PetscCall(PetscViewerDestroy(&viewer)); |
61 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
18 | PetscCall(MFNMonitorSet(mfn,mfunc,vf,(PetscCtxDestroyFn*)dfunc)); |
62 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
3 | PetscFunctionReturn(PETSC_SUCCESS); |
63 | } | ||
64 | |||
65 | /*@ | ||
66 | MFNSetFromOptions - Sets MFN options from the options database. | ||
67 | This routine must be called before MFNSetUp() if the user is to be | ||
68 | allowed to set the solver type. | ||
69 | |||
70 | Collective | ||
71 | |||
72 | Input Parameters: | ||
73 | . mfn - the matrix function context | ||
74 | |||
75 | Notes: | ||
76 | To see all options, run your program with the -help option. | ||
77 | |||
78 | Level: beginner | ||
79 | |||
80 | .seealso: MFNSetOptionsPrefix() | ||
81 | @*/ | ||
82 | 204 | PetscErrorCode MFNSetFromOptions(MFN mfn) | |
83 | { | ||
84 | 204 | char type[256]; | |
85 | 204 | PetscBool set,flg,flg1,flg2; | |
86 | 204 | PetscReal r; | |
87 | 204 | PetscInt i; | |
88 | |||
89 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
204 | PetscFunctionBegin; |
90 |
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.
|
204 | PetscValidHeaderSpecific(mfn,MFN_CLASSID,1); |
91 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(MFNRegisterAll()); |
92 |
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.
|
612 | PetscObjectOptionsBegin((PetscObject)mfn); |
93 |
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.
|
242 | PetscCall(PetscOptionsFList("-mfn_type","Matrix Function method","MFNSetType",MFNList,(char*)(((PetscObject)mfn)->type_name?((PetscObject)mfn)->type_name:MFNKRYLOV),type,sizeof(type),&flg)); |
94 |
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.
|
204 | if (flg) PetscCall(MFNSetType(mfn,type)); |
95 |
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.
|
154 | else if (!((PetscObject)mfn)->type_name) PetscCall(MFNSetType(mfn,MFNKRYLOV)); |
96 | |||
97 | 204 | i = mfn->max_it; | |
98 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(PetscOptionsInt("-mfn_max_it","Maximum number of iterations","MFNSetTolerances",mfn->max_it,&i,&flg1)); |
99 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
204 | if (!flg1) i = PETSC_DETERMINE; |
100 | 204 | r = mfn->tol; | |
101 |
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.
|
346 | PetscCall(PetscOptionsReal("-mfn_tol","Tolerance","MFNSetTolerances",SlepcDefaultTol(mfn->tol),&r,&flg2)); |
102 |
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.
|
204 | if (flg1 || flg2) PetscCall(MFNSetTolerances(mfn,r,i)); |
103 | |||
104 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(PetscOptionsInt("-mfn_ncv","Number of basis vectors","MFNSetDimensions",mfn->ncv,&i,&flg)); |
105 |
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.
|
204 | if (flg) PetscCall(MFNSetDimensions(mfn,i)); |
106 | |||
107 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(PetscOptionsBool("-mfn_error_if_not_converged","Generate error if solver does not converge","MFNSetErrorIfNotConverged",mfn->errorifnotconverged,&mfn->errorifnotconverged,NULL)); |
108 | |||
109 | /* -----------------------------------------------------------------------*/ | ||
110 | /* | ||
111 | Cancels all monitors hardwired into code before call to MFNSetFromOptions() | ||
112 | */ | ||
113 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(PetscOptionsBool("-mfn_monitor_cancel","Remove any hardwired monitor routines","MFNMonitorCancel",PETSC_FALSE,&flg,&set)); |
114 |
7/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
204 | if (set && flg) PetscCall(MFNMonitorCancel(mfn)); |
115 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(MFNMonitorSetFromOptions(mfn,"-mfn_monitor","error_estimate",NULL)); |
116 | |||
117 | /* -----------------------------------------------------------------------*/ | ||
118 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(PetscOptionsName("-mfn_view","Print detailed information on solver used","MFNView",&set)); |
119 | |||
120 |
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.
|
204 | PetscTryTypeMethod(mfn,setfromoptions,PetscOptionsObject); |
121 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)mfn,PetscOptionsObject)); |
122 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
204 | PetscOptionsEnd(); |
123 | |||
124 |
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.
|
204 | if (!mfn->V) PetscCall(MFNGetBV(mfn,&mfn->V)); |
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.
|
204 | PetscCall(BVSetFromOptions(mfn->V)); |
126 |
3/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
204 | if (!mfn->fn) PetscCall(MFNGetFN(mfn,&mfn->fn)); |
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.
|
204 | PetscCall(FNSetFromOptions(mfn->fn)); |
128 |
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.
|
35 | PetscFunctionReturn(PETSC_SUCCESS); |
129 | } | ||
130 | |||
131 | /*@ | ||
132 | MFNGetTolerances - Gets the tolerance and maximum iteration count used | ||
133 | by the MFN convergence tests. | ||
134 | |||
135 | Not Collective | ||
136 | |||
137 | Input Parameter: | ||
138 | . mfn - the matrix function context | ||
139 | |||
140 | Output Parameters: | ||
141 | + tol - the convergence tolerance | ||
142 | - maxits - maximum number of iterations | ||
143 | |||
144 | Notes: | ||
145 | The user can specify NULL for any parameter that is not needed. | ||
146 | |||
147 | Level: intermediate | ||
148 | |||
149 | .seealso: MFNSetTolerances() | ||
150 | @*/ | ||
151 | 72 | PetscErrorCode MFNGetTolerances(MFN mfn,PetscReal *tol,PetscInt *maxits) | |
152 | { | ||
153 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
72 | PetscFunctionBegin; |
154 |
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.
|
72 | PetscValidHeaderSpecific(mfn,MFN_CLASSID,1); |
155 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
72 | if (tol) *tol = mfn->tol; |
156 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
72 | if (maxits) *maxits = mfn->max_it; |
157 |
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.
|
72 | PetscFunctionReturn(PETSC_SUCCESS); |
158 | } | ||
159 | |||
160 | /*@ | ||
161 | MFNSetTolerances - Sets the tolerance and maximum iteration count used | ||
162 | by the MFN convergence tests. | ||
163 | |||
164 | Logically Collective | ||
165 | |||
166 | Input Parameters: | ||
167 | + mfn - the matrix function context | ||
168 | . tol - the convergence tolerance | ||
169 | - maxits - maximum number of iterations to use | ||
170 | |||
171 | Options Database Keys: | ||
172 | + -mfn_tol <tol> - Sets the convergence tolerance | ||
173 | - -mfn_max_it <maxits> - Sets the maximum number of iterations allowed | ||
174 | |||
175 | Notes: | ||
176 | Use PETSC_CURRENT to retain the current value of any of the parameters. | ||
177 | Use PETSC_DETERMINE for either argument to assign a default value computed | ||
178 | internally (may be different in each solver). | ||
179 | For maxits use PETSC_UMLIMITED to indicate there is no upper bound on this value. | ||
180 | |||
181 | Level: intermediate | ||
182 | |||
183 | .seealso: MFNGetTolerances() | ||
184 | @*/ | ||
185 | 122 | PetscErrorCode MFNSetTolerances(MFN mfn,PetscReal tol,PetscInt maxits) | |
186 | { | ||
187 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
122 | PetscFunctionBegin; |
188 |
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.
|
122 | PetscValidHeaderSpecific(mfn,MFN_CLASSID,1); |
189 |
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.
|
122 | PetscValidLogicalCollectiveReal(mfn,tol,2); |
190 |
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.
|
122 | PetscValidLogicalCollectiveInt(mfn,maxits,3); |
191 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
122 | if (tol == (PetscReal)PETSC_DETERMINE) { |
192 | ✗ | mfn->tol = PETSC_DETERMINE; | |
193 | ✗ | mfn->setupcalled = 0; | |
194 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
122 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
195 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
122 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)mfn),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
196 | 122 | mfn->tol = tol; | |
197 | } | ||
198 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
122 | if (maxits == PETSC_DETERMINE) { |
199 | 60 | mfn->max_it = PETSC_DETERMINE; | |
200 | 60 | mfn->setupcalled = 0; | |
201 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
62 | } else if (maxits == PETSC_UNLIMITED) { |
202 | ✗ | mfn->max_it = PETSC_INT_MAX; | |
203 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
62 | } else if (maxits != PETSC_CURRENT) { |
204 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
44 | PetscCheck(maxits>0,PetscObjectComm((PetscObject)mfn),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of maxits. Must be > 0"); |
205 | 44 | mfn->max_it = maxits; | |
206 | } | ||
207 |
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.
|
21 | PetscFunctionReturn(PETSC_SUCCESS); |
208 | } | ||
209 | |||
210 | /*@ | ||
211 | MFNGetDimensions - Gets the dimension of the subspace used by the solver. | ||
212 | |||
213 | Not Collective | ||
214 | |||
215 | Input Parameter: | ||
216 | . mfn - the matrix function context | ||
217 | |||
218 | Output Parameter: | ||
219 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
220 | |||
221 | Level: intermediate | ||
222 | |||
223 | .seealso: MFNSetDimensions() | ||
224 | @*/ | ||
225 | 62 | PetscErrorCode MFNGetDimensions(MFN mfn,PetscInt *ncv) | |
226 | { | ||
227 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
62 | PetscFunctionBegin; |
228 |
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.
|
62 | PetscValidHeaderSpecific(mfn,MFN_CLASSID,1); |
229 |
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.
|
62 | PetscAssertPointer(ncv,2); |
230 | 62 | *ncv = mfn->ncv; | |
231 |
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.
|
62 | PetscFunctionReturn(PETSC_SUCCESS); |
232 | } | ||
233 | |||
234 | /*@ | ||
235 | MFNSetDimensions - Sets the dimension of the subspace to be used by the solver. | ||
236 | |||
237 | Logically Collective | ||
238 | |||
239 | Input Parameters: | ||
240 | + mfn - the matrix function context | ||
241 | - ncv - the maximum dimension of the subspace to be used by the solver | ||
242 | |||
243 | Options Database Keys: | ||
244 | . -mfn_ncv <ncv> - Sets the dimension of the subspace | ||
245 | |||
246 | Notes: | ||
247 | Use PETSC_DETERMINE for ncv to assign a reasonably good value, which is | ||
248 | dependent on the solution method. | ||
249 | |||
250 | Level: intermediate | ||
251 | |||
252 | .seealso: MFNGetDimensions() | ||
253 | @*/ | ||
254 | 88 | PetscErrorCode MFNSetDimensions(MFN mfn,PetscInt ncv) | |
255 | { | ||
256 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
88 | PetscFunctionBegin; |
257 |
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.
|
88 | PetscValidHeaderSpecific(mfn,MFN_CLASSID,1); |
258 |
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.
|
88 | PetscValidLogicalCollectiveInt(mfn,ncv,2); |
259 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
88 | if (ncv == PETSC_DECIDE || ncv == PETSC_DEFAULT) { |
260 | ✗ | mfn->ncv = PETSC_DETERMINE; | |
261 | } else { | ||
262 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
88 | PetscCheck(ncv>0,PetscObjectComm((PetscObject)mfn),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of ncv. Must be > 0"); |
263 | 88 | mfn->ncv = ncv; | |
264 | } | ||
265 | 88 | mfn->setupcalled = 0; | |
266 |
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.
|
88 | PetscFunctionReturn(PETSC_SUCCESS); |
267 | } | ||
268 | |||
269 | /*@ | ||
270 | MFNSetErrorIfNotConverged - Causes MFNSolve() to generate an error if the | ||
271 | solver has not converged. | ||
272 | |||
273 | Logically Collective | ||
274 | |||
275 | Input Parameters: | ||
276 | + mfn - the matrix function context | ||
277 | - flg - PETSC_TRUE indicates you want the error generated | ||
278 | |||
279 | Options Database Keys: | ||
280 | . -mfn_error_if_not_converged - this takes an optional truth value (0/1/no/yes/true/false) | ||
281 | |||
282 | Level: intermediate | ||
283 | |||
284 | Note: | ||
285 | Normally SLEPc continues if the solver fails to converge, you can call | ||
286 | MFNGetConvergedReason() after a MFNSolve() to determine if it has converged. | ||
287 | |||
288 | .seealso: MFNGetErrorIfNotConverged() | ||
289 | @*/ | ||
290 | 132 | PetscErrorCode MFNSetErrorIfNotConverged(MFN mfn,PetscBool flg) | |
291 | { | ||
292 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
132 | PetscFunctionBegin; |
293 |
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.
|
132 | PetscValidHeaderSpecific(mfn,MFN_CLASSID,1); |
294 |
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.
|
132 | PetscValidLogicalCollectiveBool(mfn,flg,2); |
295 | 132 | mfn->errorifnotconverged = flg; | |
296 |
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); |
297 | } | ||
298 | |||
299 | /*@ | ||
300 | MFNGetErrorIfNotConverged - Return a flag indicating whether MFNSolve() will | ||
301 | generate an error if the solver does not converge. | ||
302 | |||
303 | Not Collective | ||
304 | |||
305 | Input Parameter: | ||
306 | . mfn - the matrix function context | ||
307 | |||
308 | Output Parameter: | ||
309 | . flag - PETSC_TRUE if it will generate an error, else PETSC_FALSE | ||
310 | |||
311 | Level: intermediate | ||
312 | |||
313 | .seealso: MFNSetErrorIfNotConverged() | ||
314 | @*/ | ||
315 | 34 | PetscErrorCode MFNGetErrorIfNotConverged(MFN mfn,PetscBool *flag) | |
316 | { | ||
317 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
34 | PetscFunctionBegin; |
318 |
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.
|
34 | PetscValidHeaderSpecific(mfn,MFN_CLASSID,1); |
319 |
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.
|
34 | PetscAssertPointer(flag,2); |
320 | 34 | *flag = mfn->errorifnotconverged; | |
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.
|
34 | PetscFunctionReturn(PETSC_SUCCESS); |
322 | } | ||
323 | |||
324 | /*@ | ||
325 | MFNSetOptionsPrefix - Sets the prefix used for searching for all | ||
326 | MFN options in the database. | ||
327 | |||
328 | Logically Collective | ||
329 | |||
330 | Input Parameters: | ||
331 | + mfn - the matrix function context | ||
332 | - prefix - the prefix string to prepend to all MFN option requests | ||
333 | |||
334 | Notes: | ||
335 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
336 | The first character of all runtime options is AUTOMATICALLY the | ||
337 | hyphen. | ||
338 | |||
339 | For example, to distinguish between the runtime options for two | ||
340 | different MFN contexts, one could call | ||
341 | .vb | ||
342 | MFNSetOptionsPrefix(mfn1,"fun1_") | ||
343 | MFNSetOptionsPrefix(mfn2,"fun2_") | ||
344 | .ve | ||
345 | |||
346 | Level: advanced | ||
347 | |||
348 | .seealso: MFNAppendOptionsPrefix(), MFNGetOptionsPrefix() | ||
349 | @*/ | ||
350 | 30 | PetscErrorCode MFNSetOptionsPrefix(MFN mfn,const char *prefix) | |
351 | { | ||
352 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
353 |
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(mfn,MFN_CLASSID,1); |
354 |
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.
|
30 | if (!mfn->V) PetscCall(MFNGetBV(mfn,&mfn->V)); |
355 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
30 | PetscCall(BVSetOptionsPrefix(mfn->V,prefix)); |
356 |
3/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
30 | if (!mfn->fn) PetscCall(MFNGetFN(mfn,&mfn->fn)); |
357 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
30 | PetscCall(FNSetOptionsPrefix(mfn->fn,prefix)); |
358 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
30 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)mfn,prefix)); |
359 |
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); |
360 | } | ||
361 | |||
362 | /*@ | ||
363 | MFNAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
364 | MFN options in the database. | ||
365 | |||
366 | Logically Collective | ||
367 | |||
368 | Input Parameters: | ||
369 | + mfn - the matrix function context | ||
370 | - prefix - the prefix string to prepend to all MFN option requests | ||
371 | |||
372 | Notes: | ||
373 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
374 | The first character of all runtime options is AUTOMATICALLY the hyphen. | ||
375 | |||
376 | Level: advanced | ||
377 | |||
378 | .seealso: MFNSetOptionsPrefix(), MFNGetOptionsPrefix() | ||
379 | @*/ | ||
380 | 10 | PetscErrorCode MFNAppendOptionsPrefix(MFN mfn,const char *prefix) | |
381 | { | ||
382 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
383 |
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(mfn,MFN_CLASSID,1); |
384 |
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 (!mfn->V) PetscCall(MFNGetBV(mfn,&mfn->V)); |
385 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(BVAppendOptionsPrefix(mfn->V,prefix)); |
386 |
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 (!mfn->fn) PetscCall(MFNGetFN(mfn,&mfn->fn)); |
387 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(FNAppendOptionsPrefix(mfn->fn,prefix)); |
388 |
4/6✓ Branch 0 taken 2 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)mfn,prefix)); |
389 |
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); |
390 | } | ||
391 | |||
392 | /*@ | ||
393 | MFNGetOptionsPrefix - Gets the prefix used for searching for all | ||
394 | MFN options in the database. | ||
395 | |||
396 | Not Collective | ||
397 | |||
398 | Input Parameters: | ||
399 | . mfn - the matrix function context | ||
400 | |||
401 | Output Parameters: | ||
402 | . prefix - pointer to the prefix string used is returned | ||
403 | |||
404 | Note: | ||
405 | On the Fortran side, the user should pass in a string 'prefix' of | ||
406 | sufficient length to hold the prefix. | ||
407 | |||
408 | Level: advanced | ||
409 | |||
410 | .seealso: MFNSetOptionsPrefix(), MFNAppendOptionsPrefix() | ||
411 | @*/ | ||
412 | 31 | PetscErrorCode MFNGetOptionsPrefix(MFN mfn,const char *prefix[]) | |
413 | { | ||
414 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
31 | PetscFunctionBegin; |
415 |
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(mfn,MFN_CLASSID,1); |
416 |
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); |
417 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
31 | PetscCall(PetscObjectGetOptionsPrefix((PetscObject)mfn,prefix)); |
418 |
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); |
419 | } | ||
420 |