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,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