Actual source code: ex105f.F90

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

  8:   PetscErrorCode ierr
  9:   PetscInt :: i, j
 10:   PetscInt, parameter :: one = 1, twelve = 12
 11:   Mat m
 12:   PetscScalar, parameter :: value = 3.0

 14:   PetscCallA(PetscInitialize(ierr))
 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:   i = 4
 21:   PetscCallA(MatSetValuesMPIAIJ(m, one, [i], one, [i], [value], ADD_VALUES, ierr))
 22:   i = 5
 23:   j = 7
 24:   PetscCallA(MatSetValuesMPIAIJ(m, one, [i], one, [j], [value], ADD_VALUES, ierr))
 25:   i = 10
 26:   j = 9
 27:   PetscCallA(MatSetValuesMPIAIJ(m, one, [i], one, [j], [value], ADD_VALUES, ierr))
 28:   PetscCallA(MatAssemblyBegin(m, MAT_FINAL_ASSEMBLY, ierr))
 29:   PetscCallA(MatAssemblyEnd(m, MAT_FINAL_ASSEMBLY, ierr))

 31:   PetscCallA(MatDestroy(m, ierr))
 32:   PetscCallA(PetscFinalize(ierr))
 33: end

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