Actual source code: petscsysmod.F90
1: module petscmpi
2: use, intrinsic :: ISO_C_binding
3: #include <petscconf.h>
4: #include "petsc/finclude/petscsys.h"
5: #if defined(PETSC_HAVE_MPIUNI)
6: use mpiuni
7: #else
8: #if defined(PETSC_HAVE_MPI_FTN_MODULE)
9: use PETSC_MPI_FTN_MODULE
10: #else
11: #include "mpif.h"
12: #endif
13: #endif
15: MPIU_Datatype :: MPIU_REAL
16: MPIU_Datatype :: MPIU_SCALAR
17: MPIU_Datatype :: MPIU_INTEGER
18: MPIU_Op :: MPIU_SUM
20: MPIU_Comm:: PETSC_COMM_WORLD
21: MPIU_Comm:: PETSC_COMM_SELF
23: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
24: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_REAL
25: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_SUM
26: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_SCALAR
27: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_INTEGER
28: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMM_SELF
29: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMM_WORLD
30: #endif
31: end module petscmpi
33: module petscsysdef
34: use, intrinsic :: ISO_C_binding
35: use petscmpi
36: PetscReal, parameter :: PetscReal_Private = 1.0
37: integer, parameter :: PETSC_REAL_KIND = kind(PetscReal_Private)
39: PetscScalar, parameter :: PetscScalar_Private = (1.0, 0.0)
40: integer, parameter :: PETSC_SCALAR_KIND = kind(PetscScalar_Private)
42: PetscInt, parameter :: PetscInt_Private = 1
43: integer, parameter :: PETSC_INT_KIND = kind(PetscInt_Private)
45: PetscMPIInt, parameter :: PetscMPIInt_Private = 1
46: integer, parameter :: PETSC_MPIINT_KIND = kind(PetscMPIInt_Private)
48: PetscBool, parameter :: PETSC_TRUE = .true._C_BOOL
49: PetscBool, parameter :: PETSC_FALSE = .false._C_BOOL
51: PetscInt, parameter :: PETSC_DECIDE = -1
52: PetscInt, parameter :: PETSC_DECIDE_INTEGER = -1_PETSC_INT_KIND
53: PetscReal, parameter :: PETSC_DECIDE_REAL = -1.0_PETSC_REAL_KIND
54: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
55: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE
56: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE_INTEGER
57: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE_REAL
58: #endif
60: PetscInt, parameter :: PETSC_DETERMINE = -1
61: PetscInt, parameter :: PETSC_DETERMINE_INTEGER = -1
62: PetscReal, parameter :: PETSC_DETERMINE_REAL = -1.0_PETSC_REAL_KIND
63: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
64: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE
65: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE_INTEGER
66: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE_REAL
67: #endif
69: PetscInt, parameter :: PETSC_CURRENT = -2
70: PetscInt, parameter :: PETSC_CURRENT_INTEGER = -2
71: PetscReal, parameter :: PETSC_CURRENT_REAL = -2.0_PETSC_REAL_KIND
72: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
73: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT
74: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT_INTEGER
75: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT_REAL
76: #endif
78: PetscInt, parameter :: PETSC_DEFAULT = -2
79: PetscInt, parameter :: PETSC_DEFAULT_INTEGER = -2
80: PetscReal, parameter :: PETSC_DEFAULT_REAL = -2.0_PETSC_REAL_KIND
81: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
82: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT
83: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_INTEGER
84: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_REAL
85: #endif
87: PetscFortranAddr, parameter :: PETSC_STDOUT = 0
88: !
89: ! PETSc DataTypes
90: !
91: #if defined(PETSC_USE_REAL_SINGLE)
92: #define PETSC_REAL PETSC_FLOAT
93: #elif defined(PETSC_USE_REAL___FLOAT128)
94: #define PETSC_REAL PETSC___FLOAT128
95: #else
96: #define PETSC_REAL PETSC_DOUBLE
97: #endif
98: #define PETSC_FORTRANADDR PETSC_LONG
100: ! PETSc mathematics include file. Defines certain basic mathematical
101: ! constants and functions for working with single and double precision
102: ! floating point numbers as well as complex and integers.
103: !
104: ! Representation of complex i
105: PetscComplex, parameter :: PETSC_i = (0.0_PETSC_REAL_KIND, 1.0_PETSC_REAL_KIND)
107: ! A PETSC_NULL_FUNCTION pointer
108: !
109: external PETSC_NULL_FUNCTION
110: !
111: external PetscIsInfOrNanScalar
112: external PetscIsInfOrNanReal
113: PetscBool PetscIsInfOrNanScalar
114: PetscBool PetscIsInfOrNanReal
116: #include <../ftn/sys/petscall.h>
118: PetscViewer, parameter :: PETSC_VIEWER_STDOUT_SELF = tPetscViewer(9)
119: PetscViewer, parameter :: PETSC_VIEWER_DRAW_WORLD = tPetscViewer(4)
120: PetscViewer, parameter :: PETSC_VIEWER_DRAW_SELF = tPetscViewer(5)
121: PetscViewer, parameter :: PETSC_VIEWER_SOCKET_WORLD = tPetscViewer(6)
122: PetscViewer, parameter :: PETSC_VIEWER_SOCKET_SELF = tPetscViewer(7)
123: PetscViewer, parameter :: PETSC_VIEWER_STDOUT_WORLD = tPetscViewer(8)
124: PetscViewer, parameter :: PETSC_VIEWER_STDERR_WORLD = tPetscViewer(10)
125: PetscViewer, parameter :: PETSC_VIEWER_STDERR_SELF = tPetscViewer(11)
126: PetscViewer, parameter :: PETSC_VIEWER_BINARY_WORLD = tPetscViewer(12)
127: PetscViewer, parameter :: PETSC_VIEWER_BINARY_SELF = tPetscViewer(13)
128: PetscViewer, parameter :: PETSC_VIEWER_MATLAB_WORLD = tPetscViewer(14)
129: PetscViewer, parameter :: PETSC_VIEWER_MATLAB_SELF = tPetscViewer(15)
131: PetscViewer PETSC_VIEWER_STDOUT_
132: PetscViewer PETSC_VIEWER_DRAW_
133: external PETSC_VIEWER_STDOUT_
134: external PETSC_VIEWER_DRAW_
135: external PetscViewerAndFormatDestroy
137: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
138: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDOUT_SELF
139: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_DRAW_WORLD
140: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_DRAW_SELF
141: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_SOCKET_WORLD
142: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_SOCKET_SELF
143: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDOUT_WORLD
144: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDERR_WORLD
145: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_STDERR_SELF
146: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_BINARY_WORLD
147: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_BINARY_SELF
148: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_MATLAB_WORLD
149: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_VIEWER_MATLAB_SELF
150: #endif
152: PetscErrorCode, parameter :: PETSC_ERR_MEM = 55
153: PetscErrorCode, parameter :: PETSC_ERR_SUP = 56
154: PetscErrorCode, parameter :: PETSC_ERR_SUP_SYS = 57
155: PetscErrorCode, parameter :: PETSC_ERR_ORDER = 58
156: PetscErrorCode, parameter :: PETSC_ERR_SIG = 59
157: PetscErrorCode, parameter :: PETSC_ERR_FP = 72
158: PetscErrorCode, parameter :: PETSC_ERR_COR = 74
159: PetscErrorCode, parameter :: PETSC_ERR_LIB = 76
160: PetscErrorCode, parameter :: PETSC_ERR_PLIB = 77
161: PetscErrorCode, parameter :: PETSC_ERR_MEMC = 78
162: PetscErrorCode, parameter :: PETSC_ERR_CONV_FAILED = 82
163: PetscErrorCode, parameter :: PETSC_ERR_USER = 83
164: PetscErrorCode, parameter :: PETSC_ERR_SYS = 88
165: PetscErrorCode, parameter :: PETSC_ERR_POINTER = 70
166: PetscErrorCode, parameter :: PETSC_ERR_MPI_LIB_INCOMP = 87
168: PetscErrorCode, parameter :: PETSC_ERR_ARG_SIZ = 60
169: PetscErrorCode, parameter :: PETSC_ERR_ARG_IDN = 61
170: PetscErrorCode, parameter :: PETSC_ERR_ARG_WRONG = 62
171: PetscErrorCode, parameter :: PETSC_ERR_ARG_CORRUPT = 64
172: PetscErrorCode, parameter :: PETSC_ERR_ARG_OUTOFRANGE = 63
173: PetscErrorCode, parameter :: PETSC_ERR_ARG_BADPTR = 68
174: PetscErrorCode, parameter :: PETSC_ERR_ARG_NOTSAMETYPE = 69
175: PetscErrorCode, parameter :: PETSC_ERR_ARG_NOTSAMECOMM = 80
176: PetscErrorCode, parameter :: PETSC_ERR_ARG_WRONGSTATE = 73
177: PetscErrorCode, parameter :: PETSC_ERR_ARG_TYPENOTSET = 89
178: PetscErrorCode, parameter :: PETSC_ERR_ARG_INCOMP = 75
179: PetscErrorCode, parameter :: PETSC_ERR_ARG_NULL = 85
180: PetscErrorCode, parameter :: PETSC_ERR_ARG_UNKNOWN_TYPE = 86
182: PetscErrorCode, parameter :: PETSC_ERR_FILE_OPEN = 65
183: PetscErrorCode, parameter :: PETSC_ERR_FILE_READ = 66
184: PetscErrorCode, parameter :: PETSC_ERR_FILE_WRITE = 67
185: PetscErrorCode, parameter :: PETSC_ERR_FILE_UNEXPECTED = 79
187: PetscErrorCode, parameter :: PETSC_ERR_MAT_LU_ZRPVT = 71
188: PetscErrorCode, parameter :: PETSC_ERR_MAT_CH_ZRPVT = 81
190: PetscErrorCode, parameter :: PETSC_ERR_INT_OVERFLOW = 84
192: PetscErrorCode, parameter :: PETSC_ERR_FLOP_COUNT = 90
193: PetscErrorCode, parameter :: PETSC_ERR_NOT_CONVERGED = 91
194: PetscErrorCode, parameter :: PETSC_ERR_MISSING_FACTOR = 92
195: PetscErrorCode, parameter :: PETSC_ERR_OPT_OVERWRITE = 93
196: PetscErrorCode, parameter :: PETSC_ERR_WRONG_MPI_SIZE = 94
197: PetscErrorCode, parameter :: PETSC_ERR_USER_INPUT = 95
198: PetscErrorCode, parameter :: PETSC_ERR_GPU_RESOURCE = 96
199: PetscErrorCode, parameter :: PETSC_ERR_GPU = 97
200: PetscErrorCode, parameter :: PETSC_ERR_MPI = 98
201: PetscErrorCode, parameter :: PETSC_ERR_RETURN = 99
203: character(len=80) :: PETSC_NULL_CHARACTER = ''
204: PetscInt PETSC_NULL_INTEGER, PETSC_NULL_INTEGER_ARRAY(1)
205: PetscInt, pointer :: PETSC_NULL_INTEGER_POINTER(:)
206: PetscScalar, pointer :: PETSC_NULL_SCALAR_POINTER(:)
207: PetscFortranDouble PETSC_NULL_DOUBLE
208: PetscScalar PETSC_NULL_SCALAR, PETSC_NULL_SCALAR_ARRAY(1)
209: PetscReal PETSC_NULL_REAL, PETSC_NULL_REAL_ARRAY(1)
210: PetscReal, pointer :: PETSC_NULL_REAL_POINTER(:)
211: PetscBool PETSC_NULL_BOOL
212: PetscEnum PETSC_NULL_ENUM
213: MPIU_Comm PETSC_NULL_MPI_COMM
214: !
215: ! Basic math constants
216: !
217: PetscReal PETSC_PI
218: PetscReal PETSC_MAX_REAL
219: PetscReal PETSC_MIN_REAL
220: PetscReal PETSC_MACHINE_EPSILON
221: PetscReal PETSC_SQRT_MACHINE_EPSILON
222: PetscReal PETSC_SMALL
223: PetscReal PETSC_INFINITY
224: PetscReal PETSC_NINFINITY
226: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
227: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_CHARACTER
228: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_INTEGER
229: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_INTEGER_ARRAY
230: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_INTEGER_POINTER
231: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_SCALAR_POINTER
232: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_REAL_POINTER
233: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DOUBLE
234: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_SCALAR
235: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_SCALAR_ARRAY
236: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_REAL
237: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_REAL_ARRAY
238: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_BOOL
239: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ENUM
240: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_MPI_COMM
241: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_PI
242: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_MAX_REAL
243: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_MIN_REAL
244: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_MACHINE_EPSILON
245: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SQRT_MACHINE_EPSILON
246: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SMALL
247: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_INFINITY
248: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NINFINITY
249: #endif
251: type tPetscReal2d
252: sequence
253: PetscReal, dimension(:), pointer :: ptr
254: end type tPetscReal2D
256: end module petscsysdef
258: module petscsys
259: use, intrinsic :: ISO_C_binding
260: use petscsysdef
261: type(c_ptr) :: petscFtnCtx ! used by automatically generated XXXGetContext() macros
263: #include <../src/sys/ftn-mod/petscsys.h90>
264: #include <../src/sys/ftn-mod/petscviewer.h90>
265: #include <../ftn/sys/petscall.h90>
267: interface PetscInitialize
268: module procedure PetscInitializeWithHelp, PetscInitializeNoHelp, PetscInitializeNoArguments
269: end interface PetscInitialize
271: interface
272: subroutine PetscSetFortranBasePointers( &
273: PETSC_NULL_CHARACTER, &
274: PETSC_NULL_INTEGER, PETSC_NULL_SCALAR, &
275: PETSC_NULL_DOUBLE, PETSC_NULL_REAL, &
276: PETSC_NULL_BOOL, PETSC_NULL_ENUM, PETSC_NULL_FUNCTION, &
277: PETSC_NULL_MPI_COMM, &
278: PETSC_NULL_INTEGER_ARRAY, PETSC_NULL_SCALAR_ARRAY, &
279: PETSC_NULL_REAL_ARRAY, APETSC_NULL_INTEGER_POINTER, &
280: PETSC_NULL_SCALAR_POINTER, PETSC_NULL_REAL_POINTER)
281: use, intrinsic :: ISO_C_binding
282: use petscmpi
283: character(*) PETSC_NULL_CHARACTER
284: PetscInt PETSC_NULL_INTEGER
285: PetscScalar PETSC_NULL_SCALAR
286: PetscFortranDouble PETSC_NULL_DOUBLE
287: PetscReal PETSC_NULL_REAL
288: PetscBool PETSC_NULL_BOOL
289: PetscEnum PETSC_NULL_ENUM
290: external PETSC_NULL_FUNCTION
291: MPIU_Comm PETSC_NULL_MPI_COMM
292: PetscInt PETSC_NULL_INTEGER_ARRAY(*)
293: PetscScalar PETSC_NULL_SCALAR_ARRAY(*)
294: PetscReal PETSC_NULL_REAL_ARRAY(*)
295: PetscInt, pointer :: APETSC_NULL_INTEGER_POINTER(:)
296: PetscScalar, pointer :: PETSC_NULL_SCALAR_POINTER(:)
297: PetscReal, pointer :: PETSC_NULL_REAL_POINTER(:)
298: end subroutine PetscSetFortranBasePointers
300: subroutine PetscOptionsString(string, text, man, default, value, flg, ierr)
301: use, intrinsic :: ISO_C_binding
302: character(*) string, text, man, default, value
303: PetscBool flg
304: PetscErrorCode ierr
305: end subroutine PetscOptionsString
306: end interface
308: interface petscbinaryread
309: subroutine petscbinaryreadcomplex(fd, data, num, count, type, z)
310: use, intrinsic :: ISO_C_binding
311: import ePetscDataType
312: integer4 fd
313: PetscComplex data(*)
314: PetscInt num
315: PetscInt count
316: PetscDataType type
317: PetscErrorCode z
318: end subroutine petscbinaryreadcomplex
319: subroutine petscbinaryreadreal(fd, data, num, count, type, z)
320: use, intrinsic :: ISO_C_binding
321: import ePetscDataType
322: integer4 fd
323: PetscReal data(*)
324: PetscInt num
325: PetscInt count
326: PetscDataType type
327: PetscErrorCode z
328: end subroutine petscbinaryreadreal
329: subroutine petscbinaryreadint(fd, data, num, count, type, z)
330: use, intrinsic :: ISO_C_binding
331: import ePetscDataType
332: integer4 fd
333: PetscInt data(*)
334: PetscInt num
335: PetscInt count
336: PetscDataType type
337: PetscErrorCode z
338: end subroutine petscbinaryreadint
339: subroutine petscbinaryreadcomplex1(fd, data, num, count, type, z)
340: use, intrinsic :: ISO_C_binding
341: import ePetscDataType
342: integer4 fd
343: PetscComplex data
344: PetscInt num
345: PetscInt count
346: PetscDataType type
347: PetscErrorCode z
348: end subroutine petscbinaryreadcomplex1
349: subroutine petscbinaryreadreal1(fd, data, num, count, type, z)
350: use, intrinsic :: ISO_C_binding
351: import ePetscDataType
352: integer4 fd
353: PetscReal data
354: PetscInt num
355: PetscInt count
356: PetscDataType type
357: PetscErrorCode z
358: end subroutine petscbinaryreadreal1
359: subroutine petscbinaryreadint1(fd, data, num, count, type, z)
360: use, intrinsic :: ISO_C_binding
361: import ePetscDataType
362: integer4 fd
363: PetscInt data
364: PetscInt num
365: PetscInt count
366: PetscDataType type
367: PetscErrorCode z
368: end subroutine petscbinaryreadint1
369: subroutine petscbinaryreadcomplexcnt(fd, data, num, count, type, z)
370: use, intrinsic :: ISO_C_binding
371: import ePetscDataType
372: integer4 fd
373: PetscComplex data(*)
374: PetscInt num
375: PetscInt count(1)
376: PetscDataType type
377: PetscErrorCode z
378: end subroutine petscbinaryreadcomplexcnt
379: subroutine petscbinaryreadrealcnt(fd, data, num, count, type, z)
380: use, intrinsic :: ISO_C_binding
381: import ePetscDataType
382: integer4 fd
383: PetscReal data(*)
384: PetscInt num
385: PetscInt count(1)
386: PetscDataType type
387: PetscErrorCode z
388: end subroutine petscbinaryreadrealcnt
389: subroutine petscbinaryreadintcnt(fd, data, num, count, type, z)
390: use, intrinsic :: ISO_C_binding
391: import ePetscDataType
392: integer4 fd
393: PetscInt data(*)
394: PetscInt num
395: PetscInt count(1)
396: PetscDataType type
397: PetscErrorCode z
398: end subroutine petscbinaryreadintcnt
399: subroutine petscbinaryreadcomplex1cnt(fd, data, num, count, type, z)
400: use, intrinsic :: ISO_C_binding
401: import ePetscDataType
402: integer4 fd
403: PetscComplex data
404: PetscInt num
405: PetscInt count(1)
406: PetscDataType type
407: PetscErrorCode z
408: end subroutine petscbinaryreadcomplex1cnt
409: subroutine petscbinaryreadreal1cnt(fd, data, num, count, type, z)
410: use, intrinsic :: ISO_C_binding
411: import ePetscDataType
412: integer4 fd
413: PetscReal data
414: PetscInt num
415: PetscInt count(1)
416: PetscDataType type
417: PetscErrorCode z
418: end subroutine petscbinaryreadreal1cnt
419: subroutine petscbinaryreadint1cnt(fd, data, num, count, type, z)
420: use, intrinsic :: ISO_C_binding
421: import ePetscDataType
422: integer4 fd
423: PetscInt data
424: PetscInt num
425: PetscInt count(1)
426: PetscDataType type
427: PetscErrorCode z
428: end subroutine petscbinaryreadint1cnt
429: end interface petscbinaryread
431: interface petscbinarywrite
432: subroutine petscbinarywritecomplex(fd, data, num, type, z)
433: use, intrinsic :: ISO_C_binding
434: import ePetscDataType
435: integer4 fd
436: PetscComplex data(*)
437: PetscInt num
438: PetscDataType type
439: PetscErrorCode z
440: end subroutine petscbinarywritecomplex
441: subroutine petscbinarywritereal(fd, data, num, type, z)
442: use, intrinsic :: ISO_C_binding
443: import ePetscDataType
444: integer4 fd
445: PetscReal data(*)
446: PetscInt num
447: PetscDataType type
448: PetscErrorCode z
449: end subroutine petscbinarywritereal
450: subroutine petscbinarywriteint(fd, data, num, type, z)
451: use, intrinsic :: ISO_C_binding
452: import ePetscDataType
453: integer4 fd
454: PetscInt data(*)
455: PetscInt num
456: PetscDataType type
457: PetscErrorCode z
458: end subroutine petscbinarywriteint
459: subroutine petscbinarywritecomplex1(fd, data, num, type, z)
460: use, intrinsic :: ISO_C_binding
461: import ePetscDataType
462: integer4 fd
463: PetscComplex data
464: PetscInt num
465: PetscDataType type
466: PetscErrorCode z
467: end subroutine petscbinarywritecomplex1
468: subroutine petscbinarywritereal1(fd, data, num, type, z)
469: use, intrinsic :: ISO_C_binding
470: import ePetscDataType
471: integer4 fd
472: PetscReal data
473: PetscInt num
474: PetscDataType type
475: PetscErrorCode z
476: end subroutine petscbinarywritereal1
477: subroutine petscbinarywriteint1(fd, data, num, type, z)
478: use, intrinsic :: ISO_C_binding
479: import ePetscDataType
480: integer4 fd
481: PetscInt data
482: PetscInt num
483: PetscDataType type
484: PetscErrorCode z
485: end subroutine petscbinarywriteint1
486: end interface petscbinarywrite
488: contains
489: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
490: !DEC$ ATTRIBUTES DLLEXPORT::PetscInitializeWithHelp
491: #endif
492: subroutine PetscInitializeWithHelp(filename, help, ierr)
493: character(len=*) :: filename
494: character(len=*) :: help
495: PetscErrorCode :: ierr
497: if (filename /= PETSC_NULL_CHARACTER) then
498: call PetscInitializeF(trim(filename), help, ierr)
499: CHKERRQ(ierr)
500: else
501: call PetscInitializeF(filename, help, ierr)
502: CHKERRQ(ierr)
503: end if
504: end subroutine PetscInitializeWithHelp
506: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
507: !DEC$ ATTRIBUTES DLLEXPORT::PetscInitializeNoHelp
508: #endif
509: subroutine PetscInitializeNoHelp(filename, ierr)
510: character(len=*) :: filename
511: PetscErrorCode :: ierr
513: if (filename /= PETSC_NULL_CHARACTER) then
514: call PetscInitializeF(trim(filename), PETSC_NULL_CHARACTER, ierr)
515: CHKERRQ(ierr)
516: else
517: call PetscInitializeF(filename, PETSC_NULL_CHARACTER, ierr)
518: CHKERRQ(ierr)
519: end if
520: end subroutine PetscInitializeNoHelp
522: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
523: !DEC$ ATTRIBUTES DLLEXPORT::PetscInitializeNoArguments
524: #endif
525: subroutine PetscInitializeNoArguments(ierr)
526: PetscErrorCode :: ierr
528: call PetscInitializeF(PETSC_NULL_CHARACTER, PETSC_NULL_CHARACTER, ierr)
529: CHKERRQ(ierr)
530: end subroutine PetscInitializeNoArguments
532: #include <../ftn/sys/petscall.hf90>
533: end module petscsys
535: subroutine F90ArraySetRealPointer(array, sz, j, T)
536: use petscsysdef
537: PetscInt :: j, sz
538: PetscReal, target :: array(1:sz)
539: PetscReal2d, pointer :: T(:)
541: T(j + 1)%ptr => array
542: end subroutine F90ArraySetRealPointer
543: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
544: !DEC$ ATTRIBUTES DLLEXPORT:: F90ArraySetRealPointer
545: #endif
547: !TODO: generate the modules below by looping over
548: ! ftn/sys/XXX.h90
549: ! and skipping those in petscall.h
551: module petscbag
552: use petscsys
553: #include <../include/petsc/finclude/petscbag.h>
554: #include <../ftn/sys/petscbag.h>
555: #include <../ftn/sys/petscbag.h90>
556: contains
557: #include <../ftn/sys/petscbag.hf90>
558: end module petscbag
560: module petscbm
561: use petscsys
562: #include <../include/petsc/finclude/petscbm.h>
563: #include <../ftn/sys/petscbm.h>
564: #include <../ftn/sys/petscbm.h90>
565: contains
567: #include <../ftn/sys/petscbm.hf90>
568: end module petscbm
570: module petscmatlab
571: use petscsys
572: #include <../include/petsc/finclude/petscmatlab.h>
573: #include <../ftn/sys/petscmatlab.h>
574: #include <../ftn/sys/petscmatlab.h90>
576: contains
578: #include <../ftn/sys/petscmatlab.hf90>
579: end module petscmatlab
581: module petscdraw
582: use petscsys
583: #include <../include/petsc/finclude/petscdraw.h>
584: #include <../ftn/sys/petscdraw.h>
585: #include <../ftn/sys/petscdraw.h90>
587: PetscEnum, parameter :: PETSC_DRAW_BASIC_COLORS = 33
588: PetscEnum, parameter :: PETSC_DRAW_ROTATE = -1
589: PetscEnum, parameter :: PETSC_DRAW_WHITE = 0
590: PetscEnum, parameter :: PETSC_DRAW_BLACK = 1
591: PetscEnum, parameter :: PETSC_DRAW_RED = 2
592: PetscEnum, parameter :: PETSC_DRAW_GREEN = 3
593: PetscEnum, parameter :: PETSC_DRAW_CYAN = 4
594: PetscEnum, parameter :: PETSC_DRAW_BLUE = 5
595: PetscEnum, parameter :: PETSC_DRAW_MAGENTA = 6
596: PetscEnum, parameter :: PETSC_DRAW_AQUAMARINE = 7
597: PetscEnum, parameter :: PETSC_DRAW_FORESTGREEN = 8
598: PetscEnum, parameter :: PETSC_DRAW_ORANGE = 9
599: PetscEnum, parameter :: PETSC_DRAW_VIOLET = 10
600: PetscEnum, parameter :: PETSC_DRAW_BROWN = 11
601: PetscEnum, parameter :: PETSC_DRAW_PINK = 12
602: PetscEnum, parameter :: PETSC_DRAW_CORAL = 13
603: PetscEnum, parameter :: PETSC_DRAW_GRAY = 14
604: PetscEnum, parameter :: PETSC_DRAW_YELLOW = 15
605: PetscEnum, parameter :: PETSC_DRAW_GOLD = 16
606: PetscEnum, parameter :: PETSC_DRAW_LIGHTPINK = 17
607: PetscEnum, parameter :: PETSC_DRAW_MEDIUMTURQUOISE = 18
608: PetscEnum, parameter :: PETSC_DRAW_KHAKI = 19
609: PetscEnum, parameter :: PETSC_DRAW_DIMGRAY = 20
610: PetscEnum, parameter :: PETSC_DRAW_YELLOWGREEN = 21
611: PetscEnum, parameter :: PETSC_DRAW_SKYBLUE = 22
612: PetscEnum, parameter :: PETSC_DRAW_DARKGREEN = 23
613: PetscEnum, parameter :: PETSC_DRAW_NAVYBLUE = 24
614: PetscEnum, parameter :: PETSC_DRAW_SANDYBROWN = 25
615: PetscEnum, parameter :: PETSC_DRAW_CADETBLUE = 26
616: PetscEnum, parameter :: PETSC_DRAW_POWDERBLUE = 27
617: PetscEnum, parameter :: PETSC_DRAW_DEEPPINK = 28
618: PetscEnum, parameter :: PETSC_DRAW_THISTLE = 29
619: PetscEnum, parameter :: PETSC_DRAW_LIMEGREEN = 30
620: PetscEnum, parameter :: PETSC_DRAW_LAVENDERBLUSH = 31
621: PetscEnum, parameter :: PETSC_DRAW_PLUM = 32
623: contains
625: #include <../ftn/sys/petscdraw.hf90>
626: end module petscdraw
628: subroutine PetscSetCOMM(c1, c2)
629: use, intrinsic :: ISO_C_binding
630: use petscmpi
632: implicit none
633: MPIU_Comm c1, c2
635: PETSC_COMM_WORLD = c1
636: PETSC_COMM_SELF = c2
637: end
639: subroutine PetscGetCOMM(c1)
640: use, intrinsic :: ISO_C_binding
641: use petscmpi
642: implicit none
643: MPIU_Comm c1
645: c1 = PETSC_COMM_WORLD
646: end subroutine PetscGetCOMM
648: subroutine PetscSetModuleBlock()
649: use, intrinsic :: ISO_C_binding
650: use petscsys!, only: PETSC_NULL_CHARACTER,PETSC_NULL_INTEGER,&
651: ! PETSC_NULL_SCALAR,PETSC_NULL_DOUBLE,PETSC_NULL_REAL,&
652: ! PETSC_NULL_BOOL,PETSC_NULL_FUNCTION,PETSC_NULL_MPI_COMM
653: implicit none
655: call PetscSetFortranBasePointers(PETSC_NULL_CHARACTER, &
656: PETSC_NULL_INTEGER, PETSC_NULL_SCALAR, &
657: PETSC_NULL_DOUBLE, PETSC_NULL_REAL, &
658: PETSC_NULL_BOOL, PETSC_NULL_ENUM, PETSC_NULL_FUNCTION, &
659: PETSC_NULL_MPI_COMM, &
660: PETSC_NULL_INTEGER_ARRAY, PETSC_NULL_SCALAR_ARRAY, &
661: PETSC_NULL_REAL_ARRAY, PETSC_NULL_INTEGER_POINTER, &
662: PETSC_NULL_SCALAR_POINTER, PETSC_NULL_REAL_POINTER)
663: end subroutine PetscSetModuleBlock
665: subroutine PetscSetModuleBlockMPI(freal, fscalar, fsum, finteger)
666: use, intrinsic :: ISO_C_binding
667: use petscmpi
668: implicit none
670: MPIU_Datatype freal, fscalar, finteger
671: MPIU_Op fsum
673: MPIU_REAL = freal
674: MPIU_SCALAR = fscalar
675: MPIU_SUM = fsum
676: MPIU_INTEGER = finteger
677: end subroutine PetscSetModuleBlockMPI
679: subroutine PetscSetModuleBlockNumeric(pi, maxreal, minreal, eps, seps, small, pinf, pninf)
680: use petscsys, only: PETSC_PI, PETSC_MAX_REAL, PETSC_MIN_REAL, &
681: PETSC_MACHINE_EPSILON, PETSC_SQRT_MACHINE_EPSILON, &
682: PETSC_SMALL, PETSC_INFINITY, PETSC_NINFINITY
683: use, intrinsic :: ISO_C_binding
684: implicit none
686: PetscReal pi, maxreal, minreal, eps, seps
687: PetscReal small, pinf, pninf
689: PETSC_PI = pi
690: PETSC_MAX_REAL = maxreal
691: PETSC_MIN_REAL = minreal
692: PETSC_MACHINE_EPSILON = eps
693: PETSC_SQRT_MACHINE_EPSILON = seps
694: PETSC_SMALL = small
695: PETSC_INFINITY = pinf
696: PETSC_NINFINITY = pninf
697: end subroutine PetscSetModuleBlockNumeric