Actual source code: ex105f.F90

  1: !
  2: !
  3: program main
  4: #include <petsc/finclude/petscmat.h>
  5:   use petscmat
  6:   implicit none

  8:   PetscErrorCode ierr
  9:   PetscInt i, one, twelve, j
 10:   Mat m
 11:   PetscScalar value

 13:   PetscCallA(PetscInitialize(ierr))
 14:   twelve = 12
 15:   PetscCallA(MatCreate(PETSC_COMM_WORLD, m, ierr))
 16:   PetscCallA(MatSetSizes(m, PETSC_DECIDE, PETSC_DECIDE, twelve, twelve, ierr))
 17:   PetscCallA(MatSetFromOptions(m, ierr))
 18:   PetscCallA(MatMPIAIJSetPreallocation(m, PETSC_DEFAULT_INTEGER, PETSC_NULL_INTEGER_ARRAY, PETSC_DEFAULT_INTEGER, PETSC_NULL_INTEGER_ARRAY, ierr))

 20:   value = 3.0
 21:   i = 4
 22:   one = 1
 23:   PetscCallA(MatSetValuesMPIAIJ(m, one, [i], one, [i], [value], ADD_VALUES, ierr))
 24:   i = 5
 25:   j = 7
 26:   PetscCallA(MatSetValuesMPIAIJ(m, one, [i], one, [j], [value], ADD_VALUES, ierr))
 27:   i = 10
 28:   j = 9
 29:   PetscCallA(MatSetValuesMPIAIJ(m, one, [i], one, [j], [value], ADD_VALUES, ierr))
 30:   PetscCallA(MatAssemblyBegin(m, MAT_FINAL_ASSEMBLY, ierr))
 31:   PetscCallA(MatAssemblyEnd(m, MAT_FINAL_ASSEMBLY, ierr))

 33:   PetscCallA(MatDestroy(m, ierr))
 34:   PetscCallA(PetscFinalize(ierr))
 35: end

 37: !/*TEST
 38: !
 39: !   test:
 40: !      nsize: 2
 41: !      output_file: output/empty.out
 42: !
 43: !TEST*/