Actual source code: eptorsion2f.h

      1: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      2: !             Include file for program eptorsion2f.F
      3: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      4: !
      5: !  This program uses CPP for preprocessing, as indicated by the use of
      6: !  TAO include files in the directories $TAO_DIR/include/finclude and
      7: !  $PETSC_DIR/include/finclude.  This convention enables use of the CPP
      8: !  preprocessor, which allows the use of the #include statements that
      9: !  define TAO objects and variables.
     10: !
     11: !  Since one must be very careful to include each file no more than once
     12: !  in a Fortran routine, application programmers must explicitly list
     13: !  each file needed for the various TAO and PETSc components within their
     14: !  program (unlike the C/C++ interface).
     15: !
     16: !  See the Fortran section of the PETSc users manual for details.
     17: !
     18: !  The following include statements are generally used in TAO programs:
     19: !     tao_solver.h - TAO solvers
     20: !     petscksp.h   - Krylov subspace methods
     21: !     petscpc.h    - preconditioners
     22: !     petscmat.h   - matrices
     23: !     petscvec.h   - vectors
     24: !     petsc.h      - basic PETSc routines
     25: !  In addition, we need the following for use of distributed arrays and
     26: !  index sets:
     27: !     petscda.h    - distributed arrays (DA)
     28: !     petscis.h    - index sets (IS)

     30: #include "include/finclude/petsc.h"
     31: #include "include/finclude/petscvec.h"
     32: #include "include/finclude/petscmat.h"
     33: #include "include/finclude/petscksp.h"
     34: #include "include/finclude/petscpc.h"
     35: #include "include/finclude/petscsnes.h"
     36: #include "include/finclude/petscda.h"
     37: #include "include/finclude/petscis.h"
     38: #include "include/finclude/tao_solver.h"

     40: !  Common blocks:
     41: !  In this example we use common blocks to store data needed by the
     42: !  application-provided call-back routines, FormFunction(), FormGradient(),
     43: !  and FormHessian().  Note that we can store (pointers to) TAO objects
     44: !  within these common blocks.
     45: !
     46: !  common /params/ - contains parameters for the global application
     47: !     mx, my     - global discretization in x- and y-directions
     48: !     param      - nonlinearity parameter
     49: !
     50: !  common /pdata/ - contains some parallel data
     51: !     localX     - local work vector (including ghost points)
     52: !     localS     - local work vector (including ghost points)
     53: !     da         - distributed array
     54: !
     55:       Vec              localX
     56:       DA               da
     57:       double precision param
     58:       integer          mx, my

     60:       common /params/ param,mx,my
     61:       common /pdata/  da,localX

     63: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -