Actual source code: petscmat.h90
petsc-3.8.4 2018-03-24
3: ! rename MAT_INFO_SIZE and MAT_FACTORINFO_SIZE to enable reuse here
4: #define MAT_INFO_SIZE MAT_INFO_SIZE_MOD
5: #define MAT_FACTORINFO_SIZE MAT_FACTORINFO_SIZE_MOD
6: Interface
7: Subroutine MatFDColoringGetPerturbedColumnsF90(i,array,ierr)
8: use petscmatdef
9: PetscInt, pointer :: array(:)
10: PetscErrorCode ierr
11: MatFDColoring i
12: End Subroutine
13: End Interface
16: Interface
17: Subroutine MatFDColoringRestorePerturbedColumnsF90(i,array,ierr)
18: use petscmatdef
19: PetscInt, pointer :: array(:)
20: PetscErrorCode ierr
21: MatFDColoring i
22: End Subroutine
23: End Interface
25: Interface
26: subroutine MatCreateMPIAIJWithSplitArrays(a,b,c,d,e,f,g,h,i,j,k,l,&
27: &z)
28: use petscmatdef
29: integer a ! MPI_Comm
30: PetscInt b ! PetscInt
31: PetscInt c ! PetscInt
32: PetscInt d ! PetscInt
33: PetscInt e ! PetscInt
34: PetscInt f (*) ! PetscInt
35: PetscInt g (*) ! PetscInt
36: PetscScalar h (*) ! PetscScalar
37: PetscInt i (*) ! PetscInt
38: PetscInt j (*) ! PetscInt
39: PetscScalar k (*) ! PetscScalar
40: Mat l ! Mat
41: integer z
42: end subroutine
43: End Interface
45: interface MatNullSpaceCreate
46: subroutine MatNullSpaceCreate1(a,b,c,d,e,z)
47: use petscmatdef
48: integer a
49: PetscBool b
50: PetscInt c
51: Vec d (*)
52: MatNullSpace e
53: integer z
54: end subroutine
55: subroutine MatNullSpaceCreate0(a,b,c,d,e,z)
56: use petscmatdef
57: integer a
58: PetscBool b
59: PetscInt c
60: Vec d
61: MatNullSpace e
62: integer z
63: end subroutine
64: end interface
66: interface MatGetSize
67: subroutine MatGetSize00(a,b,c,z)
68: use petscmatdef
69: Mat a
70: PetscInt b
71: PetscInt c
72: integer z
73: end subroutine
74: subroutine MatGetSize10(a,b,c,z)
75: use petscmatdef
76: Mat a
77: PetscInt b(*)
78: PetscInt c
79: integer z
80: end subroutine
81: subroutine MatGetSize01(a,b,c,z)
82: use petscmatdef
83: Mat a
84: PetscInt b
85: PetscInt c(*)
86: integer z
87: end subroutine
88: end interface
90: interface MatGetLocalSize
91: subroutine MatGetLocalSize00(a,b,c,z)
92: use petscmatdef
93: Mat a
94: PetscInt b
95: PetscInt c
96: integer z
97: end subroutine
98: subroutine MatGetLocalSize10(a,b,c,z)
99: use petscmatdef
100: Mat a
101: PetscInt b(*)
102: PetscInt c
103: integer z
104: end subroutine
105: subroutine MatGetLocalSize01(a,b,c,z)
106: use petscmatdef
107: Mat a
108: PetscInt b
109: PetscInt c(*)
110: integer z
111: end subroutine
112: end interface
114: Interface
115: subroutine MatCreateMPIAIJ(a,b,c,d,e,f,g,h,i,j,z)
116: use petscmatdef
117: MPI_Comm a
118: PetscInt b
119: PetscInt c
120: PetscInt d
121: PetscInt e
122: PetscInt f
123: PetscInt g (*)
124: PetscInt h
125: PetscInt i (*)
126: Mat j
127: integer z
128: end subroutine
130: subroutine MatCreateSeqAIJ(a,b,c,d,e,f,z)
131: use petscmatdef
132: MPI_Comm a
133: PetscInt b
134: PetscInt c
135: PetscInt d
136: PetscInt e(*)
137: Mat f
138: integer z
139: end subroutine
141: subroutine MatSeqAIJSetPreallocation(a,b,c,z)
142: use petscmatdef
143: Mat a
144: PetscInt b
145: PetscInt c(*)
146: integer z
147: end subroutine
149: subroutine MatMPIAIJSetPreallocation(a,b,c,d,e,z)
150: use petscmatdef
151: Mat a
152: PetscInt b
153: PetscInt c(*)
154: PetscInt d
155: PetscInt e(*)
156: integer z
157: end subroutine
159: subroutine MatXAIJSetPreallocationb(a,b,c,d,e,f,z)
160: use petscmatdef
161: Mat a ! Mat
162: PetscInt b ! PetscInt
163: PetscInt c (*) ! PetscInt
164: PetscInt d (*) ! PetscInt
165: PetscInt e (*) ! PetscInt
166: PetscInt f (*) ! PetscInt
167: integer z
168: end subroutine
169: end interface
171: Interface MatSetValues
172: ! picky Fortran requires seperate prototypes if args
173: ! are arrays or scalars
174: subroutine MatSetValues0(a,b,c,d,e,f,g,z)
175: use petscmatdef
176: Mat a ! Mat
177: PetscInt b ! PetscInt
178: PetscInt c (*) ! PetscInt
179: PetscInt d ! PetscInt
180: PetscInt e (*) ! PetscInt
181: PetscScalar f (*) ! PetscScalar
182: InsertMode g ! InsertMode
183: integer z
184: end subroutine
185: subroutine MatSetValuesnn1(a,b,c,d,e,f,g,z)
186: use petscmatdef
187: Mat a ! Mat
188: PetscInt b ! PetscInt
189: PetscInt c (*) ! PetscInt
190: PetscInt d ! PetscInt
191: PetscInt e (*) ! PetscInt
192: PetscScalar f ! PetscScalar
193: InsertMode g ! InsertMode
194: integer z
195: end subroutine
196: subroutine MatSetValuesnnnn(a,b,c,d,e,f,g,z)
197: use petscmatdef
198: Mat a ! Mat
199: PetscInt b ! PetscInt
200: PetscInt c (*) ! PetscInt
201: PetscInt d ! PetscInt
202: PetscInt e (*) ! PetscInt
203: PetscScalar f(1,1) ! PetscScalar
204: InsertMode g ! InsertMode
205: integer z
206: end subroutine
207: subroutine MatSetValues11(a,b,c,d,e,f,g,z)
208: use petscmatdef
209: Mat a ! Mat
210: PetscInt b ! PetscInt
211: PetscInt c ! PetscInt
212: PetscInt d ! PetscInt
213: PetscInt e ! PetscInt
214: PetscScalar f ! PetscScalar
215: InsertMode g ! InsertMode
216: integer z
217: end subroutine
218: subroutine MatSetValues1n(a,b,c,d,e,f,g,z)
219: use petscmatdef
220: Mat a ! Mat
221: PetscInt b ! PetscInt
222: PetscInt c ! PetscInt
223: PetscInt d ! PetscInt
224: PetscInt e (*) ! PetscInt
225: PetscScalar f (*) ! PetscScalar
226: InsertMode g ! InsertMode
227: integer z
228: end subroutine
229: subroutine MatSetValuesn1(a,b,c,d,e,f,g,z)
230: use petscmatdef
231: Mat a ! Mat
232: PetscInt b ! PetscInt
233: PetscInt c (*) ! PetscInt
234: PetscInt d ! PetscInt
235: PetscInt e ! PetscInt
236: PetscScalar f (*) ! PetscScalar
237: InsertMode g ! InsertMode
238: integer z
239: end subroutine
240: End Interface MatSetValues
242: Interface MatSetValuesLocal
243: ! picky Fortran requires seperate prototypes if args
244: ! are arrays or scalars
245: subroutine MatSetValuesLocal0(a,b,c,d,e,f,g,z)
246: use petscmatdef
247: Mat a ! Mat
248: PetscInt b ! PetscInt
249: PetscInt c (*) ! PetscInt
250: PetscInt d ! PetscInt
251: PetscInt e (*) ! PetscInt
252: PetscScalar f (*) ! PetscScalar
253: InsertMode g ! InsertMode
254: integer z
255: end subroutine
256: subroutine MatSetValuesLocal11(a,b,c,d,e,f,g,z)
257: use petscmatdef
258: Mat a ! Mat
259: PetscInt b ! PetscInt
260: PetscInt c ! PetscInt
261: PetscInt d ! PetscInt
262: PetscInt e ! PetscInt
263: PetscScalar f(*) ! PetscScalar
264: InsertMode g ! InsertMode
265: integer z
266: end subroutine
267: subroutine MatSetValuesLocal11nn(a,b,c,d,e,f,g,z)
268: use petscmatdef
269: Mat a ! Mat
270: PetscInt b ! PetscInt
271: PetscInt c ! PetscInt
272: PetscInt d ! PetscInt
273: PetscInt e ! PetscInt
274: PetscScalar f(1,1) ! PetscScalar
275: InsertMode g ! InsertMode
276: integer z
277: end subroutine
278: subroutine MatSetValuesLocal111(a,b,c,d,e,f,g,z)
279: use petscmatdef
280: Mat a ! Mat
281: PetscInt b ! PetscInt
282: PetscInt c ! PetscInt
283: PetscInt d ! PetscInt
284: PetscInt e ! PetscInt
285: PetscScalar f ! PetscScalar
286: InsertMode g ! InsertMode
287: integer z
288: end subroutine
289: subroutine MatSetValuesLocal1n(a,b,c,d,e,f,g,z)
290: use petscmatdef
291: Mat a ! Mat
292: PetscInt b ! PetscInt
293: PetscInt c ! PetscInt
294: PetscInt d ! PetscInt
295: PetscInt e (*) ! PetscInt
296: PetscScalar f (*) ! PetscScalar
297: InsertMode g ! InsertMode
298: integer z
299: end subroutine
300: subroutine MatSetValuesLocaln1(a,b,c,d,e,f,g,z)
301: use petscmatdef
302: Mat a ! Mat
303: PetscInt b ! PetscInt
304: PetscInt c (*) ! PetscInt
305: PetscInt d ! PetscInt
306: PetscInt e ! PetscInt
307: PetscScalar f (*) ! PetscScalar
308: InsertMode g ! InsertMode
309: integer z
310: end subroutine
311: End Interface MatSetValuesLocal
313: Interface MatSetValuesBlockedLocal
314: ! picky Fortran requires seperate prototypes if args
315: ! are arrays or scalars
316: subroutine MatSetValuesBlockedLocal0(a,b,c,d,e,f,g,z)
317: use petscmatdef
318: Mat a ! Mat
319: PetscInt b ! PetscInt
320: PetscInt c (*) ! PetscInt
321: PetscInt d ! PetscInt
322: PetscInt e (*) ! PetscInt
323: PetscScalar f (*) ! PetscScalar
324: InsertMode g ! InsertMode
325: integer z
326: end subroutine
327: subroutine MatSetValuesBlockedLocal11(a,b,c,d,e,f,g,z)
328: use petscmatdef
329: Mat a ! Mat
330: PetscInt b ! PetscInt
331: PetscInt c ! PetscInt
332: PetscInt d ! PetscInt
333: PetscInt e ! PetscInt
334: PetscScalar f(*) ! PetscScalar
335: InsertMode g ! InsertMode
336: integer z
337: end subroutine
338: subroutine MatSetValuesBlockedLocal111(a,b,c,d,e,f,g,z)
339: use petscmatdef
340: Mat a ! Mat
341: PetscInt b ! PetscInt
342: PetscInt c ! PetscInt
343: PetscInt d ! PetscInt
344: PetscInt e ! PetscInt
345: PetscScalar f(1,1) ! PetscScalar
346: InsertMode g ! InsertMode
347: integer z
348: end subroutine
349: subroutine MatSetValuesBlockedLocal1n(a,b,c,d,e,f,g,z)
350: use petscmatdef
351: Mat a ! Mat
352: PetscInt b ! PetscInt
353: PetscInt c ! PetscInt
354: PetscInt d ! PetscInt
355: PetscInt e (*) ! PetscInt
356: PetscScalar f (*) ! PetscScalar
357: InsertMode g ! InsertMode
358: integer z
359: end subroutine
360: subroutine MatSetValuesBlockedLocaln1(a,b,c,d,e,f,g,z)
361: use petscmatdef
362: Mat a ! Mat
363: PetscInt b ! PetscInt
364: PetscInt c (*) ! PetscInt
365: PetscInt d ! PetscInt
366: PetscInt e ! PetscInt
367: PetscScalar f (*) ! PetscScalar
368: InsertMode g ! InsertMode
369: integer z
370: end subroutine
371: End Interface MatSetValuesBlockedLocal
373: Interface MatSetValuesBlocked
374: ! picky Fortran requires seperate prototypes if args
375: ! are arrays or scalars
376: subroutine MatSetValuesBlocked2(a,b,c,d,e,f,g,z)
377: use petscmatdef
378: Mat a ! Mat
379: PetscInt b ! PetscInt
380: PetscInt c (*) ! PetscInt
381: PetscInt d ! PetscInt
382: PetscInt e (*) ! PetscInt
383: PetscScalar, pointer :: f (:,:)
384: InsertMode g ! InsertMode
385: integer z
386: end subroutine
387: subroutine MatSetValuesBlocked0(a,b,c,d,e,f,g,z)
388: use petscmatdef
389: Mat a ! Mat
390: PetscInt b ! PetscInt
391: PetscInt c (*) ! PetscInt
392: PetscInt d ! PetscInt
393: PetscInt e (*) ! PetscInt
394: PetscScalar f (*) ! PetscScalar
395: InsertMode g ! InsertMode
396: integer z
397: end subroutine
398: subroutine MatSetValuesBlocked11(a,b,c,d,e,f,g,z)
399: use petscmatdef
400: Mat a ! Mat
401: PetscInt b ! PetscInt
402: PetscInt c ! PetscInt
403: PetscInt d ! PetscInt
404: PetscInt e ! PetscInt
405: PetscScalar f(*) ! PetscScalar
406: InsertMode g ! InsertMode
407: integer z
408: end subroutine
409: subroutine MatSetValuesBlocked111(a,b,c,d,e,f,g,z)
410: use petscmatdef
411: Mat a ! Mat
412: PetscInt b ! PetscInt
413: PetscInt c ! PetscInt
414: PetscInt d ! PetscInt
415: PetscInt e ! PetscInt
416: PetscScalar f(1,1) ! PetscScalar
417: InsertMode g ! InsertMode
418: integer z
419: end subroutine
420: subroutine MatSetValuesBlocked1n(a,b,c,d,e,f,g,z)
421: use petscmatdef
422: Mat a ! Mat
423: PetscInt b ! PetscInt
424: PetscInt c ! PetscInt
425: PetscInt d ! PetscInt
426: PetscInt e (*) ! PetscInt
427: PetscScalar f (*) ! PetscScalar
428: InsertMode g ! InsertMode
429: integer z
430: end subroutine
431: subroutine MatSetValuesBlockedn1(a,b,c,d,e,f,g,z)
432: use petscmatdef
433: Mat xa ! Mat
434: PetscInt b ! PetscInt
435: PetscInt c (*) ! PetscInt
436: PetscInt d ! PetscInt
437: PetscInt e ! PetscInt
438: PetscScalar f (*) ! PetscScalar
439: InsertMode g ! InsertMode
440: integer z
441: end subroutine
442: End Interface MatSetValuesBlocked
444: Interface
445: Subroutine MatGetRow(v,row,ncols,cols,vals,ierr)
446: use petscmatdef
447: PetscInt cols(*)
448: PetscInt row,ncols
449: PetscScalar vals(*)
450: PetscErrorCode ierr
451: Mat v
452: End Subroutine
453: End Interface
455: Interface
456: Subroutine MatRestoreRow(v,row,ncols,cols,vals,ierr)
457: use petscmatdef
458: PetscInt cols(*)
459: PetscInt row,ncols
460: PetscScalar vals(*)
461: PetscErrorCode ierr
462: Mat v
463: End Subroutine
464: End Interface
466: Interface
467: Subroutine MatGetRowIJF90(v,sh,sym,bl,n,ia,ja,d,ierr)
468: use petscmatdef
469: PetscInt, pointer :: ia(:), ja(:)
470: PetscInt n,sh
471: PetscBool sym,bl,d
472: PetscErrorCode ierr
473: Mat v
474: End Subroutine
475: End Interface
477: Interface
478: Subroutine MatRestoreRowIJF90(v,s,sy,b,n,ia,ja,d,ierr)
479: use petscmatdef
480: PetscInt, pointer :: ia(:), ja(:)
481: PetscInt n,s
482: PetscBool sy,b,d
483: PetscErrorCode ierr
484: Mat v
485: End Subroutine
486: End Interface
488: Interface
489: Subroutine MatDenseGetArrayF90(v,array,ierr)
490: use petscmatdef
491: PetscScalar, pointer :: array(:,:)
492: PetscErrorCode ierr
493: Mat v
494: End Subroutine
495: End Interface
498: Interface
499: Subroutine MatDenseRestoreArrayF90(v,array,ierr)
500: use petscmatdef
501: PetscScalar, pointer :: array(:,:)
502: PetscErrorCode ierr
503: Mat v
504: End Subroutine
505: End Interface
507: Interface
508: Subroutine MatSeqAIJGetArrayF90(v,array,ierr)
509: use petscmatdef
510: PetscScalar, pointer :: array(:)
511: PetscErrorCode ierr
512: Mat v
513: End Subroutine
514: End Interface
517: Interface
518: Subroutine MatSeqAIJRestoreArrayF90(v,array,ierr)
519: use petscmatdef
520: PetscScalar, pointer :: array(:)
521: PetscErrorCode ierr
522: Mat v
523: End Subroutine
524: End Interface
526: Interface
527: Subroutine MatGetGhostsF90(v,array,ierr)
528: use petscmatdef
529: PetscInt, pointer :: array(:)
530: PetscErrorCode ierr
531: Mat v
532: End Subroutine
533: End Interface
535: Interface
536: Subroutine MatGetInfo(v, flag, info ,ierr)
537: use petscmatdef
538: Mat v
539: MatInfoType flag
540: #include "../src/mat/f90-mod/petscmatinfosize.h"
541: MatInfo info(MAT_INFO_SIZE)
542: PetscErrorCode ierr
543: End Subroutine
544: End Interface
546: Interface
547: subroutine MatLUFactor(v, row, col, info ,ierr)
548: use petscmatdef
549: Mat v
550: IS row
551: IS col
552: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
553: MatFactorInfo info(MAT_FACTORINFO_SIZE)
554: PetscErrorCode ierr
555: end subroutine
556: End Interface
558: Interface
559: subroutine MatILUFactor(v, row, col, info ,ierr)
560: use petscmatdef
561: Mat v
562: IS row
563: IS col
564: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
565: MatFactorInfo info(MAT_FACTORINFO_SIZE)
566: PetscErrorCode ierr
567: end subroutine
568: End Interface
570: Interface
571: subroutine MatLUFactorSymbolic(fact, v, row, col, info ,ierr)
572: use petscmatdef
573: Mat fact
574: Mat v
575: IS row
576: IS col
577: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
578: MatFactorInfo info(MAT_FACTORINFO_SIZE)
579: PetscErrorCode ierr
580: end subroutine
581: End Interface
583: Interface
584: subroutine MatLUFactorNumeric(fact, v, info ,ierr)
585: use petscmatdef
586: Mat fact
587: Mat v
588: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
589: MatFactorInfo info(MAT_FACTORINFO_SIZE)
590: PetscErrorCode ierr
591: end subroutine
592: End Interface
594: Interface
595: subroutine MatCholeskyFactor(v, perm, info ,ierr)
596: use petscmatdef
597: Mat v
598: IS perm
599: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
600: MatFactorInfo info(MAT_FACTORINFO_SIZE)
601: PetscErrorCode ierr
602: end subroutine
603: End Interface
605: Interface
606: subroutine MatCholeskyFactorSymbolic(fact,v,perm,info,ierr)
607: use petscmatdef
608: Mat fact
609: Mat v
610: IS perm
611: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
612: MatFactorInfo info(MAT_FACTORINFO_SIZE)
613: PetscErrorCode ierr
614: end subroutine
615: End Interface
617: Interface
618: subroutine MatCholeskyFactorNumeric(fact, v, info ,ierr)
619: use petscmatdef
620: Mat fact
621: Mat v
622: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
623: MatFactorInfo info(MAT_FACTORINFO_SIZE)
624: PetscErrorCode ierr
625: end subroutine
626: End Interface
628: Interface
629: subroutine MatILUFactorSymbolic(fact,v,row,col,info,ierr)
630: use petscmatdef
631: Mat fact
632: Mat v
633: IS row
634: IS col
635: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
636: MatFactorInfo info(MAT_FACTORINFO_SIZE)
637: PetscErrorCode ierr
638: end subroutine
639: End Interface
641: Interface
642: subroutine MatICCFactorSymbolic(fact, v, perm, info ,ierr)
643: use petscmatdef
644: Mat fact
645: Mat v
646: IS perm
647: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
648: MatFactorInfo info(MAT_FACTORINFO_SIZE)
649: PetscErrorCode ierr
650: end subroutine
651: End Interface
653: Interface
654: subroutine MatICCFactor(v, row, info ,ierr)
655: use petscmatdef
656: Mat v
657: IS row
658: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
659: MatFactorInfo info(MAT_FACTORINFO_SIZE)
660: PetscErrorCode ierr
661: end subroutine
662: End Interface
664: Interface
665: subroutine MatFactorInfoInitialize(info ,ierr)
666: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
667: MatFactorInfo info(MAT_FACTORINFO_SIZE)
668: PetscErrorCode ierr
669: end subroutine
670: End Interface
672: ! revert MAT_INFO_SIZE and MAT_FACTORINFO_SIZE defines
673: #undef MAT_INFO_SIZE
674: #undef MAT_FACTORINFO_SIZE