xref: /petsc/src/vec/is/sf/tests/ex1f.F90 (revision 9b88ac225e01f016352a5f4cd90e158abe5f5675)
1252985aeSJunchao Zhang!
2252985aeSJunchao Zhang!  Tests VecScatterCreateToAll Fortran stub
3252985aeSJunchao Zhang#include <petsc/finclude/petscvec.h>
4*c5e229c2SMartin Diehlprogram main
5252985aeSJunchao Zhang  use petscvec
6252985aeSJunchao Zhang  implicit none
7252985aeSJunchao Zhang
8252985aeSJunchao Zhang  PetscErrorCode ierr
977433607SBarry Smith  PetscInt nlocal, row, i1
10252985aeSJunchao Zhang  PetscScalar num
11252985aeSJunchao Zhang  PetscMPIInt rank
12252985aeSJunchao Zhang  Vec v1, v2
13252985aeSJunchao Zhang  VecScatter toall
14252985aeSJunchao Zhang
15d8606c27SBarry Smith  PetscCallA(PetscInitialize(ierr))
16d8606c27SBarry Smith  PetscCallMPIA(MPI_Comm_rank(PETSC_COMM_WORLD, rank, ierr))
17252985aeSJunchao Zhang
18252985aeSJunchao Zhang  nlocal = 1
1977433607SBarry Smith  i1 = 1
2077433607SBarry Smith  PetscCallA(VecCreateFromOptions(PETSC_COMM_WORLD, PETSC_NULL_CHARACTER, i1, nlocal, PETSC_DECIDE, v1, ierr))
21252985aeSJunchao Zhang
22252985aeSJunchao Zhang  row = rank
23252985aeSJunchao Zhang  num = rank
24d8606c27SBarry Smith  PetscCallA(VecSetValue(v1, row, num, INSERT_VALUES, ierr))
25d8606c27SBarry Smith  PetscCallA(VecAssemblyBegin(v1, ierr))
26d8606c27SBarry Smith  PetscCallA(VecAssemblyEnd(v1, ierr))
27252985aeSJunchao Zhang
28d8606c27SBarry Smith  PetscCallA(VecScatterCreateToAll(v1, toall, v2, ierr))
29252985aeSJunchao Zhang
30d8606c27SBarry Smith  PetscCallA(VecScatterBegin(toall, v1, v2, INSERT_VALUES, SCATTER_FORWARD, ierr))
31d8606c27SBarry Smith  PetscCallA(VecScatterEnd(toall, v1, v2, INSERT_VALUES, SCATTER_FORWARD, ierr))
32252985aeSJunchao Zhang
33d8606c27SBarry Smith  PetscCallA(VecScatterDestroy(toall, ierr))
34f0b74427SPierre Jolivet! Destroy v2 and then re-create it in VecScatterCreateToAll() to test if PETSc can differentiate NULL projects with destroyed objects
35d8606c27SBarry Smith  PetscCallA(VecDestroy(v2, ierr))
361fb7b255SJunchao Zhang
37d8606c27SBarry Smith  PetscCallA(VecScatterCreateToAll(v1, toall, v2, ierr))
38d8606c27SBarry Smith  PetscCallA(VecScatterBegin(toall, v1, v2, INSERT_VALUES, SCATTER_FORWARD, ierr))
39d8606c27SBarry Smith  PetscCallA(VecScatterEnd(toall, v1, v2, INSERT_VALUES, SCATTER_FORWARD, ierr))
401fb7b255SJunchao Zhang
414820e4eaSBarry Smith  if (rank == 2) then
42d8606c27SBarry Smith    PetscCallA(PetscObjectSetName(v2, 'v2', ierr))
43d8606c27SBarry Smith    PetscCallA(VecView(v2, PETSC_VIEWER_STDOUT_SELF, ierr))
44252985aeSJunchao Zhang  end if
45252985aeSJunchao Zhang
46d8606c27SBarry Smith  PetscCallA(VecScatterDestroy(toall, ierr))
47d8606c27SBarry Smith  PetscCallA(VecDestroy(v1, ierr))
48d8606c27SBarry Smith  PetscCallA(VecDestroy(v2, ierr))
491fb7b255SJunchao Zhang! It is OK to destroy again
50d8606c27SBarry Smith  PetscCallA(VecDestroy(v2, ierr))
51252985aeSJunchao Zhang
52d8606c27SBarry Smith  PetscCallA(PetscFinalize(ierr))
53252985aeSJunchao Zhangend
54252985aeSJunchao Zhang
55252985aeSJunchao Zhang!/*TEST
56252985aeSJunchao Zhang!
57252985aeSJunchao Zhang!     test:
58252985aeSJunchao Zhang!       nsize: 4
59252985aeSJunchao Zhang!
60252985aeSJunchao Zhang!TEST*/
61