PyFishPack 0.1.0__cp39-cp39-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. PyFishPack/__init__.py +105 -0
  2. PyFishPack/__pycache__/__init__.cpython-39.pyc +0 -0
  3. PyFishPack/__pycache__/apps.cpython-39.pyc +0 -0
  4. PyFishPack/_dummy.c +23 -0
  5. PyFishPack/_dummy.cp39-win_amd64.pyd +0 -0
  6. PyFishPack/apps.py +3640 -0
  7. PyFishPack/fishpack.cp39-win_amd64.dll.a +0 -0
  8. PyFishPack/fishpack.cp39-win_amd64.pyd +0 -0
  9. PyFishPack/meson.build +213 -0
  10. PyFishPack/src/archive/f77/Makefile +19 -0
  11. PyFishPack/src/archive/f77/blktri.f +1404 -0
  12. PyFishPack/src/archive/f77/cblktri.f +1414 -0
  13. PyFishPack/src/archive/f77/cmgnbn.f +1592 -0
  14. PyFishPack/src/archive/f77/comf.f +186 -0
  15. PyFishPack/src/archive/f77/fftpack.f +2968 -0
  16. PyFishPack/src/archive/f77/genbun.f +1335 -0
  17. PyFishPack/src/archive/f77/gnbnaux.f +314 -0
  18. PyFishPack/src/archive/f77/hstcrt.f +443 -0
  19. PyFishPack/src/archive/f77/hstcsp.f +683 -0
  20. PyFishPack/src/archive/f77/hstcyl.f +485 -0
  21. PyFishPack/src/archive/f77/hstplr.f +538 -0
  22. PyFishPack/src/archive/f77/hstssp.f +634 -0
  23. PyFishPack/src/archive/f77/hw3crt.f +687 -0
  24. PyFishPack/src/archive/f77/hwscrt.f +512 -0
  25. PyFishPack/src/archive/f77/hwscsp.f +728 -0
  26. PyFishPack/src/archive/f77/hwscyl.f +538 -0
  27. PyFishPack/src/archive/f77/hwsplr.f +602 -0
  28. PyFishPack/src/archive/f77/hwsssp.f +780 -0
  29. PyFishPack/src/archive/f77/pois3d.f +550 -0
  30. PyFishPack/src/archive/f77/poistg.f +875 -0
  31. PyFishPack/src/archive/f77/sepaux.f +361 -0
  32. PyFishPack/src/archive/f77/sepeli.f +1029 -0
  33. PyFishPack/src/archive/f77/sepx4.f +958 -0
  34. PyFishPack/src/centered_axisymmetric_spherical_solver.f90 +1002 -0
  35. PyFishPack/src/centered_cartesian_helmholtz_solver_3d.f90 +819 -0
  36. PyFishPack/src/centered_cartesian_solver.f90 +583 -0
  37. PyFishPack/src/centered_cylindrical_solver.f90 +634 -0
  38. PyFishPack/src/centered_helmholtz_solvers.f90 +156 -0
  39. PyFishPack/src/centered_polar_solver.f90 +746 -0
  40. PyFishPack/src/centered_real_linear_systems_solver.f90 +280 -0
  41. PyFishPack/src/centered_spherical_solver.f90 +928 -0
  42. PyFishPack/src/complex_block_tridiagonal_linear_systems_solver.f90 +1947 -0
  43. PyFishPack/src/complex_linear_systems_solver.f90 +1787 -0
  44. PyFishPack/src/fftpack_c_api.f90 +86 -0
  45. PyFishPack/src/fishpack.f90 +191 -0
  46. PyFishPack/src/fishpack.pyf +504 -0
  47. PyFishPack/src/fishpack_c_api.f90 +365 -0
  48. PyFishPack/src/fishpack_original.pyf +2119 -0
  49. PyFishPack/src/fishpack_precision.f90 +53 -0
  50. PyFishPack/src/general_linear_systems_solver_3d.f90 +296 -0
  51. PyFishPack/src/iterative_solvers.f90 +969 -0
  52. PyFishPack/src/main.f90 +10 -0
  53. PyFishPack/src/pyfishpack_module.c +1302 -0
  54. PyFishPack/src/real_block_tridiagonal_linear_systems_solver.f90 +319 -0
  55. PyFishPack/src/sepeli.f90 +1454 -0
  56. PyFishPack/src/sepx4.f90 +1338 -0
  57. PyFishPack/src/staggered_axisymmetric_spherical_solver.f90 +908 -0
  58. PyFishPack/src/staggered_cartesian_solver.f90 +553 -0
  59. PyFishPack/src/staggered_cylindrical_solver.f90 +630 -0
  60. PyFishPack/src/staggered_helmholtz_solvers.f90 +172 -0
  61. PyFishPack/src/staggered_polar_solver.f90 +651 -0
  62. PyFishPack/src/staggered_real_linear_systems_solver.f90 +258 -0
  63. PyFishPack/src/staggered_spherical_solver.f90 +758 -0
  64. PyFishPack/src/three_dimensional_solvers.f90 +602 -0
  65. PyFishPack/src/type_CenteredCyclicReductionUtility.f90 +1714 -0
  66. PyFishPack/src/type_CyclicReductionUtility.f90 +472 -0
  67. PyFishPack/src/type_FishpackWorkspace.f90 +290 -0
  68. PyFishPack/src/type_GeneralizedCyclicReductionUtility.f90 +1980 -0
  69. PyFishPack/src/type_PeriodicFastFourierTransform.f90 +3789 -0
  70. PyFishPack/src/type_SepAux.f90 +586 -0
  71. PyFishPack/src/type_StaggeredCyclicReductionUtility.f90 +893 -0
  72. pyfishpack-0.1.0.dist-info/DELVEWHEEL +2 -0
  73. pyfishpack-0.1.0.dist-info/METADATA +81 -0
  74. pyfishpack-0.1.0.dist-info/RECORD +82 -0
  75. pyfishpack-0.1.0.dist-info/WHEEL +5 -0
  76. pyfishpack-0.1.0.dist-info/licenses/LICENSE +21 -0
  77. pyfishpack-0.1.0.dist-info/top_level.txt +1 -0
  78. pyfishpack.libs/.load-order-pyfishpack-0.1.0 +4 -0
  79. pyfishpack.libs/libgcc_s_seh-1-25d59ccffa1a9009644065b069829e07.dll +0 -0
  80. pyfishpack.libs/libgfortran-5-08f2195cfa0d823e13371c5c3186a82a.dll +0 -0
  81. pyfishpack.libs/libquadmath-0-c5abb9113f1ee64b87a889958e4b7418.dll +0 -0
  82. pyfishpack.libs/libwinpthread-1-83908d14abfafb8b3bfa38cf51ecee56.dll +0 -0
@@ -0,0 +1,365 @@
1
+ module fishpack_c_api
2
+
3
+ use, intrinsic :: iso_c_binding, only: &
4
+ c_double, &
5
+ c_int, &
6
+ c_ptr, &
7
+ c_f_pointer
8
+
9
+ use centered_real_linear_systems_solver, only: &
10
+ genbun
11
+
12
+ use centered_helmholtz_solvers, only: &
13
+ hwscrt, &
14
+ hwsplr, &
15
+ hwscyl, &
16
+ hwsssp, &
17
+ hwscsp
18
+
19
+ use staggered_helmholtz_solvers, only: &
20
+ hstcrt, &
21
+ hstplr, &
22
+ hstcyl, &
23
+ hstssp, &
24
+ hstcsp
25
+
26
+ use staggered_real_linear_systems_solver, only: &
27
+ poistg
28
+
29
+ use three_dimensional_solvers, only: &
30
+ pois3d, &
31
+ hw3crt
32
+
33
+ use type_FishpackWorkspace, only: &
34
+ FishpackWorkspace
35
+
36
+ implicit none
37
+
38
+ contains
39
+
40
+ subroutine pyfp_genbun(nperod, n, mperod, m, idimy, a_ptr, b_ptr, ccoef_ptr, y_ptr, ierror) &
41
+ bind(C, name="pyfp_genbun")
42
+
43
+ integer(c_int), value :: nperod, n, mperod, m, idimy
44
+ type(c_ptr), value :: a_ptr, b_ptr, ccoef_ptr, y_ptr
45
+ integer(c_int), intent(out) :: ierror
46
+
47
+ real(c_double), pointer :: a(:), b(:), c(:), y(:, :)
48
+
49
+ call c_f_pointer(a_ptr, a, [m])
50
+ call c_f_pointer(b_ptr, b, [m])
51
+ call c_f_pointer(ccoef_ptr, c, [m])
52
+ call c_f_pointer(y_ptr, y, [idimy, n])
53
+
54
+ call genbun(nperod, n, mperod, m, a, b, c, idimy, y, ierror)
55
+
56
+ end subroutine pyfp_genbun
57
+
58
+ subroutine pyfp_poistg(nperod, n, mperod, m, idimy, a_ptr, b_ptr, ccoef_ptr, y_ptr, ierror) &
59
+ bind(C, name="pyfp_poistg")
60
+
61
+ integer(c_int), value :: nperod, n, mperod, m, idimy
62
+ type(c_ptr), value :: a_ptr, b_ptr, ccoef_ptr, y_ptr
63
+ integer(c_int), intent(out) :: ierror
64
+
65
+ real(c_double), pointer :: a(:), b(:), c(:), y(:, :)
66
+
67
+ call c_f_pointer(a_ptr, a, [m])
68
+ call c_f_pointer(b_ptr, b, [m])
69
+ call c_f_pointer(ccoef_ptr, c, [m])
70
+ call c_f_pointer(y_ptr, y, [idimy, n])
71
+
72
+ call poistg(nperod, n, mperod, m, a, b, c, idimy, y, ierror)
73
+
74
+ end subroutine pyfp_poistg
75
+
76
+ subroutine pyfp_pois3d(lperod, l, c1, mperod, m, c2, nperod, n, ldimf, mdimf, &
77
+ a_ptr, b_ptr, ccoef_ptr, f_ptr, ierror) bind(C, name="pyfp_pois3d")
78
+
79
+ integer(c_int), value :: lperod, l, mperod, m, nperod, n, ldimf, mdimf
80
+ real(c_double), value :: c1, c2
81
+ type(c_ptr), value :: a_ptr, b_ptr, ccoef_ptr, f_ptr
82
+ integer(c_int), intent(out) :: ierror
83
+
84
+ real(c_double), pointer :: a(:), b(:), c(:), f(:, :, :)
85
+
86
+ call c_f_pointer(a_ptr, a, [n])
87
+ call c_f_pointer(b_ptr, b, [n])
88
+ call c_f_pointer(ccoef_ptr, c, [n])
89
+ call c_f_pointer(f_ptr, f, [ldimf, mdimf, n])
90
+
91
+ call pois3d(lperod, l, c1, mperod, m, c2, nperod, n, a, b, c, ldimf, mdimf, f, ierror)
92
+
93
+ end subroutine pyfp_pois3d
94
+
95
+ subroutine pyfp_hwscrt(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
96
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
97
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hwscrt")
98
+
99
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
100
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
101
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
102
+ real(c_double), intent(out) :: pertrb
103
+ integer(c_int), intent(out) :: ierror
104
+
105
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
106
+
107
+ call c_f_pointer(bda_ptr, bda, [len_bda])
108
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
109
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
110
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
111
+ call c_f_pointer(f_ptr, f, [idimf, n + 1])
112
+
113
+ call hwscrt(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
114
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
115
+
116
+ end subroutine pyfp_hwscrt
117
+
118
+ subroutine pyfp_hstcrt(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
119
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
120
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hstcrt")
121
+
122
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
123
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
124
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
125
+ real(c_double), intent(out) :: pertrb
126
+ integer(c_int), intent(out) :: ierror
127
+
128
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
129
+
130
+ call c_f_pointer(bda_ptr, bda, [len_bda])
131
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
132
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
133
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
134
+ call c_f_pointer(f_ptr, f, [idimf, n])
135
+
136
+ call hstcrt(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
137
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
138
+
139
+ end subroutine pyfp_hstcrt
140
+
141
+ subroutine pyfp_hwsplr(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
142
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
143
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hwsplr")
144
+
145
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
146
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
147
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
148
+ real(c_double), intent(out) :: pertrb
149
+ integer(c_int), intent(out) :: ierror
150
+
151
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
152
+
153
+ call c_f_pointer(bda_ptr, bda, [len_bda])
154
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
155
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
156
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
157
+ call c_f_pointer(f_ptr, f, [idimf, n + 1])
158
+
159
+ call hwsplr(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
160
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
161
+
162
+ end subroutine pyfp_hwsplr
163
+
164
+ subroutine pyfp_hwscyl(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
165
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
166
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hwscyl")
167
+
168
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
169
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
170
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
171
+ real(c_double), intent(out) :: pertrb
172
+ integer(c_int), intent(out) :: ierror
173
+
174
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
175
+
176
+ call c_f_pointer(bda_ptr, bda, [len_bda])
177
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
178
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
179
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
180
+ call c_f_pointer(f_ptr, f, [idimf, n + 1])
181
+
182
+ call hwscyl(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
183
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
184
+
185
+ end subroutine pyfp_hwscyl
186
+
187
+ subroutine pyfp_hstplr(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
188
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
189
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hstplr")
190
+
191
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
192
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
193
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
194
+ real(c_double), intent(out) :: pertrb
195
+ integer(c_int), intent(out) :: ierror
196
+
197
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
198
+
199
+ call c_f_pointer(bda_ptr, bda, [len_bda])
200
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
201
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
202
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
203
+ call c_f_pointer(f_ptr, f, [idimf, n])
204
+
205
+ call hstplr(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
206
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
207
+
208
+ end subroutine pyfp_hstplr
209
+
210
+ subroutine pyfp_hstcyl(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
211
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
212
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hstcyl")
213
+
214
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
215
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
216
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
217
+ real(c_double), intent(out) :: pertrb
218
+ integer(c_int), intent(out) :: ierror
219
+
220
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
221
+
222
+ call c_f_pointer(bda_ptr, bda, [len_bda])
223
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
224
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
225
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
226
+ call c_f_pointer(f_ptr, f, [idimf, n])
227
+
228
+ call hstcyl(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
229
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
230
+
231
+ end subroutine pyfp_hstcyl
232
+
233
+ subroutine pyfp_hwsssp(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
234
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
235
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hwsssp")
236
+
237
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
238
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
239
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
240
+ real(c_double), intent(out) :: pertrb
241
+ integer(c_int), intent(out) :: ierror
242
+
243
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
244
+
245
+ call c_f_pointer(bda_ptr, bda, [len_bda])
246
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
247
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
248
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
249
+ call c_f_pointer(f_ptr, f, [idimf, n + 1])
250
+
251
+ call hwsssp(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
252
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
253
+
254
+ end subroutine pyfp_hwsssp
255
+
256
+ subroutine pyfp_hstssp(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
257
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
258
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hstssp")
259
+
260
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
261
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
262
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
263
+ real(c_double), intent(out) :: pertrb
264
+ integer(c_int), intent(out) :: ierror
265
+
266
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
267
+
268
+ call c_f_pointer(bda_ptr, bda, [len_bda])
269
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
270
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
271
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
272
+ call c_f_pointer(f_ptr, f, [idimf, n])
273
+
274
+ call hstssp(a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
275
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror)
276
+
277
+ end subroutine pyfp_hstssp
278
+
279
+ subroutine pyfp_hwscsp(ts, tf, m, mbdcnd, bdts_ptr, len_bdts, bdtf_ptr, len_bdtf, &
280
+ rs, rf, n, nbdcnd, bdrs_ptr, len_bdrs, bdrf_ptr, len_bdrf, elmbda, &
281
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hwscsp")
282
+
283
+ real(c_double), value :: ts, tf, rs, rf, elmbda
284
+ integer(c_int), value :: m, mbdcnd, len_bdts, len_bdtf, n, nbdcnd, len_bdrs, len_bdrf, idimf
285
+ type(c_ptr), value :: bdts_ptr, bdtf_ptr, bdrs_ptr, bdrf_ptr, f_ptr
286
+ real(c_double), intent(out) :: pertrb
287
+ integer(c_int), intent(out) :: ierror
288
+
289
+ integer(c_int) :: intl
290
+ real(c_double), pointer :: bdts(:), bdtf(:), bdrs(:), bdrf(:), f(:, :)
291
+ type(FishpackWorkspace) :: workspace
292
+
293
+ call c_f_pointer(bdts_ptr, bdts, [len_bdts])
294
+ call c_f_pointer(bdtf_ptr, bdtf, [len_bdtf])
295
+ call c_f_pointer(bdrs_ptr, bdrs, [len_bdrs])
296
+ call c_f_pointer(bdrf_ptr, bdrf, [len_bdrf])
297
+ call c_f_pointer(f_ptr, f, [idimf, n + 1])
298
+
299
+ intl = 0
300
+ call hwscsp(intl, ts, tf, m, mbdcnd, bdts, bdtf, rs, rf, n, &
301
+ nbdcnd, bdrs, bdrf, elmbda, f, idimf, pertrb, ierror, workspace)
302
+ call workspace%destroy()
303
+
304
+ end subroutine pyfp_hwscsp
305
+
306
+ subroutine pyfp_hstcsp(a_lower, b_upper, m, mbdcnd, bda_ptr, len_bda, bdb_ptr, len_bdb, &
307
+ c_lower, d_upper, n, nbdcnd, bdc_ptr, len_bdc, bdd_ptr, len_bdd, elmbda, &
308
+ idimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hstcsp")
309
+
310
+ real(c_double), value :: a_lower, b_upper, c_lower, d_upper, elmbda
311
+ integer(c_int), value :: m, mbdcnd, len_bda, len_bdb, n, nbdcnd, len_bdc, len_bdd, idimf
312
+ type(c_ptr), value :: bda_ptr, bdb_ptr, bdc_ptr, bdd_ptr, f_ptr
313
+ real(c_double), intent(out) :: pertrb
314
+ integer(c_int), intent(out) :: ierror
315
+
316
+ integer(c_int) :: intl
317
+ real(c_double), pointer :: bda(:), bdb(:), bdc(:), bdd(:), f(:, :)
318
+ type(FishpackWorkspace) :: workspace
319
+
320
+ call c_f_pointer(bda_ptr, bda, [len_bda])
321
+ call c_f_pointer(bdb_ptr, bdb, [len_bdb])
322
+ call c_f_pointer(bdc_ptr, bdc, [len_bdc])
323
+ call c_f_pointer(bdd_ptr, bdd, [len_bdd])
324
+ call c_f_pointer(f_ptr, f, [idimf, n])
325
+
326
+ intl = 0
327
+ call hstcsp(intl, a_lower, b_upper, m, mbdcnd, bda, bdb, c_lower, d_upper, n, &
328
+ nbdcnd, bdc, bdd, elmbda, f, idimf, pertrb, ierror, workspace)
329
+ call workspace%destroy()
330
+
331
+ end subroutine pyfp_hstcsp
332
+
333
+ subroutine pyfp_hw3crt(xs, xf, l, lbdcnd, bdxs_ptr, bdxs_dim1, bdxs_dim2, &
334
+ bdxf_ptr, bdxf_dim1, bdxf_dim2, ys, yf, m, mbdcnd, bdys_ptr, bdys_dim1, &
335
+ bdys_dim2, bdyf_ptr, bdyf_dim1, bdyf_dim2, zs, zf, n, nbdcnd, bdzs_ptr, &
336
+ bdzs_dim1, bdzs_dim2, bdzf_ptr, bdzf_dim1, bdzf_dim2, elmbda, ldimf, &
337
+ mdimf, f_ptr, pertrb, ierror) bind(C, name="pyfp_hw3crt")
338
+
339
+ real(c_double), value :: xs, xf, ys, yf, zs, zf, elmbda
340
+ integer(c_int), value :: l, lbdcnd, m, mbdcnd, n, nbdcnd, ldimf, mdimf
341
+ integer(c_int), value :: bdxs_dim1, bdxs_dim2, bdxf_dim1, bdxf_dim2
342
+ integer(c_int), value :: bdys_dim1, bdys_dim2, bdyf_dim1, bdyf_dim2
343
+ integer(c_int), value :: bdzs_dim1, bdzs_dim2, bdzf_dim1, bdzf_dim2
344
+ type(c_ptr), value :: bdxs_ptr, bdxf_ptr, bdys_ptr, bdyf_ptr, bdzs_ptr, bdzf_ptr, f_ptr
345
+ real(c_double), intent(out) :: pertrb
346
+ integer(c_int), intent(out) :: ierror
347
+
348
+ real(c_double), pointer :: bdxs(:, :), bdxf(:, :), bdys(:, :), bdyf(:, :)
349
+ real(c_double), pointer :: bdzs(:, :), bdzf(:, :), f(:, :, :)
350
+
351
+ call c_f_pointer(bdxs_ptr, bdxs, [bdxs_dim1, bdxs_dim2])
352
+ call c_f_pointer(bdxf_ptr, bdxf, [bdxf_dim1, bdxf_dim2])
353
+ call c_f_pointer(bdys_ptr, bdys, [bdys_dim1, bdys_dim2])
354
+ call c_f_pointer(bdyf_ptr, bdyf, [bdyf_dim1, bdyf_dim2])
355
+ call c_f_pointer(bdzs_ptr, bdzs, [bdzs_dim1, bdzs_dim2])
356
+ call c_f_pointer(bdzf_ptr, bdzf, [bdzf_dim1, bdzf_dim2])
357
+ call c_f_pointer(f_ptr, f, [ldimf, mdimf, n + 1])
358
+
359
+ call hw3crt(xs, xf, l, lbdcnd, bdxs, bdxf, ys, yf, m, mbdcnd, bdys, &
360
+ bdyf, zs, zf, n, nbdcnd, bdzs, bdzf, elmbda, ldimf, mdimf, f, &
361
+ pertrb, ierror)
362
+
363
+ end subroutine pyfp_hw3crt
364
+
365
+ end module fishpack_c_api