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