xref: /petsc/src/dm/ftn-mod/petscdmmod.F90 (revision 03047865b8d8757cf1cf9cda45785c1537b01dc1)
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