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,728 @@
|
|
|
1
|
+
C
|
|
2
|
+
C file hwscsp.f
|
|
3
|
+
C
|
|
4
|
+
SUBROUTINE HWSCSP (INTL,TS,TF,M,MBDCND,BDTS,BDTF,RS,RF,N,NBDCND,
|
|
5
|
+
1 BDRS,BDRF,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 BDTS(N+1), BDTF(N+1), BDRS(M+1), BDRF(M+1),
|
|
40
|
+
C ARGUMENTS F(IDIMF,N+1), W(SEE ARGUMENT LIST)
|
|
41
|
+
C
|
|
42
|
+
C LATEST REVISION NOVEMBER 1988
|
|
43
|
+
C
|
|
44
|
+
C PURPOSE SOLVES A FINITE DIFFERENCE APPROXIMATION
|
|
45
|
+
C TO THE MODIFIED HELMHOLTZ EQUATION IN
|
|
46
|
+
C SPHERICAL COORDINATES ASSUMING AXISYMMETRY
|
|
47
|
+
C (NO DEPENDENCE ON LONGITUDE). THE EQUATION
|
|
48
|
+
C IS
|
|
49
|
+
C
|
|
50
|
+
C (1/R**2)(D/DR)((R**2)(D/DR)U) +
|
|
51
|
+
C
|
|
52
|
+
C (1/(R**2)SIN(THETA))(D/DTHETA)
|
|
53
|
+
C
|
|
54
|
+
C (SIN(THETA)(D/DTHETA)U) +
|
|
55
|
+
C
|
|
56
|
+
C (LAMBDA/(RSIN(THETA))**2)U = F(THETA,R).
|
|
57
|
+
C
|
|
58
|
+
C THIS TWO DIMENSIONAL MODIFIED HELMHOLTZ
|
|
59
|
+
C EQUATION RESULTS FROM THE FOURIER TRANSFORM
|
|
60
|
+
C OF THE THREE DIMENSIONAL POISSON EQUATION.
|
|
61
|
+
C
|
|
62
|
+
C USAGE CALL HWSCSP (INTL,TS,TF,M,MBDCND,BDTS,BDTF,
|
|
63
|
+
C RS,RF,N,NBDCND,BDRS,BDRF,ELMBDA,
|
|
64
|
+
C F,IDIMF,PERTRB,IERROR,W)
|
|
65
|
+
C
|
|
66
|
+
C ARGUMENTS
|
|
67
|
+
C ON INPUT INTL
|
|
68
|
+
C = 0 ON INITIAL ENTRY TO HWSCSP OR IF ANY
|
|
69
|
+
C OF THE ARGUMENTS RS, RF, N, NBDCND
|
|
70
|
+
C ARE CHANGED FROM A PREVIOUS CALL.
|
|
71
|
+
C = 1 IF RS, RF, N, NBDCND ARE ALL UNCHANGED
|
|
72
|
+
C FROM PREVIOUS CALL TO HWSCSP.
|
|
73
|
+
C
|
|
74
|
+
C NOTE:
|
|
75
|
+
C A CALL WITH INTL=0 TAKES APPROXIMATELY
|
|
76
|
+
C 1.5 TIMES AS MUCH TIME AS A CALL WITH
|
|
77
|
+
C INTL = 1 . ONCE A CALL WITH INTL = 0
|
|
78
|
+
C HAS BEEN MADE THEN SUBSEQUENT SOLUTIONS
|
|
79
|
+
C CORRESPONDING TO DIFFERENT F, BDTS, BDTF,
|
|
80
|
+
C BDRS, BDRF CAN BE OBTAINED FASTER WITH
|
|
81
|
+
C INTL = 1 SINCE INITIALIZATION IS NOT
|
|
82
|
+
C REPEATED.
|
|
83
|
+
C
|
|
84
|
+
C TS,TF
|
|
85
|
+
C THE RANGE OF THETA (COLATITUDE), I.E.,
|
|
86
|
+
C TS .LE. THETA .LE. TF. TS MUST BE LESS
|
|
87
|
+
C THAN TF. TS AND TF ARE IN RADIANS. A TS OF
|
|
88
|
+
C ZERO CORRESPONDS TO THE NORTH POLE AND A
|
|
89
|
+
C TF OF PI CORRESPONDS TO THE SOUTH POLE.
|
|
90
|
+
C
|
|
91
|
+
C **** IMPORTANT ****
|
|
92
|
+
C
|
|
93
|
+
C IF TF IS EQUAL TO PI THEN IT MUST BE
|
|
94
|
+
C COMPUTED USING THE STATEMENT
|
|
95
|
+
C TF = PIMACH(DUM). THIS INSURES THAT TF
|
|
96
|
+
C IN THE USER'S PROGRAM IS EQUAL TO PI IN
|
|
97
|
+
C THIS PROGRAM WHICH PERMITS SEVERAL TESTS
|
|
98
|
+
C OF THE INPUT PARAMETERS THAT OTHERWISE
|
|
99
|
+
C WOULD NOT BE POSSIBLE.
|
|
100
|
+
C
|
|
101
|
+
C M
|
|
102
|
+
C THE NUMBER OF PANELS INTO WHICH THE
|
|
103
|
+
C INTERVAL (TS,TF) IS SUBDIVIDED.
|
|
104
|
+
C HENCE, THERE WILL BE M+1 GRID POINTS
|
|
105
|
+
C IN THE THETA-DIRECTION GIVEN BY
|
|
106
|
+
C THETA(K) = (I-1)DTHETA+TS FOR
|
|
107
|
+
C I = 1,2,...,M+1, WHERE DTHETA = (TF-TS)/M
|
|
108
|
+
C IS THE PANEL WIDTH.
|
|
109
|
+
C
|
|
110
|
+
C MBDCND
|
|
111
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITION
|
|
112
|
+
C AT THETA = TS AND THETA = TF.
|
|
113
|
+
C
|
|
114
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
115
|
+
C THETA = TS AND THETA = TF.
|
|
116
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
117
|
+
C THETA = TS AND THE DERIVATIVE OF THE
|
|
118
|
+
C SOLUTION WITH RESPECT TO THETA IS
|
|
119
|
+
C SPECIFIED AT THETA = TF
|
|
120
|
+
C (SEE NOTE 2 BELOW).
|
|
121
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
122
|
+
C WITH RESPECT TO THETA IS SPECIFIED
|
|
123
|
+
C AT THETA = TS AND THETA = TF
|
|
124
|
+
C (SEE NOTES 1,2 BELOW).
|
|
125
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
126
|
+
C WITH RESPECT TO THETA IS SPECIFIED
|
|
127
|
+
C AT THETA = TS (SEE NOTE 1 BELOW) AND
|
|
128
|
+
C SOLUTION IS SPECIFIED AT THETA = TF.
|
|
129
|
+
C = 5 IF THE SOLUTION IS UNSPECIFIED AT
|
|
130
|
+
C THETA = TS = 0 AND THE SOLUTION IS
|
|
131
|
+
C SPECIFIED AT THETA = TF.
|
|
132
|
+
C = 6 IF THE SOLUTION IS UNSPECIFIED AT
|
|
133
|
+
C THETA = TS = 0 AND THE DERIVATIVE
|
|
134
|
+
C OF THE SOLUTION WITH RESPECT TO THETA
|
|
135
|
+
C IS SPECIFIED AT THETA = TF
|
|
136
|
+
C (SEE NOTE 2 BELOW).
|
|
137
|
+
C = 7 IF THE SOLUTION IS SPECIFIED AT
|
|
138
|
+
C THETA = TS AND THE SOLUTION IS
|
|
139
|
+
C UNSPECIFIED AT THETA = TF = PI.
|
|
140
|
+
C = 8 IF THE DERIVATIVE OF THE SOLUTION
|
|
141
|
+
C WITH RESPECT TO THETA IS SPECIFIED
|
|
142
|
+
C AT THETA = TS (SEE NOTE 1 BELOW)
|
|
143
|
+
C AND THE SOLUTION IS UNSPECIFIED AT
|
|
144
|
+
C THETA = TF = PI.
|
|
145
|
+
C = 9 IF THE SOLUTION IS UNSPECIFIED AT
|
|
146
|
+
C THETA = TS = 0 AND THETA = TF = PI.
|
|
147
|
+
C
|
|
148
|
+
C NOTE 1:
|
|
149
|
+
C IF TS = 0, DO NOT USE MBDCND = 3,4, OR 8,
|
|
150
|
+
C BUT INSTEAD USE MBDCND = 5,6, OR 9 .
|
|
151
|
+
C
|
|
152
|
+
C NOTE 2:
|
|
153
|
+
C IF TF = PI, DO NOT USE MBDCND = 2,3, OR 6,
|
|
154
|
+
C BUT INSTEAD USE MBDCND = 7,8, OR 9 .
|
|
155
|
+
C
|
|
156
|
+
C BDTS
|
|
157
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH N+1 THAT
|
|
158
|
+
C SPECIFIES THE VALUES OF THE DERIVATIVE OF
|
|
159
|
+
C THE SOLUTION WITH RESPECT TO THETA AT
|
|
160
|
+
C THETA = TS. WHEN MBDCND = 3,4, OR 8,
|
|
161
|
+
C
|
|
162
|
+
C BDTS(J) = (D/DTHETA)U(TS,R(J)),
|
|
163
|
+
C J = 1,2,...,N+1 .
|
|
164
|
+
C
|
|
165
|
+
C WHEN MBDCND HAS ANY OTHER VALUE, BDTS IS
|
|
166
|
+
C A DUMMY VARIABLE.
|
|
167
|
+
C
|
|
168
|
+
C BDTF
|
|
169
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH N+1 THAT
|
|
170
|
+
C SPECIFIES THE VALUES OF THE DERIVATIVE OF
|
|
171
|
+
C THE SOLUTION WITH RESPECT TO THETA AT
|
|
172
|
+
C THETA = TF. WHEN MBDCND = 2,3, OR 6,
|
|
173
|
+
C
|
|
174
|
+
C BDTF(J) = (D/DTHETA)U(TF,R(J)),
|
|
175
|
+
C J = 1,2,...,N+1 .
|
|
176
|
+
C
|
|
177
|
+
C WHEN MBDCND HAS ANY OTHER VALUE, BDTF IS
|
|
178
|
+
C A DUMMY VARIABLE.
|
|
179
|
+
C
|
|
180
|
+
C RS,RF
|
|
181
|
+
C THE RANGE OF R, I.E., RS .LE. R .LT. RF.
|
|
182
|
+
C RS MUST BE LESS THAN RF. RS MUST BE
|
|
183
|
+
C NON-NEGATIVE.
|
|
184
|
+
C
|
|
185
|
+
C N
|
|
186
|
+
C THE NUMBER OF PANELS INTO WHICH THE
|
|
187
|
+
C INTERVAL (RS,RF) IS SUBDIVIDED.
|
|
188
|
+
C HENCE, THERE WILL BE N+1 GRID POINTS IN THE
|
|
189
|
+
C R-DIRECTION GIVEN BY R(J) = (J-1)DR+RS
|
|
190
|
+
C FOR J = 1,2,...,N+1, WHERE DR = (RF-RS)/N
|
|
191
|
+
C IS THE PANEL WIDTH.
|
|
192
|
+
C N MUST BE GREATER THAN 2
|
|
193
|
+
C
|
|
194
|
+
C NBDCND
|
|
195
|
+
C INDICATES THE TYPE OF BOUNDARY CONDITION
|
|
196
|
+
C AT R = RS AND R = RF.
|
|
197
|
+
C
|
|
198
|
+
C = 1 IF THE SOLUTION IS SPECIFIED AT
|
|
199
|
+
C R = RS AND R = RF.
|
|
200
|
+
C = 2 IF THE SOLUTION IS SPECIFIED AT
|
|
201
|
+
C R = RS AND THE DERIVATIVE
|
|
202
|
+
C OF THE SOLUTION WITH RESPECT TO R
|
|
203
|
+
C IS SPECIFIED AT R = RF.
|
|
204
|
+
C = 3 IF THE DERIVATIVE OF THE SOLUTION
|
|
205
|
+
C WITH RESPECT TO R IS SPECIFIED AT
|
|
206
|
+
C R = RS AND R = RF.
|
|
207
|
+
C = 4 IF THE DERIVATIVE OF THE SOLUTION
|
|
208
|
+
C WITH RESPECT TO R IS SPECIFIED AT
|
|
209
|
+
C RS AND THE SOLUTION IS SPECIFIED AT
|
|
210
|
+
C R = RF.
|
|
211
|
+
C = 5 IF THE SOLUTION IS UNSPECIFIED AT
|
|
212
|
+
C R = RS = 0 (SEE NOTE BELOW) AND THE
|
|
213
|
+
C SOLUTION IS SPECIFIED AT R = RF.
|
|
214
|
+
C = 6 IF THE SOLUTION IS UNSPECIFIED AT
|
|
215
|
+
C R = RS = 0 (SEE NOTE BELOW) AND THE
|
|
216
|
+
C DERIVATIVE OF THE SOLUTION WITH
|
|
217
|
+
C RESPECT TO R IS SPECIFIED AT R = RF.
|
|
218
|
+
C
|
|
219
|
+
C NOTE:
|
|
220
|
+
C NBDCND = 5 OR 6 CANNOT BE USED WITH
|
|
221
|
+
C MBDCND = 1,2,4,5, OR 7. THE FORMER
|
|
222
|
+
C INDICATES THAT THE SOLUTION IS UNSPECIFIED
|
|
223
|
+
C AT R = 0, THE LATTER INDICATES THAT THE
|
|
224
|
+
C SOLUTION IS SPECIFIED).
|
|
225
|
+
C USE INSTEAD NBDCND = 1 OR 2 .
|
|
226
|
+
C
|
|
227
|
+
C BDRS
|
|
228
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH M+1 THAT
|
|
229
|
+
C SPECIFIES THE VALUES OF THE DERIVATIVE OF
|
|
230
|
+
C THE SOLUTION WITH RESPECT TO R AT R = RS.
|
|
231
|
+
C
|
|
232
|
+
C WHEN NBDCND = 3 OR 4,
|
|
233
|
+
C BDRS(I) = (D/DR)U(THETA(I),RS),
|
|
234
|
+
C I = 1,2,...,M+1 .
|
|
235
|
+
C
|
|
236
|
+
C WHEN NBDCND HAS ANY OTHER VALUE, BDRS IS
|
|
237
|
+
C A DUMMY VARIABLE.
|
|
238
|
+
C
|
|
239
|
+
C BDRF
|
|
240
|
+
C A ONE-DIMENSIONAL ARRAY OF LENGTH M+1
|
|
241
|
+
C THAT SPECIFIES THE VALUES OF THE
|
|
242
|
+
C DERIVATIVE OF THE SOLUTION WITH RESPECT
|
|
243
|
+
C TO R AT R = RF.
|
|
244
|
+
C
|
|
245
|
+
C WHEN NBDCND = 2,3, OR 6,
|
|
246
|
+
C BDRF(I) = (D/DR)U(THETA(I),RF),
|
|
247
|
+
C I = 1,2,...,M+1 .
|
|
248
|
+
C
|
|
249
|
+
C WHEN NBDCND HAS ANY OTHER VALUE, BDRF IS
|
|
250
|
+
C A DUMMY VARIABLE.
|
|
251
|
+
C
|
|
252
|
+
C ELMBDA
|
|
253
|
+
C THE CONSTANT LAMBDA IN THE HELMHOLTZ
|
|
254
|
+
C EQUATION. IF LAMBDA .GT. 0, A SOLUTION
|
|
255
|
+
C MAY NOT EXIST. HOWEVER, HWSCSP WILL
|
|
256
|
+
C ATTEMPT TO FIND A SOLUTION. IF NBDCND = 5
|
|
257
|
+
C OR 6 OR MBDCND = 5,6,7,8, OR 9, ELMBDA
|
|
258
|
+
C MUST BE ZERO.
|
|
259
|
+
C
|
|
260
|
+
C F
|
|
261
|
+
C A TWO-DIMENSIONAL ARRAY, OF DIMENSION AT
|
|
262
|
+
C LEAST (M+1)*(N+1), SPECIFYING VALUES OF THE
|
|
263
|
+
C RIGHT SIDE OF THE HELMHOLTZ EQUATION AND
|
|
264
|
+
C BOUNDARY VALUES (IF ANY).
|
|
265
|
+
C
|
|
266
|
+
C ON THE INTERIOR, F IS DEFINED AS FOLLOWS:
|
|
267
|
+
C FOR I = 2,3,...,M AND J = 2,3,...,N
|
|
268
|
+
C F(I,J) = F(THETA(I),R(J)).
|
|
269
|
+
C
|
|
270
|
+
C ON THE BOUNDARIES, F IS DEFINED AS FOLLOWS:
|
|
271
|
+
C FOR J=1,2,...,N+1, I=1,2,...,M+1,
|
|
272
|
+
C
|
|
273
|
+
C MBDCND F(1,J) F(M+1,J)
|
|
274
|
+
C ------ ---------- ----------
|
|
275
|
+
C
|
|
276
|
+
C 1 U(TS,R(J)) U(TF,R(J))
|
|
277
|
+
C 2 U(TS,R(J)) F(TF,R(J))
|
|
278
|
+
C 3 F(TS,R(J)) F(TF,R(J))
|
|
279
|
+
C 4 F(TS,R(J)) U(TF,R(J))
|
|
280
|
+
C 5 F(0,R(J)) U(TF,R(J))
|
|
281
|
+
C 6 F(0,R(J)) F(TF,R(J))
|
|
282
|
+
C 7 U(TS,R(J)) F(PI,R(J))
|
|
283
|
+
C 8 F(TS,R(J)) F(PI,R(J))
|
|
284
|
+
C 9 F(0,R(J)) F(PI,R(J))
|
|
285
|
+
C
|
|
286
|
+
C NBDCND F(I,1) F(I,N+1)
|
|
287
|
+
C ------ -------------- --------------
|
|
288
|
+
C
|
|
289
|
+
C 1 U(THETA(I),RS) U(THETA(I),RF)
|
|
290
|
+
C 2 U(THETA(I),RS) F(THETA(I),RF)
|
|
291
|
+
C 3 F(THETA(I),RS) F(THETA(I),RF)
|
|
292
|
+
C 4 F(THETA(I),RS) U(THETA(I),RF)
|
|
293
|
+
C 5 F(TS,0) U(THETA(I),RF)
|
|
294
|
+
C 6 F(TS,0) F(THETA(I),RF)
|
|
295
|
+
C
|
|
296
|
+
C NOTE:
|
|
297
|
+
C IF THE TABLE CALLS FOR BOTH THE SOLUTION
|
|
298
|
+
C U AND THE RIGHT SIDE F AT A CORNER THEN
|
|
299
|
+
C THE SOLUTION MUST BE SPECIFIED.
|
|
300
|
+
C
|
|
301
|
+
C IDIMF
|
|
302
|
+
C THE ROW (OR FIRST) DIMENSION OF THE ARRAY
|
|
303
|
+
C F AS IT APPEARS IN THE PROGRAM CALLING
|
|
304
|
+
C HWSCSP. THIS PARAMETER IS USED TO SPECIFY
|
|
305
|
+
C THE VARIABLE DIMENSION OF F. IDIMF MUST
|
|
306
|
+
C BE AT LEAST M+1 .
|
|
307
|
+
C
|
|
308
|
+
C W
|
|
309
|
+
C A ONE-DIMENSIONAL ARRAY THAT MUST BE
|
|
310
|
+
C PROVIDED BY THE USER FOR WORK SPACE.
|
|
311
|
+
C ITS LENGTH CAN BE COMPUTED FROM THE
|
|
312
|
+
C FORMULA BELOW WHICH DEPENDS ON THE VALUE
|
|
313
|
+
C OF NBDCND
|
|
314
|
+
C
|
|
315
|
+
C IF NBDCND=2,4 OR 6 DEFINE NUNK=N
|
|
316
|
+
C IF NBDCND=1 OR 5 DEFINE NUNK=N-1
|
|
317
|
+
C IF NBDCND=3 DEFINE NUNK=N+1
|
|
318
|
+
C
|
|
319
|
+
C NOW SET K=INT(LOG2(NUNK))+1 AND
|
|
320
|
+
C L=2**(K+1) THEN W MUST BE DIMENSIONED
|
|
321
|
+
C AT LEAST (K-2)*L+K+5*(M+N)+MAX(2*N,6*M)+23
|
|
322
|
+
C
|
|
323
|
+
C **IMPORTANT**
|
|
324
|
+
C FOR PURPOSES OF CHECKING, THE REQUIRED
|
|
325
|
+
C LENGTH OF W IS COMPUTED BY HWSCSP AND
|
|
326
|
+
C STORED IN W(1) IN FLOATING POINT FORMAT.
|
|
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)), I = 1,2,...,M+1,
|
|
332
|
+
C J = 1,2,...,N+1 .
|
|
333
|
+
C
|
|
334
|
+
C PERTRB
|
|
335
|
+
C IF A COMBINATION OF PERIODIC OR DERIVATIVE
|
|
336
|
+
C BOUNDARY CONDITIONS IS SPECIFIED FOR A
|
|
337
|
+
C POISSON EQUATION (LAMBDA = 0), A SOLUTION
|
|
338
|
+
C MAY NOT EXIST. PERTRB IS A CONSTANT,
|
|
339
|
+
C CALCULATED AND SUBTRACTED FROM F, WHICH
|
|
340
|
+
C ENSURES THAT A SOLUTION EXISTS. HWSCSP
|
|
341
|
+
C THEN COMPUTES THIS SOLUTION, WHICH IS A
|
|
342
|
+
C LEAST SQUARES SOLUTION TO THE ORIGINAL
|
|
343
|
+
C APPROXIMATION. THIS SOLUTION IS NOT UNIQUE
|
|
344
|
+
C AND IS UNNORMALIZED. THE VALUE OF PERTRB
|
|
345
|
+
C SHOULD BE SMALL COMPARED TO THE RIGHT SIDE
|
|
346
|
+
C F. OTHERWISE , A SOLUTION IS OBTAINED TO
|
|
347
|
+
C AN ESSENTIALLY DIFFERENT PROBLEM. THIS
|
|
348
|
+
C COMPARISON SHOULD ALWAYS BE MADE TO INSURE
|
|
349
|
+
C THAT A MEANINGFUL 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 10,
|
|
354
|
+
C A SOLUTION IS NOT ATTEMPTED.
|
|
355
|
+
C
|
|
356
|
+
C = 1 TS.LT.0. OR TF.GT.PI
|
|
357
|
+
C = 2 TS.GE.TF
|
|
358
|
+
C = 3 M.LT.5
|
|
359
|
+
C = 4 MBDCND.LT.1 OR MBDCND.GT.9
|
|
360
|
+
C = 5 RS.LT.0
|
|
361
|
+
C = 6 RS.GE.RF
|
|
362
|
+
C = 7 N.LT.5
|
|
363
|
+
C = 8 NBDCND.LT.1 OR NBDCND.GT.6
|
|
364
|
+
C = 9 ELMBDA.GT.0
|
|
365
|
+
C = 10 IDIMF.LT.M+1
|
|
366
|
+
C = 11 ELMBDA.NE.0 AND MBDCND.GE.5
|
|
367
|
+
C = 12 ELMBDA.NE.0 AND NBDCND EQUALS 5 OR 6
|
|
368
|
+
C = 13 MBDCND EQUALS 5,6 OR 9 AND TS.NE.0
|
|
369
|
+
C = 14 MBDCND.GE.7 AND TF.NE.PI
|
|
370
|
+
C = 15 TS.EQ.0 AND MBDCND EQUALS 3,4 OR 8
|
|
371
|
+
C = 16 TF.EQ.PI AND MBDCND EQUALS 2,3 OR 6
|
|
372
|
+
C = 17 NBDCND.GE.5 AND RS.NE.0
|
|
373
|
+
C = 18 NBDCND.GE.5 AND MBDCND EQUALS 1,2,4,5 OR
|
|
374
|
+
C
|
|
375
|
+
C SINCE THIS IS THE ONLY MEANS OF INDICATING
|
|
376
|
+
C A POSSLIBY INCORRECT CALL TO HWSCSP, THE
|
|
377
|
+
C USER SHOULD TEST IERROR AFTER A CALL.
|
|
378
|
+
C
|
|
379
|
+
C W
|
|
380
|
+
C CONTAINS INTERMEDIATE VALUES THAT MUST NOT
|
|
381
|
+
C BE DESTROYED IF HWSCSP WILL BE CALLED AGAIN
|
|
382
|
+
C WITH INTL = 1. W(1) CONTAINS THE NUMBER
|
|
383
|
+
C OF LOCATIONS WHICH W MUST HAVE
|
|
384
|
+
C
|
|
385
|
+
C SPECIAL CONDITIONS NONE
|
|
386
|
+
C
|
|
387
|
+
C I/O NONE
|
|
388
|
+
C
|
|
389
|
+
C PRECISION SINGLE
|
|
390
|
+
C
|
|
391
|
+
C REQUIRED LIBRARY BLKTRI, AND COMF FROM FISHPACK
|
|
392
|
+
C FILES
|
|
393
|
+
C
|
|
394
|
+
C LANGUAGE FORTRAN
|
|
395
|
+
C
|
|
396
|
+
C HISTORY WRITTEN BY ROLAND SWEET AT NCAR IN THE LATE
|
|
397
|
+
C 1970'S. RELEASED ON NCAR'S PUBLIC SOFTWARE
|
|
398
|
+
C LIBRARIES IN JANUARY 1980.
|
|
399
|
+
C
|
|
400
|
+
C PORTABILITY FORTRAN 77.
|
|
401
|
+
C
|
|
402
|
+
C ALGORITHM THE ROUTINE DEFINES THE FINITE DIFFERENCE
|
|
403
|
+
C EQUATIONS, INCORPORATES BOUNDARY DATA, AND
|
|
404
|
+
C ADJUSTS THE RIGHT SIDE OF SINGULAR SYSTEMS
|
|
405
|
+
C AND THEN CALLS BLKTRI TO SOLVE THE SYSTEM.
|
|
406
|
+
C
|
|
407
|
+
C REFERENCES SWARZTRAUBER,P. AND R. SWEET, "EFFICIENT
|
|
408
|
+
C FORTRAN SUBPROGRAMS FOR THE SOLUTION OF
|
|
409
|
+
C ELLIPTIC EQUATIONS"
|
|
410
|
+
C NCAR TN/IA-109, JULY, 1975, 138 PP.
|
|
411
|
+
C***********************************************************************
|
|
412
|
+
DIMENSION F(IDIMF,1) ,BDTS(*) ,BDTF(*) ,BDRS(*) ,
|
|
413
|
+
1 BDRF(*) ,W(*)
|
|
414
|
+
C
|
|
415
|
+
PI = PIMACH(DUM)
|
|
416
|
+
IERROR = 0
|
|
417
|
+
IF (TS.LT.0. .OR. TF.GT.PI) IERROR = 1
|
|
418
|
+
IF (TS .GE. TF) IERROR = 2
|
|
419
|
+
IF (M .LT. 5) IERROR = 3
|
|
420
|
+
IF (MBDCND.LT.1 .OR. MBDCND.GT.9) IERROR = 4
|
|
421
|
+
IF (RS .LT. 0.) IERROR = 5
|
|
422
|
+
IF (RS .GE. RF) IERROR = 6
|
|
423
|
+
IF (N .LT. 5) IERROR = 7
|
|
424
|
+
IF (NBDCND.LT.1 .OR. NBDCND.GT.6) IERROR = 8
|
|
425
|
+
IF (ELMBDA .GT. 0.) IERROR = 9
|
|
426
|
+
IF (IDIMF .LT. M+1) IERROR = 10
|
|
427
|
+
IF (ELMBDA.NE.0. .AND. MBDCND.GE.5) IERROR = 11
|
|
428
|
+
IF (ELMBDA.NE.0. .AND. (NBDCND.EQ.5 .OR. NBDCND.EQ.6)) IERROR = 12
|
|
429
|
+
IF ((MBDCND.EQ.5 .OR. MBDCND.EQ.6 .OR. MBDCND.EQ.9) .AND.
|
|
430
|
+
1 TS.NE.0.) IERROR = 13
|
|
431
|
+
IF (MBDCND.GE.7 .AND. TF.NE.PI) IERROR = 14
|
|
432
|
+
IF (TS.EQ.0. .AND.
|
|
433
|
+
1 (MBDCND.EQ.4 .OR. MBDCND.EQ.8 .OR. MBDCND.EQ.3)) IERROR = 15
|
|
434
|
+
IF (TF.EQ.PI .AND.
|
|
435
|
+
1 (MBDCND.EQ.2 .OR. MBDCND.EQ.3 .OR. MBDCND.EQ.6)) IERROR = 16
|
|
436
|
+
IF (NBDCND.GE.5 .AND. RS.NE.0.) IERROR = 17
|
|
437
|
+
IF (NBDCND.GE.5 .AND. (MBDCND.EQ.1 .OR. MBDCND.EQ.2 .OR.
|
|
438
|
+
1 MBDCND.EQ.5 .OR. MBDCND.EQ.7))
|
|
439
|
+
2 IERROR = 18
|
|
440
|
+
IF (IERROR.NE.0 .AND. IERROR.NE.9) RETURN
|
|
441
|
+
NCK = N
|
|
442
|
+
GO TO (101,103,102,103,101,103),NBDCND
|
|
443
|
+
101 NCK = NCK-1
|
|
444
|
+
GO TO 103
|
|
445
|
+
102 NCK = NCK+1
|
|
446
|
+
103 L = 2
|
|
447
|
+
K = 1
|
|
448
|
+
104 L = L+L
|
|
449
|
+
K = K+1
|
|
450
|
+
IF (NCK-L) 105,105,104
|
|
451
|
+
105 L = L+L
|
|
452
|
+
NP1 = N+1
|
|
453
|
+
MP1 = M+1
|
|
454
|
+
I1 = (K-2)*L+K+MAX0(2*N,6*M)+13
|
|
455
|
+
I2 = I1+NP1
|
|
456
|
+
I3 = I2+NP1
|
|
457
|
+
I4 = I3+NP1
|
|
458
|
+
I5 = I4+NP1
|
|
459
|
+
I6 = I5+NP1
|
|
460
|
+
I7 = I6+MP1
|
|
461
|
+
I8 = I7+MP1
|
|
462
|
+
I9 = I8+MP1
|
|
463
|
+
I10 = I9+MP1
|
|
464
|
+
W(1) = FLOAT(I10+M)
|
|
465
|
+
CALL HWSCS1 (INTL,TS,TF,M,MBDCND,BDTS,BDTF,RS,RF,N,NBDCND,BDRS,
|
|
466
|
+
1 BDRF,ELMBDA,F,IDIMF,PERTRB,W(2),W(I1),W(I2),W(I3),
|
|
467
|
+
2 W(I4),W(I5),W(I6),W(I7),W(I8),W(I9),W(I10))
|
|
468
|
+
RETURN
|
|
469
|
+
END
|
|
470
|
+
SUBROUTINE HWSCS1 (INTL,TS,TF,M,MBDCND,BDTS,BDTF,RS,RF,N,NBDCND,
|
|
471
|
+
1 BDRS,BDRF,ELMBDA,F,IDIMF,PERTRB,W,S,AN,BN,CN,
|
|
472
|
+
2 R,AM,BM,CM,SINT,BMH)
|
|
473
|
+
DIMENSION F(IDIMF,*) ,BDRS(*) ,BDRF(*) ,BDTS(*) ,
|
|
474
|
+
1 BDTF(*) ,AM(*) ,BM(*) ,CM(*) ,
|
|
475
|
+
2 AN(*) ,BN(*) ,CN(*) ,S(*) ,
|
|
476
|
+
3 R(*) ,SINT(*) ,BMH(*) ,W(*)
|
|
477
|
+
PI = PIMACH(DUM)
|
|
478
|
+
EPS = EPMACH(DUM)
|
|
479
|
+
MP1 = M+1
|
|
480
|
+
DTH = (TF-TS)/FLOAT(M)
|
|
481
|
+
TDT = DTH+DTH
|
|
482
|
+
HDTH = DTH/2.
|
|
483
|
+
SDTS = 1./(DTH*DTH)
|
|
484
|
+
DO 102 I=1,MP1
|
|
485
|
+
THETA = TS+FLOAT(I-1)*DTH
|
|
486
|
+
SINT(I) = SIN(THETA)
|
|
487
|
+
IF (SINT(I)) 101,102,101
|
|
488
|
+
101 T1 = SDTS/SINT(I)
|
|
489
|
+
AM(I) = T1*SIN(THETA-HDTH)
|
|
490
|
+
CM(I) = T1*SIN(THETA+HDTH)
|
|
491
|
+
BM(I) = -(AM(I)+CM(I))
|
|
492
|
+
102 CONTINUE
|
|
493
|
+
NP1 = N+1
|
|
494
|
+
DR = (RF-RS)/FLOAT(N)
|
|
495
|
+
HDR = DR/2.
|
|
496
|
+
TDR = DR+DR
|
|
497
|
+
DR2 = DR*DR
|
|
498
|
+
CZR = 6.*DTH/(DR2*(COS(TS)-COS(TF)))
|
|
499
|
+
DO 103 J=1,NP1
|
|
500
|
+
R(J) = RS+FLOAT(J-1)*DR
|
|
501
|
+
AN(J) = (R(J)-HDR)**2/DR2
|
|
502
|
+
CN(J) = (R(J)+HDR)**2/DR2
|
|
503
|
+
BN(J) = -(AN(J)+CN(J))
|
|
504
|
+
103 CONTINUE
|
|
505
|
+
MP = 1
|
|
506
|
+
NP = 1
|
|
507
|
+
C
|
|
508
|
+
C BOUNDARY CONDITION AT PHI=PS
|
|
509
|
+
C
|
|
510
|
+
GO TO (104,104,105,105,106,106,104,105,106),MBDCND
|
|
511
|
+
104 AT = AM(2)
|
|
512
|
+
ITS = 2
|
|
513
|
+
GO TO 107
|
|
514
|
+
105 AT = AM(1)
|
|
515
|
+
ITS = 1
|
|
516
|
+
CM(1) = CM(1)+AM(1)
|
|
517
|
+
GO TO 107
|
|
518
|
+
106 ITS = 1
|
|
519
|
+
BM(1) = -4.*SDTS
|
|
520
|
+
CM(1) = -BM(1)
|
|
521
|
+
C
|
|
522
|
+
C BOUNDARY CONDITION AT PHI=PF
|
|
523
|
+
C
|
|
524
|
+
107 GO TO (108,109,109,108,108,109,110,110,110),MBDCND
|
|
525
|
+
108 CT = CM(M)
|
|
526
|
+
ITF = M
|
|
527
|
+
GO TO 111
|
|
528
|
+
109 CT = CM(M+1)
|
|
529
|
+
AM(M+1) = AM(M+1)+CM(M+1)
|
|
530
|
+
ITF = M+1
|
|
531
|
+
GO TO 111
|
|
532
|
+
110 ITF = M+1
|
|
533
|
+
AM(M+1) = 4.*SDTS
|
|
534
|
+
BM(M+1) = -AM(M+1)
|
|
535
|
+
111 WTS = SINT(ITS+1)*AM(ITS+1)/CM(ITS)
|
|
536
|
+
WTF = SINT(ITF-1)*CM(ITF-1)/AM(ITF)
|
|
537
|
+
ITSP = ITS+1
|
|
538
|
+
ITFM = ITF-1
|
|
539
|
+
C
|
|
540
|
+
C BOUNDARY CONDITION AT R=RS
|
|
541
|
+
C
|
|
542
|
+
ICTR = 0
|
|
543
|
+
GO TO (112,112,113,113,114,114),NBDCND
|
|
544
|
+
112 AR = AN(2)
|
|
545
|
+
JRS = 2
|
|
546
|
+
GO TO 118
|
|
547
|
+
113 AR = AN(1)
|
|
548
|
+
JRS = 1
|
|
549
|
+
CN(1) = CN(1)+AN(1)
|
|
550
|
+
GO TO 118
|
|
551
|
+
114 JRS = 2
|
|
552
|
+
ICTR = 1
|
|
553
|
+
S(N) = AN(N)/BN(N)
|
|
554
|
+
DO 115 J=3,N
|
|
555
|
+
L = N-J+2
|
|
556
|
+
S(L) = AN(L)/(BN(L)-CN(L)*S(L+1))
|
|
557
|
+
115 CONTINUE
|
|
558
|
+
S(2) = -S(2)
|
|
559
|
+
DO 116 J=3,N
|
|
560
|
+
S(J) = -S(J)*S(J-1)
|
|
561
|
+
116 CONTINUE
|
|
562
|
+
WTNM = WTS+WTF
|
|
563
|
+
DO 117 I=ITSP,ITFM
|
|
564
|
+
WTNM = WTNM+SINT(I)
|
|
565
|
+
117 CONTINUE
|
|
566
|
+
YPS = CZR*WTNM*(S(2)-1.)
|
|
567
|
+
C
|
|
568
|
+
C BOUNDARY CONDITION AT R=RF
|
|
569
|
+
C
|
|
570
|
+
118 GO TO (119,120,120,119,119,120),NBDCND
|
|
571
|
+
119 CR = CN(N)
|
|
572
|
+
JRF = N
|
|
573
|
+
GO TO 121
|
|
574
|
+
120 CR = CN(N+1)
|
|
575
|
+
AN(N+1) = AN(N+1)+CN(N+1)
|
|
576
|
+
JRF = N+1
|
|
577
|
+
121 WRS = AN(JRS+1)*R(JRS)**2/CN(JRS)
|
|
578
|
+
WRF = CN(JRF-1)*R(JRF)**2/AN(JRF)
|
|
579
|
+
WRZ = AN(JRS)/CZR
|
|
580
|
+
JRSP = JRS+1
|
|
581
|
+
JRFM = JRF-1
|
|
582
|
+
MUNK = ITF-ITS+1
|
|
583
|
+
NUNK = JRF-JRS+1
|
|
584
|
+
DO 122 I=ITS,ITF
|
|
585
|
+
BMH(I) = BM(I)
|
|
586
|
+
122 CONTINUE
|
|
587
|
+
ISING = 0
|
|
588
|
+
GO TO (132,132,123,132,132,123),NBDCND
|
|
589
|
+
123 GO TO (132,132,124,132,132,124,132,124,124),MBDCND
|
|
590
|
+
124 IF (ELMBDA) 132,125,125
|
|
591
|
+
125 ISING = 1
|
|
592
|
+
SUM = WTS*WRS+WTS*WRF+WTF*WRS+WTF*WRF
|
|
593
|
+
IF (ICTR) 126,127,126
|
|
594
|
+
126 SUM = SUM+WRZ
|
|
595
|
+
127 DO 129 J=JRSP,JRFM
|
|
596
|
+
R2 = R(J)**2
|
|
597
|
+
DO 128 I=ITSP,ITFM
|
|
598
|
+
SUM = SUM+R2*SINT(I)
|
|
599
|
+
128 CONTINUE
|
|
600
|
+
129 CONTINUE
|
|
601
|
+
DO 130 J=JRSP,JRFM
|
|
602
|
+
SUM = SUM+(WTS+WTF)*R(J)**2
|
|
603
|
+
130 CONTINUE
|
|
604
|
+
DO 131 I=ITSP,ITFM
|
|
605
|
+
SUM = SUM+(WRS+WRF)*SINT(I)
|
|
606
|
+
131 CONTINUE
|
|
607
|
+
HNE = SUM
|
|
608
|
+
132 GO TO (133,133,133,133,134,134,133,133,134),MBDCND
|
|
609
|
+
133 BM(ITS) = BMH(ITS)+ELMBDA/SINT(ITS)**2
|
|
610
|
+
134 GO TO (135,135,135,135,135,135,136,136,136),MBDCND
|
|
611
|
+
135 BM(ITF) = BMH(ITF)+ELMBDA/SINT(ITF)**2
|
|
612
|
+
136 DO 137 I=ITSP,ITFM
|
|
613
|
+
BM(I) = BMH(I)+ELMBDA/SINT(I)**2
|
|
614
|
+
137 CONTINUE
|
|
615
|
+
GO TO (138,138,140,140,142,142,138,140,142),MBDCND
|
|
616
|
+
138 DO 139 J=JRS,JRF
|
|
617
|
+
F(2,J) = F(2,J)-AT*F(1,J)/R(J)**2
|
|
618
|
+
139 CONTINUE
|
|
619
|
+
GO TO 142
|
|
620
|
+
140 DO 141 J=JRS,JRF
|
|
621
|
+
F(1,J) = F(1,J)+TDT*BDTS(J)*AT/R(J)**2
|
|
622
|
+
141 CONTINUE
|
|
623
|
+
142 GO TO (143,145,145,143,143,145,147,147,147),MBDCND
|
|
624
|
+
143 DO 144 J=JRS,JRF
|
|
625
|
+
F(M,J) = F(M,J)-CT*F(M+1,J)/R(J)**2
|
|
626
|
+
144 CONTINUE
|
|
627
|
+
GO TO 147
|
|
628
|
+
145 DO 146 J=JRS,JRF
|
|
629
|
+
F(M+1,J) = F(M+1,J)-TDT*BDTF(J)*CT/R(J)**2
|
|
630
|
+
146 CONTINUE
|
|
631
|
+
147 GO TO (151,151,153,153,148,148),NBDCND
|
|
632
|
+
148 IF (MBDCND-3) 155,149,155
|
|
633
|
+
149 YHLD = F(ITS,1)-CZR/TDT*(SIN(TF)*BDTF(2)-SIN(TS)*BDTS(2))
|
|
634
|
+
DO 150 I=1,MP1
|
|
635
|
+
F(I,1) = YHLD
|
|
636
|
+
150 CONTINUE
|
|
637
|
+
GO TO 155
|
|
638
|
+
151 RS2 = (RS+DR)**2
|
|
639
|
+
DO 152 I=ITS,ITF
|
|
640
|
+
F(I,2) = F(I,2)-AR*F(I,1)/RS2
|
|
641
|
+
152 CONTINUE
|
|
642
|
+
GO TO 155
|
|
643
|
+
153 DO 154 I=ITS,ITF
|
|
644
|
+
F(I,1) = F(I,1)+TDR*BDRS(I)*AR/RS**2
|
|
645
|
+
154 CONTINUE
|
|
646
|
+
155 GO TO (156,158,158,156,156,158),NBDCND
|
|
647
|
+
156 RF2 = (RF-DR)**2
|
|
648
|
+
DO 157 I=ITS,ITF
|
|
649
|
+
F(I,N) = F(I,N)-CR*F(I,N+1)/RF2
|
|
650
|
+
157 CONTINUE
|
|
651
|
+
GO TO 160
|
|
652
|
+
158 DO 159 I=ITS,ITF
|
|
653
|
+
F(I,N+1) = F(I,N+1)-TDR*BDRF(I)*CR/RF**2
|
|
654
|
+
159 CONTINUE
|
|
655
|
+
160 CONTINUE
|
|
656
|
+
PERTRB = 0.
|
|
657
|
+
IF (ISING) 161,170,161
|
|
658
|
+
161 SUM = WTS*WRS*F(ITS,JRS)+WTS*WRF*F(ITS,JRF)+WTF*WRS*F(ITF,JRS)+
|
|
659
|
+
1 WTF*WRF*F(ITF,JRF)
|
|
660
|
+
IF (ICTR) 162,163,162
|
|
661
|
+
162 SUM = SUM+WRZ*F(ITS,1)
|
|
662
|
+
163 DO 165 J=JRSP,JRFM
|
|
663
|
+
R2 = R(J)**2
|
|
664
|
+
DO 164 I=ITSP,ITFM
|
|
665
|
+
SUM = SUM+R2*SINT(I)*F(I,J)
|
|
666
|
+
164 CONTINUE
|
|
667
|
+
165 CONTINUE
|
|
668
|
+
DO 166 J=JRSP,JRFM
|
|
669
|
+
SUM = SUM+R(J)**2*(WTS*F(ITS,J)+WTF*F(ITF,J))
|
|
670
|
+
166 CONTINUE
|
|
671
|
+
DO 167 I=ITSP,ITFM
|
|
672
|
+
SUM = SUM+SINT(I)*(WRS*F(I,JRS)+WRF*F(I,JRF))
|
|
673
|
+
167 CONTINUE
|
|
674
|
+
PERTRB = SUM/HNE
|
|
675
|
+
DO 169 J=1,NP1
|
|
676
|
+
DO 168 I=1,MP1
|
|
677
|
+
F(I,J) = F(I,J)-PERTRB
|
|
678
|
+
168 CONTINUE
|
|
679
|
+
169 CONTINUE
|
|
680
|
+
170 DO 172 J=JRS,JRF
|
|
681
|
+
RSQ = R(J)**2
|
|
682
|
+
DO 171 I=ITS,ITF
|
|
683
|
+
F(I,J) = RSQ*F(I,J)
|
|
684
|
+
171 CONTINUE
|
|
685
|
+
172 CONTINUE
|
|
686
|
+
IFLG = INTL
|
|
687
|
+
173 CALL BLKTRI (IFLG,NP,NUNK,AN(JRS),BN(JRS),CN(JRS),MP,MUNK,
|
|
688
|
+
1 AM(ITS),BM(ITS),CM(ITS),IDIMF,F(ITS,JRS),IERROR,W)
|
|
689
|
+
IFLG = IFLG+1
|
|
690
|
+
IF (IFLG-1) 174,173,174
|
|
691
|
+
174 IF (NBDCND) 177,175,177
|
|
692
|
+
175 DO 176 I=1,MP1
|
|
693
|
+
F(I,JRF+1) = F(I,JRS)
|
|
694
|
+
176 CONTINUE
|
|
695
|
+
177 IF (MBDCND) 180,178,180
|
|
696
|
+
178 DO 179 J=1,NP1
|
|
697
|
+
F(ITF+1,J) = F(ITS,J)
|
|
698
|
+
179 CONTINUE
|
|
699
|
+
180 XP = 0.
|
|
700
|
+
IF (ICTR) 181,188,181
|
|
701
|
+
181 IF (ISING) 186,182,186
|
|
702
|
+
182 SUM = WTS*F(ITS,2)+WTF*F(ITF,2)
|
|
703
|
+
DO 183 I=ITSP,ITFM
|
|
704
|
+
SUM = SUM+SINT(I)*F(I,2)
|
|
705
|
+
183 CONTINUE
|
|
706
|
+
YPH = CZR*SUM
|
|
707
|
+
XP = (F(ITS,1)-YPH)/YPS
|
|
708
|
+
DO 185 J=JRS,JRF
|
|
709
|
+
XPS = XP*S(J)
|
|
710
|
+
DO 184 I=ITS,ITF
|
|
711
|
+
F(I,J) = F(I,J)+XPS
|
|
712
|
+
184 CONTINUE
|
|
713
|
+
185 CONTINUE
|
|
714
|
+
186 DO 187 I=1,MP1
|
|
715
|
+
F(I,1) = XP
|
|
716
|
+
187 CONTINUE
|
|
717
|
+
188 RETURN
|
|
718
|
+
C
|
|
719
|
+
C REVISION HISTORY---
|
|
720
|
+
C
|
|
721
|
+
C SEPTEMBER 1973 VERSION 1
|
|
722
|
+
C APRIL 1976 VERSION 2
|
|
723
|
+
C JANUARY 1978 VERSION 3
|
|
724
|
+
C DECEMBER 1979 VERSION 3.1
|
|
725
|
+
C FEBRUARY 1985 DOCUMENTATION UPGRADE
|
|
726
|
+
C NOVEMBER 1988 VERSION 3.2, FORTRAN 77 CHANGES
|
|
727
|
+
C-----------------------------------------------------------------------
|
|
728
|
+
END
|