Actual source code: petscmat.h90

petsc-3.11.4 2019-09-28
Report Typos and Errors


  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 MatSeqBAIJSetPreallocation(a,b,c,d,z)
150:           use petscmatdef
151:           Mat a
152:           PetscInt b,c
153:           PetscInt d(*)
154:           integer z
155:         end subroutine

157:         subroutine MatMPIAIJSetPreallocation(a,b,c,d,e,z)
158:           use petscmatdef
159:           Mat a
160:           PetscInt b
161:           PetscInt c(*)
162:           PetscInt d
163:           PetscInt e(*)
164:           integer z
165:         end subroutine

167:         subroutine MatXAIJSetPreallocationb(a,b,c,d,e,f,z)
168:           use petscmatdef
169:           Mat a ! Mat
170:           PetscInt b ! PetscInt
171:           PetscInt c (*) ! PetscInt
172:           PetscInt d (*) ! PetscInt
173:           PetscInt e (*) ! PetscInt
174:           PetscInt f (*) ! PetscInt
175:           integer z
176:         end subroutine

178:         subroutine MatSetValue(myMat,i,j,va,mode,ierr)
179:           use petscmatdef
180:           Mat :: myMat
181:           PetscInt :: i,j
182:           PetscScalar :: va
183:           InsertMode :: mode
184:           integer, intent(out) :: ierr
185:         end subroutine

187:         subroutine MatSetValueLocal(myMat,i,j,va,mode,ierr)
188:           use petscmatdef
189:           Mat :: myMat
190:           PetscInt :: i,j
191:           PetscScalar :: va
192:           InsertMode :: mode
193:           integer, intent(out) :: ierr
194:         end subroutine

196:         end interface

198:         Interface MatSetValues
199:         ! picky Fortran requires seperate prototypes if args
200:         ! are arrays or scalars
201:         subroutine MatSetValues0(a,b,c,d,e,f,g,z)
202:           use petscmatdef
203:           Mat a ! Mat
204:           PetscInt b ! PetscInt
205:           PetscInt c (*) ! PetscInt
206:           PetscInt d ! PetscInt
207:           PetscInt e (*) ! PetscInt
208:           PetscScalar f (*) ! PetscScalar
209:           InsertMode g ! InsertMode
210:           integer z
211:         end subroutine
212:         subroutine MatSetValuesnn1(a,b,c,d,e,f,g,z)
213:           use petscmatdef
214:           Mat a ! Mat
215:           PetscInt b ! PetscInt
216:           PetscInt c (*) ! PetscInt
217:           PetscInt d ! PetscInt
218:           PetscInt e (*) ! PetscInt
219:           PetscScalar f  ! PetscScalar
220:           InsertMode g ! InsertMode
221:           integer z
222:         end subroutine
223:         subroutine MatSetValuesnnnn(a,b,c,d,e,f,g,z)
224:           use petscmatdef
225:           Mat a ! Mat
226:           PetscInt b ! PetscInt
227:           PetscInt c (*) ! PetscInt
228:           PetscInt d ! PetscInt
229:           PetscInt e (*) ! PetscInt
230:           PetscScalar f(1,1)  ! PetscScalar
231:           InsertMode g ! InsertMode
232:           integer z
233:         end subroutine
234:         subroutine MatSetValues11(a,b,c,d,e,f,g,z)
235:           use petscmatdef
236:           Mat a ! Mat
237:           PetscInt b ! PetscInt
238:           PetscInt c ! PetscInt
239:           PetscInt d ! PetscInt
240:           PetscInt e ! PetscInt
241:           PetscScalar f  ! PetscScalar
242:           InsertMode g ! InsertMode
243:           integer z
244:         end subroutine
245:         subroutine MatSetValues1n(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 MatSetValuesn1(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:       End Interface MatSetValues

269:       Interface MatSetValuesLocal
270:         ! picky Fortran requires seperate prototypes if args
271:         ! are arrays or scalars
272:         subroutine MatSetValuesLocal0(a,b,c,d,e,f,g,z)
273:           use petscmatdef
274:           Mat a ! Mat
275:           PetscInt b ! PetscInt
276:           PetscInt c (*) ! PetscInt
277:           PetscInt d ! PetscInt
278:           PetscInt e (*) ! PetscInt
279:           PetscScalar f (*) ! PetscScalar
280:           InsertMode g ! InsertMode
281:           integer z
282:         end subroutine
283:         subroutine MatSetValuesLocal11(a,b,c,d,e,f,g,z)
284:           use petscmatdef
285:           Mat a ! Mat
286:           PetscInt b ! PetscInt
287:           PetscInt c ! PetscInt
288:           PetscInt d ! PetscInt
289:           PetscInt e ! PetscInt
290:           PetscScalar f(*)  ! PetscScalar
291:           InsertMode g ! InsertMode
292:           integer z
293:         end subroutine
294:         subroutine MatSetValuesLocal11nn(a,b,c,d,e,f,g,z)
295:           use petscmatdef
296:           Mat a ! Mat
297:           PetscInt b ! PetscInt
298:           PetscInt c ! PetscInt
299:           PetscInt d ! PetscInt
300:           PetscInt e ! PetscInt
301:           PetscScalar f(1,1)  ! PetscScalar
302:           InsertMode g ! InsertMode
303:           integer z
304:         end subroutine
305:         subroutine MatSetValuesLocal111(a,b,c,d,e,f,g,z)
306:           use petscmatdef
307:           Mat a ! Mat
308:           PetscInt b ! PetscInt
309:           PetscInt c ! PetscInt
310:           PetscInt d ! PetscInt
311:           PetscInt e ! PetscInt
312:           PetscScalar f  ! PetscScalar
313:           InsertMode g ! InsertMode
314:           integer z
315:         end subroutine
316:         subroutine MatSetValuesLocal1n(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 MatSetValuesLocaln1(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:       End Interface MatSetValuesLocal

340:       Interface MatSetValuesBlockedLocal
341:         ! picky Fortran requires seperate prototypes if args
342:         ! are arrays or scalars
343:         subroutine MatSetValuesBlockedLocal0(a,b,c,d,e,f,g,z)
344:           use petscmatdef
345:           Mat a ! Mat
346:           PetscInt b ! PetscInt
347:           PetscInt c (*) ! PetscInt
348:           PetscInt d ! PetscInt
349:           PetscInt e (*) ! PetscInt
350:           PetscScalar f (*) ! PetscScalar
351:           InsertMode g ! InsertMode
352:           integer z
353:         end subroutine
354:         subroutine MatSetValuesBlockedLocal11(a,b,c,d,e,f,g,z)
355:           use petscmatdef
356:           Mat a ! Mat
357:           PetscInt b ! PetscInt
358:           PetscInt c ! PetscInt
359:           PetscInt d ! PetscInt
360:           PetscInt e ! PetscInt
361:           PetscScalar f(*)  ! PetscScalar
362:           InsertMode g ! InsertMode
363:           integer z
364:         end subroutine
365:         subroutine MatSetValuesBlockedLocal111(a,b,c,d,e,f,g,z)
366:           use petscmatdef
367:           Mat a ! Mat
368:           PetscInt b ! PetscInt
369:           PetscInt c ! PetscInt
370:           PetscInt d ! PetscInt
371:           PetscInt e ! PetscInt
372:           PetscScalar f(1,1)  ! PetscScalar
373:           InsertMode g ! InsertMode
374:           integer z
375:         end subroutine
376:         subroutine MatSetValuesBlockedLocal1n(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 MatSetValuesBlockedLocaln1(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:       End Interface MatSetValuesBlockedLocal

400:       Interface MatSetValuesBlocked
401:         ! picky Fortran requires seperate prototypes if args
402:         ! are arrays or scalars
403:         subroutine MatSetValuesBlocked2(a,b,c,d,e,f,g,z)
404:           use petscmatdef
405:           Mat a ! Mat
406:           PetscInt b ! PetscInt
407:           PetscInt c (*) ! PetscInt
408:           PetscInt d ! PetscInt
409:           PetscInt e (*) ! PetscInt
410:           PetscScalar, pointer :: f (:,:)
411:           InsertMode g ! InsertMode
412:           integer z
413:         end subroutine
414:         subroutine MatSetValuesBlocked0(a,b,c,d,e,f,g,z)
415:           use petscmatdef
416:           Mat a ! Mat
417:           PetscInt b ! PetscInt
418:           PetscInt c (*) ! PetscInt
419:           PetscInt d ! PetscInt
420:           PetscInt e (*) ! PetscInt
421:           PetscScalar f (*) ! PetscScalar
422:           InsertMode g ! InsertMode
423:           integer z
424:         end subroutine
425:         subroutine MatSetValuesBlocked11(a,b,c,d,e,f,g,z)
426:           use petscmatdef
427:           Mat a ! Mat
428:           PetscInt b ! PetscInt
429:           PetscInt c ! PetscInt
430:           PetscInt d ! PetscInt
431:           PetscInt e ! PetscInt
432:           PetscScalar f(*)  ! PetscScalar
433:           InsertMode g ! InsertMode
434:           integer z
435:         end subroutine
436:         subroutine MatSetValuesBlocked111(a,b,c,d,e,f,g,z)
437:           use petscmatdef
438:           Mat a ! Mat
439:           PetscInt b ! PetscInt
440:           PetscInt c ! PetscInt
441:           PetscInt d ! PetscInt
442:           PetscInt e ! PetscInt
443:           PetscScalar f(1,1)  ! PetscScalar
444:           InsertMode g ! InsertMode
445:           integer z
446:         end subroutine
447:         subroutine MatSetValuesBlocked1n(a,b,c,d,e,f,g,z)
448:           use petscmatdef
449:           Mat a ! Mat
450:           PetscInt b ! PetscInt
451:           PetscInt c ! PetscInt
452:           PetscInt d ! PetscInt
453:           PetscInt e (*) ! PetscInt
454:           PetscScalar f (*)  ! PetscScalar
455:           InsertMode g ! InsertMode
456:           integer z
457:         end subroutine
458:         subroutine MatSetValuesBlockedn1(a,b,c,d,e,f,g,z)
459:           use petscmatdef
460:           Mat xa ! Mat
461:           PetscInt b ! PetscInt
462:           PetscInt c (*) ! PetscInt
463:           PetscInt d ! PetscInt
464:           PetscInt e ! PetscInt
465:           PetscScalar f (*) ! PetscScalar
466:           InsertMode g ! InsertMode
467:           integer z
468:         end subroutine
469:       End Interface MatSetValuesBlocked

471:       Interface
472:         Subroutine MatGetRow(v,row,ncols,cols,vals,ierr)
473:           use petscmatdef
474:           PetscInt cols(*)
475:           PetscInt  row,ncols
476:           PetscScalar vals(*)
477:           PetscErrorCode ierr
478:           Mat     v
479:         End Subroutine
480:       End Interface

482:       Interface
483:         Subroutine MatRestoreRow(v,row,ncols,cols,vals,ierr)
484:           use petscmatdef
485:           PetscInt  cols(*)
486:           PetscInt  row,ncols
487:           PetscScalar vals(*)
488:           PetscErrorCode ierr
489:           Mat     v
490:         End Subroutine
491:       End Interface

493:       Interface
494:         Subroutine MatGetRowIJF90(v,sh,sym,bl,n,ia,ja,d,ierr)
495:           use petscmatdef
496:           PetscInt, pointer :: ia(:), ja(:)
497:           PetscInt  n,sh
498:           PetscBool  sym,bl,d
499:           PetscErrorCode ierr
500:           Mat     v
501:         End Subroutine
502:       End Interface

504:       Interface
505:         Subroutine MatRestoreRowIJF90(v,s,sy,b,n,ia,ja,d,ierr)
506:           use petscmatdef
507:           PetscInt, pointer :: ia(:), ja(:)
508:           PetscInt  n,s
509:           PetscBool  sy,b,d
510:           PetscErrorCode ierr
511:           Mat     v
512:         End Subroutine
513:       End Interface

515:       Interface
516:         Subroutine MatDenseGetArrayF90(v,array,ierr)
517:           use petscmatdef
518:           PetscScalar, pointer :: array(:,:)
519:           PetscErrorCode ierr
520:           Mat     v
521:         End Subroutine
522:       End Interface


525:       Interface
526:         Subroutine MatDenseRestoreArrayF90(v,array,ierr)
527:           use petscmatdef
528:           PetscScalar, pointer :: array(:,:)
529:           PetscErrorCode ierr
530:           Mat     v
531:         End Subroutine
532:       End Interface

534:       Interface
535:         Subroutine MatSeqAIJGetArrayF90(v,array,ierr)
536:           use petscmatdef
537:           PetscScalar, pointer :: array(:)
538:           PetscErrorCode ierr
539:           Mat     v
540:         End Subroutine
541:       End Interface


544:       Interface
545:         Subroutine MatSeqAIJRestoreArrayF90(v,array,ierr)
546:           use petscmatdef
547:           PetscScalar, pointer :: array(:)
548:           PetscErrorCode ierr
549:           Mat     v
550:         End Subroutine
551:       End Interface

553:       Interface
554:         Subroutine MatGetGhostsF90(v,array,ierr)
555:           use petscmatdef
556:           PetscInt, pointer :: array(:)
557:           PetscErrorCode ierr
558:           Mat     v
559:         End Subroutine
560:       End Interface

562:       Interface
563:          Subroutine MatGetInfo(v, flag, info ,ierr)
564:          use petscmatdef
565:          Mat  v
566:          MatInfoType flag
567: #include "../src/mat/f90-mod/petscmatinfosize.h"
568:          MatInfo info(MAT_INFO_SIZE)
569:          PetscErrorCode ierr
570:        End Subroutine
571:       End Interface

573:       Interface
574:          subroutine MatLUFactor(v, row, col, info ,ierr)
575:          use petscmatdef
576:          Mat  v
577:          IS row
578:          IS col
579: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
580:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
581:          PetscErrorCode ierr
582:          end subroutine
583:       End Interface

585:       Interface
586:          subroutine MatILUFactor(v, row, col, info ,ierr)
587:          use petscmatdef
588:          Mat  v
589:          IS row
590:          IS col
591: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
592:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
593:          PetscErrorCode ierr
594:          end subroutine
595:       End Interface

597:       Interface
598:          subroutine MatLUFactorSymbolic(fact, v, row, col, info ,ierr)
599:          use petscmatdef
600:          Mat  fact
601:          Mat  v
602:          IS row
603:          IS col
604: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
605:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
606:          PetscErrorCode ierr
607:          end subroutine
608:       End Interface

610:       Interface
611:          subroutine MatLUFactorNumeric(fact, v, info ,ierr)
612:          use petscmatdef
613:          Mat  fact
614:          Mat  v
615: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
616:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
617:          PetscErrorCode ierr
618:          end subroutine
619:       End Interface

621:       Interface
622:          subroutine MatCholeskyFactor(v, perm, info ,ierr)
623:          use petscmatdef
624:          Mat  v
625:          IS perm
626: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
627:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
628:          PetscErrorCode ierr
629:          end subroutine
630:       End Interface

632:       Interface
633:          subroutine MatCholeskyFactorSymbolic(fact,v,perm,info,ierr)
634:          use petscmatdef
635:          Mat  fact
636:          Mat  v
637:          IS perm
638: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
639:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
640:          PetscErrorCode ierr
641:          end subroutine
642:       End Interface

644:       Interface
645:          subroutine MatCholeskyFactorNumeric(fact, v, info ,ierr)
646:          use petscmatdef
647:          Mat  fact
648:          Mat  v
649: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
650:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
651:          PetscErrorCode ierr
652:          end subroutine
653:       End Interface

655:       Interface
656:          subroutine MatILUFactorSymbolic(fact,v,row,col,info,ierr)
657:          use petscmatdef
658:          Mat  fact
659:          Mat  v
660:          IS row
661:          IS col
662: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
663:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
664:          PetscErrorCode ierr
665:          end subroutine
666:       End Interface

668:       Interface
669:          subroutine MatICCFactorSymbolic(fact, v, perm, info ,ierr)
670:          use petscmatdef
671:          Mat  fact
672:          Mat  v
673:          IS perm
674: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
675:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
676:          PetscErrorCode ierr
677:          end subroutine
678:       End Interface

680:       Interface
681:          subroutine MatICCFactor(v, row, info ,ierr)
682:          use petscmatdef
683:          Mat  v
684:          IS row
685: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
686:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
687:          PetscErrorCode ierr
688:          end subroutine
689:       End Interface

691:       Interface
692:          subroutine MatGetGetNullSpace(A,n,ierr)
693:          use petscmatdef
694:          Mat  A
695:          MatNullSpace n
696:          PetscErrorCode ierr
697:          end subroutine
698:       End Interface

700:       Interface
701:          subroutine MatFactorInfoInitialize(info ,ierr)
702: #include "../src/mat/f90-mod/petscmatfactorinfosize.h"
703:          MatFactorInfo info(MAT_FACTORINFO_SIZE)
704:          PetscErrorCode ierr
705:          end subroutine
706:       End Interface

708:       Interface
709:       subroutine MatSetType(a,b,z)
710:       use petscmatdef
711:        Mat a
712:        character(*) b
713:        integer z
714:        end subroutine
715:       end Interface

717:       Interface
718:       subroutine MatView(a,b,z)
719:       use petscmatdef
720:        Mat a
721:        PetscViewer b
722:        integer z
723:        end subroutine
724:       end Interface

726:       Interface MatZeroRowsLocal
727:       subroutine MatZeroRowsLocal0(a,b,c,d,e,f,z)
728:       use petscmatdef
729:        Mat a ! Mat
730:        PetscInt b ! PetscInt
731:        PetscInt c (*) ! PetscInt
732:        PetscScalar d ! PetscScalar
733:        Vec e ! Vec
734:        Vec f ! Vec
735:        integer z
736:        end subroutine
737:       subroutine MatZeroRowsLocal1(a,b,c,d,e,f,z)
738:       use petscmatdef
739:        Mat a ! Mat
740:        PetscInt b ! PetscInt
741:        PetscInt c ! PetscInt
742:        PetscScalar d ! PetscScalar
743:        Vec e ! Vec
744:        Vec f ! Vec
745:        integer z
746:        end subroutine
747:       End Interface

749:       interface MatGetOwnershipRange
750:       subroutine MatGetOwnershipRange00(a,b,c,ierr)
751:        use petscmatdef
752:        Mat,intent(in) :: a ! Mat
753:        PetscInt :: b,c ! PetscInt
754:        PetscErrorCode,intent(out) :: ierr
755:       end subroutine
756:       subroutine MatGetOwnershipRange10(a,b,c,ierr)
757:        use petscmatdef
758:        Mat,intent(in) :: a ! Mat
759:        PetscInt,dimension(:) :: b ! PetscInt
760:        PetscInt              :: c ! PetscInt
761:        PetscErrorCode,intent(out) :: ierr
762:       end subroutine
763:       subroutine MatGetOwnershipRange01(a,b,c,ierr)
764:        use petscmatdef
765:        Mat,intent(in) :: a ! Mat
766:        PetscInt              :: b ! PetscInt
767:        PetscInt,dimension(:) :: c ! PetscInt
768:        PetscErrorCode,intent(out) :: ierr
769:       end subroutine
770:       subroutine MatGetOwnershipRange11(a,b,c,ierr)
771:        use petscmatdef
772:        Mat,intent(in) :: a ! Mat
773:        PetscInt,dimension(:) :: b,c ! PetscInt
774:        PetscErrorCode,intent(out) :: ierr
775:       end subroutine
776:       end interface

778:       interface
779:       subroutine MatGetFactor(m,t,ft,f,ierr)
780:       use petscmatdef
781:        Mat, intent(in) ::  m
782:        character(*), intent(in) :: t
783:        MatFactorType,intent(in) :: ft
784:        Mat, intent(out) ::  f
785:        PetscErrorCode,intent(out) :: ierr
786:       end subroutine

788:       subroutine MatPartitioningCreate(a,b,ierr)
789:       use petscmatdef
790:        integer, intent(in) :: a ! MPI_comm
791:        MatPartitioning, intent(out) ::  b
792:        PetscErrorCode,intent(out) :: ierr
793:       end subroutine

795:       subroutine MatPartitioningDestroy(a,ierr)
796:       use petscmatdef
797:        MatPartitioning, intent(in) ::  a
798:        PetscErrorCode,intent(out) :: ierr
799:       end subroutine

801:       subroutine MatPartitioningSetAdjacency(a,b,ierr)
802:       use petscmatdef
803:        MatPartitioning, intent(in) ::  a
804:        Mat, intent(in) ::  b
805:        PetscErrorCode,intent(out) :: ierr
806:       end subroutine

808:       subroutine MatPartitioningSetFromOptions(a,ierr)
809:       use petscmatdef
810:        MatPartitioning, intent(in) ::  a
811:        PetscErrorCode,intent(out) :: ierr
812:       end subroutine

814:       subroutine MatPartitioningApply(a,b,ierr)
815:       use petscmatdef
816:        MatPartitioning, intent(in) ::  a
817:        IS, intent(out) :: b
818:        PetscErrorCode :: ierr
819:       end subroutine
820: 
821:       end interface

823: ! revert MAT_INFO_SIZE and MAT_FACTORINFO_SIZE defines
824: #undef MAT_INFO_SIZE
825: #undef MAT_FACTORINFO_SIZE