xref: /petsc/src/sys/ftn-mod/petscsysmod.F90 (revision bfe80ac4a46d58cb7760074b25f5e81b2f541d8a)
16dd63270SBarry Smith        module petscmpi
26dd63270SBarry Smith#include <petscconf.h>
36dd63270SBarry Smith#include "petsc/finclude/petscsys.h"
46dd63270SBarry Smith#if defined(PETSC_HAVE_MPIUNI)
56dd63270SBarry Smith        use mpiuni
66dd63270SBarry Smith#else
76dd63270SBarry Smith#if defined(PETSC_HAVE_MPI_F90MODULE)
86dd63270SBarry Smith        use mpi
96dd63270SBarry Smith#else
106dd63270SBarry Smith#include "mpif.h"
116dd63270SBarry Smith#endif
126dd63270SBarry Smith#endif
136dd63270SBarry Smith
146dd63270SBarry Smith        public:: MPIU_REAL, MPIU_SUM, MPIU_SCALAR, MPIU_INTEGER
156dd63270SBarry Smith        public:: PETSC_COMM_WORLD, PETSC_COMM_SELF
166dd63270SBarry Smith
176dd63270SBarry Smith!   These values are for __float128 are handled in the common block (below)
186dd63270SBarry Smith!   and transmitted from the C code
196dd63270SBarry Smith
206dd63270SBarry Smith      integer4 :: MPIU_REAL
216dd63270SBarry Smith      integer4 :: MPIU_SUM
226dd63270SBarry Smith      integer4 :: MPIU_SCALAR
236dd63270SBarry Smith      integer4 :: MPIU_INTEGER
246dd63270SBarry Smith
256dd63270SBarry Smith      MPI_Comm::PETSC_COMM_WORLD = 0
266dd63270SBarry Smith      MPI_Comm::PETSC_COMM_SELF = 0
276dd63270SBarry Smith
286dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
296dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::MPIU_REAL
306dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::MPIU_SUM
316dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::MPIU_SCALAR
326dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::MPIU_INTEGER
336dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMM_SELF
346dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMM_WORLD
356dd63270SBarry Smith#endif
366dd63270SBarry Smith      end module
376dd63270SBarry Smith
386dd63270SBarry Smith! ------------------------------------------------------------------------
396dd63270SBarry Smith
406dd63270SBarry Smith        module petscsysdef
416dd63270SBarry Smith#if defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
426dd63270SBarry Smith        use petscmpi
436dd63270SBarry Smith#else
446dd63270SBarry Smith        use petscmpi, only: MPIU_REAL,MPIU_SUM,MPIU_SCALAR,MPIU_INTEGER,PETSC_COMM_WORLD,PETSC_COMM_SELF
456dd63270SBarry Smith#endif
466dd63270SBarry Smith      PetscReal,Parameter :: PetscReal_Private = 1.0
476dd63270SBarry Smith      Integer,Parameter   :: PETSC_REAL_KIND = Selected_Real_Kind(Precision(PetscReal_Private))
486dd63270SBarry Smith
496dd63270SBarry Smith      PetscBool, parameter :: PETSC_TRUE = .true.
506dd63270SBarry Smith      PetscBool, parameter :: PETSC_FALSE = .false.
516dd63270SBarry Smith
526dd63270SBarry Smith      PetscInt, parameter :: PETSC_DECIDE = -1
536dd63270SBarry Smith      PetscInt, parameter :: PETSC_DECIDE_INTEGER = -1
546dd63270SBarry Smith      PetscReal, parameter :: PETSC_DECIDE_REAL = -1.0d0
556dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
566dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE
576dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE_INTEGER
586dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE_REAL
596dd63270SBarry Smith#endif
606dd63270SBarry Smith
616dd63270SBarry Smith      PetscInt, parameter :: PETSC_DETERMINE = -1
626dd63270SBarry Smith      PetscInt, parameter :: PETSC_DETERMINE_INTEGER = -1
636dd63270SBarry Smith      PetscReal, parameter :: PETSC_DETERMINE_REAL = -1.0d0
646dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
656dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE
666dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE_INTEGER
676dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE_REAL
686dd63270SBarry Smith#endif
696dd63270SBarry Smith
706dd63270SBarry Smith      PetscInt, parameter :: PETSC_CURRENT = -2
716dd63270SBarry Smith      PetscInt, parameter :: PETSC_CURRENT_INTEGER = -2
726dd63270SBarry Smith      PetscReal, parameter :: PETSC_CURRENT_REAL = -2.0d0
736dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
746dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT
756dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT_INTEGER
766dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT_REAL
776dd63270SBarry Smith#endif
786dd63270SBarry Smith
796dd63270SBarry Smith      PetscInt, parameter :: PETSC_DEFAULT = -2
806dd63270SBarry Smith      PetscInt, parameter :: PETSC_DEFAULT_INTEGER = -2
816dd63270SBarry Smith      PetscReal, parameter :: PETSC_DEFAULT_REAL = -2.0d0
826dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
836dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT
846dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_INTEGER
856dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_REAL
866dd63270SBarry Smith#endif
876dd63270SBarry Smith     PetscFortranAddr, parameter :: PETSC_STDOUT = 0
886dd63270SBarry Smith!
896dd63270SBarry Smith!     PETSc DataTypes
906dd63270SBarry Smith!
916dd63270SBarry Smith#if defined(PETSC_USE_REAL_SINGLE)
926dd63270SBarry Smith#define PETSC_REAL PETSC_FLOAT
936dd63270SBarry Smith#elif defined(PETSC_USE_REAL___FLOAT128)
946dd63270SBarry Smith#define PETSC_REAL PETSC___FLOAT128
956dd63270SBarry Smith#else
966dd63270SBarry Smith#define PETSC_REAL PETSC_DOUBLE
976dd63270SBarry Smith#endif
986dd63270SBarry Smith#define PETSC_FORTRANADDR PETSC_LONG
996dd63270SBarry Smith
1006dd63270SBarry Smith!     PETSc mathematics include file. Defines certain basic mathematical
1016dd63270SBarry Smith!    constants and functions for working with single and double precision
1026dd63270SBarry Smith!    floating point numbers as well as complex and integers.
1036dd63270SBarry Smith!
1046dd63270SBarry Smith!     Representation of complex i
1056dd63270SBarry Smith!
1066dd63270SBarry Smith#if defined(PETSC_USE_REAL_SINGLE)
1076dd63270SBarry Smith      PetscComplex, parameter :: PETSC_i = (0.0e0,1.0e0)
1086dd63270SBarry Smith#else
1096dd63270SBarry Smith      PetscComplex, parameter :: PETSC_i = (0.0d0,1.0d0)
1106dd63270SBarry Smith#endif
1116dd63270SBarry Smith
1126dd63270SBarry Smith!      A PETSC_NULL_FUNCTION pointer
1136dd63270SBarry Smith!
1146dd63270SBarry Smith      external PETSC_NULL_FUNCTION
1156dd63270SBarry Smith!
1166dd63270SBarry Smith!     Possible arguments to PetscPushErrorHandler()
1176dd63270SBarry Smith!
1186dd63270SBarry Smith      external PETSCTRACEBACKERRORHANDLER
1196dd63270SBarry Smith      external PETSCABORTERRORHANDLER
1206dd63270SBarry Smith      external PETSCEMACSCLIENTERRORHANDLER
1216dd63270SBarry Smith      external PETSCATTACHDEBUGGERERRORHANDLER
1226dd63270SBarry Smith      external PETSCIGNOREERRORHANDLER
1236dd63270SBarry Smith!
1246dd63270SBarry Smith      external  PetscIsInfOrNanScalar
1256dd63270SBarry Smith      external  PetscIsInfOrNanReal
1266dd63270SBarry Smith      PetscBool PetscIsInfOrNanScalar
1276dd63270SBarry Smith      PetscBool PetscIsInfOrNanReal
1286dd63270SBarry Smith
1296dd63270SBarry Smith#include <../ftn/sys/petscall.h>
1306dd63270SBarry Smith
1316dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_STDOUT_SELF  = tPetscViewer(9)
1326dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_DRAW_WORLD   = tPetscViewer(4)
1336dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_DRAW_SELF    = tPetscViewer(5)
1346dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_SOCKET_WORLD = tPetscViewer(6)
1356dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_SOCKET_SELF  = tPetscViewer(7)
1366dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_STDOUT_WORLD = tPetscViewer(8)
1376dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_STDERR_WORLD = tPetscViewer(10)
1386dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_STDERR_SELF  = tPetscViewer(11)
1396dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_BINARY_WORLD = tPetscViewer(12)
1406dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_BINARY_SELF  = tPetscViewer(13)
1416dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_MATLAB_WORLD = tPetscViewer(14)
1426dd63270SBarry Smith      PetscViewer, parameter :: PETSC_VIEWER_MATLAB_SELF  = tPetscViewer(15)
1436dd63270SBarry Smith
1446dd63270SBarry Smith      PetscViewer PETSC_VIEWER_STDOUT_
1456dd63270SBarry Smith      PetscViewer PETSC_VIEWER_DRAW_
1466dd63270SBarry Smith      external PETSC_VIEWER_STDOUT_
1476dd63270SBarry Smith      external PETSC_VIEWER_DRAW_
1486dd63270SBarry Smith      external PetscViewerAndFormatDestroy
1496dd63270SBarry Smith
1506dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
1516dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDOUT_SELF
1526dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_DRAW_WORLD
1536dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_DRAW_SELF
1546dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_SOCKET_WORLD
1556dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_SOCKET_SELF
1566dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDOUT_WORLD
1576dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDERR_WORLD
1586dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDERR_SELF
1596dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_BINARY_WORLD
1606dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_BINARY_SELF
1616dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_MATLAB_WORLD
1626dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_MATLAB_SELF
1636dd63270SBarry Smith#endif
1646dd63270SBarry Smith
1656dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_MEM              = 55
1666dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_SUP              = 56
1676dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_SUP_SYS          = 57
1686dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ORDER            = 58
1696dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_SIG              = 59
1706dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_FP               = 72
1716dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_COR              = 74
1726dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_LIB              = 76
1736dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_PLIB             = 77
1746dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_MEMC             = 78
1756dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_CONV_FAILED      = 82
1766dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_USER             = 83
1776dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_SYS              = 88
1786dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_POINTER          = 70
1796dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_MPI_LIB_INCOMP   = 87
1806dd63270SBarry Smith
1816dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_SIZ          = 60
1826dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_IDN          = 61
1836dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_WRONG        = 62
1846dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_CORRUPT      = 64
1856dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_OUTOFRANGE   = 63
1866dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_BADPTR       = 68
1876dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_NOTSAMETYPE  = 69
1886dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_NOTSAMECOMM  = 80
1896dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_WRONGSTATE   = 73
1906dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_TYPENOTSET   = 89
1916dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_INCOMP       = 75
1926dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_NULL         = 85
1936dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_ARG_UNKNOWN_TYPE = 86
1946dd63270SBarry Smith
1956dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_FILE_OPEN        = 65
1966dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_FILE_READ        = 66
1976dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_FILE_WRITE       = 67
1986dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_FILE_UNEXPECTED  = 79
1996dd63270SBarry Smith
2006dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_MAT_LU_ZRPVT     = 71
2016dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_MAT_CH_ZRPVT     = 81
2026dd63270SBarry Smith
2036dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_INT_OVERFLOW     = 84
2046dd63270SBarry Smith
2056dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_FLOP_COUNT       = 90
2066dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_NOT_CONVERGED    = 91
2076dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_MISSING_FACTOR   = 92
2086dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_OPT_OVERWRITE    = 93
2096dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_WRONG_MPI_SIZE   = 94
2106dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_USER_INPUT       = 95
2116dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_GPU_RESOURCE     = 96
2126dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_GPU              = 97
2136dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_MPI              = 98
2146dd63270SBarry Smith      PetscErrorCode, parameter :: PETSC_ERR_RETURN           = 99
2156dd63270SBarry Smith
2166dd63270SBarry Smith        character(len = 80) :: PETSC_NULL_CHARACTER = ''
2176dd63270SBarry Smith        PetscInt PETSC_NULL_INTEGER, PETSC_NULL_INTEGER_ARRAY(1)
2186dd63270SBarry Smith        PetscInt, pointer :: PETSC_NULL_INTEGER_POINTER(:)
2196dd63270SBarry Smith        PetscScalar, pointer :: PETSC_NULL_SCALAR_POINTER(:)
2206dd63270SBarry Smith        PetscFortranDouble PETSC_NULL_DOUBLE
2216dd63270SBarry Smith        PetscScalar PETSC_NULL_SCALAR, PETSC_NULL_SCALAR_ARRAY(1)
2226dd63270SBarry Smith        PetscReal PETSC_NULL_REAL, PETSC_NULL_REAL_ARRAY(1)
2236dd63270SBarry Smith        PetscReal, pointer :: PETSC_NULL_REAL_POINTER(:)
2246dd63270SBarry Smith        PetscBool PETSC_NULL_BOOL
2256dd63270SBarry Smith        PetscEnum PETSC_NULL_ENUM
2266dd63270SBarry Smith        MPI_Comm  PETSC_NULL_MPI_COMM
2276dd63270SBarry Smith!
2286dd63270SBarry Smith!     Basic math constants
2296dd63270SBarry Smith!
2306dd63270SBarry Smith        PetscReal PETSC_PI
2316dd63270SBarry Smith        PetscReal PETSC_MAX_REAL
2326dd63270SBarry Smith        PetscReal PETSC_MIN_REAL
2336dd63270SBarry Smith        PetscReal PETSC_MACHINE_EPSILON
2346dd63270SBarry Smith        PetscReal PETSC_SQRT_MACHINE_EPSILON
2356dd63270SBarry Smith        PetscReal PETSC_SMALL
2366dd63270SBarry Smith        PetscReal PETSC_INFINITY
2376dd63270SBarry Smith        PetscReal PETSC_NINFINITY
2386dd63270SBarry Smith
2396dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
2406dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_CHARACTER
2416dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_INTEGER
2426dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_INTEGER_ARRAY
2436dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_INTEGER_POINTER
2446dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_SCALAR_POINTER
2456dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_REAL_POINTER
2466dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DOUBLE
2476dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_SCALAR
2486dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_SCALAR_ARRAY
2496dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_REAL
2506dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_REAL_ARRAY
2516dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_BOOL
2526dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ENUM
2536dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_MPI_COMM
2546dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_PI
2556dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_MAX_REAL
2566dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_MIN_REAL
2576dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_MACHINE_EPSILON
2586dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_SQRT_MACHINE_EPSILON
2596dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_SMALL
2606dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_INFINITY
2616dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NINFINITY
2626dd63270SBarry Smith#endif
2636dd63270SBarry Smith
2646dd63270SBarry Smith      type tPetscReal2d
2656dd63270SBarry Smith        sequence
2666dd63270SBarry Smith        PetscReal, dimension(:), pointer :: ptr
2676dd63270SBarry Smith      end type tPetscReal2D
2686dd63270SBarry Smith
2696dd63270SBarry Smith       end module
2706dd63270SBarry Smith
2716dd63270SBarry Smith!     ------------------------------------------------------------------------
2726dd63270SBarry Smith
2736dd63270SBarry Smith        module petscsys
2746dd63270SBarry Smith        use,intrinsic :: iso_c_binding
2756dd63270SBarry Smith        use petscsysdef
2766dd63270SBarry Smith
2776dd63270SBarry Smith#include <../src/sys/ftn-mod/petscsys.h90>
2786dd63270SBarry Smith#include <../src/sys/ftn-mod/petscviewer.h90>
2796dd63270SBarry Smith#include <../ftn/sys/petscall.h90>
2806dd63270SBarry Smith
2816dd63270SBarry Smith        interface PetscInitialize
2826dd63270SBarry Smith          module procedure PetscInitializeWithHelp, PetscInitializeNoHelp, PetscInitializeNoArguments
2836dd63270SBarry Smith        end interface
2846dd63270SBarry Smith
2856dd63270SBarry Smith      interface PetscSetFortranBasePointers
2866dd63270SBarry Smith         subroutine PetscSetFortranBasePointers(                        &
2876dd63270SBarry Smith     &     PETSC_NULL_CHARACTER,          &
2886dd63270SBarry Smith     &     PETSC_NULL_INTEGER,PETSC_NULL_SCALAR,                        &
2896dd63270SBarry Smith     &     PETSC_NULL_DOUBLE,PETSC_NULL_REAL,                           &
2906dd63270SBarry Smith     &     PETSC_NULL_BOOL,PETSC_NULL_ENUM,PETSC_NULL_FUNCTION,         &
2916dd63270SBarry Smith     &     PETSC_NULL_MPI_COMM,                                         &
2926dd63270SBarry Smith     &     PETSC_NULL_INTEGER_ARRAY,PETSC_NULL_SCALAR_ARRAY,            &
2936dd63270SBarry Smith     &     PETSC_NULL_REAL_ARRAY, APETSC_NULL_INTEGER_POINTER,           &
2946dd63270SBarry Smith     &     PETSC_NULL_SCALAR_POINTER, PETSC_NULL_REAL_POINTER)
2956dd63270SBarry Smith          character(*) PETSC_NULL_CHARACTER
2966dd63270SBarry Smith          PetscInt PETSC_NULL_INTEGER
2976dd63270SBarry Smith          PetscScalar PETSC_NULL_SCALAR
2986dd63270SBarry Smith          PetscFortranDouble PETSC_NULL_DOUBLE
2996dd63270SBarry Smith          PetscReal PETSC_NULL_REAL
3006dd63270SBarry Smith          PetscBool PETSC_NULL_BOOL
3016dd63270SBarry Smith          PetscEnum PETSC_NULL_ENUM
3026dd63270SBarry Smith          external PETSC_NULL_FUNCTION
3036dd63270SBarry Smith          MPI_Comm PETSC_NULL_MPI_COMM
3046dd63270SBarry Smith          PetscInt PETSC_NULL_INTEGER_ARRAY(*)
3056dd63270SBarry Smith          PetscScalar PETSC_NULL_SCALAR_ARRAY(*)
3066dd63270SBarry Smith          PetscReal PETSC_NULL_REAL_ARRAY(*)
3076dd63270SBarry Smith          PetscInt, pointer :: APETSC_NULL_INTEGER_POINTER(:)
3086dd63270SBarry Smith          PetscScalar, pointer :: PETSC_NULL_SCALAR_POINTER(:)
3096dd63270SBarry Smith          PetscReal, pointer :: PETSC_NULL_REAL_POINTER(:)
3106dd63270SBarry Smith         end subroutine PetscSetFortranBasePointers
3116dd63270SBarry Smith      end interface
3126dd63270SBarry Smith
3136dd63270SBarry Smith      interface PetscOptionsString
3146dd63270SBarry Smith      subroutine PetscOptionsString(string, text, man, default, value, flg, ierr)
3156dd63270SBarry Smith        character(*) string, text, man, default, value
3166dd63270SBarry Smith        PetscBool flg
3176dd63270SBarry Smith        PetscErrorCode ierr
3186dd63270SBarry Smith      end subroutine PetscOptionsString
3196dd63270SBarry Smith      end interface
3206dd63270SBarry Smith
3216dd63270SBarry Smith        Interface petscbinaryread
3226dd63270SBarry Smith        subroutine petscbinaryreadcomplex(fd,data,num,count,type,z)
3236dd63270SBarry Smith          import ePetscDataType
3246dd63270SBarry Smith          integer4 fd
3256dd63270SBarry Smith          PetscComplex data(*)
3266dd63270SBarry Smith          PetscInt num
3276dd63270SBarry Smith          PetscInt count
3286dd63270SBarry Smith          PetscDataType type
3296dd63270SBarry Smith          PetscErrorCode z
3306dd63270SBarry Smith        end subroutine
3316dd63270SBarry Smith        subroutine petscbinaryreadreal(fd,data,num,count,type,z)
3326dd63270SBarry Smith          import ePetscDataType
3336dd63270SBarry Smith          integer4 fd
3346dd63270SBarry Smith          PetscReal data(*)
3356dd63270SBarry Smith          PetscInt num
3366dd63270SBarry Smith          PetscInt count
3376dd63270SBarry Smith          PetscDataType type
3386dd63270SBarry Smith          PetscErrorCode z
3396dd63270SBarry Smith        end subroutine
3406dd63270SBarry Smith        subroutine petscbinaryreadint(fd,data,num,count,type,z)
3416dd63270SBarry Smith          import ePetscDataType
3426dd63270SBarry Smith          integer4 fd
3436dd63270SBarry Smith          PetscInt data(*)
3446dd63270SBarry Smith          PetscInt num
3456dd63270SBarry Smith          PetscInt count
3466dd63270SBarry Smith          PetscDataType type
3476dd63270SBarry Smith          PetscErrorCode z
3486dd63270SBarry Smith        end subroutine
3496dd63270SBarry Smith        subroutine petscbinaryreadcomplex1(fd,data,num,count,type,z)
3506dd63270SBarry Smith          import ePetscDataType
3516dd63270SBarry Smith          integer4 fd
3526dd63270SBarry Smith          PetscComplex data
3536dd63270SBarry Smith          PetscInt num
3546dd63270SBarry Smith          PetscInt count
3556dd63270SBarry Smith          PetscDataType type
3566dd63270SBarry Smith          PetscErrorCode z
3576dd63270SBarry Smith        end subroutine
3586dd63270SBarry Smith        subroutine petscbinaryreadreal1(fd,data,num,count,type,z)
3596dd63270SBarry Smith          import ePetscDataType
3606dd63270SBarry Smith          integer4 fd
3616dd63270SBarry Smith          PetscReal data
3626dd63270SBarry Smith          PetscInt num
3636dd63270SBarry Smith          PetscInt count
3646dd63270SBarry Smith          PetscDataType type
3656dd63270SBarry Smith          PetscErrorCode z
3666dd63270SBarry Smith        end subroutine
3676dd63270SBarry Smith        subroutine petscbinaryreadint1(fd,data,num,count,type,z)
3686dd63270SBarry Smith          import ePetscDataType
3696dd63270SBarry Smith          integer4 fd
3706dd63270SBarry Smith          PetscInt data
3716dd63270SBarry Smith          PetscInt num
3726dd63270SBarry Smith          PetscInt count
3736dd63270SBarry Smith          PetscDataType type
3746dd63270SBarry Smith          PetscErrorCode z
3756dd63270SBarry Smith        end subroutine
3766dd63270SBarry Smith        subroutine petscbinaryreadcomplexcnt(fd,data,num,count,type,z)
3776dd63270SBarry Smith          import ePetscDataType
3786dd63270SBarry Smith          integer4 fd
3796dd63270SBarry Smith          PetscComplex data(*)
3806dd63270SBarry Smith          PetscInt num
3816dd63270SBarry Smith          PetscInt count(1)
3826dd63270SBarry Smith          PetscDataType type
3836dd63270SBarry Smith          PetscErrorCode z
3846dd63270SBarry Smith        end subroutine
3856dd63270SBarry Smith        subroutine petscbinaryreadrealcnt(fd,data,num,count,type,z)
3866dd63270SBarry Smith          import ePetscDataType
3876dd63270SBarry Smith          integer4 fd
3886dd63270SBarry Smith          PetscReal data(*)
3896dd63270SBarry Smith          PetscInt num
3906dd63270SBarry Smith          PetscInt count(1)
3916dd63270SBarry Smith          PetscDataType type
3926dd63270SBarry Smith          PetscErrorCode z
3936dd63270SBarry Smith        end subroutine
3946dd63270SBarry Smith        subroutine petscbinaryreadintcnt(fd,data,num,count,type,z)
3956dd63270SBarry Smith          import ePetscDataType
3966dd63270SBarry Smith          integer4 fd
3976dd63270SBarry Smith          PetscInt data(*)
3986dd63270SBarry Smith          PetscInt num
3996dd63270SBarry Smith          PetscInt count(1)
4006dd63270SBarry Smith          PetscDataType type
4016dd63270SBarry Smith          PetscErrorCode z
4026dd63270SBarry Smith        end subroutine
4036dd63270SBarry Smith        subroutine petscbinaryreadcomplex1cnt(fd,data,num,count,type,z)
4046dd63270SBarry Smith          import ePetscDataType
4056dd63270SBarry Smith          integer4 fd
4066dd63270SBarry Smith          PetscComplex data
4076dd63270SBarry Smith          PetscInt num
4086dd63270SBarry Smith          PetscInt count(1)
4096dd63270SBarry Smith          PetscDataType type
4106dd63270SBarry Smith          PetscErrorCode z
4116dd63270SBarry Smith        end subroutine
4126dd63270SBarry Smith        subroutine petscbinaryreadreal1cnt(fd,data,num,count,type,z)
4136dd63270SBarry Smith          import ePetscDataType
4146dd63270SBarry Smith          integer4 fd
4156dd63270SBarry Smith          PetscReal data
4166dd63270SBarry Smith          PetscInt num
4176dd63270SBarry Smith          PetscInt count(1)
4186dd63270SBarry Smith          PetscDataType type
4196dd63270SBarry Smith          PetscErrorCode z
4206dd63270SBarry Smith        end subroutine
4216dd63270SBarry Smith        subroutine petscbinaryreadint1cnt(fd,data,num,count,type,z)
4226dd63270SBarry Smith          import ePetscDataType
4236dd63270SBarry Smith          integer4 fd
4246dd63270SBarry Smith          PetscInt data
4256dd63270SBarry Smith          PetscInt num
4266dd63270SBarry Smith          PetscInt count(1)
4276dd63270SBarry Smith          PetscDataType type
4286dd63270SBarry Smith          PetscErrorCode z
4296dd63270SBarry Smith        end subroutine
4306dd63270SBarry Smith        end Interface
4316dd63270SBarry Smith
4326dd63270SBarry Smith        Interface petscbinarywrite
4336dd63270SBarry Smith        subroutine petscbinarywritecomplex(fd,data,num,type,z)
4346dd63270SBarry Smith          import ePetscDataType
4356dd63270SBarry Smith          integer4 fd
4366dd63270SBarry Smith          PetscComplex data(*)
4376dd63270SBarry Smith          PetscInt num
4386dd63270SBarry Smith          PetscDataType type
4396dd63270SBarry Smith          PetscErrorCode z
4406dd63270SBarry Smith        end subroutine
4416dd63270SBarry Smith        subroutine petscbinarywritereal(fd,data,num,type,z)
4426dd63270SBarry Smith          import ePetscDataType
4436dd63270SBarry Smith          integer4 fd
4446dd63270SBarry Smith          PetscReal data(*)
4456dd63270SBarry Smith          PetscInt num
4466dd63270SBarry Smith          PetscDataType type
4476dd63270SBarry Smith          PetscErrorCode z
4486dd63270SBarry Smith        end subroutine
4496dd63270SBarry Smith        subroutine petscbinarywriteint(fd,data,num,type,z)
4506dd63270SBarry Smith          import ePetscDataType
4516dd63270SBarry Smith          integer4 fd
4526dd63270SBarry Smith          PetscInt data(*)
4536dd63270SBarry Smith          PetscInt num
4546dd63270SBarry Smith          PetscDataType type
4556dd63270SBarry Smith          PetscErrorCode z
4566dd63270SBarry Smith        end subroutine
4576dd63270SBarry Smith        subroutine petscbinarywritecomplex1(fd,data,num,type,z)
4586dd63270SBarry Smith          import ePetscDataType
4596dd63270SBarry Smith          integer4 fd
4606dd63270SBarry Smith          PetscComplex data
4616dd63270SBarry Smith          PetscInt num
4626dd63270SBarry Smith          PetscDataType type
4636dd63270SBarry Smith          PetscErrorCode z
4646dd63270SBarry Smith        end subroutine
4656dd63270SBarry Smith        subroutine petscbinarywritereal1(fd,data,num,type,z)
4666dd63270SBarry Smith          import ePetscDataType
4676dd63270SBarry Smith          integer4 fd
4686dd63270SBarry Smith          PetscReal data
4696dd63270SBarry Smith          PetscInt num
4706dd63270SBarry Smith          PetscDataType type
4716dd63270SBarry Smith          PetscErrorCode z
4726dd63270SBarry Smith        end subroutine
4736dd63270SBarry Smith        subroutine petscbinarywriteint1(fd,data,num,type,z)
4746dd63270SBarry Smith          import ePetscDataType
4756dd63270SBarry Smith          integer4 fd
4766dd63270SBarry Smith          PetscInt data
4776dd63270SBarry Smith          PetscInt num
4786dd63270SBarry Smith          PetscDataType type
4796dd63270SBarry Smith          PetscErrorCode z
4806dd63270SBarry Smith          end subroutine
4816dd63270SBarry Smith        end Interface
4826dd63270SBarry Smith
4836dd63270SBarry Smith      contains
4846dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
4856dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PetscInitializeWithHelp
4866dd63270SBarry Smith#endif
4876dd63270SBarry Smith      subroutine PetscInitializeWithHelp(filename,help,ierr)
4886dd63270SBarry Smith          character(len=*)           :: filename
4896dd63270SBarry Smith          character(len=*)           :: help
4906dd63270SBarry Smith          PetscErrorCode             :: ierr
4916dd63270SBarry Smith
4926dd63270SBarry Smith          if (filename .ne. PETSC_NULL_CHARACTER) then
4936dd63270SBarry Smith             call PetscInitializeF(trim(filename),help,ierr)
4946dd63270SBarry Smith             CHKERRQ(ierr)
4956dd63270SBarry Smith          else
4966dd63270SBarry Smith             call PetscInitializeF(filename,help,ierr)
4976dd63270SBarry Smith             CHKERRQ(ierr)
4986dd63270SBarry Smith          endif
4996dd63270SBarry Smith        end subroutine PetscInitializeWithHelp
5006dd63270SBarry Smith
5016dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
5026dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PetscInitializeNoHelp
5036dd63270SBarry Smith#endif
5046dd63270SBarry Smith        subroutine PetscInitializeNoHelp(filename,ierr)
5056dd63270SBarry Smith          character(len=*)           :: filename
5066dd63270SBarry Smith          PetscErrorCode             :: ierr
5076dd63270SBarry Smith
5086dd63270SBarry Smith          if (filename .ne. PETSC_NULL_CHARACTER) then
5096dd63270SBarry Smith             call PetscInitializeF(trim(filename),PETSC_NULL_CHARACTER,ierr)
5106dd63270SBarry Smith             CHKERRQ(ierr)
5116dd63270SBarry Smith          else
5126dd63270SBarry Smith             call PetscInitializeF(filename,PETSC_NULL_CHARACTER,ierr)
5136dd63270SBarry Smith             CHKERRQ(ierr)
5146dd63270SBarry Smith          endif
5156dd63270SBarry Smith        end subroutine PetscInitializeNoHelp
5166dd63270SBarry Smith
5176dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
5186dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT::PetscInitializeNoArguments
5196dd63270SBarry Smith#endif
5206dd63270SBarry Smith        subroutine PetscInitializeNoArguments(ierr)
5216dd63270SBarry Smith          PetscErrorCode             :: ierr
5226dd63270SBarry Smith
5236dd63270SBarry Smith          call PetscInitializeF(PETSC_NULL_CHARACTER,PETSC_NULL_CHARACTER,ierr)
5246dd63270SBarry Smith          CHKERRQ(ierr)
5256dd63270SBarry Smith          end subroutine PetscInitializeNoArguments
5266dd63270SBarry Smith
5276dd63270SBarry Smith#include <../ftn/sys/petscall.hf90>
5286dd63270SBarry Smith        end module
5296dd63270SBarry Smith
5306dd63270SBarry Smith        Subroutine F90ArraySetRealPointer(array, sz, j, T)
5316dd63270SBarry Smith          use petscsysdef
5326dd63270SBarry Smith          PetscInt                j,sz
5336dd63270SBarry Smith          PetscReal, target    :: array(1:sz)
5346dd63270SBarry Smith          PetscReal2d, pointer :: T(:)
5356dd63270SBarry Smith          T(j+1)%ptr=>array
5366dd63270SBarry Smith        End Subroutine
5376dd63270SBarry Smith#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
5386dd63270SBarry Smith!DEC$ ATTRIBUTES DLLEXPORT:: F90ArraySetRealPointer
5396dd63270SBarry Smith#endif
5406dd63270SBarry Smith
5416dd63270SBarry Smith!      ------------------------------------------------------------------------
5426dd63270SBarry Smith!      TODO: generate the modules below by looping over
5436dd63270SBarry Smith!            ftn/sys/XXX.h90
544*bfe80ac4SPierre Jolivet!            and skipping those in petscall.h
5456dd63270SBarry Smith
5466dd63270SBarry Smith        module petscbag
5476dd63270SBarry Smith        use petscsys
5486dd63270SBarry Smith#include <../include/petsc/finclude/petscbag.h>
5496dd63270SBarry Smith#include <../ftn/sys/petscbag.h>
5506dd63270SBarry Smith#include <../ftn/sys/petscbag.h90>
5516dd63270SBarry Smith        contains
5526dd63270SBarry Smith
5536dd63270SBarry Smith#include <../ftn/sys/petscbag.hf90>
5546dd63270SBarry Smith        end module
5556dd63270SBarry Smith
5566dd63270SBarry Smith!     ------------------------------------------------------------------------
5576dd63270SBarry Smith
5586dd63270SBarry Smith        module petscbm
5596dd63270SBarry Smith        use petscsys
5606dd63270SBarry Smith#include <../include/petsc/finclude/petscbm.h>
5616dd63270SBarry Smith#include <../ftn/sys/petscbm.h>
5626dd63270SBarry Smith#include <../ftn/sys/petscbm.h90>
5636dd63270SBarry Smith        contains
5646dd63270SBarry Smith
5656dd63270SBarry Smith#include <../ftn/sys/petscbm.hf90>
5666dd63270SBarry Smith       end module
5676dd63270SBarry Smith
5686dd63270SBarry Smith!     ------------------------------------------------------------------------
5696dd63270SBarry Smith
5706dd63270SBarry Smith        module petscmatlab
5716dd63270SBarry Smith        use petscsys
5726dd63270SBarry Smith#include <../include/petsc/finclude/petscmatlab.h>
5736dd63270SBarry Smith#include <../ftn/sys/petscmatlab.h>
5746dd63270SBarry Smith#include <../ftn/sys/petscmatlab.h90>
5756dd63270SBarry Smith
5766dd63270SBarry Smith        contains
5776dd63270SBarry Smith
5786dd63270SBarry Smith#include <../ftn/sys/petscmatlab.hf90>
5796dd63270SBarry Smith        end module
5806dd63270SBarry Smith
5816dd63270SBarry Smith!     ------------------------------------------------------------------------
5826dd63270SBarry Smith
5836dd63270SBarry Smith        module petscdraw
5846dd63270SBarry Smith        use petscsys
5856dd63270SBarry Smith#include <../include/petsc/finclude/petscdraw.h>
5866dd63270SBarry Smith#include <../ftn/sys/petscdraw.h>
5876dd63270SBarry Smith#include <../ftn/sys/petscdraw.h90>
5886dd63270SBarry Smith
5896dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_BASIC_COLORS = 33
5906dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_ROTATE = -1
5916dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_WHITE = 0
5926dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_BLACK = 1
5936dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_RED = 2
5946dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_GREEN = 3
5956dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_CYAN = 4
5966dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_BLUE = 5
5976dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_MAGENTA = 6
5986dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_AQUAMARINE = 7
5996dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_FORESTGREEN = 8
6006dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_ORANGE = 9
6016dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_VIOLET = 10
6026dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_BROWN = 11
6036dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_PINK = 12
6046dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_CORAL = 13
6056dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_GRAY = 14
6066dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_YELLOW = 15
6076dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_GOLD = 16
6086dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_LIGHTPINK = 17
6096dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_MEDIUMTURQUOISE = 18
6106dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_KHAKI = 19
6116dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_DIMGRAY = 20
6126dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_YELLOWGREEN = 21
6136dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_SKYBLUE = 22
6146dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_DARKGREEN = 23
6156dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_NAVYBLUE = 24
6166dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_SANDYBROWN = 25
6176dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_CADETBLUE = 26
6186dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_POWDERBLUE = 27
6196dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_DEEPPINK = 28
6206dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_THISTLE = 29
6216dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_LIMEGREEN = 30
6226dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_LAVENDERBLUSH = 31
6236dd63270SBarry Smith      PetscEnum, parameter :: PETSC_DRAW_PLUM = 32
6246dd63270SBarry Smith
6256dd63270SBarry Smith      contains
6266dd63270SBarry Smith
6276dd63270SBarry Smith#include <../ftn/sys/petscdraw.hf90>
6286dd63270SBarry Smith      end module
6296dd63270SBarry Smith
6306dd63270SBarry Smith!     ------------------------------------------------------------------------
6316dd63270SBarry Smith
6326dd63270SBarry Smith        subroutine PetscSetCOMM(c1,c2)
6336dd63270SBarry Smith        use petscmpi, only: PETSC_COMM_WORLD,PETSC_COMM_SELF
6346dd63270SBarry Smith
6356dd63270SBarry Smith        implicit none
6366dd63270SBarry Smith        MPI_Comm c1,c2
6376dd63270SBarry Smith
6386dd63270SBarry Smith        PETSC_COMM_WORLD    = c1
6396dd63270SBarry Smith        PETSC_COMM_SELF     = c2
6406dd63270SBarry Smith        end
6416dd63270SBarry Smith
6426dd63270SBarry Smith        subroutine PetscGetCOMM(c1)
6436dd63270SBarry Smith        use petscmpi, only: PETSC_COMM_WORLD
6446dd63270SBarry Smith        implicit none
6456dd63270SBarry Smith        MPI_Comm c1
6466dd63270SBarry Smith
6476dd63270SBarry Smith        c1 = PETSC_COMM_WORLD
6486dd63270SBarry Smith        end
6496dd63270SBarry Smith
6506dd63270SBarry Smith        subroutine PetscSetModuleBlock()
6516dd63270SBarry Smith        use petscsys!, only: PETSC_NULL_CHARACTER,PETSC_NULL_INTEGER,&
6526dd63270SBarry Smith           !  PETSC_NULL_SCALAR,PETSC_NULL_DOUBLE,PETSC_NULL_REAL,&
6536dd63270SBarry Smith           !  PETSC_NULL_BOOL,PETSC_NULL_FUNCTION,PETSC_NULL_MPI_COMM
6546dd63270SBarry Smith        implicit none
6556dd63270SBarry Smith
6566dd63270SBarry Smith        call PetscSetFortranBasePointers(PETSC_NULL_CHARACTER,          &
6576dd63270SBarry Smith     &     PETSC_NULL_INTEGER,PETSC_NULL_SCALAR,                        &
6586dd63270SBarry Smith     &     PETSC_NULL_DOUBLE,PETSC_NULL_REAL,                           &
6596dd63270SBarry Smith     &     PETSC_NULL_BOOL,PETSC_NULL_ENUM,PETSC_NULL_FUNCTION,         &
6606dd63270SBarry Smith     &     PETSC_NULL_MPI_COMM,                                         &
6616dd63270SBarry Smith     &     PETSC_NULL_INTEGER_ARRAY,PETSC_NULL_SCALAR_ARRAY,            &
6626dd63270SBarry Smith     &     PETSC_NULL_REAL_ARRAY, PETSC_NULL_INTEGER_POINTER,           &
6636dd63270SBarry Smith     &     PETSC_NULL_SCALAR_POINTER, PETSC_NULL_REAL_POINTER)
6646dd63270SBarry Smith        end
6656dd63270SBarry Smith
6666dd63270SBarry Smith        subroutine PetscSetModuleBlockMPI(freal,fscalar,fsum,finteger)
6676dd63270SBarry Smith        use petscmpi, only: MPIU_REAL,MPIU_SUM,MPIU_SCALAR,MPIU_INTEGER
6686dd63270SBarry Smith        implicit none
6696dd63270SBarry Smith
6706dd63270SBarry Smith        integer4 freal,fscalar,fsum,finteger
6716dd63270SBarry Smith
6726dd63270SBarry Smith        MPIU_REAL    = freal
6736dd63270SBarry Smith        MPIU_SCALAR  = fscalar
6746dd63270SBarry Smith        MPIU_SUM     = fsum
6756dd63270SBarry Smith        MPIU_INTEGER = finteger
6766dd63270SBarry Smith
6776dd63270SBarry Smith        end
6786dd63270SBarry Smith
6796dd63270SBarry Smith        subroutine PetscSetModuleBlockNumeric(pi,maxreal,minreal,eps,       &
6806dd63270SBarry Smith     &     seps,small,pinf,pninf)
6816dd63270SBarry Smith        use petscsys, only: PETSC_PI,PETSC_MAX_REAL,PETSC_MIN_REAL,&
6826dd63270SBarry Smith             PETSC_MACHINE_EPSILON,PETSC_SQRT_MACHINE_EPSILON,&
6836dd63270SBarry Smith             PETSC_SMALL,PETSC_INFINITY,PETSC_NINFINITY
6846dd63270SBarry Smith        implicit none
6856dd63270SBarry Smith
6866dd63270SBarry Smith        PetscReal pi,maxreal,minreal,eps,seps
6876dd63270SBarry Smith        PetscReal small,pinf,pninf
6886dd63270SBarry Smith
6896dd63270SBarry Smith        PETSC_PI = pi
6906dd63270SBarry Smith        PETSC_MAX_REAL = maxreal
6916dd63270SBarry Smith        PETSC_MIN_REAL = minreal
6926dd63270SBarry Smith        PETSC_MACHINE_EPSILON = eps
6936dd63270SBarry Smith        PETSC_SQRT_MACHINE_EPSILON = seps
6946dd63270SBarry Smith        PETSC_SMALL = small
6956dd63270SBarry Smith        PETSC_INFINITY = pinf
6966dd63270SBarry Smith        PETSC_NINFINITY = pninf
6976dd63270SBarry Smith
6986dd63270SBarry Smith        end
6996dd63270SBarry Smith
700