1*c4762a1bSJed Brown! 2*c4762a1bSJed Brown! Test the workaround for a bug in OpenMPI-2.1.1 on Ubuntu 18.04.2 3*c4762a1bSJed Brown! See https://lists.mcs.anl.gov/pipermail/petsc-dev/2019-July/024803.html 4*c4762a1bSJed Brown! 5*c4762a1bSJed Brown! Contributed-by: Fabian Jakub <Fabian.Jakub@physik.uni-muenchen.de> 6*c4762a1bSJed Brownprogram main 7*c4762a1bSJed Brown#include "petsc/finclude/petsc.h" 8*c4762a1bSJed Brown 9*c4762a1bSJed Brown use petsc 10*c4762a1bSJed Brown implicit none 11*c4762a1bSJed Brown 12*c4762a1bSJed Brown PetscInt, parameter :: Ndof=1, stencil_size=1 13*c4762a1bSJed Brown PetscInt, parameter :: Nx=3, Ny=3 14*c4762a1bSJed Brown PetscErrorCode :: myid, commsize, ierr 15*c4762a1bSJed Brown PetscScalar, pointer :: xv1d(:) 16*c4762a1bSJed Brown 17*c4762a1bSJed Brown type(tDM) :: da 18*c4762a1bSJed Brown type(tVec) :: gVec!, naturalVec 19*c4762a1bSJed Brown 20*c4762a1bSJed Brown 21*c4762a1bSJed Brown call PetscInitialize(PETSC_NULL_CHARACTER, ierr) 22*c4762a1bSJed Brown call mpi_comm_rank(PETSC_COMM_WORLD, myid, ierr) 23*c4762a1bSJed Brown call mpi_comm_size(PETSC_COMM_WORLD, commsize, ierr) 24*c4762a1bSJed Brown 25*c4762a1bSJed Brown call DMDACreate2d(PETSC_COMM_WORLD, & 26*c4762a1bSJed Brown DM_BOUNDARY_PERIODIC, DM_BOUNDARY_PERIODIC, & 27*c4762a1bSJed Brown DMDA_STENCIL_STAR, & 28*c4762a1bSJed Brown Nx, Ny, PETSC_DECIDE, PETSC_DECIDE, Ndof, stencil_size, & 29*c4762a1bSJed Brown PETSC_NULL_INTEGER, PETSC_NULL_INTEGER, da, ierr) 30*c4762a1bSJed Brown call DMSetup(da, ierr) 31*c4762a1bSJed Brown call DMSetFromOptions(da, ierr) 32*c4762a1bSJed Brown 33*c4762a1bSJed Brown call DMCreateGlobalVector(da, gVec, ierr) 34*c4762a1bSJed Brown call VecGetArrayF90(gVec, xv1d, ierr) 35*c4762a1bSJed Brown xv1d(:) = real(myid, kind(xv1d)) 36*c4762a1bSJed Brown !print *,myid, 'xv1d', xv1d, ':', xv1d 37*c4762a1bSJed Brown call VecRestoreArrayF90(gVec, xv1d, ierr) 38*c4762a1bSJed Brown 39*c4762a1bSJed Brown call PetscObjectViewFromOptions(gVec, PETSC_NULL_VEC, "-show_gVec", ierr) 40*c4762a1bSJed Brown 41*c4762a1bSJed Brown call VecDestroy(gVec, ierr) 42*c4762a1bSJed Brown call DMDestroy(da, ierr) 43*c4762a1bSJed Brown call PetscFinalize(ierr) 44*c4762a1bSJed Brownend program 45*c4762a1bSJed Brown 46*c4762a1bSJed Brown!/*TEST 47*c4762a1bSJed Brown! 48*c4762a1bSJed Brown! test: 49*c4762a1bSJed Brown! nsize: 9 50*c4762a1bSJed Brown! args: -show_gVec 51*c4762a1bSJed Brown!TEST*/ 52*c4762a1bSJed Brown 53