Actual source code: ex160.c
2: static char help[] = "Tests MatMPIBAIJ format in sequential run \n";
4: #include <petscmat.h>
5: int main(int argc, char **args)
6: {
7: Mat A, B;
8: PetscInt i, rstart, rend;
9: PetscMPIInt rank, size;
10: PetscScalar v;
12: PetscFunctionBeginUser;
13: PetscCall(PetscInitialize(&argc, &args, (char *)0, help));
14: PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD, &rank));
15: PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size));
17: /* Create a MPIBAIJ matrix */
18: PetscCall(MatCreate(PETSC_COMM_WORLD, &A));
19: PetscCall(MatSetSizes(A, PETSC_DECIDE, PETSC_DECIDE, 32, 32));
20: PetscCall(MatSetType(A, MATMPIBAIJ));
21: PetscCall(MatSeqBAIJSetPreallocation(A, 2, 2, NULL));
22: PetscCall(MatMPIBAIJSetPreallocation(A, 2, 2, NULL, 2, NULL));
24: v = 1.0;
25: PetscCall(MatGetOwnershipRange(A, &rstart, &rend));
26: for (i = rstart; i < rend; i++) PetscCall(MatSetValues(A, 1, &i, 1, &i, &v, INSERT_VALUES));
27: PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY));
28: PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY));
30: /* Convert A to AIJ format */
31: PetscCall(MatConvert(A, MATAIJ, MAT_INITIAL_MATRIX, &B));
33: PetscCall(MatDestroy(&A));
34: PetscCall(MatDestroy(&B));
35: PetscCall(PetscFinalize());
36: return 0;
37: }
39: /*TEST
41: test:
42: output_file: output/ex160.out
44: TEST*/