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