16dd63270SBarry Smithmodule petscdmdef 2fe66ebccSMartin Diehl use, 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 Smithend module petscdmdef 256dd63270SBarry Smith 266dd63270SBarry Smithmodule petscdm 27fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 286dd63270SBarry Smith use petscmat 296dd63270SBarry Smith use petscdmdef 306dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdm.h90> 316dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdt.h90> 326dd63270SBarry Smith#include <../ftn/dm/petscall.h90> 336dd63270SBarry Smith#include <../ftn/dm/petscspace.h90> 346dd63270SBarry Smith#include <../ftn/dm/petscdualspace.h90> 356dd63270SBarry Smith 368d9ecca5SBarry Smith ! C stub utility 376dd63270SBarry Smith interface PetscDSGetTabulationSetSizes 386dd63270SBarry Smith subroutine PetscDSGetTabulationSetSizes(ds, i, tab, ierr) 39fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 406dd63270SBarry Smith import tPetscDS, ttPetscTabulation 416dd63270SBarry Smith PetscErrorCode ierr 426dd63270SBarry Smith type(ttPetscTabulation) tab 436dd63270SBarry Smith PetscDS ds 446dd63270SBarry Smith PetscInt i 456dd63270SBarry Smith end subroutine 466dd63270SBarry Smith end interface 476dd63270SBarry Smith 488d9ecca5SBarry Smith ! C stub utility 496dd63270SBarry Smith interface PetscDSGetTabulationSetPointers 506dd63270SBarry Smith subroutine PetscDSGetTabulationSetPointers(ds, i, T, ierr) 51fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 526dd63270SBarry Smith import tPetscDS, ttPetscTabulation, tPetscReal2d 536dd63270SBarry Smith PetscErrorCode ierr 546dd63270SBarry Smith type(tPetscReal2d), pointer :: T(:) 556dd63270SBarry Smith PetscDS ds 566dd63270SBarry Smith PetscInt i 576dd63270SBarry Smith end subroutine 586dd63270SBarry Smith end interface 596dd63270SBarry Smith 608d9ecca5SBarry Smith ! C stub utility 618d9ecca5SBarry Smith interface DMCreateFieldDecompositionGetName 628d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionGetName(dm, i, name, ierr) 63fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 648d9ecca5SBarry Smith import tDM 658d9ecca5SBarry Smith PetscErrorCode ierr 668d9ecca5SBarry Smith DM dm 678d9ecca5SBarry Smith character(*) name 688d9ecca5SBarry Smith PetscInt i 698d9ecca5SBarry Smith end subroutine 708d9ecca5SBarry Smith end interface 718d9ecca5SBarry Smith 728d9ecca5SBarry Smith ! C stub utility 738d9ecca5SBarry Smith interface DMCreateFieldDecompositionGetISDM 748d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionGetISDM(dm, iss, dms, ierr) 75fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 768d9ecca5SBarry Smith import tIS, tDM 778d9ecca5SBarry Smith PetscErrorCode ierr 788d9ecca5SBarry Smith DM dm 798d9ecca5SBarry Smith IS, pointer :: iss(:) 808d9ecca5SBarry Smith DM, pointer :: dms(:) 818d9ecca5SBarry Smith end subroutine 828d9ecca5SBarry Smith end interface 838d9ecca5SBarry Smith 848d9ecca5SBarry Smith ! C stub utility 858d9ecca5SBarry Smith interface DMCreateFieldDecompositionRestoreISDM 868d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionRestoreISDM(dm, iss, dms, ierr) 87fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 888d9ecca5SBarry Smith import tIS, tDM 898d9ecca5SBarry Smith PetscErrorCode ierr 908d9ecca5SBarry Smith DM dm 918d9ecca5SBarry Smith IS, pointer :: iss(:) 928d9ecca5SBarry Smith DM, pointer :: dms(:) 938d9ecca5SBarry Smith end subroutine 948d9ecca5SBarry Smith end interface 958d9ecca5SBarry Smith 966dd63270SBarry Smith interface PetscDSGetTabulation 976dd63270SBarry Smith module procedure PetscDSGetTabulation 986dd63270SBarry Smith end interface 996dd63270SBarry Smith 1006dd63270SBarry Smith interface PetscDSRestoreTabulation 1016dd63270SBarry Smith module procedure PetscDSRestoreTabulation 1026dd63270SBarry Smith end interface 1036dd63270SBarry Smith 1046dd63270SBarry Smithcontains 1056dd63270SBarry Smith 1066dd63270SBarry Smith#include <../ftn/dm/petscall.hf90> 1076dd63270SBarry Smith#include <../ftn/dm/petscspace.hf90> 1086dd63270SBarry Smith#include <../ftn/dm/petscdualspace.hf90> 1096dd63270SBarry Smith 110*02c639afSMartin Diehl subroutine PetscDSGetTabulation(ds, tab, ierr) 1116dd63270SBarry Smith PetscErrorCode ierr 1126dd63270SBarry Smith PetscTabulation, pointer :: tab(:) 1136dd63270SBarry Smith PetscDS ds 1146dd63270SBarry Smith 1156dd63270SBarry Smith PetscInt Nf, i 1166dd63270SBarry Smith call PetscDSGetNumFields(ds, Nf, ierr) 1176dd63270SBarry Smith allocate (tab(Nf)) 1186dd63270SBarry Smith do i = 1, Nf 1196dd63270SBarry Smith allocate (tab(i)%ptr) 1206dd63270SBarry Smith CHKMEMQ 1216dd63270SBarry Smith call PetscDSGetTabulationSetSizes(ds, i, tab(i)%ptr, ierr) 1226dd63270SBarry Smith CHKMEMQ 1236dd63270SBarry Smith allocate (tab(i)%ptr%T(tab(i)%ptr%K + 1)) 1246dd63270SBarry Smith call PetscDSGetTabulationSetPointers(ds, i, tab(i)%ptr%T, ierr) 1256dd63270SBarry Smith CHKMEMQ 1266dd63270SBarry Smith end do 127*02c639afSMartin Diehl end subroutine PetscDSGetTabulation 1286dd63270SBarry Smith 129*02c639afSMartin Diehl subroutine PetscDSRestoreTabulation(ds, tab, ierr) 1306dd63270SBarry Smith PetscErrorCode ierr 1316dd63270SBarry Smith PetscTabulation, pointer :: tab(:) 1326dd63270SBarry Smith PetscDS ds 1336dd63270SBarry Smith 1346dd63270SBarry Smith PetscInt Nf, i 1356dd63270SBarry Smith call PetscDSGetNumFields(ds, Nf, ierr) 1366dd63270SBarry Smith do i = 1, Nf 1376dd63270SBarry Smith deallocate (tab(i)%ptr%T) 1386dd63270SBarry Smith deallocate (tab(i)%ptr) 1396dd63270SBarry Smith end do 1406dd63270SBarry Smith deallocate (tab) 141*02c639afSMartin Diehl end subroutine PetscDSRestoreTabulation 1426dd63270SBarry Smith 143*02c639afSMartin Diehl subroutine DMCreateFieldDecomposition(dm, n, names, iss, dms, ierr) 1448d9ecca5SBarry Smith PetscErrorCode ierr 1458d9ecca5SBarry Smith character(80), pointer :: names(:) 1468d9ecca5SBarry Smith IS, pointer :: iss(:) 1478d9ecca5SBarry Smith DM, pointer :: dms(:) 1488d9ecca5SBarry Smith DM dm 1498d9ecca5SBarry Smith PetscInt i, n 1508d9ecca5SBarry Smith 1518d9ecca5SBarry Smith call DMGetNumFields(dm, n, ierr) 1528d9ecca5SBarry Smith ! currently requires that names is requested 1538d9ecca5SBarry Smith allocate (names(n)) 1548d9ecca5SBarry Smith do i = 1, n 1558d9ecca5SBarry Smith call DMCreateFieldDecompositionGetName(dm, i, names(i), ierr) 1568d9ecca5SBarry Smith end do 1578d9ecca5SBarry Smith call DMCreateFieldDecompositionGetISDM(dm, iss, dms, ierr) 158*02c639afSMartin Diehl end subroutine DMCreateFieldDecomposition 1598d9ecca5SBarry Smith 160*02c639afSMartin Diehl subroutine DMDestroyFieldDecomposition(dm, n, names, iss, dms, ierr) 1618d9ecca5SBarry Smith PetscErrorCode ierr 1628d9ecca5SBarry Smith character(80), pointer :: names(:) 1638d9ecca5SBarry Smith IS, pointer :: iss(:) 1648d9ecca5SBarry Smith DM, pointer :: dms(:) 1658d9ecca5SBarry Smith DM dm 1668d9ecca5SBarry Smith PetscInt n 1678d9ecca5SBarry Smith 1688d9ecca5SBarry Smith ! currently requires that names is requested 1698d9ecca5SBarry Smith deallocate (names) 17017c4fcfeSPierre Jolivet if (.false.) n = 0 1718d9ecca5SBarry Smith call DMCreateFieldDecompositionRestoreISDM(dm, iss, dms, ierr) 172*02c639afSMartin Diehl end subroutine DMDestroyFieldDecomposition 1738d9ecca5SBarry Smith 1746dd63270SBarry Smithend module petscdm 1756dd63270SBarry Smith 1766dd63270SBarry Smithmodule petscdmdadef 177fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 1786dd63270SBarry Smith use petscdmdef 1796dd63270SBarry Smith use petscaodef 1806dd63270SBarry Smith use petscpfdef 1816dd63270SBarry Smith#include <petsc/finclude/petscao.h> 1826dd63270SBarry Smith#include <petsc/finclude/petscdmda.h> 1836dd63270SBarry Smith#include <../ftn/dm/petscdmda.h> 1846dd63270SBarry Smithend module petscdmdadef 1856dd63270SBarry Smith 1866dd63270SBarry Smithmodule petscdmda 187fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 1886dd63270SBarry Smith use petscdm 1896dd63270SBarry Smith use petscdmdadef 1906dd63270SBarry Smith 1916dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmda.h90> 1926dd63270SBarry Smith#include <../ftn/dm/petscdmda.h90> 1936dd63270SBarry Smith 1946dd63270SBarry Smithcontains 1956dd63270SBarry Smith 1966dd63270SBarry Smith#include <../ftn/dm/petscdmda.hf90> 1976dd63270SBarry Smithend module petscdmda 1986dd63270SBarry Smith 1996dd63270SBarry Smithmodule petscdmplex 200fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2016dd63270SBarry Smith use petscdm 2026dd63270SBarry Smith use petscdmdef 2036dd63270SBarry Smith#include <petsc/finclude/petscfv.h> 2046dd63270SBarry Smith#include <petsc/finclude/petscdmplex.h> 2056dd63270SBarry Smith#include <petsc/finclude/petscdmplextransform.h> 2066dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmplex.h90> 2076dd63270SBarry Smith#include <../ftn/dm/petscfv.h> 2086dd63270SBarry Smith#include <../ftn/dm/petscdmplex.h> 2096dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.h> 2106dd63270SBarry Smith 2116dd63270SBarry Smith#include <../ftn/dm/petscfv.h90> 2126dd63270SBarry Smith#include <../ftn/dm/petscdmplex.h90> 2136dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.h90> 2146dd63270SBarry Smith 2156dd63270SBarry Smithcontains 2166dd63270SBarry Smith 2176dd63270SBarry Smith#include <../ftn/dm/petscfv.hf90> 2186dd63270SBarry Smith#include <../ftn/dm/petscdmplex.hf90> 2196dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.hf90> 2206dd63270SBarry Smithend module petscdmplex 2216dd63270SBarry Smith 2226dd63270SBarry Smithmodule petscdmstag 223fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2246dd63270SBarry Smith use petscdmdef 2256dd63270SBarry Smith#include <petsc/finclude/petscdmstag.h> 2266dd63270SBarry Smith#include <../ftn/dm/petscdmstag.h> 2276dd63270SBarry Smith 2286dd63270SBarry Smith#include <../ftn/dm/petscdmstag.h90> 2296dd63270SBarry Smith 2306dd63270SBarry Smithcontains 2316dd63270SBarry Smith 2326dd63270SBarry Smith#include <../ftn/dm/petscdmstag.hf90> 2336dd63270SBarry Smithend module petscdmstag 2346dd63270SBarry Smith 2356dd63270SBarry Smithmodule petscdmswarm 236fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2376dd63270SBarry Smith use petscdm 2386dd63270SBarry Smith use petscdmdef 2396dd63270SBarry Smith#include <petsc/finclude/petscdmswarm.h> 2406dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.h> 2416dd63270SBarry Smith 2426dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmswarm.h90> 2436dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.h90> 2446dd63270SBarry Smith 2456dd63270SBarry Smithcontains 2466dd63270SBarry Smith 2476dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.hf90> 2486dd63270SBarry Smithend module petscdmswarm 2496dd63270SBarry Smith 2506dd63270SBarry Smithmodule petscdmcomposite 251fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2526dd63270SBarry Smith use petscdm 2536dd63270SBarry Smith#include <petsc/finclude/petscdmcomposite.h> 2546dd63270SBarry Smith 2556dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmcomposite.h90> 2566dd63270SBarry Smith#include <../ftn/dm/petscdmcomposite.h90> 2576dd63270SBarry Smithend module petscdmcomposite 2586dd63270SBarry Smith 2596dd63270SBarry Smithmodule petscdmforest 260fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2616dd63270SBarry Smith use petscdm 2626dd63270SBarry Smith#include <petsc/finclude/petscdmforest.h> 2636dd63270SBarry Smith#include <../ftn/dm/petscdmforest.h> 2646dd63270SBarry Smith#include <../ftn/dm/petscdmforest.h90> 2656dd63270SBarry Smithend module petscdmforest 2666dd63270SBarry Smith 2676dd63270SBarry Smithmodule petscdmnetwork 268fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2696dd63270SBarry Smith use petscdm 2706dd63270SBarry Smith#include <petsc/finclude/petscdmnetwork.h> 2716dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.h> 2726dd63270SBarry Smith 2736dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.h90> 2746dd63270SBarry Smith 2756dd63270SBarry Smithcontains 2766dd63270SBarry Smith 2776dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.hf90> 2786dd63270SBarry Smithend module petscdmnetwork 2796dd63270SBarry Smith 2806dd63270SBarry Smithmodule petscdmadaptor 281fe66ebccSMartin Diehl use, intrinsic :: ISO_C_binding 2826dd63270SBarry Smith use petscdm 2836dd63270SBarry Smith use petscdmdef 2846dd63270SBarry Smith! use petscsnes 2856dd63270SBarry Smith#include <petsc/finclude/petscdmadaptor.h> 2866dd63270SBarry Smith#include <../ftn/dm/petscdmadaptor.h> 2876dd63270SBarry Smith 2886dd63270SBarry Smith!#include <../ftn/dm/petscdmadaptor.h90> 2896dd63270SBarry Smith 2906dd63270SBarry Smithcontains 2916dd63270SBarry Smith 2926dd63270SBarry Smith!#include <../ftn/dm/petscdmadaptor.hf90> 2936dd63270SBarry Smithend module petscdmadaptor 29462212064STapashree Pradhan 29562212064STapashree Pradhanmodule petscdmshell 29662212064STapashree Pradhan use petscdm 29762212064STapashree Pradhan#include <petsc/finclude/petscdmshell.h> 29862212064STapashree Pradhan#include <../ftn/dm/petscdmshell.h90> 29962212064STapashree Pradhanend module petscdmshell 300