Actual source code: ex160.c

  1: static char help[] = "Tests MatMPIBAIJ format in sequential run \n";

  3: #include <petscmat.h>
  4: int main(int argc, char **args)
  5: {
  6:   Mat         A, B;
  7:   PetscInt    i, rstart, rend;
  8:   PetscMPIInt rank, size;
  9:   PetscScalar v;

 11:   PetscFunctionBeginUser;
 12:   PetscCall(PetscInitialize(&argc, &args, NULL, help));
 13:   PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD, &rank));
 14:   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size));

 16:   /* Create a MPIBAIJ matrix */
 17:   PetscCall(MatCreate(PETSC_COMM_WORLD, &A));
 18:   PetscCall(MatSetSizes(A, PETSC_DECIDE, PETSC_DECIDE, 32, 32));
 19:   PetscCall(MatSetType(A, MATMPIBAIJ));
 20:   PetscCall(MatSeqBAIJSetPreallocation(A, 2, 2, NULL));
 21:   PetscCall(MatMPIBAIJSetPreallocation(A, 2, 2, NULL, 2, NULL));

 23:   v = 1.0;
 24:   PetscCall(MatGetOwnershipRange(A, &rstart, &rend));
 25:   for (i = rstart; i < rend; i++) PetscCall(MatSetValues(A, 1, &i, 1, &i, &v, INSERT_VALUES));
 26:   PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY));
 27:   PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY));

 29:   /* Convert A to AIJ format */
 30:   PetscCall(MatConvert(A, MATAIJ, MAT_INITIAL_MATRIX, &B));

 32:   PetscCall(MatDestroy(&A));
 33:   PetscCall(MatDestroy(&B));
 34:   PetscCall(PetscFinalize());
 35:   return 0;
 36: }

 38: /*TEST

 40:    test:
 41:      output_file: output/ex160.out

 43: TEST*/