1*c080761bSJose E. Roman! Test MatCreateMPIAdj() with NULL argument 'values' 2*c080761bSJose E. Roman 3*c080761bSJose E. Romanprogram main 4*c080761bSJose E. Roman#include <petsc/finclude/petscmat.h> 5*c080761bSJose E. Romanuse petscmat 6*c080761bSJose E. Romanimplicit none 7*c080761bSJose E. Roman 8*c080761bSJose E. Roman Mat :: mesh,dual 9*c080761bSJose E. Roman MatPartitioning :: part 10*c080761bSJose E. Roman IS :: is 11*c080761bSJose E. Roman PetscInt,parameter :: Nvertices=6,ncells=2,two=2 12*c080761bSJose E. Roman PetscInt :: ii(3),jj(6) 13*c080761bSJose E. Roman PetscMPIInt :: sz,rnk 14*c080761bSJose E. Roman PetscErrorCode :: ierr 15*c080761bSJose E. Roman 16*c080761bSJose E. Roman PetscCallA(PetscInitialize(ierr)) 17*c080761bSJose E. Roman 18*c080761bSJose E. Roman PetscCallMPIA(MPI_Comm_size(PETSC_COMM_WORLD,sz,ierr)) 19*c080761bSJose E. Roman PetscCheckA(sz.eq.2,PETSC_COMM_WORLD,PETSC_ERR_WRONG_MPI_SIZE,'This example is for exactly two processes') 20*c080761bSJose E. Roman PetscCallMPIA(MPI_Comm_rank(PETSC_COMM_WORLD,rnk,ierr)) 21*c080761bSJose E. Roman ii(1) = 0 22*c080761bSJose E. Roman ii(2) = 3 23*c080761bSJose E. Roman ii(3) = 6 24*c080761bSJose E. Roman if (rnk.eq.0) then 25*c080761bSJose E. Roman jj(1) = 0 26*c080761bSJose E. Roman jj(2) = 1 27*c080761bSJose E. Roman jj(3) = 2 28*c080761bSJose E. Roman jj(4) = 1 29*c080761bSJose E. Roman jj(5) = 2 30*c080761bSJose E. Roman jj(6) = 3 31*c080761bSJose E. Roman else 32*c080761bSJose E. Roman jj(1) = 1 33*c080761bSJose E. Roman jj(2) = 4 34*c080761bSJose E. Roman jj(3) = 5 35*c080761bSJose E. Roman jj(4) = 1 36*c080761bSJose E. Roman jj(5) = 3 37*c080761bSJose E. Roman jj(6) = 5 38*c080761bSJose E. Roman endif 39*c080761bSJose E. Roman 40*c080761bSJose E. Roman PetscCallA(MatCreateMPIAdj(PETSC_COMM_WORLD,ncells,Nvertices,ii,jj,PETSC_NULL_INTEGER_ARRAY,mesh,ierr)) 41*c080761bSJose E. Roman PetscCallA(MatMeshToCellGraph(mesh,two,dual,ierr)) 42*c080761bSJose E. Roman PetscCallA(MatView(dual,PETSC_VIEWER_STDOUT_WORLD,ierr)) 43*c080761bSJose E. Roman 44*c080761bSJose E. Roman PetscCallA(MatPartitioningCreate(PETSC_COMM_WORLD,part,ierr)) 45*c080761bSJose E. Roman PetscCallA(MatPartitioningSetAdjacency(part,dual,ierr)) 46*c080761bSJose E. Roman PetscCallA(MatPartitioningSetFromOptions(part,ierr)) 47*c080761bSJose E. Roman PetscCallA(MatPartitioningApply(part,is,ierr)) 48*c080761bSJose E. Roman PetscCallA(ISView(is,PETSC_VIEWER_STDOUT_WORLD,ierr)) 49*c080761bSJose E. Roman PetscCallA(ISDestroy(is,ierr)) 50*c080761bSJose E. Roman PetscCallA(MatPartitioningDestroy(part,ierr)) 51*c080761bSJose E. Roman 52*c080761bSJose E. Roman PetscCallA(MatDestroy(mesh,ierr)) 53*c080761bSJose E. Roman PetscCallA(MatDestroy(dual,ierr)) 54*c080761bSJose E. Roman PetscCallA(PetscFinalize(ierr)) 55*c080761bSJose E. Roman 56*c080761bSJose E. Romanend program 57*c080761bSJose E. Roman 58*c080761bSJose E. Roman!/*TEST 59*c080761bSJose E. Roman! 60*c080761bSJose E. Roman! build: 61*c080761bSJose E. Roman! requires: parmetis 62*c080761bSJose E. Roman! 63*c080761bSJose E. Roman! test: 64*c080761bSJose E. Roman! nsize: 2 65*c080761bSJose E. Roman! 66*c080761bSJose E. Roman!TEST*/ 67