Actual source code: ex2f.h
petsc-3.4.2 2013-07-02

      1: !  This file contains include statements and a user-defined
      2: !  common block for application-specific data.  This file is
      3: !  included in each routine within the program ex2f.
      4: !
      5: !  The following include statements are generally used in TS Fortran
      6: !  programs:
      7: !     petscsys.h       - base PETSc routines
      8: !     petscvec.h    - vectors
      9: !     petscmat.h    - matrices
     10: !     petscksp.h    - Krylov subspace methods
     11: !     petscpc.h     - preconditioners
     12: !     petscsnes.h   - SNES interface
     13: !     petscts.h     - TS interface
     14: !     petscviewer.h - viewers
     15: !     petscdraw.h   - drawing
     16: !  In addition, we need the following for use of distributed arrays
     17: !     petscdmda.h     - distributed arrays (DMDAs)
     18: !  Other include statements may be needed if using additional PETSc
     19: !  routines in a Fortran program, e.g.,
     20: !     petscis.h     - index sets

     22: #include <finclude/petscsys.h>
     23: #include <finclude/petscvec.h>
     24: #include <finclude/petscdmda.h>
     25: #include <finclude/petscmat.h>
     26: #include <finclude/petscksp.h>
     27: #include <finclude/petscpc.h>
     28: #include <finclude/petscsnes.h>
     29: #include <finclude/petscts.h>
     30: #include <finclude/petscviewer.h>
     31: #include <finclude/petscdraw.h>

     33: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     34: !
     35: !  The application context to contain data needed by the
     36: !  application-provided call-back routines, RHSFunction(),
     37: !  RHSJacobian(), Monitor().  In this example the application context
     38: !  is a Fortran common block, /appctx/.  Note that we can store
     39: !  (pointers to) PETSc objects within this common block.
     40: !    appctx:  M         - total number of grid points
     41: !             da        - distributed array
     42: !             localwork - local work vector (including ghost points)
     43: !             solution  - solution vector
     44: !             comm      - communicator
     45: !             rank      - processor rank within communicator
     46: !             size      - number of processors
     47: !             debug     - flag (1 indicates debugging printouts)
     48: !
     49: !  Store other misc problem parameters in common block /params/
     50: !             h         - mesh width h = 1/(M-1)
     51: !
     52: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     53: !  Common block data:
     54:       DM    da
     55:       Vec   localwork,solution
     56:       Vec   u_local
     57:       PetscInt   M
     58:       PetscBool  debug
     59:       PetscMPIInt size,rank
     60:       PetscReal  zero_d0,one_d0
     61:       PetscReal  two_d0,four_d0
     62:       MPI_Comm   comm
     63:       PetscReal  h

     65:       common /params/ zero_d0,one_d0,two_d0,four_d0,h
     66:       common /appctx/ localwork,solution,da,u_local
     67:       common /appctx/ comm,rank,size,debug,M

     69: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -