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