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,683 @@
|
|
|
1
|
+
C
|
|
2
|
+
C file hstcsp.f
|
|
3
|
+
C
|
|
4
|
+
SUBROUTINE HSTCSP (INTL,A,B,M,MBDCND,BDA,BDB,C,D,N,NBDCND,BDC,
|
|
5
|
+
1 BDD,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 IN
|
|
47
|
+
C SPHERICAL COORDINATES ASSUMING AXISYMMETRY
|
|
48
|
+
C (NO DEPENDENCE ON LONGITUDE).
|
|
49
|
+
C
|
|
50
|
+
C THE EQUATION IS
|
|
51
|
+
C
|
|
52
|
+
C (1/R**2)(D/DR)(R**2(DU/DR)) +
|
|
53
|
+
C 1/(R**2*SIN(THETA))(D/DTHETA)
|
|
54
|
+
C (SIN(THETA)(DU/DTHETA)) +
|
|
55
|
+
C (LAMBDA/(R*SIN(THETA))**2)U = F(THETA,R)
|
|
56
|
+
C
|
|
57
|
+
C WHERE THETA IS COLATITUDE AND R IS THE
|
|
58
|
+
C RADIAL COORDINATE. THIS TWO-DIMENSIONAL
|
|
59
|
+
C MODIFIED HELMHOLTZ EQUATION RESULTS FROM
|
|
60
|
+
C THE FOURIER TRANSFORM OF THE THREE-
|
|
61
|
+
C DIMENSIONAL POISSON EQUATION.
|
|
62
|
+
C
|
|
63
|
+
C
|
|
64
|
+
C USAGE CALL HSTCSP (INTL,A,B,M,MBDCND,BDA,BDB,C,D,N,
|
|
65
|
+
C NBDCND,BDC,BDD,ELMBDA,F,IDIMF,
|
|
66
|
+
C PERTRB,IERROR,W)
|
|
67
|
+
C
|
|
68
|
+
C ARGUMENTS
|
|
69
|
+
C ON INPUT INTL
|
|
70
|
+
C
|
|
71
|
+
C = 0 ON INITIAL ENTRY TO HSTCSP OR IF ANY
|
|
72
|
+
C OF THE ARGUMENTS C, D, N, OR NBDCND
|
|
73
|
+
C ARE CHANGED FROM A PREVIOUS CALL
|
|
74
|
+
C
|
|
75
|
+
C = 1 IF C, D, N, AND NBDCND ARE ALL
|
|
76
|
+
C UNCHANGED FROM PREVIOUS CALL TO HSTCSP
|
|
77
|
+
C
|
|
78
|
+
C NOTE:
|
|
79
|
+
C A CALL WITH INTL = 0 TAKES APPROXIMATELY
|
|
80
|
+
C 1.5 TIMES AS MUCH TIME AS A CALL WITH
|
|
81
|
+
C INTL = 1. ONCE A CALL WITH INTL = 0
|
|
82
|
+
C HAS BEEN MADE THEN SUBSEQUENT SOLUTIONS
|
|
83
|
+
C CORRESPONDING TO DIFFERENT F, BDA, BDB,
|
|
84
|
+
C BDC, AND BDD CAN BE OBTAINED FASTER WITH
|
|
85
|
+
C INTL = 1 SINCE INITIALIZATION IS NOT
|
|
86
|
+
C REPEATED.
|
|
87
|
+
C
|
|
88
|
+
C A,B
|
|
89
|
+
C THE RANGE OF THETA (COLATITUDE),
|
|
90
|
+
C I.E. A .LE. THETA .LE. B. A
|
|
91
|
+
C MUST BE LESS THAN B AND A MUST BE
|
|
92
|
+
C NON-NEGATIVE. A AND B ARE IN RADIANS.
|
|
93
|
+
C A = 0 CORRESPONDS TO THE NORTH POLE AND
|
|
94
|
+
C B = PI CORRESPONDS TO THE SOUTH POLE.
|
|
95
|
+
C
|
|
96
|
+
C * * * IMPORTANT * * *
|
|
97
|
+
C
|
|
98
|
+
C IF B IS EQUAL TO PI, THEN B MUST BE
|
|
99
|
+
C COMPUTED USING THE STATEMENT
|
|
100
|
+
C B = PIMACH(DUM)
|
|
101
|
+
C THIS INSURES THAT B IN THE USER'S PROGRAM
|
|
102
|
+
C IS EQUAL TO PI IN THIS PROGRAM, PERMITTING
|
|
103
|
+
C SEVERAL TESTS OF THE INPUT PARAMETERS THAT
|
|
104
|
+
C OTHERWISE WOULD NOT BE POSSIBLE.
|
|
105
|
+
C
|
|
106
|
+
C * * * * * * * * * * * *
|
|
107
|
+
C
|
|
108
|
+
C M
|
|
109
|
+
C THE NUMBER OF GRID POINTS IN THE INTERVAL
|
|
110
|
+
C (A,B). THE GRID POINTS IN THE THETA-
|
|
111
|
+
C DIRECTION ARE GIVEN BY
|
|
112
|
+
C THETA(I) = A + (I-0.5)DTHETA
|
|
113
|
+
C FOR I=1,2,...,M WHERE DTHETA =(B-A)/M.
|
|
114
|
+
C M MUST BE GREATER THAN 4.
|
|
115
|
+
C
|
|
116
|
+
C MBDCND
|
|
117
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITIONS
|
|
118
|
+
C AT THETA = A AND THETA = B.
|
|
119
|
+
C
|
|
120
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
121
|
+
C THETA = A AND THETA = B.
|
|
122
|
+
C (SEE NOTES 1, 2 BELOW)
|
|
123
|
+
C
|
|
124
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
125
|
+
C THETA = A AND THE DERIVATIVE OF THE
|
|
126
|
+
C SOLUTION WITH RESPECT TO THETA IS
|
|
127
|
+
C SPECIFIED AT THETA = B
|
|
128
|
+
C (SEE NOTES 1, 2 BELOW).
|
|
129
|
+
C
|
|
130
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
131
|
+
C WITH RESPECT TO THETA IS SPECIFIED
|
|
132
|
+
C AT THETA = A (SEE NOTES 1, 2 BELOW)
|
|
133
|
+
C AND THETA = B.
|
|
134
|
+
C
|
|
135
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
136
|
+
C WITH RESPECT TO THETA IS SPECIFIED AT
|
|
137
|
+
C THETA = A (SEE NOTES 1, 2 BELOW) AND
|
|
138
|
+
C THE SOLUTION IS SPECIFIED AT THETA = B.
|
|
139
|
+
C
|
|
140
|
+
C = 5 IF THE SOLUTION IS UNSPECIFIED AT
|
|
141
|
+
C THETA = A = 0 AND THE SOLUTION IS
|
|
142
|
+
C SPECIFIED AT THETA = B.
|
|
143
|
+
C (SEE NOTE 2 BELOW)
|
|
144
|
+
C
|
|
145
|
+
C = 6 IF THE SOLUTION IS UNSPECIFIED AT
|
|
146
|
+
C THETA = A = 0 AND THE DERIVATIVE OF
|
|
147
|
+
C THE SOLUTION WITH RESPECT TO THETA IS
|
|
148
|
+
C SPECIFIED AT THETA = B
|
|
149
|
+
C (SEE NOTE 2 BELOW).
|
|
150
|
+
C
|
|
151
|
+
C = 7 IF THE SOLUTION IS SPECIFIED AT
|
|
152
|
+
C THETA = A AND THE SOLUTION IS
|
|
153
|
+
C UNSPECIFIED AT THETA = B = PI.
|
|
154
|
+
C
|
|
155
|
+
C = 8 IF THE DERIVATIVE OF THE SOLUTION
|
|
156
|
+
C WITH RESPECT TO THETA IS SPECIFIED AT
|
|
157
|
+
C THETA = A (SEE NOTE 1 BELOW)
|
|
158
|
+
C AND THE SOLUTION IS UNSPECIFIED AT
|
|
159
|
+
C THETA = B = PI.
|
|
160
|
+
C
|
|
161
|
+
C = 9 IF THE SOLUTION IS UNSPECIFIED AT
|
|
162
|
+
C THETA = A = 0 AND THETA = B = PI.
|
|
163
|
+
C
|
|
164
|
+
C NOTE 1:
|
|
165
|
+
C IF A = 0, DO NOT USE MBDCND = 1,2,3,4,7
|
|
166
|
+
C OR 8, BUT INSTEAD USE MBDCND = 5, 6, OR 9.
|
|
167
|
+
C
|
|
168
|
+
C NOTE 2:
|
|
169
|
+
C IF B = PI, DO NOT USE MBDCND = 1,2,3,4,5,
|
|
170
|
+
C OR 6, BUT INSTEAD USE MBDCND = 7, 8, OR 9.
|
|
171
|
+
C
|
|
172
|
+
C NOTE 3:
|
|
173
|
+
C WHEN A = 0 AND/OR B = PI THE ONLY
|
|
174
|
+
C MEANINGFUL BOUNDARY CONDITION IS
|
|
175
|
+
C DU/DTHETA = 0. SEE D. GREENSPAN,
|
|
176
|
+
C 'NUMERICAL ANALYSIS OF ELLIPTIC
|
|
177
|
+
C BOUNDARY VALUE PROBLEMS,'
|
|
178
|
+
C HARPER AND ROW, 1965, CHAPTER 5.)
|
|
179
|
+
C
|
|
180
|
+
C BDA
|
|
181
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH N THAT
|
|
182
|
+
C SPECIFIES THE BOUNDARY VALUES (IF ANY) OF
|
|
183
|
+
C THE SOLUTION AT THETA = A.
|
|
184
|
+
C
|
|
185
|
+
C WHEN MBDCND = 1, 2, OR 7,
|
|
186
|
+
C BDA(J) = U(A,R(J)), J=1,2,...,N.
|
|
187
|
+
C
|
|
188
|
+
C WHEN MBDCND = 3, 4, OR 8,
|
|
189
|
+
C BDA(J) = (D/DTHETA)U(A,R(J)), J=1,2,...,N.
|
|
190
|
+
C
|
|
191
|
+
C WHEN MBDCND HAS ANY OTHER VALUE, BDA IS A
|
|
192
|
+
C DUMMY VARIABLE.
|
|
193
|
+
C
|
|
194
|
+
C BDB
|
|
195
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH N THAT
|
|
196
|
+
C SPECIFIES THE BOUNDARY VALUES OF THE
|
|
197
|
+
C SOLUTION AT THETA = B.
|
|
198
|
+
C
|
|
199
|
+
C WHEN MBDCND = 1, 4, OR 5,
|
|
200
|
+
C BDB(J) = U(B,R(J)), J=1,2,...,N.
|
|
201
|
+
C
|
|
202
|
+
C WHEN MBDCND = 2,3, OR 6,
|
|
203
|
+
C BDB(J) = (D/DTHETA)U(B,R(J)), J=1,2,...,N.
|
|
204
|
+
C
|
|
205
|
+
C WHEN MBDCND HAS ANY OTHER VALUE, BDB IS
|
|
206
|
+
C A DUMMY VARIABLE.
|
|
207
|
+
C
|
|
208
|
+
C C,D
|
|
209
|
+
C THE RANGE OF R , I.E. C .LE. R .LE. D.
|
|
210
|
+
C C MUST BE LESS THAN D AND NON-NEGATIVE.
|
|
211
|
+
C
|
|
212
|
+
C N
|
|
213
|
+
C THE NUMBER OF UNKNOWNS IN THE INTERVAL
|
|
214
|
+
C (C,D). THE UNKNOWNS IN THE R-DIRECTION
|
|
215
|
+
C ARE GIVEN BY R(J) = C + (J-0.5)DR,
|
|
216
|
+
C J=1,2,...,N, WHERE DR = (D-C)/N.
|
|
217
|
+
C N MUST BE GREATER THAN 4.
|
|
218
|
+
C
|
|
219
|
+
C NBDCND
|
|
220
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITIONS
|
|
221
|
+
C AT R = C AND R = D.
|
|
222
|
+
C
|
|
223
|
+
C
|
|
224
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
225
|
+
C R = C AND R = D.
|
|
226
|
+
C
|
|
227
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
228
|
+
C R = C AND THE DERIVATIVE OF THE
|
|
229
|
+
C SOLUTION WITH RESPECT TO R IS
|
|
230
|
+
C SPECIFIED AT R = D. (SEE NOTE 1 BELOW)
|
|
231
|
+
C
|
|
232
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
233
|
+
C WITH RESPECT TO R IS SPECIFIED AT
|
|
234
|
+
C R = C AND R = D.
|
|
235
|
+
C
|
|
236
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
237
|
+
C WITH RESPECT TO R IS
|
|
238
|
+
C SPECIFIED AT R = C AND THE SOLUTION
|
|
239
|
+
C IS SPECIFIED AT R = D.
|
|
240
|
+
C
|
|
241
|
+
C = 5 IF THE SOLUTION IS UNSPECIFIED AT
|
|
242
|
+
C R = C = 0 (SEE NOTE 2 BELOW) AND THE
|
|
243
|
+
C SOLUTION IS SPECIFIED AT R = D.
|
|
244
|
+
C
|
|
245
|
+
C = 6 IF THE SOLUTION IS UNSPECIFIED AT
|
|
246
|
+
C R = C = 0 (SEE NOTE 2 BELOW)
|
|
247
|
+
C AND THE DERIVATIVE OF THE SOLUTION
|
|
248
|
+
C WITH RESPECT TO R IS SPECIFIED AT
|
|
249
|
+
C R = D.
|
|
250
|
+
C
|
|
251
|
+
C NOTE 1:
|
|
252
|
+
C IF C = 0 AND MBDCND = 3,6,8 OR 9, THE
|
|
253
|
+
C SYSTEM OF EQUATIONS TO BE SOLVED IS
|
|
254
|
+
C SINGULAR. THE UNIQUE SOLUTION IS
|
|
255
|
+
C DETERMINED BY EXTRAPOLATION TO THE
|
|
256
|
+
C SPECIFICATION OF U(THETA(1),C).
|
|
257
|
+
C BUT IN THESE CASES THE RIGHT SIDE OF THE
|
|
258
|
+
C SYSTEM WILL BE PERTURBED BY THE CONSTANT
|
|
259
|
+
C PERTRB.
|
|
260
|
+
C
|
|
261
|
+
C NOTE 2:
|
|
262
|
+
C NBDCND = 5 OR 6 CANNOT BE USED WITH
|
|
263
|
+
C MBDCND =1, 2, 4, 5, OR 7
|
|
264
|
+
C (THE FORMER INDICATES THAT THE SOLUTION IS
|
|
265
|
+
C UNSPECIFIED AT R = 0; THE LATTER INDICATES
|
|
266
|
+
C SOLUTION IS SPECIFIED).
|
|
267
|
+
C USE INSTEAD NBDCND = 1 OR 2.
|
|
268
|
+
C
|
|
269
|
+
C BDC
|
|
270
|
+
C A ONE DIMENSIONAL ARRAY OF LENGTH M THAT
|
|
271
|
+
C SPECIFIES THE BOUNDARY VALUES OF THE
|
|
272
|
+
C SOLUTION AT R = C. WHEN NBDCND = 1 OR 2,
|
|
273
|
+
C BDC(I) = U(THETA(I),C), I=1,2,...,M.
|
|
274
|
+
C
|
|
275
|
+
C WHEN NBDCND = 3 OR 4,
|
|
276
|
+
C BDC(I) = (D/DR)U(THETA(I),C), I=1,2,...,M.
|
|
277
|
+
C
|
|
278
|
+
C WHEN NBDCND HAS ANY OTHER VALUE, BDC IS
|
|
279
|
+
C A DUMMY VARIABLE.
|
|
280
|
+
C
|
|
281
|
+
C BDD
|
|
282
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH M THAT
|
|
283
|
+
C SPECIFIES THE BOUNDARY VALUES OF THE
|
|
284
|
+
C SOLUTION AT R = D. WHEN NBDCND = 1 OR 4,
|
|
285
|
+
C BDD(I) = U(THETA(I),D) , I=1,2,...,M.
|
|
286
|
+
C
|
|
287
|
+
C WHEN NBDCND = 2 OR 3,
|
|
288
|
+
C BDD(I) = (D/DR)U(THETA(I),D), I=1,2,...,M.
|
|
289
|
+
C
|
|
290
|
+
C WHEN NBDCND HAS ANY OTHER VALUE, BDD IS
|
|
291
|
+
C A DUMMY VARIABLE.
|
|
292
|
+
C
|
|
293
|
+
C ELMBDA
|
|
294
|
+
C THE CONSTANT LAMBDA IN THE MODIFIED
|
|
295
|
+
C HELMHOLTZ EQUATION. IF LAMBDA IS GREATER
|
|
296
|
+
C THAN 0, A SOLUTION MAY NOT EXIST.
|
|
297
|
+
C HOWEVER, HSTCSP WILL ATTEMPT TO FIND A
|
|
298
|
+
C SOLUTION.
|
|
299
|
+
C
|
|
300
|
+
C F
|
|
301
|
+
C A TWO-DIMENSIONAL ARRAY THAT SPECIFIES THE
|
|
302
|
+
C VALUES OF THE RIGHT SIDE OF THE MODIFIED
|
|
303
|
+
C HELMHOLTZ EQUATION. FOR I=1,2,...,M AND
|
|
304
|
+
C J=1,2,...,N
|
|
305
|
+
C
|
|
306
|
+
C F(I,J) = F(THETA(I),R(J)) .
|
|
307
|
+
C
|
|
308
|
+
C F MUST BE DIMENSIONED AT LEAST M X N.
|
|
309
|
+
C
|
|
310
|
+
C IDIMF
|
|
311
|
+
C THE ROW (OR FIRST) DIMENSION OF THE ARRAY
|
|
312
|
+
C F AS IT APPEARS IN THE PROGRAM CALLING
|
|
313
|
+
C HSTCSP. THIS PARAMETER IS USED TO SPECIFY
|
|
314
|
+
C THE VARIABLE DIMENSION OF F.
|
|
315
|
+
C IDIMF MUST BE AT LEAST M.
|
|
316
|
+
C
|
|
317
|
+
C W
|
|
318
|
+
C A ONE-DIMENSIONAL ARRAY THAT MUST BE
|
|
319
|
+
C PROVIDED BY THE USER FOR WORK SPACE.
|
|
320
|
+
C WITH K = INT(LOG2(N))+1 AND L = 2**(K+1),
|
|
321
|
+
C W MAY REQUIRE UP TO
|
|
322
|
+
C (K-2)*L+K+MAX(2N,6M)+4(N+M)+5 LOCATIONS.
|
|
323
|
+
C THE ACTUAL NUMBER OF LOCATIONS USED IS
|
|
324
|
+
C COMPUTED BY HSTCSP AND IS RETURNED IN THE
|
|
325
|
+
C LOCATION W(1).
|
|
326
|
+
C
|
|
327
|
+
C
|
|
328
|
+
C ON OUTPUT F
|
|
329
|
+
C CONTAINS THE SOLUTION U(I,J) OF THE FINITE
|
|
330
|
+
C DIFFERENCE APPROXIMATION FOR THE GRID POINT
|
|
331
|
+
C (THETA(I),R(J)) FOR I=1,2,..,M, J=1,2,...,N.
|
|
332
|
+
C
|
|
333
|
+
C PERTRB
|
|
334
|
+
C IF A COMBINATION OF PERIODIC, DERIVATIVE,
|
|
335
|
+
C OR UNSPECIFIED BOUNDARY CONDITIONS IS
|
|
336
|
+
C SPECIFIED FOR A POISSON EQUATION
|
|
337
|
+
C (LAMBDA = 0), A SOLUTION MAY NOT EXIST.
|
|
338
|
+
C PERTRB IS A CONSTANT, CALCULATED AND
|
|
339
|
+
C SUBTRACTED FROM F, WHICH ENSURES THAT A
|
|
340
|
+
C SOLUTION EXISTS. HSTCSP THEN COMPUTES THIS
|
|
341
|
+
C SOLUTION, WHICH IS A LEAST SQUARES SOLUTION
|
|
342
|
+
C TO THE ORIGINAL APPROXIMATION.
|
|
343
|
+
C THIS SOLUTION PLUS ANY CONSTANT IS ALSO
|
|
344
|
+
C A SOLUTION; HENCE, THE SOLUTION IS NOT
|
|
345
|
+
C UNIQUE. THE VALUE OF PERTRB SHOULD BE
|
|
346
|
+
C SMALL COMPARED TO THE RIGHT SIDE F.
|
|
347
|
+
C OTHERWISE, A SOLUTION IS OBTAINED TO AN
|
|
348
|
+
C ESSENTIALLY DIFFERENT PROBLEM.
|
|
349
|
+
C THIS COMPARISON SHOULD ALWAYS BE MADE TO
|
|
350
|
+
C INSURE THAT A MEANINGFUL SOLUTION HAS BEEN
|
|
351
|
+
C OBTAINED.
|
|
352
|
+
C
|
|
353
|
+
C IERROR
|
|
354
|
+
C AN ERROR FLAG THAT INDICATES INVALID INPUT
|
|
355
|
+
C PARAMETERS. EXCEPT FOR NUMBERS 0 AND 10,
|
|
356
|
+
C A SOLUTION IS NOT ATTEMPTED.
|
|
357
|
+
C
|
|
358
|
+
C = 0 NO ERROR
|
|
359
|
+
C
|
|
360
|
+
C = 1 A .LT. 0 OR B .GT. PI
|
|
361
|
+
C
|
|
362
|
+
C = 2 A .GE. B
|
|
363
|
+
C
|
|
364
|
+
C = 3 MBDCND .LT. 1 OR MBDCND .GT. 9
|
|
365
|
+
C
|
|
366
|
+
C = 4 C .LT. 0
|
|
367
|
+
C
|
|
368
|
+
C = 5 C .GE. D
|
|
369
|
+
C
|
|
370
|
+
C = 6 NBDCND .LT. 1 OR NBDCND .GT. 6
|
|
371
|
+
C
|
|
372
|
+
C = 7 N .LT. 5
|
|
373
|
+
C
|
|
374
|
+
C = 8 NBDCND = 5 OR 6 AND
|
|
375
|
+
C MBDCND = 1, 2, 4, 5, OR 7
|
|
376
|
+
C
|
|
377
|
+
C = 9 C .GT. 0 AND NBDCND .GE. 5
|
|
378
|
+
C
|
|
379
|
+
C = 10 ELMBDA .GT. 0
|
|
380
|
+
C
|
|
381
|
+
C = 11 IDIMF .LT. M
|
|
382
|
+
C
|
|
383
|
+
C = 12 M .LT. 5
|
|
384
|
+
C
|
|
385
|
+
C = 13 A = 0 AND MBDCND =1,2,3,4,7 OR 8
|
|
386
|
+
C
|
|
387
|
+
C = 14 B = PI AND MBDCND .LE. 6
|
|
388
|
+
C
|
|
389
|
+
C = 15 A .GT. 0 AND MBDCND = 5, 6, OR 9
|
|
390
|
+
C
|
|
391
|
+
C = 16 B .LT. PI AND MBDCND .GE. 7
|
|
392
|
+
C
|
|
393
|
+
C = 17 LAMBDA .NE. 0 AND NBDCND .GE. 5
|
|
394
|
+
C
|
|
395
|
+
C SINCE THIS IS THE ONLY MEANS OF INDICATING
|
|
396
|
+
C A POSSIBLY INCORRECT CALL TO HSTCSP,
|
|
397
|
+
C THE USER SHOULD TEST IERROR AFTER THE CALL.
|
|
398
|
+
C
|
|
399
|
+
C W
|
|
400
|
+
C W(1) CONTAINS THE REQUIRED LENGTH OF W.
|
|
401
|
+
C ALSO W CONTAINS INTERMEDIATE VALUES THAT
|
|
402
|
+
C MUST NOT BE DESTROYED IF HSTCSP WILL BE
|
|
403
|
+
C CALLED AGAIN WITH INTL = 1.
|
|
404
|
+
C
|
|
405
|
+
C I/O NONE
|
|
406
|
+
C
|
|
407
|
+
C PRECISION SINGLE
|
|
408
|
+
C
|
|
409
|
+
C REQUIRED LIBRARY BLKTRI AND COMF FROM FISHPACK
|
|
410
|
+
C FILES
|
|
411
|
+
C
|
|
412
|
+
C LANGUAGE FORTRAN
|
|
413
|
+
C
|
|
414
|
+
C HISTORY WRITTEN BY ROLAND SWEET AT NCAR IN 1977.
|
|
415
|
+
C RELEASED ON NCAR'S PUBLIC SOFTWARE LIBRARIES
|
|
416
|
+
C IN JANUARY 1980.
|
|
417
|
+
C
|
|
418
|
+
C PORTABILITY FORTRAN 77
|
|
419
|
+
C
|
|
420
|
+
C ALGORITHM THIS SUBROUTINE DEFINES THE FINITE-DIFFERENCE
|
|
421
|
+
C EQUATIONS, INCORPORATES BOUNDARY DATA, ADJUSTS
|
|
422
|
+
C THE RIGHT SIDE WHEN THE SYSTEM IS SINGULAR
|
|
423
|
+
C AND CALLS BLKTRI WHICH SOLVES THE LINEAR
|
|
424
|
+
C SYSTEM OF EQUATIONS.
|
|
425
|
+
C
|
|
426
|
+
C
|
|
427
|
+
C TIMING FOR LARGE M AND N, THE OPERATION COUNT IS
|
|
428
|
+
C ROUGHLY PROPORTIONAL TO M*N*LOG2(N). THE
|
|
429
|
+
C TIMING ALSO DEPENDS ON INPUT PARAMETER INTL.
|
|
430
|
+
C
|
|
431
|
+
C ACCURACY THE SOLUTION PROCESS EMPLOYED RESULTS IN
|
|
432
|
+
C A LOSS OF NO MORE THAN FOUR SIGNIFICANT
|
|
433
|
+
C DIGITS FOR N AND M AS LARGE AS 64.
|
|
434
|
+
C MORE DETAILED INFORMATION ABOUT ACCURACY
|
|
435
|
+
C CAN BE FOUND IN THE DOCUMENTATION FOR
|
|
436
|
+
C SUBROUTINE BLKTRI WHICH IS THE ROUTINE
|
|
437
|
+
C SOLVES THE FINITE DIFFERENCE EQUATIONS.
|
|
438
|
+
C
|
|
439
|
+
C REFERENCES P.N. SWARZTRAUBER, "A DIRECT METHOD FOR
|
|
440
|
+
C THE DISCRETE SOLUTION OF SEPARABLE ELLIPTIC
|
|
441
|
+
C EQUATIONS",
|
|
442
|
+
C SIAM J. NUMER. ANAL. 11(1974), PP. 1136-1150.
|
|
443
|
+
C
|
|
444
|
+
C U. SCHUMANN AND R. SWEET, "A DIRECT METHOD FOR
|
|
445
|
+
C THE SOLUTION OF POISSON'S EQUATION WITH NEUMANN
|
|
446
|
+
C BOUNDARY CONDITIONS ON A STAGGERED GRID OF
|
|
447
|
+
C ARBITRARY SIZE," J. COMP. PHYS. 20(1976),
|
|
448
|
+
C PP. 171-182.
|
|
449
|
+
C***********************************************************************
|
|
450
|
+
DIMENSION F(IDIMF,1) ,BDA(*) ,BDB(*) ,BDC(*) ,
|
|
451
|
+
1 BDD(*) ,W(*)
|
|
452
|
+
C
|
|
453
|
+
PI = PIMACH(DUM)
|
|
454
|
+
C
|
|
455
|
+
C CHECK FOR INVALID INPUT PARAMETERS
|
|
456
|
+
C
|
|
457
|
+
IERROR = 0
|
|
458
|
+
IF (A.LT.0. .OR. B.GT.PI) IERROR = 1
|
|
459
|
+
IF (A .GE. B) IERROR = 2
|
|
460
|
+
IF (MBDCND.LT.1 .OR. MBDCND.GT.9) IERROR = 3
|
|
461
|
+
IF (C .LT. 0.) IERROR = 4
|
|
462
|
+
IF (C .GE. D) IERROR = 5
|
|
463
|
+
IF (NBDCND.LT.1 .OR. NBDCND.GT.6) IERROR = 6
|
|
464
|
+
IF (N .LT. 5) IERROR = 7
|
|
465
|
+
IF ((NBDCND.EQ.5 .OR. NBDCND.EQ.6) .AND. (MBDCND.EQ.1 .OR.
|
|
466
|
+
1 MBDCND.EQ.2 .OR. MBDCND.EQ.4 .OR. MBDCND.EQ.5 .OR.
|
|
467
|
+
2 MBDCND.EQ.7))
|
|
468
|
+
3 IERROR = 8
|
|
469
|
+
IF (C.GT.0. .AND. NBDCND.GE.5) IERROR = 9
|
|
470
|
+
IF (IDIMF .LT. M) IERROR = 11
|
|
471
|
+
IF (M .LT. 5) IERROR = 12
|
|
472
|
+
IF (A.EQ.0. .AND. MBDCND.NE.5 .AND. MBDCND.NE.6 .AND. MBDCND.NE.9)
|
|
473
|
+
1 IERROR = 13
|
|
474
|
+
IF (B.EQ.PI .AND. MBDCND.LE.6) IERROR = 14
|
|
475
|
+
IF (A.GT.0. .AND. (MBDCND.EQ.5 .OR. MBDCND.EQ.6 .OR. MBDCND.EQ.9))
|
|
476
|
+
1 IERROR = 15
|
|
477
|
+
IF (B.LT.PI .AND. MBDCND.GE.7) IERROR = 16
|
|
478
|
+
IF (ELMBDA.NE.0. .AND. NBDCND.GE.5) IERROR = 17
|
|
479
|
+
IF (IERROR .NE. 0) GO TO 101
|
|
480
|
+
IWBM = M+1
|
|
481
|
+
IWCM = IWBM+M
|
|
482
|
+
IWAN = IWCM+M
|
|
483
|
+
IWBN = IWAN+N
|
|
484
|
+
IWCN = IWBN+N
|
|
485
|
+
IWSNTH = IWCN+N
|
|
486
|
+
IWRSQ = IWSNTH+M
|
|
487
|
+
IWWRK = IWRSQ+N
|
|
488
|
+
IERR1 = 0
|
|
489
|
+
CALL HSTCS1 (INTL,A,B,M,MBDCND,BDA,BDB,C,D,N,NBDCND,BDC,BDD,
|
|
490
|
+
1 ELMBDA,F,IDIMF,PERTRB,IERR1,W,W(IWBM),W(IWCM),
|
|
491
|
+
2 W(IWAN),W(IWBN),W(IWCN),W(IWSNTH),W(IWRSQ),W(IWWRK))
|
|
492
|
+
W(1) = W(IWWRK)+FLOAT(IWWRK-1)
|
|
493
|
+
IERROR = IERR1
|
|
494
|
+
101 CONTINUE
|
|
495
|
+
RETURN
|
|
496
|
+
END
|
|
497
|
+
SUBROUTINE HSTCS1 (INTL,A,B,M,MBDCND,BDA,BDB,C,D,N,NBDCND,BDC,
|
|
498
|
+
1 BDD,ELMBDA,F,IDIMF,PERTRB,IERR1,AM,BM,CM,AN,
|
|
499
|
+
2 BN,CN,SNTH,RSQ,WRK)
|
|
500
|
+
DIMENSION BDA(*) ,BDB(*) ,BDC(*) ,BDD(*) ,
|
|
501
|
+
1 F(IDIMF,1) ,AM(*) ,BM(*) ,CM(*) ,
|
|
502
|
+
2 AN(*) ,BN(*) ,CN(*) ,SNTH(*) ,
|
|
503
|
+
3 RSQ(*) ,WRK(*)
|
|
504
|
+
DTH = (B-A)/FLOAT(M)
|
|
505
|
+
DTHSQ = DTH*DTH
|
|
506
|
+
DO 101 I=1,M
|
|
507
|
+
SNTH(I) = SIN(A+(FLOAT(I)-0.5)*DTH)
|
|
508
|
+
101 CONTINUE
|
|
509
|
+
DR = (D-C)/FLOAT(N)
|
|
510
|
+
DO 102 J=1,N
|
|
511
|
+
RSQ(J) = (C+(FLOAT(J)-0.5)*DR)**2
|
|
512
|
+
102 CONTINUE
|
|
513
|
+
C
|
|
514
|
+
C MULTIPLY RIGHT SIDE BY R(J)**2
|
|
515
|
+
C
|
|
516
|
+
DO 104 J=1,N
|
|
517
|
+
X = RSQ(J)
|
|
518
|
+
DO 103 I=1,M
|
|
519
|
+
F(I,J) = X*F(I,J)
|
|
520
|
+
103 CONTINUE
|
|
521
|
+
104 CONTINUE
|
|
522
|
+
C
|
|
523
|
+
C DEFINE COEFFICIENTS AM,BM,CM
|
|
524
|
+
C
|
|
525
|
+
X = 1./(2.*COS(DTH/2.))
|
|
526
|
+
DO 105 I=2,M
|
|
527
|
+
AM(I) = (SNTH(I-1)+SNTH(I))*X
|
|
528
|
+
CM(I-1) = AM(I)
|
|
529
|
+
105 CONTINUE
|
|
530
|
+
AM(1) = SIN(A)
|
|
531
|
+
CM(M) = SIN(B)
|
|
532
|
+
DO 106 I=1,M
|
|
533
|
+
X = 1./SNTH(I)
|
|
534
|
+
Y = X/DTHSQ
|
|
535
|
+
AM(I) = AM(I)*Y
|
|
536
|
+
CM(I) = CM(I)*Y
|
|
537
|
+
BM(I) = ELMBDA*X*X-AM(I)-CM(I)
|
|
538
|
+
106 CONTINUE
|
|
539
|
+
C
|
|
540
|
+
C DEFINE COEFFICIENTS AN,BN,CN
|
|
541
|
+
C
|
|
542
|
+
X = C/DR
|
|
543
|
+
DO 107 J=1,N
|
|
544
|
+
AN(J) = (X+FLOAT(J-1))**2
|
|
545
|
+
CN(J) = (X+FLOAT(J))**2
|
|
546
|
+
BN(J) = -(AN(J)+CN(J))
|
|
547
|
+
107 CONTINUE
|
|
548
|
+
ISW = 1
|
|
549
|
+
NB = NBDCND
|
|
550
|
+
IF (C.EQ.0. .AND. NB.EQ.2) NB = 6
|
|
551
|
+
C
|
|
552
|
+
C ENTER DATA ON THETA BOUNDARIES
|
|
553
|
+
C
|
|
554
|
+
GO TO (108,108,110,110,112,112,108,110,112),MBDCND
|
|
555
|
+
108 BM(1) = BM(1)-AM(1)
|
|
556
|
+
X = 2.*AM(1)
|
|
557
|
+
DO 109 J=1,N
|
|
558
|
+
F(1,J) = F(1,J)-X*BDA(J)
|
|
559
|
+
109 CONTINUE
|
|
560
|
+
GO TO 112
|
|
561
|
+
110 BM(1) = BM(1)+AM(1)
|
|
562
|
+
X = DTH*AM(1)
|
|
563
|
+
DO 111 J=1,N
|
|
564
|
+
F(1,J) = F(1,J)+X*BDA(J)
|
|
565
|
+
111 CONTINUE
|
|
566
|
+
112 CONTINUE
|
|
567
|
+
GO TO (113,115,115,113,113,115,117,117,117),MBDCND
|
|
568
|
+
113 BM(M) = BM(M)-CM(M)
|
|
569
|
+
X = 2.*CM(M)
|
|
570
|
+
DO 114 J=1,N
|
|
571
|
+
F(M,J) = F(M,J)-X*BDB(J)
|
|
572
|
+
114 CONTINUE
|
|
573
|
+
GO TO 117
|
|
574
|
+
115 BM(M) = BM(M)+CM(M)
|
|
575
|
+
X = DTH*CM(M)
|
|
576
|
+
DO 116 J=1,N
|
|
577
|
+
F(M,J) = F(M,J)-X*BDB(J)
|
|
578
|
+
116 CONTINUE
|
|
579
|
+
117 CONTINUE
|
|
580
|
+
C
|
|
581
|
+
C ENTER DATA ON R BOUNDARIES
|
|
582
|
+
C
|
|
583
|
+
GO TO (118,118,120,120,122,122),NB
|
|
584
|
+
118 BN(1) = BN(1)-AN(1)
|
|
585
|
+
X = 2.*AN(1)
|
|
586
|
+
DO 119 I=1,M
|
|
587
|
+
F(I,1) = F(I,1)-X*BDC(I)
|
|
588
|
+
119 CONTINUE
|
|
589
|
+
GO TO 122
|
|
590
|
+
120 BN(1) = BN(1)+AN(1)
|
|
591
|
+
X = DR*AN(1)
|
|
592
|
+
DO 121 I=1,M
|
|
593
|
+
F(I,1) = F(I,1)+X*BDC(I)
|
|
594
|
+
121 CONTINUE
|
|
595
|
+
122 CONTINUE
|
|
596
|
+
GO TO (123,125,125,123,123,125),NB
|
|
597
|
+
123 BN(N) = BN(N)-CN(N)
|
|
598
|
+
X = 2.*CN(N)
|
|
599
|
+
DO 124 I=1,M
|
|
600
|
+
F(I,N) = F(I,N)-X*BDD(I)
|
|
601
|
+
124 CONTINUE
|
|
602
|
+
GO TO 127
|
|
603
|
+
125 BN(N) = BN(N)+CN(N)
|
|
604
|
+
X = DR*CN(N)
|
|
605
|
+
DO 126 I=1,M
|
|
606
|
+
F(I,N) = F(I,N)-X*BDD(I)
|
|
607
|
+
126 CONTINUE
|
|
608
|
+
127 CONTINUE
|
|
609
|
+
C
|
|
610
|
+
C CHECK FOR SINGULAR PROBLEM. IF SINGULAR, PERTURB F.
|
|
611
|
+
C
|
|
612
|
+
PERTRB = 0.
|
|
613
|
+
GO TO (137,137,128,137,137,128,137,128,128),MBDCND
|
|
614
|
+
128 GO TO (137,137,129,137,137,129),NB
|
|
615
|
+
129 IF (ELMBDA) 137,131,130
|
|
616
|
+
130 IERR1 = 10
|
|
617
|
+
GO TO 137
|
|
618
|
+
131 CONTINUE
|
|
619
|
+
ISW = 2
|
|
620
|
+
DO 133 I=1,M
|
|
621
|
+
X = 0.
|
|
622
|
+
DO 132 J=1,N
|
|
623
|
+
X = X+F(I,J)
|
|
624
|
+
132 CONTINUE
|
|
625
|
+
PERTRB = PERTRB+X*SNTH(I)
|
|
626
|
+
133 CONTINUE
|
|
627
|
+
X = 0.
|
|
628
|
+
DO 134 J=1,N
|
|
629
|
+
X = X+RSQ(J)
|
|
630
|
+
134 CONTINUE
|
|
631
|
+
PERTRB = 2.*(PERTRB*SIN(DTH/2.))/(X*(COS(A)-COS(B)))
|
|
632
|
+
DO 136 J=1,N
|
|
633
|
+
X = RSQ(J)*PERTRB
|
|
634
|
+
DO 135 I=1,M
|
|
635
|
+
F(I,J) = F(I,J)-X
|
|
636
|
+
135 CONTINUE
|
|
637
|
+
136 CONTINUE
|
|
638
|
+
137 CONTINUE
|
|
639
|
+
A2 = 0.
|
|
640
|
+
DO 138 I=1,M
|
|
641
|
+
A2 = A2+F(I,1)
|
|
642
|
+
138 CONTINUE
|
|
643
|
+
A2 = A2/RSQ(1)
|
|
644
|
+
C
|
|
645
|
+
C INITIALIZE BLKTRI
|
|
646
|
+
C
|
|
647
|
+
IF (INTL .NE. 0) GO TO 139
|
|
648
|
+
CALL BLKTRI (0,1,N,AN,BN,CN,1,M,AM,BM,CM,IDIMF,F,IERR1,WRK)
|
|
649
|
+
139 CONTINUE
|
|
650
|
+
C
|
|
651
|
+
C CALL BLKTRI TO SOLVE SYSTEM OF EQUATIONS.
|
|
652
|
+
C
|
|
653
|
+
CALL BLKTRI (1,1,N,AN,BN,CN,1,M,AM,BM,CM,IDIMF,F,IERR1,WRK)
|
|
654
|
+
IF (ISW.NE.2 .OR. C.NE.0. .OR. NBDCND.NE.2) GO TO 143
|
|
655
|
+
A1 = 0.
|
|
656
|
+
A3 = 0.
|
|
657
|
+
DO 140 I=1,M
|
|
658
|
+
A1 = A1+SNTH(I)*F(I,1)
|
|
659
|
+
A3 = A3+SNTH(I)
|
|
660
|
+
140 CONTINUE
|
|
661
|
+
A1 = A1+RSQ(1)*A2/2.
|
|
662
|
+
IF (MBDCND .EQ. 3)
|
|
663
|
+
1 A1 = A1+(SIN(B)*BDB(1)-SIN(A)*BDA(1))/(2.*(B-A))
|
|
664
|
+
A1 = A1/A3
|
|
665
|
+
A1 = BDC(1)-A1
|
|
666
|
+
DO 142 I=1,M
|
|
667
|
+
DO 141 J=1,N
|
|
668
|
+
F(I,J) = F(I,J)+A1
|
|
669
|
+
141 CONTINUE
|
|
670
|
+
142 CONTINUE
|
|
671
|
+
143 CONTINUE
|
|
672
|
+
RETURN
|
|
673
|
+
C
|
|
674
|
+
C REVISION HISTORY---
|
|
675
|
+
C
|
|
676
|
+
C SEPTEMBER 1973 VERSION 1
|
|
677
|
+
C APRIL 1976 VERSION 2
|
|
678
|
+
C JANUARY 1978 VERSION 3
|
|
679
|
+
C DECEMBER 1979 VERSION 3.1
|
|
680
|
+
C FEBRUARY 1985 DOCUMENTATION UPGRADE
|
|
681
|
+
C NOVEMBER 1988 VERSION 3.2, FORTRAN 77 CHANGES
|
|
682
|
+
C-----------------------------------------------------------------------
|
|
683
|
+
END
|