1 2 static char help[] = "Tests MatMPIBAIJ format in sequential run \n"; 3 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; 11 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)); 16 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)); 23 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)); 29 30 /* Convert A to AIJ format */ 31 PetscCall(MatConvert(A, MATAIJ, MAT_INITIAL_MATRIX, &B)); 32 33 PetscCall(MatDestroy(&A)); 34 PetscCall(MatDestroy(&B)); 35 PetscCall(PetscFinalize()); 36 return 0; 37 } 38 39 /*TEST 40 41 test: 42 output_file: output/ex160.out 43 44 TEST*/ 45