23 namespace SOP_LinearSolverEnums
143 myCookInplace =
false;
145 myUseIterativeSolver =
false;
146 myIterativeSolver = 5;
147 mySolveWithGuess =
false;
148 myUseEigensolver =
false;
149 mySpectraEigensolver = 0;
152 mySolverTolerance = 1e-4;
154 myVolumeEncoding = 0;
155 myPointsPrimsEncoding = 0;
156 myDetailEncoding = 0;
157 mySquareMatrix =
false;
160 myRowAttribute =
"row"_UTsh;
161 myColAttribute =
"col"_UTsh;
162 myMatrixValueAttribute =
"value"_UTsh;
163 myVectorSrcStorage = 0;
164 myVectorSrcAttribute =
"known"_UTsh;
165 myVectorDstStorage = 0;
166 myVectorDstAttribute =
"unknown"_UTsh;
167 myPinnedGroup =
""_UTsh;
170 myAccumulateResult =
false;
171 myDenseDirectSolver = 0;
172 mySparseDirectSolver = 1;
173 mySparseDirectSolverBackend = 0;
174 myDensePreconditioner = 1;
175 mySparsePreconditioner = 1;
188 if (myMode != src.myMode)
return false;
189 if (myCookInplace != src.myCookInplace)
return false;
190 if (myPrecision != src.myPrecision)
return false;
191 if (myUseIterativeSolver != src.myUseIterativeSolver)
return false;
192 if (myIterativeSolver != src.myIterativeSolver)
return false;
193 if (mySolveWithGuess != src.mySolveWithGuess)
return false;
194 if (myUseEigensolver != src.myUseEigensolver)
return false;
195 if (mySpectraEigensolver != src.mySpectraEigensolver)
return false;
196 if (myNumEigenpairs != src.myNumEigenpairs)
return false;
197 if (myShift != src.myShift)
return false;
198 if (mySolverTolerance != src.mySolverTolerance)
return false;
199 if (myMatrixStorage != src.myMatrixStorage)
return false;
200 if (myVolumeEncoding != src.myVolumeEncoding)
return false;
201 if (myPointsPrimsEncoding != src.myPointsPrimsEncoding)
return false;
202 if (myDetailEncoding != src.myDetailEncoding)
return false;
203 if (mySquareMatrix != src.mySquareMatrix)
return false;
204 if (myRows != src.myRows)
return false;
205 if (myCols != src.myCols)
return false;
206 if (myRowAttribute != src.myRowAttribute)
return false;
207 if (myColAttribute != src.myColAttribute)
return false;
208 if (myMatrixValueAttribute != src.myMatrixValueAttribute)
return false;
209 if (myVectorSrcStorage != src.myVectorSrcStorage)
return false;
210 if (myVectorSrcAttribute != src.myVectorSrcAttribute)
return false;
211 if (myVectorDstStorage != src.myVectorDstStorage)
return false;
212 if (myVectorDstAttribute != src.myVectorDstAttribute)
return false;
213 if (myPinnedGroup != src.myPinnedGroup)
return false;
214 if (myReduceRows != src.myReduceRows)
return false;
215 if (myScale != src.myScale)
return false;
216 if (myAccumulateResult != src.myAccumulateResult)
return false;
217 if (myDenseDirectSolver != src.myDenseDirectSolver)
return false;
218 if (mySparseDirectSolver != src.mySparseDirectSolver)
return false;
219 if (mySparseDirectSolverBackend != src.mySparseDirectSolverBackend)
return false;
220 if (myDensePreconditioner != src.myDensePreconditioner)
return false;
221 if (mySparsePreconditioner != src.mySparsePreconditioner)
return false;
251 graph->
evalOpParm(myMode, nodeidx,
"mode", time, 0);
252 myCookInplace =
false;
254 graph->
evalOpParm(myCookInplace, nodeidx,
"cookinplace", time, 0);
257 graph->
evalOpParm(myPrecision, nodeidx,
"precision", time, 0);
258 myUseIterativeSolver =
false;
259 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((
int64(getMode())==1)))) ) )
260 graph->
evalOpParm(myUseIterativeSolver, nodeidx,
"useiterativesolver", time, 0);
261 myIterativeSolver = 5;
262 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseIterativeSolver()==0))||((
int64(getMode())!=0)))) ) )
263 graph->
evalOpParm(myIterativeSolver, nodeidx,
"iterativesolver", time, 0);
264 mySolveWithGuess =
false;
265 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseIterativeSolver()==0))||((
int64(getMode())!=0)))) ) )
266 graph->
evalOpParm(mySolveWithGuess, nodeidx,
"solvewithguess", time, 0);
267 myUseEigensolver =
false;
268 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((
int64(getMode())!=1)))) ) )
269 graph->
evalOpParm(myUseEigensolver, nodeidx,
"useeigensolver", time, 0);
270 mySpectraEigensolver = 0;
271 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseEigensolver()==0))||((
int64(getMode())!=1)))) ) )
272 graph->
evalOpParm(mySpectraEigensolver, nodeidx,
"spectraeigensolver", time, 0);
274 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseEigensolver()==0))||((
int64(getMode())!=1)))) ) )
275 graph->
evalOpParm(myNumEigenpairs, nodeidx,
"numeigenpairs", time, 0);
277 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseEigensolver()==0))||((
int64(getSpectraEigensolver())!=2)&&(
int64(getSpectraEigensolver())!=3))||((
int64(getMode())!=1)))) ) )
278 graph->
evalOpParm(myShift, nodeidx,
"shift", time, 0);
279 mySolverTolerance = 1e-4;
280 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseIterativeSolver()==0)&&(getUseEigensolver()==0)))) ) )
281 graph->
evalOpParm(mySolverTolerance, nodeidx,
"solvertolerance", time, 0);
283 if (
true && ( (
true&&!(((
int64(getMode())==2)))) ) )
284 graph->
evalOpParm(myMatrixStorage, nodeidx,
"matrixstorage", time, 0);
285 myVolumeEncoding = 0;
286 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())!=0)))) ) )
287 graph->
evalOpParm(myVolumeEncoding, nodeidx,
"volumeencoding", time, 0);
288 myPointsPrimsEncoding = 0;
289 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())!=1)&&(
int64(getMatrixStorage())!=2)))) ) )
290 graph->
evalOpParm(myPointsPrimsEncoding, nodeidx,
"pointsprimsencoding", time, 0);
291 myDetailEncoding = 0;
292 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())!=3)))) ) )
293 graph->
evalOpParm(myDetailEncoding, nodeidx,
"detailencoding", time, 0);
294 mySquareMatrix =
false;
295 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==1)))) ) )
296 graph->
evalOpParm(mySquareMatrix, nodeidx,
"squarematrix", time, 0);
298 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())!=3)&&(
int64(getPointsPrimsEncoding())!=2))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())!=3)&&(
int64(getPointsPrimsEncoding())!=2))||((getSquareMatrix()==1)&&(
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())!=2))||((getSquareMatrix()==1)&&(
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())!=2))||((getSquareMatrix()==1)&&(
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())!=2)))) ) )
299 graph->
evalOpParm(myRows, nodeidx,
"rows", time, 0);
301 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())!=4)&&(
int64(getPointsPrimsEncoding())!=2))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())!=4)&&(
int64(getPointsPrimsEncoding())!=2))||((getSquareMatrix()==1)&&(
int64(getMatrixStorage())==1))||((getSquareMatrix()==1)&&(
int64(getMatrixStorage())==2))||((getSquareMatrix()==1)&&(
int64(getMatrixStorage())==3)))) ) )
302 graph->
evalOpParm(myCols, nodeidx,
"cols", time, 0);
303 myRowAttribute =
"row"_UTsh;
304 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==4))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==4))||((
int64(getMatrixStorage())==3))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==0)))) ) )
305 graph->
evalOpParm(myRowAttribute, nodeidx,
"rowattr", time, 0);
306 myColAttribute =
"col"_UTsh;
307 if (
true && ( (
true&&!(((
int64(getMode())==2))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==3))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==3))||((
int64(getMatrixStorage())==3))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==0)))) ) )
308 graph->
evalOpParm(myColAttribute, nodeidx,
"colattr", time, 0);
309 myMatrixValueAttribute =
"value"_UTsh;
310 if (
true && ( (
true&&!(((
int64(getMode())==2)))) ) )
311 graph->
evalOpParm(myMatrixValueAttribute, nodeidx,
"matrixvalueattr", time, 0);
312 myVectorSrcStorage = 0;
313 if (
true && ( (
true&&!(((
int64(getMode())==1)))) ) )
314 graph->
evalOpParm(myVectorSrcStorage, nodeidx,
"vectorsrcstorage", time, 0);
315 myVectorSrcAttribute =
"known"_UTsh;
316 if (
true && ( (
true&&!(((
int64(getMode())==1)))) ) )
317 graph->
evalOpParm(myVectorSrcAttribute, nodeidx,
"vectorsrcattr", time, 0);
318 myVectorDstStorage = 0;
320 graph->
evalOpParm(myVectorDstStorage, nodeidx,
"vectordststorage", time, 0);
321 myVectorDstAttribute =
"unknown"_UTsh;
322 if (
true && ( (
true&&!(((
int64(getMode())==1)))) ) )
323 graph->
evalOpParm(myVectorDstAttribute, nodeidx,
"vectordstattr", time, 0);
324 myPinnedGroup =
""_UTsh;
325 if (
true && ( (
true&&!(((
int64(getVectorDstStorage())==2))||((
int64(getMode())==3)))) ) )
326 graph->
evalOpParm(myPinnedGroup, nodeidx,
"pinnedgroup", time, 0);
328 if (
true && ( (
true&&!(((
int64(getVectorDstStorage())==2))||((
int64(getMode())==3))||((getPinnedGroup()==
"")))) ) )
329 graph->
evalOpParm(myReduceRows, nodeidx,
"reducerows", time, 0);
331 if (
true && ( (
true&&!(((
int64(getMode())==1)))) ) )
332 graph->
evalOpParm(myScale, nodeidx,
"scale", time, 0);
333 myAccumulateResult =
false;
334 if (
true && ( (
true&&!(((
int64(getMode())==1)))) ) )
335 graph->
evalOpParm(myAccumulateResult, nodeidx,
"accumulateresult", time, 0);
336 myDenseDirectSolver = 0;
337 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((
int64(getMode())==0)&&(getUseIterativeSolver()==1))||((
int64(getMode())==1)&&(getUseEigensolver()==1))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())!=0)&&(
int64(getDetailEncoding())!=1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())!=0)&&(
int64(getPointsPrimsEncoding())!=1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())!=0)&&(
int64(getPointsPrimsEncoding())!=1)))) ) )
338 graph->
evalOpParm(myDenseDirectSolver, nodeidx,
"densedirectsolver", time, 0);
339 mySparseDirectSolver = 1;
340 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseIterativeSolver()==1))||((getUseEigensolver()==1))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())==0))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==0)))) ) )
341 graph->
evalOpParm(mySparseDirectSolver, nodeidx,
"sparsedirectsolver", time, 0);
342 mySparseDirectSolverBackend = 0;
343 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((
int64(getMode())==0)&&(getUseIterativeSolver()==1))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())==0))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMode())==1)))) ) )
344 graph->
evalOpParm(mySparseDirectSolverBackend, nodeidx,
"sparsedirectsolverbackend", time, 0);
345 myDensePreconditioner = 1;
346 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseIterativeSolver()==0))||((
int64(getMode())!=0))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())!=0)&&(
int64(getDetailEncoding())!=1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())!=0)&&(
int64(getPointsPrimsEncoding())!=1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())!=0)&&(
int64(getPointsPrimsEncoding())!=1)))) ) )
347 graph->
evalOpParm(myDensePreconditioner, nodeidx,
"densepreconditioner", time, 0);
348 mySparsePreconditioner = 1;
349 if (
true && ( (
true&&!(((
int64(getMode())==3))||((
int64(getMode())==2))||((getUseIterativeSolver()==0))||((
int64(getMode())!=0))||((
int64(getMatrixStorage())==0))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())==0))||((
int64(getMatrixStorage())==3)&&(
int64(getDetailEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==1))||((
int64(getMatrixStorage())==1)&&(
int64(getPointsPrimsEncoding())==0))||((
int64(getMatrixStorage())==2)&&(
int64(getPointsPrimsEncoding())==0)))) ) )
350 graph->
evalOpParm(mySparsePreconditioner, nodeidx,
"sparsepreconditioner", time, 0);
366 template <
typename T>
373 if (idx.
size() != instance.
size()+1)
493 { doGetParmValue(idx, instance, value); }
495 { doGetParmValue(idx, instance, value); }
497 { doGetParmValue(idx, instance, value); }
499 { doGetParmValue(idx, instance, value); }
501 { doGetParmValue(idx, instance, value); }
503 { doGetParmValue(idx, instance, value); }
505 { doGetParmValue(idx, instance, value); }
507 { doGetParmValue(idx, instance, value); }
509 { doGetParmValue(idx, instance, value); }
511 { doGetParmValue(idx, instance, value); }
513 { doGetParmValue(idx, instance, value); }
515 template <
typename T>
522 if (idx.
size() != instance.
size()+1)
587 coerceValue(myMatrixValueAttribute, ( ( value ) ));
633 { doSetParmValue(idx, instance, value); }
635 { doSetParmValue(idx, instance, value); }
637 { doSetParmValue(idx, instance, value); }
639 { doSetParmValue(idx, instance, value); }
641 { doSetParmValue(idx, instance, value); }
643 { doSetParmValue(idx, instance, value); }
645 { doSetParmValue(idx, instance, value); }
647 { doSetParmValue(idx, instance, value); }
649 { doSetParmValue(idx, instance, value); }
651 { doSetParmValue(idx, instance, value); }
653 { doSetParmValue(idx, instance, value); }
669 if (fieldnum.
size() < 1)
676 return "cookinplace";
680 return "useiterativesolver";
682 return "iterativesolver";
684 return "solvewithguess";
686 return "useeigensolver";
688 return "spectraeigensolver";
690 return "numeigenpairs";
694 return "solvertolerance";
696 return "matrixstorage";
698 return "volumeencoding";
700 return "pointsprimsencoding";
702 return "detailencoding";
704 return "squarematrix";
714 return "matrixvalueattr";
716 return "vectorsrcstorage";
718 return "vectorsrcattr";
720 return "vectordststorage";
722 return "vectordstattr";
724 return "pinnedgroup";
730 return "accumulateresult";
732 return "densedirectsolver";
734 return "sparsedirectsolver";
736 return "sparsedirectsolverbackend";
738 return "densepreconditioner";
740 return "sparsepreconditioner";
748 if (fieldnum.
size() < 1)
749 return PARM_UNSUPPORTED;
841 {
for (
int r = 0;
r < 2;
r++)
for (
int c = 0; c < 2; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
843 {
for (
int r = 0;
r < 3;
r++)
for (
int c = 0; c < 3; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
845 {
for (
int r = 0;
r < 4;
r++)
for (
int c = 0; c < 4; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
858 loadData(is, rampdata);
876 int typelen = colon - data.
buffer();
890 {
int64 iv =
v; UTwrite(os, &iv); }
892 { UTwrite<fpreal64>(os, &
v); }
894 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
896 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
897 UTwrite<fpreal64>(os, &v.
z()); }
899 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
900 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
912 if (s) s->save(ostr);
914 saveData(os, result);
921 ostr << s->getDataTypeToken();
926 saveData(os, result);
930 void save(std::ostream &os)
const
934 saveData(os, myMode);
935 saveData(os, myCookInplace);
936 saveData(os, myPrecision);
937 saveData(os, myUseIterativeSolver);
938 saveData(os, myIterativeSolver);
939 saveData(os, mySolveWithGuess);
940 saveData(os, myUseEigensolver);
941 saveData(os, mySpectraEigensolver);
942 saveData(os, myNumEigenpairs);
943 saveData(os, myShift);
944 saveData(os, mySolverTolerance);
945 saveData(os, myMatrixStorage);
946 saveData(os, myVolumeEncoding);
947 saveData(os, myPointsPrimsEncoding);
948 saveData(os, myDetailEncoding);
949 saveData(os, mySquareMatrix);
950 saveData(os, myRows);
951 saveData(os, myCols);
952 saveData(os, myRowAttribute);
953 saveData(os, myColAttribute);
954 saveData(os, myMatrixValueAttribute);
955 saveData(os, myVectorSrcStorage);
956 saveData(os, myVectorSrcAttribute);
957 saveData(os, myVectorDstStorage);
958 saveData(os, myVectorDstAttribute);
959 saveData(os, myPinnedGroup);
960 saveData(os, myReduceRows);
961 saveData(os, myScale);
962 saveData(os, myAccumulateResult);
963 saveData(os, myDenseDirectSolver);
964 saveData(os, mySparseDirectSolver);
965 saveData(os, mySparseDirectSolverBackend);
966 saveData(os, myDensePreconditioner);
967 saveData(os, mySparsePreconditioner);
980 loadData(is, myMode);
981 loadData(is, myCookInplace);
982 loadData(is, myPrecision);
983 loadData(is, myUseIterativeSolver);
984 loadData(is, myIterativeSolver);
985 loadData(is, mySolveWithGuess);
986 loadData(is, myUseEigensolver);
987 loadData(is, mySpectraEigensolver);
988 loadData(is, myNumEigenpairs);
989 loadData(is, myShift);
990 loadData(is, mySolverTolerance);
991 loadData(is, myMatrixStorage);
992 loadData(is, myVolumeEncoding);
993 loadData(is, myPointsPrimsEncoding);
994 loadData(is, myDetailEncoding);
995 loadData(is, mySquareMatrix);
996 loadData(is, myRows);
997 loadData(is, myCols);
998 loadData(is, myRowAttribute);
999 loadData(is, myColAttribute);
1000 loadData(is, myMatrixValueAttribute);
1001 loadData(is, myVectorSrcStorage);
1002 loadData(is, myVectorSrcAttribute);
1003 loadData(is, myVectorDstStorage);
1004 loadData(is, myVectorDstAttribute);
1005 loadData(is, myPinnedGroup);
1006 loadData(is, myReduceRows);
1007 loadData(is, myScale);
1008 loadData(is, myAccumulateResult);
1009 loadData(is, myDenseDirectSolver);
1010 loadData(is, mySparseDirectSolver);
1011 loadData(is, mySparseDirectSolverBackend);
1012 loadData(is, myDensePreconditioner);
1013 loadData(is, mySparsePreconditioner);
1023 if (!thissop)
return getMode();
1025 OP_Utils::evalOpParm(result, thissop,
"mode", cookparms.
getCookTime(), 0);
1026 return Mode(result);
1033 if (!thissop)
return getCookInplace();
1035 OP_Utils::evalOpParm(result, thissop,
"cookinplace", cookparms.
getCookTime(), 0);
1043 if (!thissop)
return getPrecision();
1045 OP_Utils::evalOpParm(result, thissop,
"precision", cookparms.
getCookTime(), 0);
1053 if (!thissop)
return getUseIterativeSolver();
1055 OP_Utils::evalOpParm(result, thissop,
"useiterativesolver", cookparms.
getCookTime(), 0);
1063 if (!thissop)
return getIterativeSolver();
1065 OP_Utils::evalOpParm(result, thissop,
"iterativesolver", cookparms.
getCookTime(), 0);
1073 if (!thissop)
return getSolveWithGuess();
1075 OP_Utils::evalOpParm(result, thissop,
"solvewithguess", cookparms.
getCookTime(), 0);
1083 if (!thissop)
return getUseEigensolver();
1085 OP_Utils::evalOpParm(result, thissop,
"useeigensolver", cookparms.
getCookTime(), 0);
1093 if (!thissop)
return getSpectraEigensolver();
1095 OP_Utils::evalOpParm(result, thissop,
"spectraeigensolver", cookparms.
getCookTime(), 0);
1103 if (!thissop)
return getNumEigenpairs();
1105 OP_Utils::evalOpParm(result, thissop,
"numeigenpairs", cookparms.
getCookTime(), 0);
1113 if (!thissop)
return getShift();
1115 OP_Utils::evalOpParm(result, thissop,
"shift", cookparms.
getCookTime(), 0);
1123 if (!thissop)
return getSolverTolerance();
1125 OP_Utils::evalOpParm(result, thissop,
"solvertolerance", cookparms.
getCookTime(), 0);
1133 if (!thissop)
return getMatrixStorage();
1135 OP_Utils::evalOpParm(result, thissop,
"matrixstorage", cookparms.
getCookTime(), 0);
1143 if (!thissop)
return getVolumeEncoding();
1145 OP_Utils::evalOpParm(result, thissop,
"volumeencoding", cookparms.
getCookTime(), 0);
1153 if (!thissop)
return getPointsPrimsEncoding();
1155 OP_Utils::evalOpParm(result, thissop,
"pointsprimsencoding", cookparms.
getCookTime(), 0);
1163 if (!thissop)
return getDetailEncoding();
1165 OP_Utils::evalOpParm(result, thissop,
"detailencoding", cookparms.
getCookTime(), 0);
1173 if (!thissop)
return getSquareMatrix();
1175 OP_Utils::evalOpParm(result, thissop,
"squarematrix", cookparms.
getCookTime(), 0);
1183 if (!thissop)
return getRows();
1185 OP_Utils::evalOpParm(result, thissop,
"rows", cookparms.
getCookTime(), 0);
1193 if (!thissop)
return getCols();
1195 OP_Utils::evalOpParm(result, thissop,
"cols", cookparms.
getCookTime(), 0);
1203 if (!thissop)
return getRowAttribute();
1205 OP_Utils::evalOpParm(result, thissop,
"rowattr", cookparms.
getCookTime(), 0);
1213 if (!thissop)
return getColAttribute();
1215 OP_Utils::evalOpParm(result, thissop,
"colattr", cookparms.
getCookTime(), 0);
1223 if (!thissop)
return getMatrixValueAttribute();
1225 OP_Utils::evalOpParm(result, thissop,
"matrixvalueattr", cookparms.
getCookTime(), 0);
1233 if (!thissop)
return getVectorSrcStorage();
1235 OP_Utils::evalOpParm(result, thissop,
"vectorsrcstorage", cookparms.
getCookTime(), 0);
1243 if (!thissop)
return getVectorSrcAttribute();
1245 OP_Utils::evalOpParm(result, thissop,
"vectorsrcattr", cookparms.
getCookTime(), 0);
1253 if (!thissop)
return getVectorDstStorage();
1255 OP_Utils::evalOpParm(result, thissop,
"vectordststorage", cookparms.
getCookTime(), 0);
1263 if (!thissop)
return getVectorDstAttribute();
1265 OP_Utils::evalOpParm(result, thissop,
"vectordstattr", cookparms.
getCookTime(), 0);
1273 if (!thissop)
return getPinnedGroup();
1275 OP_Utils::evalOpParm(result, thissop,
"pinnedgroup", cookparms.
getCookTime(), 0);
1283 if (!thissop)
return getReduceRows();
1285 OP_Utils::evalOpParm(result, thissop,
"reducerows", cookparms.
getCookTime(), 0);
1295 OP_Utils::evalOpParm(result, thissop,
"scale", cookparms.
getCookTime(), 0);
1303 if (!thissop)
return getAccumulateResult();
1305 OP_Utils::evalOpParm(result, thissop,
"accumulateresult", cookparms.
getCookTime(), 0);
1313 if (!thissop)
return getDenseDirectSolver();
1315 OP_Utils::evalOpParm(result, thissop,
"densedirectsolver", cookparms.
getCookTime(), 0);
1323 if (!thissop)
return getSparseDirectSolver();
1325 OP_Utils::evalOpParm(result, thissop,
"sparsedirectsolver", cookparms.
getCookTime(), 0);
1333 if (!thissop)
return getSparseDirectSolverBackend();
1335 OP_Utils::evalOpParm(result, thissop,
"sparsedirectsolverbackend", cookparms.
getCookTime(), 0);
1343 if (!thissop)
return getDensePreconditioner();
1345 OP_Utils::evalOpParm(result, thissop,
"densepreconditioner", cookparms.
getCookTime(), 0);
1353 if (!thissop)
return getSparsePreconditioner();
1355 OP_Utils::evalOpParm(result, thissop,
"sparsepreconditioner", cookparms.
getCookTime(), 0);
1363 bool myUseIterativeSolver;
1364 int64 myIterativeSolver;
1365 bool mySolveWithGuess;
1366 bool myUseEigensolver;
1367 int64 mySpectraEigensolver;
1368 int64 myNumEigenpairs;
1371 int64 myMatrixStorage;
1372 int64 myVolumeEncoding;
1373 int64 myPointsPrimsEncoding;
1374 int64 myDetailEncoding;
1375 bool mySquareMatrix;
1381 int64 myVectorSrcStorage;
1383 int64 myVectorDstStorage;
1388 bool myAccumulateResult;
1389 int64 myDenseDirectSolver;
1390 int64 mySparseDirectSolver;
1391 int64 mySparseDirectSolverBackend;
1392 int64 myDensePreconditioner;
1393 int64 mySparsePreconditioner;
Precision opPrecision(const SOP_NodeVerb::CookParms &cookparms) const
void setPointsPrimsEncoding(PointsPrimsEncoding val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
UT_StringHolder opMatrixValueAttribute(const SOP_NodeVerb::CookParms &cookparms) const
SparseDirectSolverBackend opSparseDirectSolverBackend(const SOP_NodeVerb::CookParms &cookparms) const
VectorDstStorage getVectorDstStorage() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
static void loadData(UT_IStream &is, int64 &v)
SOP_Node * getNode() const
const char * getNestParmName(TempIndex fieldnum) const override
int64 getNumEigenpairs() const
static void saveData(std::ostream &os, UT_Vector3D v)
void setDensePreconditioner(DensePreconditioner val)
SpectraEigensolver getSpectraEigensolver() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setIterativeSolver(IterativeSolver val)
fpreal64 getShift() const
T clampMaxValue(fpreal maxvalue, const T &src) const
fpreal64 getSolverTolerance() const
bool opCookInplace(const SOP_NodeVerb::CookParms &cookparms) const
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
SparseDirectSolver opSparseDirectSolver(const SOP_NodeVerb::CookParms &cookparms) const
int64 opNumEigenpairs(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setNumEigenpairs(int64 val)
const OP_Context & context() const
void setPrecision(Precision val)
DensePreconditioner opDensePreconditioner(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
void setShift(fpreal64 val)
bool getUseEigensolver() const
SYS_FORCE_INLINE const char * buffer() const
static void saveData(std::ostream &os, bool v)
DensePreconditioner getDensePreconditioner() const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void saveData(std::ostream &os, fpreal64 v)
void setVectorSrcStorage(VectorSrcStorage val)
VolumeEncoding getVolumeEncoding() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
An output stream object that owns its own string buffer storage.
DenseDirectSolver getDenseDirectSolver() const
static void saveData(std::ostream &os, int64 v)
**But if you need a result
void setSolverTolerance(fpreal64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
const UT_StringHolder & getMatrixValueAttribute() const
T clampMinValue(fpreal minvalue, const T &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
SpectraEigensolver opSpectraEigensolver(const SOP_NodeVerb::CookParms &cookparms) const
void setSpectraEigensolver(SpectraEigensolver val)
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void setDenseDirectSolver(DenseDirectSolver val)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
fpreal64 getScale() const
IterativeSolver getIterativeSolver() const
constexpr SYS_FORCE_INLINE T & x() noexcept
bool getUseIterativeSolver() const
void setReduceRows(bool val)
IterativeSolver opIterativeSolver(const SOP_NodeVerb::CookParms &cookparms) const
SparseDirectSolver getSparseDirectSolver() const
void setPinnedGroup(const UT_StringHolder &val)
VectorDstStorage opVectorDstStorage(const SOP_NodeVerb::CookParms &cookparms) const
void setSquareMatrix(bool val)
constexpr SYS_FORCE_INLINE T & x() noexcept
bool isParmColorRamp(exint idx) const override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
DenseDirectSolver opDenseDirectSolver(const SOP_NodeVerb::CookParms &cookparms) const
int64 opCols(const SOP_NodeVerb::CookParms &cookparms) const
void setCookInplace(bool val)
void loadFromOpSubclass(const LoadParms &loadparms) override
void setUseIterativeSolver(bool val)
static void loadData(UT_IStream &is, UT_Vector4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void loadData(UT_IStream &is, UT_Vector3D &v)
fpreal64 opSolverTolerance(const SOP_NodeVerb::CookParms &cookparms) const
bool opSolveWithGuess(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPinnedGroup() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
static void saveData(std::ostream &os, UT_Vector4D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
const OP_GraphProxy * graph() const
UT_StringHolder opVectorDstAttribute(const SOP_NodeVerb::CookParms &cookparms) const
SparsePreconditioner opSparsePreconditioner(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
DetailEncoding opDetailEncoding(const SOP_NodeVerb::CookParms &cookparms) const
PointsPrimsEncoding opPointsPrimsEncoding(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
exint getNestNumParms(TempIndex idx) const override
MatrixStorage opMatrixStorage(const SOP_NodeVerb::CookParms &cookparms) const
void setVectorSrcAttribute(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
UT_StringHolder opVectorSrcAttribute(const SOP_NodeVerb::CookParms &cookparms) const
VectorSrcStorage getVectorSrcStorage() const
static void loadData(UT_IStream &is, UT_StringHolder &v)
Precision getPrecision() const
const UT_StringHolder & getVectorDstAttribute() const
const UT_StringHolder & getColAttribute() const
bool getAccumulateResult() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setUseEigensolver(bool val)
void setScale(fpreal64 val)
SparseDirectSolverBackend getSparseDirectSolverBackend() const
const UT_StringHolder & getRowAttribute() const
bool opReduceRows(const SOP_NodeVerb::CookParms &cookparms) const
void setVectorDstStorage(VectorDstStorage val)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool getSquareMatrix() const
static void saveData(std::ostream &os, UT_Vector2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void saveData(std::ostream &os, UT_Matrix2D v)
VectorSrcStorage opVectorSrcStorage(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void saveBinary(std::ostream &os) const
Save string to binary stream.
PointsPrimsEncoding getPointsPrimsEncoding() const
void setRowAttribute(const UT_StringHolder &val)
GT_API const UT_StringHolder version
bool load(UT_IStream &is)
void setVolumeEncoding(VolumeEncoding val)
static void loadData(UT_IStream &is, bool &v)
bool operator!=(const SOP_LinearSolverParms &src) const
bool operator==(const SOP_LinearSolverParms &src) const
bool getSolveWithGuess() const
bool opUseIterativeSolver(const SOP_NodeVerb::CookParms &cookparms) const
bool opAccumulateResult(const SOP_NodeVerb::CookParms &cookparms) const
void setDetailEncoding(DetailEncoding val)
void coerceValue(T &result, const S &src) const
UT_StringHolder opPinnedGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setSparseDirectSolver(SparseDirectSolver val)
DEP_MicroNode * depnode() const
bool getCookInplace() const
void setSparsePreconditioner(SparsePreconditioner val)
Utility class for containing a color ramp.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
void setVectorDstAttribute(const UT_StringHolder &val)
bool getReduceRows() const
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
static void saveData(std::ostream &os, UT_StringHolder s)
fpreal64 opShift(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
DetailEncoding getDetailEncoding() const
fpreal getCookTime() const
bool opUseEigensolver(const SOP_NodeVerb::CookParms &cookparms) const
MatrixStorage getMatrixStorage() const
static void saveData(std::ostream &os, UT_Matrix3D v)
const char * findChar(int c) const
const UT_StringHolder & getVectorSrcAttribute() const
void setColAttribute(const UT_StringHolder &val)
bool opSquareMatrix(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
UT_StringHolder opColAttribute(const SOP_NodeVerb::CookParms &cookparms) const
void setAccumulateResult(bool val)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
UT_StringHolder opRowAttribute(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setSolveWithGuess(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
void copyFrom(const OP_NodeParms *src) override
void setMatrixValueAttribute(const UT_StringHolder &val)
int64 opRows(const SOP_NodeVerb::CookParms &cookparms) const
SparsePreconditioner getSparsePreconditioner() const
ParmType getNestParmType(TempIndex fieldnum) const override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
SparseDirectSolverBackend
Mode opMode(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
void setSparseDirectSolverBackend(SparseDirectSolverBackend val)
constexpr SYS_FORCE_INLINE T & y() noexcept
SYS_FORCE_INLINE bool isstring() const
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
VolumeEncoding opVolumeEncoding(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setMatrixStorage(MatrixStorage val)