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.
Files changed (81) hide show
  1. PyFishPack/__init__.py +86 -0
  2. PyFishPack/__pycache__/__init__.cpython-313.pyc +0 -0
  3. PyFishPack/__pycache__/apps.cpython-313.pyc +0 -0
  4. PyFishPack/_dummy.c +23 -0
  5. PyFishPack/_dummy.cp313-win_amd64.pyd +0 -0
  6. PyFishPack/apps.py +3640 -0
  7. PyFishPack/fishpack.cp313-win_amd64.dll.a +0 -0
  8. PyFishPack/fishpack.cp313-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 +81 -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/libgcc_s_seh-1-25d59ccffa1a9009644065b069829e07.dll +0 -0
  79. pyfishpack.libs/libgfortran-5-08f2195cfa0d823e13371c5c3186a82a.dll +0 -0
  80. pyfishpack.libs/libquadmath-0-c5abb9113f1ee64b87a889958e4b7418.dll +0 -0
  81. pyfishpack.libs/libwinpthread-1-83908d14abfafb8b3bfa38cf51ecee56.dll +0 -0
@@ -0,0 +1,485 @@
1
+ C
2
+ C file hstcyl.f
3
+ C
4
+ SUBROUTINE HSTCYL (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 ON A STAGGERED
46
+ C GRID TO THE MODIFIED HELMHOLTZ EQUATION
47
+ C IN CYLINDRICAL COORDINATES. THIS EQUATION
48
+ C
49
+ C (1/R)(D/DR)(R(DU/DR)) + (D/DZ)(DU/DZ)
50
+ C
51
+ C + LAMBDA*(1/R**2)*U = F(R,Z)
52
+ C
53
+ C IS A TWO-DIMENSIONAL MODIFIED HELMHOLTZ
54
+ C EQUATION RESULTING FROM THE FOURIER TRANSFORM
55
+ C OF A THREE-DIMENSIONAL POISSON EQUATION.
56
+ C
57
+ C USAGE CALL HSTCYL (A,B,M,MBDCND,BDA,BDB,C,D,N,
58
+ C NBDCND,BDC,BDD,ELMBDA,F,IDIMF,
59
+ C PERTRB,IERROR,W)
60
+ C
61
+ C ARGUMENTS
62
+ C ON INPUT A,B
63
+ C
64
+ C THE RANGE OF R, I.E. A .LE. R .LE. B.
65
+ C A MUST BE LESS THAN B AND A MUST BE
66
+ C BE NON-NEGATIVE.
67
+ C
68
+ C M
69
+ C THE NUMBER OF GRID POINTS IN THE INTERVAL
70
+ C (A,B). THE GRID POINTS IN THE R-DIRECTION
71
+ C R-DIRECTION ARE GIVEN BY
72
+ C R(I) = A + (I-0.5)DR FOR I=1,2,...,M
73
+ C WHERE DR =(B-A)/M.
74
+ C M MUST BE GREATER THAN 2.
75
+ C
76
+ C MBDCND
77
+ C INDICATES THE TYPE OF BOUNDARY CONDITIONS
78
+ C AT R = A AND R = B.
79
+ C
80
+ C = 1 IF THE SOLUTION IS SPECIFIED AT R = A
81
+ C (SEE NOTE BELOW) AND R = B.
82
+ C
83
+ C = 2 IF THE SOLUTION IS SPECIFIED AT R = A
84
+ C (SEE NOTE BELOW) AND THE DERIVATIVE
85
+ C OF THE SOLUTION WITH RESPECT TO R IS
86
+ C SPECIFIED AT R = B.
87
+ C
88
+ C = 3 IF THE DERIVATIVE OF THE SOLUTION
89
+ C WITH RESPECT TO R IS SPECIFIED AT
90
+ C R = A (SEE NOTE BELOW) AND R = B.
91
+ C
92
+ C = 4 IF THE DERIVATIVE OF THE SOLUTION
93
+ C WITH RESPECT TO R IS SPECIFIED AT
94
+ C R = A (SEE NOTE BELOW) AND THE
95
+ C SOLUTION IS SPECIFIED AT R = B.
96
+ C
97
+ C = 5 IF THE SOLUTION IS UNSPECIFIED AT
98
+ C R = A = 0 AND THE SOLUTION IS
99
+ C SPECIFIED AT R = B.
100
+ C
101
+ C = 6 IF THE SOLUTION IS UNSPECIFIED AT
102
+ C R = A = 0 AND THE DERIVATIVE OF THE
103
+ C SOLUTION WITH RESPECT TO R IS SPECIFIED
104
+ C AT R = B.
105
+ C
106
+ C NOTE:
107
+ C IF A = 0, DO NOT USE MBDCND = 1,2,3, OR 4,
108
+ C BUT INSTEAD USE MBDCND = 5 OR 6.
109
+ C THE RESULTING APPROXIMATION GIVES THE ONLY
110
+ C MEANINGFUL BOUNDARY CONDITION,
111
+ C I.E. DU/DR = 0.
112
+ C (SEE D. GREENSPAN, 'INTRODUCTORY NUMERICAL
113
+ C ANALYSIS OF ELLIPTIC BOUNDARY VALUE
114
+ C PROBLEMS,' HARPER AND ROW, 1965, CHAPTER 5.)
115
+ C
116
+ C BDA
117
+ C A ONE-DIMENSIONAL ARRAY OF LENGTH N THAT
118
+ C SPECIFIES THE BOUNDARY VALUES (IF ANY)
119
+ C OF THE SOLUTION AT R = A.
120
+ C
121
+ C WHEN MBDCND = 1 OR 2,
122
+ C BDA(J) = U(A,Z(J)) , J=1,2,...,N.
123
+ C
124
+ C WHEN MBDCND = 3 OR 4,
125
+ C BDA(J) = (D/DR)U(A,Z(J)) , J=1,2,...,N.
126
+ C
127
+ C WHEN MBDCND = 5 OR 6, BDA IS A DUMMY
128
+ C VARIABLE.
129
+ C
130
+ C BDB
131
+ C A ONE-DIMENSIONAL ARRAY OF LENGTH N THAT
132
+ C SPECIFIES THE BOUNDARY VALUES OF THE
133
+ C SOLUTION AT R = B.
134
+ C
135
+ C WHEN MBDCND = 1,4,OR 5,
136
+ C BDB(J) = U(B,Z(J)) , J=1,2,...,N.
137
+ C
138
+ C WHEN MBDCND = 2,3, OR 6,
139
+ C BDB(J) = (D/DR)U(B,Z(J)) , J=1,2,...,N.
140
+ C
141
+ C C,D
142
+ C THE RANGE OF Z, I.E. C .LE. Z .LE. D.
143
+ C C MUST BE LESS THAN D.
144
+ C
145
+ C N
146
+ C THE NUMBER OF UNKNOWNS IN THE INTERVAL
147
+ C (C,D). THE UNKNOWNS IN THE Z-DIRECTION
148
+ C ARE GIVEN BY Z(J) = C + (J-0.5)DZ,
149
+ C J=1,2,...,N, WHERE DZ = (D-C)/N.
150
+ C N MUST BE GREATER THAN 2.
151
+ C
152
+ C NBDCND
153
+ C INDICATES THE TYPE OF BOUNDARY CONDITIONS
154
+ C AT Z = C AND Z = D.
155
+ C
156
+ C = 0 IF THE SOLUTION IS PERIODIC IN Z, I.E.
157
+ C U(I,J) = U(I,N+J).
158
+ C
159
+ C = 1 IF THE SOLUTION IS SPECIFIED AT Z = C
160
+ C AND Z = D.
161
+ C
162
+ C = 2 IF THE SOLUTION IS SPECIFIED AT Z = C
163
+ C AND THE DERIVATIVE OF THE SOLUTION WITH
164
+ C RESPECT TO Z IS SPECIFIED AT Z = D.
165
+ C
166
+ C = 3 IF THE DERIVATIVE OF THE SOLUTION WITH
167
+ C RESPECT TO Z IS SPECIFIED AT Z = C
168
+ C AND Z = D.
169
+ C
170
+ C = 4 IF THE DERIVATIVE OF THE SOLUTION WITH
171
+ C RESPECT TO Z IS SPECIFIED AT Z = C AND
172
+ C THE SOLUTION IS SPECIFIED AT Z = D.
173
+ C
174
+ C BDC
175
+ C A ONE DIMENSIONAL ARRAY OF LENGTH M THAT
176
+ C SPECIFIES THE BOUNDARY VALUES OF THE
177
+ C SOLUTION AT Z = C.
178
+ C
179
+ C WHEN NBDCND = 1 OR 2,
180
+ C BDC(I) = U(R(I),C) , I=1,2,...,M.
181
+ C
182
+ C WHEN NBDCND = 3 OR 4,
183
+ C BDC(I) = (D/DZ)U(R(I),C), I=1,2,...,M.
184
+ C
185
+ C WHEN NBDCND = 0, BDC IS A DUMMY VARIABLE.
186
+ C
187
+ C BDD
188
+ C A ONE-DIMENSIONAL ARRAY OF LENGTH M THAT
189
+ C SPECIFIES THE BOUNDARY VALUES OF THE
190
+ C SOLUTION AT Z = D.
191
+ C
192
+ C WHEN NBDCND = 1 OR 4,
193
+ C BDD(I) = U(R(I),D) , I=1,2,...,M.
194
+ C
195
+ C WHEN NBDCND = 2 OR 3,
196
+ C BDD(I) = (D/DZ)U(R(I),D) , I=1,2,...,M.
197
+ C
198
+ C WHEN NBDCND = 0, BDD IS A DUMMY VARIABLE.
199
+ C
200
+ C ELMBDA
201
+ C THE CONSTANT LAMBDA IN THE MODIFIED
202
+ C HELMHOLTZ EQUATION. IF LAMBDA IS GREATER
203
+ C THAN 0, A SOLUTION MAY NOT EXIST.
204
+ C HOWEVER, HSTCYL WILL ATTEMPT TO FIND A
205
+ C SOLUTION. LAMBDA MUST BE ZERO WHEN
206
+ C MBDCND = 5 OR 6.
207
+ C
208
+ C F
209
+ C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES
210
+ C THE VALUES OF THE RIGHT SIDE OF THE
211
+ C MODIFIED HELMHOLTZ EQUATION.
212
+ C FOR I=1,2,...,M AND J=1,2,...,N
213
+ C F(I,J) = F(R(I),Z(J)) .
214
+ C F MUST BE DIMENSIONED AT LEAST M X N.
215
+ C
216
+ C IDIMF
217
+ C THE ROW (OR FIRST) DIMENSION OF THE ARRAY
218
+ C F AS IT APPEARS IN THE PROGRAM CALLING
219
+ C HSTCYL. THIS PARAMETER IS USED TO SPECIFY
220
+ C THE VARIABLE DIMENSION OF F. IDIMF MUST
221
+ C BE AT LEAST M.
222
+ C
223
+ C W
224
+ C A ONE-DIMENSIONAL ARRAY THAT MUST BE
225
+ C PROVIDED BY THE USER FOR WORK SPACE. W MAY
226
+ C REQUIRE UP TO 13M + 4N + M*INT(LOG2(N))
227
+ C LOCATIONS. THE ACTUAL NUMBER OF LOCATIONS
228
+ C USED IS COMPUTED BY HSTCYL AND IS RETURNED
229
+ C IN THE LOCATION W(1).
230
+ C
231
+ C ON OUTPUT
232
+ C
233
+ C F
234
+ C CONTAINS THE SOLUTION U(I,J) OF THE FINITE
235
+ C DIFFERENCE APPROXIMATION FOR THE GRID POINT
236
+ C (R(I),Z(J)) FOR I=1,2,...,M, J=1,2,...,N.
237
+ C
238
+ C PERTRB
239
+ C IF A COMBINATION OF PERIODIC, DERIVATIVE,
240
+ C OR UNSPECIFIED BOUNDARY CONDITIONS IS
241
+ C SPECIFIED FOR A POISSON EQUATION
242
+ C (LAMBDA = 0), A SOLUTION MAY NOT EXIST.
243
+ C PERTRB IS A CONSTANT, CALCULATED AND
244
+ C SUBTRACTED FROM F, WHICH ENSURES THAT A
245
+ C SOLUTION EXISTS. HSTCYL THEN COMPUTES
246
+ C THIS SOLUTION, WHICH IS A LEAST SQUARES
247
+ C SOLUTION TO THE ORIGINAL APPROXIMATION.
248
+ C THIS SOLUTION PLUS ANY CONSTANT IS ALSO
249
+ C A SOLUTION; HENCE, THE SOLUTION IS NOT
250
+ C UNIQUE. THE VALUE OF PERTRB SHOULD BE
251
+ C SMALL COMPARED TO THE RIGHT SIDE F.
252
+ C OTHERWISE, A SOLUTION IS OBTAINED TO AN
253
+ C ESSENTIALLY DIFFERENT PROBLEM.
254
+ C THIS COMPARISON SHOULD ALWAYS BE MADE TO
255
+ C INSURE THAT A MEANINGFUL SOLUTION HAS BEEN
256
+ C OBTAINED.
257
+ C
258
+ C IERROR
259
+ C AN ERROR FLAG THAT INDICATES INVALID INPUT
260
+ C PARAMETERS. EXCEPT TO NUMBERS 0 AND 11,
261
+ C A SOLUTION IS NOT ATTEMPTED.
262
+ C
263
+ C = 0 NO ERROR
264
+ C
265
+ C = 1 A .LT. 0
266
+ C
267
+ C = 2 A .GE. B
268
+ C
269
+ C = 3 MBDCND .LT. 1 OR MBDCND .GT. 6
270
+ C
271
+ C = 4 C .GE. D
272
+ C
273
+ C = 5 N .LE. 2
274
+ C
275
+ C = 6 NBDCND .LT. 0 OR NBDCND .GT. 4
276
+ C
277
+ C = 7 A = 0 AND MBDCND = 1,2,3, OR 4
278
+ C
279
+ C = 8 A .GT. 0 AND MBDCND .GE. 5
280
+ C
281
+ C = 9 M .LE. 2
282
+ C
283
+ C = 10 IDIMF .LT. M
284
+ C
285
+ C = 11 LAMBDA .GT. 0
286
+ C
287
+ C = 12 A=0, MBDCND .GE. 5, ELMBDA .NE. 0
288
+ C
289
+ C SINCE THIS IS THE ONLY MEANS OF INDICATING
290
+ C A POSSIBLY INCORRECT CALL TO HSTCYL, THE
291
+ C USER SHOULD TEST IERROR AFTER THE CALL.
292
+ C
293
+ C W
294
+ C W(1) CONTAINS THE REQUIRED LENGTH OF W.
295
+ C
296
+ C I/O NONE
297
+ C
298
+ C PRECISION SINGLE
299
+ C
300
+ C REQUIRED LIBRARY COMF, GENBUN, GNBNAUX, AND POISTG
301
+ C FILES FROM FISHPACK
302
+ C
303
+ C LANGUAGE FORTRAN
304
+ C
305
+ C HISTORY WRITTEN BY ROLAND SWEET AT NCAR IN 1977.
306
+ C RELEASED ON NCAR'S PUBLIC SOFTWARE LIBRARIES
307
+ C IN JANUARY 1980.
308
+ C
309
+ C PORTABILITY FORTRAN 77
310
+ C
311
+ C ALGORITHM THIS SUBROUTINE DEFINES THE FINITE-DIFFERENCE
312
+ C EQUATIONS, INCORPORATES BOUNDARY DATA, ADJUSTS
313
+ C THE RIGHT SIDE WHEN THE SYSTEM IS SINGULAR AND
314
+ C CALLS EITHER POISTG OR GENBUN WHICH SOLVES THE
315
+ C LINEAR SYSTEM OF EQUATIONS.
316
+ C
317
+ C TIMING FOR LARGE M AND N, THE OPERATION COUNT
318
+ C IS ROUGHLY PROPORTIONAL TO M*N*LOG2(N).
319
+ C
320
+ C ACCURACY THE SOLUTION PROCESS RESULTS IN A LOSS
321
+ C OF NO MORE THAN FOUR SIGNIFICANT DIGITS
322
+ C FOR N AND M AS LARGE AS 64.
323
+ C MORE DETAILED INFORMATION ABOUT ACCURACY
324
+ C CAN BE FOUND IN THE DOCUMENTATION FOR
325
+ C SUBROUTINE POISTG WHICH IS THE ROUTINE THAT
326
+ C ACTUALLY SOLVES THE FINITE DIFFERENCE
327
+ C EQUATIONS.
328
+ C
329
+ C REFERENCES U. SCHUMANN AND R. SWEET, "A DIRECT METHOD FOR
330
+ C THE SOLUTION OF POISSON'S EQUATION WITH NEUMANN
331
+ C BOUNDARY CONDITIONS ON A STAGGERED GRID OF
332
+ C ARBITRARY SIZE," J. COMP. PHYS. 20(1976),
333
+ C PP. 171-182.
334
+ C***********************************************************************
335
+ DIMENSION F(IDIMF,1) ,BDA(*) ,BDB(*) ,BDC(*) ,
336
+ 1 BDD(*) ,W(*)
337
+ C
338
+ IERROR = 0
339
+ IF (A .LT. 0.) IERROR = 1
340
+ IF (A .GE. B) IERROR = 2
341
+ IF (MBDCND.LE.0 .OR. MBDCND.GE.7) IERROR = 3
342
+ IF (C .GE. D) IERROR = 4
343
+ IF (N .LE. 2) IERROR = 5
344
+ IF (NBDCND.LT.0 .OR. NBDCND.GE.5) IERROR = 6
345
+ IF (A.EQ.0. .AND. MBDCND.NE.5 .AND. MBDCND.NE.6) IERROR = 7
346
+ IF (A.GT.0. .AND. MBDCND.GE.5) IERROR = 8
347
+ IF (IDIMF .LT. M) IERROR = 10
348
+ IF (M .LE. 2) IERROR = 9
349
+ IF (A.EQ.0. .AND. MBDCND.GE.5 .AND. ELMBDA.NE.0.) IERROR = 12
350
+ IF (IERROR .NE. 0) RETURN
351
+ DELTAR = (B-A)/FLOAT(M)
352
+ DLRSQ = DELTAR**2
353
+ DELTHT = (D-C)/FLOAT(N)
354
+ DLTHSQ = DELTHT**2
355
+ NP = NBDCND+1
356
+ C
357
+ C DEFINE A,B,C COEFFICIENTS IN W-ARRAY.
358
+ C
359
+ IWB = M
360
+ IWC = IWB+M
361
+ IWR = IWC+M
362
+ DO 101 I=1,M
363
+ J = IWR+I
364
+ W(J) = A+(FLOAT(I)-0.5)*DELTAR
365
+ W(I) = (A+FLOAT(I-1)*DELTAR)/(DLRSQ*W(J))
366
+ K = IWC+I
367
+ W(K) = (A+FLOAT(I)*DELTAR)/(DLRSQ*W(J))
368
+ K = IWB+I
369
+ W(K) = ELMBDA/W(J)**2-2./DLRSQ
370
+ 101 CONTINUE
371
+ C
372
+ C ENTER BOUNDARY DATA FOR R-BOUNDARIES.
373
+ C
374
+ GO TO (102,102,104,104,106,106),MBDCND
375
+ 102 A1 = 2.*W(1)
376
+ W(IWB+1) = W(IWB+1)-W(1)
377
+ DO 103 J=1,N
378
+ F(1,J) = F(1,J)-A1*BDA(J)
379
+ 103 CONTINUE
380
+ GO TO 106
381
+ 104 A1 = DELTAR*W(1)
382
+ W(IWB+1) = W(IWB+1)+W(1)
383
+ DO 105 J=1,N
384
+ F(1,J) = F(1,J)+A1*BDA(J)
385
+ 105 CONTINUE
386
+ 106 CONTINUE
387
+ GO TO (107,109,109,107,107,109),MBDCND
388
+ 107 W(IWC) = W(IWC)-W(IWR)
389
+ A1 = 2.*W(IWR)
390
+ DO 108 J=1,N
391
+ F(M,J) = F(M,J)-A1*BDB(J)
392
+ 108 CONTINUE
393
+ GO TO 111
394
+ 109 W(IWC) = W(IWC)+W(IWR)
395
+ A1 = DELTAR*W(IWR)
396
+ DO 110 J=1,N
397
+ F(M,J) = F(M,J)-A1*BDB(J)
398
+ 110 CONTINUE
399
+ C
400
+ C ENTER BOUNDARY DATA FOR THETA-BOUNDARIES.
401
+ C
402
+ 111 A1 = 2./DLTHSQ
403
+ GO TO (121,112,112,114,114),NP
404
+ 112 DO 113 I=1,M
405
+ F(I,1) = F(I,1)-A1*BDC(I)
406
+ 113 CONTINUE
407
+ GO TO 116
408
+ 114 A1 = 1./DELTHT
409
+ DO 115 I=1,M
410
+ F(I,1) = F(I,1)+A1*BDC(I)
411
+ 115 CONTINUE
412
+ 116 A1 = 2./DLTHSQ
413
+ GO TO (121,117,119,119,117),NP
414
+ 117 DO 118 I=1,M
415
+ F(I,N) = F(I,N)-A1*BDD(I)
416
+ 118 CONTINUE
417
+ GO TO 121
418
+ 119 A1 = 1./DELTHT
419
+ DO 120 I=1,M
420
+ F(I,N) = F(I,N)-A1*BDD(I)
421
+ 120 CONTINUE
422
+ 121 CONTINUE
423
+ C
424
+ C ADJUST RIGHT SIDE OF SINGULAR PROBLEMS TO INSURE EXISTENCE OF A
425
+ C SOLUTION.
426
+ C
427
+ PERTRB = 0.
428
+ IF (ELMBDA) 130,123,122
429
+ 122 IERROR = 11
430
+ GO TO 130
431
+ 123 GO TO (130,130,124,130,130,124),MBDCND
432
+ 124 GO TO (125,130,130,125,130),NP
433
+ 125 CONTINUE
434
+ DO 127 I=1,M
435
+ A1 = 0.
436
+ DO 126 J=1,N
437
+ A1 = A1+F(I,J)
438
+ 126 CONTINUE
439
+ J = IWR+I
440
+ PERTRB = PERTRB+A1*W(J)
441
+ 127 CONTINUE
442
+ PERTRB = PERTRB/(FLOAT(M*N)*0.5*(A+B))
443
+ DO 129 I=1,M
444
+ DO 128 J=1,N
445
+ F(I,J) = F(I,J)-PERTRB
446
+ 128 CONTINUE
447
+ 129 CONTINUE
448
+ 130 CONTINUE
449
+ C
450
+ C MULTIPLY I-TH EQUATION THROUGH BY DELTHT**2
451
+ C
452
+ DO 132 I=1,M
453
+ W(I) = W(I)*DLTHSQ
454
+ J = IWC+I
455
+ W(J) = W(J)*DLTHSQ
456
+ J = IWB+I
457
+ W(J) = W(J)*DLTHSQ
458
+ DO 131 J=1,N
459
+ F(I,J) = F(I,J)*DLTHSQ
460
+ 131 CONTINUE
461
+ 132 CONTINUE
462
+ LP = NBDCND
463
+ W(1) = 0.
464
+ W(IWR) = 0.
465
+ C
466
+ C CALL GENBUN TO SOLVE THE SYSTEM OF EQUATIONS.
467
+ C
468
+ IF (NBDCND .EQ. 0) GO TO 133
469
+ CALL POISTG (LP,N,1,M,W,W(IWB+1),W(IWC+1),IDIMF,F,IERR1,W(IWR+1))
470
+ GO TO 134
471
+ 133 CALL GENBUN (LP,N,1,M,W,W(IWB+1),W(IWC+1),IDIMF,F,IERR1,W(IWR+1))
472
+ 134 CONTINUE
473
+ W(1) = W(IWR+1)+3.*FLOAT(M)
474
+ RETURN
475
+ C
476
+ C REVISION HISTORY---
477
+ C
478
+ C SEPTEMBER 1973 VERSION 1
479
+ C APRIL 1976 VERSION 2
480
+ C JANUARY 1978 VERSION 3
481
+ C DECEMBER 1979 VERSION 3.1
482
+ C FEBRUARY 1985 DOCUMENTATION UPGRADE
483
+ C NOVEMBER 1988 VERSION 3.2, FORTRAN 77 CHANGES
484
+ C-----------------------------------------------------------------------
485
+ END