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,443 @@
|
|
|
1
|
+
C
|
|
2
|
+
C file hstcrt.f
|
|
3
|
+
C
|
|
4
|
+
SUBROUTINE HSTCRT (A,B,M,MBDCND,BDA,BDB,C,D,N,NBDCND,BDC,BDD,
|
|
5
|
+
1 ELMBDA,F,IDIMF,PERTRB,IERROR,W)
|
|
6
|
+
C
|
|
7
|
+
C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
8
|
+
C * *
|
|
9
|
+
C * copyright (c) 1999 by UCAR *
|
|
10
|
+
C * *
|
|
11
|
+
C * UNIVERSITY CORPORATION for ATMOSPHERIC RESEARCH *
|
|
12
|
+
C * *
|
|
13
|
+
C * all rights reserved *
|
|
14
|
+
C * *
|
|
15
|
+
C * FISHPACK version 4.1 *
|
|
16
|
+
C * *
|
|
17
|
+
C * A PACKAGE OF FORTRAN SUBPROGRAMS FOR THE SOLUTION OF *
|
|
18
|
+
C * *
|
|
19
|
+
C * SEPARABLE ELLIPTIC PARTIAL DIFFERENTIAL EQUATIONS *
|
|
20
|
+
C * *
|
|
21
|
+
C * BY *
|
|
22
|
+
C * *
|
|
23
|
+
C * JOHN ADAMS, PAUL SWARZTRAUBER AND ROLAND SWEET *
|
|
24
|
+
C * *
|
|
25
|
+
C * OF *
|
|
26
|
+
C * *
|
|
27
|
+
C * THE NATIONAL CENTER FOR ATMOSPHERIC RESEARCH *
|
|
28
|
+
C * *
|
|
29
|
+
C * BOULDER, COLORADO (80307) U.S.A. *
|
|
30
|
+
C * *
|
|
31
|
+
C * WHICH IS SPONSORED BY *
|
|
32
|
+
C * *
|
|
33
|
+
C * THE NATIONAL SCIENCE FOUNDATION *
|
|
34
|
+
C * *
|
|
35
|
+
C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
36
|
+
C
|
|
37
|
+
C
|
|
38
|
+
C
|
|
39
|
+
C DIMENSION OF BDA(N),BDB(N),BDC(M),BDD(M),F(IDIMF,N),
|
|
40
|
+
C ARGUMENTS W(SEE ARGUMENT LIST)
|
|
41
|
+
C
|
|
42
|
+
C LATEST REVISION NOVEMBER 1988
|
|
43
|
+
C
|
|
44
|
+
C PURPOSE SOLVES THE STANDARD FIVE-POINT FINITE
|
|
45
|
+
C DIFFERENCE APPROXIMATION TO THE HELMHOLTZ
|
|
46
|
+
C EQUATION
|
|
47
|
+
C (D/DX)(DU/DX) + (D/DY)(DU/DY) + LAMBDA*U
|
|
48
|
+
C = F(X,Y)
|
|
49
|
+
C ON A STAGGERED GRID IN CARTESIAN COORDINATES.
|
|
50
|
+
C
|
|
51
|
+
C USAGE CALL HSTCRT (A,B,M,MBDCND,BDA,BDB,C,D
|
|
52
|
+
C N,NBDCND,BDC,BDD,ELMBDA,
|
|
53
|
+
C F,IDIMF,PERTRB,IERROR,W)
|
|
54
|
+
C
|
|
55
|
+
C ARGUMENTS
|
|
56
|
+
C ON INPUT
|
|
57
|
+
C
|
|
58
|
+
C A,B
|
|
59
|
+
C THE RANGE OF X, I.E. A .LE. X .LE. B.
|
|
60
|
+
C A MUST BE LESS THAN B.
|
|
61
|
+
C
|
|
62
|
+
C M
|
|
63
|
+
C THE NUMBER OF GRID POINTS IN THE
|
|
64
|
+
C INTERVAL (A,B). THE GRID POINTS
|
|
65
|
+
C IN THE X-DIRECTION ARE GIVEN BY
|
|
66
|
+
C X(I) = A + (I-0.5)DX FOR I=1,2,...,M
|
|
67
|
+
C WHERE DX =(B-A)/M. M MUST BE GREATER
|
|
68
|
+
C THAN 2.
|
|
69
|
+
C
|
|
70
|
+
C MBDCND
|
|
71
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITIONS
|
|
72
|
+
C AT X = A AND X = B.
|
|
73
|
+
C
|
|
74
|
+
C = 0 IF THE SOLUTION IS PERIODIC IN X,
|
|
75
|
+
C U(M+I,J) = U(I,J).
|
|
76
|
+
C
|
|
77
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
78
|
+
C X = A AND X = B.
|
|
79
|
+
C
|
|
80
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
81
|
+
C X = A AND THE DERIVATIVE
|
|
82
|
+
C OF THE SOLUTION WITH RESPECT TO X
|
|
83
|
+
C IS SPECIFIED AT X = B.
|
|
84
|
+
C
|
|
85
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
86
|
+
C WITH RESPECT TO X IS SPECIFIED
|
|
87
|
+
C AT X = A AND X = B.
|
|
88
|
+
C
|
|
89
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
90
|
+
C WITH RESPECT TO X IS SPECIFIED
|
|
91
|
+
C AT X = A AND THE SOLUTION IS
|
|
92
|
+
C SPECIFIED AT X = B.
|
|
93
|
+
C
|
|
94
|
+
C BDA
|
|
95
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH N
|
|
96
|
+
C THAT SPECIFIES THE BOUNDARY VALUES
|
|
97
|
+
C (IF ANY) OF THE SOLUTION AT X = A.
|
|
98
|
+
C
|
|
99
|
+
C WHEN MBDCND = 1 OR 2,
|
|
100
|
+
C BDA(J) = U(A,Y(J)) , J=1,2,...,N.
|
|
101
|
+
C
|
|
102
|
+
C WHEN MBDCND = 3 OR 4,
|
|
103
|
+
C BDA(J) = (D/DX)U(A,Y(J)) , J=1,2,...,N.
|
|
104
|
+
C
|
|
105
|
+
C BDB
|
|
106
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH N
|
|
107
|
+
C THAT SPECIFIES THE BOUNDARY VALUES
|
|
108
|
+
C OF THE SOLUTION AT X = B.
|
|
109
|
+
C
|
|
110
|
+
C WHEN MBDCND = 1 OR 4
|
|
111
|
+
C BDB(J) = U(B,Y(J)) , J=1,2,...,N.
|
|
112
|
+
C
|
|
113
|
+
C WHEN MBDCND = 2 OR 3
|
|
114
|
+
C BDB(J) = (D/DX)U(B,Y(J)) , J=1,2,...,N.
|
|
115
|
+
C
|
|
116
|
+
C C,D
|
|
117
|
+
C THE RANGE OF Y, I.E. C .LE. Y .LE. D.
|
|
118
|
+
C C MUST BE LESS THAN D.
|
|
119
|
+
C
|
|
120
|
+
C
|
|
121
|
+
C N
|
|
122
|
+
C THE NUMBER OF UNKNOWNS IN THE INTERVAL
|
|
123
|
+
C (C,D). THE UNKNOWNS IN THE Y-DIRECTION
|
|
124
|
+
C ARE GIVEN BY Y(J) = C + (J-0.5)DY,
|
|
125
|
+
C J=1,2,...,N, WHERE DY = (D-C)/N.
|
|
126
|
+
C N MUST BE GREATER THAN 2.
|
|
127
|
+
C
|
|
128
|
+
C NBDCND
|
|
129
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITIONS
|
|
130
|
+
C AT Y = C AND Y = D.
|
|
131
|
+
C
|
|
132
|
+
C
|
|
133
|
+
C = 0 IF THE SOLUTION IS PERIODIC IN Y, I.E.
|
|
134
|
+
C U(I,J) = U(I,N+J).
|
|
135
|
+
C
|
|
136
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT Y = C
|
|
137
|
+
C AND Y = D.
|
|
138
|
+
C
|
|
139
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT Y = C
|
|
140
|
+
C AND THE DERIVATIVE OF THE SOLUTION
|
|
141
|
+
C WITH RESPECT TO Y IS SPECIFIED AT
|
|
142
|
+
C Y = D.
|
|
143
|
+
C
|
|
144
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
145
|
+
C WITH RESPECT TO Y IS SPECIFIED AT
|
|
146
|
+
C Y = C AND Y = D.
|
|
147
|
+
C
|
|
148
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
149
|
+
C WITH RESPECT TO Y IS SPECIFIED AT
|
|
150
|
+
C Y = C AND THE SOLUTION IS SPECIFIED
|
|
151
|
+
C AT Y = D.
|
|
152
|
+
C
|
|
153
|
+
C BDC
|
|
154
|
+
C A ONE DIMENSIONAL ARRAY OF LENGTH M THAT
|
|
155
|
+
C SPECIFIES THE BOUNDARY VALUES OF THE
|
|
156
|
+
C SOLUTION AT Y = C.
|
|
157
|
+
C
|
|
158
|
+
C WHEN NBDCND = 1 OR 2,
|
|
159
|
+
C BDC(I) = U(X(I),C) , I=1,2,...,M.
|
|
160
|
+
C
|
|
161
|
+
C WHEN NBDCND = 3 OR 4,
|
|
162
|
+
C BDC(I) = (D/DY)U(X(I),C), I=1,2,...,M.
|
|
163
|
+
C
|
|
164
|
+
C WHEN NBDCND = 0, BDC IS A DUMMY VARIABLE.
|
|
165
|
+
C
|
|
166
|
+
C BDD
|
|
167
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH M THAT
|
|
168
|
+
C SPECIFIES THE BOUNDARY VALUES OF THE
|
|
169
|
+
C SOLUTION AT Y = D.
|
|
170
|
+
C
|
|
171
|
+
C WHEN NBDCND = 1 OR 4,
|
|
172
|
+
C BDD(I) = U(X(I),D) , I=1,2,...,M.
|
|
173
|
+
C
|
|
174
|
+
C WHEN NBDCND = 2 OR 3,
|
|
175
|
+
C BDD(I) = (D/DY)U(X(I),D) , I=1,2,...,M.
|
|
176
|
+
C
|
|
177
|
+
C WHEN NBDCND = 0, BDD IS A DUMMY VARIABLE.
|
|
178
|
+
C
|
|
179
|
+
C ELMBDA
|
|
180
|
+
C THE CONSTANT LAMBDA IN THE HELMHOLTZ
|
|
181
|
+
C EQUATION. IF LAMBDA IS GREATER THAN 0,
|
|
182
|
+
C A SOLUTION MAY NOT EXIST. HOWEVER,
|
|
183
|
+
C HSTCRT WILL ATTEMPT TO FIND A SOLUTION.
|
|
184
|
+
C
|
|
185
|
+
C F
|
|
186
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES
|
|
187
|
+
C THE VALUES OF THE RIGHT SIDE OF THE
|
|
188
|
+
C HELMHOLTZ EQUATION. FOR I=1,2,...,M
|
|
189
|
+
C AND J=1,2,...,N
|
|
190
|
+
C
|
|
191
|
+
C F(I,J) = F(X(I),Y(J)) .
|
|
192
|
+
C
|
|
193
|
+
C F MUST BE DIMENSIONED AT LEAST M X N.
|
|
194
|
+
C
|
|
195
|
+
C IDIMF
|
|
196
|
+
C THE ROW (OR FIRST) DIMENSION OF THE ARRAY
|
|
197
|
+
C F AS IT APPEARS IN THE PROGRAM CALLING
|
|
198
|
+
C HSTCRT. THIS PARAMETER IS USED TO SPECIFY
|
|
199
|
+
C THE VARIABLE DIMENSION OF F.
|
|
200
|
+
C IDIMF MUST BE AT LEAST M.
|
|
201
|
+
C
|
|
202
|
+
C W
|
|
203
|
+
C A ONE-DIMENSIONAL ARRAY THAT MUST BE
|
|
204
|
+
C PROVIDED BY THE USER FOR WORK SPACE.
|
|
205
|
+
C W MAY REQUIRE UP TO 13M + 4N +
|
|
206
|
+
C M*INT(LOG2(N)) LOCATIONS. THE ACTUAL NUMBER
|
|
207
|
+
C OF LOCATIONS USED IS COMPUTED BY HSTCRT
|
|
208
|
+
C AND IS RETURNED IN THE LOCATION W(1).
|
|
209
|
+
C
|
|
210
|
+
C ON OUTPUT F
|
|
211
|
+
C CONTAINS THE SOLUTION U(I,J) OF THE FINITE
|
|
212
|
+
C DIFFERENCE APPROXIMATION FOR THE GRID POINT
|
|
213
|
+
C (X(I),Y(J)) FOR I=1,2,...,M, J=1,2,...,N.
|
|
214
|
+
C
|
|
215
|
+
C PERTRB
|
|
216
|
+
C IF A COMBINATION OF PERIODIC OR DERIVATIVE
|
|
217
|
+
C BOUNDARY CONDITIONS IS SPECIFIED FOR A
|
|
218
|
+
C POISSON EQUATION (LAMBDA = 0), A SOLUTION
|
|
219
|
+
C MAY NOT EXIST. PERTRB IS A CONSTANT,
|
|
220
|
+
C CALCULATED AND SUBTRACTED FROM F, WHICH
|
|
221
|
+
C ENSURES THAT A SOLUTION EXISTS. HSTCRT
|
|
222
|
+
C THEN COMPUTES THIS SOLUTION, WHICH IS A
|
|
223
|
+
C LEAST SQUARES SOLUTION TO THE ORIGINAL
|
|
224
|
+
C APPROXIMATION. THIS SOLUTION PLUS ANY
|
|
225
|
+
C CONSTANT IS ALSO A SOLUTION; HENCE, THE
|
|
226
|
+
C SOLUTION IS NOT UNIQUE. THE VALUE OF
|
|
227
|
+
C PERTRB SHOULD BE SMALL COMPARED TO THE
|
|
228
|
+
C RIGHT SIDE F. OTHERWISE, A SOLUTION IS
|
|
229
|
+
C OBTAINED TO AN ESSENTIALLY DIFFERENT PROBLEM.
|
|
230
|
+
C THIS COMPARISON SHOULD ALWAYS BE MADE TO
|
|
231
|
+
C INSURE THAT A MEANINGFUL SOLUTION HAS BEEN
|
|
232
|
+
C OBTAINED.
|
|
233
|
+
C
|
|
234
|
+
C IERROR
|
|
235
|
+
C AN ERROR FLAG THAT INDICATES INVALID INPUT
|
|
236
|
+
C PARAMETERS. EXCEPT TO NUMBERS 0 AND 6,
|
|
237
|
+
C A SOLUTION IS NOT ATTEMPTED.
|
|
238
|
+
C
|
|
239
|
+
C = 0 NO ERROR
|
|
240
|
+
C
|
|
241
|
+
C = 1 A .GE. B
|
|
242
|
+
C
|
|
243
|
+
C = 2 MBDCND .LT. 0 OR MBDCND .GT. 4
|
|
244
|
+
C
|
|
245
|
+
C = 3 C .GE. D
|
|
246
|
+
C
|
|
247
|
+
C = 4 N .LE. 2
|
|
248
|
+
C
|
|
249
|
+
C = 5 NBDCND .LT. 0 OR NBDCND .GT. 4
|
|
250
|
+
C
|
|
251
|
+
C = 6 LAMBDA .GT. 0
|
|
252
|
+
C
|
|
253
|
+
C = 7 IDIMF .LT. M
|
|
254
|
+
C
|
|
255
|
+
C = 8 M .LE. 2
|
|
256
|
+
C
|
|
257
|
+
C SINCE THIS IS THE ONLY MEANS OF INDICATING
|
|
258
|
+
C A POSSIBLY INCORRECT CALL TO HSTCRT, THE
|
|
259
|
+
C USER SHOULD TEST IERROR AFTER THE CALL.
|
|
260
|
+
C
|
|
261
|
+
C W
|
|
262
|
+
C W(1) CONTAINS THE REQUIRED LENGTH OF W.
|
|
263
|
+
C
|
|
264
|
+
C I/O NONE
|
|
265
|
+
C
|
|
266
|
+
C PRECISION SINGLE
|
|
267
|
+
C
|
|
268
|
+
C REQUIRED LIBRARY COMF, GENBUN, GNBNAUX, AND POISTG
|
|
269
|
+
C FILES FROM FISHPACK
|
|
270
|
+
C
|
|
271
|
+
C LANGUAGE FORTRAN
|
|
272
|
+
C
|
|
273
|
+
C HISTORY WRITTEN BY ROLAND SWEET AT NCAR IN 1977.
|
|
274
|
+
C RELEASED ON NCAR'S PUBLIC SOFTWARE LIBRARIES
|
|
275
|
+
C IN JANUARY 1980.
|
|
276
|
+
C
|
|
277
|
+
C PORTABILITY FORTRAN 77
|
|
278
|
+
C
|
|
279
|
+
C ALGORITHM THIS SUBROUTINE DEFINES THE FINITE-DIFFERENCE
|
|
280
|
+
C EQUATIONS, INCORPORATES BOUNDARY DATA, ADJUSTS
|
|
281
|
+
C THE RIGHT SIDE WHEN THE SYSTEM IS SINGULAR
|
|
282
|
+
C AND CALLS EITHER POISTG OR GENBUN WHICH SOLVES
|
|
283
|
+
C THE LINEAR SYSTEM OF EQUATIONS.
|
|
284
|
+
C
|
|
285
|
+
C TIMING FOR LARGE M AND N, THE OPERATION COUNT
|
|
286
|
+
C IS ROUGHLY PROPORTIONAL TO M*N*LOG2(N).
|
|
287
|
+
C
|
|
288
|
+
C ACCURACY THE SOLUTION PROCESS EMPLOYED RESULTS IN A
|
|
289
|
+
C LOSS OF NO MORE THAN FOUR SIGNIFICANT DIGITS
|
|
290
|
+
C FOR N AND M AS LARGE AS 64. MORE DETAILED
|
|
291
|
+
C INFORMATION ABOUT ACCURACY CAN BE FOUND IN
|
|
292
|
+
C THE DOCUMENTATION FOR PACKAGE POISTG WHICH
|
|
293
|
+
C SOLVES THE FINITE DIFFERENCE EQUATIONS.
|
|
294
|
+
C
|
|
295
|
+
C REFERENCES U. SCHUMANN AND R. SWEET,"A DIRECT METHOD
|
|
296
|
+
C FOR THE SOLUTION OF POISSON'S EQUATION WITH
|
|
297
|
+
C BOUNDARY CONDITIONS ON A STAGGERED GRID OF
|
|
298
|
+
C ARBITRARY SIZE," J. COMP. PHYS. 20(1976),
|
|
299
|
+
C PP. 171-182.
|
|
300
|
+
C***********************************************************************
|
|
301
|
+
DIMENSION F(IDIMF,1) ,BDA(*) ,BDB(*) ,BDC(*) ,
|
|
302
|
+
1 BDD(*) ,W(*)
|
|
303
|
+
C
|
|
304
|
+
C CHECK FOR INVALID PARAMETERS.
|
|
305
|
+
C
|
|
306
|
+
IERROR = 0
|
|
307
|
+
IF (A .GE. B) IERROR = 1
|
|
308
|
+
IF (MBDCND.LT.0 .OR. MBDCND.GT.4) IERROR = 2
|
|
309
|
+
IF (C .GE. D) IERROR = 3
|
|
310
|
+
IF (N .LE. 2) IERROR = 4
|
|
311
|
+
IF (NBDCND.LT.0 .OR. NBDCND.GT.4) IERROR = 5
|
|
312
|
+
IF (IDIMF .LT. M) IERROR = 7
|
|
313
|
+
IF (M .LE. 2) IERROR = 8
|
|
314
|
+
IF (IERROR .NE. 0) RETURN
|
|
315
|
+
NPEROD = NBDCND
|
|
316
|
+
MPEROD = 0
|
|
317
|
+
IF (MBDCND .GT. 0) MPEROD = 1
|
|
318
|
+
DELTAX = (B-A)/FLOAT(M)
|
|
319
|
+
TWDELX = 1./DELTAX
|
|
320
|
+
DELXSQ = 2./DELTAX**2
|
|
321
|
+
DELTAY = (D-C)/FLOAT(N)
|
|
322
|
+
TWDELY = 1./DELTAY
|
|
323
|
+
DELYSQ = DELTAY**2
|
|
324
|
+
TWDYSQ = 2./DELYSQ
|
|
325
|
+
NP = NBDCND+1
|
|
326
|
+
MP = MBDCND+1
|
|
327
|
+
C
|
|
328
|
+
C DEFINE THE A,B,C COEFFICIENTS IN W-ARRAY.
|
|
329
|
+
C
|
|
330
|
+
ID2 = M
|
|
331
|
+
ID3 = ID2+M
|
|
332
|
+
ID4 = ID3+M
|
|
333
|
+
S = (DELTAY/DELTAX)**2
|
|
334
|
+
ST2 = 2.*S
|
|
335
|
+
DO 101 I=1,M
|
|
336
|
+
W(I) = S
|
|
337
|
+
J = ID2+I
|
|
338
|
+
W(J) = -ST2+ELMBDA*DELYSQ
|
|
339
|
+
J = ID3+I
|
|
340
|
+
W(J) = S
|
|
341
|
+
101 CONTINUE
|
|
342
|
+
C
|
|
343
|
+
C ENTER BOUNDARY DATA FOR X-BOUNDARIES.
|
|
344
|
+
C
|
|
345
|
+
GO TO (111,102,102,104,104),MP
|
|
346
|
+
102 DO 103 J=1,N
|
|
347
|
+
F(1,J) = F(1,J)-BDA(J)*DELXSQ
|
|
348
|
+
103 CONTINUE
|
|
349
|
+
W(ID2+1) = W(ID2+1)-W(1)
|
|
350
|
+
GO TO 106
|
|
351
|
+
104 DO 105 J=1,N
|
|
352
|
+
F(1,J) = F(1,J)+BDA(J)*TWDELX
|
|
353
|
+
105 CONTINUE
|
|
354
|
+
W(ID2+1) = W(ID2+1)+W(1)
|
|
355
|
+
106 GO TO (111,107,109,109,107),MP
|
|
356
|
+
107 DO 108 J=1,N
|
|
357
|
+
F(M,J) = F(M,J)-BDB(J)*DELXSQ
|
|
358
|
+
108 CONTINUE
|
|
359
|
+
W(ID3) = W(ID3)-W(1)
|
|
360
|
+
GO TO 111
|
|
361
|
+
109 DO 110 J=1,N
|
|
362
|
+
F(M,J) = F(M,J)-BDB(J)*TWDELX
|
|
363
|
+
110 CONTINUE
|
|
364
|
+
W(ID3) = W(ID3)+W(1)
|
|
365
|
+
111 CONTINUE
|
|
366
|
+
C
|
|
367
|
+
C ENTER BOUNDARY DATA FOR Y-BOUNDARIES.
|
|
368
|
+
C
|
|
369
|
+
GO TO (121,112,112,114,114),NP
|
|
370
|
+
112 DO 113 I=1,M
|
|
371
|
+
F(I,1) = F(I,1)-BDC(I)*TWDYSQ
|
|
372
|
+
113 CONTINUE
|
|
373
|
+
GO TO 116
|
|
374
|
+
114 DO 115 I=1,M
|
|
375
|
+
F(I,1) = F(I,1)+BDC(I)*TWDELY
|
|
376
|
+
115 CONTINUE
|
|
377
|
+
116 GO TO (121,117,119,119,117),NP
|
|
378
|
+
117 DO 118 I=1,M
|
|
379
|
+
F(I,N) = F(I,N)-BDD(I)*TWDYSQ
|
|
380
|
+
118 CONTINUE
|
|
381
|
+
GO TO 121
|
|
382
|
+
119 DO 120 I=1,M
|
|
383
|
+
F(I,N) = F(I,N)-BDD(I)*TWDELY
|
|
384
|
+
120 CONTINUE
|
|
385
|
+
121 CONTINUE
|
|
386
|
+
DO 123 I=1,M
|
|
387
|
+
DO 122 J=1,N
|
|
388
|
+
F(I,J) = F(I,J)*DELYSQ
|
|
389
|
+
122 CONTINUE
|
|
390
|
+
123 CONTINUE
|
|
391
|
+
IF (MPEROD .EQ. 0) GO TO 124
|
|
392
|
+
W(1) = 0.
|
|
393
|
+
W(ID4) = 0.
|
|
394
|
+
124 CONTINUE
|
|
395
|
+
PERTRB = 0.
|
|
396
|
+
IF (ELMBDA) 133,126,125
|
|
397
|
+
125 IERROR = 6
|
|
398
|
+
GO TO 133
|
|
399
|
+
126 GO TO (127,133,133,127,133),MP
|
|
400
|
+
127 GO TO (128,133,133,128,133),NP
|
|
401
|
+
C
|
|
402
|
+
C FOR SINGULAR PROBLEMS MUST ADJUST DATA TO INSURE THAT A SOLUTION
|
|
403
|
+
C WILL EXIST.
|
|
404
|
+
C
|
|
405
|
+
128 CONTINUE
|
|
406
|
+
S = 0.
|
|
407
|
+
DO 130 J=1,N
|
|
408
|
+
DO 129 I=1,M
|
|
409
|
+
S = S+F(I,J)
|
|
410
|
+
129 CONTINUE
|
|
411
|
+
130 CONTINUE
|
|
412
|
+
PERTRB = S/FLOAT(M*N)
|
|
413
|
+
DO 132 J=1,N
|
|
414
|
+
DO 131 I=1,M
|
|
415
|
+
F(I,J) = F(I,J)-PERTRB
|
|
416
|
+
131 CONTINUE
|
|
417
|
+
132 CONTINUE
|
|
418
|
+
PERTRB = PERTRB/DELYSQ
|
|
419
|
+
C
|
|
420
|
+
C SOLVE THE EQUATION.
|
|
421
|
+
C
|
|
422
|
+
133 CONTINUE
|
|
423
|
+
IF (NPEROD .EQ. 0) GO TO 134
|
|
424
|
+
CALL POISTG (NPEROD,N,MPEROD,M,W(1),W(ID2+1),W(ID3+1),IDIMF,F,
|
|
425
|
+
1 IERR1,W(ID4+1))
|
|
426
|
+
GO TO 135
|
|
427
|
+
134 CONTINUE
|
|
428
|
+
CALL GENBUN (NPEROD,N,MPEROD,M,W(1),W(ID2+1),W(ID3+1),IDIMF,F,
|
|
429
|
+
1 IERR1,W(ID4+1))
|
|
430
|
+
135 CONTINUE
|
|
431
|
+
W(1) = W(ID4+1)+3.*FLOAT(M)
|
|
432
|
+
RETURN
|
|
433
|
+
C
|
|
434
|
+
C REVISION HISTORY---
|
|
435
|
+
C
|
|
436
|
+
C SEPTEMBER 1973 VERSION 1
|
|
437
|
+
C APRIL 1976 VERSION 2
|
|
438
|
+
C JANUARY 1978 VERSION 3
|
|
439
|
+
C DECEMBER 1979 VERSION 3.1
|
|
440
|
+
C FEBRUARY 1985 DOCUMENTATION UPGRADE
|
|
441
|
+
C NOVEMBER 1988 VERSION 3.2, FORTRAN 77 CHANGES
|
|
442
|
+
C-----------------------------------------------------------------------
|
|
443
|
+
END
|