Actual source code: ex7f.F
1: !
2: !
3: subroutine ex7f(vec,comm)
5: #include include/finclude/petsc.h
6: #include include/finclude/petscvec.h
7: !
8: ! This routine demonstates how a computational module may be written
9: ! in Fortran and called from a C routine, passing down PETSc objects.
10: !
12: PetscScalar two
13: Vec vec
14: MPI_Comm comm
15: PetscErrorCode ierr
16: PetscMPIInt rank
18: two = 2.0
20: !
21: ! The Objects vec,comm created in a C routine are now
22: ! used in fortran routines.
23: !
24: call VecSet(vec,two,ierr)
25: call MPI_Comm_rank(comm,rank,ierr)
27: !
28: ! Now call C routine from Fortran, passing in the vector, communicator
29: !
30: call ex7c(vec,comm,ierr)
31: !
32: ! IO from the fortran routines may cause all kinds of
33: ! grief while linking. *_SYS_LIB in PETSC_ARCH/variables is supporsed
34: ! to take care of it.
35: !
36: 100 format ('[',i1,']',' Calling VecView from Fortran')
37: write(6,100) rank
38: !
39: ! Now Call a Petsc Routine from Fortran
40: !
41: call VecView(vec,PETSC_VIEWER_STDOUT_WORLD,ierr)
42: return
43: end
45: