16dd63270SBarry Smith module petscdmdef 26dd63270SBarry Smith use petscvecdef 36dd63270SBarry Smith use petscmatdef 46dd63270SBarry Smith#include <../ftn/dm/petscall.h> 56dd63270SBarry Smith#include <../ftn/dm/petscspace.h> 66dd63270SBarry Smith#include <../ftn/dm/petscdualspace.h> 76dd63270SBarry Smith 86dd63270SBarry Smith type ttPetscTabulation 96dd63270SBarry Smith sequence 106dd63270SBarry Smith PetscInt K 116dd63270SBarry Smith PetscInt Nr 126dd63270SBarry Smith PetscInt Np 136dd63270SBarry Smith PetscInt Nb 146dd63270SBarry Smith PetscInt Nc 156dd63270SBarry Smith PetscInt cdim 166dd63270SBarry Smith PetscReal2d, pointer :: T(:) 176dd63270SBarry Smith end type ttPetscTabulation 186dd63270SBarry Smith 196dd63270SBarry Smith type tPetscTabulation 206dd63270SBarry Smith type(ttPetscTabulation), pointer :: ptr 216dd63270SBarry Smith end type tPetscTabulation 226dd63270SBarry Smith 236dd63270SBarry Smith end module petscdmdef 246dd63270SBarry Smith! ---------------------------------------------- 256dd63270SBarry Smith 266dd63270SBarry Smith module petscdm 276dd63270SBarry Smith use petscmat 286dd63270SBarry Smith use petscdmdef 296dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdm.h90> 306dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdt.h90> 316dd63270SBarry Smith#include <../ftn/dm/petscall.h90> 326dd63270SBarry Smith#include <../ftn/dm/petscspace.h90> 336dd63270SBarry Smith#include <../ftn/dm/petscdualspace.h90> 346dd63270SBarry Smith 358d9ecca5SBarry Smith ! C stub utility 366dd63270SBarry Smith interface PetscDSGetTabulationSetSizes 376dd63270SBarry Smith subroutine PetscDSGetTabulationSetSizes(ds,i, tab,ierr) 386dd63270SBarry Smith import tPetscDS, ttPetscTabulation 396dd63270SBarry Smith PetscErrorCode ierr 406dd63270SBarry Smith type(ttPetscTabulation) tab 416dd63270SBarry Smith PetscDS ds 426dd63270SBarry Smith PetscInt i 436dd63270SBarry Smith end subroutine 446dd63270SBarry Smith end interface 456dd63270SBarry Smith 468d9ecca5SBarry Smith ! C stub utility 476dd63270SBarry Smith interface PetscDSGetTabulationSetPointers 486dd63270SBarry Smith subroutine PetscDSGetTabulationSetPointers(ds,i, T,ierr) 496dd63270SBarry Smith import tPetscDS, ttPetscTabulation,tPetscReal2d 506dd63270SBarry Smith PetscErrorCode ierr 516dd63270SBarry Smith type(tPetscReal2d), pointer :: T(:) 526dd63270SBarry Smith PetscDS ds 536dd63270SBarry Smith PetscInt i 546dd63270SBarry Smith end subroutine 556dd63270SBarry Smith end interface 566dd63270SBarry Smith 578d9ecca5SBarry Smith ! C stub utility 588d9ecca5SBarry Smith interface DMCreateFieldDecompositionGetName 598d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionGetName(dm, i, name, ierr) 608d9ecca5SBarry Smith import tDM 618d9ecca5SBarry Smith PetscErrorCode ierr 628d9ecca5SBarry Smith DM dm 638d9ecca5SBarry Smith character(*) name 648d9ecca5SBarry Smith PetscInt i 658d9ecca5SBarry Smith end subroutine 668d9ecca5SBarry Smith end interface 678d9ecca5SBarry Smith 688d9ecca5SBarry Smith ! C stub utility 698d9ecca5SBarry Smith interface DMCreateFieldDecompositionGetISDM 708d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionGetISDM(dm, iss, dms, ierr) 718d9ecca5SBarry Smith import tIS, tDM 728d9ecca5SBarry Smith PetscErrorCode ierr 738d9ecca5SBarry Smith DM dm 748d9ecca5SBarry Smith IS, pointer :: iss(:) 758d9ecca5SBarry Smith DM, pointer :: dms(:) 768d9ecca5SBarry Smith end subroutine 778d9ecca5SBarry Smith end interface 788d9ecca5SBarry Smith 798d9ecca5SBarry Smith ! C stub utility 808d9ecca5SBarry Smith interface DMCreateFieldDecompositionRestoreISDM 818d9ecca5SBarry Smith subroutine DMCreateFieldDecompositionRestoreISDM(dm, iss, dms, ierr) 828d9ecca5SBarry Smith import tIS, tDM 838d9ecca5SBarry Smith PetscErrorCode ierr 848d9ecca5SBarry Smith DM dm 858d9ecca5SBarry Smith IS, pointer :: iss(:) 868d9ecca5SBarry Smith DM, pointer :: dms(:) 878d9ecca5SBarry Smith end subroutine 888d9ecca5SBarry Smith end interface 898d9ecca5SBarry Smith 906dd63270SBarry Smith interface PetscDSGetTabulation 916dd63270SBarry Smith module procedure PetscDSGetTabulation 926dd63270SBarry Smith end interface 936dd63270SBarry Smith 946dd63270SBarry Smith interface PetscDSRestoreTabulation 956dd63270SBarry Smith module procedure PetscDSRestoreTabulation 966dd63270SBarry Smith end interface 976dd63270SBarry Smith 986dd63270SBarry Smith contains 996dd63270SBarry Smith 1006dd63270SBarry Smith#include <../ftn/dm/petscall.hf90> 1016dd63270SBarry Smith#include <../ftn/dm/petscspace.hf90> 1026dd63270SBarry Smith#include <../ftn/dm/petscdualspace.hf90> 1036dd63270SBarry Smith 1046dd63270SBarry Smith Subroutine PetscDSGetTabulation(ds,tab,ierr) 1056dd63270SBarry Smith PetscErrorCode ierr 1066dd63270SBarry Smith PetscTabulation, pointer :: tab(:) 1076dd63270SBarry Smith PetscDS ds 1086dd63270SBarry Smith 1096dd63270SBarry Smith PetscInt Nf, i 1106dd63270SBarry Smith call PetscDSGetNumFields(ds, Nf, ierr) 1116dd63270SBarry Smith allocate(tab(Nf)) 1126dd63270SBarry Smith do i=1,Nf 1136dd63270SBarry Smith allocate(tab(i)%ptr) 1146dd63270SBarry Smith CHKMEMQ 1156dd63270SBarry Smith call PetscDSGetTabulationSetSizes(ds, i, tab(i)%ptr, ierr) 1166dd63270SBarry Smith CHKMEMQ 1176dd63270SBarry Smith allocate(tab(i)%ptr%T(tab(i)%ptr%K+1)) 1186dd63270SBarry Smith call PetscDSGetTabulationSetPointers(ds, i, tab(i)%ptr%T, ierr) 1196dd63270SBarry Smith CHKMEMQ 1206dd63270SBarry Smith enddo 1216dd63270SBarry Smith End Subroutine PetscDSGetTabulation 1226dd63270SBarry Smith 1236dd63270SBarry Smith Subroutine PetscDSRestoreTabulation(ds,tab,ierr) 1246dd63270SBarry Smith PetscErrorCode ierr 1256dd63270SBarry Smith PetscTabulation, pointer :: tab(:) 1266dd63270SBarry Smith PetscDS ds 1276dd63270SBarry Smith 1286dd63270SBarry Smith PetscInt Nf, i 1296dd63270SBarry Smith call PetscDSGetNumFields(ds, Nf, ierr) 1306dd63270SBarry Smith do i=1,Nf 1316dd63270SBarry Smith deallocate(tab(i)%ptr%T) 1326dd63270SBarry Smith deallocate(tab(i)%ptr) 1336dd63270SBarry Smith enddo 1346dd63270SBarry Smith deallocate(tab) 1356dd63270SBarry Smith End Subroutine PetscDSRestoreTabulation 1366dd63270SBarry Smith 1378d9ecca5SBarry Smith Subroutine DMCreateFieldDecomposition(dm, n, names, iss, dms, ierr) 1388d9ecca5SBarry Smith PetscErrorCode ierr 1398d9ecca5SBarry Smith character(80), pointer :: names(:) 1408d9ecca5SBarry Smith IS, pointer :: iss(:) 1418d9ecca5SBarry Smith DM, pointer :: dms(:) 1428d9ecca5SBarry Smith DM dm 1438d9ecca5SBarry Smith PetscInt i,n 1448d9ecca5SBarry Smith 1458d9ecca5SBarry Smith call DMGetNumFields(dm, n, ierr) 1468d9ecca5SBarry Smith ! currently requires that names is requested 1478d9ecca5SBarry Smith allocate(names(n)) 1488d9ecca5SBarry Smith do i=1,n 1498d9ecca5SBarry Smith call DMCreateFieldDecompositionGetName(dm,i,names(i),ierr) 1508d9ecca5SBarry Smith enddo 1518d9ecca5SBarry Smith call DMCreateFieldDecompositionGetISDM(dm,iss,dms,ierr) 1528d9ecca5SBarry Smith End Subroutine DMCreateFieldDecomposition 1538d9ecca5SBarry Smith 1548d9ecca5SBarry Smith Subroutine DMDestroyFieldDecomposition(dm, n, names, iss, dms, ierr) 1558d9ecca5SBarry Smith PetscErrorCode ierr 1568d9ecca5SBarry Smith character(80), pointer :: names(:) 1578d9ecca5SBarry Smith IS, pointer :: iss(:) 1588d9ecca5SBarry Smith DM, pointer :: dms(:) 1598d9ecca5SBarry Smith DM dm 1608d9ecca5SBarry Smith PetscInt n 1618d9ecca5SBarry Smith 1628d9ecca5SBarry Smith ! currently requires that names is requested 1638d9ecca5SBarry Smith deallocate(names) 164*17c4fcfeSPierre Jolivet if (.false.) n = 0 1658d9ecca5SBarry Smith call DMCreateFieldDecompositionRestoreISDM(dm,iss,dms,ierr) 1668d9ecca5SBarry Smith End Subroutine DMDestroyFieldDecomposition 1678d9ecca5SBarry Smith 1686dd63270SBarry Smith end module petscdm 1696dd63270SBarry Smith 1706dd63270SBarry Smith! ---------------------------------------------- 1716dd63270SBarry Smith 1726dd63270SBarry Smith module petscdmdadef 1736dd63270SBarry Smith use petscdmdef 1746dd63270SBarry Smith use petscaodef 1756dd63270SBarry Smith use petscpfdef 1766dd63270SBarry Smith#include <petsc/finclude/petscao.h> 1776dd63270SBarry Smith#include <petsc/finclude/petscdmda.h> 1786dd63270SBarry Smith#include <../ftn/dm/petscdmda.h> 1796dd63270SBarry Smith end module petscdmdadef 1806dd63270SBarry Smith 1816dd63270SBarry Smith module petscdmda 1826dd63270SBarry Smith use petscdm 1836dd63270SBarry Smith use petscdmdadef 1846dd63270SBarry Smith 1856dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmda.h90> 1866dd63270SBarry Smith#include <../ftn/dm/petscdmda.h90> 1876dd63270SBarry Smith 1886dd63270SBarry Smith contains 1896dd63270SBarry Smith 1906dd63270SBarry Smith#include <../ftn/dm/petscdmda.hf90> 1916dd63270SBarry Smith end module petscdmda 1926dd63270SBarry Smith 1936dd63270SBarry Smith! ---------------------------------------------- 1946dd63270SBarry Smith 1956dd63270SBarry Smith module petscdmplex 1966dd63270SBarry Smith use petscdm 1976dd63270SBarry Smith use petscdmdef 1986dd63270SBarry Smith#include <petsc/finclude/petscfv.h> 1996dd63270SBarry Smith#include <petsc/finclude/petscdmplex.h> 2006dd63270SBarry Smith#include <petsc/finclude/petscdmplextransform.h> 2016dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmplex.h90> 2026dd63270SBarry Smith#include <../ftn/dm/petscfv.h> 2036dd63270SBarry Smith#include <../ftn/dm/petscdmplex.h> 2046dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.h> 2056dd63270SBarry Smith 2066dd63270SBarry Smith#include <../ftn/dm/petscfv.h90> 2076dd63270SBarry Smith#include <../ftn/dm/petscdmplex.h90> 2086dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.h90> 2096dd63270SBarry Smith 2106dd63270SBarry Smith contains 2116dd63270SBarry Smith 2126dd63270SBarry Smith#include <../ftn/dm/petscfv.hf90> 2136dd63270SBarry Smith#include <../ftn/dm/petscdmplex.hf90> 2146dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.hf90> 2156dd63270SBarry Smith end module petscdmplex 2166dd63270SBarry Smith 2176dd63270SBarry Smith! ---------------------------------------------- 2186dd63270SBarry Smith 2196dd63270SBarry Smith module petscdmstag 2206dd63270SBarry Smith use petscdmdef 2216dd63270SBarry Smith#include <petsc/finclude/petscdmstag.h> 2226dd63270SBarry Smith#include <../ftn/dm/petscdmstag.h> 2236dd63270SBarry Smith 2246dd63270SBarry Smith#include <../ftn/dm/petscdmstag.h90> 2256dd63270SBarry Smith 2266dd63270SBarry Smith contains 2276dd63270SBarry Smith 2286dd63270SBarry Smith#include <../ftn/dm/petscdmstag.hf90> 2296dd63270SBarry Smith end module petscdmstag 2306dd63270SBarry Smith 2316dd63270SBarry Smith! ---------------------------------------------- 2326dd63270SBarry Smith 2336dd63270SBarry Smith module petscdmswarm 2346dd63270SBarry Smith use petscdm 2356dd63270SBarry Smith use petscdmdef 2366dd63270SBarry Smith#include <petsc/finclude/petscdmswarm.h> 2376dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.h> 2386dd63270SBarry Smith 2396dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmswarm.h90> 2406dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.h90> 2416dd63270SBarry Smith 2426dd63270SBarry Smith contains 2436dd63270SBarry Smith 2446dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.hf90> 2456dd63270SBarry Smith end module petscdmswarm 2466dd63270SBarry Smith 2476dd63270SBarry Smith! ---------------------------------------------- 2486dd63270SBarry Smith 2496dd63270SBarry Smith module petscdmcomposite 2506dd63270SBarry Smith use petscdm 2516dd63270SBarry Smith#include <petsc/finclude/petscdmcomposite.h> 2526dd63270SBarry Smith 2536dd63270SBarry Smith#include <../src/dm/ftn-mod/petscdmcomposite.h90> 2546dd63270SBarry Smith#include <../ftn/dm/petscdmcomposite.h90> 2556dd63270SBarry Smith end module petscdmcomposite 2566dd63270SBarry Smith 2576dd63270SBarry Smith! ---------------------------------------------- 2586dd63270SBarry Smith 2596dd63270SBarry Smith module petscdmforest 2606dd63270SBarry Smith use petscdm 2616dd63270SBarry Smith#include <petsc/finclude/petscdmforest.h> 2626dd63270SBarry Smith#include <../ftn/dm/petscdmforest.h> 2636dd63270SBarry Smith#include <../ftn/dm/petscdmforest.h90> 2646dd63270SBarry Smith end module petscdmforest 2656dd63270SBarry Smith 2666dd63270SBarry Smith! ---------------------------------------------- 2676dd63270SBarry Smith 2686dd63270SBarry Smith module petscdmnetwork 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 Smith contains 2766dd63270SBarry Smith 2776dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.hf90> 2786dd63270SBarry Smith end module petscdmnetwork 2796dd63270SBarry Smith 2806dd63270SBarry Smith! ---------------------------------------------- 2816dd63270SBarry Smith 2826dd63270SBarry Smith module petscdmadaptor 2836dd63270SBarry Smith use petscdm 2846dd63270SBarry Smith use petscdmdef 2856dd63270SBarry Smith! use petscsnes 2866dd63270SBarry Smith#include <petsc/finclude/petscdmadaptor.h> 2876dd63270SBarry Smith#include <../ftn/dm/petscdmadaptor.h> 2886dd63270SBarry Smith 2896dd63270SBarry Smith!#include <../ftn/dm/petscdmadaptor.h90> 2906dd63270SBarry Smith 2916dd63270SBarry Smith contains 2926dd63270SBarry Smith 2936dd63270SBarry Smith!#include <../ftn/dm/petscdmadaptor.hf90> 2946dd63270SBarry Smith end module petscdmadaptor 295