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.
- PyFishPack/__init__.py +105 -0
- PyFishPack/__pycache__/__init__.cpython-39.pyc +0 -0
- PyFishPack/__pycache__/apps.cpython-39.pyc +0 -0
- PyFishPack/_dummy.c +23 -0
- PyFishPack/_dummy.cp39-win_amd64.pyd +0 -0
- PyFishPack/apps.py +3640 -0
- PyFishPack/fishpack.cp39-win_amd64.dll.a +0 -0
- PyFishPack/fishpack.cp39-win_amd64.pyd +0 -0
- PyFishPack/meson.build +213 -0
- PyFishPack/src/archive/f77/Makefile +19 -0
- PyFishPack/src/archive/f77/blktri.f +1404 -0
- PyFishPack/src/archive/f77/cblktri.f +1414 -0
- PyFishPack/src/archive/f77/cmgnbn.f +1592 -0
- PyFishPack/src/archive/f77/comf.f +186 -0
- PyFishPack/src/archive/f77/fftpack.f +2968 -0
- PyFishPack/src/archive/f77/genbun.f +1335 -0
- PyFishPack/src/archive/f77/gnbnaux.f +314 -0
- PyFishPack/src/archive/f77/hstcrt.f +443 -0
- PyFishPack/src/archive/f77/hstcsp.f +683 -0
- PyFishPack/src/archive/f77/hstcyl.f +485 -0
- PyFishPack/src/archive/f77/hstplr.f +538 -0
- PyFishPack/src/archive/f77/hstssp.f +634 -0
- PyFishPack/src/archive/f77/hw3crt.f +687 -0
- PyFishPack/src/archive/f77/hwscrt.f +512 -0
- PyFishPack/src/archive/f77/hwscsp.f +728 -0
- PyFishPack/src/archive/f77/hwscyl.f +538 -0
- PyFishPack/src/archive/f77/hwsplr.f +602 -0
- PyFishPack/src/archive/f77/hwsssp.f +780 -0
- PyFishPack/src/archive/f77/pois3d.f +550 -0
- PyFishPack/src/archive/f77/poistg.f +875 -0
- PyFishPack/src/archive/f77/sepaux.f +361 -0
- PyFishPack/src/archive/f77/sepeli.f +1029 -0
- PyFishPack/src/archive/f77/sepx4.f +958 -0
- PyFishPack/src/centered_axisymmetric_spherical_solver.f90 +1002 -0
- PyFishPack/src/centered_cartesian_helmholtz_solver_3d.f90 +819 -0
- PyFishPack/src/centered_cartesian_solver.f90 +583 -0
- PyFishPack/src/centered_cylindrical_solver.f90 +634 -0
- PyFishPack/src/centered_helmholtz_solvers.f90 +156 -0
- PyFishPack/src/centered_polar_solver.f90 +746 -0
- PyFishPack/src/centered_real_linear_systems_solver.f90 +280 -0
- PyFishPack/src/centered_spherical_solver.f90 +928 -0
- PyFishPack/src/complex_block_tridiagonal_linear_systems_solver.f90 +1947 -0
- PyFishPack/src/complex_linear_systems_solver.f90 +1787 -0
- PyFishPack/src/fftpack_c_api.f90 +86 -0
- PyFishPack/src/fishpack.f90 +191 -0
- PyFishPack/src/fishpack.pyf +504 -0
- PyFishPack/src/fishpack_c_api.f90 +365 -0
- PyFishPack/src/fishpack_original.pyf +2119 -0
- PyFishPack/src/fishpack_precision.f90 +53 -0
- PyFishPack/src/general_linear_systems_solver_3d.f90 +296 -0
- PyFishPack/src/iterative_solvers.f90 +969 -0
- PyFishPack/src/main.f90 +10 -0
- PyFishPack/src/pyfishpack_module.c +1302 -0
- PyFishPack/src/real_block_tridiagonal_linear_systems_solver.f90 +319 -0
- PyFishPack/src/sepeli.f90 +1454 -0
- PyFishPack/src/sepx4.f90 +1338 -0
- PyFishPack/src/staggered_axisymmetric_spherical_solver.f90 +908 -0
- PyFishPack/src/staggered_cartesian_solver.f90 +553 -0
- PyFishPack/src/staggered_cylindrical_solver.f90 +630 -0
- PyFishPack/src/staggered_helmholtz_solvers.f90 +172 -0
- PyFishPack/src/staggered_polar_solver.f90 +651 -0
- PyFishPack/src/staggered_real_linear_systems_solver.f90 +258 -0
- PyFishPack/src/staggered_spherical_solver.f90 +758 -0
- PyFishPack/src/three_dimensional_solvers.f90 +602 -0
- PyFishPack/src/type_CenteredCyclicReductionUtility.f90 +1714 -0
- PyFishPack/src/type_CyclicReductionUtility.f90 +472 -0
- PyFishPack/src/type_FishpackWorkspace.f90 +290 -0
- PyFishPack/src/type_GeneralizedCyclicReductionUtility.f90 +1980 -0
- PyFishPack/src/type_PeriodicFastFourierTransform.f90 +3789 -0
- PyFishPack/src/type_SepAux.f90 +586 -0
- PyFishPack/src/type_StaggeredCyclicReductionUtility.f90 +893 -0
- pyfishpack-0.1.0.dist-info/DELVEWHEEL +2 -0
- pyfishpack-0.1.0.dist-info/METADATA +81 -0
- pyfishpack-0.1.0.dist-info/RECORD +82 -0
- pyfishpack-0.1.0.dist-info/WHEEL +5 -0
- pyfishpack-0.1.0.dist-info/licenses/LICENSE +21 -0
- pyfishpack-0.1.0.dist-info/top_level.txt +1 -0
- pyfishpack.libs/.load-order-pyfishpack-0.1.0 +4 -0
- pyfishpack.libs/libgcc_s_seh-1-25d59ccffa1a9009644065b069829e07.dll +0 -0
- pyfishpack.libs/libgfortran-5-08f2195cfa0d823e13371c5c3186a82a.dll +0 -0
- pyfishpack.libs/libquadmath-0-c5abb9113f1ee64b87a889958e4b7418.dll +0 -0
- 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
|