1252985aeSJunchao Zhang! 2252985aeSJunchao Zhang! Tests VecScatterCreateToAll Fortran stub 3252985aeSJunchao Zhang program main 4252985aeSJunchao Zhang#include <petsc/finclude/petscvec.h> 5252985aeSJunchao Zhang use petscvec 6252985aeSJunchao Zhang implicit none 7252985aeSJunchao Zhang 8252985aeSJunchao Zhang PetscErrorCode ierr 9252985aeSJunchao Zhang PetscInt nlocal, row 10252985aeSJunchao Zhang PetscScalar num 11252985aeSJunchao Zhang PetscMPIInt rank 12252985aeSJunchao Zhang Vec v1, v2 13252985aeSJunchao Zhang VecScatter toall 14252985aeSJunchao Zhang 15*d8606c27SBarry Smith PetscCallA(PetscInitialize(ierr)) 16*d8606c27SBarry Smith PetscCallMPIA(MPI_Comm_rank(PETSC_COMM_WORLD,rank,ierr)) 17252985aeSJunchao Zhang 18252985aeSJunchao Zhang nlocal = 1 19*d8606c27SBarry Smith PetscCallA(VecCreateMPI(PETSC_COMM_WORLD,nlocal,PETSC_DECIDE,v1,ierr)) 20252985aeSJunchao Zhang 21252985aeSJunchao Zhang row = rank 22252985aeSJunchao Zhang num = rank 23*d8606c27SBarry Smith PetscCallA(VecSetValue(v1,row,num,INSERT_VALUES,ierr)) 24*d8606c27SBarry Smith PetscCallA(VecAssemblyBegin(v1,ierr)) 25*d8606c27SBarry Smith PetscCallA(VecAssemblyEnd(v1,ierr)) 26252985aeSJunchao Zhang 27*d8606c27SBarry Smith PetscCallA(VecScatterCreateToAll(v1,toall,v2,ierr)) 28252985aeSJunchao Zhang 29*d8606c27SBarry Smith PetscCallA(VecScatterBegin(toall,v1,v2,INSERT_VALUES,SCATTER_FORWARD,ierr)) 30*d8606c27SBarry Smith PetscCallA(VecScatterEnd(toall,v1,v2,INSERT_VALUES,SCATTER_FORWARD,ierr)) 31252985aeSJunchao Zhang 32*d8606c27SBarry Smith PetscCallA(VecScatterDestroy(toall,ierr)) 331fb7b255SJunchao Zhang! Destroy v2 and then re-create it in VecScatterCreateToAll() to test if petsc can differentiate NULL projects with destroyed objects 34*d8606c27SBarry Smith PetscCallA(VecDestroy(v2,ierr)) 351fb7b255SJunchao Zhang 36*d8606c27SBarry Smith PetscCallA(VecScatterCreateToAll(v1,toall,v2,ierr)) 37*d8606c27SBarry Smith PetscCallA(VecScatterBegin(toall,v1,v2,INSERT_VALUES,SCATTER_FORWARD,ierr)) 38*d8606c27SBarry Smith PetscCallA(VecScatterEnd(toall,v1,v2,INSERT_VALUES,SCATTER_FORWARD,ierr)) 391fb7b255SJunchao Zhang 40252985aeSJunchao Zhang if (rank.eq.2) then 41*d8606c27SBarry Smith PetscCallA(PetscObjectSetName(v2, 'v2',ierr)) 42*d8606c27SBarry Smith PetscCallA(VecView(v2,PETSC_VIEWER_STDOUT_SELF,ierr)) 43252985aeSJunchao Zhang end if 44252985aeSJunchao Zhang 45*d8606c27SBarry Smith PetscCallA(VecScatterDestroy(toall,ierr)) 46*d8606c27SBarry Smith PetscCallA(VecDestroy(v1,ierr)) 47*d8606c27SBarry Smith PetscCallA(VecDestroy(v2,ierr)) 481fb7b255SJunchao Zhang! It is OK to destroy again 49*d8606c27SBarry Smith PetscCallA(VecDestroy(v2,ierr)) 50252985aeSJunchao Zhang 51*d8606c27SBarry Smith PetscCallA(PetscFinalize(ierr)) 52252985aeSJunchao Zhang end 53252985aeSJunchao Zhang 54252985aeSJunchao Zhang!/*TEST 55252985aeSJunchao Zhang! 56252985aeSJunchao Zhang! test: 57252985aeSJunchao Zhang! nsize: 4 58252985aeSJunchao Zhang! 59252985aeSJunchao Zhang!TEST*/ 60