PyFishPack 0.1.0__cp313-cp313-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 +86 -0
- PyFishPack/__pycache__/__init__.cpython-313.pyc +0 -0
- PyFishPack/__pycache__/apps.cpython-313.pyc +0 -0
- PyFishPack/_dummy.c +23 -0
- PyFishPack/_dummy.cp313-win_amd64.pyd +0 -0
- PyFishPack/apps.py +3640 -0
- PyFishPack/fishpack.cp313-win_amd64.dll.a +0 -0
- PyFishPack/fishpack.cp313-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 +81 -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/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,687 @@
|
|
|
1
|
+
C
|
|
2
|
+
C file hw3crt.f
|
|
3
|
+
C
|
|
4
|
+
SUBROUTINE HW3CRT (XS,XF,L,LBDCND,BDXS,BDXF,YS,YF,M,MBDCND,BDYS,
|
|
5
|
+
1 BDYF,ZS,ZF,N,NBDCND,BDZS,BDZF,ELMBDA,LDIMF,
|
|
6
|
+
2 MDIMF,F,PERTRB,IERROR,W)
|
|
7
|
+
C
|
|
8
|
+
C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
9
|
+
C * *
|
|
10
|
+
C * copyright (c) 1999 by UCAR *
|
|
11
|
+
C * *
|
|
12
|
+
C * UNIVERSITY CORPORATION for ATMOSPHERIC RESEARCH *
|
|
13
|
+
C * *
|
|
14
|
+
C * all rights reserved *
|
|
15
|
+
C * *
|
|
16
|
+
C * FISHPACK version 4.1 *
|
|
17
|
+
C * *
|
|
18
|
+
C * A PACKAGE OF FORTRAN SUBPROGRAMS FOR THE SOLUTION OF *
|
|
19
|
+
C * *
|
|
20
|
+
C * SEPARABLE ELLIPTIC PARTIAL DIFFERENTIAL EQUATIONS *
|
|
21
|
+
C * *
|
|
22
|
+
C * BY *
|
|
23
|
+
C * *
|
|
24
|
+
C * JOHN ADAMS, PAUL SWARZTRAUBER AND ROLAND SWEET *
|
|
25
|
+
C * *
|
|
26
|
+
C * OF *
|
|
27
|
+
C * *
|
|
28
|
+
C * THE NATIONAL CENTER FOR ATMOSPHERIC RESEARCH *
|
|
29
|
+
C * *
|
|
30
|
+
C * BOULDER, COLORADO (80307) U.S.A. *
|
|
31
|
+
C * *
|
|
32
|
+
C * WHICH IS SPONSORED BY *
|
|
33
|
+
C * *
|
|
34
|
+
C * THE NATIONAL SCIENCE FOUNDATION *
|
|
35
|
+
C * *
|
|
36
|
+
C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
37
|
+
C
|
|
38
|
+
C
|
|
39
|
+
C
|
|
40
|
+
C DIMENSION OF BDXS(MDIMF,N+1), BDXF(MDIMF,N+1),
|
|
41
|
+
C ARGUMENTS BDYS(LDIMF,N+1), BDYF(LDIMF,N+1),
|
|
42
|
+
C BDZS(LDIMF,M+1), BDZF(LDIMF,M+1),
|
|
43
|
+
C F(LDIMF,MDIMF,N+1), W(SEE ARGUMENT LIST)
|
|
44
|
+
C
|
|
45
|
+
C LATEST REVISION NOVEMBER 1988
|
|
46
|
+
C
|
|
47
|
+
C PURPOSE SOLVES THE STANDARD FIVE-POINT FINITE
|
|
48
|
+
C DIFFERENCE APPROXIMATION TO THE HELMHOLTZ
|
|
49
|
+
C EQUATION IN CARTESIAN COORDINATES. THIS
|
|
50
|
+
C EQUATION IS
|
|
51
|
+
C
|
|
52
|
+
C (D/DX)(DU/DX) + (D/DY)(DU/DY) +
|
|
53
|
+
C (D/DZ)(DU/DZ) + LAMBDA*U = F(X,Y,Z) .
|
|
54
|
+
C
|
|
55
|
+
C USAGE CALL HW3CRT (XS,XF,L,LBDCND,BDXS,BDXF,YS,YF,M,
|
|
56
|
+
C MBDCND,BDYS,BDYF,ZS,ZF,N,NBDCND,
|
|
57
|
+
C BDZS,BDZF,ELMBDA,LDIMF,MDIMF,F,
|
|
58
|
+
C PERTRB,IERROR,W)
|
|
59
|
+
C
|
|
60
|
+
C ARGUMENTS
|
|
61
|
+
C
|
|
62
|
+
C ON INPUT XS,XF
|
|
63
|
+
C
|
|
64
|
+
C THE RANGE OF X, I.E. XS .LE. X .LE. XF .
|
|
65
|
+
C XS MUST BE LESS THAN XF.
|
|
66
|
+
C
|
|
67
|
+
C L
|
|
68
|
+
C THE NUMBER OF PANELS INTO WHICH THE
|
|
69
|
+
C INTERVAL (XS,XF) IS SUBDIVIDED.
|
|
70
|
+
C HENCE, THERE WILL BE L+1 GRID POINTS
|
|
71
|
+
C IN THE X-DIRECTION GIVEN BY
|
|
72
|
+
C X(I) = XS+(I-1)DX FOR I=1,2,...,L+1,
|
|
73
|
+
C WHERE DX = (XF-XS)/L IS THE PANEL WIDTH.
|
|
74
|
+
C L MUST BE AT LEAST 5.
|
|
75
|
+
C
|
|
76
|
+
C LBDCND
|
|
77
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITIONS
|
|
78
|
+
C AT X = XS AND X = XF.
|
|
79
|
+
C
|
|
80
|
+
C = 0 IF THE SOLUTION IS PERIODIC IN X,
|
|
81
|
+
C I.E. U(L+I,J,K) = U(I,J,K).
|
|
82
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
83
|
+
C X = XS AND X = XF.
|
|
84
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
85
|
+
C X = XS AND THE DERIVATIVE OF THE
|
|
86
|
+
C SOLUTION WITH RESPECT TO X IS
|
|
87
|
+
C SPECIFIED AT X = XF.
|
|
88
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
89
|
+
C WITH RESPECT TO X IS SPECIFIED AT
|
|
90
|
+
C X = XS AND X = XF.
|
|
91
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
92
|
+
C WITH RESPECT TO X IS SPECIFIED AT
|
|
93
|
+
C X = XS AND THE SOLUTION IS SPECIFIED
|
|
94
|
+
C AT X=XF.
|
|
95
|
+
C
|
|
96
|
+
C BDXS
|
|
97
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES THE
|
|
98
|
+
C VALUES OF THE DERIVATIVE OF THE SOLUTION
|
|
99
|
+
C WITH RESPECT TO X AT X = XS.
|
|
100
|
+
C
|
|
101
|
+
C WHEN LBDCND = 3 OR 4,
|
|
102
|
+
C
|
|
103
|
+
C BDXS(J,K) = (D/DX)U(XS,Y(J),Z(K)),
|
|
104
|
+
C J=1,2,...,M+1, K=1,2,...,N+1.
|
|
105
|
+
C
|
|
106
|
+
C WHEN LBDCND HAS ANY OTHER VALUE, BDXS
|
|
107
|
+
C IS A DUMMY VARIABLE. BDXS MUST BE
|
|
108
|
+
C DIMENSIONED AT LEAST (M+1)*(N+1).
|
|
109
|
+
C
|
|
110
|
+
C BDXF
|
|
111
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES THE
|
|
112
|
+
C VALUES OF THE DERIVATIVE OF THE SOLUTION
|
|
113
|
+
C WITH RESPECT TO X AT X = XF.
|
|
114
|
+
C
|
|
115
|
+
C WHEN LBDCND = 2 OR 3,
|
|
116
|
+
C
|
|
117
|
+
C BDXF(J,K) = (D/DX)U(XF,Y(J),Z(K)),
|
|
118
|
+
C J=1,2,...,M+1, K=1,2,...,N+1.
|
|
119
|
+
C
|
|
120
|
+
C WHEN LBDCND HAS ANY OTHER VALUE, BDXF IS
|
|
121
|
+
C A DUMMY VARIABLE. BDXF MUST BE
|
|
122
|
+
C DIMENSIONED AT LEAST (M+1)*(N+1).
|
|
123
|
+
C
|
|
124
|
+
C YS,YF
|
|
125
|
+
C THE RANGE OF Y, I.E. YS .LE. Y .LE. YF.
|
|
126
|
+
C YS MUST BE LESS THAN YF.
|
|
127
|
+
C
|
|
128
|
+
C M
|
|
129
|
+
C THE NUMBER OF PANELS INTO WHICH THE
|
|
130
|
+
C INTERVAL (YS,YF) IS SUBDIVIDED.
|
|
131
|
+
C HENCE, THERE WILL BE M+1 GRID POINTS IN
|
|
132
|
+
C THE Y-DIRECTION GIVEN BY Y(J) = YS+(J-1)DY
|
|
133
|
+
C FOR J=1,2,...,M+1,
|
|
134
|
+
C WHERE DY = (YF-YS)/M IS THE PANEL WIDTH.
|
|
135
|
+
C M MUST BE AT LEAST 5.
|
|
136
|
+
C
|
|
137
|
+
C MBDCND
|
|
138
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITIONS
|
|
139
|
+
C AT Y = YS AND Y = YF.
|
|
140
|
+
C
|
|
141
|
+
C = 0 IF THE SOLUTION IS PERIODIC IN Y, I.E.
|
|
142
|
+
C U(I,M+J,K) = U(I,J,K).
|
|
143
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
144
|
+
C Y = YS AND Y = YF.
|
|
145
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
146
|
+
C Y = YS AND THE DERIVATIVE OF THE
|
|
147
|
+
C SOLUTION WITH RESPECT TO Y IS
|
|
148
|
+
C SPECIFIED AT Y = YF.
|
|
149
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
150
|
+
C WITH RESPECT TO Y IS SPECIFIED AT
|
|
151
|
+
C Y = YS AND Y = YF.
|
|
152
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
153
|
+
C WITH RESPECT TO Y IS SPECIFIED AT
|
|
154
|
+
C AT Y = YS AND THE SOLUTION IS
|
|
155
|
+
C SPECIFIED AT Y=YF.
|
|
156
|
+
C
|
|
157
|
+
C BDYS
|
|
158
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES
|
|
159
|
+
C THE VALUES OF THE DERIVATIVE OF THE
|
|
160
|
+
C SOLUTION WITH RESPECT TO Y AT Y = YS.
|
|
161
|
+
C
|
|
162
|
+
C WHEN MBDCND = 3 OR 4,
|
|
163
|
+
C
|
|
164
|
+
C BDYS(I,K) = (D/DY)U(X(I),YS,Z(K)),
|
|
165
|
+
C I=1,2,...,L+1, K=1,2,...,N+1.
|
|
166
|
+
C
|
|
167
|
+
C WHEN MBDCND HAS ANY OTHER VALUE, BDYS
|
|
168
|
+
C IS A DUMMY VARIABLE. BDYS MUST BE
|
|
169
|
+
C DIMENSIONED AT LEAST (L+1)*(N+1).
|
|
170
|
+
C
|
|
171
|
+
C BDYF
|
|
172
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES
|
|
173
|
+
C THE VALUES OF THE DERIVATIVE OF THE
|
|
174
|
+
C SOLUTION WITH RESPECT TO Y AT Y = YF.
|
|
175
|
+
C
|
|
176
|
+
C WHEN MBDCND = 2 OR 3,
|
|
177
|
+
C
|
|
178
|
+
C BDYF(I,K) = (D/DY)U(X(I),YF,Z(K)),
|
|
179
|
+
C I=1,2,...,L+1, K=1,2,...,N+1.
|
|
180
|
+
C
|
|
181
|
+
C WHEN MBDCND HAS ANY OTHER VALUE, BDYF
|
|
182
|
+
C IS A DUMMY VARIABLE. BDYF MUST BE
|
|
183
|
+
C DIMENSIONED AT LEAST (L+1)*(N+1).
|
|
184
|
+
C
|
|
185
|
+
C ZS,ZF
|
|
186
|
+
C THE RANGE OF Z, I.E. ZS .LE. Z .LE. ZF.
|
|
187
|
+
C ZS MUST BE LESS THAN ZF.
|
|
188
|
+
C
|
|
189
|
+
C N
|
|
190
|
+
C THE NUMBER OF PANELS INTO WHICH THE
|
|
191
|
+
C INTERVAL (ZS,ZF) IS SUBDIVIDED.
|
|
192
|
+
C HENCE, THERE WILL BE N+1 GRID POINTS
|
|
193
|
+
C IN THE Z-DIRECTION GIVEN BY
|
|
194
|
+
C Z(K) = ZS+(K-1)DZ FOR K=1,2,...,N+1,
|
|
195
|
+
C WHERE DZ = (ZF-ZS)/N IS THE PANEL WIDTH.
|
|
196
|
+
C N MUST BE AT LEAST 5.
|
|
197
|
+
C
|
|
198
|
+
C NBDCND
|
|
199
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITIONS
|
|
200
|
+
C AT Z = ZS AND Z = ZF.
|
|
201
|
+
C
|
|
202
|
+
C = 0 IF THE SOLUTION IS PERIODIC IN Z, I.E.
|
|
203
|
+
C U(I,J,N+K) = U(I,J,K).
|
|
204
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
205
|
+
C Z = ZS AND Z = ZF.
|
|
206
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
207
|
+
C Z = ZS AND THE DERIVATIVE OF THE
|
|
208
|
+
C SOLUTION WITH RESPECT TO Z IS
|
|
209
|
+
C SPECIFIED AT Z = ZF.
|
|
210
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
211
|
+
C WITH RESPECT TO Z IS SPECIFIED AT
|
|
212
|
+
C Z = ZS AND Z = ZF.
|
|
213
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
214
|
+
C WITH RESPECT TO Z IS SPECIFIED AT
|
|
215
|
+
C Z = ZS AND THE SOLUTION IS SPECIFIED
|
|
216
|
+
C AT Z=ZF.
|
|
217
|
+
C
|
|
218
|
+
C BDZS
|
|
219
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES
|
|
220
|
+
C THE VALUES OF THE DERIVATIVE OF THE
|
|
221
|
+
C SOLUTION WITH RESPECT TO Z AT Z = ZS.
|
|
222
|
+
C
|
|
223
|
+
C WHEN NBDCND = 3 OR 4,
|
|
224
|
+
C
|
|
225
|
+
C BDZS(I,J) = (D/DZ)U(X(I),Y(J),ZS),
|
|
226
|
+
C I=1,2,...,L+1, J=1,2,...,M+1.
|
|
227
|
+
C
|
|
228
|
+
C WHEN NBDCND HAS ANY OTHER VALUE, BDZS
|
|
229
|
+
C IS A DUMMY VARIABLE. BDZS MUST BE
|
|
230
|
+
C DIMENSIONED AT LEAST (L+1)*(M+1).
|
|
231
|
+
C
|
|
232
|
+
C BDZF
|
|
233
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES
|
|
234
|
+
C THE VALUES OF THE DERIVATIVE OF THE
|
|
235
|
+
C SOLUTION WITH RESPECT TO Z AT Z = ZF.
|
|
236
|
+
C
|
|
237
|
+
C WHEN NBDCND = 2 OR 3,
|
|
238
|
+
C
|
|
239
|
+
C BDZF(I,J) = (D/DZ)U(X(I),Y(J),ZF),
|
|
240
|
+
C I=1,2,...,L+1, J=1,2,...,M+1.
|
|
241
|
+
C
|
|
242
|
+
C WHEN NBDCND HAS ANY OTHER VALUE, BDZF
|
|
243
|
+
C IS A DUMMY VARIABLE. BDZF MUST BE
|
|
244
|
+
C DIMENSIONED AT LEAST (L+1)*(M+1).
|
|
245
|
+
C
|
|
246
|
+
C ELMBDA
|
|
247
|
+
C THE CONSTANT LAMBDA IN THE HELMHOLTZ
|
|
248
|
+
C EQUATION. IF LAMBDA .GT. 0, A SOLUTION
|
|
249
|
+
C MAY NOT EXIST. HOWEVER, HW3CRT WILL
|
|
250
|
+
C ATTEMPT TO FIND A SOLUTION.
|
|
251
|
+
C
|
|
252
|
+
C LDIMF
|
|
253
|
+
C THE ROW (OR FIRST) DIMENSION OF THE
|
|
254
|
+
C ARRAYS F,BDYS,BDYF,BDZS,AND BDZF AS IT
|
|
255
|
+
C APPEARS IN THE PROGRAM CALLING HW3CRT.
|
|
256
|
+
C THIS PARAMETER IS USED TO SPECIFY THE
|
|
257
|
+
C VARIABLE DIMENSION OF THESE ARRAYS.
|
|
258
|
+
C LDIMF MUST BE AT LEAST L+1.
|
|
259
|
+
C
|
|
260
|
+
C MDIMF
|
|
261
|
+
C THE COLUMN (OR SECOND) DIMENSION OF THE
|
|
262
|
+
C ARRAY F AND THE ROW (OR FIRST) DIMENSION
|
|
263
|
+
C OF THE ARRAYS BDXS AND BDXF AS IT APPEARS
|
|
264
|
+
C IN THE PROGRAM CALLING HW3CRT. THIS
|
|
265
|
+
C PARAMETER IS USED TO SPECIFY THE VARIABLE
|
|
266
|
+
C DIMENSION OF THESE ARRAYS.
|
|
267
|
+
C MDIMF MUST BE AT LEAST M+1.
|
|
268
|
+
C
|
|
269
|
+
C F
|
|
270
|
+
C A THREE-DIMENSIONAL ARRAY OF DIMENSION AT
|
|
271
|
+
C AT LEAST (L+1)*(M+1)*(N+1), SPECIFYING THE
|
|
272
|
+
C VALUES OF THE RIGHT SIDE OF THE HELMHOLZ
|
|
273
|
+
C EQUATION AND BOUNDARY VALUES (IF ANY).
|
|
274
|
+
C
|
|
275
|
+
C ON THE INTERIOR, F IS DEFINED AS FOLLOWS:
|
|
276
|
+
C FOR I=2,3,...,L, J=2,3,...,M,
|
|
277
|
+
C AND K=2,3,...,N
|
|
278
|
+
C F(I,J,K) = F(X(I),Y(J),Z(K)).
|
|
279
|
+
C
|
|
280
|
+
C ON THE BOUNDARIES, F IS DEFINED AS FOLLOWS:
|
|
281
|
+
C FOR J=1,2,...,M+1, K=1,2,...,N+1,
|
|
282
|
+
C AND I=1,2,...,L+1
|
|
283
|
+
C
|
|
284
|
+
C LBDCND F(1,J,K) F(L+1,J,K)
|
|
285
|
+
C ------ --------------- ---------------
|
|
286
|
+
C
|
|
287
|
+
C 0 F(XS,Y(J),Z(K)) F(XS,Y(J),Z(K))
|
|
288
|
+
C 1 U(XS,Y(J),Z(K)) U(XF,Y(J),Z(K))
|
|
289
|
+
C 2 U(XS,Y(J),Z(K)) F(XF,Y(J),Z(K))
|
|
290
|
+
C 3 F(XS,Y(J),Z(K)) F(XF,Y(J),Z(K))
|
|
291
|
+
C 4 F(XS,Y(J),Z(K)) U(XF,Y(J),Z(K))
|
|
292
|
+
C
|
|
293
|
+
C MBDCND F(I,1,K) F(I,M+1,K)
|
|
294
|
+
C ------ --------------- ---------------
|
|
295
|
+
C
|
|
296
|
+
C 0 F(X(I),YS,Z(K)) F(X(I),YS,Z(K))
|
|
297
|
+
C 1 U(X(I),YS,Z(K)) U(X(I),YF,Z(K))
|
|
298
|
+
C 2 U(X(I),YS,Z(K)) F(X(I),YF,Z(K))
|
|
299
|
+
C 3 F(X(I),YS,Z(K)) F(X(I),YF,Z(K))
|
|
300
|
+
C 4 F(X(I),YS,Z(K)) U(X(I),YF,Z(K))
|
|
301
|
+
C
|
|
302
|
+
C NBDCND F(I,J,1) F(I,J,N+1)
|
|
303
|
+
C ------ --------------- ---------------
|
|
304
|
+
C
|
|
305
|
+
C 0 F(X(I),Y(J),ZS) F(X(I),Y(J),ZS)
|
|
306
|
+
C 1 U(X(I),Y(J),ZS) U(X(I),Y(J),ZF)
|
|
307
|
+
C 2 U(X(I),Y(J),ZS) F(X(I),Y(J),ZF)
|
|
308
|
+
C 3 F(X(I),Y(J),ZS) F(X(I),Y(J),ZF)
|
|
309
|
+
C 4 F(X(I),Y(J),ZS) U(X(I),Y(J),ZF)
|
|
310
|
+
C
|
|
311
|
+
C NOTE:
|
|
312
|
+
C IF THE TABLE CALLS FOR BOTH THE SOLUTION
|
|
313
|
+
C U AND THE RIGHT SIDE F ON A BOUNDARY,
|
|
314
|
+
C THEN THE SOLUTION MUST BE SPECIFIED.
|
|
315
|
+
C
|
|
316
|
+
C W
|
|
317
|
+
C A ONE-DIMENSIONAL ARRAY THAT MUST BE
|
|
318
|
+
C PROVIDED BY THE USER FOR WORK SPACE.
|
|
319
|
+
C THE LENGTH OF W MUST BE AT LEAST
|
|
320
|
+
C 30 + L + M + 5*N + MAX(L,M,N) +
|
|
321
|
+
C 7*(INT((L+1)/2) + INT((M+1)/2))
|
|
322
|
+
C
|
|
323
|
+
C
|
|
324
|
+
C
|
|
325
|
+
C
|
|
326
|
+
C ON OUTPUT F
|
|
327
|
+
C CONTAINS THE SOLUTION U(I,J,K) OF THE
|
|
328
|
+
C FINITE DIFFERENCE APPROXIMATION FOR THE
|
|
329
|
+
C GRID POINT (X(I),Y(J),Z(K)) FOR
|
|
330
|
+
C I=1,2,...,L+1, J=1,2,...,M+1,
|
|
331
|
+
C AND K=1,2,...,N+1.
|
|
332
|
+
C
|
|
333
|
+
C PERTRB
|
|
334
|
+
C IF A COMBINATION OF PERIODIC OR DERIVATIVE
|
|
335
|
+
C BOUNDARY CONDITIONS IS SPECIFIED FOR A
|
|
336
|
+
C POISSON EQUATION (LAMBDA = 0), A SOLUTION
|
|
337
|
+
C MAY NOT EXIST. PERTRB IS A CONSTANT,
|
|
338
|
+
C CALCULATED AND SUBTRACTED FROM F, WHICH
|
|
339
|
+
C ENSURES THAT A SOLUTION EXISTS. PWSCRT
|
|
340
|
+
C THEN COMPUTES THIS SOLUTION, WHICH IS A
|
|
341
|
+
C LEAST SQUARES SOLUTION TO THE ORIGINAL
|
|
342
|
+
C APPROXIMATION. THIS SOLUTION IS NOT
|
|
343
|
+
C UNIQUE AND IS UNNORMALIZED. THE VALUE OF
|
|
344
|
+
C PERTRB SHOULD BE SMALL COMPARED TO THE
|
|
345
|
+
C THE RIGHT SIDE F. OTHERWISE, A SOLUTION
|
|
346
|
+
C IS OBTAINED TO AN ESSENTIALLY DIFFERENT
|
|
347
|
+
C PROBLEM. THIS COMPARISON SHOULD ALWAYS
|
|
348
|
+
C BE MADE TO INSURE THAT A MEANINGFUL
|
|
349
|
+
C SOLUTION HAS BEEN OBTAINED.
|
|
350
|
+
C
|
|
351
|
+
C IERROR
|
|
352
|
+
C AN ERROR FLAG THAT INDICATES INVALID INPUT
|
|
353
|
+
C PARAMETERS. EXCEPT FOR NUMBERS 0 AND 12,
|
|
354
|
+
C A SOLUTION IS NOT ATTEMPTED.
|
|
355
|
+
C
|
|
356
|
+
C = 0 NO ERROR
|
|
357
|
+
C = 1 XS .GE. XF
|
|
358
|
+
C = 2 L .LT. 5
|
|
359
|
+
C = 3 LBDCND .LT. 0 .OR. LBDCND .GT. 4
|
|
360
|
+
C = 4 YS .GE. YF
|
|
361
|
+
C = 5 M .LT. 5
|
|
362
|
+
C = 6 MBDCND .LT. 0 .OR. MBDCND .GT. 4
|
|
363
|
+
C = 7 ZS .GE. ZF
|
|
364
|
+
C = 8 N .LT. 5
|
|
365
|
+
C = 9 NBDCND .LT. 0 .OR. NBDCND .GT. 4
|
|
366
|
+
C = 10 LDIMF .LT. L+1
|
|
367
|
+
C = 11 MDIMF .LT. M+1
|
|
368
|
+
C = 12 LAMBDA .GT. 0
|
|
369
|
+
C
|
|
370
|
+
C SINCE THIS IS THE ONLY MEANS OF INDICATING
|
|
371
|
+
C A POSSIBLY INCORRECT CALL TO HW3CRT, THE
|
|
372
|
+
C USER SHOULD TEST IERROR AFTER THE CALL.
|
|
373
|
+
C
|
|
374
|
+
C SPECIAL CONDITIONS NONE
|
|
375
|
+
C
|
|
376
|
+
C I/O NONE
|
|
377
|
+
C
|
|
378
|
+
C PRECISION SINGLE
|
|
379
|
+
C
|
|
380
|
+
C REQUIRED LIBRARY POIS3D, FFTPACK, AND COMF FROM FISHPACK
|
|
381
|
+
C FILES
|
|
382
|
+
C
|
|
383
|
+
C LANGUAGE FORTRAN
|
|
384
|
+
C
|
|
385
|
+
C HISTORY WRITTEN BY ROLAND SWEET AT NCAR IN THE LATE
|
|
386
|
+
C 1970'S. RELEASED ON NCAR'S PUBLIC SOFTWARE
|
|
387
|
+
C LIBRARIES IN JANUARY 1980.
|
|
388
|
+
C
|
|
389
|
+
C PORTABILITY FORTRAN 77
|
|
390
|
+
C
|
|
391
|
+
C ALGORITHM THIS SUBROUTINE DEFINES THE FINITE DIFFERENCE
|
|
392
|
+
C EQUATIONS, INCORPORATES BOUNDARY DATA, AND
|
|
393
|
+
C ADJUSTS THE RIGHT SIDE OF SINGULAR SYSTEMS AND
|
|
394
|
+
C THEN CALLS POIS3D TO SOLVE THE SYSTEM.
|
|
395
|
+
C
|
|
396
|
+
C TIMING FOR LARGE L, M AND N, THE OPERATION COUNT
|
|
397
|
+
C IS ROUGHLY PROPORTIONAL TO
|
|
398
|
+
C L*M*N*(LOG2(L)+LOG2(M)+5),
|
|
399
|
+
C BUT ALSO DEPENDS ON INPUT PARAMETERS LBDCND
|
|
400
|
+
C AND MBDCND.
|
|
401
|
+
C
|
|
402
|
+
C ACCURACY THE SOLUTION PROCESS EMPLOYED RESULTS IN
|
|
403
|
+
C A LOSS OF NO MORE THAN FOUR SIGNIFICANT
|
|
404
|
+
C DIGITS FOR L, M AND N AS LARGE AS 32.
|
|
405
|
+
C MORE DETAILED INFORMATION ABOUT ACCURACY
|
|
406
|
+
C CAN BE FOUND IN THE DOCUMENTATION FOR
|
|
407
|
+
C ROUTINE POIS3D WHICH IS THE ROUTINE THAT
|
|
408
|
+
C ACTUALLY SOLVES THE FINITE DIFFERENCE
|
|
409
|
+
C EQUATIONS.
|
|
410
|
+
C
|
|
411
|
+
C REFERENCES NONE
|
|
412
|
+
C***********************************************************************
|
|
413
|
+
DIMENSION BDXS(MDIMF,*) ,BDXF(MDIMF,*) ,
|
|
414
|
+
1 BDYS(LDIMF,*) ,BDYF(LDIMF,*) ,
|
|
415
|
+
2 BDZS(LDIMF,*) ,BDZF(LDIMF,*) ,
|
|
416
|
+
3 F(LDIMF,MDIMF,*) ,W(*)
|
|
417
|
+
C
|
|
418
|
+
C CHECK FOR INVALID INPUT.
|
|
419
|
+
C
|
|
420
|
+
IERROR = 0
|
|
421
|
+
IF (XF .LE. XS) IERROR = 1
|
|
422
|
+
IF (L .LT. 5) IERROR = 2
|
|
423
|
+
IF (LBDCND.LT.0 .OR. LBDCND.GT.4) IERROR = 3
|
|
424
|
+
IF (YF .LE. YS) IERROR = 4
|
|
425
|
+
IF (M .LT. 5) IERROR = 5
|
|
426
|
+
IF (MBDCND.LT.0 .OR. MBDCND.GT.4) IERROR = 6
|
|
427
|
+
IF (ZF .LE. ZS) IERROR = 7
|
|
428
|
+
IF (N .LT. 5) IERROR = 8
|
|
429
|
+
IF (NBDCND.LT.0 .OR. NBDCND.GT.4) IERROR = 9
|
|
430
|
+
IF (LDIMF .LT. L+1) IERROR = 10
|
|
431
|
+
IF (MDIMF .LT. M+1) IERROR = 11
|
|
432
|
+
IF (IERROR .NE. 0) GO TO 188
|
|
433
|
+
DY = (YF-YS)/FLOAT(M)
|
|
434
|
+
TWBYDY = 2./DY
|
|
435
|
+
C2 = 1./(DY**2)
|
|
436
|
+
MSTART = 1
|
|
437
|
+
MSTOP = M
|
|
438
|
+
MP1 = M+1
|
|
439
|
+
MP = MBDCND+1
|
|
440
|
+
GO TO (104,101,101,102,102),MP
|
|
441
|
+
101 MSTART = 2
|
|
442
|
+
102 GO TO (104,104,103,103,104),MP
|
|
443
|
+
103 MSTOP = MP1
|
|
444
|
+
104 MUNK = MSTOP-MSTART+1
|
|
445
|
+
DZ = (ZF-ZS)/FLOAT(N)
|
|
446
|
+
TWBYDZ = 2./DZ
|
|
447
|
+
NP = NBDCND+1
|
|
448
|
+
C3 = 1./(DZ**2)
|
|
449
|
+
NP1 = N+1
|
|
450
|
+
NSTART = 1
|
|
451
|
+
NSTOP = N
|
|
452
|
+
GO TO (108,105,105,106,106),NP
|
|
453
|
+
105 NSTART = 2
|
|
454
|
+
106 GO TO (108,108,107,107,108),NP
|
|
455
|
+
107 NSTOP = NP1
|
|
456
|
+
108 NUNK = NSTOP-NSTART+1
|
|
457
|
+
LP1 = L+1
|
|
458
|
+
DX = (XF-XS)/FLOAT(L)
|
|
459
|
+
C1 = 1./(DX**2)
|
|
460
|
+
TWBYDX = 2./DX
|
|
461
|
+
LP = LBDCND+1
|
|
462
|
+
LSTART = 1
|
|
463
|
+
LSTOP = L
|
|
464
|
+
C
|
|
465
|
+
C ENTER BOUNDARY DATA FOR X-BOUNDARIES.
|
|
466
|
+
C
|
|
467
|
+
GO TO (122,109,109,112,112),LP
|
|
468
|
+
109 LSTART = 2
|
|
469
|
+
DO 111 J=MSTART,MSTOP
|
|
470
|
+
DO 110 K=NSTART,NSTOP
|
|
471
|
+
F(2,J,K) = F(2,J,K)-C1*F(1,J,K)
|
|
472
|
+
110 CONTINUE
|
|
473
|
+
111 CONTINUE
|
|
474
|
+
GO TO 115
|
|
475
|
+
112 DO 114 J=MSTART,MSTOP
|
|
476
|
+
DO 113 K=NSTART,NSTOP
|
|
477
|
+
F(1,J,K) = F(1,J,K)+TWBYDX*BDXS(J,K)
|
|
478
|
+
113 CONTINUE
|
|
479
|
+
114 CONTINUE
|
|
480
|
+
115 GO TO (122,116,119,119,116),LP
|
|
481
|
+
116 DO 118 J=MSTART,MSTOP
|
|
482
|
+
DO 117 K=NSTART,NSTOP
|
|
483
|
+
F(L,J,K) = F(L,J,K)-C1*F(LP1,J,K)
|
|
484
|
+
117 CONTINUE
|
|
485
|
+
118 CONTINUE
|
|
486
|
+
GO TO 122
|
|
487
|
+
119 LSTOP = LP1
|
|
488
|
+
DO 121 J=MSTART,MSTOP
|
|
489
|
+
DO 120 K=NSTART,NSTOP
|
|
490
|
+
F(LP1,J,K) = F(LP1,J,K)-TWBYDX*BDXF(J,K)
|
|
491
|
+
120 CONTINUE
|
|
492
|
+
121 CONTINUE
|
|
493
|
+
122 LUNK = LSTOP-LSTART+1
|
|
494
|
+
C
|
|
495
|
+
C ENTER BOUNDARY DATA FOR Y-BOUNDARIES.
|
|
496
|
+
C
|
|
497
|
+
GO TO (136,123,123,126,126),MP
|
|
498
|
+
123 DO 125 I=LSTART,LSTOP
|
|
499
|
+
DO 124 K=NSTART,NSTOP
|
|
500
|
+
F(I,2,K) = F(I,2,K)-C2*F(I,1,K)
|
|
501
|
+
124 CONTINUE
|
|
502
|
+
125 CONTINUE
|
|
503
|
+
GO TO 129
|
|
504
|
+
126 DO 128 I=LSTART,LSTOP
|
|
505
|
+
DO 127 K=NSTART,NSTOP
|
|
506
|
+
F(I,1,K) = F(I,1,K)+TWBYDY*BDYS(I,K)
|
|
507
|
+
127 CONTINUE
|
|
508
|
+
128 CONTINUE
|
|
509
|
+
129 GO TO (136,130,133,133,130),MP
|
|
510
|
+
130 DO 132 I=LSTART,LSTOP
|
|
511
|
+
DO 131 K=NSTART,NSTOP
|
|
512
|
+
F(I,M,K) = F(I,M,K)-C2*F(I,MP1,K)
|
|
513
|
+
131 CONTINUE
|
|
514
|
+
132 CONTINUE
|
|
515
|
+
GO TO 136
|
|
516
|
+
133 DO 135 I=LSTART,LSTOP
|
|
517
|
+
DO 134 K=NSTART,NSTOP
|
|
518
|
+
F(I,MP1,K) = F(I,MP1,K)-TWBYDY*BDYF(I,K)
|
|
519
|
+
134 CONTINUE
|
|
520
|
+
135 CONTINUE
|
|
521
|
+
136 CONTINUE
|
|
522
|
+
C
|
|
523
|
+
C ENTER BOUNDARY DATA FOR Z-BOUNDARIES.
|
|
524
|
+
C
|
|
525
|
+
GO TO (150,137,137,140,140),NP
|
|
526
|
+
137 DO 139 I=LSTART,LSTOP
|
|
527
|
+
DO 138 J=MSTART,MSTOP
|
|
528
|
+
F(I,J,2) = F(I,J,2)-C3*F(I,J,1)
|
|
529
|
+
138 CONTINUE
|
|
530
|
+
139 CONTINUE
|
|
531
|
+
GO TO 143
|
|
532
|
+
140 DO 142 I=LSTART,LSTOP
|
|
533
|
+
DO 141 J=MSTART,MSTOP
|
|
534
|
+
F(I,J,1) = F(I,J,1)+TWBYDZ*BDZS(I,J)
|
|
535
|
+
141 CONTINUE
|
|
536
|
+
142 CONTINUE
|
|
537
|
+
143 GO TO (150,144,147,147,144),NP
|
|
538
|
+
144 DO 146 I=LSTART,LSTOP
|
|
539
|
+
DO 145 J=MSTART,MSTOP
|
|
540
|
+
F(I,J,N) = F(I,J,N)-C3*F(I,J,NP1)
|
|
541
|
+
145 CONTINUE
|
|
542
|
+
146 CONTINUE
|
|
543
|
+
GO TO 150
|
|
544
|
+
147 DO 149 I=LSTART,LSTOP
|
|
545
|
+
DO 148 J=MSTART,MSTOP
|
|
546
|
+
F(I,J,NP1) = F(I,J,NP1)-TWBYDZ*BDZF(I,J)
|
|
547
|
+
148 CONTINUE
|
|
548
|
+
149 CONTINUE
|
|
549
|
+
C
|
|
550
|
+
C DEFINE A,B,C COEFFICIENTS IN W-ARRAY.
|
|
551
|
+
C
|
|
552
|
+
150 CONTINUE
|
|
553
|
+
IWB = NUNK+1
|
|
554
|
+
IWC = IWB+NUNK
|
|
555
|
+
IWW = IWC+NUNK
|
|
556
|
+
DO 151 K=1,NUNK
|
|
557
|
+
I = IWC+K-1
|
|
558
|
+
W(K) = C3
|
|
559
|
+
W(I) = C3
|
|
560
|
+
I = IWB+K-1
|
|
561
|
+
W(I) = -2.*C3+ELMBDA
|
|
562
|
+
151 CONTINUE
|
|
563
|
+
GO TO (155,155,153,152,152),NP
|
|
564
|
+
152 W(IWC) = 2.*C3
|
|
565
|
+
153 GO TO (155,155,154,154,155),NP
|
|
566
|
+
154 W(IWB-1) = 2.*C3
|
|
567
|
+
155 CONTINUE
|
|
568
|
+
PERTRB = 0.
|
|
569
|
+
C
|
|
570
|
+
C FOR SINGULAR PROBLEMS ADJUST DATA TO INSURE A SOLUTION WILL EXIST.
|
|
571
|
+
C
|
|
572
|
+
GO TO (156,172,172,156,172),LP
|
|
573
|
+
156 GO TO (157,172,172,157,172),MP
|
|
574
|
+
157 GO TO (158,172,172,158,172),NP
|
|
575
|
+
158 IF (ELMBDA) 172,160,159
|
|
576
|
+
159 IERROR = 12
|
|
577
|
+
GO TO 172
|
|
578
|
+
160 CONTINUE
|
|
579
|
+
MSTPM1 = MSTOP-1
|
|
580
|
+
LSTPM1 = LSTOP-1
|
|
581
|
+
NSTPM1 = NSTOP-1
|
|
582
|
+
XLP = (2+LP)/3
|
|
583
|
+
YLP = (2+MP)/3
|
|
584
|
+
ZLP = (2+NP)/3
|
|
585
|
+
S1 = 0.
|
|
586
|
+
DO 164 K=2,NSTPM1
|
|
587
|
+
DO 162 J=2,MSTPM1
|
|
588
|
+
DO 161 I=2,LSTPM1
|
|
589
|
+
S1 = S1+F(I,J,K)
|
|
590
|
+
161 CONTINUE
|
|
591
|
+
S1 = S1+(F(1,J,K)+F(LSTOP,J,K))/XLP
|
|
592
|
+
162 CONTINUE
|
|
593
|
+
S2 = 0.
|
|
594
|
+
DO 163 I=2,LSTPM1
|
|
595
|
+
S2 = S2+F(I,1,K)+F(I,MSTOP,K)
|
|
596
|
+
163 CONTINUE
|
|
597
|
+
S2 = (S2+(F(1,1,K)+F(1,MSTOP,K)+F(LSTOP,1,K)+F(LSTOP,MSTOP,K))/
|
|
598
|
+
1 XLP)/YLP
|
|
599
|
+
S1 = S1+S2
|
|
600
|
+
164 CONTINUE
|
|
601
|
+
S = (F(1,1,1)+F(LSTOP,1,1)+F(1,1,NSTOP)+F(LSTOP,1,NSTOP)+
|
|
602
|
+
1 F(1,MSTOP,1)+F(LSTOP,MSTOP,1)+F(1,MSTOP,NSTOP)+
|
|
603
|
+
2 F(LSTOP,MSTOP,NSTOP))/(XLP*YLP)
|
|
604
|
+
DO 166 J=2,MSTPM1
|
|
605
|
+
DO 165 I=2,LSTPM1
|
|
606
|
+
S = S+F(I,J,1)+F(I,J,NSTOP)
|
|
607
|
+
165 CONTINUE
|
|
608
|
+
166 CONTINUE
|
|
609
|
+
S2 = 0.
|
|
610
|
+
DO 167 I=2,LSTPM1
|
|
611
|
+
S2 = S2+F(I,1,1)+F(I,1,NSTOP)+F(I,MSTOP,1)+F(I,MSTOP,NSTOP)
|
|
612
|
+
167 CONTINUE
|
|
613
|
+
S = S2/YLP+S
|
|
614
|
+
S2 = 0.
|
|
615
|
+
DO 168 J=2,MSTPM1
|
|
616
|
+
S2 = S2+F(1,J,1)+F(1,J,NSTOP)+F(LSTOP,J,1)+F(LSTOP,J,NSTOP)
|
|
617
|
+
168 CONTINUE
|
|
618
|
+
S = S2/XLP+S
|
|
619
|
+
PERTRB = (S/ZLP+S1)/((FLOAT(LUNK+1)-XLP)*(FLOAT(MUNK+1)-YLP)*
|
|
620
|
+
1 (FLOAT(NUNK+1)-ZLP))
|
|
621
|
+
DO 171 I=1,LUNK
|
|
622
|
+
DO 170 J=1,MUNK
|
|
623
|
+
DO 169 K=1,NUNK
|
|
624
|
+
F(I,J,K) = F(I,J,K)-PERTRB
|
|
625
|
+
169 CONTINUE
|
|
626
|
+
170 CONTINUE
|
|
627
|
+
171 CONTINUE
|
|
628
|
+
172 CONTINUE
|
|
629
|
+
NPEROD = 0
|
|
630
|
+
IF (NBDCND .EQ. 0) GO TO 173
|
|
631
|
+
NPEROD = 1
|
|
632
|
+
W(1) = 0.
|
|
633
|
+
W(IWW-1) = 0.
|
|
634
|
+
173 CONTINUE
|
|
635
|
+
CALL POIS3D (LBDCND,LUNK,C1,MBDCND,MUNK,C2,NPEROD,NUNK,W,W(IWB),
|
|
636
|
+
1 W(IWC),LDIMF,MDIMF,F(LSTART,MSTART,NSTART),IR,W(IWW))
|
|
637
|
+
C
|
|
638
|
+
C FILL IN SIDES FOR PERIODIC BOUNDARY CONDITIONS.
|
|
639
|
+
C
|
|
640
|
+
IF (LP .NE. 1) GO TO 180
|
|
641
|
+
IF (MP .NE. 1) GO TO 175
|
|
642
|
+
DO 174 K=NSTART,NSTOP
|
|
643
|
+
F(1,MP1,K) = F(1,1,K)
|
|
644
|
+
174 CONTINUE
|
|
645
|
+
MSTOP = MP1
|
|
646
|
+
175 IF (NP .NE. 1) GO TO 177
|
|
647
|
+
DO 176 J=MSTART,MSTOP
|
|
648
|
+
F(1,J,NP1) = F(1,J,1)
|
|
649
|
+
176 CONTINUE
|
|
650
|
+
NSTOP = NP1
|
|
651
|
+
177 DO 179 J=MSTART,MSTOP
|
|
652
|
+
DO 178 K=NSTART,NSTOP
|
|
653
|
+
F(LP1,J,K) = F(1,J,K)
|
|
654
|
+
178 CONTINUE
|
|
655
|
+
179 CONTINUE
|
|
656
|
+
180 CONTINUE
|
|
657
|
+
IF (MP .NE. 1) GO TO 185
|
|
658
|
+
IF (NP .NE. 1) GO TO 182
|
|
659
|
+
DO 181 I=LSTART,LSTOP
|
|
660
|
+
F(I,1,NP1) = F(I,1,1)
|
|
661
|
+
181 CONTINUE
|
|
662
|
+
NSTOP = NP1
|
|
663
|
+
182 DO 184 I=LSTART,LSTOP
|
|
664
|
+
DO 183 K=NSTART,NSTOP
|
|
665
|
+
F(I,MP1,K) = F(I,1,K)
|
|
666
|
+
183 CONTINUE
|
|
667
|
+
184 CONTINUE
|
|
668
|
+
185 CONTINUE
|
|
669
|
+
IF (NP .NE. 1) GO TO 188
|
|
670
|
+
DO 187 I=LSTART,LSTOP
|
|
671
|
+
DO 186 J=MSTART,MSTOP
|
|
672
|
+
F(I,J,NP1) = F(I,J,1)
|
|
673
|
+
186 CONTINUE
|
|
674
|
+
187 CONTINUE
|
|
675
|
+
188 CONTINUE
|
|
676
|
+
RETURN
|
|
677
|
+
C
|
|
678
|
+
C REVISION HISTORY---
|
|
679
|
+
C
|
|
680
|
+
C SEPTEMBER 1973 VERSION 1
|
|
681
|
+
C APRIL 1976 VERSION 2
|
|
682
|
+
C JANUARY 1978 VERSION 3
|
|
683
|
+
C DECEMBER 1979 VERSION 3.1
|
|
684
|
+
C FEBRUARY 1985 DOCUMENTATION UPGRADE
|
|
685
|
+
C NOVEMBER 1988 VERSION 3.2, FORTRAN 77 CHANGES
|
|
686
|
+
C-----------------------------------------------------------------------
|
|
687
|
+
END
|