xref: /petsc/src/dm/tests/ex1f.F90 (revision c4762a1b19cd2af06abeed90e8f9d34fb975dd94)
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