Lines Matching refs:PetscCall

32   PetscCall(PetscInitialize(&argc, &args, NULL, help));  in main()
36 PetscCall(PetscOptionsGetBool(NULL, NULL, "-symmetric", &symmetric, NULL)); in main()
37 PetscCall(PetscOptionsGetInt(NULL, NULL, "-m", &m, NULL)); in main()
38 PetscCall(PetscOptionsGetInt(NULL, NULL, "-n", &n, NULL)); in main()
39 PetscCall(PetscOptionsGetBool(NULL, NULL, "-negmap", &negmap, NULL)); in main()
40 PetscCall(PetscOptionsGetBool(NULL, NULL, "-repmap", &repmap, NULL)); in main()
41 PetscCall(PetscOptionsGetBool(NULL, NULL, "-permmap", &permute, NULL)); in main()
42 PetscCall(PetscOptionsGetBool(NULL, NULL, "-diffmap", &diffmap, NULL)); in main()
43 PetscCall(PetscOptionsGetBool(NULL, NULL, "-allow_repeated", &allow_repeated, NULL)); in main()
44 PetscCall(PetscOptionsGetBool(NULL, NULL, "-test_matlab", &test_matlab, NULL)); in main()
45 PetscCall(PetscOptionsGetBool(NULL, NULL, "-test_setvalues", &test_setvalues, NULL)); in main()
46 PetscCall(PetscOptionsGetInt(NULL, NULL, "-rbs", &rbs, NULL)); in main()
47 PetscCall(PetscOptionsGetInt(NULL, NULL, "-cbs", &cbs, NULL)); in main()
53 PetscCall(MatCreate(PETSC_COMM_WORLD, &A)); in main()
54 PetscCall(MatSetSizes(A, PETSC_DECIDE, PETSC_DECIDE, m, n)); in main()
55 PetscCall(MatSetType(A, MATIS)); in main()
56 PetscCall(MatSetFromOptions(A)); in main()
61 PetscCall(ISCreateStride(PETSC_COMM_WORLD, n, 0, 1, &is)); in main()
63 PetscCall(ISCreateStride(PETSC_COMM_WORLD, n + 2, -2, 1, &is)); in main()
67 PetscCall(ISCreateStride(PETSC_COMM_WORLD, n, 0, 1, &isl[0])); in main()
68 PetscCall(ISCreateStride(PETSC_COMM_WORLD, n, n - 1, -1, &isl[1])); in main()
69 PetscCall(ISConcatenate(PETSC_COMM_WORLD, 2, isl, &is)); in main()
70 PetscCall(ISDestroy(&isl[0])); in main()
71 PetscCall(ISDestroy(&isl[1])); in main()
75 PetscCall(ISCreateStride(PETSC_COMM_WORLD, n + 1, -1, 1, &isl[0])); in main()
76 PetscCall(ISCreateStride(PETSC_COMM_WORLD, n + 1, n - 1, -1, &isl[1])); in main()
77 PetscCall(ISConcatenate(PETSC_COMM_WORLD, 2, isl, &is)); in main()
78 PetscCall(ISDestroy(&isl[0])); in main()
79 PetscCall(ISDestroy(&isl[1])); in main()
81 PetscCall(ISLocalToGlobalMappingCreateIS(is, &cmap)); in main()
82 PetscCall(ISDestroy(&is)); in main()
85 PetscCall(ISCreateStride(PETSC_COMM_WORLD, m, permute ? m - 1 : 0, permute ? -1 : 1, &is)); in main()
86 PetscCall(ISLocalToGlobalMappingCreateIS(is, &rmap)); in main()
87 PetscCall(ISDestroy(&is)); in main()
89 PetscCall(PetscObjectReference((PetscObject)cmap)); in main()
93 PetscCall(MatISSetAllowRepeated(A, allow_repeated)); in main()
94 PetscCall(MatSetLocalToGlobalMapping(A, rmap, cmap)); in main()
95 PetscCall(MatSetBlockSizes(A, rbs, cbs)); in main()
96 PetscCall(MatISStoreL2L(A, PETSC_FALSE)); in main()
97 PetscCall(MatISSetPreallocation(A, 3, NULL, 3, NULL)); in main()
98PetscCall(MatSetOption(A, MAT_NEW_NONZERO_ALLOCATION_ERR, (PetscBool)!(repmap || negmap))); /* I d… in main()
99 PetscCall(ISLocalToGlobalMappingGetSize(rmap, &lm)); in main()
100 PetscCall(ISLocalToGlobalMappingGetSize(cmap, &ln)); in main()
111 PetscCall(ISGlobalToLocalMappingApply(cmap, IS_GTOLM_MASK, 3, cols, NULL, cols)); in main()
112 PetscCall(MatSetValuesLocal(A, 1, &i, 3, cols, v, ADD_VALUES)); in main()
114 PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY)); in main()
115 PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY)); in main()
118 PetscCall(MatHasCongruentLayouts(A, &squaretest)); in main()
122 PetscCall(ISLocalToGlobalMappingGetSize(rmap, &nr)); in main()
123 PetscCall(ISLocalToGlobalMappingGetSize(cmap, &nc)); in main()
126 PetscCall(ISLocalToGlobalMappingGetIndices(rmap, &idxs1)); in main()
127 PetscCall(ISLocalToGlobalMappingGetIndices(cmap, &idxs2)); in main()
128 PetscCall(PetscArraycmp(idxs1, idxs2, nr, &squaretest)); in main()
129 PetscCall(ISLocalToGlobalMappingRestoreIndices(rmap, &idxs1)); in main()
130 PetscCall(ISLocalToGlobalMappingRestoreIndices(cmap, &idxs2)); in main()
137 PetscCall(MatISGetLocalMat(A, &B)); in main()
138 PetscCall(MatGetType(B, &lmtype)); in main()
141 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatGetInfo\n")); in main()
142 PetscCall(MatGetInfo(A, MAT_LOCAL, &info)); in main()
143 PetscCall(PetscViewerASCIIPushSynchronized(PETSC_VIEWER_STDOUT_WORLD)); in main()
144PetscCall(PetscViewerASCIISynchronizedPrintf(PETSC_VIEWER_STDOUT_WORLD, "Process %2d: %" PetscInt… in main()
146 PetscCall(PetscViewerFlush(PETSC_VIEWER_STDOUT_WORLD)); in main()
147 PetscCall(MatGetInfo(A, MAT_GLOBAL_MAX, &info)); in main()
148PetscCall(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "GlobalMax : %" PetscInt_FMT " %" Pet… in main()
150 PetscCall(MatGetInfo(A, MAT_GLOBAL_SUM, &info)); in main()
151PetscCall(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "GlobalSum : %" PetscInt_FMT " %" Pet… in main()
155 PetscCall(MatIsSymmetric(A, 0.0, &issymmetric)); in main()
156 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatIsSymmetric: %d\n", issymmetric)); in main()
159 PetscCall(MatCreate(PETSC_COMM_WORLD, &B)); in main()
160 PetscCall(MatSetSizes(B, PETSC_DECIDE, PETSC_DECIDE, m, n)); in main()
161 PetscCall(MatSetBlockSizes(B, rbs, cbs)); in main()
162 PetscCall(MatSetType(B, MATAIJ)); in main()
163 PetscCall(MatSetFromOptions(B)); in main()
164 PetscCall(MatSetLocalToGlobalMapping(B, rmap, cmap)); in main()
165 PetscCall(MatMPIAIJSetPreallocation(B, 3, NULL, 3, NULL)); in main()
166 PetscCall(MatMPIBAIJSetPreallocation(B, 1, 3, NULL, 3, NULL)); in main()
168 PetscCall(MatHYPRESetPreallocation(B, 3, NULL, 3, NULL)); in main()
170 PetscCall(MatISSetPreallocation(B, 3, NULL, 3, NULL)); in main()
171PetscCall(MatSetOption(B, MAT_NEW_NONZERO_ALLOCATION_ERR, (PetscBool)!(repmap || negmap))); /* I d… in main()
182 PetscCall(ISGlobalToLocalMappingApply(cmap, IS_GTOLM_MASK, 3, cols, NULL, cols)); in main()
183 PetscCall(MatSetValuesLocal(B, 1, &i, 3, cols, v, ADD_VALUES)); in main()
185 PetscCall(MatAssemblyBegin(B, MAT_FINAL_ASSEMBLY)); in main()
186 PetscCall(MatAssemblyEnd(B, MAT_FINAL_ASSEMBLY)); in main()
189 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatView\n")); in main()
190 PetscCall(MatView(A, NULL)); in main()
191 PetscCall(MatView(B, NULL)); in main()
195 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatView ASCII MATLAB\n")); in main()
196 PetscCall(PetscViewerPushFormat(PETSC_VIEWER_STDOUT_WORLD, PETSC_VIEWER_ASCII_MATLAB)); in main()
197 PetscCall(MatView(A, PETSC_VIEWER_STDOUT_WORLD)); in main()
198 PetscCall(PetscViewerPopFormat(PETSC_VIEWER_STDOUT_WORLD)); in main()
202 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test CheckMat\n")); in main()
203 PetscCall(CheckMat(A, B, PETSC_FALSE, "CheckMat")); in main()
215 PetscCall(PetscSNPrintf(name, PETSC_STATIC_ARRAY_LENGTH(name), "world_is")); in main()
216 PetscCall(PetscViewerBinaryOpen(PETSC_COMM_WORLD, name, FILE_MODE_WRITE, &wview)); in main()
217 PetscCall(PetscSNPrintf(name, PETSC_STATIC_ARRAY_LENGTH(name), "seq_is_%d", rank)); in main()
218 PetscCall(PetscViewerBinaryOpen(PETSC_COMM_SELF, name, FILE_MODE_WRITE, &sview)); in main()
219 PetscCall(PetscSNPrintf(name, PETSC_STATIC_ARRAY_LENGTH(name), "color_is_%d", color)); in main()
220 PetscCall(PetscViewerBinaryOpen(comm, name, FILE_MODE_WRITE, &cview)); in main()
221 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatView on binary world\n")); in main()
222 PetscCall(MatView(A, wview)); in main()
223 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatView on binary self\n")); in main()
224 PetscCall(MatView(A, sview)); in main()
225 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatView on binary subcomm\n")); in main()
226 PetscCall(MatView(A, cview)); in main()
227 PetscCall(PetscViewerDestroy(&wview)); in main()
228 PetscCall(PetscViewerDestroy(&cview)); in main()
229 PetscCall(PetscViewerDestroy(&sview)); in main()
232 PetscCall(MatCreate(PETSC_COMM_WORLD, &A2)); in main()
233 PetscCall(MatSetType(A2, MATIS)); in main()
234 PetscCall(PetscViewerPushFormat(PETSC_VIEWER_STDOUT_WORLD, PETSC_VIEWER_ASCII_INFO_DETAIL)); in main()
237 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatLoad from world\n")); in main()
238 PetscCall(PetscViewerBinaryOpen(PETSC_COMM_WORLD, "world_is", FILE_MODE_READ, &view)); in main()
239 PetscCall(MatLoad(A2, view)); in main()
240 PetscCall(CheckMat(A, A2, PETSC_TRUE, "Load")); in main()
241 PetscCall(MatView(A2, PETSC_VIEWER_STDOUT_WORLD)); in main()
242 PetscCall(PetscViewerDestroy(&view)); in main()
245 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatLoad from self\n")); in main()
246 PetscCall(PetscViewerBinaryOpen(PETSC_COMM_WORLD, "seq_is_0", FILE_MODE_READ, &view)); in main()
247 PetscCall(MatLoad(A2, view)); in main()
248 PetscCall(MatView(A2, PETSC_VIEWER_STDOUT_WORLD)); in main()
249 PetscCall(PetscViewerDestroy(&view)); in main()
252 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatLoad from subcomm\n")); in main()
253 PetscCall(PetscViewerBinaryOpen(PETSC_COMM_WORLD, "color_is_0", FILE_MODE_READ, &view)); in main()
254 PetscCall(MatLoad(A2, view)); in main()
255 PetscCall(MatView(A2, PETSC_VIEWER_STDOUT_WORLD)); in main()
256 PetscCall(PetscViewerDestroy(&view)); in main()
258 PetscCall(PetscViewerPopFormat(PETSC_VIEWER_STDOUT_WORLD)); in main()
259 PetscCall(MatDestroy(&A2)); in main()
263 PetscCall(PetscPrintf(comm, "Test subcomm MatLoad from world\n")); in main()
264 PetscCall(MatCreate(comm, &A2)); in main()
265 PetscCall(MatSetType(A2, MATIS)); in main()
266 PetscCall(PetscViewerPushFormat(PETSC_VIEWER_STDOUT_(comm), PETSC_VIEWER_ASCII_INFO_DETAIL)); in main()
267 PetscCall(PetscViewerBinaryOpen(comm, "world_is", FILE_MODE_READ, &view)); in main()
268 PetscCall(MatLoad(A2, view)); in main()
269 PetscCall(MatView(A2, PETSC_VIEWER_STDOUT_(comm))); in main()
270 PetscCall(PetscViewerDestroy(&view)); in main()
271 PetscCall(PetscViewerPopFormat(PETSC_VIEWER_STDOUT_(comm))); in main()
272 PetscCall(MatDestroy(&A2)); in main()
279 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatDuplicate and MatAXPY\n")); in main()
280 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
281 PetscCall(CheckMat(A, A2, PETSC_FALSE, "MatDuplicate and MatAXPY")); in main()
284 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatConvert_IS_XAIJ\n")); in main()
285 PetscCall(MatConvert(A2, MATAIJ, MAT_INITIAL_MATRIX, &B2)); in main()
286 PetscCall(CheckMat(B, B2, PETSC_TRUE, "MatConvert_IS_XAIJ MAT_INITIAL_MATRIX")); in main()
287 PetscCall(MatConvert(A2, MATAIJ, MAT_REUSE_MATRIX, &B2)); in main()
288 PetscCall(CheckMat(B, B2, PETSC_TRUE, "MatConvert_IS_XAIJ MAT_REUSE_MATRIX")); in main()
289 PetscCall(MatConvert(A2, MATAIJ, MAT_INPLACE_MATRIX, &A2)); in main()
290 PetscCall(CheckMat(B, A2, PETSC_TRUE, "MatConvert_IS_XAIJ MAT_INPLACE_MATRIX")); in main()
291 PetscCall(MatDestroy(&A2)); in main()
292 PetscCall(MatDestroy(&B2)); in main()
293 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatConvert_XAIJ_IS\n")); in main()
294 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
295 PetscCall(MatConvert(B2, MATIS, MAT_INITIAL_MATRIX, &A2)); in main()
296 PetscCall(CheckMat(A, A2, PETSC_TRUE, "MatConvert_XAIJ_IS MAT_INITIAL_MATRIX")); in main()
297 PetscCall(MatConvert(B2, MATIS, MAT_REUSE_MATRIX, &A2)); in main()
298 PetscCall(CheckMat(A, A2, PETSC_TRUE, "MatConvert_XAIJ_IS MAT_REUSE_MATRIX")); in main()
299 PetscCall(MatConvert(B2, MATIS, MAT_INPLACE_MATRIX, &B2)); in main()
300 PetscCall(CheckMat(A, B2, PETSC_TRUE, "MatConvert_XAIJ_IS MAT_INPLACE_MATRIX")); in main()
301 PetscCall(MatDestroy(&A2)); in main()
302 PetscCall(MatDestroy(&B2)); in main()
303 PetscCall(PetscStrcmp(lmtype, MATSEQAIJ, &isaij)); in main()
317 PetscCall(ISCreateBlock(PETSC_COMM_SELF, rb, 3, r, PETSC_COPY_VALUES, &is)); in main()
318 PetscCall(ISLocalToGlobalMappingCreateIS(is, &trmap)); in main()
319 PetscCall(ISDestroy(&is)); in main()
324PetscCall(PetscSNPrintf(testname, sizeof(testname), "MatConvert_IS_XAIJ special case (%" PetscInt_… in main()
325 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test %s\n", testname)); in main()
327 PetscCall(ISCreateBlock(PETSC_COMM_SELF, cb, 4, c, PETSC_COPY_VALUES, &is)); in main()
328 PetscCall(ISLocalToGlobalMappingCreateIS(is, &tcmap)); in main()
329 PetscCall(ISDestroy(&is)); in main()
331 PetscCall(MatCreate(PETSC_COMM_SELF, &T)); in main()
332 PetscCall(MatSetSizes(T, PETSC_DECIDE, PETSC_DECIDE, rb * 3, cb * 4)); in main()
333 PetscCall(MatSetType(T, MATIS)); in main()
334 PetscCall(MatSetLocalToGlobalMapping(T, trmap, tcmap)); in main()
335 PetscCall(ISLocalToGlobalMappingDestroy(&tcmap)); in main()
336 PetscCall(MatISGetLocalMat(T, &lT)); in main()
337 PetscCall(MatSetType(lT, MATSEQAIJ)); in main()
338 PetscCall(MatSeqAIJSetPreallocation(lT, cb * 4, NULL)); in main()
339 PetscCall(MatSetRandom(lT, NULL)); in main()
340 PetscCall(MatConvert(lT, lmtype, MAT_INPLACE_MATRIX, &lT)); in main()
341 PetscCall(MatISRestoreLocalMat(T, &lT)); in main()
342 PetscCall(MatAssemblyBegin(T, MAT_FINAL_ASSEMBLY)); in main()
343 PetscCall(MatAssemblyEnd(T, MAT_FINAL_ASSEMBLY)); in main()
345 PetscCall(MatConvert(T, MATAIJ, MAT_INITIAL_MATRIX, &T2)); in main()
346 PetscCall(CheckMat(T, T2, PETSC_TRUE, "MAT_INITIAL_MATRIX")); in main()
347 PetscCall(MatConvert(T, MATAIJ, MAT_REUSE_MATRIX, &T2)); in main()
348 PetscCall(CheckMat(T, T2, PETSC_TRUE, "MAT_REUSE_MATRIX")); in main()
349 PetscCall(MatDestroy(&T2)); in main()
350 PetscCall(MatDuplicate(T, MAT_COPY_VALUES, &T2)); in main()
351 PetscCall(MatConvert(T2, MATAIJ, MAT_INPLACE_MATRIX, &T2)); in main()
352 PetscCall(CheckMat(T, T2, PETSC_TRUE, "MAT_INPLACE_MATRIX")); in main()
353 PetscCall(MatDestroy(&T)); in main()
354 PetscCall(MatDestroy(&T2)); in main()
356 PetscCall(ISLocalToGlobalMappingDestroy(&trmap)); in main()
363 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatDiagonalScale\n")); in main()
364 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
365 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
366 PetscCall(MatCreateVecs(A, &x, &y)); in main()
367 PetscCall(VecSetRandom(x, NULL)); in main()
369 PetscCall(VecCopy(x, y)); in main()
371 PetscCall(VecSetRandom(y, NULL)); in main()
372 PetscCall(VecScale(y, 8.)); in main()
374 PetscCall(MatDiagonalScale(A2, y, x)); in main()
375 PetscCall(MatDiagonalScale(B2, y, x)); in main()
376 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatDiagonalScale")); in main()
377 PetscCall(MatDestroy(&A2)); in main()
378 PetscCall(MatDestroy(&B2)); in main()
379 PetscCall(VecDestroy(&x)); in main()
380 PetscCall(VecDestroy(&y)); in main()
384 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatPtAP\n")); in main()
387 PetscCall(MatISStoreL2L(A, PETSC_TRUE)); in main()
388 PetscCall(MatPtAP(A, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &A2)); in main()
389 PetscCall(MatPtAP(B, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &B2)); in main()
390 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatPtAP MAT_INITIAL_MATRIX")); in main()
391 PetscCall(MatPtAP(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &A2)); in main()
392 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatPtAP MAT_REUSE_MATRIX")); in main()
393 PetscCall(MatDestroy(&A2)); in main()
394 PetscCall(MatDestroy(&B2)); in main()
399 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatGetLocalSubMatrix\n")); in main()
400 PetscCall(MatDuplicate(A, MAT_DO_NOT_COPY_VALUES, &A2)); in main()
401 PetscCall(ISCreateStride(PETSC_COMM_SELF, lm / 2 + lm % 2, 0, 2, &reven)); in main()
402 PetscCall(ISComplement(reven, 0, lm, &rodd)); in main()
403 PetscCall(ISCreateStride(PETSC_COMM_SELF, ln / 2 + ln % 2, 0, 2, &ceven)); in main()
404 PetscCall(ISComplement(ceven, 0, ln, &codd)); in main()
405 PetscCall(MatGetLocalSubMatrix(A2, reven, ceven, &Aee)); in main()
406 PetscCall(MatGetLocalSubMatrix(A2, reven, codd, &Aeo)); in main()
407 PetscCall(MatGetLocalSubMatrix(A2, rodd, ceven, &Aoe)); in main()
408 PetscCall(MatGetLocalSubMatrix(A2, rodd, codd, &Aoo)); in main()
422 PetscCall(ISGlobalToLocalMappingApply(cmap, IS_GTOLM_MASK, 3, cols, NULL, cols)); in main()
433 PetscCall(MatSetValuesLocal(Aoe, 1, &row, je, colse, ve, ADD_VALUES)); in main()
434 PetscCall(MatSetValuesBlockedLocal(Aoo, 1, &row, jo, colso, vo, ADD_VALUES)); in main()
436 PetscCall(MatSetValuesLocal(Aee, 1, &row, je, colse, ve, ADD_VALUES)); in main()
437 PetscCall(MatSetValuesBlockedLocal(Aeo, 1, &row, jo, colso, vo, ADD_VALUES)); in main()
440 PetscCall(MatRestoreLocalSubMatrix(A2, reven, ceven, &Aee)); in main()
441 PetscCall(MatRestoreLocalSubMatrix(A2, reven, codd, &Aeo)); in main()
442 PetscCall(MatRestoreLocalSubMatrix(A2, rodd, ceven, &Aoe)); in main()
443 PetscCall(MatRestoreLocalSubMatrix(A2, rodd, codd, &Aoo)); in main()
444 PetscCall(ISDestroy(&reven)); in main()
445 PetscCall(ISDestroy(&ceven)); in main()
446 PetscCall(ISDestroy(&rodd)); in main()
447 PetscCall(ISDestroy(&codd)); in main()
448 PetscCall(MatAssemblyBegin(A2, MAT_FINAL_ASSEMBLY)); in main()
449 PetscCall(MatAssemblyEnd(A2, MAT_FINAL_ASSEMBLY)); in main()
450 PetscCall(MatAXPY(A2, -1., A, SAME_NONZERO_PATTERN)); in main()
451 PetscCall(CheckMat(A2, NULL, PETSC_FALSE, "MatGetLocalSubMatrix")); in main()
452 PetscCall(MatDestroy(&A2)); in main()
456 PetscCall(PetscOptionsGetBool(NULL, NULL, "-test_trans", &testT, NULL)); in main()
458 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatConvert_Nest_IS\n")); in main()
461 PetscCall(PetscOptionsGetInt(NULL, NULL, "-nr", &nr, NULL)); in main()
462 PetscCall(PetscOptionsGetInt(NULL, NULL, "-nc", &nc, NULL)); in main()
464 PetscCall(MatGetOwnershipRange(A, &cst, &cen)); in main()
465 PetscCall(MatGetOwnershipRangeColumn(A, &rst, &ren)); in main()
467 PetscCall(MatGetOwnershipRange(A, &rst, &ren)); in main()
468 PetscCall(MatGetOwnershipRangeColumn(A, &cst, &cen)); in main()
470 PetscCall(PetscMalloc3(nr, &rows, nc, &cols, 2 * nr * nc, &mats)); in main()
473 PetscCall(MatCreateTranspose(A, &mats[i])); in main()
474 PetscCall(MatTranspose(B, MAT_INITIAL_MATRIX, &mats[i + nr * nc])); in main()
476 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &mats[i])); in main()
477 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &mats[i + nr * nc])); in main()
480 …for (i = 0; i < nr; i++) PetscCall(ISCreateStride(PETSC_COMM_WORLD, ren - rst, i + rst, nr, &rows[… in main()
481 …for (i = 0; i < nc; i++) PetscCall(ISCreateStride(PETSC_COMM_WORLD, cen - cst, i + cst, nc, &cols[… in main()
482 PetscCall(MatCreateNest(PETSC_COMM_WORLD, nr, rows, nc, cols, mats, &A2)); in main()
483 PetscCall(MatCreateNest(PETSC_COMM_WORLD, nr, rows, nc, cols, mats + nr * nc, &B2)); in main()
484 for (i = 0; i < nr; i++) PetscCall(ISDestroy(&rows[i])); in main()
485 for (i = 0; i < nc; i++) PetscCall(ISDestroy(&cols[i])); in main()
486 for (i = 0; i < 2 * nr * nc; i++) PetscCall(MatDestroy(&mats[i])); in main()
487 PetscCall(PetscFree3(rows, cols, mats)); in main()
488 PetscCall(MatConvert(B2, MATAIJ, MAT_INITIAL_MATRIX, &T)); in main()
489 PetscCall(MatDestroy(&B2)); in main()
490 PetscCall(MatConvert(A2, MATIS, MAT_INITIAL_MATRIX, &B2)); in main()
491 PetscCall(CheckMat(B2, T, PETSC_TRUE, "MatConvert_Nest_IS MAT_INITIAL_MATRIX")); in main()
492 PetscCall(MatConvert(A2, MATIS, MAT_REUSE_MATRIX, &B2)); in main()
493 PetscCall(CheckMat(B2, T, PETSC_TRUE, "MatConvert_Nest_IS MAT_REUSE_MATRIX")); in main()
494 PetscCall(MatDestroy(&B2)); in main()
495 PetscCall(MatConvert(A2, MATIS, MAT_INPLACE_MATRIX, &A2)); in main()
496 PetscCall(CheckMat(A2, T, PETSC_TRUE, "MatConvert_Nest_IS MAT_INPLACE_MATRIX")); in main()
497 PetscCall(MatDestroy(&T)); in main()
498 PetscCall(MatDestroy(&A2)); in main()
501 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatCreateSubMatrix\n")); in main()
503 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 1, 1, 1, &is)); in main()
504 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 2, 0, 1, &is2)); in main()
506 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 1, 0, 1, &is)); in main()
508 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 1, 3, 1, &is2)); in main()
510 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 0, 0, 1, &is2)); in main()
513 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 0, 0, 1, &is)); in main()
514 PetscCall(ISCreateStride(PETSC_COMM_WORLD, n - 4, 4, 1, &is2)); in main()
516 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 0, 0, 1, &is)); in main()
517 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 0, 0, 1, &is2)); in main()
519 PetscCall(MatCreateSubMatrix(A, is, is, MAT_INITIAL_MATRIX, &A2)); in main()
520 PetscCall(MatCreateSubMatrix(B, is, is, MAT_INITIAL_MATRIX, &B2)); in main()
521 PetscCall(CheckMat(A2, B2, PETSC_TRUE, "first MatCreateSubMatrix")); in main()
523 PetscCall(MatCreateSubMatrix(A, is, is, MAT_REUSE_MATRIX, &A2)); in main()
524 PetscCall(MatCreateSubMatrix(B, is, is, MAT_REUSE_MATRIX, &B2)); in main()
525 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "reuse MatCreateSubMatrix")); in main()
526 PetscCall(MatDestroy(&A2)); in main()
527 PetscCall(MatDestroy(&B2)); in main()
530 PetscCall(MatCreateSubMatrix(A, is, is2, MAT_INITIAL_MATRIX, &A2)); in main()
531 PetscCall(MatCreateSubMatrix(B, is, is2, MAT_INITIAL_MATRIX, &B2)); in main()
532 PetscCall(MatCreateSubMatrix(A, is, is2, MAT_REUSE_MATRIX, &A2)); in main()
533 PetscCall(MatCreateSubMatrix(B, is, is2, MAT_REUSE_MATRIX, &B2)); in main()
534 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "second MatCreateSubMatrix")); in main()
537 PetscCall(MatDestroy(&A2)); in main()
538 PetscCall(MatDestroy(&B2)); in main()
539 PetscCall(ISDestroy(&is)); in main()
540 PetscCall(ISDestroy(&is2)); in main()
543 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatCreateSubMatrices\n")); in main()
544 PetscCall(MatGetLayouts(A, &rlayout, &clayout)); in main()
545 PetscCall(PetscLayoutGetRanges(rlayout, &rrange)); in main()
546 PetscCall(PetscLayoutGetRanges(clayout, &crange)); in main()
549PetscCall(ISCreateStride(PETSC_COMM_SELF, rrange[lrank + 1] - rrange[lrank], rrange[lrank], 1, &ir… in main()
550PetscCall(ISCreateStride(PETSC_COMM_SELF, crange[rrank + 1] - crange[rrank], crange[rrank], 1, &ic… in main()
551PetscCall(ISCreateStride(PETSC_COMM_SELF, rrange[rrank + 1] - rrange[rrank], rrange[rrank], 1, &ir… in main()
552PetscCall(ISCreateStride(PETSC_COMM_SELF, crange[lrank + 1] - crange[lrank], crange[lrank], 1, &ic… in main()
553 PetscCall(MatCreateSubMatrices(A, 2, irow, icol, MAT_INITIAL_MATRIX, &Asub)); in main()
554 PetscCall(MatCreateSubMatrices(B, 2, irow, icol, MAT_INITIAL_MATRIX, &Bsub)); in main()
555 PetscCall(CheckMat(Asub[0], Bsub[0], PETSC_FALSE, "MatCreateSubMatrices[0]")); in main()
556 PetscCall(CheckMat(Asub[1], Bsub[1], PETSC_FALSE, "MatCreateSubMatrices[1]")); in main()
557 PetscCall(MatCreateSubMatrices(A, 2, irow, icol, MAT_REUSE_MATRIX, &Asub)); in main()
558 PetscCall(MatCreateSubMatrices(B, 2, irow, icol, MAT_REUSE_MATRIX, &Bsub)); in main()
559 PetscCall(CheckMat(Asub[0], Bsub[0], PETSC_FALSE, "MatCreateSubMatrices[0]")); in main()
560 PetscCall(CheckMat(Asub[1], Bsub[1], PETSC_FALSE, "MatCreateSubMatrices[1]")); in main()
561 PetscCall(MatDestroySubMatrices(2, &Asub)); in main()
562 PetscCall(MatDestroySubMatrices(2, &Bsub)); in main()
563 PetscCall(ISDestroy(&irow[0])); in main()
564 PetscCall(ISDestroy(&irow[1])); in main()
565 PetscCall(ISDestroy(&icol[0])); in main()
566 PetscCall(ISDestroy(&icol[1])); in main()
575 PetscCall(ISCreateStride(PETSC_COMM_WORLD, len, st, 1, &is)); in main()
577 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 0, 0, 1, &is)); in main()
580 PetscCall(ISCreateStride(PETSC_COMM_WORLD, 1, 0, 1, &is)); in main()
583 PetscCall(ISLocalToGlobalMappingGetSize(rmap, &lm)); in main()
584 PetscCall(ISCreateStride(PETSC_COMM_WORLD, lm ? 1 : 0, 0, 1, &lis)); in main()
591 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatDiagonalSet\n")); in main()
592 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
593 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
594 PetscCall(MatCreateVecs(A, NULL, &x)); in main()
595 PetscCall(VecSetRandom(x, NULL)); in main()
596 PetscCall(MatDiagonalSet(A2, x, allow_repeated ? ADD_VALUES : INSERT_VALUES)); in main()
597 PetscCall(MatDiagonalSet(B2, x, allow_repeated ? ADD_VALUES : INSERT_VALUES)); in main()
598 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatDiagonalSet")); in main()
599 PetscCall(VecDestroy(&x)); in main()
600 PetscCall(MatDestroy(&A2)); in main()
601 PetscCall(MatDestroy(&B2)); in main()
604 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatShift\n")); in main()
605 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
606 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
607 PetscCall(MatShift(A2, 2.0)); in main()
608 PetscCall(MatShift(B2, 2.0)); in main()
609 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatShift")); in main()
610 PetscCall(MatDestroy(&A2)); in main()
611 PetscCall(MatDestroy(&B2)); in main()
614 PetscCall(TestMatZeroRows(A, B, PETSC_TRUE, is, diag, PETSC_FALSE)); in main()
615 PetscCall(TestMatZeroRows(A, B, PETSC_TRUE, lis, diag, PETSC_TRUE)); in main()
618 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatIncreaseOverlap\n")); in main()
619 PetscCall(MatGetOwnershipRange(A, &rst, &ren)); in main()
622 PetscCall(PetscMalloc1(n0, &idx0)); in main()
623 PetscCall(PetscMalloc1(n1, &idx1)); in main()
626 PetscCall(ISCreateGeneral(PETSC_COMM_WORLD, n0, idx0, PETSC_OWN_POINTER, &Ais[0])); in main()
627 PetscCall(ISCreateGeneral(PETSC_COMM_WORLD, n1, idx1, PETSC_OWN_POINTER, &Ais[1])); in main()
628 PetscCall(ISCreateGeneral(PETSC_COMM_WORLD, n0, idx0, PETSC_COPY_VALUES, &Bis[0])); in main()
629 PetscCall(ISCreateGeneral(PETSC_COMM_WORLD, n1, idx1, PETSC_COPY_VALUES, &Bis[1])); in main()
630 PetscCall(MatIncreaseOverlap(A, 2, Ais, 3)); in main()
631 PetscCall(MatIncreaseOverlap(B, 2, Bis, 3)); in main()
633 PetscCall(ISSort(Ais[0])); in main()
634 PetscCall(ISSort(Ais[1])); in main()
635 PetscCall(ISSort(Bis[0])); in main()
636 PetscCall(ISSort(Bis[1])); in main()
637 PetscCall(ISView(Ais[0], NULL)); in main()
638 PetscCall(ISView(Bis[0], NULL)); in main()
639 PetscCall(ISView(Ais[1], NULL)); in main()
640 PetscCall(ISView(Bis[1], NULL)); in main()
641 PetscCall(MatCreateSubMatrices(A, 2, Ais, Ais, MAT_INITIAL_MATRIX, &Asub)); in main()
642 PetscCall(MatCreateSubMatrices(B, 2, Bis, Ais, MAT_INITIAL_MATRIX, &Bsub)); in main()
643 PetscCall(CheckMat(Asub[0], Bsub[0], PETSC_FALSE, "MatIncreaseOverlap[0]")); in main()
644 PetscCall(CheckMat(Asub[1], Bsub[1], PETSC_FALSE, "MatIncreaseOverlap[1]")); in main()
645 PetscCall(MatDestroySubMatrices(2, &Asub)); in main()
646 PetscCall(MatDestroySubMatrices(2, &Bsub)); in main()
647 PetscCall(ISDestroy(&Ais[0])); in main()
648 PetscCall(ISDestroy(&Ais[1])); in main()
649 PetscCall(ISDestroy(&Bis[0])); in main()
650 PetscCall(ISDestroy(&Bis[1])); in main()
652 PetscCall(TestMatZeroRows(A, B, squaretest, is, 0.0, PETSC_FALSE)); in main()
653 PetscCall(TestMatZeroRows(A, B, squaretest, lis, 0.0, PETSC_TRUE)); in main()
654 PetscCall(ISDestroy(&is)); in main()
655 PetscCall(ISDestroy(&lis)); in main()
658 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatTranspose\n")); in main()
659 PetscCall(MatTranspose(A, MAT_INITIAL_MATRIX, &A2)); in main()
660 PetscCall(MatTranspose(B, MAT_INITIAL_MATRIX, &B2)); in main()
661 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "initial matrix MatTranspose")); in main()
663 PetscCall(MatTranspose(A, MAT_REUSE_MATRIX, &A2)); in main()
664 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "reuse matrix (not in place) MatTranspose")); in main()
665 PetscCall(MatDestroy(&A2)); in main()
667 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
668 PetscCall(MatTranspose(A2, MAT_INPLACE_MATRIX, &A2)); in main()
669 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "reuse matrix (in place) MatTranspose")); in main()
670 PetscCall(MatDestroy(&A2)); in main()
672 PetscCall(MatTranspose(A, MAT_INITIAL_MATRIX, &A2)); in main()
673 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "reuse matrix (different type) MatTranspose")); in main()
674 PetscCall(MatDestroy(&A2)); in main()
675 PetscCall(MatDestroy(&B2)); in main()
683 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatISFixLocalEmpty\n")); in main()
684 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
686 PetscCall(MatISFixLocalEmpty(A2, PETSC_TRUE)); in main()
687 PetscCall(MatAssemblyBegin(A2, MAT_FINAL_ASSEMBLY)); in main()
688 PetscCall(MatAssemblyEnd(A2, MAT_FINAL_ASSEMBLY)); in main()
689 PetscCall(CheckMat(A2, B, PETSC_FALSE, "MatISFixLocalEmpty (null)")); in main()
691 PetscCall(MatZeroRows(A2, 2, r, 0.0, NULL, NULL)); in main()
692 PetscCall(MatViewFromOptions(A2, NULL, "-fixempty_view")); in main()
693 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
694 PetscCall(MatZeroRows(B2, 2, r, 0.0, NULL, NULL)); in main()
695 PetscCall(MatISFixLocalEmpty(A2, PETSC_TRUE)); in main()
696 PetscCall(MatAssemblyBegin(A2, MAT_FINAL_ASSEMBLY)); in main()
697 PetscCall(MatAssemblyEnd(A2, MAT_FINAL_ASSEMBLY)); in main()
698 PetscCall(MatViewFromOptions(A2, NULL, "-fixempty_view")); in main()
699 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatISFixLocalEmpty (rows)")); in main()
700 PetscCall(MatDestroy(&A2)); in main()
702 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
703 PetscCall(MatZeroRows(A2, 2, r, 0.0, NULL, NULL)); in main()
704 PetscCall(MatTranspose(A2, MAT_INPLACE_MATRIX, &A2)); in main()
705 PetscCall(MatTranspose(B2, MAT_INPLACE_MATRIX, &B2)); in main()
706 PetscCall(MatViewFromOptions(A2, NULL, "-fixempty_view")); in main()
707 PetscCall(MatISFixLocalEmpty(A2, PETSC_TRUE)); in main()
708 PetscCall(MatAssemblyBegin(A2, MAT_FINAL_ASSEMBLY)); in main()
709 PetscCall(MatAssemblyEnd(A2, MAT_FINAL_ASSEMBLY)); in main()
710 PetscCall(MatViewFromOptions(A2, NULL, "-fixempty_view")); in main()
711 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatISFixLocalEmpty (cols)")); in main()
713 PetscCall(MatDestroy(&A2)); in main()
714 PetscCall(MatDestroy(&B2)); in main()
717 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
718 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
719 PetscCall(MatZeroRowsColumns(A2, 2, r, 0.0, NULL, NULL)); in main()
720 PetscCall(MatZeroRowsColumns(B2, 2, r, 0.0, NULL, NULL)); in main()
721 PetscCall(MatViewFromOptions(A2, NULL, "-fixempty_view")); in main()
722 PetscCall(MatISFixLocalEmpty(A2, PETSC_TRUE)); in main()
723 PetscCall(MatAssemblyBegin(A2, MAT_FINAL_ASSEMBLY)); in main()
724 PetscCall(MatAssemblyEnd(A2, MAT_FINAL_ASSEMBLY)); in main()
725 PetscCall(MatViewFromOptions(A2, NULL, "-fixempty_view")); in main()
726 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatISFixLocalEmpty (rows+cols)")); in main()
727 PetscCall(MatDestroy(&A2)); in main()
728 PetscCall(MatDestroy(&B2)); in main()
746PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatInvertBlockDiagonal blockdiag %" PetscInt_FMT " %… in main()
747 PetscCall(PetscMalloc1(bs * bs, &vals)); in main()
748 PetscCall(MatGetOwnershipRanges(A, &sts)); in main()
769 PetscCall(ISCreateStride(PETSC_COMM_WORLD, nl, st, in, &is)); in main()
770 PetscCall(ISGetLocalSize(is, &nl)); in main()
771 PetscCall(ISGetIndices(is, &idxs)); in main()
772 PetscCall(PetscMalloc1(nl, &idxs2)); in main()
786 PetscCall(ISRestoreIndices(is, &idxs)); in main()
787 PetscCall(ISCreateBlock(PETSC_COMM_WORLD, bs, nl, idxs2, PETSC_OWN_POINTER, &bis)); in main()
788 PetscCall(ISLocalToGlobalMappingCreateIS(bis, &map)); in main()
789PetscCall(MatCreateIS(PETSC_COMM_WORLD, bs, PETSC_DECIDE, PETSC_DECIDE, bs * n, bs * n, map, map, … in main()
790 PetscCall(ISLocalToGlobalMappingDestroy(&map)); in main()
791 PetscCall(MatISSetPreallocation(Abd, bs, NULL, 0, NULL)); in main()
798 PetscCall(MatSetValuesBlockedLocal(Abd, 1, &i, 1, &i, vals, INSERT_VALUES)); in main()
800 PetscCall(MatAssemblyBegin(Abd, MAT_FINAL_ASSEMBLY)); in main()
801 PetscCall(MatAssemblyEnd(Abd, MAT_FINAL_ASSEMBLY)); in main()
802 PetscCall(MatConvert(Abd, MATAIJ, MAT_INITIAL_MATRIX, &Bbd)); in main()
803 PetscCall(MatInvertBlockDiagonal(Abd, &isbd)); in main()
804 PetscCall(MatInvertBlockDiagonal(Bbd, &aijbd)); in main()
805 PetscCall(MatGetLocalSize(Bbd, &nl, NULL)); in main()
814PetscCall(PetscPrintf(PETSC_COMM_SELF, "[%d] ERROR block %" PetscInt_FMT ", entry %" PetscInt_FMT … in main()
822 PetscCall(MatDestroy(&Abd)); in main()
823 PetscCall(MatDestroy(&Bbd)); in main()
824 PetscCall(PetscFree(vals)); in main()
825 PetscCall(ISDestroy(&is)); in main()
826 PetscCall(ISDestroy(&bis)); in main()
833 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatGetDiagonalBlock\n")); in main()
834 PetscCall(MatGetDiagonalBlock(A, &A2)); in main()
835 PetscCall(MatGetDiagonalBlock(B, &B2)); in main()
836 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatGetDiagonalBlock")); in main()
837 PetscCall(MatScale(A, 2.0)); in main()
838 PetscCall(MatScale(B, 2.0)); in main()
839 PetscCall(MatGetDiagonalBlock(A, &A2)); in main()
840 PetscCall(MatGetDiagonalBlock(B, &B2)); in main()
841 PetscCall(CheckMat(A2, B2, PETSC_FALSE, "MatGetDiagonalBlock")); in main()
844 PetscCall(MatISSetAllowRepeated(A, allow_repeated)); in main()
851 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
856PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatISSetAllowRepeated(false) with possibly repeated … in main()
857 PetscCall(MatISGetLocalMat(A2, &lA2)); in main()
858 PetscCall(MatConvert(lA2, MATSHELL, MAT_INITIAL_MATRIX, &tA)); in main()
859 PetscCall(MatISRestoreLocalMat(A2, &lA2)); in main()
860 PetscCall(MatISSetLocalMat(A2, tA)); in main()
861 PetscCall(MatDestroy(&tA)); in main()
863PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatISSetAllowRepeated(false) with possibly repeated … in main()
865 PetscCall(MatISSetAllowRepeated(A2, PETSC_FALSE)); in main()
866 PetscCall(MatISGetLocalMat(A, &lA)); in main()
867 PetscCall(MatISGetLocalMat(A2, &lA2)); in main()
868 …if (!repmap) PetscCall(CheckMat(lA, lA2, usemult, "MatISSetAllowRepeated(false) with non-repeated … in main()
869 PetscCall(MatISRestoreLocalMat(A, &lA)); in main()
870 PetscCall(MatISRestoreLocalMat(A2, &lA2)); in main()
871 …if (repmap) PetscCall(CheckMat(A2, B, usemult, "MatISSetAllowRepeated(false) with repeated entries… in main()
872 …else PetscCall(CheckMat(A2, B, usemult, "MatISSetAllowRepeated(false) with non-repeated entries")); in main()
873 PetscCall(MatDestroy(&A2)); in main()
879PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatISSetAllowRepeated(true) with non repeated entrie… in main()
880 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
881 PetscCall(MatISSetAllowRepeated(A2, PETSC_TRUE)); in main()
882 PetscCall(MatISGetLocalMat(A2, &lA)); in main()
883 PetscCall(MatAssembled(lA, &flg)); in main()
885 PetscCall(MatISRestoreLocalMat(A2, &lA)); in main()
886 PetscCall(MatDestroy(&A2)); in main()
890 PetscCall(MatZeroEntries(A)); in main()
891 PetscCall(MatZeroEntries(B)); in main()
892 PetscCall(CheckMat(A, B, PETSC_FALSE, "MatZeroEntries")); in main()
896 PetscCall(PetscMalloc1(lm * ln, &vals)); in main()
898 PetscCall(MatGetLocalSize(A, NULL, &ln)); in main()
899 PetscCall(MatISSetPreallocation(A, ln, NULL, n - ln, NULL)); in main()
900 PetscCall(MatSeqAIJSetPreallocation(B, ln, NULL)); in main()
901 PetscCall(MatMPIAIJSetPreallocation(B, ln, NULL, n - ln, NULL)); in main()
902 PetscCall(ISLocalToGlobalMappingGetSize(rmap, &lm)); in main()
903 PetscCall(ISLocalToGlobalMappingGetSize(cmap, &ln)); in main()
905 PetscCall(ISLocalToGlobalMappingGetIndices(rmap, &idxs1)); in main()
906 PetscCall(ISLocalToGlobalMappingGetIndices(cmap, &idxs2)); in main()
907 PetscCall(MatSetValues(A, lm, idxs1, ln, idxs2, vals, ADD_VALUES)); in main()
908 PetscCall(MatSetValues(B, lm, idxs1, ln, idxs2, vals, ADD_VALUES)); in main()
909 PetscCall(ISLocalToGlobalMappingRestoreIndices(rmap, &idxs1)); in main()
910 PetscCall(ISLocalToGlobalMappingRestoreIndices(cmap, &idxs2)); in main()
911 PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY)); in main()
912 PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY)); in main()
913 PetscCall(MatAssemblyBegin(B, MAT_FINAL_ASSEMBLY)); in main()
914 PetscCall(MatAssemblyEnd(B, MAT_FINAL_ASSEMBLY)); in main()
915 PetscCall(CheckMat(A, B, PETSC_FALSE, "MatSetValues")); in main()
917 PetscCall(ISLocalToGlobalMappingGetBlockIndices(rmap, &idxs1)); in main()
918 PetscCall(ISLocalToGlobalMappingGetBlockIndices(cmap, &idxs2)); in main()
919 PetscCall(MatSetValuesBlocked(A, lm / rbs, idxs1, ln / cbs, idxs2, vals, ADD_VALUES)); in main()
920 PetscCall(MatSetValuesBlocked(B, lm / rbs, idxs1, ln / cbs, idxs2, vals, ADD_VALUES)); in main()
921 PetscCall(ISLocalToGlobalMappingRestoreBlockIndices(rmap, &idxs1)); in main()
922 PetscCall(ISLocalToGlobalMappingRestoreBlockIndices(cmap, &idxs2)); in main()
923 PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY)); in main()
924 PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY)); in main()
925 PetscCall(MatAssemblyBegin(B, MAT_FINAL_ASSEMBLY)); in main()
926 PetscCall(MatAssemblyEnd(B, MAT_FINAL_ASSEMBLY)); in main()
927 PetscCall(CheckMat(A, B, PETSC_FALSE, "MatSetValuesBlocked")); in main()
928 PetscCall(PetscFree(vals)); in main()
932 PetscCall(ISLocalToGlobalMappingDestroy(&cmap)); in main()
933 PetscCall(ISLocalToGlobalMappingDestroy(&rmap)); in main()
934 PetscCall(MatDestroy(&A)); in main()
935 PetscCall(MatDestroy(&B)); in main()
936 PetscCall(PetscFinalize()); in main()
949 PetscCall(MatHasOperation(B, MATOP_NORM, &hasnorm)); in CheckMat()
956 PetscCall(MatGetType(B, &Btype)); in CheckMat()
957 PetscCall(MatConvert(A, Btype, MAT_INITIAL_MATRIX, &Bcheck)); in CheckMat()
959 PetscCall(MatConvert(A, MATAIJ, MAT_INITIAL_MATRIX, &Bcheck)); in CheckMat()
962 PetscCall(MatAXPY(Bcheck, -1., B, DIFFERENT_NONZERO_PATTERN)); in CheckMat()
964 PetscCall(MatNorm(Bcheck, NORM_INFINITY, &error)); in CheckMat()
968 PetscCall(PetscObjectSetName((PetscObject)Bcheck, "Bcheck")); in CheckMat()
969 PetscCall(MatView(Bcheck, NULL)); in CheckMat()
971 PetscCall(PetscObjectSetName((PetscObject)B, "B")); in CheckMat()
972 PetscCall(MatView(B, NULL)); in CheckMat()
973 PetscCall(MatDestroy(&Bcheck)); in CheckMat()
974 PetscCall(MatConvert(A, MATAIJ, MAT_INITIAL_MATRIX, &Bcheck)); in CheckMat()
975 PetscCall(PetscObjectSetName((PetscObject)Bcheck, "Assembled A")); in CheckMat()
976 PetscCall(MatView(Bcheck, NULL)); in CheckMat()
978 PetscCall(MatDestroy(&Bcheck)); in CheckMat()
979 PetscCall(PetscObjectSetName((PetscObject)A, "A")); in CheckMat()
980 PetscCall(MatView(A, NULL)); in CheckMat()
981 PetscCall(MatGetLocalToGlobalMapping(A, &rl2g, &cl2g)); in CheckMat()
982 if (rl2g) PetscCall(ISLocalToGlobalMappingView(rl2g, NULL)); in CheckMat()
983 if (cl2g) PetscCall(ISLocalToGlobalMappingView(cl2g, NULL)); in CheckMat()
986 PetscCall(MatDestroy(&Bcheck)); in CheckMat()
990 PetscCall(MatMultEqual(A, B, 3, &ok)); in CheckMat()
991 PetscCall(MatMultTransposeEqual(A, B, 3, &okt)); in CheckMat()
1011 PetscCall(PetscStrncpy(diagstr, "zero", sizeof(diagstr))); in TestMatZeroRows()
1013 PetscCall(PetscStrncpy(diagstr, "nonzero", sizeof(diagstr))); in TestMatZeroRows()
1015 PetscCall(ISView(is, NULL)); in TestMatZeroRows()
1016 PetscCall(MatGetLocalToGlobalMapping(A, &l2gr, &l2gc)); in TestMatZeroRows()
1019 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &B)); in TestMatZeroRows()
1021 PetscCall(MatDuplicate(A, MAT_DO_NOT_COPY_VALUES, &B)); in TestMatZeroRows()
1022 PetscCall(MatCopy(A, B, SAME_NONZERO_PATTERN)); in TestMatZeroRows()
1024 PetscCall(MatISGetLocalMat(B, &lB)); in TestMatZeroRows()
1025 PetscCall(MatHasOperation(lB, MATOP_ZERO_ROWS, &haszerorows)); in TestMatZeroRows()
1027 PetscCall(MatCreateVecs(B, &x, &b)); in TestMatZeroRows()
1028 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in TestMatZeroRows()
1029 PetscCall(VecSetLocalToGlobalMapping(b, l2gr)); in TestMatZeroRows()
1030 PetscCall(VecSetLocalToGlobalMapping(x, l2gc)); in TestMatZeroRows()
1031 PetscCall(VecSetRandom(x, NULL)); in TestMatZeroRows()
1032 PetscCall(VecSetRandom(b, NULL)); in TestMatZeroRows()
1034 PetscCall(VecDuplicate(b, &b2)); in TestMatZeroRows()
1035 PetscCall(VecSetLocalToGlobalMapping(b2, l2gr)); in TestMatZeroRows()
1036 PetscCall(VecCopy(b, b2)); in TestMatZeroRows()
1038 PetscCall(ISL2GMapNoNeg(l2gr, is, &gis)); in TestMatZeroRows()
1039 PetscCall(ISGetLocalSize(gis, &n)); in TestMatZeroRows()
1040 PetscCall(ISGetIndices(gis, &idxs)); in TestMatZeroRows()
1042 PetscCall(ISGetLocalSize(is, &n)); in TestMatZeroRows()
1043 PetscCall(ISGetIndices(is, &idxs)); in TestMatZeroRows()
1045 PetscCall(VecGetSize(x, &N)); in TestMatZeroRows()
1048 PetscCall(VecSetValue(b2, idxs[i], diag, INSERT_VALUES)); in TestMatZeroRows()
1049 PetscCall(VecSetValue(x, idxs[i], 1., INSERT_VALUES)); in TestMatZeroRows()
1053 PetscCall(ISRestoreIndices(gis, &idxs)); in TestMatZeroRows()
1054 PetscCall(ISDestroy(&gis)); in TestMatZeroRows()
1056 PetscCall(ISRestoreIndices(is, &idxs)); in TestMatZeroRows()
1058 PetscCall(VecAssemblyBegin(b2)); in TestMatZeroRows()
1059 PetscCall(VecAssemblyEnd(b2)); in TestMatZeroRows()
1060 PetscCall(VecAssemblyBegin(x)); in TestMatZeroRows()
1061 PetscCall(VecAssemblyEnd(x)); in TestMatZeroRows()
1064 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatZeroRowsLocal (diag %s)\n", diagstr)); in TestMatZeroRows()
1065 PetscCall(MatZeroRowsLocalIS(B, is, diag, x, b)); in TestMatZeroRows()
1066 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatZeroRowsColumnsLocal (diag %s)\n", diagstr)); in TestMatZeroRows()
1067 PetscCall(MatZeroRowsColumnsLocalIS(B2, is, diag, NULL, NULL)); in TestMatZeroRows()
1069 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatZeroRows (diag %s)\n", diagstr)); in TestMatZeroRows()
1070 PetscCall(MatZeroRowsIS(B, is, diag, x, b)); in TestMatZeroRows()
1071 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatZeroRowsColumns (diag %s)\n", diagstr)); in TestMatZeroRows()
1072 PetscCall(MatZeroRowsColumnsIS(B2, is, diag, NULL, NULL)); in TestMatZeroRows()
1077 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatZeroRowsLocal (diag %s)\n", diagstr)); in TestMatZeroRows()
1078 PetscCall(MatZeroRowsLocalIS(B, is, diag, NULL, NULL)); in TestMatZeroRows()
1080 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Test MatZeroRows (diag %s)\n", diagstr)); in TestMatZeroRows()
1081 PetscCall(MatZeroRowsIS(B, is, diag, NULL, NULL)); in TestMatZeroRows()
1085 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Skipping MatZeroRows (diag %s)\n", diagstr)); in TestMatZeroRows()
1090 PetscCall(VecAXPY(b2, -1., b)); in TestMatZeroRows()
1091 PetscCall(VecNorm(b2, NORM_INFINITY, &error)); in TestMatZeroRows()
1094 PetscCall(VecDestroy(&x)); in TestMatZeroRows()
1095 PetscCall(VecDestroy(&b)); in TestMatZeroRows()
1096 PetscCall(VecDestroy(&b2)); in TestMatZeroRows()
1101 PetscCall(MatDuplicate(Afull, MAT_COPY_VALUES, &Bcheck)); in TestMatZeroRows()
1102 PetscCall(MatSetOption(Bcheck, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_FALSE)); in TestMatZeroRows()
1104 PetscCall(ISL2GMapNoNeg(l2gr, is, &gis)); in TestMatZeroRows()
1105 PetscCall(MatZeroRowsIS(Bcheck, gis, diag, NULL, NULL)); in TestMatZeroRows()
1106 PetscCall(ISDestroy(&gis)); in TestMatZeroRows()
1108 PetscCall(MatZeroRowsIS(Bcheck, is, diag, NULL, NULL)); in TestMatZeroRows()
1110 PetscCall(CheckMat(B, Bcheck, PETSC_FALSE, "Zerorows")); in TestMatZeroRows()
1111 PetscCall(MatDestroy(&Bcheck)); in TestMatZeroRows()
1113 PetscCall(MatDestroy(&B)); in TestMatZeroRows()
1116 PetscCall(MatDuplicate(Afull, MAT_COPY_VALUES, &B)); in TestMatZeroRows()
1117 PetscCall(MatSetOption(B, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_FALSE)); in TestMatZeroRows()
1119 PetscCall(ISL2GMapNoNeg(l2gr, is, &gis)); in TestMatZeroRows()
1120 PetscCall(MatZeroRowsColumnsIS(B, gis, diag, NULL, NULL)); in TestMatZeroRows()
1121 PetscCall(ISDestroy(&gis)); in TestMatZeroRows()
1123 PetscCall(MatZeroRowsColumnsIS(B, is, diag, NULL, NULL)); in TestMatZeroRows()
1125 PetscCall(CheckMat(B2, B, PETSC_FALSE, "MatZeroRowsColumns")); in TestMatZeroRows()
1126 PetscCall(MatDestroy(&B)); in TestMatZeroRows()
1127 PetscCall(MatDestroy(&B2)); in TestMatZeroRows()
1138 PetscCall(ISGetLocalSize(is, &n)); in ISL2GMapNoNeg()
1139 PetscCall(ISGetIndices(is, &idxin)); in ISL2GMapNoNeg()
1140 PetscCall(PetscMalloc1(n, &idxout)); in ISL2GMapNoNeg()
1141 PetscCall(ISLocalToGlobalMappingApply(mapping, n, idxin, idxout)); in ISL2GMapNoNeg()
1142 PetscCall(ISRestoreIndices(is, &idxin)); in ISL2GMapNoNeg()
1145PetscCall(ISCreateGeneral(PetscObjectComm((PetscObject)is), nn, idxout, PETSC_OWN_POINTER, newis)); in ISL2GMapNoNeg()