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 | Routines to set ST methods and options | ||
12 | */ | ||
13 | |||
14 | #include <slepc/private/stimpl.h> /*I "slepcst.h" I*/ | ||
15 | |||
16 | PetscBool STRegisterAllCalled = PETSC_FALSE; | ||
17 | PetscFunctionList STList = NULL; | ||
18 | |||
19 | /*@ | ||
20 | STSetType - Builds ST for a particular spectral transformation. | ||
21 | |||
22 | Logically Collective | ||
23 | |||
24 | Input Parameters: | ||
25 | + st - the spectral transformation context. | ||
26 | - type - a known type | ||
27 | |||
28 | Options Database Key: | ||
29 | . -st_type <type> - Sets ST type | ||
30 | |||
31 | Use -help for a list of available transformations | ||
32 | |||
33 | Notes: | ||
34 | See "slepc/include/slepcst.h" for available transformations | ||
35 | |||
36 | Normally, it is best to use the EPSSetFromOptions() command and | ||
37 | then set the ST type from the options database rather than by using | ||
38 | this routine. Using the options database provides the user with | ||
39 | maximum flexibility in evaluating the many different transformations. | ||
40 | |||
41 | Level: beginner | ||
42 | |||
43 | .seealso: EPSSetType() | ||
44 | |||
45 | @*/ | ||
46 | 12244 | PetscErrorCode STSetType(ST st,STType type) | |
47 | { | ||
48 | 12244 | PetscErrorCode (*r)(ST); | |
49 | 12244 | PetscBool match; | |
50 | |||
51 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
12244 | PetscFunctionBegin; |
52 |
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.
|
12244 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
53 |
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.
|
12244 | PetscAssertPointer(type,2); |
54 | |||
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.
|
12244 | PetscCall(PetscObjectTypeCompare((PetscObject)st,type,&match)); |
56 |
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.
|
12244 | if (match) PetscFunctionReturn(PETSC_SUCCESS); |
57 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
11347 | STCheckNotSeized(st,1); |
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.
|
11347 | PetscCall(PetscFunctionListFind(STList,type,&r)); |
60 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
11347 | PetscCheck(r,PetscObjectComm((PetscObject)st),PETSC_ERR_ARG_UNKNOWN_TYPE,"Unable to find requested ST type %s",type); |
61 | |||
62 |
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.
|
11347 | PetscTryTypeMethod(st,destroy); |
63 |
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.
|
11347 | PetscCall(PetscMemzero(st->ops,sizeof(struct _STOps))); |
64 | |||
65 | 11347 | st->state = ST_STATE_INITIAL; | |
66 | 11347 | st->opready = PETSC_FALSE; | |
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.
|
11347 | PetscCall(PetscObjectChangeTypeName((PetscObject)st,type)); |
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.
|
11347 | PetscCall((*r)(st)); |
69 |
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.
|
2206 | PetscFunctionReturn(PETSC_SUCCESS); |
70 | } | ||
71 | |||
72 | /*@ | ||
73 | STGetType - Gets the ST type name (as a string) from the ST context. | ||
74 | |||
75 | Not Collective | ||
76 | |||
77 | Input Parameter: | ||
78 | . st - the spectral transformation context | ||
79 | |||
80 | Output Parameter: | ||
81 | . type - name of the spectral transformation | ||
82 | |||
83 | Level: intermediate | ||
84 | |||
85 | .seealso: STSetType() | ||
86 | |||
87 | @*/ | ||
88 | 900 | PetscErrorCode STGetType(ST st,STType *type) | |
89 | { | ||
90 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
900 | PetscFunctionBegin; |
91 |
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.
|
900 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
92 |
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.
|
900 | PetscAssertPointer(type,2); |
93 | 900 | *type = ((PetscObject)st)->type_name; | |
94 |
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.
|
900 | PetscFunctionReturn(PETSC_SUCCESS); |
95 | } | ||
96 | |||
97 | /*@ | ||
98 | STSetFromOptions - Sets ST options from the options database. | ||
99 | This routine must be called before STSetUp() if the user is to be | ||
100 | allowed to set the type of transformation. | ||
101 | |||
102 | Collective | ||
103 | |||
104 | Input Parameter: | ||
105 | . st - the spectral transformation context | ||
106 | |||
107 | Level: beginner | ||
108 | |||
109 | .seealso: STSetOptionsPrefix() | ||
110 | @*/ | ||
111 | 8763 | PetscErrorCode STSetFromOptions(ST st) | |
112 | { | ||
113 | 8763 | PetscScalar s; | |
114 | 8763 | char type[256]; | |
115 | 8763 | PetscBool flg,bval; | |
116 | 8763 | STMatMode mode; | |
117 | 8763 | MatStructure mstr; | |
118 | |||
119 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
8763 | PetscFunctionBegin; |
120 |
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.
|
8763 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
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.
|
8763 | PetscCall(STRegisterAll()); |
122 |
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.
|
26289 | PetscObjectOptionsBegin((PetscObject)st); |
123 |
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.
|
17297 | PetscCall(PetscOptionsFList("-st_type","Spectral transformation","STSetType",STList,(char*)(((PetscObject)st)->type_name?((PetscObject)st)->type_name:STSHIFT),type,sizeof(type),&flg)); |
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.
|
8763 | if (flg) PetscCall(STSetType(st,type)); |
125 |
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.
|
6939 | else if (!((PetscObject)st)->type_name) PetscCall(STSetType(st,STSHIFT)); |
126 | |||
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.
|
8763 | PetscCall(PetscOptionsScalar("-st_shift","Value of the shift","STSetShift",st->sigma,&s,&flg)); |
128 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
8763 | if (flg) PetscCall(STSetShift(st,s)); |
129 | |||
130 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
8763 | PetscCall(PetscOptionsEnum("-st_matmode","Matrix mode for transformed matrices","STSetMatMode",STMatModes,(PetscEnum)st->matmode,(PetscEnum*)&mode,&flg)); |
131 |
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.
|
8763 | if (flg) PetscCall(STSetMatMode(st,mode)); |
132 | |||
133 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
8763 | PetscCall(PetscOptionsEnum("-st_matstructure","Relation of the sparsity pattern of the matrices","STSetMatStructure",MatStructures,(PetscEnum)st->str,(PetscEnum*)&mstr,&flg)); |
134 |
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.
|
8763 | if (flg) PetscCall(STSetMatStructure(st,mstr)); |
135 | |||
136 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
8763 | PetscCall(PetscOptionsBool("-st_transform","Whether transformed matrices are computed or not","STSetTransform",st->transform,&bval,&flg)); |
137 |
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.
|
8763 | if (flg) PetscCall(STSetTransform(st,bval)); |
138 | |||
139 |
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.
|
8763 | PetscTryTypeMethod(st,setfromoptions,PetscOptionsObject); |
140 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
8763 | PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)st,PetscOptionsObject)); |
141 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
8763 | PetscOptionsEnd(); |
142 | |||
143 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
8763 | if (st->usesksp) { |
144 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
8437 | PetscCall(STSetDefaultKSP(st)); |
145 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
8437 | PetscCall(KSPSetFromOptions(st->ksp)); |
146 | } | ||
147 |
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.
|
1703 | PetscFunctionReturn(PETSC_SUCCESS); |
148 | } | ||
149 | |||
150 | /*@ | ||
151 | STSetMatStructure - Sets an internal MatStructure attribute to | ||
152 | indicate which is the relation of the sparsity pattern of all ST matrices. | ||
153 | |||
154 | Logically Collective | ||
155 | |||
156 | Input Parameters: | ||
157 | + st - the spectral transformation context | ||
158 | - str - either SAME_NONZERO_PATTERN, DIFFERENT_NONZERO_PATTERN, | ||
159 | SUBSET_NONZERO_PATTERN, or UNKNOWN_NONZERO_PATTERN | ||
160 | |||
161 | Options Database Key: | ||
162 | . -st_matstructure <str> - Indicates the structure flag, where <str> is one | ||
163 | of 'same' (matrices have the same nonzero pattern), 'different' | ||
164 | (different nonzero pattern), 'subset' (pattern is a subset of the | ||
165 | first one), or 'unknown'. | ||
166 | |||
167 | Notes: | ||
168 | If the sparsity pattern of the second matrix is equal or a subset of the | ||
169 | pattern of the first matrix then it is recommended to set this attribute | ||
170 | for efficiency reasons (in particular, for internal MatAXPY() operations). | ||
171 | If not set, the default is UNKNOWN_NONZERO_PATTERN, in which case the patterns | ||
172 | will be compared to determine if they are equal. | ||
173 | |||
174 | This function has no effect in the case of standard eigenproblems. | ||
175 | |||
176 | In case of polynomial eigenproblems, the flag applies to all matrices | ||
177 | relative to the first one. | ||
178 | |||
179 | Level: advanced | ||
180 | |||
181 | .seealso: STSetMatrices(), MatAXPY() | ||
182 | @*/ | ||
183 | 24 | PetscErrorCode STSetMatStructure(ST st,MatStructure str) | |
184 | { | ||
185 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
24 | PetscFunctionBegin; |
186 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
24 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
187 |
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.
|
24 | PetscValidLogicalCollectiveEnum(st,str,2); |
188 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
24 | switch (str) { |
189 | 24 | case SAME_NONZERO_PATTERN: | |
190 | case DIFFERENT_NONZERO_PATTERN: | ||
191 | case SUBSET_NONZERO_PATTERN: | ||
192 | case UNKNOWN_NONZERO_PATTERN: | ||
193 | 24 | st->str = str; | |
194 | 24 | break; | |
195 | ✗ | default: | |
196 | ✗ | SETERRQ(PetscObjectComm((PetscObject)st),PETSC_ERR_ARG_OUTOFRANGE,"Invalid matrix structure flag"); | |
197 | } | ||
198 |
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.
|
24 | PetscFunctionReturn(PETSC_SUCCESS); |
199 | } | ||
200 | |||
201 | /*@ | ||
202 | STGetMatStructure - Gets the internal MatStructure attribute to | ||
203 | indicate which is the relation of the sparsity pattern of the matrices. | ||
204 | |||
205 | Not Collective | ||
206 | |||
207 | Input Parameters: | ||
208 | . st - the spectral transformation context | ||
209 | |||
210 | Output Parameters: | ||
211 | . str - either SAME_NONZERO_PATTERN, DIFFERENT_NONZERO_PATTERN, | ||
212 | SUBSET_NONZERO_PATTERN, or UNKNOWN_NONZERO_PATTERN | ||
213 | |||
214 | Level: advanced | ||
215 | |||
216 | .seealso: STSetMatStructure(), STSetMatrices(), MatAXPY() | ||
217 | @*/ | ||
218 | 7573 | PetscErrorCode STGetMatStructure(ST st,MatStructure *str) | |
219 | { | ||
220 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
7573 | PetscFunctionBegin; |
221 |
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.
|
7573 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
222 |
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.
|
7573 | PetscAssertPointer(str,2); |
223 | 7573 | *str = st->str; | |
224 |
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.
|
7573 | PetscFunctionReturn(PETSC_SUCCESS); |
225 | } | ||
226 | |||
227 | /*@ | ||
228 | STSetMatMode - Sets a flag to indicate how the transformed matrices are | ||
229 | being stored in the spectral transformations. | ||
230 | |||
231 | Logically Collective | ||
232 | |||
233 | Input Parameters: | ||
234 | + st - the spectral transformation context | ||
235 | - mode - the mode flag, one of ST_MATMODE_COPY, | ||
236 | ST_MATMODE_INPLACE, or ST_MATMODE_SHELL | ||
237 | |||
238 | Options Database Key: | ||
239 | . -st_matmode <mode> - Indicates the mode flag, where <mode> is one of | ||
240 | 'copy', 'inplace', 'shell' (see explanation below). | ||
241 | |||
242 | Notes: | ||
243 | By default (ST_MATMODE_COPY), a copy of matrix A is made and then | ||
244 | this copy is modified explicitly, e.g. A <- (A - s B). | ||
245 | |||
246 | With ST_MATMODE_INPLACE, the original matrix A is modified at STSetUp() | ||
247 | and changes are reverted at the end of the computations. With respect to | ||
248 | the previous one, this mode avoids a copy of matrix A. However, a | ||
249 | drawback is that the recovered matrix might be slightly different | ||
250 | from the original one (due to roundoff). | ||
251 | |||
252 | With ST_MATMODE_SHELL, the solver works with an implicit shell | ||
253 | matrix that represents the shifted matrix. This mode is the most efficient | ||
254 | in creating the shifted matrix but it places serious limitations to the | ||
255 | linear solves performed in each iteration of the eigensolver (typically, | ||
256 | only iterative solvers with Jacobi preconditioning can be used). | ||
257 | |||
258 | In the two first modes the efficiency of the computation | ||
259 | can be controlled with STSetMatStructure(). | ||
260 | |||
261 | Level: intermediate | ||
262 | |||
263 | .seealso: STSetMatrices(), STSetMatStructure(), STGetMatMode(), STMatMode | ||
264 | @*/ | ||
265 | 736 | PetscErrorCode STSetMatMode(ST st,STMatMode mode) | |
266 | { | ||
267 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
736 | PetscFunctionBegin; |
268 |
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.
|
736 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
269 |
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.
|
736 | PetscValidLogicalCollectiveEnum(st,mode,2); |
270 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
736 | if (st->matmode != mode) { |
271 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
666 | STCheckNotSeized(st,1); |
272 | 666 | st->matmode = mode; | |
273 | 666 | st->state = ST_STATE_INITIAL; | |
274 | 666 | st->opready = PETSC_FALSE; | |
275 | } | ||
276 |
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.
|
736 | PetscFunctionReturn(PETSC_SUCCESS); |
277 | } | ||
278 | |||
279 | /*@ | ||
280 | STGetMatMode - Gets a flag that indicates how the transformed matrices | ||
281 | are stored in spectral transformations. | ||
282 | |||
283 | Not Collective | ||
284 | |||
285 | Input Parameter: | ||
286 | . st - the spectral transformation context | ||
287 | |||
288 | Output Parameter: | ||
289 | . mode - the mode flag | ||
290 | |||
291 | Level: intermediate | ||
292 | |||
293 | .seealso: STSetMatMode(), STMatMode | ||
294 | @*/ | ||
295 | 9625 | PetscErrorCode STGetMatMode(ST st,STMatMode *mode) | |
296 | { | ||
297 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9625 | PetscFunctionBegin; |
298 |
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.
|
9625 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
299 |
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.
|
9625 | PetscAssertPointer(mode,2); |
300 | 9625 | *mode = st->matmode; | |
301 |
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.
|
9625 | PetscFunctionReturn(PETSC_SUCCESS); |
302 | } | ||
303 | |||
304 | /*@ | ||
305 | STSetTransform - Sets a flag to indicate whether the transformed matrices are | ||
306 | computed or not. | ||
307 | |||
308 | Logically Collective | ||
309 | |||
310 | Input Parameters: | ||
311 | + st - the spectral transformation context | ||
312 | - flg - the boolean flag | ||
313 | |||
314 | Options Database Key: | ||
315 | . -st_transform <bool> - Activate/deactivate the computation of matrices. | ||
316 | |||
317 | Notes: | ||
318 | This flag is intended for the case of polynomial eigenproblems solved | ||
319 | via linearization. If this flag is off (default) the spectral transformation | ||
320 | is applied to the linearization (handled by the eigensolver), otherwise | ||
321 | it is applied to the original problem. | ||
322 | |||
323 | Level: developer | ||
324 | |||
325 | .seealso: STMatSolve(), STMatMult(), STSetMatStructure(), STGetTransform() | ||
326 | @*/ | ||
327 | 11027 | PetscErrorCode STSetTransform(ST st,PetscBool flg) | |
328 | { | ||
329 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
11027 | PetscFunctionBegin; |
330 |
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.
|
11027 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
331 |
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.
|
11027 | PetscValidLogicalCollectiveBool(st,flg,2); |
332 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
11027 | if (st->transform != flg) { |
333 | 7641 | st->transform = flg; | |
334 | 7641 | st->state = ST_STATE_INITIAL; | |
335 | 7641 | st->opready = PETSC_FALSE; | |
336 | } | ||
337 |
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.
|
11027 | PetscFunctionReturn(PETSC_SUCCESS); |
338 | } | ||
339 | |||
340 | /*@ | ||
341 | STGetTransform - Gets a flag that indicates whether the transformed | ||
342 | matrices are computed or not. | ||
343 | |||
344 | Not Collective | ||
345 | |||
346 | Input Parameter: | ||
347 | . st - the spectral transformation context | ||
348 | |||
349 | Output Parameter: | ||
350 | . flg - the flag | ||
351 | |||
352 | Level: developer | ||
353 | |||
354 | .seealso: STSetTransform() | ||
355 | @*/ | ||
356 | 123297 | PetscErrorCode STGetTransform(ST st,PetscBool *flg) | |
357 | { | ||
358 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
123297 | PetscFunctionBegin; |
359 |
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.
|
123297 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
360 |
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.
|
123297 | PetscAssertPointer(flg,2); |
361 | 123297 | *flg = st->transform; | |
362 |
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.
|
123297 | PetscFunctionReturn(PETSC_SUCCESS); |
363 | } | ||
364 | |||
365 | /*@ | ||
366 | STSetStructured - Sets a flag to indicate that the application of the | ||
367 | operator must be done taking into account its structure. | ||
368 | |||
369 | Logically Collective | ||
370 | |||
371 | Input Parameters: | ||
372 | + st - the spectral transformation context | ||
373 | - flg - the boolean flag | ||
374 | |||
375 | Note: | ||
376 | This flag is intended for the case of structured eigenproblems. It is set | ||
377 | internally by the solver, the user should not modify its value. | ||
378 | |||
379 | Level: developer | ||
380 | |||
381 | .seealso: STApply(), STGetStructured() | ||
382 | @*/ | ||
383 | 10111 | PetscErrorCode STSetStructured(ST st,PetscBool flg) | |
384 | { | ||
385 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10111 | PetscFunctionBegin; |
386 |
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.
|
10111 | PetscValidHeaderSpecific(st,ST_CLASSID,1); |
387 |
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.
|
10111 | PetscValidLogicalCollectiveBool(st,flg,2); |
388 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
10111 | if (st->structured != flg) { |
389 | 334 | st->structured = flg; | |
390 | 334 | st->state = ST_STATE_INITIAL; | |
391 | 334 | st->opready = PETSC_FALSE; | |
392 | } | ||
393 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
10111 | PetscFunctionReturn(PETSC_SUCCESS); |
394 | } | ||
395 | |||
396 | /*@ | ||
397 | STGetStructured - Gets a flag that indicates if the application of the | ||
398 | operator is done using its structure. | ||
399 | |||
400 | Not Collective | ||
401 | |||
402 | Input Parameter: | ||
403 | . st - the spectral transformation context | ||
404 | |||
405 | Output Parameter: | ||
406 | . flg - the flag | ||
407 | |||
408 | Level: developer | ||
409 | |||
410 | .seealso: STSetStructured() | ||
411 | @*/ | ||
412 | ✗ | PetscErrorCode STGetStructured(ST st,PetscBool *flg) | |
413 | { | ||
414 | ✗ | PetscFunctionBegin; | |
415 | ✗ | PetscValidHeaderSpecific(st,ST_CLASSID,1); | |
416 | ✗ | PetscAssertPointer(flg,2); | |
417 | ✗ | *flg = st->structured; | |
418 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
419 | } | ||
420 |