Actual source code: petscmat.h90
petsc-3.8.3 2017-12-09
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 MatSetValuesBlocked0(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 f (*) ! PetscScalar
384: InsertMode g ! InsertMode
385: integer z
386: end subroutine
387: subroutine MatSetValuesBlocked11(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 MatSetValuesBlocked111(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(1,1) ! PetscScalar
406: InsertMode g ! InsertMode
407: integer z
408: end subroutine
409: subroutine MatSetValuesBlocked1n(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 (*) ! PetscScalar
417: InsertMode g ! InsertMode
418: integer z
419: end subroutine
420: subroutine MatSetValuesBlockedn1(a,b,c,d,e,f,g,z)
421: use petscmatdef
422: Mat xa ! 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: End Interface MatSetValuesBlocked
433: Interface
434: Subroutine MatGetRow(v,row,ncols,cols,vals,ierr)
435: use petscmatdef
436: PetscInt cols(*)
437: PetscInt row,ncols
438: PetscScalar vals(*)
439: PetscErrorCode ierr
440: Mat v
441: End Subroutine
442: End Interface
444: Interface
445: Subroutine MatRestoreRow(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 MatGetRowIJF90(v,sh,sym,bl,n,ia,ja,d,ierr)
457: use petscmatdef
458: PetscInt, pointer :: ia(:), ja(:)
459: PetscInt n,sh
460: PetscBool sym,bl,d
461: PetscErrorCode ierr
462: Mat v
463: End Subroutine
464: End Interface
466: Interface
467: Subroutine MatRestoreRowIJF90(v,s,sy,b,n,ia,ja,d,ierr)
468: use petscmatdef
469: PetscInt, pointer :: ia(:), ja(:)
470: PetscInt n,s
471: PetscBool sy,b,d
472: PetscErrorCode ierr
473: Mat v
474: End Subroutine
475: End Interface
477: Interface
478: Subroutine MatDenseGetArrayF90(v,array,ierr)
479: use petscmatdef
480: PetscScalar, pointer :: array(:,:)
481: PetscErrorCode ierr
482: Mat v
483: End Subroutine
484: End Interface
487: Interface
488: Subroutine MatDenseRestoreArrayF90(v,array,ierr)
489: use petscmatdef
490: PetscScalar, pointer :: array(:,:)
491: PetscErrorCode ierr
492: Mat v
493: End Subroutine
494: End Interface
496: Interface
497: Subroutine MatSeqAIJGetArrayF90(v,array,ierr)
498: use petscmatdef
499: PetscScalar, pointer :: array(:)
500: PetscErrorCode ierr
501: Mat v
502: End Subroutine
503: End Interface
506: Interface
507: Subroutine MatSeqAIJRestoreArrayF90(v,array,ierr)
508: use petscmatdef
509: PetscScalar, pointer :: array(:)
510: PetscErrorCode ierr
511: Mat v
512: End Subroutine
513: End Interface
515: Interface
516: Subroutine MatGetGhostsF90(v,array,ierr)
517: use petscmatdef
518: PetscInt, pointer :: array(:)
519: PetscErrorCode ierr
520: Mat v
521: End Subroutine
522: End Interface
524: Interface
525: Subroutine MatGetInfo(v, flag, info ,ierr)
526: use petscmatdef
527: Mat v
528: MatInfoType flag
529: #include "../src/mat/f90-mod/petscmatinfosize.h"
530: MatInfo info(MAT_INFO_SIZE)
531: PetscErrorCode ierr
532: End Subroutine
533: End Interface
535: Interface
536: subroutine MatLUFactor(v, row, col, info ,ierr)
537: use petscmatdef
538: Mat v
539: IS row
540: IS col
541: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
542: MatFactorInfo info(MAT_FACTORINFO_SIZE)
543: PetscErrorCode ierr
544: end subroutine
545: End Interface
547: Interface
548: subroutine MatILUFactor(v, row, col, info ,ierr)
549: use petscmatdef
550: Mat v
551: IS row
552: IS col
553: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
554: MatFactorInfo info(MAT_FACTORINFO_SIZE)
555: PetscErrorCode ierr
556: end subroutine
557: End Interface
559: Interface
560: subroutine MatLUFactorSymbolic(fact, v, row, col, info ,ierr)
561: use petscmatdef
562: Mat fact
563: Mat v
564: IS row
565: IS col
566: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
567: MatFactorInfo info(MAT_FACTORINFO_SIZE)
568: PetscErrorCode ierr
569: end subroutine
570: End Interface
572: Interface
573: subroutine MatLUFactorNumeric(fact, v, info ,ierr)
574: use petscmatdef
575: Mat fact
576: Mat v
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 MatCholeskyFactor(v, perm, info ,ierr)
585: use petscmatdef
586: Mat v
587: IS perm
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 MatCholeskyFactorSymbolic(fact,v,perm,info,ierr)
596: use petscmatdef
597: Mat fact
598: Mat v
599: IS perm
600: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
601: MatFactorInfo info(MAT_FACTORINFO_SIZE)
602: PetscErrorCode ierr
603: end subroutine
604: End Interface
606: Interface
607: subroutine MatCholeskyFactorNumeric(fact, v, info ,ierr)
608: use petscmatdef
609: Mat fact
610: Mat v
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 MatILUFactorSymbolic(fact,v,row,col,info,ierr)
619: use petscmatdef
620: Mat fact
621: Mat v
622: IS row
623: IS col
624: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
625: MatFactorInfo info(MAT_FACTORINFO_SIZE)
626: PetscErrorCode ierr
627: end subroutine
628: End Interface
630: Interface
631: subroutine MatICCFactorSymbolic(fact, v, perm, info ,ierr)
632: use petscmatdef
633: Mat fact
634: Mat v
635: IS perm
636: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
637: MatFactorInfo info(MAT_FACTORINFO_SIZE)
638: PetscErrorCode ierr
639: end subroutine
640: End Interface
642: Interface
643: subroutine MatICCFactor(v, row, info ,ierr)
644: use petscmatdef
645: Mat v
646: IS row
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 MatFactorInfoInitialize(info ,ierr)
655: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
656: MatFactorInfo info(MAT_FACTORINFO_SIZE)
657: PetscErrorCode ierr
658: end subroutine
659: End Interface
661: ! revert MAT_INFO_SIZE and MAT_FACTORINFO_SIZE defines
662: #undef MAT_INFO_SIZE
663: #undef MAT_FACTORINFO_SIZE