Lines Matching refs:PetscCall

16     PetscCall(MatDenseGetArrayRead(A, &Aa));  in CheckLocal()
18 PetscCall(MatDenseGetLDA(A, &lda)); in CheckLocal()
19 PetscCall(MatGetLocalSize(A, &m, &n)); in CheckLocal()
25 PetscCall(MatDenseRestoreArrayRead(A, &Aa)); in CheckLocal()
29 PetscCall(MatDenseGetArrayRead(B, &Bb)); in CheckLocal()
31 PetscCall(MatDenseGetLDA(B, &lda)); in CheckLocal()
32 PetscCall(MatGetLocalSize(B, &m, &n)); in CheckLocal()
38 PetscCall(MatDenseRestoreArrayRead(B, &Bb)); in CheckLocal()
57 PetscCall(MatDestroy(&userdata->A)); in proj_destroy()
58 PetscCall(MatDestroy(&userdata->P)); in proj_destroy()
59 PetscCall(MatDestroy(&userdata->R)); in proj_destroy()
60 PetscCall(PetscFree(userdata)); in proj_destroy()
72 PetscCall(MatShellGetContext(S, &userdata)); in proj_mult()
80 PetscCall(MatCreateVecs(A, &Ax, &Ay)); in proj_mult()
82 PetscCall(MatCreateVecs(R, &Py, &Px)); in proj_mult()
84 PetscCall(MatCreateVecs(P, &Px, &Py)); in proj_mult()
86 PetscCall(VecCopy(X, Px)); in proj_mult()
88 PetscCall(MatMult(P, Px, Py)); in proj_mult()
90 PetscCall(MatMultTranspose(R, Px, Py)); in proj_mult()
92 PetscCall(VecCopy(Py, Ax)); in proj_mult()
93 PetscCall(MatMult(A, Ax, Ay)); in proj_mult()
94 PetscCall(VecCopy(Ay, Py)); in proj_mult()
96 PetscCall(MatMultTranspose(P, Py, Px)); in proj_mult()
98 PetscCall(MatMult(R, Py, Px)); in proj_mult()
100 PetscCall(VecCopy(Px, Y)); in proj_mult()
101 PetscCall(VecDestroy(&Px)); in proj_mult()
102 PetscCall(VecDestroy(&Py)); in proj_mult()
103 PetscCall(VecDestroy(&Ax)); in proj_mult()
104 PetscCall(VecDestroy(&Ay)); in proj_mult()
113 PetscCall(PetscNew(&userdata)); in MyPtShellPMultSymbolic()
114 PetscCall(MatShellSetContext(PtAP, userdata)); in MyPtShellPMultSymbolic()
125 PetscCall(MatShellGetContext(S, &A)); in MyPtShellPMultNumeric()
126 PetscCall(PetscObjectReference((PetscObject)A)); in MyPtShellPMultNumeric()
127 PetscCall(PetscObjectReference((PetscObject)P)); in MyPtShellPMultNumeric()
128 PetscCall(MatDestroy(&userdata->A)); in MyPtShellPMultNumeric()
129 PetscCall(MatDestroy(&userdata->P)); in MyPtShellPMultNumeric()
130 PetscCall(MatDestroy(&userdata->R)); in MyPtShellPMultNumeric()
133 PetscCall(MatShellSetOperation(PtAP, MATOP_MULT, (PetscErrorCodeFn *)proj_mult)); in MyPtShellPMultNumeric()
134 PetscCall(MatSetUp(PtAP)); in MyPtShellPMultNumeric()
135 PetscCall(MatAssemblyBegin(PtAP, MAT_FINAL_ASSEMBLY)); in MyPtShellPMultNumeric()
136 PetscCall(MatAssemblyEnd(PtAP, MAT_FINAL_ASSEMBLY)); in MyPtShellPMultNumeric()
145 PetscCall(PetscNew(&userdata)); in MyRShellRtMultSymbolic()
146 PetscCall(MatShellSetContext(RARt, userdata)); in MyRShellRtMultSymbolic()
157 PetscCall(MatShellGetContext(S, &A)); in MyRShellRtMultNumeric()
158 PetscCall(PetscObjectReference((PetscObject)A)); in MyRShellRtMultNumeric()
159 PetscCall(PetscObjectReference((PetscObject)R)); in MyRShellRtMultNumeric()
160 PetscCall(MatDestroy(&userdata->A)); in MyRShellRtMultNumeric()
161 PetscCall(MatDestroy(&userdata->P)); in MyRShellRtMultNumeric()
162 PetscCall(MatDestroy(&userdata->R)); in MyRShellRtMultNumeric()
165 PetscCall(MatShellSetOperation(RARt, MATOP_MULT, (PetscErrorCodeFn *)proj_mult)); in MyRShellRtMultNumeric()
166 PetscCall(MatSetUp(RARt)); in MyRShellRtMultNumeric()
167 PetscCall(MatAssemblyBegin(RARt, MAT_FINAL_ASSEMBLY)); in MyRShellRtMultNumeric()
168 PetscCall(MatAssemblyEnd(RARt, MAT_FINAL_ASSEMBLY)); in MyRShellRtMultNumeric()
177 PetscCall(MatShellGetContext(S, &A)); in MyMatShellMatMultNumeric()
178 PetscCall(MatMatMult(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &C)); in MyMatShellMatMultNumeric()
187 PetscCall(MatShellGetContext(S, &A)); in MyMatTransposeShellMatMultNumeric()
188 PetscCall(MatTransposeMatMult(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &C)); in MyMatTransposeShellMatMultNumeric()
197 PetscCall(MatShellGetContext(S, &A)); in MyMatShellMatTransposeMultNumeric()
198 PetscCall(MatMatTransposeMult(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &C)); in MyMatShellMatTransposeMultNumeric()
217 PetscCall(PetscInitialize(&argc, &args, NULL, help)); in main()
218 PetscCall(PetscOptionsGetInt(NULL, NULL, "-N", &N, NULL)); in main()
219 PetscCall(PetscOptionsGetInt(NULL, NULL, "-M", &M, NULL)); in main()
220 PetscCall(PetscOptionsGetInt(NULL, NULL, "-K", &K, NULL)); in main()
221 PetscCall(PetscOptionsGetBool(NULL, NULL, "-symm", &symm, NULL)); in main()
222 PetscCall(PetscOptionsGetBool(NULL, NULL, "-local", &local, NULL)); in main()
223 PetscCall(PetscOptionsGetInt(NULL, NULL, "-ldx", &ldx, NULL)); in main()
224 PetscCall(PetscOptionsGetInt(NULL, NULL, "-ldb", &ldb, NULL)); in main()
225 PetscCall(PetscOptionsGetInt(NULL, NULL, "-ldr", &ldr, NULL)); in main()
226 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testtranspose", &testtranspose, NULL)); in main()
227 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testnest", &testnest, NULL)); in main()
228 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testtt", &testtt, NULL)); in main()
229 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testcircular", &testcircular, NULL)); in main()
230 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testshellops", &testshellops, NULL)); in main()
231 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testproj", &testproj, NULL)); in main()
232 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testrart", &testrart, NULL)); in main()
233 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testmatmatt", &testmatmatt, NULL)); in main()
234 PetscCall(PetscOptionsGetBool(NULL, NULL, "-testmattmat", &testmattmat, NULL)); in main()
235 PetscCall(PetscOptionsGetBool(NULL, NULL, "-xgpu", &xgpu, NULL)); in main()
236 PetscCall(PetscOptionsGetBool(NULL, NULL, "-bgpu", &bgpu, NULL)); in main()
237 PetscCall(PetscOptionsGetScalar(NULL, NULL, "-magic_number", &MAGIC_NUMBER, NULL)); in main()
240 PetscCall(MatCreate(PETSC_COMM_WORLD, &A)); in main()
241 PetscCall(MatSetSizes(A, PETSC_DECIDE, PETSC_DECIDE, M, N)); in main()
242 PetscCall(MatSetType(A, MATAIJ)); in main()
243 PetscCall(MatSeqAIJSetPreallocation(A, PETSC_DEFAULT, NULL)); in main()
244 PetscCall(MatMPIAIJSetPreallocation(A, PETSC_DEFAULT, NULL, PETSC_DEFAULT, NULL)); in main()
245 PetscCall(MatSetUp(A)); in main()
246 PetscCall(MatSetRandom(A, NULL)); in main()
250 PetscCall(MatTranspose(A, MAT_INITIAL_MATRIX, &AT)); in main()
251 PetscCall(MatAXPY(A, 1.0, AT, DIFFERENT_NONZERO_PATTERN)); in main()
252 PetscCall(MatDestroy(&AT)); in main()
253 PetscCall(MatSetOption(A, MAT_SYMMETRIC, PETSC_TRUE)); in main()
255 PetscCall(MatViewFromOptions(A, NULL, "-A_init_view")); in main()
257PetscCall(PetscOptionsFList("-A_mat_type", "Matrix type", "MatSetType", MatList, deft, mattype, 25… in main()
262 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &A2)); in main()
263 PetscCall(MatConvert(A, mattype, MAT_INPLACE_MATRIX, &A)); in main()
264 PetscCall(MatMultEqual(A, A2, 10, &flg)); in main()
268 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with convert\n")); in main()
269 PetscCall(MatComputeOperator(A, MATDENSE, &AE)); in main()
270 PetscCall(MatComputeOperator(A2, MATDENSE, &A2E)); in main()
271 PetscCall(MatView(AE, NULL)); in main()
272 PetscCall(MatView(A2E, NULL)); in main()
273 PetscCall(MatAXPY(A2E, -1.0, A, SAME_NONZERO_PATTERN)); in main()
274 PetscCall(MatView(A2E, NULL)); in main()
275 PetscCall(MatDestroy(&A2E)); in main()
276 PetscCall(MatDestroy(&AE)); in main()
278 PetscCall(MatDestroy(&A2)); in main()
280 PetscCall(MatViewFromOptions(A, NULL, "-A_view")); in main()
282 PetscCall(MatGetLocalSize(A, &m, &n)); in main()
286 PetscCall(PetscMalloc1((m + ldx) * K, &dataX)); in main()
287 PetscCall(PetscMalloc1((n + ldb) * K, &dataB)); in main()
291 PetscCall(MatCreateDense(PETSC_COMM_WORLD, n, PETSC_DECIDE, N, K, dataB, &B)); in main()
292 PetscCall(MatCreateDense(PETSC_COMM_WORLD, m, PETSC_DECIDE, M, K, dataX, &X)); in main()
294 PetscCall(MatDenseSetLDA(X, m + ldx)); in main()
295 PetscCall(MatDenseSetLDA(B, n + ldb)); in main()
297 PetscCall(MatGetLocalSize(B, NULL, &k)); in main()
301 PetscCall(PetscMalloc1((k + ldr) * N, &dataBt)); in main()
304 PetscCall(MatCreateDense(PETSC_COMM_WORLD, k, n, K, N, dataBt, &Bt)); in main()
305 if (local) PetscCall(MatDenseSetLDA(Bt, k + ldr)); in main()
308 PetscCall(MatDenseGetArrayRead(B, (const PetscScalar **)&dataB)); in main()
309 PetscCall(MatDenseGetArrayRead(X, (const PetscScalar **)&dataX)); in main()
310 PetscCall(MatDenseGetArrayRead(Bt, (const PetscScalar **)&dataBt)); in main()
314 PetscCall(MatDenseRestoreArrayRead(Bt, (const PetscScalar **)&dataBt)); in main()
315 PetscCall(MatDenseRestoreArrayRead(B, (const PetscScalar **)&dataB)); in main()
316 PetscCall(MatDenseRestoreArrayRead(X, (const PetscScalar **)&dataX)); in main()
323 PetscCall(MatSetRandom(X, NULL)); in main()
324 PetscCall(MatSetRandom(B, NULL)); in main()
325 PetscCall(MatSetRandom(Bt, NULL)); in main()
326 PetscCall(CheckLocal(X, NULL, aX, NULL)); in main()
327 PetscCall(CheckLocal(Bt, B, aBt, aB)); in main()
331 PetscCall(MatConvert(B, MATDENSECUDA, MAT_INPLACE_MATRIX, &B)); in main()
332 PetscCall(MatConvert(Bt, MATDENSECUDA, MAT_INPLACE_MATRIX, &Bt)); in main()
334 if (xgpu) PetscCall(MatConvert(X, MATDENSECUDA, MAT_INPLACE_MATRIX, &X)); in main()
335 PetscCall(CheckLocal(B, X, aB, aX)); in main()
341 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
342 PetscCall(MatDuplicate(B, MAT_DO_NOT_COPY_VALUES, &T4)); in main()
343 PetscCall(MatSetRandom(T4, NULL)); in main()
344 PetscCall(MatAXPY(B2, 1.0, T4, SAME_NONZERO_PATTERN)); in main()
345PetscCall(MatDenseGetSubMatrix(B, PETSC_DECIDE, PETSC_DECIDE, PetscMin(1, K - 1), PetscMin(2, K), … in main()
346PetscCall(MatDenseGetSubMatrix(T4, PETSC_DECIDE, PETSC_DECIDE, PetscMin(1, K - 1), PetscMin(2, K),… in main()
347PetscCall(MatDenseGetSubMatrix(B2, PETSC_DECIDE, PETSC_DECIDE, PetscMin(1, K - 1), PetscMin(2, K),… in main()
348 PetscCall(MatAXPY(T, 1.0, T2, SAME_NONZERO_PATTERN)); in main()
349 PetscCall(MatAXPY(T3, -1.0, T, SAME_NONZERO_PATTERN)); in main()
350 PetscCall(MatNorm(T3, NORM_FROBENIUS, &err)); in main()
352 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with MatDenseGetSubMatrix\n")); in main()
353 PetscCall(MatView(T3, NULL)); in main()
355 PetscCall(MatDenseRestoreSubMatrix(B, &T)); in main()
356 PetscCall(MatDenseRestoreSubMatrix(T4, &T2)); in main()
357 PetscCall(MatDenseRestoreSubMatrix(B2, &T3)); in main()
358 PetscCall(CheckLocal(B, NULL, aB, NULL)); in main()
359 PetscCall(MatDestroy(&B2)); in main()
360 PetscCall(MatDestroy(&T4)); in main()
362 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
363 PetscCall(MatDuplicate(B, MAT_DO_NOT_COPY_VALUES, &T4)); in main()
364 PetscCall(MatSetRandom(T4, NULL)); in main()
365 PetscCall(MatAXPY(B2, 1.0, T4, SAME_NONZERO_PATTERN)); in main()
366PetscCall(MatDenseGetSubMatrix(B, N - 2, PETSC_DECIDE, PetscMin(1, K - 1), PetscMin(2, K), &T)); in main()
367PetscCall(MatDenseGetSubMatrix(T4, N - 2, PETSC_DECIDE, PetscMin(1, K - 1), PetscMin(2, K), &T2)); in main()
368PetscCall(MatDenseGetSubMatrix(B2, N - 2, PETSC_DECIDE, PetscMin(1, K - 1), PetscMin(2, K), &T3)); in main()
369 PetscCall(MatAXPY(T, 1.0, T2, SAME_NONZERO_PATTERN)); in main()
370 PetscCall(MatAXPY(T3, -1.0, T, SAME_NONZERO_PATTERN)); in main()
371 PetscCall(MatNorm(T3, NORM_FROBENIUS, &err)); in main()
373 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with MatDenseGetSubMatrix\n")); in main()
374 PetscCall(MatView(T3, NULL)); in main()
376 PetscCall(MatDenseRestoreSubMatrix(B, &T)); in main()
377 PetscCall(MatDenseRestoreSubMatrix(T4, &T2)); in main()
378 PetscCall(MatDenseRestoreSubMatrix(B2, &T3)); in main()
379 PetscCall(CheckLocal(B, NULL, aB, NULL)); in main()
380 PetscCall(MatDestroy(&B2)); in main()
381 PetscCall(MatDestroy(&T4)); in main()
382 PetscCall(MatDuplicate(B, MAT_COPY_VALUES, &B2)); in main()
383 PetscCall(MatDuplicate(B, MAT_DO_NOT_COPY_VALUES, &T4)); in main()
384 PetscCall(MatSetRandom(T4, NULL)); in main()
385 PetscCall(MatAXPY(B2, 1.0, T4, SAME_NONZERO_PATTERN)); in main()
386 PetscCall(MatDenseGetSubMatrix(B, PETSC_DECIDE, 2, PetscMin(1, K - 1), PetscMin(2, K), &T)); in main()
387 PetscCall(MatDenseGetSubMatrix(T4, PETSC_DECIDE, 2, PetscMin(1, K - 1), PetscMin(2, K), &T2)); in main()
388 PetscCall(MatDenseGetSubMatrix(B2, PETSC_DECIDE, 2, PetscMin(1, K - 1), PetscMin(2, K), &T3)); in main()
389 PetscCall(MatAXPY(T, 1.0, T2, SAME_NONZERO_PATTERN)); in main()
390 PetscCall(MatAXPY(T3, -1.0, T, SAME_NONZERO_PATTERN)); in main()
391 PetscCall(MatNorm(T3, NORM_FROBENIUS, &err)); in main()
393 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with MatDenseGetSubMatrix\n")); in main()
394 PetscCall(MatView(T3, NULL)); in main()
396 PetscCall(MatDenseRestoreSubMatrix(B, &T)); in main()
397 PetscCall(MatDenseRestoreSubMatrix(T4, &T2)); in main()
398 PetscCall(MatDenseRestoreSubMatrix(B2, &T3)); in main()
399 PetscCall(CheckLocal(B, NULL, aB, NULL)); in main()
400 PetscCall(MatDestroy(&B2)); in main()
401 PetscCall(MatDestroy(&T4)); in main()
406 PetscCall(MatMatMult(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
407 PetscCall(CheckLocal(B, X, aB, aX)); in main()
408 PetscCall(MatMatMultEqual(A, B, X, 10, &flg)); in main()
410 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with reusage\n")); in main()
411 PetscCall(MatMatMult(A, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
412 PetscCall(MatAXPY(T, -1.0, X, SAME_NONZERO_PATTERN)); in main()
413 PetscCall(MatView(T, NULL)); in main()
414 PetscCall(MatDestroy(&T)); in main()
419 PetscCall(MatTransposeMatMult(A, X, MAT_REUSE_MATRIX, PETSC_DETERMINE, &B)); in main()
420 PetscCall(CheckLocal(B, X, aB, aX)); in main()
421 PetscCall(MatTransposeMatMultEqual(A, X, B, 10, &flg)); in main()
423 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with reusage (MatTransposeMat)\n")); in main()
424 PetscCall(MatTransposeMatMult(A, X, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &B)); in main()
425 PetscCall(MatAXPY(T, -1.0, B, SAME_NONZERO_PATTERN)); in main()
426 PetscCall(MatView(T, NULL)); in main()
427 PetscCall(MatDestroy(&T)); in main()
431 PetscCall(MatMatTransposeMult(A, Bt, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
432 PetscCall(CheckLocal(Bt, X, aBt, aX)); in main()
433 PetscCall(MatMatTransposeMultEqual(A, Bt, X, 10, &flg)); in main()
435 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with reusage (MatMatTranspose)\n")); in main()
436 PetscCall(MatMatTransposeMult(A, Bt, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
437 PetscCall(MatAXPY(T, -1.0, X, SAME_NONZERO_PATTERN)); in main()
438 PetscCall(MatView(T, NULL)); in main()
439 PetscCall(MatDestroy(&T)); in main()
445 PetscCall(MatPtAP(A, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &PtAP)); in main()
446 PetscCall(MatPtAPMultEqual(A, B, PtAP, 10, &flg)); in main()
448 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with PtAP\n")); in main()
449 PetscCall(MatMatMult(A, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
450 PetscCall(MatTransposeMatMult(B, T, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T2)); in main()
451 PetscCall(MatAXPY(T2, -1.0, PtAP, SAME_NONZERO_PATTERN)); in main()
452 PetscCall(MatView(T2, NULL)); in main()
453 PetscCall(MatDestroy(&T2)); in main()
454 PetscCall(MatDestroy(&T)); in main()
456 PetscCall(PetscMalloc1((k + ldr) * M, &dataR)); in main()
457 PetscCall(MatCreateDense(PETSC_COMM_WORLD, PETSC_DECIDE, m, K, M, dataR, &R)); in main()
458 PetscCall(MatDenseSetLDA(R, k + ldr)); in main()
459 PetscCall(MatSetRandom(R, NULL)); in main()
461 PetscCall(MatRARt(A, R, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &RARt)); in main()
462 PetscCall(MatRARtMultEqual(A, R, RARt, 10, &flg)); in main()
464 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with RARt\n")); in main()
465 PetscCall(MatMatTransposeMult(A, R, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
466 PetscCall(MatMatMult(R, T, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T2)); in main()
467 PetscCall(MatAXPY(T2, -1.0, RARt, SAME_NONZERO_PATTERN)); in main()
468 PetscCall(MatView(T2, NULL)); in main()
469 PetscCall(MatDestroy(&T2)); in main()
470 PetscCall(MatDestroy(&T)); in main()
476 PetscCall(MatMatMult(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
477 PetscCall(MatMatMult(A, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
478 PetscCall(MatDuplicate(T, MAT_DO_NOT_COPY_VALUES, &T2)); in main()
482 PetscCall(MatDenseGetColumnVecRead(X, k, &Xv)); in main()
483 PetscCall(MatDenseGetColumnVec(T, k, &Tv)); in main()
484 PetscCall(MatDenseGetColumnVecWrite(T2, k, &T2v)); in main()
485 PetscCall(VecCopy(Xv, T2v)); in main()
486 PetscCall(VecAXPY(Tv, -1., Xv)); in main()
487 PetscCall(MatDenseRestoreColumnVecRead(X, k, &Xv)); in main()
488 PetscCall(MatDenseRestoreColumnVec(T, k, &Tv)); in main()
489 PetscCall(MatDenseRestoreColumnVecWrite(T2, k, &T2v)); in main()
491 PetscCall(MatNorm(T, NORM_FROBENIUS, &err)); in main()
493 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with MatDenseGetColumnVec\n")); in main()
494 PetscCall(MatView(T, NULL)); in main()
496 PetscCall(MatAXPY(T2, -1., X, SAME_NONZERO_PATTERN)); in main()
497 PetscCall(MatNorm(T2, NORM_FROBENIUS, &err)); in main()
499 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with MatDenseGetColumnVecWrite\n")); in main()
500 PetscCall(MatView(T2, NULL)); in main()
502 PetscCall(MatDestroy(&T)); in main()
503 PetscCall(MatDestroy(&T2)); in main()
506 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &T)); in main()
507 PetscCall(MatConvert(T, MATSHELL, MAT_INITIAL_MATRIX, &T2)); in main()
508 PetscCall(MatDestroy(&T)); in main()
511 PetscCall(MatScale(A, 2.0)); in main()
512 PetscCall(MatScale(T2, 2.0)); in main()
513 PetscCall(MatCreateVecs(A, &r, &l)); in main()
514 PetscCall(VecSetRandom(r, NULL)); in main()
515 PetscCall(VecSetRandom(l, NULL)); in main()
516 PetscCall(MatCreateVecs(T2, &rs, &ls)); in main()
517 PetscCall(VecCopy(r, rs)); in main()
518 PetscCall(VecCopy(l, ls)); in main()
520 PetscCall(MatDiagonalScale(A, r, r)); in main()
521 PetscCall(MatDiagonalScale(T2, rs, rs)); in main()
523 PetscCall(MatDiagonalScale(A, l, r)); in main()
524 PetscCall(MatDiagonalScale(T2, ls, rs)); in main()
526 PetscCall(MatDuplicate(A, MAT_COPY_VALUES, &T)); in main()
527 PetscCall(MatAXPY(A, 4.5, T, SAME_NONZERO_PATTERN)); in main()
528 PetscCall(MatAXPY(T2, 4.5, T, DIFFERENT_NONZERO_PATTERN)); in main()
529 PetscCall(MatMultEqual(T2, A, 10, &flg)); in main()
530 if (!flg) PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with MATSHELL (MatMult)\n")); in main()
531 PetscCall(MatMultTransposeEqual(T2, A, 10, &flg)); in main()
532 if (!flg) PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with MATSHELL (MatMultTranspose)\n")); in main()
533 PetscCall(MatDestroy(&T)); in main()
534 PetscCall(VecDestroy(&ls)); in main()
535 PetscCall(VecDestroy(&rs)); in main()
536 PetscCall(VecDestroy(&l)); in main()
537 PetscCall(VecDestroy(&r)); in main()
540 if (PtAP) PetscCall(MatPtAP(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &PtAP)); in main()
541 if (RARt) PetscCall(MatRARt(A, R, MAT_REUSE_MATRIX, PETSC_DETERMINE, &RARt)); in main()
543PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_AB, NULL, MyMatShellMatMultNumeric, NULL, … in main()
544PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_AB, NULL, MyMatShellMatMultNumeric, NULL, … in main()
545PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_AtB, NULL, MyMatTransposeShellMatMultNumer… in main()
546PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_AtB, NULL, MyMatTransposeShellMatMultNumer… in main()
547PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_ABt, NULL, MyMatShellMatTransposeMultNumer… in main()
548PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_ABt, NULL, MyMatShellMatTransposeMultNumer… in main()
550PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_PtAP, MyPtShellPMultSymbolic, MyPtShellPMu… in main()
551PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_PtAP, MyPtShellPMultSymbolic, MyPtShellPMu… in main()
552PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_RARt, MyRShellRtMultSymbolic, MyRShellRtMu… in main()
553PetscCall(MatShellSetMatProductOperation(T2, MATPRODUCT_RARt, MyRShellRtMultSymbolic, MyRShellRtMu… in main()
556 PetscCall(CheckLocal(B, X, aB, aX)); in main()
558 PetscCall(MatMatMult(T2, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
559 PetscCall(CheckLocal(B, X, aB, aX)); in main()
560 PetscCall(MatMatMultEqual(T2, B, X, 10, &flg)); in main()
562 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with reusage (MATSHELL)\n")); in main()
563 PetscCall(MatMatMult(A, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
564 PetscCall(MatAXPY(T, -1.0, X, SAME_NONZERO_PATTERN)); in main()
565 PetscCall(MatView(T, NULL)); in main()
566 PetscCall(MatDestroy(&T)); in main()
569 PetscCall(MatPtAPMultEqual(T2, B, PtAP, 10, &flg)); in main()
570 if (!flg) PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with PtAP (MATSHELL)\n")); in main()
572 PetscCall(MatPtAP(T2, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
573 PetscCall(MatPtAP(T2, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &T)); in main()
574 PetscCall(MatPtAPMultEqual(T2, B, T, 10, &flg)); in main()
578 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with PtAP (MATSHELL user defined)\n")); in main()
579 PetscCall(MatComputeOperator(T, MATDENSE, &TE)); in main()
580 PetscCall(MatView(TE, NULL)); in main()
581 PetscCall(MatView(PtAP, NULL)); in main()
582 PetscCall(MatAXPY(TE, -1.0, PtAP, SAME_NONZERO_PATTERN)); in main()
583 PetscCall(MatView(TE, NULL)); in main()
584 PetscCall(MatDestroy(&TE)); in main()
586 PetscCall(MatDestroy(&T)); in main()
589 PetscCall(MatRARtMultEqual(T2, R, RARt, 10, &flg)); in main()
590 if (!flg) PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with RARt (MATSHELL)\n")); in main()
593 PetscCall(MatRARt(T2, R, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
594 PetscCall(MatRARt(T2, R, MAT_REUSE_MATRIX, PETSC_DETERMINE, &T)); in main()
595 PetscCall(MatRARtMultEqual(T2, R, T, 10, &flg)); in main()
599 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with RARt (MATSHELL user defined)\n")); in main()
600 PetscCall(MatComputeOperator(T, MATDENSE, &TE)); in main()
601 PetscCall(MatView(TE, NULL)); in main()
603 PetscCall(MatView(RARt, NULL)); in main()
604 PetscCall(MatAXPY(TE, -1.0, RARt, SAME_NONZERO_PATTERN)); in main()
605 PetscCall(MatView(TE, NULL)); in main()
607 PetscCall(MatDestroy(&TE)); in main()
609 PetscCall(MatDestroy(&T)); in main()
614 PetscCall(MatTransposeMatMult(T2, X, MAT_REUSE_MATRIX, PETSC_DETERMINE, &B)); in main()
615 PetscCall(CheckLocal(B, X, aB, aX)); in main()
616 PetscCall(MatTransposeMatMultEqual(T2, X, B, 10, &flg)); in main()
618 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with reusage (MatTranspose, MATSHELL)\n")); in main()
619 PetscCall(MatTransposeMatMult(A, X, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
620 PetscCall(MatAXPY(T, -1.0, B, SAME_NONZERO_PATTERN)); in main()
621 PetscCall(MatView(T, NULL)); in main()
622 PetscCall(MatDestroy(&T)); in main()
626 PetscCall(MatMatTransposeMult(T2, Bt, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
627 PetscCall(CheckLocal(Bt, X, aBt, aX)); in main()
628 PetscCall(MatMatTransposeMultEqual(T2, Bt, X, 10, &flg)); in main()
630 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with reusage (MatMatTranspose, MATSHELL)\n")); in main()
631 PetscCall(MatMatTransposeMult(A, Bt, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
632 PetscCall(MatAXPY(T, -1.0, X, SAME_NONZERO_PATTERN)); in main()
633 PetscCall(MatView(T, NULL)); in main()
634 PetscCall(MatDestroy(&T)); in main()
637 PetscCall(MatDestroy(&T2)); in main()
642 PetscCall(MatCreateNest(PETSC_COMM_WORLD, 1, NULL, 1, NULL, &A, &NA)); in main()
643 PetscCall(MatViewFromOptions(NA, NULL, "-NA_view")); in main()
644 PetscCall(MatMatMult(NA, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
645 PetscCall(CheckLocal(B, X, aB, aX)); in main()
646 PetscCall(MatMatMultEqual(NA, B, X, 10, &flg)); in main()
648 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with Nest\n")); in main()
649 PetscCall(MatMatMult(NA, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
650 PetscCall(MatAXPY(T, -1.0, X, SAME_NONZERO_PATTERN)); in main()
651 PetscCall(MatView(T, NULL)); in main()
652 PetscCall(MatDestroy(&T)); in main()
654 PetscCall(MatDestroy(&NA)); in main()
660 PetscCall(MatCreateTranspose(A, &TA)); in main()
661 PetscCall(MatMatMult(TA, X, MAT_REUSE_MATRIX, PETSC_DETERMINE, &B)); in main()
662 PetscCall(CheckLocal(B, X, aB, aX)); in main()
663 PetscCall(MatMatMultEqual(TA, X, B, 10, &flg)); in main()
665 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with Transpose\n")); in main()
666 PetscCall(MatMatMult(TA, X, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
667 PetscCall(MatAXPY(T, -1.0, B, SAME_NONZERO_PATTERN)); in main()
668 PetscCall(MatView(T, NULL)); in main()
669 PetscCall(MatDestroy(&T)); in main()
671 PetscCall(MatDestroy(&TA)); in main()
677 PetscCall(MatCreateHermitianTranspose(A, &TA)); in main()
678 PetscCall(MatMatMult(TA, X, MAT_REUSE_MATRIX, PETSC_DETERMINE, &B)); in main()
679 PetscCall(CheckLocal(B, X, aB, aX)); in main()
680 PetscCall(MatMatMultEqual(TA, X, B, 10, &flg)); in main()
682 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with Transpose\n")); in main()
683 PetscCall(MatMatMult(TA, X, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
684 PetscCall(MatAXPY(T, -1.0, B, SAME_NONZERO_PATTERN)); in main()
685 PetscCall(MatView(T, NULL)); in main()
686 PetscCall(MatDestroy(&T)); in main()
688 PetscCall(MatDestroy(&TA)); in main()
694 PetscCall(MatCreateTranspose(A, &TA)); in main()
695 PetscCall(MatCreateTranspose(TA, &TTA)); in main()
696 PetscCall(MatMatMult(TTA, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
697 PetscCall(CheckLocal(B, X, aB, aX)); in main()
698 PetscCall(MatMatMultEqual(TTA, B, X, 10, &flg)); in main()
700 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with Transpose(Transpose)\n")); in main()
701 PetscCall(MatMatMult(TTA, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
702 PetscCall(MatAXPY(T, -1.0, X, SAME_NONZERO_PATTERN)); in main()
703 PetscCall(MatView(T, NULL)); in main()
704 PetscCall(MatDestroy(&T)); in main()
706 PetscCall(MatDestroy(&TA)); in main()
707 PetscCall(MatDestroy(&TTA)); in main()
713 PetscCall(MatMatMult(A, B, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &AB)); in main()
714 PetscCall(MatMatMult(A, B, MAT_REUSE_MATRIX, PETSC_DETERMINE, &X)); in main()
715 PetscCall(CheckLocal(B, X, aB, aX)); in main()
717 PetscCall(MatMatMult(A, X, MAT_REUSE_MATRIX, PETSC_DETERMINE, &B)); in main()
719 PetscCall(MatTransposeMatMult(A, X, MAT_REUSE_MATRIX, PETSC_DETERMINE, &B)); in main()
721 PetscCall(CheckLocal(B, X, aB, aX)); in main()
722 PetscCall(MatDestroy(&AB)); in main()
728 PetscCall(MatCreateNormal(A, &AtA)); in main()
729 PetscCall(MatDuplicate(X, MAT_DO_NOT_COPY_VALUES, &C)); in main()
730 PetscCall(MatDuplicate(B, MAT_DO_NOT_COPY_VALUES, &D)); in main()
731 PetscCall(MatDuplicate(B, MAT_DO_NOT_COPY_VALUES, &D2)); in main()
732 PetscCall(MatSetRandom(B, NULL)); in main()
733 PetscCall(MatSetRandom(C, NULL)); in main()
734 PetscCall(MatSetRandom(D, NULL)); in main()
735 PetscCall(MatSetRandom(D2, NULL)); in main()
736 PetscCall(MatProductCreateWithMat(A, B, NULL, C)); in main()
737 PetscCall(MatProductSetType(C, MATPRODUCT_AB)); in main()
738 PetscCall(MatProductSetFromOptions(C)); in main()
739 PetscCall(MatProductSymbolic(C)); in main()
740 PetscCall(MatProductCreateWithMat(A, C, NULL, D)); in main()
741 PetscCall(MatProductSetType(D, MATPRODUCT_AtB)); in main()
742 PetscCall(MatProductSetFromOptions(D)); in main()
743 PetscCall(MatProductSymbolic(D)); in main()
744 PetscCall(MatProductNumeric(C)); in main()
745 PetscCall(MatMatMultEqual(A, B, C, 10, &flg)); in main()
747 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with Normal (AB != C)\n")); in main()
748 PetscCall(MatView(A, NULL)); in main()
749 PetscCall(MatView(B, NULL)); in main()
750 PetscCall(MatView(C, NULL)); in main()
752 PetscCall(MatProductNumeric(D)); in main()
753 PetscCall(MatMatMultEqual(AtA, B, D, 10, &flg)); in main()
755 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Error with Normal (2)\n")); in main()
756 PetscCall(MatMatMult(AtA, C, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &T)); in main()
757 PetscCall(MatView(D, NULL)); in main()
758 PetscCall(MatView(T, NULL)); in main()
759 PetscCall(MatAXPY(T, -1.0, D, SAME_NONZERO_PATTERN)); in main()
760 PetscCall(MatView(T, NULL)); in main()
761 PetscCall(MatDestroy(&T)); in main()
763 PetscCall(MatDestroy(&C)); in main()
764 PetscCall(MatDestroy(&D)); in main()
765 PetscCall(MatDestroy(&D2)); in main()
766 PetscCall(MatDestroy(&AtA)); in main()
769 PetscCall(MatDestroy(&X)); in main()
770 PetscCall(MatDestroy(&Bt)); in main()
771 PetscCall(MatDestroy(&B)); in main()
772 PetscCall(MatDestroy(&A)); in main()
773 PetscCall(MatDestroy(&R)); in main()
774 PetscCall(MatDestroy(&PtAP)); in main()
775 PetscCall(MatDestroy(&RARt)); in main()
776 PetscCall(PetscFree(dataX)); in main()
777 PetscCall(PetscFree(dataB)); in main()
778 PetscCall(PetscFree(dataR)); in main()
779 PetscCall(PetscFree(dataBt)); in main()
780 PetscCall(PetscFinalize()); in main()