Actual source code: petscmat.h90

petsc-3.8.4 2018-03-24
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 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