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 | Basic DS routines | ||
12 | */ | ||
13 | |||
14 | #include <slepc/private/dsimpl.h> /*I "slepcds.h" I*/ | ||
15 | |||
16 | PetscFunctionList DSList = NULL; | ||
17 | PetscBool DSRegisterAllCalled = PETSC_FALSE; | ||
18 | PetscClassId DS_CLASSID = 0; | ||
19 | PetscLogEvent DS_Solve = 0,DS_Vectors = 0,DS_Synchronize = 0,DS_Other = 0; | ||
20 | static PetscBool DSPackageInitialized = PETSC_FALSE; | ||
21 | |||
22 | const char *DSStateTypes[] = {"RAW","INTERMEDIATE","CONDENSED","TRUNCATED","DSStateType","DS_STATE_",NULL}; | ||
23 | const char *DSParallelTypes[] = {"REDUNDANT","SYNCHRONIZED","DISTRIBUTED","DSParallelType","DS_PARALLEL_",NULL}; | ||
24 | const char *DSMatName[DS_NUM_MAT] = {"A","B","C","T","D","Q","Z","X","Y","U","V","W","E0","E1","E2","E3","E4","E5","E6","E7","E8","E9"}; | ||
25 | DSMatType DSMatExtra[DS_NUM_EXTRA] = {DS_MAT_E0,DS_MAT_E1,DS_MAT_E2,DS_MAT_E3,DS_MAT_E4,DS_MAT_E5,DS_MAT_E6,DS_MAT_E7,DS_MAT_E8,DS_MAT_E9}; | ||
26 | |||
27 | /*@C | ||
28 | DSFinalizePackage - This function destroys everything in the SLEPc interface | ||
29 | to the DS package. It is called from SlepcFinalize(). | ||
30 | |||
31 | Level: developer | ||
32 | |||
33 | .seealso: SlepcFinalize() | ||
34 | @*/ | ||
35 | 10545 | PetscErrorCode DSFinalizePackage(void) | |
36 | { | ||
37 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10545 | PetscFunctionBegin; |
38 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscFunctionListDestroy(&DSList)); |
39 | 10545 | DSPackageInitialized = PETSC_FALSE; | |
40 | 10545 | DSRegisterAllCalled = PETSC_FALSE; | |
41 |
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.
|
10545 | PetscFunctionReturn(PETSC_SUCCESS); |
42 | } | ||
43 | |||
44 | /*@C | ||
45 | DSInitializePackage - This function initializes everything in the DS package. | ||
46 | It is called from PetscDLLibraryRegister() when using dynamic libraries, and | ||
47 | on the first call to DSCreate() when using static libraries. | ||
48 | |||
49 | Level: developer | ||
50 | |||
51 | .seealso: SlepcInitialize() | ||
52 | @*/ | ||
53 | 128835 | PetscErrorCode DSInitializePackage(void) | |
54 | { | ||
55 | 128835 | char logList[256]; | |
56 | 128835 | PetscBool opt,pkg; | |
57 | 128835 | PetscClassId classids[1]; | |
58 | |||
59 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
128835 | PetscFunctionBegin; |
60 |
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.
|
128835 | if (DSPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS); |
61 | 10545 | DSPackageInitialized = PETSC_TRUE; | |
62 | /* Register Classes */ | ||
63 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscClassIdRegister("Direct Solver",&DS_CLASSID)); |
64 | /* Register Constructors */ | ||
65 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegisterAll()); |
66 | /* Register Events */ | ||
67 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscLogEventRegister("DSSolve",DS_CLASSID,&DS_Solve)); |
68 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscLogEventRegister("DSVectors",DS_CLASSID,&DS_Vectors)); |
69 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscLogEventRegister("DSSynchronize",DS_CLASSID,&DS_Synchronize)); |
70 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscLogEventRegister("DSOther",DS_CLASSID,&DS_Other)); |
71 | /* Process Info */ | ||
72 | 10545 | classids[0] = DS_CLASSID; | |
73 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscInfoProcessClass("ds",1,&classids[0])); |
74 | /* Process summary exclusions */ | ||
75 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt)); |
76 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
10545 | if (opt) { |
77 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
84 | PetscCall(PetscStrInList("ds",logList,',',&pkg)); |
78 |
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.
|
84 | if (pkg) PetscCall(PetscLogEventDeactivateClass(DS_CLASSID)); |
79 | } | ||
80 | /* Register package finalizer */ | ||
81 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(PetscRegisterFinalize(DSFinalizePackage)); |
82 |
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.
|
2052 | PetscFunctionReturn(PETSC_SUCCESS); |
83 | } | ||
84 | |||
85 | /*@ | ||
86 | DSCreate - Creates a DS context. | ||
87 | |||
88 | Collective | ||
89 | |||
90 | Input Parameter: | ||
91 | . comm - MPI communicator | ||
92 | |||
93 | Output Parameter: | ||
94 | . newds - location to put the DS context | ||
95 | |||
96 | Level: beginner | ||
97 | |||
98 | Note: | ||
99 | DS objects are not intended for normal users but only for | ||
100 | advanced user that for instance implement their own solvers. | ||
101 | |||
102 | .seealso: DSDestroy(), DS | ||
103 | @*/ | ||
104 | 12795 | PetscErrorCode DSCreate(MPI_Comm comm,DS *newds) | |
105 | { | ||
106 | 12795 | DS ds; | |
107 | 12795 | PetscInt i; | |
108 | |||
109 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
12795 | PetscFunctionBegin; |
110 |
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.
|
12795 | PetscAssertPointer(newds,2); |
111 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
12795 | PetscCall(DSInitializePackage()); |
112 |
7/12✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
12795 | PetscCall(SlepcHeaderCreate(ds,DS_CLASSID,"DS","Direct Solver (or Dense System)","DS",comm,DSDestroy,DSView)); |
113 | |||
114 | 12795 | ds->state = DS_STATE_RAW; | |
115 | 12795 | ds->method = 0; | |
116 | 12795 | ds->compact = PETSC_FALSE; | |
117 | 12795 | ds->refined = PETSC_FALSE; | |
118 | 12795 | ds->extrarow = PETSC_FALSE; | |
119 | 12795 | ds->ld = 0; | |
120 | 12795 | ds->l = 0; | |
121 | 12795 | ds->n = 0; | |
122 | 12795 | ds->k = 0; | |
123 | 12795 | ds->t = 0; | |
124 | 12795 | ds->bs = 1; | |
125 | 12795 | ds->sc = NULL; | |
126 | 12795 | ds->pmode = DS_PARALLEL_REDUNDANT; | |
127 | |||
128 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
294285 | for (i=0;i<DS_NUM_MAT;i++) ds->omat[i] = NULL; |
129 | 12795 | ds->perm = NULL; | |
130 | 12795 | ds->data = NULL; | |
131 | 12795 | ds->scset = PETSC_FALSE; | |
132 | 12795 | ds->work = NULL; | |
133 | 12795 | ds->rwork = NULL; | |
134 | 12795 | ds->iwork = NULL; | |
135 | 12795 | ds->lwork = 0; | |
136 | 12795 | ds->lrwork = 0; | |
137 | 12795 | ds->liwork = 0; | |
138 | |||
139 | 12795 | *newds = ds; | |
140 |
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.
|
12795 | PetscFunctionReturn(PETSC_SUCCESS); |
141 | } | ||
142 | |||
143 | /*@ | ||
144 | DSSetOptionsPrefix - Sets the prefix used for searching for all | ||
145 | DS options in the database. | ||
146 | |||
147 | Logically Collective | ||
148 | |||
149 | Input Parameters: | ||
150 | + ds - the direct solver context | ||
151 | - prefix - the prefix string to prepend to all DS option requests | ||
152 | |||
153 | Notes: | ||
154 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
155 | The first character of all runtime options is AUTOMATICALLY the | ||
156 | hyphen. | ||
157 | |||
158 | Level: advanced | ||
159 | |||
160 | .seealso: DSAppendOptionsPrefix() | ||
161 | @*/ | ||
162 | 2467 | PetscErrorCode DSSetOptionsPrefix(DS ds,const char *prefix) | |
163 | { | ||
164 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2467 | PetscFunctionBegin; |
165 |
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.
|
2467 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
166 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2467 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)ds,prefix)); |
167 |
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.
|
472 | PetscFunctionReturn(PETSC_SUCCESS); |
168 | } | ||
169 | |||
170 | /*@ | ||
171 | DSAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
172 | DS options in the database. | ||
173 | |||
174 | Logically Collective | ||
175 | |||
176 | Input Parameters: | ||
177 | + ds - the direct solver context | ||
178 | - prefix - the prefix string to prepend to all DS option requests | ||
179 | |||
180 | Notes: | ||
181 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
182 | The first character of all runtime options is AUTOMATICALLY the hyphen. | ||
183 | |||
184 | Level: advanced | ||
185 | |||
186 | .seealso: DSSetOptionsPrefix() | ||
187 | @*/ | ||
188 | 1974 | PetscErrorCode DSAppendOptionsPrefix(DS ds,const char *prefix) | |
189 | { | ||
190 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1974 | PetscFunctionBegin; |
191 |
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.
|
1974 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
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.
|
1974 | PetscCall(PetscObjectAppendOptionsPrefix((PetscObject)ds,prefix)); |
193 |
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.
|
390 | PetscFunctionReturn(PETSC_SUCCESS); |
194 | } | ||
195 | |||
196 | /*@ | ||
197 | DSGetOptionsPrefix - Gets the prefix used for searching for all | ||
198 | DS options in the database. | ||
199 | |||
200 | Not Collective | ||
201 | |||
202 | Input Parameters: | ||
203 | . ds - the direct solver context | ||
204 | |||
205 | Output Parameters: | ||
206 | . prefix - pointer to the prefix string used is returned | ||
207 | |||
208 | Note: | ||
209 | On the Fortran side, the user should pass in a string 'prefix' of | ||
210 | sufficient length to hold the prefix. | ||
211 | |||
212 | Level: advanced | ||
213 | |||
214 | .seealso: DSSetOptionsPrefix(), DSAppendOptionsPrefix() | ||
215 | @*/ | ||
216 | ✗ | PetscErrorCode DSGetOptionsPrefix(DS ds,const char *prefix[]) | |
217 | { | ||
218 | ✗ | PetscFunctionBegin; | |
219 | ✗ | PetscValidHeaderSpecific(ds,DS_CLASSID,1); | |
220 | ✗ | PetscAssertPointer(prefix,2); | |
221 | ✗ | PetscCall(PetscObjectGetOptionsPrefix((PetscObject)ds,prefix)); | |
222 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
223 | } | ||
224 | |||
225 | /*@ | ||
226 | DSSetType - Selects the type for the DS object. | ||
227 | |||
228 | Logically Collective | ||
229 | |||
230 | Input Parameters: | ||
231 | + ds - the direct solver context | ||
232 | - type - a known type | ||
233 | |||
234 | Level: intermediate | ||
235 | |||
236 | .seealso: DSGetType() | ||
237 | @*/ | ||
238 | 25672 | PetscErrorCode DSSetType(DS ds,DSType type) | |
239 | { | ||
240 | 25672 | PetscErrorCode (*r)(DS); | |
241 | 25672 | PetscBool match; | |
242 | |||
243 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
25672 | PetscFunctionBegin; |
244 |
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.
|
25672 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
245 |
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.
|
25672 | PetscAssertPointer(type,2); |
246 | |||
247 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
25672 | PetscCall(PetscObjectTypeCompare((PetscObject)ds,type,&match)); |
248 |
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.
|
25672 | if (match) PetscFunctionReturn(PETSC_SUCCESS); |
249 | |||
250 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16975 | PetscCall(PetscFunctionListFind(DSList,type,&r)); |
251 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16975 | PetscCheck(r,PetscObjectComm((PetscObject)ds),PETSC_ERR_ARG_UNKNOWN_TYPE,"Unable to find requested DS type %s",type); |
252 | |||
253 |
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.
|
16975 | PetscTryTypeMethod(ds,destroy); |
254 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16975 | PetscCall(DSReset(ds)); |
255 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16975 | PetscCall(PetscMemzero(ds->ops,sizeof(struct _DSOps))); |
256 | |||
257 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16975 | PetscCall(PetscObjectChangeTypeName((PetscObject)ds,type)); |
258 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
16975 | PetscCall((*r)(ds)); |
259 |
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.
|
3289 | PetscFunctionReturn(PETSC_SUCCESS); |
260 | } | ||
261 | |||
262 | /*@ | ||
263 | DSGetType - Gets the DS type name (as a string) from the DS context. | ||
264 | |||
265 | Not Collective | ||
266 | |||
267 | Input Parameter: | ||
268 | . ds - the direct solver context | ||
269 | |||
270 | Output Parameter: | ||
271 | . type - name of the direct solver | ||
272 | |||
273 | Level: intermediate | ||
274 | |||
275 | .seealso: DSSetType() | ||
276 | @*/ | ||
277 | 20 | PetscErrorCode DSGetType(DS ds,DSType *type) | |
278 | { | ||
279 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
20 | PetscFunctionBegin; |
280 |
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.
|
20 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
281 |
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.
|
20 | PetscAssertPointer(type,2); |
282 | 20 | *type = ((PetscObject)ds)->type_name; | |
283 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
20 | PetscFunctionReturn(PETSC_SUCCESS); |
284 | } | ||
285 | |||
286 | /*@ | ||
287 | DSDuplicate - Creates a new direct solver object with the same options as | ||
288 | an existing one. | ||
289 | |||
290 | Collective | ||
291 | |||
292 | Input Parameter: | ||
293 | . ds - direct solver context | ||
294 | |||
295 | Output Parameter: | ||
296 | . dsnew - location to put the new DS | ||
297 | |||
298 | Notes: | ||
299 | DSDuplicate() DOES NOT COPY the matrices, and the new DS does not even have | ||
300 | internal arrays allocated. Use DSAllocate() to use the new DS. | ||
301 | |||
302 | The sorting criterion options are not copied, see DSSetSlepcSC(). | ||
303 | |||
304 | Level: intermediate | ||
305 | |||
306 | .seealso: DSCreate(), DSAllocate(), DSSetSlepcSC() | ||
307 | @*/ | ||
308 | ✗ | PetscErrorCode DSDuplicate(DS ds,DS *dsnew) | |
309 | { | ||
310 | ✗ | PetscFunctionBegin; | |
311 | ✗ | PetscValidHeaderSpecific(ds,DS_CLASSID,1); | |
312 | ✗ | PetscAssertPointer(dsnew,2); | |
313 | ✗ | PetscCall(DSCreate(PetscObjectComm((PetscObject)ds),dsnew)); | |
314 | ✗ | if (((PetscObject)ds)->type_name) PetscCall(DSSetType(*dsnew,((PetscObject)ds)->type_name)); | |
315 | ✗ | (*dsnew)->method = ds->method; | |
316 | ✗ | (*dsnew)->compact = ds->compact; | |
317 | ✗ | (*dsnew)->refined = ds->refined; | |
318 | ✗ | (*dsnew)->extrarow = ds->extrarow; | |
319 | ✗ | (*dsnew)->bs = ds->bs; | |
320 | ✗ | (*dsnew)->pmode = ds->pmode; | |
321 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
322 | } | ||
323 | |||
324 | /*@ | ||
325 | DSSetMethod - Selects the method to be used to solve the problem. | ||
326 | |||
327 | Logically Collective | ||
328 | |||
329 | Input Parameters: | ||
330 | + ds - the direct solver context | ||
331 | - meth - an index identifying the method | ||
332 | |||
333 | Options Database Key: | ||
334 | . -ds_method <meth> - Sets the method | ||
335 | |||
336 | Level: intermediate | ||
337 | |||
338 | .seealso: DSGetMethod() | ||
339 | @*/ | ||
340 | 679 | PetscErrorCode DSSetMethod(DS ds,PetscInt meth) | |
341 | { | ||
342 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
679 | PetscFunctionBegin; |
343 |
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.
|
679 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
344 |
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.
|
679 | PetscValidLogicalCollectiveInt(ds,meth,2); |
345 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
679 | PetscCheck(meth>=0,PetscObjectComm((PetscObject)ds),PETSC_ERR_ARG_OUTOFRANGE,"The method must be a non-negative integer"); |
346 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
679 | PetscCheck(meth<=DS_MAX_SOLVE,PetscObjectComm((PetscObject)ds),PETSC_ERR_ARG_OUTOFRANGE,"Too large value for the method"); |
347 | 679 | ds->method = meth; | |
348 |
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.
|
679 | PetscFunctionReturn(PETSC_SUCCESS); |
349 | } | ||
350 | |||
351 | /*@ | ||
352 | DSGetMethod - Gets the method currently used in the DS. | ||
353 | |||
354 | Not Collective | ||
355 | |||
356 | Input Parameter: | ||
357 | . ds - the direct solver context | ||
358 | |||
359 | Output Parameter: | ||
360 | . meth - identifier of the method | ||
361 | |||
362 | Level: intermediate | ||
363 | |||
364 | .seealso: DSSetMethod() | ||
365 | @*/ | ||
366 | 227 | PetscErrorCode DSGetMethod(DS ds,PetscInt *meth) | |
367 | { | ||
368 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
227 | PetscFunctionBegin; |
369 |
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.
|
227 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
370 |
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.
|
227 | PetscAssertPointer(meth,2); |
371 | 227 | *meth = ds->method; | |
372 |
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.
|
227 | PetscFunctionReturn(PETSC_SUCCESS); |
373 | } | ||
374 | |||
375 | /*@ | ||
376 | DSSetParallel - Selects the mode of operation in parallel runs. | ||
377 | |||
378 | Logically Collective | ||
379 | |||
380 | Input Parameters: | ||
381 | + ds - the direct solver context | ||
382 | - pmode - the parallel mode | ||
383 | |||
384 | Options Database Key: | ||
385 | . -ds_parallel <mode> - Sets the parallel mode, 'redundant', 'synchronized' | ||
386 | or 'distributed' | ||
387 | |||
388 | Notes: | ||
389 | In the 'redundant' parallel mode, all processes will make the computation | ||
390 | redundantly, starting from the same data, and producing the same result. | ||
391 | This result may be slightly different in the different processes if using a | ||
392 | multithreaded BLAS library, which may cause issues in ill-conditioned problems. | ||
393 | |||
394 | In the 'synchronized' parallel mode, only the first MPI process performs the | ||
395 | computation and then the computed quantities are broadcast to the other | ||
396 | processes in the communicator. This communication is not done automatically, | ||
397 | an explicit call to DSSynchronize() is required. | ||
398 | |||
399 | The 'distributed' parallel mode can be used in some DS types only, such | ||
400 | as the contour integral method of DSNEP. In this case, every MPI process | ||
401 | will be in charge of part of the computation. | ||
402 | |||
403 | Level: advanced | ||
404 | |||
405 | .seealso: DSSynchronize(), DSGetParallel() | ||
406 | @*/ | ||
407 | 837 | PetscErrorCode DSSetParallel(DS ds,DSParallelType pmode) | |
408 | { | ||
409 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
837 | PetscFunctionBegin; |
410 |
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.
|
837 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
411 |
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.
|
837 | PetscValidLogicalCollectiveEnum(ds,pmode,2); |
412 | 837 | ds->pmode = pmode; | |
413 |
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.
|
837 | PetscFunctionReturn(PETSC_SUCCESS); |
414 | } | ||
415 | |||
416 | /*@ | ||
417 | DSGetParallel - Gets the mode of operation in parallel runs. | ||
418 | |||
419 | Not Collective | ||
420 | |||
421 | Input Parameter: | ||
422 | . ds - the direct solver context | ||
423 | |||
424 | Output Parameter: | ||
425 | . pmode - the parallel mode | ||
426 | |||
427 | Level: advanced | ||
428 | |||
429 | .seealso: DSSetParallel() | ||
430 | @*/ | ||
431 | 197 | PetscErrorCode DSGetParallel(DS ds,DSParallelType *pmode) | |
432 | { | ||
433 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
197 | PetscFunctionBegin; |
434 |
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.
|
197 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
435 |
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.
|
197 | PetscAssertPointer(pmode,2); |
436 | 197 | *pmode = ds->pmode; | |
437 |
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.
|
197 | PetscFunctionReturn(PETSC_SUCCESS); |
438 | } | ||
439 | |||
440 | /*@ | ||
441 | DSSetCompact - Switch to compact storage of matrices. | ||
442 | |||
443 | Logically Collective | ||
444 | |||
445 | Input Parameters: | ||
446 | + ds - the direct solver context | ||
447 | - comp - a boolean flag | ||
448 | |||
449 | Notes: | ||
450 | Compact storage is used in some DS types such as DSHEP when the matrix | ||
451 | is tridiagonal. This flag can be used to indicate whether the user | ||
452 | provides the matrix entries via the compact form (the tridiagonal DS_MAT_T) | ||
453 | or the non-compact one (DS_MAT_A). | ||
454 | |||
455 | The default is PETSC_FALSE. | ||
456 | |||
457 | Level: advanced | ||
458 | |||
459 | .seealso: DSGetCompact() | ||
460 | @*/ | ||
461 | 6080 | PetscErrorCode DSSetCompact(DS ds,PetscBool comp) | |
462 | { | ||
463 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
6080 | PetscFunctionBegin; |
464 |
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.
|
6080 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
465 |
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.
|
6080 | PetscValidLogicalCollectiveBool(ds,comp,2); |
466 |
10/12✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✓ 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.
|
6080 | if (ds->compact != comp && ds->ld) PetscTryTypeMethod(ds,setcompact,comp); |
467 | 6080 | ds->compact = comp; | |
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.
|
6080 | PetscFunctionReturn(PETSC_SUCCESS); |
469 | } | ||
470 | |||
471 | /*@ | ||
472 | DSGetCompact - Gets the compact storage flag. | ||
473 | |||
474 | Not Collective | ||
475 | |||
476 | Input Parameter: | ||
477 | . ds - the direct solver context | ||
478 | |||
479 | Output Parameter: | ||
480 | . comp - the flag | ||
481 | |||
482 | Level: advanced | ||
483 | |||
484 | .seealso: DSSetCompact() | ||
485 | @*/ | ||
486 | 216 | PetscErrorCode DSGetCompact(DS ds,PetscBool *comp) | |
487 | { | ||
488 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
216 | PetscFunctionBegin; |
489 |
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.
|
216 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
490 |
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.
|
216 | PetscAssertPointer(comp,2); |
491 | 216 | *comp = ds->compact; | |
492 |
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.
|
216 | PetscFunctionReturn(PETSC_SUCCESS); |
493 | } | ||
494 | |||
495 | /*@ | ||
496 | DSSetExtraRow - Sets a flag to indicate that the matrix has one extra | ||
497 | row. | ||
498 | |||
499 | Logically Collective | ||
500 | |||
501 | Input Parameters: | ||
502 | + ds - the direct solver context | ||
503 | - ext - a boolean flag | ||
504 | |||
505 | Notes: | ||
506 | In Krylov methods it is useful that the matrix representing the direct solver | ||
507 | has one extra row, i.e., has dimension (n+1) x n. If this flag is activated, all | ||
508 | transformations applied to the right of the matrix also affect this additional | ||
509 | row. In that case, (n+1) must be less or equal than the leading dimension. | ||
510 | |||
511 | The default is PETSC_FALSE. | ||
512 | |||
513 | Level: advanced | ||
514 | |||
515 | .seealso: DSSolve(), DSAllocate(), DSGetExtraRow() | ||
516 | @*/ | ||
517 | 9324 | PetscErrorCode DSSetExtraRow(DS ds,PetscBool ext) | |
518 | { | ||
519 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9324 | PetscFunctionBegin; |
520 |
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.
|
9324 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
521 |
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.
|
9324 | PetscValidLogicalCollectiveBool(ds,ext,2); |
522 |
5/8✓ 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 not taken.
✗ Branch 7 not taken.
|
9324 | PetscCheck(!ext || ds->n==0 || ds->n!=ds->ld,PetscObjectComm((PetscObject)ds),PETSC_ERR_ORDER,"Cannot set extra row after setting n=ld"); |
523 | 9324 | ds->extrarow = ext; | |
524 |
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.
|
9324 | PetscFunctionReturn(PETSC_SUCCESS); |
525 | } | ||
526 | |||
527 | /*@ | ||
528 | DSGetExtraRow - Gets the extra row flag. | ||
529 | |||
530 | Not Collective | ||
531 | |||
532 | Input Parameter: | ||
533 | . ds - the direct solver context | ||
534 | |||
535 | Output Parameter: | ||
536 | . ext - the flag | ||
537 | |||
538 | Level: advanced | ||
539 | |||
540 | .seealso: DSSetExtraRow() | ||
541 | @*/ | ||
542 | 27536 | PetscErrorCode DSGetExtraRow(DS ds,PetscBool *ext) | |
543 | { | ||
544 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
27536 | PetscFunctionBegin; |
545 |
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.
|
27536 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
546 |
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.
|
27536 | PetscAssertPointer(ext,2); |
547 | 27536 | *ext = ds->extrarow; | |
548 |
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.
|
27536 | PetscFunctionReturn(PETSC_SUCCESS); |
549 | } | ||
550 | |||
551 | /*@ | ||
552 | DSSetRefined - Sets a flag to indicate that refined vectors must be | ||
553 | computed. | ||
554 | |||
555 | Logically Collective | ||
556 | |||
557 | Input Parameters: | ||
558 | + ds - the direct solver context | ||
559 | - ref - a boolean flag | ||
560 | |||
561 | Notes: | ||
562 | Normally the vectors returned in DS_MAT_X are eigenvectors of the | ||
563 | projected matrix. With this flag activated, DSVectors() will return | ||
564 | the right singular vector of the smallest singular value of matrix | ||
565 | \tilde{A}-theta*I, where \tilde{A} is the extended (n+1)xn matrix | ||
566 | and theta is the Ritz value. This is used in the refined Ritz | ||
567 | approximation. | ||
568 | |||
569 | The default is PETSC_FALSE. | ||
570 | |||
571 | Level: advanced | ||
572 | |||
573 | .seealso: DSVectors(), DSGetRefined() | ||
574 | @*/ | ||
575 | 10 | PetscErrorCode DSSetRefined(DS ds,PetscBool ref) | |
576 | { | ||
577 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
578 |
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(ds,DS_CLASSID,1); |
579 |
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.
|
10 | PetscValidLogicalCollectiveBool(ds,ref,2); |
580 | 10 | ds->refined = ref; | |
581 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
10 | PetscFunctionReturn(PETSC_SUCCESS); |
582 | } | ||
583 | |||
584 | /*@ | ||
585 | DSGetRefined - Gets the refined vectors flag. | ||
586 | |||
587 | Not Collective | ||
588 | |||
589 | Input Parameter: | ||
590 | . ds - the direct solver context | ||
591 | |||
592 | Output Parameter: | ||
593 | . ref - the flag | ||
594 | |||
595 | Level: advanced | ||
596 | |||
597 | .seealso: DSSetRefined() | ||
598 | @*/ | ||
599 | 54267 | PetscErrorCode DSGetRefined(DS ds,PetscBool *ref) | |
600 | { | ||
601 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
54267 | PetscFunctionBegin; |
602 |
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.
|
54267 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
603 |
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.
|
54267 | PetscAssertPointer(ref,2); |
604 | 54267 | *ref = ds->refined; | |
605 |
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.
|
54267 | PetscFunctionReturn(PETSC_SUCCESS); |
606 | } | ||
607 | |||
608 | /*@ | ||
609 | DSSetBlockSize - Sets the block size. | ||
610 | |||
611 | Logically Collective | ||
612 | |||
613 | Input Parameters: | ||
614 | + ds - the direct solver context | ||
615 | - bs - the block size | ||
616 | |||
617 | Options Database Key: | ||
618 | . -ds_block_size <bs> - Sets the block size | ||
619 | |||
620 | Level: intermediate | ||
621 | |||
622 | .seealso: DSGetBlockSize() | ||
623 | @*/ | ||
624 | 10 | PetscErrorCode DSSetBlockSize(DS ds,PetscInt bs) | |
625 | { | ||
626 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
627 |
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.
|
10 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
628 |
27/62✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ 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 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 1 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 1 times.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 1 times.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 1 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
10 | PetscValidLogicalCollectiveInt(ds,bs,2); |
629 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
10 | PetscCheck(bs>0,PetscObjectComm((PetscObject)ds),PETSC_ERR_ARG_OUTOFRANGE,"The block size must be at least one"); |
630 | 10 | ds->bs = bs; | |
631 |
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.
|
10 | PetscFunctionReturn(PETSC_SUCCESS); |
632 | } | ||
633 | |||
634 | /*@ | ||
635 | DSGetBlockSize - Gets the block size. | ||
636 | |||
637 | Not Collective | ||
638 | |||
639 | Input Parameter: | ||
640 | . ds - the direct solver context | ||
641 | |||
642 | Output Parameter: | ||
643 | . bs - block size | ||
644 | |||
645 | Level: intermediate | ||
646 | |||
647 | .seealso: DSSetBlockSize() | ||
648 | @*/ | ||
649 | ✗ | PetscErrorCode DSGetBlockSize(DS ds,PetscInt *bs) | |
650 | { | ||
651 | ✗ | PetscFunctionBegin; | |
652 | ✗ | PetscValidHeaderSpecific(ds,DS_CLASSID,1); | |
653 | ✗ | PetscAssertPointer(bs,2); | |
654 | ✗ | *bs = ds->bs; | |
655 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
656 | } | ||
657 | |||
658 | /*@C | ||
659 | DSSetSlepcSC - Sets the sorting criterion context. | ||
660 | |||
661 | Logically Collective | ||
662 | |||
663 | Input Parameters: | ||
664 | + ds - the direct solver context | ||
665 | - sc - a pointer to the sorting criterion context | ||
666 | |||
667 | Note: | ||
668 | Not available in Fortran. | ||
669 | |||
670 | Level: developer | ||
671 | |||
672 | .seealso: DSGetSlepcSC(), DSSort() | ||
673 | @*/ | ||
674 | 10 | PetscErrorCode DSSetSlepcSC(DS ds,SlepcSC sc) | |
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(ds,DS_CLASSID,1); |
678 |
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.
|
10 | PetscAssertPointer(sc,2); |
679 |
1/12✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
10 | if (ds->sc && !ds->scset) PetscCall(PetscFree(ds->sc)); |
680 | 10 | ds->sc = sc; | |
681 | 10 | ds->scset = PETSC_TRUE; | |
682 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
10 | PetscFunctionReturn(PETSC_SUCCESS); |
683 | } | ||
684 | |||
685 | /*@C | ||
686 | DSGetSlepcSC - Gets the sorting criterion context. | ||
687 | |||
688 | Not Collective | ||
689 | |||
690 | Input Parameter: | ||
691 | . ds - the direct solver context | ||
692 | |||
693 | Output Parameter: | ||
694 | . sc - a pointer to the sorting criterion context | ||
695 | |||
696 | Note: | ||
697 | Not available in Fortran. | ||
698 | |||
699 | Level: developer | ||
700 | |||
701 | .seealso: DSSetSlepcSC(), DSSort() | ||
702 | @*/ | ||
703 | 16970 | PetscErrorCode DSGetSlepcSC(DS ds,SlepcSC *sc) | |
704 | { | ||
705 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16970 | PetscFunctionBegin; |
706 |
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.
|
16970 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
707 |
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.
|
16970 | PetscAssertPointer(sc,2); |
708 |
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.
|
16970 | if (!ds->sc) PetscCall(PetscNew(&ds->sc)); |
709 | 16970 | *sc = ds->sc; | |
710 |
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.
|
16970 | PetscFunctionReturn(PETSC_SUCCESS); |
711 | } | ||
712 | |||
713 | /*@ | ||
714 | DSSetFromOptions - Sets DS options from the options database. | ||
715 | |||
716 | Collective | ||
717 | |||
718 | Input Parameters: | ||
719 | . ds - the direct solver context | ||
720 | |||
721 | Notes: | ||
722 | To see all options, run your program with the -help option. | ||
723 | |||
724 | Level: beginner | ||
725 | |||
726 | .seealso: DSSetOptionsPrefix() | ||
727 | @*/ | ||
728 | 11956 | PetscErrorCode DSSetFromOptions(DS ds) | |
729 | { | ||
730 | 11956 | PetscInt bs,meth; | |
731 | 11956 | PetscBool flag; | |
732 | 11956 | DSParallelType pmode; | |
733 | |||
734 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
11956 | PetscFunctionBegin; |
735 |
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.
|
11956 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
736 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11956 | PetscCall(DSRegisterAll()); |
737 | /* Set default type (we do not allow changing it with -ds_type) */ | ||
738 |
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.
|
11956 | if (!((PetscObject)ds)->type_name) PetscCall(DSSetType(ds,DSNHEP)); |
739 |
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.
|
35868 | PetscObjectOptionsBegin((PetscObject)ds); |
740 | |||
741 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11956 | PetscCall(PetscOptionsInt("-ds_block_size","Block size for the dense system solver","DSSetBlockSize",ds->bs,&bs,&flag)); |
742 |
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.
|
11956 | if (flag) PetscCall(DSSetBlockSize(ds,bs)); |
743 | |||
744 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11956 | PetscCall(PetscOptionsInt("-ds_method","Method to be used for the dense system","DSSetMethod",ds->method,&meth,&flag)); |
745 |
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.
|
11956 | if (flag) PetscCall(DSSetMethod(ds,meth)); |
746 | |||
747 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11956 | PetscCall(PetscOptionsEnum("-ds_parallel","Operation mode in parallel runs","DSSetParallel",DSParallelTypes,(PetscEnum)ds->pmode,(PetscEnum*)&pmode,&flag)); |
748 |
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.
|
11956 | if (flag) PetscCall(DSSetParallel(ds,pmode)); |
749 | |||
750 |
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.
|
11956 | PetscTryTypeMethod(ds,setfromoptions,PetscOptionsObject); |
751 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11956 | PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)ds,PetscOptionsObject)); |
752 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11956 | PetscOptionsEnd(); |
753 |
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.
|
11956 | PetscFunctionReturn(PETSC_SUCCESS); |
754 | } | ||
755 | |||
756 | /*@ | ||
757 | DSView - Prints the DS data structure. | ||
758 | |||
759 | Collective | ||
760 | |||
761 | Input Parameters: | ||
762 | + ds - the direct solver context | ||
763 | - viewer - optional visualization context | ||
764 | |||
765 | Note: | ||
766 | The available visualization contexts include | ||
767 | + PETSC_VIEWER_STDOUT_SELF - standard output (default) | ||
768 | - PETSC_VIEWER_STDOUT_WORLD - synchronized standard | ||
769 | output where only the first processor opens | ||
770 | the file. All other processors send their | ||
771 | data to the first processor to print. | ||
772 | |||
773 | The user can open an alternative visualization context with | ||
774 | PetscViewerASCIIOpen() - output to a specified file. | ||
775 | |||
776 | Level: beginner | ||
777 | |||
778 | .seealso: DSViewMat() | ||
779 | @*/ | ||
780 | 1243 | PetscErrorCode DSView(DS ds,PetscViewer viewer) | |
781 | { | ||
782 | 1243 | PetscBool isascii; | |
783 | 1243 | PetscViewerFormat format; | |
784 | 1243 | PetscMPIInt size; | |
785 | |||
786 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1243 | PetscFunctionBegin; |
787 |
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.
|
1243 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
788 |
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.
|
1243 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)ds),&viewer)); |
789 |
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.
|
1243 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2); |
790 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
1243 | PetscCheckSameComm(ds,1,viewer,2); |
791 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1243 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
792 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1243 | if (isascii) { |
793 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1243 | PetscCall(PetscViewerGetFormat(viewer,&format)); |
794 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1243 | PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)ds,viewer)); |
795 |
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.
|
1243 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)ds),&size)); |
796 |
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.
|
1243 | if (size>1) PetscCall(PetscViewerASCIIPrintf(viewer," parallel operation mode: %s\n",DSParallelTypes[ds->pmode])); |
797 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1243 | if (format == PETSC_VIEWER_ASCII_INFO_DETAIL) { |
798 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
655 | PetscCall(PetscViewerASCIIPrintf(viewer," current state: %s\n",DSStateTypes[ds->state])); |
799 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
655 | PetscCall(PetscViewerASCIIPrintf(viewer," dimensions: ld=%" PetscInt_FMT ", n=%" PetscInt_FMT ", l=%" PetscInt_FMT ", k=%" PetscInt_FMT,ds->ld,ds->n,ds->l,ds->k)); |
800 |
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.
|
655 | if (ds->state==DS_STATE_TRUNCATED) PetscCall(PetscViewerASCIIPrintf(viewer,", t=%" PetscInt_FMT "\n",ds->t)); |
801 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
655 | else PetscCall(PetscViewerASCIIPrintf(viewer,"\n")); |
802 |
10/12✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 10 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2170 | PetscCall(PetscViewerASCIIPrintf(viewer," flags:%s%s%s\n",ds->compact?" compact":"",ds->extrarow?" extrarow":"",ds->refined?" refined":"")); |
803 | } | ||
804 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1243 | PetscCall(PetscViewerASCIIPushTab(viewer)); |
805 |
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.
|
1243 | PetscTryTypeMethod(ds,view,viewer); |
806 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1243 | PetscCall(PetscViewerASCIIPopTab(viewer)); |
807 | } | ||
808 |
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); |
809 | } | ||
810 | |||
811 | /*@ | ||
812 | DSViewFromOptions - View from options | ||
813 | |||
814 | Collective | ||
815 | |||
816 | Input Parameters: | ||
817 | + ds - the direct solver context | ||
818 | . obj - optional object | ||
819 | - name - command line option | ||
820 | |||
821 | Level: intermediate | ||
822 | |||
823 | .seealso: DSView(), DSCreate() | ||
824 | @*/ | ||
825 | 15 | PetscErrorCode DSViewFromOptions(DS ds,PetscObject obj,const char name[]) | |
826 | { | ||
827 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
15 | PetscFunctionBegin; |
828 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
15 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
829 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
15 | PetscCall(PetscObjectViewFromOptions((PetscObject)ds,obj,name)); |
830 |
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); |
831 | } | ||
832 | |||
833 | /*@ | ||
834 | DSAllocate - Allocates memory for internal storage or matrices in DS. | ||
835 | |||
836 | Logically Collective | ||
837 | |||
838 | Input Parameters: | ||
839 | + ds - the direct solver context | ||
840 | - ld - leading dimension (maximum allowed dimension for the matrices, including | ||
841 | the extra row if present) | ||
842 | |||
843 | Note: | ||
844 | If the leading dimension is different from a previously set value, then | ||
845 | all matrices are destroyed with DSReset(). | ||
846 | |||
847 | Level: intermediate | ||
848 | |||
849 | .seealso: DSGetLeadingDimension(), DSSetDimensions(), DSSetExtraRow(), DSReset(), DSReallocate() | ||
850 | @*/ | ||
851 | 15011 | PetscErrorCode DSAllocate(DS ds,PetscInt ld) | |
852 | { | ||
853 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
15011 | PetscFunctionBegin; |
854 |
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.
|
15011 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
855 |
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.
|
15011 | PetscValidLogicalCollectiveInt(ds,ld,2); |
856 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
15011 | PetscValidType(ds,1); |
857 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
15011 | PetscCheck(ld>0,PetscObjectComm((PetscObject)ds),PETSC_ERR_ARG_OUTOFRANGE,"Leading dimension should be at least one"); |
858 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
15011 | if (ld!=ds->ld) { |
859 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11645 | PetscCall(PetscInfo(ds,"Allocating memory with leading dimension=%" PetscInt_FMT "\n",ld)); |
860 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11645 | PetscCall(DSReset(ds)); |
861 | 11645 | ds->ld = ld; | |
862 |
5/10✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ 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.
|
11645 | PetscUseTypeMethod(ds,allocate,ld); |
863 | } | ||
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.
|
2890 | PetscFunctionReturn(PETSC_SUCCESS); |
865 | } | ||
866 | |||
867 | /*@ | ||
868 | DSReallocate - Reallocates memory for internal storage or matrices in DS, | ||
869 | keeping the previously set data. | ||
870 | |||
871 | Logically Collective | ||
872 | |||
873 | Input Parameters: | ||
874 | + ds - the direct solver context | ||
875 | - ld - new leading dimension | ||
876 | |||
877 | Notes: | ||
878 | The new leading dimension must be larger than the previous one. The relevant | ||
879 | data previously set is copied over to the new data structures. | ||
880 | |||
881 | This operation is not available in all DS types. | ||
882 | |||
883 | Level: developer | ||
884 | |||
885 | .seealso: DSAllocate() | ||
886 | @*/ | ||
887 | 112 | PetscErrorCode DSReallocate(DS ds,PetscInt ld) | |
888 | { | ||
889 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
112 | PetscFunctionBegin; |
890 |
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.
|
112 | PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
891 |
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.
|
112 | PetscValidLogicalCollectiveInt(ds,ld,2); |
892 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
112 | PetscValidType(ds,1); |
893 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
112 | PetscCheck(ds->ld,PetscObjectComm((PetscObject)ds),PETSC_ERR_ORDER,"DSAllocate() must be called first"); |
894 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
112 | PetscCheck(ld>ds->ld,PetscObjectComm((PetscObject)ds),PETSC_ERR_ARG_OUTOFRANGE,"New leading dimension %" PetscInt_FMT " must be larger than the previous one %" PetscInt_FMT,ld,ds->ld); |
895 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
112 | PetscCall(PetscInfo(ds,"Reallocating memory with new leading dimension=%" PetscInt_FMT "\n",ld)); |
896 |
5/10✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ 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.
|
112 | PetscUseTypeMethod(ds,reallocate,ld); |
897 | 112 | ds->ld = ld; | |
898 |
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.
|
112 | PetscFunctionReturn(PETSC_SUCCESS); |
899 | } | ||
900 | |||
901 | /*@ | ||
902 | DSReset - Resets the DS context to the initial state. | ||
903 | |||
904 | Collective | ||
905 | |||
906 | Input Parameter: | ||
907 | . ds - the direct solver context | ||
908 | |||
909 | Note: | ||
910 | All data structures with size depending on the leading dimension | ||
911 | of DSAllocate() are released. | ||
912 | |||
913 | Level: advanced | ||
914 | |||
915 | .seealso: DSDestroy(), DSAllocate() | ||
916 | @*/ | ||
917 | 41651 | PetscErrorCode DSReset(DS ds) | |
918 | { | ||
919 | 41651 | PetscInt i; | |
920 | |||
921 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
41651 | PetscFunctionBegin; |
922 |
3/14✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
41651 | if (ds) PetscValidHeaderSpecific(ds,DS_CLASSID,1); |
923 |
2/14✓ Branch 0 taken 8 times.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
37588 | if (!ds) PetscFunctionReturn(PETSC_SUCCESS); |
924 | 41651 | ds->state = DS_STATE_RAW; | |
925 | 41651 | ds->ld = 0; | |
926 | 41651 | ds->l = 0; | |
927 | 41651 | ds->n = 0; | |
928 | 41651 | ds->k = 0; | |
929 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
957973 | for (i=0;i<DS_NUM_MAT;i++) PetscCall(MatDestroy(&ds->omat[i])); |
930 |
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.
|
41651 | PetscCall(PetscFree(ds->perm)); |
931 |
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.
|
8080 | PetscFunctionReturn(PETSC_SUCCESS); |
932 | } | ||
933 | |||
934 | /*@ | ||
935 | DSDestroy - Destroys DS context that was created with DSCreate(). | ||
936 | |||
937 | Collective | ||
938 | |||
939 | Input Parameter: | ||
940 | . ds - the direct solver context | ||
941 | |||
942 | Level: beginner | ||
943 | |||
944 | .seealso: DSCreate() | ||
945 | @*/ | ||
946 | 13790 | PetscErrorCode DSDestroy(DS *ds) | |
947 | { | ||
948 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
13790 | PetscFunctionBegin; |
949 |
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.
|
13790 | if (!*ds) PetscFunctionReturn(PETSC_SUCCESS); |
950 |
2/12✗ 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 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
12795 | PetscValidHeaderSpecific(*ds,DS_CLASSID,1); |
951 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
12795 | if (--((PetscObject)*ds)->refct > 0) { *ds = NULL; PetscFunctionReturn(PETSC_SUCCESS); } |
952 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
12795 | PetscCall(DSReset(*ds)); |
953 |
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.
|
12795 | PetscTryTypeMethod(*ds,destroy); |
954 |
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.
|
12795 | PetscCall(PetscFree((*ds)->work)); |
955 |
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.
|
12795 | PetscCall(PetscFree((*ds)->rwork)); |
956 |
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.
|
12795 | PetscCall(PetscFree((*ds)->iwork)); |
957 |
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.
|
12795 | if (!(*ds)->scset) PetscCall(PetscFree((*ds)->sc)); |
958 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
12795 | PetscCall(PetscHeaderDestroy(ds)); |
959 |
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.
|
2482 | PetscFunctionReturn(PETSC_SUCCESS); |
960 | } | ||
961 | |||
962 | /*@C | ||
963 | DSRegister - Adds a direct solver to the DS package. | ||
964 | |||
965 | Not Collective | ||
966 | |||
967 | Input Parameters: | ||
968 | + name - name of a new user-defined DS | ||
969 | - function - routine to create context | ||
970 | |||
971 | Note: | ||
972 | DSRegister() may be called multiple times to add several user-defined | ||
973 | direct solvers. | ||
974 | |||
975 | Level: advanced | ||
976 | |||
977 | .seealso: DSRegisterAll() | ||
978 | @*/ | ||
979 | 115995 | PetscErrorCode DSRegister(const char *name,PetscErrorCode (*function)(DS)) | |
980 | { | ||
981 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
115995 | PetscFunctionBegin; |
982 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
115995 | PetscCall(DSInitializePackage()); |
983 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
115995 | PetscCall(PetscFunctionListAdd(&DSList,name,function)); |
984 |
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.
|
22572 | PetscFunctionReturn(PETSC_SUCCESS); |
985 | } | ||
986 | |||
987 | SLEPC_EXTERN PetscErrorCode DSCreate_HEP(DS); | ||
988 | SLEPC_EXTERN PetscErrorCode DSCreate_NHEP(DS); | ||
989 | SLEPC_EXTERN PetscErrorCode DSCreate_GHEP(DS); | ||
990 | SLEPC_EXTERN PetscErrorCode DSCreate_GHIEP(DS); | ||
991 | SLEPC_EXTERN PetscErrorCode DSCreate_GNHEP(DS); | ||
992 | SLEPC_EXTERN PetscErrorCode DSCreate_NHEPTS(DS); | ||
993 | SLEPC_EXTERN PetscErrorCode DSCreate_SVD(DS); | ||
994 | SLEPC_EXTERN PetscErrorCode DSCreate_HSVD(DS); | ||
995 | SLEPC_EXTERN PetscErrorCode DSCreate_GSVD(DS); | ||
996 | SLEPC_EXTERN PetscErrorCode DSCreate_PEP(DS); | ||
997 | SLEPC_EXTERN PetscErrorCode DSCreate_NEP(DS); | ||
998 | |||
999 | /*@C | ||
1000 | DSRegisterAll - Registers all of the direct solvers in the DS package. | ||
1001 | |||
1002 | Not Collective | ||
1003 | |||
1004 | Level: advanced | ||
1005 | |||
1006 | .seealso: DSRegister() | ||
1007 | @*/ | ||
1008 | 22501 | PetscErrorCode DSRegisterAll(void) | |
1009 | { | ||
1010 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
22501 | PetscFunctionBegin; |
1011 |
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.
|
22501 | if (DSRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS); |
1012 | 10545 | DSRegisterAllCalled = PETSC_TRUE; | |
1013 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSHEP,DSCreate_HEP)); |
1014 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSNHEP,DSCreate_NHEP)); |
1015 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSGHEP,DSCreate_GHEP)); |
1016 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSGHIEP,DSCreate_GHIEP)); |
1017 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSGNHEP,DSCreate_GNHEP)); |
1018 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSNHEPTS,DSCreate_NHEPTS)); |
1019 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSSVD,DSCreate_SVD)); |
1020 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSHSVD,DSCreate_HSVD)); |
1021 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSGSVD,DSCreate_GSVD)); |
1022 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSPEP,DSCreate_PEP)); |
1023 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10545 | PetscCall(DSRegister(DSNEP,DSCreate_NEP)); |
1024 |
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.
|
2052 | PetscFunctionReturn(PETSC_SUCCESS); |
1025 | } | ||
1026 |