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