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;

 13:   PetscInitialize(&argc, &args, (char *)0, help);
 14:   MPI_Comm_rank(PETSC_COMM_WORLD, &rank);
 15:   MPI_Comm_size(PETSC_COMM_WORLD, &size);

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

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

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

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

 39: /*TEST

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

 44: TEST*/