xref: /petsc/src/dm/ftn-mod/petscdmmod.F90 (revision 02c639afa00e507649aa5bac9084590bf17c181c)
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 Smith
276dd63270SBarry Smithmodule petscdm
28fe66ebccSMartin 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)
40fe66ebccSMartin 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)
52fe66ebccSMartin 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)
64fe66ebccSMartin 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)
76fe66ebccSMartin 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)
88fe66ebccSMartin 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 Smithcontains
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
111*02c639afSMartin Diehl  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    end do
128*02c639afSMartin Diehl  end subroutine PetscDSGetTabulation
1296dd63270SBarry Smith
130*02c639afSMartin Diehl  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    end do
1416dd63270SBarry Smith    deallocate (tab)
142*02c639afSMartin Diehl  end subroutine PetscDSRestoreTabulation
1436dd63270SBarry Smith
144*02c639afSMartin Diehl  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    end do
1588d9ecca5SBarry Smith    call DMCreateFieldDecompositionGetISDM(dm, iss, dms, ierr)
159*02c639afSMartin Diehl  end subroutine DMCreateFieldDecomposition
1608d9ecca5SBarry Smith
161*02c639afSMartin Diehl  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)
173*02c639afSMartin Diehl  end subroutine DMDestroyFieldDecomposition
1748d9ecca5SBarry Smith
1756dd63270SBarry Smithend module petscdm
1766dd63270SBarry Smith
1776dd63270SBarry Smith!     ----------------------------------------------
1786dd63270SBarry Smith
1796dd63270SBarry Smithmodule petscdmdadef
180fe66ebccSMartin 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 Smithend module petscdmdadef
1886dd63270SBarry Smith
1896dd63270SBarry Smithmodule petscdmda
190fe66ebccSMartin 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 Smithcontains
1986dd63270SBarry Smith
1996dd63270SBarry Smith#include <../ftn/dm/petscdmda.hf90>
2006dd63270SBarry Smithend module petscdmda
2016dd63270SBarry Smith
2026dd63270SBarry Smith!     ----------------------------------------------
2036dd63270SBarry Smith
2046dd63270SBarry Smithmodule petscdmplex
205fe66ebccSMartin 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 Smithcontains
2216dd63270SBarry Smith
2226dd63270SBarry Smith#include <../ftn/dm/petscfv.hf90>
2236dd63270SBarry Smith#include <../ftn/dm/petscdmplex.hf90>
2246dd63270SBarry Smith#include <../ftn/dm/petscdmplextransform.hf90>
2256dd63270SBarry Smithend module petscdmplex
2266dd63270SBarry Smith
2276dd63270SBarry Smith!     ----------------------------------------------
2286dd63270SBarry Smith
2296dd63270SBarry Smithmodule petscdmstag
230fe66ebccSMartin 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 Smithcontains
2386dd63270SBarry Smith
2396dd63270SBarry Smith#include <../ftn/dm/petscdmstag.hf90>
2406dd63270SBarry Smithend module petscdmstag
2416dd63270SBarry Smith
2426dd63270SBarry Smith!     ----------------------------------------------
2436dd63270SBarry Smith
2446dd63270SBarry Smithmodule petscdmswarm
245fe66ebccSMartin 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 Smithcontains
2556dd63270SBarry Smith
2566dd63270SBarry Smith#include <../ftn/dm/petscdmswarm.hf90>
2576dd63270SBarry Smithend module petscdmswarm
2586dd63270SBarry Smith
2596dd63270SBarry Smith!     ----------------------------------------------
2606dd63270SBarry Smith
2616dd63270SBarry Smithmodule petscdmcomposite
262fe66ebccSMartin 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 Smithend module petscdmcomposite
2696dd63270SBarry Smith
2706dd63270SBarry Smith!     ----------------------------------------------
2716dd63270SBarry Smith
2726dd63270SBarry Smithmodule petscdmforest
273fe66ebccSMartin 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 Smithend module petscdmforest
2796dd63270SBarry Smith
2806dd63270SBarry Smith!     ----------------------------------------------
2816dd63270SBarry Smith
2826dd63270SBarry Smithmodule petscdmnetwork
283fe66ebccSMartin 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 Smithcontains
2916dd63270SBarry Smith
2926dd63270SBarry Smith#include <../ftn/dm/petscdmnetwork.hf90>
2936dd63270SBarry Smithend module petscdmnetwork
2946dd63270SBarry Smith
2956dd63270SBarry Smith!     ----------------------------------------------
2966dd63270SBarry Smith
2976dd63270SBarry Smithmodule petscdmadaptor
298fe66ebccSMartin 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 Smithcontains
3086dd63270SBarry Smith
3096dd63270SBarry Smith!#include <../ftn/dm/petscdmadaptor.hf90>
3106dd63270SBarry Smithend module petscdmadaptor
31162212064STapashree Pradhan
31262212064STapashree Pradhan!     ----------------------------------------------
31362212064STapashree Pradhan
31462212064STapashree Pradhanmodule petscdmshell
31562212064STapashree Pradhan  use petscdm
31662212064STapashree Pradhan#include <petsc/finclude/petscdmshell.h>
31762212064STapashree Pradhan#include <../ftn/dm/petscdmshell.h90>
31862212064STapashree Pradhanend module petscdmshell
319