Actual source code: f90_fwrap.F
petsc-3.10.5 2019-03-28
Report Typos and Errors

      1: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      2: !XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!
      3: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      4: #include <petsc/finclude/petscsys.h>
      5:       subroutine F90Array1dCreateScalar(array,start,len1,ptr)
      6:       implicit none
      7:       PetscInt start,len1
      8:       PetscScalar, target ::                                                      &
      9:      &     array(start:start+len1-1)
     10:       PetscScalar, pointer :: ptr(:)

     12:       ptr => array
     13:       end subroutine

     15:       subroutine F90Array1dCreateReal(array,start,len1,ptr)
     16:       implicit none
     17:       PetscInt start,len1
     18:       PetscReal, target ::                                                        &
     19:      &     array(start:start+len1-1)
     20:       PetscReal, pointer :: ptr(:)

     22:       ptr => array
     23:       end subroutine

     25:       subroutine F90Array1dCreateInt(array,start,len1,ptr)
     26:       implicit none
     27:       PetscInt start,len1
     28:       PetscInt, target ::                                                         &
     29:      &     array(start:start+len1-1)
     30:       PetscInt, pointer :: ptr(:)

     32:       ptr => array
     33:       end subroutine

     35:       subroutine F90Array1dCreateFortranAddr(array,start,len1,ptr)
     36:       implicit none
     37:       PetscInt start,len1
     38:       PetscFortranAddr, target ::                                                 &
     39:      &     array(start:start+len1-1)
     40:       PetscFortranAddr, pointer :: ptr(:)

     42:       ptr => array
     43:       end subroutine

     45: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     46:       subroutine F90Array1dAccessScalar(ptr,address)
     47:       implicit none
     48:       PetscScalar, pointer :: ptr(:)
     49:       PetscFortranAddr address
     50:       PetscInt start

     52:       start = lbound(ptr,1)
     53:       call F90Array1dGetAddrScalar(ptr(start),address)
     54:       end subroutine

     56:       subroutine F90Array1dAccessReal(ptr,address)
     57:       implicit none
     58:       PetscReal, pointer :: ptr(:)
     59:       PetscFortranAddr address
     60:       PetscInt start

     62:       start = lbound(ptr,1)
     63:       call F90Array1dGetAddrReal(ptr(start),address)
     64:       end subroutine

     66:       subroutine F90Array1dAccessInt(ptr,address)
     67:       implicit none
     68:       PetscInt, pointer :: ptr(:)
     69:       PetscFortranAddr address
     70:       PetscInt start

     72:       start = lbound(ptr,1)
     73:       call F90Array1dGetAddrInt(ptr(start),address)
     74:       end subroutine

     76:       subroutine F90Array1dAccessFortranAddr(ptr,address)
     77:       implicit none
     78:       PetscFortranAddr, pointer :: ptr(:)
     79:       PetscFortranAddr address
     80:       PetscInt start

     82:       start = lbound(ptr,1)
     83:       call F90Array1dGetAddrFortranAddr(ptr(start),address)
     84:       end subroutine

     86: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     87:       subroutine F90Array1dDestroyScalar(ptr)
     88:       implicit none
     89:       PetscScalar, pointer :: ptr(:)

     91:       nullify(ptr)
     92:       end subroutine

     94:       subroutine F90Array1dDestroyReal(ptr)
     95:       implicit none
     96:       PetscReal, pointer :: ptr(:)

     98:       nullify(ptr)
     99:       end subroutine

    101:       subroutine F90Array1dDestroyInt(ptr)
    102:       implicit none
    103:       PetscInt, pointer :: ptr(:)

    105:       nullify(ptr)
    106:       end subroutine

    108:       subroutine F90Array1dDestroyFortranAddr(ptr)
    109:       implicit none
    110:       PetscFortranAddr, pointer :: ptr(:)

    112:       nullify(ptr)
    113:       end subroutine
    114: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    115: !XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!
    116: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    117:       subroutine F90Array2dCreateScalar(array,start1,len1,                        &
    118:      &     start2,len2,ptr)
    119:       implicit none
    120:       PetscInt start1,len1
    121:       PetscInt start2,len2
    122:       PetscScalar, target ::                                                      &
    123:      &     array(start1:start1+len1-1,start2:start2+len2-1)
    124:       PetscScalar, pointer :: ptr(:,:)

    126:       ptr => array
    127:       end subroutine

    129:       subroutine F90Array2dCreateReal(array,start1,len1,                          &
    130:      &     start2,len2,ptr)
    131:       implicit none
    132:       PetscInt start1,len1
    133:       PetscInt start2,len2
    134:       PetscReal, target ::                                                        &
    135:      &     array(start1:start1+len1-1,start2:start2+len2-1)
    136:       PetscReal, pointer :: ptr(:,:)

    138:       ptr => array
    139:       end subroutine

    141:       subroutine F90Array2dCreateInt(array,start1,len1,                           &
    142:      &     start2,len2,ptr)
    143:       implicit none
    144:       PetscInt start1,len1
    145:       PetscInt start2,len2
    146:       PetscInt, target ::                                                         &
    147:      &     array(start1:start1+len1-1,start2:start2+len2-1)
    148:       PetscInt, pointer :: ptr(:,:)

    150:       ptr => array
    151:       end subroutine

    153:       subroutine F90Array2dCreateFortranAddr(array,start1,len1,                   &
    154:      &     start2,len2,ptr)
    155:       implicit none
    156:       PetscInt start1,len1
    157:       PetscInt start2,len2
    158:       PetscFortranAddr, target ::                                                 &
    159:      &     array(start1:start1+len1-1,start2:start2+len2-1)
    160:       PetscFortranAddr, pointer :: ptr(:,:)

    162:       ptr => array
    163:       end subroutine

    165: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    166:       subroutine F90Array2dAccessScalar(ptr,address)
    167:       implicit none
    168:       PetscScalar, pointer :: ptr(:,:)
    169:       PetscFortranAddr address
    170:       PetscInt start1,start2

    172:       start1 = lbound(ptr,1)
    173:       start2 = lbound(ptr,2)
    174:       call F90Array2dGetAddrScalar(ptr(start1,start2),address)
    175:       end subroutine

    177:       subroutine F90Array2dAccessReal(ptr,address)
    178:       implicit none
    179:       PetscReal, pointer :: ptr(:,:)
    180:       PetscFortranAddr address
    181:       PetscInt start1,start2

    183:       start1 = lbound(ptr,1)
    184:       start2 = lbound(ptr,2)
    185:       call F90Array2dGetAddrReal(ptr(start1,start2),address)
    186:       end subroutine

    188:       subroutine F90Array2dAccessInt(ptr,address)
    189:       implicit none
    190:       PetscInt, pointer :: ptr(:,:)
    191:       PetscFortranAddr address
    192:       PetscInt start1,start2

    194:       start1 = lbound(ptr,1)
    195:       start2 = lbound(ptr,2)
    196:       call F90Array2dGetAddrInt(ptr(start1,start2),address)
    197:       end subroutine

    199:       subroutine F90Array2dAccessFortranAddr(ptr,address)
    200:       implicit none
    201:       PetscFortranAddr, pointer :: ptr(:,:)
    202:       PetscFortranAddr address
    203:       PetscInt start1,start2

    205:       start1 = lbound(ptr,1)
    206:       start2 = lbound(ptr,2)
    207:       call F90Array2dGetAddrFortranAddr(ptr(start1,start2),address)
    208:       end subroutine

    210: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    211:       subroutine F90Array2dDestroyScalar(ptr)
    212:       implicit none
    213:       PetscScalar, pointer :: ptr(:,:)

    215:       nullify(ptr)
    216:       end subroutine

    218:       subroutine F90Array2dDestroyReal(ptr)
    219:       implicit none
    220:       PetscReal, pointer :: ptr(:,:)

    222:       nullify(ptr)
    223:       end subroutine

    225:       subroutine F90Array2dDestroyInt(ptr)
    226:       implicit none
    227:       PetscInt, pointer :: ptr(:,:)

    229:       nullify(ptr)
    230:       end subroutine

    232:       subroutine F90Array2dDestroyFortranAddr(ptr)
    233:       implicit none
    234:       PetscFortranAddr, pointer :: ptr(:,:)

    236:       nullify(ptr)
    237:       end subroutine
    238: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    239: !XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!
    240: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    241:       subroutine F90Array3dCreateScalar(array,start1,len1,                        &
    242:      &     start2,len2,start3,len3,ptr)
    243:       implicit none
    244:       PetscInt start1,len1
    245:       PetscInt start2,len2
    246:       PetscInt start3,len3
    247:       PetscScalar, target ::                                                      &
    248:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    249:      &           start3:start3+len3-1)
    250:       PetscScalar, pointer :: ptr(:,:,:)

    252:       ptr => array
    253:       end subroutine

    255:       subroutine F90Array3dCreateReal(array,start1,len1,                          &
    256:      &     start2,len2,start3,len3,ptr)
    257:       implicit none
    258:       PetscInt start1,len1
    259:       PetscInt start2,len2
    260:       PetscInt start3,len3
    261:       PetscReal, target ::                                                        &
    262:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    263:      &           start3:start3+len3-1)
    264:       PetscReal, pointer :: ptr(:,:,:)

    266:       ptr => array
    267:       end subroutine

    269:       subroutine F90Array3dCreateInt(array,start1,len1,                           &
    270:      &     start2,len2,start3,len3,ptr)
    271:       implicit none
    272:       PetscInt start1,len1
    273:       PetscInt start2,len2
    274:       PetscInt start3,len3
    275:       PetscInt, target ::                                                         &
    276:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    277:      &           start3:start3+len3-1)
    278:       PetscInt, pointer :: ptr(:,:,:)

    280:       ptr => array
    281:       end subroutine

    283:       subroutine F90Array3dCreateFortranAddr(array,start1,len1,                   &
    284:      &     start2,len2,start3,len3,ptr)
    285:       implicit none
    286:       PetscInt start1,len1
    287:       PetscInt start2,len2
    288:       PetscInt start3,len3
    289:       PetscFortranAddr, target ::                                                 &
    290:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    291:      &           start3:start3+len3-1)
    292:       PetscFortranAddr, pointer :: ptr(:,:,:)

    294:       ptr => array
    295:       end subroutine

    297: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    298:       subroutine F90Array3dAccessScalar(ptr,address)
    299:       implicit none
    300:       PetscScalar, pointer :: ptr(:,:,:)
    301:       PetscFortranAddr address
    302:       PetscInt start1,start2,start3

    304:       start1 = lbound(ptr,1)
    305:       start2 = lbound(ptr,2)
    306:       start3 = lbound(ptr,3)
    307:       call F90Array3dGetAddrScalar(ptr(start1,start2,start3),address)
    308:       end subroutine

    310:       subroutine F90Array3dAccessReal(ptr,address)
    311:       implicit none
    312:       PetscReal, pointer :: ptr(:,:,:)
    313:       PetscFortranAddr address
    314:       PetscInt start1,start2,start3

    316:       start1 = lbound(ptr,1)
    317:       start2 = lbound(ptr,2)
    318:       start3 = lbound(ptr,3)
    319:       call F90Array3dGetAddrReal(ptr(start1,start2,start3),address)
    320:       end subroutine

    322:       subroutine F90Array3dAccessInt(ptr,address)
    323:       implicit none
    324:       PetscInt, pointer :: ptr(:,:,:)
    325:       PetscFortranAddr address
    326:       PetscInt start1,start2,start3

    328:       start1 = lbound(ptr,1)
    329:       start2 = lbound(ptr,2)
    330:       start3 = lbound(ptr,3)
    331:       call F90Array3dGetAddrInt(ptr(start1,start2,start3),address)
    332:       end subroutine

    334:       subroutine F90Array3dAccessFortranAddr(ptr,address)
    335:       implicit none
    336:       PetscFortranAddr, pointer :: ptr(:,:,:)
    337:       PetscFortranAddr address
    338:       PetscInt start1,start2,start3

    340:       start1 = lbound(ptr,1)
    341:       start2 = lbound(ptr,2)
    342:       start3 = lbound(ptr,3)
    343:       call F90Array3dGetAddrFortranAddr(ptr(start1,start2,start3),        &
    344:      &                                  address)
    345:       end subroutine

    347: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    348:       subroutine F90Array3dDestroyScalar(ptr)
    349:       implicit none
    350:       PetscScalar, pointer :: ptr(:,:,:)

    352:       nullify(ptr)
    353:       end subroutine

    355:       subroutine F90Array3dDestroyReal(ptr)
    356:       implicit none
    357:       PetscReal, pointer :: ptr(:,:,:)

    359:       nullify(ptr)
    360:       end subroutine

    362:       subroutine F90Array3dDestroyInt(ptr)
    363:       implicit none
    364:       PetscInt, pointer :: ptr(:,:,:)

    366:       nullify(ptr)
    367:       end subroutine

    369:       subroutine F90Array3dDestroyFortranAddr(ptr)
    370:       implicit none
    371:       PetscFortranAddr, pointer :: ptr(:,:,:)

    373:       nullify(ptr)
    374:       end subroutine

    376: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    377:       subroutine F90Array4dCreateScalar(array,start1,len1,                        &
    378:      &     start2,len2,start3,len3,start4,len4,ptr)
    379:       implicit none
    380:       PetscInt start1,len1
    381:       PetscInt start2,len2
    382:       PetscInt start3,len3
    383:       PetscInt start4,len4
    384:       PetscScalar, target ::                                                      &
    385:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    386:      &           start3:start3+len3-1,start4:start4+len4-1)
    387:       PetscScalar, pointer :: ptr(:,:,:,:)

    389:       ptr => array
    390:       end subroutine

    392:       subroutine F90Array4dCreateReal(array,start1,len1,                          &
    393:      &     start2,len2,start3,len3,start4,len4,ptr)
    394:       implicit none
    395:       PetscInt start1,len1
    396:       PetscInt start2,len2
    397:       PetscInt start3,len3
    398:       PetscInt start4,len4
    399:       PetscReal, target ::                                                        &
    400:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    401:      &           start3:start3+len3-1,start4:start4+len4-1)
    402:       PetscReal, pointer :: ptr(:,:,:,:)

    404:       ptr => array
    405:       end subroutine

    407:       subroutine F90Array4dCreateInt(array,start1,len1,                           &
    408:      &     start2,len2,start3,len3,start4,len4,ptr)
    409:       implicit none
    410:       PetscInt start1,len1
    411:       PetscInt start2,len2
    412:       PetscInt start3,len3
    413:       PetscInt start4,len4
    414:       PetscInt, target ::                                                         &
    415:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    416:      &           start3:start3+len3-1,start4:start4+len4-1)
    417:       PetscInt, pointer :: ptr(:,:,:,:)

    419:       ptr => array
    420:       end subroutine

    422:       subroutine F90Array4dCreateFortranAddr(array,start1,len1,                   &
    423:      &     start2,len2,start3,len3,start4,len4,ptr)
    424:       implicit none
    425:       PetscInt start1,len1
    426:       PetscInt start2,len2
    427:       PetscInt start3,len3
    428:       PetscInt start4,len4
    429:       PetscFortranAddr, target ::                                                 &
    430:      &     array(start1:start1+len1-1,start2:start2+len2-1,                       &
    431:      &           start3:start3+len3-1,start4:start4+len4-1)
    432:       PetscFortranAddr, pointer :: ptr(:,:,:,:)

    434:       ptr => array
    435:       end subroutine

    437:       subroutine F90Array4dAccessScalar(ptr,address)
    438:       implicit none
    439:       PetscScalar, pointer :: ptr(:,:,:,:)
    440:       PetscFortranAddr address
    441:       PetscInt start1,start2,start3,start4

    443:       start1 = lbound(ptr,1)
    444:       start2 = lbound(ptr,2)
    445:       start3 = lbound(ptr,3)
    446:       start4 = lbound(ptr,4)
    447:       call F90Array4dGetAddrScalar(ptr(start1,start2,start3,start4),              &
    448:      &                             address)
    449:       end subroutine

    451:       subroutine F90Array4dAccessReal(ptr,address)
    452:       implicit none
    453:       PetscReal, pointer :: ptr(:,:,:,:)
    454:       PetscFortranAddr address
    455:       PetscInt start1,start2,start3,start4

    457:       start1 = lbound(ptr,1)
    458:       start2 = lbound(ptr,2)
    459:       start3 = lbound(ptr,3)
    460:       start4 = lbound(ptr,4)
    461:       call F90Array4dGetAddrReal(ptr(start1,start2,start3,start4),                &
    462:      &                             address)
    463:       end subroutine

    465:       subroutine F90Array4dAccessInt(ptr,address)
    466:       implicit none
    467:       PetscInt, pointer :: ptr(:,:,:,:)
    468:       PetscFortranAddr address
    469:       PetscInt start1,start2,start3,start4

    471:       start1 = lbound(ptr,1)
    472:       start2 = lbound(ptr,2)
    473:       start3 = lbound(ptr,3)
    474:       start4 = lbound(ptr,4)
    475:       call F90Array4dGetAddrInt(ptr(start1,start2,start3,start4),                 &
    476:      &                             address)
    477:       end subroutine

    479:       subroutine F90Array4dAccessFortranAddr(ptr,address)
    480:       implicit none
    481:       PetscScalar, pointer :: ptr(:,:,:,:)
    482:       PetscFortranAddr address
    483:       PetscFortranAddr start1,start2,start3,start4

    485:       start1 = lbound(ptr,1)
    486:       start2 = lbound(ptr,2)
    487:       start3 = lbound(ptr,3)
    488:       start4 = lbound(ptr,4)
    489:       call F90Array4dGetAddrFortranAddr(ptr(start1,start2,start3,                 &
    490:      &                                      start4),address)
    491:       end subroutine

    493:       subroutine F90Array4dDestroyScalar(ptr)
    494:       implicit none
    495:       PetscScalar, pointer :: ptr(:,:,:,:)

    497:       nullify(ptr)
    498:       end subroutine

    500:       subroutine F90Array4dDestroyReal(ptr)
    501:       implicit none
    502:       PetscReal, pointer :: ptr(:,:,:,:)

    504:       nullify(ptr)
    505:       end subroutine

    507:       subroutine F90Array4dDestroyInt(ptr)
    508:       implicit none
    509:       PetscInt, pointer :: ptr(:,:,:,:)

    511:       nullify(ptr)
    512:       end subroutine

    514:       subroutine F90Array4dDestroyFortranAddr(ptr)
    515:       implicit none
    516:       PetscFortranAddr, pointer :: ptr(:,:,:,:)

    518:       nullify(ptr)
    519:       end subroutine

    521: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    522: !XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!
    523: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!