xref: /petsc/src/dm/ftn-mod/petscdmmod.F90 (revision 7f296bb328fcd4c99f2da7bfe8ba7ed8a4ebceee)
1        module petscdmdef
2        use petscvecdef
3        use petscmatdef
4#include <../ftn/dm/petscall.h>
5#include <../ftn/dm/petscspace.h>
6#include <../ftn/dm/petscdualspace.h>
7
8       type ttPetscTabulation
9         sequence
10         PetscInt                K
11         PetscInt                Nr
12         PetscInt                Np
13         PetscInt                Nb
14         PetscInt                Nc
15         PetscInt                cdim
16         PetscReal2d, pointer :: T(:)
17       end type ttPetscTabulation
18
19       type tPetscTabulation
20         type(ttPetscTabulation), pointer :: ptr
21       end type tPetscTabulation
22
23       end module petscdmdef
24!     ----------------------------------------------
25
26        module petscdm
27        use petscmat
28        use petscdmdef
29#include <../src/dm/ftn-mod/petscdm.h90>
30#include <../src/dm/ftn-mod/petscdt.h90>
31#include <../ftn/dm/petscall.h90>
32#include <../ftn/dm/petscspace.h90>
33#include <../ftn/dm/petscdualspace.h90>
34
35        interface PetscDSGetTabulationSetSizes
36        subroutine PetscDSGetTabulationSetSizes(ds,i, tab,ierr)
37          import tPetscDS, ttPetscTabulation
38          PetscErrorCode              ierr
39          type(ttPetscTabulation)     tab
40          PetscDS                     ds
41          PetscInt                    i
42        end subroutine
43        end interface
44
45        interface PetscDSGetTabulationSetPointers
46        subroutine PetscDSGetTabulationSetPointers(ds,i, T,ierr)
47          import tPetscDS, ttPetscTabulation,tPetscReal2d
48          PetscErrorCode              ierr
49          type(tPetscReal2d), pointer :: T(:)
50          PetscDS                     ds
51          PetscInt                    i
52        end subroutine
53        end interface
54
55        interface PetscDSGetTabulation
56          module procedure PetscDSGetTabulation
57       end interface
58
59        interface PetscDSRestoreTabulation
60          module procedure PetscDSRestoreTabulation
61       end interface
62
63       contains
64
65#include <../ftn/dm/petscall.hf90>
66#include <../ftn/dm/petscspace.hf90>
67#include <../ftn/dm/petscdualspace.hf90>
68
69        Subroutine PetscDSGetTabulation(ds,tab,ierr)
70          PetscErrorCode              ierr
71          PetscTabulation, pointer :: tab(:)
72          PetscDS                     ds
73
74          PetscInt  Nf, i
75          call PetscDSGetNumFields(ds, Nf, ierr)
76          allocate(tab(Nf))
77          do i=1,Nf
78             allocate(tab(i)%ptr)
79             CHKMEMQ
80             call PetscDSGetTabulationSetSizes(ds, i, tab(i)%ptr, ierr)
81             CHKMEMQ
82             allocate(tab(i)%ptr%T(tab(i)%ptr%K+1))
83             call PetscDSGetTabulationSetPointers(ds, i, tab(i)%ptr%T, ierr)
84             CHKMEMQ
85          enddo
86        End Subroutine PetscDSGetTabulation
87
88        Subroutine PetscDSRestoreTabulation(ds,tab,ierr)
89          PetscErrorCode              ierr
90          PetscTabulation, pointer :: tab(:)
91          PetscDS                     ds
92
93          PetscInt  Nf, i
94          call PetscDSGetNumFields(ds, Nf, ierr)
95          do i=1,Nf
96             deallocate(tab(i)%ptr%T)
97             deallocate(tab(i)%ptr)
98          enddo
99          deallocate(tab)
100        End Subroutine PetscDSRestoreTabulation
101
102        end module petscdm
103
104!     ----------------------------------------------
105
106        module petscdmdadef
107        use petscdmdef
108        use petscaodef
109        use petscpfdef
110#include <petsc/finclude/petscao.h>
111#include <petsc/finclude/petscdmda.h>
112#include <../ftn/dm/petscdmda.h>
113        end module petscdmdadef
114
115        module petscdmda
116        use petscdm
117        use petscdmdadef
118
119#include <../src/dm/ftn-mod/petscdmda.h90>
120#include <../ftn/dm/petscdmda.h90>
121
122        contains
123
124#include <../ftn/dm/petscdmda.hf90>
125        end module petscdmda
126
127!     ----------------------------------------------
128
129        module petscdmplex
130        use petscdm
131        use petscdmdef
132#include <petsc/finclude/petscfv.h>
133#include <petsc/finclude/petscdmplex.h>
134#include <petsc/finclude/petscdmplextransform.h>
135#include <../src/dm/ftn-mod/petscdmplex.h90>
136#include <../ftn/dm/petscfv.h>
137#include <../ftn/dm/petscdmplex.h>
138#include <../ftn/dm/petscdmplextransform.h>
139
140#include <../ftn/dm/petscfv.h90>
141#include <../ftn/dm/petscdmplex.h90>
142#include <../ftn/dm/petscdmplextransform.h90>
143
144        contains
145
146#include <../ftn/dm/petscfv.hf90>
147#include <../ftn/dm/petscdmplex.hf90>
148#include <../ftn/dm/petscdmplextransform.hf90>
149        end module petscdmplex
150
151!     ----------------------------------------------
152
153        module petscdmstag
154        use petscdmdef
155#include <petsc/finclude/petscdmstag.h>
156#include <../ftn/dm/petscdmstag.h>
157
158#include <../ftn/dm/petscdmstag.h90>
159
160        contains
161
162#include <../ftn/dm/petscdmstag.hf90>
163        end module petscdmstag
164
165!     ----------------------------------------------
166
167        module petscdmswarm
168        use petscdm
169        use petscdmdef
170#include <petsc/finclude/petscdmswarm.h>
171#include <../ftn/dm/petscdmswarm.h>
172
173#include <../src/dm/ftn-mod/petscdmswarm.h90>
174#include <../ftn/dm/petscdmswarm.h90>
175
176        contains
177
178#include <../ftn/dm/petscdmswarm.hf90>
179        end module petscdmswarm
180
181!     ----------------------------------------------
182
183        module petscdmcomposite
184        use petscdm
185#include <petsc/finclude/petscdmcomposite.h>
186
187#include <../src/dm/ftn-mod/petscdmcomposite.h90>
188#include <../ftn/dm/petscdmcomposite.h90>
189        end module petscdmcomposite
190
191!     ----------------------------------------------
192
193        module petscdmforest
194        use petscdm
195#include <petsc/finclude/petscdmforest.h>
196#include <../ftn/dm/petscdmforest.h>
197#include <../ftn/dm/petscdmforest.h90>
198        end module petscdmforest
199
200!     ----------------------------------------------
201
202        module petscdmnetwork
203        use petscdm
204#include <petsc/finclude/petscdmnetwork.h>
205#include <../ftn/dm/petscdmnetwork.h>
206
207#include <../ftn/dm/petscdmnetwork.h90>
208
209        contains
210
211#include <../ftn/dm/petscdmnetwork.hf90>
212        end module petscdmnetwork
213
214!     ----------------------------------------------
215
216        module petscdmadaptor
217        use petscdm
218        use petscdmdef
219!        use petscsnes
220#include <petsc/finclude/petscdmadaptor.h>
221#include <../ftn/dm/petscdmadaptor.h>
222
223!#include <../ftn/dm/petscdmadaptor.h90>
224
225        contains
226
227!#include <../ftn/dm/petscdmadaptor.hf90>
228        end module petscdmadaptor
229