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