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