16dd63270SBarry Smith module petscdmdef 2*fe66ebccSMartin Diehluse, intrinsic :: ISO_C_binding 36dd63270SBarry Smith use petscvecdef 46dd63270SBarry Smith use petscmatdef 56dd63270SBarry Smith#include <../ftn/dm/petscall.h> 66dd63270SBarry Smith#include <../ftn/dm/petscspace.h> 76dd63270SBarry Smith#include <../ftn/dm/petscdualspace.h> 86dd63270SBarry Smith 96dd63270SBarry Smith type ttPetscTabulation 106dd63270SBarry Smith sequence 116dd63270SBarry Smith PetscInt K 126dd63270SBarry Smith PetscInt Nr 136dd63270SBarry Smith PetscInt Np 146dd63270SBarry Smith PetscInt Nb 156dd63270SBarry Smith PetscInt Nc 166dd63270SBarry Smith PetscInt cdim 176dd63270SBarry Smith PetscReal2d, pointer :: T(:) 186dd63270SBarry Smith end type ttPetscTabulation 196dd63270SBarry Smith 206dd63270SBarry Smith type tPetscTabulation 216dd63270SBarry Smith type(ttPetscTabulation), pointer :: ptr 226dd63270SBarry Smith end type tPetscTabulation 236dd63270SBarry Smith 246dd63270SBarry Smith end module petscdmdef 256dd63270SBarry Smith! ---------------------------------------------- 266dd63270SBarry Smith 276dd63270SBarry Smith module petscdm 28*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 296dd63270SBarry Smith use petscmat 306dd63270SBarry Smith use petscdmdef 316dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdm.h90> 326dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdt.h90> 336dd63270SBarry Smith#include <../ftn/dm/petscall.h90> 346dd63270SBarry Smith#include <../ftn/dm/petscspace.h90> 356dd63270SBarry Smith#include <../ftn/dm/petscdualspace.h90> 366dd63270SBarry Smith 378d9ecca5SBarry Smith ! C stub utility 386dd63270SBarry Smith interface PetscDSGetTabulationSetSizes 396dd63270SBarry Smith subroutine PetscDSGetTabulationSetSizes(ds,i, tab,ierr) 40*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 416dd63270SBarry Smith import tPetscDS, ttPetscTabulation 426dd63270SBarry Smith PetscErrorCode ierr 436dd63270SBarry Smith type(ttPetscTabulation) tab 446dd63270SBarry Smith PetscDS ds 456dd63270SBarry Smith PetscInt i 466dd63270SBarry Smith end subroutine 476dd63270SBarry Smith end interface 486dd63270SBarry Smith 498d9ecca5SBarry Smith ! C stub utility 506dd63270SBarry Smith interface PetscDSGetTabulationSetPointers 516dd63270SBarry Smith subroutine PetscDSGetTabulationSetPointers(ds,i, T,ierr) 52*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 536dd63270SBarry Smith import tPetscDS, ttPetscTabulation,tPetscReal2d 546dd63270SBarry Smith PetscErrorCode ierr 556dd63270SBarry Smith type(tPetscReal2d), pointer :: T(:) 566dd63270SBarry Smith PetscDS ds 576dd63270SBarry Smith PetscInt i 586dd63270SBarry Smith end subroutine 596dd63270SBarry Smith end interface 606dd63270SBarry Smith 618d9ecca5SBarry Smith ! C stub utility 628d9ecca5SBarry Smith interface DMCreateFieldDecompositionGetName 638d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionGetName(dm, i, name, ierr) 64*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 658d9ecca5SBarry Smith import tDM 668d9ecca5SBarry Smith PetscErrorCode ierr 678d9ecca5SBarry Smith DM dm 688d9ecca5SBarry Smith character(*) name 698d9ecca5SBarry Smith PetscInt i 708d9ecca5SBarry Smith end subroutine 718d9ecca5SBarry Smith end interface 728d9ecca5SBarry Smith 738d9ecca5SBarry Smith ! C stub utility 748d9ecca5SBarry Smith interface DMCreateFieldDecompositionGetISDM 758d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionGetISDM(dm, iss, dms, ierr) 76*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 778d9ecca5SBarry Smith import tIS, tDM 788d9ecca5SBarry Smith PetscErrorCode ierr 798d9ecca5SBarry Smith DM dm 808d9ecca5SBarry Smith IS, pointer :: iss(:) 818d9ecca5SBarry Smith DM, pointer :: dms(:) 828d9ecca5SBarry Smith end subroutine 838d9ecca5SBarry Smith end interface 848d9ecca5SBarry Smith 858d9ecca5SBarry Smith ! C stub utility 868d9ecca5SBarry Smith interface DMCreateFieldDecompositionRestoreISDM 878d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionRestoreISDM(dm, iss, dms, ierr) 88*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 898d9ecca5SBarry Smith import tIS, tDM 908d9ecca5SBarry Smith PetscErrorCode ierr 918d9ecca5SBarry Smith DM dm 928d9ecca5SBarry Smith IS, pointer :: iss(:) 938d9ecca5SBarry Smith DM, pointer :: dms(:) 948d9ecca5SBarry Smith end subroutine 958d9ecca5SBarry Smith end interface 968d9ecca5SBarry Smith 976dd63270SBarry Smith interface PetscDSGetTabulation 986dd63270SBarry Smith module procedure PetscDSGetTabulation 996dd63270SBarry Smith end interface 1006dd63270SBarry Smith 1016dd63270SBarry Smith interface PetscDSRestoreTabulation 1026dd63270SBarry Smith module procedure PetscDSRestoreTabulation 1036dd63270SBarry Smith end interface 1046dd63270SBarry Smith 1056dd63270SBarry Smith contains 1066dd63270SBarry Smith 1076dd63270SBarry Smith#include <../ftn/dm/petscall.hf90> 1086dd63270SBarry Smith#include <../ftn/dm/petscspace.hf90> 1096dd63270SBarry Smith#include <../ftn/dm/petscdualspace.hf90> 1106dd63270SBarry Smith 1116dd63270SBarry Smith Subroutine PetscDSGetTabulation(ds,tab,ierr) 1126dd63270SBarry Smith PetscErrorCode ierr 1136dd63270SBarry Smith PetscTabulation, pointer :: tab(:) 1146dd63270SBarry Smith PetscDS ds 1156dd63270SBarry Smith 1166dd63270SBarry Smith PetscInt Nf, i 1176dd63270SBarry Smith call PetscDSGetNumFields(ds, Nf, ierr) 1186dd63270SBarry Smith allocate(tab(Nf)) 1196dd63270SBarry Smith do i=1,Nf 1206dd63270SBarry Smith allocate(tab(i)%ptr) 1216dd63270SBarry Smith CHKMEMQ 1226dd63270SBarry Smith call PetscDSGetTabulationSetSizes(ds, i, tab(i)%ptr, ierr) 1236dd63270SBarry Smith CHKMEMQ 1246dd63270SBarry Smith allocate(tab(i)%ptr%T(tab(i)%ptr%K+1)) 1256dd63270SBarry Smith call PetscDSGetTabulationSetPointers(ds, i, tab(i)%ptr%T, ierr) 1266dd63270SBarry Smith CHKMEMQ 1276dd63270SBarry Smith enddo 1286dd63270SBarry Smith End Subroutine PetscDSGetTabulation 1296dd63270SBarry Smith 1306dd63270SBarry Smith Subroutine PetscDSRestoreTabulation(ds,tab,ierr) 1316dd63270SBarry Smith PetscErrorCode ierr 1326dd63270SBarry Smith PetscTabulation, pointer :: tab(:) 1336dd63270SBarry Smith PetscDS ds 1346dd63270SBarry Smith 1356dd63270SBarry Smith PetscInt Nf, i 1366dd63270SBarry Smith call PetscDSGetNumFields(ds, Nf, ierr) 1376dd63270SBarry Smith do i=1,Nf 1386dd63270SBarry Smith deallocate(tab(i)%ptr%T) 1396dd63270SBarry Smith deallocate(tab(i)%ptr) 1406dd63270SBarry Smith enddo 1416dd63270SBarry Smith deallocate(tab) 1426dd63270SBarry Smith End Subroutine PetscDSRestoreTabulation 1436dd63270SBarry Smith 1448d9ecca5SBarry Smith Subroutine DMCreateFieldDecomposition(dm, n, names, iss, dms, ierr) 1458d9ecca5SBarry Smith PetscErrorCode ierr 1468d9ecca5SBarry Smith character(80), pointer :: names(:) 1478d9ecca5SBarry Smith IS, pointer :: iss(:) 1488d9ecca5SBarry Smith DM, pointer :: dms(:) 1498d9ecca5SBarry Smith DM dm 1508d9ecca5SBarry Smith PetscInt i,n 1518d9ecca5SBarry Smith 1528d9ecca5SBarry Smith call DMGetNumFields(dm, n, ierr) 1538d9ecca5SBarry Smith ! currently requires that names is requested 1548d9ecca5SBarry Smith allocate(names(n)) 1558d9ecca5SBarry Smith do i=1,n 1568d9ecca5SBarry Smith call DMCreateFieldDecompositionGetName(dm,i,names(i),ierr) 1578d9ecca5SBarry Smith enddo 1588d9ecca5SBarry Smith call DMCreateFieldDecompositionGetISDM(dm,iss,dms,ierr) 1598d9ecca5SBarry Smith End Subroutine DMCreateFieldDecomposition 1608d9ecca5SBarry Smith 1618d9ecca5SBarry Smith Subroutine DMDestroyFieldDecomposition(dm, n, names, iss, dms, ierr) 1628d9ecca5SBarry Smith PetscErrorCode ierr 1638d9ecca5SBarry Smith character(80), pointer :: names(:) 1648d9ecca5SBarry Smith IS, pointer :: iss(:) 1658d9ecca5SBarry Smith DM, pointer :: dms(:) 1668d9ecca5SBarry Smith DM dm 1678d9ecca5SBarry Smith PetscInt n 1688d9ecca5SBarry Smith 1698d9ecca5SBarry Smith ! currently requires that names is requested 1708d9ecca5SBarry Smith deallocate(names) 17117c4fcfeSPierre Jolivet if (.false.) n = 0 1728d9ecca5SBarry Smith call DMCreateFieldDecompositionRestoreISDM(dm,iss,dms,ierr) 1738d9ecca5SBarry Smith End Subroutine DMDestroyFieldDecomposition 1748d9ecca5SBarry Smith 1756dd63270SBarry Smith end module petscdm 1766dd63270SBarry Smith 1776dd63270SBarry Smith! ---------------------------------------------- 1786dd63270SBarry Smith 1796dd63270SBarry Smith module petscdmdadef 180*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 1816dd63270SBarry Smith use petscdmdef 1826dd63270SBarry Smith use petscaodef 1836dd63270SBarry Smith use petscpfdef 1846dd63270SBarry Smith#include <petsc/finclude/petscao.h> 1856dd63270SBarry Smith#include <petsc/finclude/petscdmda.h> 1866dd63270SBarry Smith#include <../ftn/dm/petscdmda.h> 1876dd63270SBarry Smith end module petscdmdadef 1886dd63270SBarry Smith 1896dd63270SBarry Smith module petscdmda 190*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 1916dd63270SBarry Smith use petscdm 1926dd63270SBarry Smith use petscdmdadef 1936dd63270SBarry Smith 1946dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmda.h90> 1956dd63270SBarry Smith#include <../ftn/dm/petscdmda.h90> 1966dd63270SBarry Smith 1976dd63270SBarry Smith contains 1986dd63270SBarry Smith 1996dd63270SBarry Smith#include <../ftn/dm/petscdmda.hf90> 2006dd63270SBarry Smith end module petscdmda 2016dd63270SBarry Smith 2026dd63270SBarry Smith! ---------------------------------------------- 2036dd63270SBarry Smith 2046dd63270SBarry Smith module petscdmplex 205*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2066dd63270SBarry Smith use petscdm 2076dd63270SBarry Smith use petscdmdef 2086dd63270SBarry Smith#include <petsc/finclude/petscfv.h> 2096dd63270SBarry Smith#include <petsc/finclude/petscdmplex.h> 2106dd63270SBarry Smith#include <petsc/finclude/petscdmplextransform.h> 2116dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmplex.h90> 2126dd63270SBarry Smith#include <../ftn/dm/petscfv.h> 2136dd63270SBarry Smith#include <../ftn/dm/petscdmplex.h> 2146dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.h> 2156dd63270SBarry Smith 2166dd63270SBarry Smith#include <../ftn/dm/petscfv.h90> 2176dd63270SBarry Smith#include <../ftn/dm/petscdmplex.h90> 2186dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.h90> 2196dd63270SBarry Smith 2206dd63270SBarry Smith contains 2216dd63270SBarry Smith 2226dd63270SBarry Smith#include <../ftn/dm/petscfv.hf90> 2236dd63270SBarry Smith#include <../ftn/dm/petscdmplex.hf90> 2246dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.hf90> 2256dd63270SBarry Smith end module petscdmplex 2266dd63270SBarry Smith 2276dd63270SBarry Smith! ---------------------------------------------- 2286dd63270SBarry Smith 2296dd63270SBarry Smith module petscdmstag 230*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2316dd63270SBarry Smith use petscdmdef 2326dd63270SBarry Smith#include <petsc/finclude/petscdmstag.h> 2336dd63270SBarry Smith#include <../ftn/dm/petscdmstag.h> 2346dd63270SBarry Smith 2356dd63270SBarry Smith#include <../ftn/dm/petscdmstag.h90> 2366dd63270SBarry Smith 2376dd63270SBarry Smith contains 2386dd63270SBarry Smith 2396dd63270SBarry Smith#include <../ftn/dm/petscdmstag.hf90> 2406dd63270SBarry Smith end module petscdmstag 2416dd63270SBarry Smith 2426dd63270SBarry Smith! ---------------------------------------------- 2436dd63270SBarry Smith 2446dd63270SBarry Smith module petscdmswarm 245*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2466dd63270SBarry Smith use petscdm 2476dd63270SBarry Smith use petscdmdef 2486dd63270SBarry Smith#include <petsc/finclude/petscdmswarm.h> 2496dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.h> 2506dd63270SBarry Smith 2516dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmswarm.h90> 2526dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.h90> 2536dd63270SBarry Smith 2546dd63270SBarry Smith contains 2556dd63270SBarry Smith 2566dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.hf90> 2576dd63270SBarry Smith end module petscdmswarm 2586dd63270SBarry Smith 2596dd63270SBarry Smith! ---------------------------------------------- 2606dd63270SBarry Smith 2616dd63270SBarry Smith module petscdmcomposite 262*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2636dd63270SBarry Smith use petscdm 2646dd63270SBarry Smith#include <petsc/finclude/petscdmcomposite.h> 2656dd63270SBarry Smith 2666dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmcomposite.h90> 2676dd63270SBarry Smith#include <../ftn/dm/petscdmcomposite.h90> 2686dd63270SBarry Smith end module petscdmcomposite 2696dd63270SBarry Smith 2706dd63270SBarry Smith! ---------------------------------------------- 2716dd63270SBarry Smith 2726dd63270SBarry Smith module petscdmforest 273*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2746dd63270SBarry Smith use petscdm 2756dd63270SBarry Smith#include <petsc/finclude/petscdmforest.h> 2766dd63270SBarry Smith#include <../ftn/dm/petscdmforest.h> 2776dd63270SBarry Smith#include <../ftn/dm/petscdmforest.h90> 2786dd63270SBarry Smith end module petscdmforest 2796dd63270SBarry Smith 2806dd63270SBarry Smith! ---------------------------------------------- 2816dd63270SBarry Smith 2826dd63270SBarry Smith module petscdmnetwork 283*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2846dd63270SBarry Smith use petscdm 2856dd63270SBarry Smith#include <petsc/finclude/petscdmnetwork.h> 2866dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.h> 2876dd63270SBarry Smith 2886dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.h90> 2896dd63270SBarry Smith 2906dd63270SBarry Smith contains 2916dd63270SBarry Smith 2926dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.hf90> 2936dd63270SBarry Smith end module petscdmnetwork 2946dd63270SBarry Smith 2956dd63270SBarry Smith! ---------------------------------------------- 2966dd63270SBarry Smith 2976dd63270SBarry Smith module petscdmadaptor 298*fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2996dd63270SBarry Smith use petscdm 3006dd63270SBarry Smith use petscdmdef 3016dd63270SBarry Smith! use petscsnes 3026dd63270SBarry Smith#include <petsc/finclude/petscdmadaptor.h> 3036dd63270SBarry Smith#include <../ftn/dm/petscdmadaptor.h> 3046dd63270SBarry Smith 3056dd63270SBarry Smith!#include <../ftn/dm/petscdmadaptor.h90> 3066dd63270SBarry Smith 3076dd63270SBarry Smith contains 3086dd63270SBarry Smith 3096dd63270SBarry Smith!#include <../ftn/dm/petscdmadaptor.hf90> 3106dd63270SBarry Smith end module petscdmadaptor 311