-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinterface.f90
More file actions
323 lines (279 loc) · 12.4 KB
/
Copy pathinterface.f90
File metadata and controls
323 lines (279 loc) · 12.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
MODULE INTERFACE_MODULE
INTERFACE
SUBROUTINE ASMBLE(lunlog, nzero, nx, ny, nz, &
irptr, jcptr, a, ierr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nzero, lunlog
INTEGER, INTENT(IN) :: irptr(3*nx*ny*nz+1), jcptr(nzero), &
nx, ny, nz
COMPLEX, INTENT(OUT) :: a(nzero)
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE ASMBLE
SUBROUTINE CALCWTS(vp, vs, w1, w2, w3, wm1, wm2, wm3, wm4)
IMPLICIT NONE
REAL, INTENT(IN) :: vp, vs
REAL, INTENT(OUT) :: w1, w2, w3, wm1, wm2, wm3, wm4
END SUBROUTINE CALCWTS
SUBROUTINE DISPERSION()
IMPLICIT NONE
END SUBROUTINE DISPERSION
SUBROUTINE FDFD3D(lbl, iz, ix, iy, ierr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: lbl, iz, ix, iy
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE FDFD3D
SUBROUTINE FIXED3D(lbl)
IMPLICIT NONE
INTEGER, INTENT(IN) :: lbl
END SUBROUTINE FIXED3D
SUBROUTINE HETFLDSRC(srcfn, sfld, myid, master, ierr)
IMPLICIT NONE
COMPLEX, INTENT(IN) :: srcfn
COMPLEX, DIMENSION(:), INTENT(OUT) :: sfld
INTEGER, INTENT(IN) :: myid, master
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE HETFLDSRC
SUBROUTINE PLANEWVEXP(isrc, ierr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: isrc
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE PLANEWVEXP
SUBROUTINE INFO(nx, ny, nz, ns, nr, ng, nom)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nx, ny, nz, ns, nr, ng, nom
END SUBROUTINE INFO
REAL(C_DOUBLE) FUNCTION iniparser_getDouble(variable, def, ierr) &
BIND(C, NAME='iniparser_getDouble')
USE ISO_C_BINDING
IMPLICIT NONE
CHARACTER(C_CHAR), INTENT(IN) :: variable(256)
REAL(C_DOUBLE), INTENT(IN) :: def
INTEGER(C_INT), INTENT(OUT) :: ierr
END FUNCTION iniparser_getDouble
REAL(C_FLOAT) FUNCTION iniparser_getFloat(variable, def, ierr) &
BIND(C, NAME='iniparser_getFloat')
USE ISO_C_BINDING
IMPLICIT NONE
CHARACTER(C_CHAR), INTENT(IN) :: variable(*)
REAL(C_FLOAT), INTENT(IN) :: def
INTEGER(C_INT), INTENT(OUT) :: ierr
END FUNCTION iniparser_getFloat
INTEGER(C_INT) FUNCTION iniparser_getInt(variable, def, ierr) &
BIND(C, NAME='iniparser_getInt')
USE ISO_C_BINDING
IMPLICIT NONE
CHARACTER(C_CHAR), INTENT(IN) :: variable(*)
INTEGER(C_INT), INTENT(IN) :: def
INTEGER(C_INT), INTENT(OUT) :: ierr
END FUNCTION iniparser_getInt
INTEGER(C_INT) FUNCTION iniparser_getChar(variable, def, ret) &
BIND(C, NAME='iniparser_getChar')
USE ISO_C_BINDING
IMPLICIT NONE
CHARACTER(C_CHAR), INTENT(IN) :: variable(*), def(*)
CHARACTER(C_CHAR), INTENT(OUT) :: ret(*)
END FUNCTION iniparser_getChar
LOGICAL(C_BOOL) FUNCTION iniparser_getBool(variable, def, ierr) &
BIND(C, NAME='iniparser_getBool')
USE ISO_C_BINDING
IMPLICIT NONE
CHARACTER(C_CHAR), INTENT(IN) :: variable(*)
LOGICAL(C_BOOL), INTENT(IN) :: def
INTEGER(C_INT), INTENT(OUT) :: ierr
END FUNCTION iniparser_getBool
INTEGER(C_INT) FUNCTION iniparser_getRecvWXYZ(variable, &
wt, x, y, z) &
BIND(C, NAME='iniparser_getRecvWXYZ')
USE ISO_C_BINDING
IMPLICIT NONE
CHARACTER(C_CHAR), INTENT(IN) :: variable
REAL(C_FLOAT), INTENT(OUT) :: wt, x, y, z
END FUNCTION iniparser_getRecvWXYZ
INTEGER(C_INT) FUNCTION iniparser_init(ini_file) &
BIND(C, NAME='iniparser_init')
USE ISO_C_BINDING
IMPLICIT NONE
CHARACTER(C_CHAR), INTENT(IN) :: ini_file(*)
END FUNCTION iniparser_init
SUBROUTINE iniparser_finalize() &
BIND(C, NAME='iniparser_finalize')
END SUBROUTINE iniparser_finalize
SUBROUTINE makeuh(isrc, sfld, ierr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: isrc
COMPLEX, DIMENSION(:), INTENT(IN) :: sfld
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE makeuh
SUBROUTINE NULLUEST(nom, ng, ns, uest, vest, west)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nom, ng, ns
COMPLEX, DIMENSION(:,:,:), INTENT(OUT) :: uest, vest, west
END SUBROUTINE NULLUEST
SUBROUTINE NULLUTEST(nom, nr, ns, utest)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nom, nr, ns
COMPLEX, DIMENSION(:,:,:), INTENT(OUT) :: utest
END SUBROUTINE NULLUTEST
SUBROUTINE pfdfd3d (lbl, ierr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: lbl
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE
SUBROUTINE pml3d (lbl, iz, ix, iy, ierr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: lbl, ix, iy, iz
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE pml3d
SUBROUTINE setcoefs3d(iz, ix, iy, ibg)
IMPLICIT NONE
INTEGER, INTENT(IN) :: iz, ix, iy, ibg
END SUBROUTINE setcoefs3d
SUBROUTINE srcreg(fs, ireg, sspread, dx, dy, dz, &
xoff, yoff, zoff, ierr)
IMPLICIT NONE
REAL, INTENT(OUT) :: fs(9, 9, 9)
REAL, INTENT(IN) :: sspread, dx, dy, dz, xoff, yoff, zoff
INTEGER, INTENT(IN) :: ireg
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE srcreg
SUBROUTINE srcsetup(lsetup, &
xloc, yloc, zloc, sprd, ireg, &
sterm, swave, ierr)
LOGICAL, INTENT(IN) :: lsetup
REAL, INTENT(IN) :: xloc, yloc, zloc, sprd
INTEGER, INTENT(IN) :: ireg
COMPLEX, DIMENSION(:,:,:), INTENT(INOUT) :: swave
COMPLEX, INTENT(INOUT) :: sterm
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE srcsetup
SUBROUTINE srel3d_getsize(nx, ny, nz, numvert, nedge)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nx, ny, nz
INTEGER, INTENT(OUT) :: numvert, nedge
END SUBROUTINE srel3d_getsize
SUBROUTINE srel3d(nx, ny, nz, numvert, nedge, xadj, adjncy)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nedge, numvert, nx, ny, nz
INTEGER, INTENT(OUT) :: xadj(numvert+1), adjncy(2*nedge)
END SUBROUTINE srel3d
SUBROUTINE READINI_FORWARD(projnm, ierr)
IMPLICIT NONE
CHARACTER(256), INTENT(IN) :: projnm
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE READINI_FORWARD
SUBROUTINE RECSUB(projnm, &
ncom, nsam, nom, ngt, &
recin, &
deltatt, freq, &
receiver, ierr)
IMPLICIT NONE
CHARACTER(*), INTENT(IN) :: projnm
REAL, DIMENSION(:), INTENT(IN) :: freq
REAL, INTENT(IN) :: deltatt
INTEGER, INTENT(IN) :: nom, ngt, nsam, recin, ncom
COMPLEX, DIMENSION(:,:), ALLOCATABLE, INTENT(OUT) :: receiver
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE RECSUB
SUBROUTINE SRCSUB(projnm, &
ncom, nsam, nom, nomi, &
nst, modsrcp, &
srcin, nsg, isg, &
deltatt, tau, freq, &
dsd, source, ierr)
IMPLICIT NONE
CHARACTER(*), INTENT(IN) :: projnm
REAL, DIMENSION(:), INTENT(IN) :: freq
INTEGER, DIMENSION(:), INTENT(INOUT) :: isg
REAL deltatt, tau
INTEGER, INTENT(IN) :: nsg, nom, nomi, nst, nsam, &
srcin, modsrcp, ncom
COMPLEX, ALLOCATABLE, DIMENSION(:,:), INTENT(OUT) :: source
REAL, ALLOCATABLE, DIMENSION(:,:), INTENT(OUT) :: dsd
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE SRCSUB
SUBROUTINE TEST1D(is3d)
IMPLICIT NONE
LOGICAL, INTENT(OUT) :: is3d
END SUBROUTINE TEST1D
SUBROUTINE TPFREE(lbl, ix, iy, ierr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: lbl, ix, iy
INTEGER, INTENT(OUT) :: ierr
END SUBROUTINE TPFREE
SUBROUTINE ZERO()
IMPLICIT NONE
END SUBROUTINE ZERO
SUBROUTINE ZEROAS()
IMPLICIT NONE
END SUBROUTINE ZEROAS
END INTERFACE
END MODULE INTERFACE_MODULE
MODULE SORT_MODULE
INTERFACE !SORT_INTER
SUBROUTINE SORT_INT_FINTER(isort, nn) &
BIND(C,NAME='sort_int_finter')
USE ISO_C_BINDING
IMPLICIT NONE
INTEGER(C_INT), INTENT(INOUT) :: isort(nn)
INTEGER(C_INT), INTENT(IN) :: nn
END SUBROUTINE SORT_INT_FINTER
SUBROUTINE ARGSORT_INT_FINTER(iperm, isort, nn) &
BIND(C,NAME='argsort_int_finter')
USE ISO_C_BINDING
IMPLICIT NONE
INTEGER(C_INT), INTENT(IN) :: isort(nn), nn
INTEGER(C_INT), INTENT(OUT) :: iperm(nn)
END SUBROUTINE ARGSORT_INT_FINTER
INTEGER(C_INT) FUNCTION BSEARCH_INT_FINTER(keyIn, values, n, iverb) &
BIND(C,NAME='bsearch_int_finter')
USE ISO_C_BINDING
IMPLICIT NONE
INTEGER(C_INT), INTENT(IN) :: values(n), keyIn, n, iverb
END FUNCTION BSEARCH_INT_FINTER
END INTERFACE
END MODULE SORT_MODULE
MODULE SPARSE_MODULE
INTERFACE !SPARSE_INTER
SUBROUTINE SPARSE_ADJ2CRS(nzero, n, xadj, adjncy, &
irptr, jcptr)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nzero, n
INTEGER, INTENT(IN) :: xadj(n+1), adjncy(nzero-n)
INTEGER, INTENT(OUT) :: irptr(n+1), jcptr(nzero)
END SUBROUTINE SPARSE_ADJ2CRS
SUBROUTINE SPARSE_CRS2COO(nzero, n, irptr, jcptr, irn, jcn)
IMPLICIT NONE
INTEGER, INTENT(IN) :: nzero, n
INTEGER, INTENT(IN) :: irptr(n+1), jcptr(nzero)
INTEGER, INTENT(OUT) :: irn(nzero), jcn(nzero)
END SUBROUTINE SPARSE_CRS2COO
END INTERFACE
END MODULE SPARSE_MODULE
MODULE STRUMPACK_MODULE
INTERFACE
SUBROUTINE STRUMPACK_SERIAL_FINTER(job, nrows, nnz, &
irptr, jcptr, a, &
rhs, x, ierr) &
BIND(C,NAME='strumpack_serial_finter')
USE ISO_C_BINDING
INTEGER(C_INT), INTENT(IN) :: job, nrows, nnz
INTEGER(C_INT), INTENT(IN) :: irptr(nrows+1), jcptr(nnz)
COMPLEX(C_FLOAT_COMPLEX), INTENT(IN) :: a(nnz), rhs(nrows)
COMPLEX(C_FLOAT_COMPLEX), INTENT(OUT) :: x(nrows)
INTEGER(C_INT), INTENT(OUT) :: ierr
END SUBROUTINE STRUMPACK_SERIAL_FINTER
END INTERFACE
END MODULE STRUMPACK_MODULE
MODULE METIS5_MODULE
INTERFACE
SUBROUTINE METIS_PartGraphKway_finter(n, nparts, xadj, adjncy, &
part, ierr) &
BIND(C,NAME='METIS_PartGraphKway_finter')
USE ISO_C_BINDING
IMPLICIT NONE
INTEGER(C_INT), INTENT(IN) :: n, nparts
INTEGER(C_INT), INTENT(IN) :: xadj(n+1), adjncy(*)
INTEGER(C_INT), INTENT(OUT) :: part(n), ierr
END SUBROUTINE
END INTERFACE
END MODULE METIS5_MODULE