Actual source code: ex322.c
1: static char help[] = "Tests MatCopy() from MATDENSE into a matrix of another type.\n\n";
3: #include <petscmat.h>
5: int main(int argc, char **args)
6: {
7: Mat A, B;
8: char type[256] = MATAIJ;
9: PetscBool equal;
11: PetscFunctionBeginUser;
12: PetscCall(PetscInitialize(&argc, &args, NULL, help));
13: PetscCall(PetscOptionsGetString(NULL, NULL, "-type", type, sizeof(type), NULL));
14: PetscCall(MatCreateDense(PETSC_COMM_WORLD, PETSC_DECIDE, PETSC_DECIDE, 6, 6, NULL, &A));
15: PetscCall(MatSetRandom(A, NULL));
16: PetscCall(MatConvert(A, type, MAT_INITIAL_MATRIX, &B));
17: PetscCall(MatZeroEntries(B));
18: PetscCall(MatCopy(A, B, SAME_NONZERO_PATTERN));
19: PetscCall(MatMultEqual(A, B, 3, &equal));
20: PetscCheck(equal, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "MatCopy() produced incorrect values");
21: PetscCall(MatDestroy(&B));
22: PetscCall(MatDestroy(&A));
23: PetscCall(PetscFinalize());
24: return 0;
25: }
27: /*TEST
29: test:
30: nsize: 2
31: args: -type aij
32: output_file: output/empty.out
34: TEST*/