1! 2! Program to test PetscSubcomm. 3! 4 program main 5 6#include <petsc/finclude/petscsys.h> 7 use petscsys 8 implicit none 9 10 PetscErrorCode ierr 11 PetscSubcomm r 12 PetscMPIInt rank,size 13 MPI_Comm scomm 14 15 PetscCallA(PetscInitialize(ierr)) 16 PetscCallMPIA(MPI_Comm_size(PETSC_COMM_WORLD,size,ierr)) 17! if (size .ne. 2) SETERRA(PETSC_COMM_WORLD,PETSC_ERR_ARG_SIZ,'Two ranks only') 18 PetscCallMPIA(MPI_Comm_rank(PETSC_COMM_WORLD,rank,ierr)) 19 PetscCallA(PetscSubcommCreate(PETSC_COMM_WORLD,r,ierr)) 20 PetscCallA(PetscSubcommSetFromOptions(r,ierr)) 21 PetscCallA(PetscSubcommSetTypeGeneral(r,rank,rank,ierr)) 22 23 PetscCallA(PetscSubcommGetChild(r,scomm,ierr)) 24 PetscCallA(PetscSubcommView(r,PETSC_VIEWER_STDOUT_WORLD,ierr)) 25 PetscCallA(PetscSubcommDestroy(r,ierr)) 26 PetscCallA(PetscFinalize(ierr)) 27 end 28 29! 30!/*TEST 31! 32! test: 33! nsize: 2 34! 35!TEST*/ 36