Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
NP_TMcode
Manage
Activity
Members
Plan
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Analyze
Contributor analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Giacomo Mulas
NP_TMcode
Commits
be4513c6
Commit
be4513c6
authored
1 year ago
by
Giacomo Mulas
Browse files
Options
Downloads
Patches
Plain Diff
Upload New File
parent
a203e0c3
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
cluster/clu.f
+3469
-0
3469 additions, 0 deletions
cluster/clu.f
with
3469 additions
and
0 deletions
cluster/clu.f
0 → 100644
+
3469
−
0
View file @
be4513c6
PROGRAM
CLU
CCC
111130
CCC
SUPPORTS
EXPERIMENTAL
DIELECTRIC
FUNCTIONS
ONLY
CCC
NSPH
=
6
;
LI
=
8
,
LE
=
8
;
NXI
=
200
CCC
CCC
FOR
IDFC
>=
0
ONLY
,
CCC
WHEN
JXI
=
JWTM
WRITES
THE
JWTM
-
TH
TRANSITION
MATRIX
CCC
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
COMMON
/
C1
/
VH
(
NCOU
*
LITPO
),
VJ0
(
NSPH
*
LMTPO
),
CCC
1
VYHJ
(
NCOU
*
LITPOS
),
VYJ0
(
NSPH
*
LMTPOS
),
CCC
2
RMI
(
LI
,
NSPH
),
REI
(
LI
,
NSPH
),
W
(
NLEMT
,
4
),
CCC
3
AM0M
(
NLEMT
,
NLEMT
),
FSAS
(
NSPH
),
SAS
(
NSPH
,
2
,
2
),
VINTS
(
NSPH
,
16
),
CCC
4
V3J0
(
NV3J
),
SSCS
(
NSPH
),
SEXS
(
NSPH
),
SABS
(
NSPH
),
CCC
5
SQSCS
(
NSPH
),
SQEXS
(
NSPH
),
SQABS
(
NSPH
),
GCSV
(
NSPH
),
CCC
6
RXX
(
NSPH
),
RYY
(
NSPH
),
RZZ
(
NSPH
),
ROS
(
NSPH
),
RC
(
NSPH
,
NSHL
),
CCC
7
IND3J
(
LMPO
,
LM
),
IOG
(
NSPH
),
NSHL
(
NSPH
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
CCC
COMMON
/
C2
/
RIS
(
NHSPO
),
DLRI
(
NHSPO
),
DC0
(
NSHL
-
NTL
+1
),
CCC
1
VKT
(
NSPH
),
VSZ
(
NSPH
)
CCC
NHSPO
=
MAX0
(
NPNT
,
NPNTTS
)
*
2-1
COMMON
/
C2
/
RIS
(
999
),
DLRI
(
999
),
DC0
(
5
),
VKT
(
6
),
VSZ
(
6
)
COMPLEX
*
16
RIS
,
DLRI
,
DC0
,
VKT
COMMON
/
C3
/
TFSAS
,
TSAS
(
2
,
2
),
GCS
,
SCS
,
ECS
,
ACS
COMPLEX
*
16
TFSAS
,
TSAS
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
CCC
COMMON
/
C6
/
RAC3J
(
LMTPO
)
COMMON
/
C6
/
RAC3J
(
17
)
CCC
COMMON
/
C9
/
GIS
(
NDI
,
NLEM
),
GLS
(
NDI
,
NLEM
),
SAM
(
NDIT
,
NLEMT
)
COMMON
/
C9
/
GIS
(
480
,
80
),
GLS
(
480
,
80
),
SAM
(
960
,
160
)
COMPLEX
*
16
GIS
,
GLS
,
SAM
CCC
DIMENSION
AM
(
MXNDM
,
MXNDM
)
CCC
NDIT
.LE.
MXNDM
DIMENSION
AM
(
960
,
960
)
COMPLEX
*
16
AM
CCC
DIMENSION
RCF
(
NSPH
,
NSHL
)
DIMENSION
RCF
(
6
,
8
),
CMULLR
(
4
,
4
),
CMUL
(
4
,
4
),
CEXTLR
(
4
,
4
),
CEXT
(
4
,
4
),
1
U
(
3
),
US
(
3
),
UN
(
3
),
UNS
(
3
),
UP
(
3
),
UPS
(
3
),
2
UNMP
(
3
),
UNSMP
(
3
),
UPMP
(
3
),
UPSMP
(
3
),
DUK
(
3
),
ARGI
(
1
),
ARGS
(
1
)
CCC
DIMENSION
ZPV
(
LM
,
3
,
2
,
2
),
GAPS
(
NSPH
)
DIMENSION
ZPV
(
8
,
3
,
2
,
2
),
GAPS
(
6
),
GAPV
(
3
),
1
GAP
(
3
,
2
),
GAPP
(
3
,
2
),
GAPM
(
3
,
2
),
GAPPM
(
3
,
2
)
COMPLEX
*
16
GAPP
,
GAPPM
CCC
DIMENSION
TQSE
(
2
,
NSPH
),
TQSPE
(
2
,
NSPH
),
TQSS
(
2
,
NSPH
),
TQSPS
(
2
,
NSPH
)
DIMENSION
TQSE
(
2
,
6
),
TQSPE
(
2
,
6
),
TQSS
(
2
,
6
),
TQSPS
(
2
,
6
),
1
TQEV
(
3
),
TQSV
(
3
),
TQCE
(
2
,
3
),
TQCPE
(
2
,
3
),
TQCS
(
2
,
3
),
TQCPS
(
2
,
3
)
COMPLEX
*
16
TQSPE
,
TQSPS
,
TQCPE
,
TQCPS
CCC
DIMENSION
DC0M
(
NSPH
,
NSHL
-
NTL
),
XIV
(
NXI
)
DIMENSION
DC0M
(
6
,
4
),
XIV
(
200
)
COMPLEX
*
16
DC0M
COMPLEX
*
16
ARG
,
S0
,
S0M
8010
FORMAT
(
1H
,
16I5
)
8015
FORMAT
(
1H
,
1
'READ(IR,*)NSPH,LI,LE,MXNDM,INPOL,NPNT,NPNTTS,IAVM,ISAM'
)
8050
FORMAT
(
3
(
1PD17.8
))
8060
FORMAT
(
1H
,
'READ(IR,*)RXX(I),RYY(I),RZZ(I)'
)
8068
FORMAT
(
1H
,
'READ(IR,*)TH,THSTP,THLST,THS,THSSTP,THSLST'
)
8069
FORMAT
(
1H
,
'READ(IR,*)PH,PHSTP,PHLST,PHS,PHSSTP,PHSLST'
)
8170
FORMAT
(
1H
,
7
(
1PD10.3
))
8171
FORMAT
(
1H
,
'READ(IR,*)JWTM'
)
6000
FORMAT
(
1H
)
6050
FORMAT
(
1H
,
' SIZE='
,
1PD15.7
,
', REFRACTIVE INDEX='
,
2
(
1PD15.7
))
6055
FORMAT
(
1H
,
' SIZE='
,
1PD15.7
)
6060
FORMAT
(
1H
,
' CIRC '
,
I2
)
6061
FORMAT
(
1H
,
' CIRC'
)
6065
FORMAT
(
1H
,
' LIN '
,
I2
)
6066
FORMAT
(
1H
,
' LIN'
)
6068
FORMAT
(
1H
,
4X
,
'SPHERES; LMX=LI'
)
6069
FORMAT
(
1H
,
4X
,
'SPHERES; LMX=MIN0(LI,LE)'
)
6070
FORMAT
(
1H
,
4X
,
'SPHERE '
,
I2
)
6080
FORMAT
(
1H
,
4X
,
'CLUSTER'
)
6100
FORMAT
(
1H
,
'----- SCS ----- ABS ----- EXS ----- ALBEDS --'
)
6150
FORMAT
(
1H
,
1PD14.7
,
5
(
1PD15.7
))
6165
FORMAT
(
1H
,
' UN=('
,
1PD12.5
,
','
,
1PD12.5
,
','
,
1PD12.5
,
')'
)
6166
FORMAT
(
1H
,
' UNI=('
,
1PD12.5
,
','
,
1PD12.5
,
','
,
1PD12.5
,
')'
)
6167
FORMAT
(
1H
,
' UNS=('
,
1PD12.5
,
','
,
1PD12.5
,
','
,
1PD12.5
,
')'
)
6200
FORMAT
(
1H
,
'---- SCS/GS -- ABS/GS -- EXS/GS ---'
)
6240
FORMAT
(
1H
,
1X
,
'FSAS='
,
2
(
1PD15.7
))
6242
FORMAT
(
1H
,
1X
,
'SAS(1,1)='
,
2
(
1PD15.7
),
', SAS(2,1)='
,
2
(
1PD15.7
))
6243
FORMAT
(
1H
,
1X
,
'SAS(1,2)='
,
2
(
1PD15.7
),
', SAS(2,2)='
,
2
(
1PD15.7
))
6250
FORMAT
(
1H
,
1X
,
'FSAT='
,
2
(
1PD15.7
))
6252
FORMAT
(
1H
,
1X
,
'SAT(1,1)='
,
2
(
1PD15.7
),
', SAT(2,1)='
,
2
(
1PD15.7
))
6253
FORMAT
(
1H
,
1X
,
'SAT(1,2)='
,
2
(
1PD15.7
),
', SAT(2,2)='
,
2
(
1PD15.7
))
6300
FORMAT
(
1H
,
' STOP IN LUCIN: MATRIX SINGULAR'
)
6331
FORMAT
(
1H
,
1X
,
'MULS'
)
6332
FORMAT
(
1H
,
1X
,
'MULC'
)
6336
FORMAT
(
1H
,
1X
,
'MULSLR'
)
6337
FORMAT
(
1H
,
1X
,
'MULCLR'
)
6350
FORMAT
((
1H
,
7X
,
4
(
1PD15.7
)))
6460
FORMAT
(
1H
,
4X
,
'CLUSTER (ENSEMBLE AVERAGE, MODE'
,
I2
,
')'
)
6500
FORMAT
(
1H
,
'----- SCC ----- ABC ----- EXC ----- ALBEDC --'
)
6550
FORMAT
1
(
1
H
,
' AT '
,
I1
,
' LCALC='
,
I3
,
' TOO SMALL WITH ARG='
,
2
(
1
PD15
.7
))
6600
FORMAT
(
1H
,
'--- SCC/TGS - ABC/TGS - EXC/TGS ---'
)
6650
FORMAT
(
1H
,
' STOP IN HJV'
)
6700
FORMAT
(
1H
,
'---- SCCRT --- ABCRT --- EXCRT ----'
)
6710
FORMAT
(
1H
,
' REFR. INDEX OF EXTERNAL MEDIUM='
,
1PD15.7
)
6714
FORMAT
(
1H
,
' VK='
,
1PD15.7
,
', XI IS SCALE FACTOR FOR LENGTHS'
)
6715
FORMAT
(
1H
,
' VK='
,
1PD15.7
,
', XI='
,
1PD15.7
)
6716
FORMAT
(
1H
,
' XI='
,
1PD15.7
)
6720
FORMAT
(
1H
,
' TIDG='
,
1PD10.3
,
', PIDG='
,
1PD10.3
,
1
', TSDG='
,
1PD10.3
,
', PSDG='
,
1PD10.3
)
6721
FORMAT
(
1H
,
' CFMP='
,
1PD15.7
,
', SFMP='
,
1PD15.7
)
6722
FORMAT
(
1H
,
' CFSP='
,
1PD15.7
,
', SFSP='
,
1PD15.7
)
6740
FORMAT
(
1H
,
' SCAND='
,
1PD10.3
)
6750
FORMAT
(
1H
,
' STOP IN DME'
)
6800
FORMAT
(
1H
,
1X
,
2
(
'FSAC('
,
I1
,
','
,
I1
,
')='
,
2
(
1PD15.7
),
3X
))
6810
FORMAT
(
1H
,
1X
,
2
(
' SAC('
,
I1
,
','
,
I1
,
')='
,
2
(
1PD15.7
),
3X
))
6850
FORMAT
(
1H
,
1X
,
'RE(FSAC('
,
I1
,
','
,
I1
,
'))/RE(TFSAS)='
,
1PD15.7
,
1
', IM(FSAC('
,
I1
,
','
,
I1
,
'))/IM(TFSAS)='
,
1PD15.7
)
6930
FORMAT
(
1H
,
1X
,
'QSCHU='
,
1PD15.7
,
', PSCHU='
,
1PD15.7
,
1
', S0MAG='
,
1PD15.7
)
6940
FORMAT
(
1H
,
1X
,
'(RE(FSAC(1,1))-RE(FSAC(2,2)))/RE(FSAC(1,1))='
,
11PD15.7
)
6945
FORMAT
(
1H
,
1X
,
'(IM(FSAC(1,1))-IM(FSAC(2,2)))/IM(FSAC(1,1))='
,
11PD15.7
)
6970
FORMAT
(
1H
,
' COSAV='
,
1PD15.7
,
', RAPRS='
,
1PD15.7
)
6971
FORMAT
(
1H
,
' Fx='
,
1PD15.7
,
', Fy='
,
1PD15.7
,
', Fz='
,
1PD15.7
)
6973
FORMAT
(
1H
,
' Fl='
,
1PD15.7
,
', Fr='
,
1PD15.7
,
', Fk='
,
1PD15.7
)
6974
FORMAT
(
1H
,
' Fk='
,
1PD15.7
)
6977
FORMAT
(
1H
,
' IPO='
,
I2
,
', TQEk='
,
1PD15.7
,
', TQSk='
,
1PD15.7
)
6981
FORMAT
1
(
1
H
,
' TQEx='
,
1
PD15
.7
,
', TQEy='
,
1
PD15
.7
,
', TQEz='
,
1
PD15
.7
)
6982
FORMAT
1
(
1
H
,
' TQSx='
,
1
PD15
.7
,
', TQSy='
,
1
PD15
.7
,
', TQSz='
,
1
PD15
.7
)
6983
FORMAT
1
(
1
H
,
' TQEl='
,
1
PD15
.7
,
', TQEr='
,
1
PD15
.7
,
', TQEk='
,
1
PD15
.7
)
6984
FORMAT
1
(
1
H
,
' TQSl='
,
1
PD15
.7
,
', TQSr='
,
1
PD15
.7
,
', TQSk='
,
1
PD15
.7
)
6991
FORMAT
(
'========== JXI ='
,
I3
,
' ===================='
)
6992
FORMAT
(
'********** JTH ='
,
I3
,
', JPH ='
,
I3
,
1
', JTHS ='
,
I3
,
', JPHS ='
,
I3
,
' ********************'
)
IR
=
5
IW
=
6
IT
=
7
ITIN
=
17
CCC
CCC
OTHER
COMMENTS
IN
FILE
GLOBALCOMS
CCC
CCC
CCC
CONSTANTS
APPEAR
AS
(
...
)
.
X
(
...
)
D0
,
OR
(
...
)
.
X
(
...
)
D
+
X
(
X
),
CCC
OR
(
...
)
.
X
(
...
)
D
-
X
(
X
)
CCC
CCC
CCC
MXNDM
IS
FIRST
NUMERICAL
DECLARED
DIMENSION
OF
AM
;
CCC
NDIT
=
2
*
NDI
;
NDI
=
NSPH
*
NLIM
CCC
CCC
CCC
VK
*
ROS
(
I
)
IS
SIZE
PARAMETER
in
vacuo
CCC
CCC
CCC
OUTPUTS
(
NORMALIZED
SCATTERING
AMPLITUDE
)
*
(
2
*
PIG
/(
VK
*
VK
))
IN
m
**
3
;
CCC
OUTPUTS
FORCE
*
(
c
/
I0
)
IN
m
**
2
;
CCC
OUTPUTS
(
EXT_TO_TORQUE
)
AND
(
SCA_TO_TORQUE
)
CONTRIBUTIONS
CCC
*
(
c
/
I0
)
*
(
VK
*
EXRI
)
**
3
;
(
TORQUE
OUTPUTS
)/(
EXDC
*
VK
*
VK
)
ARE
IN
m
**
2
CCC
CCC
CCC
ON
A
LINEAR
BASIS
,
CCC
POLARIZATION
(
1
),
(
1
,
ni
),
(
ns
,
1
)
OR
-1
IS
PARALLE
(
l
),
CCC
POLARIZATION
(
2
),
(
2
,
ni
),
(
ns
,
2
)
OR
1
IS
PERPENDICULA
(
r
);
CCC
ON
A
CIRCULAR
BASIS
,
CCC
POLARIZATION
(
1
),
(
1
,
ni
),
(
ns
,
1
)
OR
-1
IS
(
R
)
ight
,
CCC
POLARIZATION
(
2
),
(
2
,
ni
),
(
ns
,
2
)
OR
1
IS
(
L
)
eft
;
CCC
ns
=
SCATWAVE
POLARIZATION
,
ni
=
INCWAVE
POLARIZATION
CCC
CCC
CCC
NV3J
=
(
LM
*
LMPO
*
(
LMT
+7
))/
6
;
CCC
LM
=
MAX0
(
LI
,
LE
)
CCC
CCC
CCC
IAVM
=
0
-->
RANDOM
AVERAGES
FOR
AMPLITUDE
AND
CROSS
SECTIONS
;
CCC
IAVM
=
1
-->
SAME
AS
IAVM
=
0
,
PLUS
RANDOM
AVERAGES
FOR
INTENSITY
CCC
CCC
CCC
ISAM
<
0
-->
ARBITRARILY
VARYING
SCATTERING
PLANE
,
CCC
AS
IT
IS
UNDEFINED
FOR
FORWARD
OR
BACKWARD
SCATTERING
,
CCC
MERIDIONAL
PLANE
FOR
INCIDENCE
ANGLES
IS
ASSUMED
;
CCC
ISAM
=
0
-->
MERIDIONAL
PLANES
CCC
(
I
.
E
.
REFERENCE
PLANES
ACROSS
Z
AXIS
)
CCC
AS
DETERMINED
BY
INCIDENCE
AND
OBSERVATION
ANGLES
;
CCC
ISAM
=
1
-->
SCATTERING
PLANE
ACROSS
THE
Z
AXIS
;
SCATTERING
CCC
AS
A
FUNCTION
OF
INCIDENCE
AND
OF
OBSERVATION
ANGLES
;
CCC
NEEDS
ONLY
TH
,
PH
,
THS
;
THSLST
GT
180
IF
NECESSARY
;
CCC
ISAM
>
1
-->
SCATTERING
PLANE
ACROSS
THE
Z
AXIS
;
SCATTERING
CCC
AS
A
FUNCTION
OF
INCIDENCE
ANGLES
CCC
FOR
A
FIXED
SCATTERING
ANGLE
THSCA
=
THS
-
TH
;
CCC
NEEDS
ONLY
TH
,
PH
,
THS
CCC
OPEN
(
IR
,
FILE
=
'DCLU'
,
STATUS
=
'OLD'
)
READ
(
IR
,
*
)
NSPH
,
LI
,
LE
,
MXNDM
,
INPOL
,
NPNT
,
NPNTTS
,
IAVM
,
ISAM
DO
101
I
=
1
,
NSPH
101
READ
(
IR
,
*
)
RXX
(
I
),
RYY
(
I
),
RZZ
(
I
)
READ
(
IR
,
*
)
TH
,
THSTP
,
THLST
,
THS
,
THSSTP
,
THSLST
READ
(
IR
,
*
)
PH
,
PHSTP
,
PHLST
,
PHS
,
PHSSTP
,
PHSLST
READ
(
IR
,
*
)
JWTM
CLOSE
(
IR
)
OPEN
(
IW
,
FILE
=
'OCLU'
,
STATUS
=
'UNKNOWN'
)
WRITE
(
IW
,
8015
)
WRITE
(
IW
,
8010
)
NSPH
,
LI
,
LE
,
MXNDM
,
INPOL
,
NPNT
,
NPNTTS
,
IAVM
,
ISAM
WRITE
(
IW
,
8060
)
WRITE
(
IW
,
8050
)(
RXX
(
I
),
RYY
(
I
),
RZZ
(
I
),
I
=
1
,
NSPH
)
WRITE
(
IW
,
8068
)
WRITE
(
IW
,
8170
)
TH
,
THSTP
,
THLST
,
THS
,
THSSTP
,
THSLST
WRITE
(
IW
,
8069
)
WRITE
(
IW
,
8170
)
PH
,
PHSTP
,
PHLST
,
PHS
,
PHSSTP
,
PHSLST
WRITE
(
IW
,
8171
)
WRITE
(
IW
,
8010
)
JWTM
OPEN
(
ITIN
,
FILE
=
'TEDF'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'OLD'
)
READ
(
ITIN
)
NSPHT
IF
(
NSPHT
.NE.
NSPH
)
GO TO
497
READ
(
ITIN
)(
IOG
(
I
),
I
=
1
,
NSPH
)
READ
(
ITIN
)
EXDC
,
WP
,
XIP
,
IDFC
,
NXI
READ
(
ITIN
)(
XIV
(
I
),
I
=
1
,
NXI
)
DO
103
I
=
1
,
NSPH
IF
(
IOG
(
I
)
.LT.
I
)
GO TO
103
READ
(
ITIN
)
NSHL
(
I
),
ROS
(
I
)
NSH
=
NSHL
(
I
)
READ
(
ITIN
)(
RCF
(
I
,
NS
),
NS
=
1
,
NSH
)
103
CONTINUE
WRITE
(
IW
,
*
)
' READ(ITIN)NSPHT'
WRITE
(
IW
,
*
)
' READ(ITIN)(IOG(I),I=1,NSPH)'
WRITE
(
IW
,
*
)
' READ(ITIN)EXDC,WP,XIP,IDFC,NXI'
WRITE
(
IW
,
*
)
' READ(ITIN)(XIV(I),I=1,NXI)'
WRITE
(
IW
,
*
)
' READ(ITIN)NSHL(I),ROS(I)'
WRITE
(
IW
,
*
)
' READ(ITIN)(RCF(I,NS),NS=1,NSH)'
WRITE
(
IW
,
6000
)
C0
=
0.0D0
SML
=
1.0D-3
IF
(
THSTP
.EQ.
C0
)
NTH
=
0
IF
(
THSTP
.NE.
C0
)
NTH
=
IDINT
((
THLST
-
TH
)/
THSTP
+
SML
)
NTH
=
NTH
+1
IF
(
PHSTP
.EQ.
C0
)
NPH
=
0
IF
(
PHSTP
.NE.
C0
)
NPH
=
IDINT
((
PHLST
-
PH
)/
PHSTP
+
SML
)
NPH
=
NPH
+1
IF
(
ISAM
.LE.
1
)
GO TO
110
NTHS
=
1
THSCA
=
THS
-
TH
GO TO
111
110
IF
(
THSSTP
.EQ.
C0
)
NTHS
=
0
IF
(
THSSTP
.NE.
C0
)
NTHS
=
IDINT
((
THSLST
-
THS
)/
THSSTP
+
SML
)
NTHS
=
NTHS
+1
IF
(
ISAM
.LT.
1
)
GO TO
112
111
NPHS
=
1
GO TO
113
112
IF
(
PHSSTP
.EQ.
C0
)
NPHS
=
0
IF
(
PHSSTP
.NE.
C0
)
NPHS
=
IDINT
((
PHSLST
-
PHS
)/
PHSSTP
+
SML
)
NPHS
=
NPHS
+1
113
NK
=
NTH
*
NPH
NKS
=
NTHS
*
NPHS
NKKS
=
NK
*
NKS
TH1
=
TH
PH1
=
PH
THS1
=
THS
PHS1
=
PHS
CALL
STR
(
RCF
)
LM
=
MAX0
(
LI
,
LE
)
CALL
THDPS
(
LM
,
ZPV
)
EXRI
=
DSQRT
(
EXDC
)
WRITE
(
IW
,
6710
)
EXRI
OPEN
(
IT
,
FILE
=
'TPPOAN'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'UNKNOWN'
)
WRITE
(
IT
)
IAVM
,
ISAM
,
INPOL
WRITE
(
IT
)
NXI
,
NTH
,
NPH
,
NTHS
,
NPHS
C
NLEMT
=
NLEM
+
NLEM
C
WN
=
WP
/
3.0D08
SQSFI
=
1.0D0
IF
(
IDFC
.GE.
0
)
GO TO
118
VK
=
XIP
*
WN
WRITE
(
IW
,
6714
)
VK
WRITE
(
IW
,
6000
)
118
DO
488
JXI
=
1
,
NXI
JAW
=
1
WRITE
(
IW
,
6991
)
JXI
XI
=
XIV
(
JXI
)
IF
(
IDFC
.LT.
0
)
GO TO
119
VK
=
XI
*
WN
VKARG
=
VK
WRITE
(
IW
,
6715
)
VK
,
XI
GO TO
120
119
VKARG
=
XI
*
VK
SQSFI
=
1.0D0
/(
XI
*
XI
)
WRITE
(
IW
,
6716
)
XI
120
CALL
HJV
(
EXRI
,
VKARG
,
JER
,
LCALC
,
ARG
)
IF
(
JER
.EQ.
0
)
GO TO
122
WRITE
(
IW
,
6650
)
GO TO
490
122
DO
132
I
=
1
,
NSPH
IOGI
=
IOG
(
I
)
IF
(
IOGI
.EQ.
I
)
GO TO
125
DO
123
L
=
1
,
LI
RMI
(
L
,
I
)
=
RMI
(
L
,
IOGI
)
123
REI
(
L
,
I
)
=
REI
(
L
,
IOGI
)
GO TO
132
125
NSH
=
NSHL
(
I
)
ICI
=
(
NSH
+1
)/
2
IF
(
IDFC
.NE.
0
)
GO TO
127
READ
(
ITIN
)(
DC0
(
IC
),
IC
=
1
,
ICI
)
GO TO
130
127
IF
(
JXI
.EQ.
1
)
READ
(
ITIN
)(
DC0M
(
I
,
IC
),
IC
=
1
,
ICI
)
DO
128
IC
=
1
,
ICI
128
DC0
(
IC
)
=
DC0M
(
I
,
IC
)
130
IF
(
MOD
(
NSH
,
2
)
.EQ.
0
)
DC0
(
ICI
+1
)
=
EXDC
CALL
DME
(
LI
,
I
,
NPNT
,
NPNTTS
,
VKARG
,
EXDC
,
EXRI
,
JER
,
LCALC
,
ARG
)
IF
(
JER
.EQ.
0
)
GO TO
132
WRITE
(
IW
,
6750
)
GO TO
490
132
CONTINUE
CALL
CMS
(
AM
)
NDIT
=
2
*
NSPH
*
NLIM
CALL
LUCIN
(
AM
,
MXNDM
,
NDIT
,
JER
)
IF
(
JER
.EQ.
1
)
GO TO
495
CALL
ZTM
(
AM
)
C
IF
(
IDFC
.LT.
0
)
GO TO
156
IF
(
JXI
.NE.
JWTM
)
GO TO
156
IS
=
1
ITS
=
8
OPEN
(
ITS
,
FILE
=
'TTMS'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'UNKNOWN'
)
WRITE
(
ITS
)
IS
,
LM
WRITE
(
ITS
)
VK
,
EXRI
WRITE
(
ITS
)((
AM0M
(
I
,
J
),
J
=
1
,
NLEMT
),
I
=
1
,
NLEMT
)
CLOSE
(
ITS
)
156
CONTINUE
C
IF
(
INPOL
.NE.
0
)
GO TO
158
WRITE
(
IW
,
6066
)
GO TO
160
158
WRITE
(
IW
,
6061
)
160
CS0
=
0.25D0
*
VK
*
VK
*
VK
/
DACOS
(
C0
)
CALL
SCR0
(
VK
,
EXRI
)
SQK
=
VK
*
VK
*
EXDC
CALL
APS
(
ZPV
,
LI
,
NSPH
,
IOG
,
RMI
,
REI
,
SQK
,
GAPS
)
CALL
RABAS
(
INPOL
,
LI
,
NSPH
,
IOG
,
RMI
,
REI
,
TQSE
,
TQSPE
,
TQSS
,
TQSPS
)
IF
(
LI
.NE.
LE
)
WRITE
(
IW
,
6068
)
DO
170
I
=
1
,
NSPH
IF
(
IOG
(
I
)
.LT.
I
)
GO TO
170
ALBEDS
=
SSCS
(
I
)/
SEXS
(
I
)
SQSCS
(
I
)
=
SQSCS
(
I
)
*
SQSFI
SQABS
(
I
)
=
SQABS
(
I
)
*
SQSFI
SQEXS
(
I
)
=
SQEXS
(
I
)
*
SQSFI
WRITE
(
IW
,
6070
)
I
IF
(
NSHL
(
I
)
.EQ.
1
)
GO TO
162
WRITE
(
IW
,
6055
)
VSZ
(
I
)
GO TO
164
162
WRITE
(
IW
,
6050
)
VSZ
(
I
),
VKT
(
I
)
164
WRITE
(
IW
,
6100
)
WRITE
(
IW
,
6150
)
SSCS
(
I
),
SABS
(
I
),
SEXS
(
I
),
ALBEDS
WRITE
(
IW
,
6200
)
WRITE
(
IW
,
6150
)
SQSCS
(
I
),
SQABS
(
I
),
SQEXS
(
I
)
WRITE
(
IW
,
6240
)
FSAS
(
I
)
CSCH
=
2.0D0
*
VK
*
SQSFI
/
GCSV
(
I
)
S0
=
FSAS
(
I
)
*
EXRI
QSCHU
=
DIMAG
(
S0
)
*
CSCH
PSCHU
=
DREAL
(
S0
)
*
CSCH
S0MAG
=
CDABS
(
S0
)
*
CS0
WRITE
(
IW
,
6930
)
QSCHU
,
PSCHU
,
S0MAG
RAPR
=
SEXS
(
I
)
-
GAPS
(
I
)
COSAV
=
GAPS
(
I
)/
SSCS
(
I
)
WRITE
(
IW
,
6970
)
COSAV
,
RAPR
WRITE
(
IW
,
6977
)
1
,
TQSE
(
1
,
I
),
TQSS
(
1
,
I
)
WRITE
(
IW
,
6977
)
2
,
TQSE
(
2
,
I
),
TQSS
(
2
,
I
)
170
CONTINUE
WRITE
(
IW
,
6250
)
TFSAS
CSCH
=
2.0D0
*
VK
*
SQSFI
/
GCS
S0
=
TFSAS
*
EXRI
QSCHU
=
DIMAG
(
S0
)
*
CSCH
PSCHU
=
DREAL
(
S0
)
*
CSCH
S0MAG
=
CDABS
(
S0
)
*
CS0
WRITE
(
IW
,
6930
)
QSCHU
,
PSCHU
,
S0MAG
WRITE
(
IT
)
VK
CALL
PCRSM0
(
VK
,
EXRI
,
INPOL
)
CALL
APCRA
(
ZPV
,
LE
,
AM0M
,
INPOL
,
SQK
,
GAPM
,
GAPPM
)
TH
=
TH1
DO
486
JTH
=
1
,
NTH
PH
=
PH1
DO
484
JPH
=
1
,
NPH
IF
((
NK
.EQ.
1
)
.AND.
(
JXI
.GT.
1
))
GO TO
180
CALL
UPVMP
(
TH
,
PH
,
0
,
COST
,
SINT
,
COSP
,
SINP
,
U
,
UPMP
,
UNMP
)
IF
(
ISAM
.LT.
0
)
GO TO
184
CALL
WMAMP
1
(
0
,
COST
,
SINT
,
COSP
,
SINP
,
INPOL
,
LE
,
0
,
NSPH
,
ARGI
,
U
,
UPMP
,
UNMP
)
GO TO
182
180
IF
(
ISAM
.LT.
0
)
GO TO
184
182
CALL
APC
(
ZPV
,
LE
,
AM0M
,
W
,
SQK
,
GAP
,
GAPP
)
CALL
RABA
(
LE
,
AM0M
,
W
,
TQCE
,
TQCPE
,
TQCS
,
TQCPS
)
JW
=
1
184
THSL
=
THS1
DO
482
JTHS
=
1
,
NTHS
THS
=
THSL
ICSPNV
=
0
IF
(
ISAM
.GT.
1
)
THS
=
TH
+
THSCA
IF
(
ISAM
.LT.
1
)
GO TO
186
PHSPH
=
C0
IF
((
THS
.LT.
C0
)
.OR.
(
THS
.GT.
180.0D0
))
PHSPH
=
180.0D0
IF
(
THS
.LT.
C0
)
THS
=-
THS
IF
(
THS
.GT.
180.0D0
)
THS
=
360.0D0
-
THS
IF
(
PHSPH
.NE.
C0
)
ICSPNV
=
1
186
PHS
=
PHS1
DO
480
JPHS
=
1
,
NPHS
IF
(
ISAM
.LT.
1
)
GO TO
188
PHS
=
PH
+
PHSPH
IF
(
PHS
.GE.
360.0D0
)
PHS
=
PHS
-360.0D0
188
IF
((
NKS
.EQ.
1
)
.AND.
((
JXI
.GT.
1
)
.OR.
(
JTH
.GT.
1
)
.OR.
(
JPH
.GT.
1
)))
1
GO TO
190
CALL
UPVMP
(
THS
,
PHS
,
ICSPNV
,
COSTS
,
SINTS
,
COSPS
,
SINPS
,
US
,
UPSMP
,
UNSMP
)
IF
(
ISAM
.GE.
0
)
CALL
WMAMP
1
(
2
,
COSTS
,
SINTS
,
COSPS
,
SINPS
,
INPOL
,
LE
,
0
,
NSPH
,
ARGS
,
US
,
UPSMP
,
UNSMP
)
190
IF
((
NKKS
.EQ.
1
)
.AND.
(
JXI
.GT.
1
))
GO TO
194
CALL
UPVSP
(
U
,
UPMP
,
UNMP
,
US
,
UPSMP
,
UNSMP
,
UP
,
UN
,
UPS
,
UNS
,
DUK
,
1
ISQ
,
IBF
,
SCAN
,
CFMP
,
SFMP
,
CFSP
,
SFSP
)
IF
(
ISAM
.GE.
0
)
GO TO
192
CALL
WMASP
(
COST
,
SINT
,
COSP
,
SINP
,
COSTS
,
SINTS
,
COSPS
,
SINPS
,
1
U
,
UP
,
UN
,
US
,
UPS
,
UNS
,
ISQ
,
IBF
,
INPOL
,
LE
,
0
,
NSPH
,
ARGI
,
ARGS
)
GO TO
194
192
DO
193
I
=
1
,
3
UP
(
I
)
=
UPMP
(
I
)
UN
(
I
)
=
UNMP
(
I
)
UPS
(
I
)
=
UPSMP
(
I
)
193
UNS
(
I
)
=
UNSMP
(
I
)
194
IF
(
IAVM
.EQ.
1
)
CALL
CRSM1
(
VK
,
EXRI
)
IF
(
ISAM
.GE.
0
)
GO TO
196
CALL
APC
(
ZPV
,
LE
,
AM0M
,
W
,
SQK
,
GAP
,
GAPP
)
CALL
RABA
(
LE
,
AM0M
,
W
,
TQCE
,
TQCPE
,
TQCS
,
TQCPS
)
JW
=
1
196
WRITE
(
IT
)
TH
,
PH
,
THS
,
PHS
WRITE
(
IT
)
SCAN
IF
(
JAW
.EQ.
0
)
GO TO
212
JAW
=
0
CALL
MEXTC
(
VK
,
EXRI
,
FSACM
,
CEXTLR
,
CEXT
)
WRITE
(
IT
)((
CEXT
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
WRITE
(
IT
)(
SCSCM
(
I
),
SCSCPM
(
I
),
ECSCM
(
I
),
ECSCPM
(
I
),
I
=
1
,
2
)
WRITE
(
IT
)((
GAPM
(
I
,
J
),
GAPPM
(
I
,
J
),
J
=
1
,
2
),
I
=
1
,
3
)
WRITE
(
IW
,
6460
)
IAVM
JLR
=
2
DO
210
ILR
=
1
,
2
IPOL
=
(
-1
)
**
ILR
IF
(
ILR
.EQ.
2
)
JLR
=
1
EXTSM
=
ECSCM
(
ILR
)
QEXTM
=
EXTSM
*
SQSFI
/
GCS
EXTRM
=
EXTSM
/
ECS
SCASM
=
SCSCM
(
ILR
)
ALBDM
=
SCASM
/
EXTSM
QSCAM
=
SCASM
*
SQSFI
/
GCS
SCARM
=
SCASM
/
SCS
ABSSM
=
EXTSM
-
SCASM
QABSM
=
ABSSM
*
SQSFI
/
GCS
IF
(
DABS
(
ACS
/
ECS
)
.GT.
1.0D-06
)
GO TO
202
ABSRM
=
1.0D0
GO TO
204
202
ABSRM
=
ABSSM
/
ACS
204
S0M
=
FSACM
(
ILR
,
ILR
)
*
EXRI
QSCHUM
=
DIMAG
(
S0M
)
*
CSCH
PSCHUM
=
DREAL
(
S0M
)
*
CSCH
S0MAGM
=
CDABS
(
S0M
)
*
CS0
RFINRM
=
DREAL
(
FSACM
(
ILR
,
ILR
))/
DREAL
(
TFSAS
)
EXTCRM
=
DIMAG
(
FSACM
(
ILR
,
ILR
))/
DIMAG
(
TFSAS
)
IF
(
INPOL
.NE.
0
)
GO TO
206
WRITE
(
IW
,
6065
)
IPOL
GO TO
208
206
WRITE
(
IW
,
6060
)
IPOL
208
WRITE
(
IW
,
6500
)
WRITE
(
IW
,
6150
)
SCASM
,
ABSSM
,
EXTSM
,
ALBDM
WRITE
(
IW
,
6600
)
WRITE
(
IW
,
6150
)
QSCAM
,
QABSM
,
QEXTM
WRITE
(
IW
,
6700
)
WRITE
(
IW
,
6150
)
SCARM
,
ABSRM
,
EXTRM
WRITE
(
IW
,
6800
)
ILR
,
ILR
,
FSACM
(
ILR
,
ILR
),
JLR
,
ILR
,
FSACM
(
JLR
,
ILR
)
WRITE
(
IW
,
6850
)
ILR
,
ILR
,
RFINRM
,
ILR
,
ILR
,
EXTCRM
WRITE
(
IW
,
6930
)
QSCHUM
,
PSCHUM
,
S0MAGM
RAPR
=
ECSCM
(
ILR
)
-
GAPM
(
3
,
ILR
)
COSAV
=
GAPM
(
3
,
ILR
)/
SCSCM
(
ILR
)
FZ
=
RAPR
WRITE
(
IW
,
6970
)
COSAV
,
RAPR
WRITE
(
IW
,
6974
)
FZ
210
CONTINUE
RMBRIF
=
(
DREAL
(
FSACM
(
1
,
1
))
-
DREAL
(
FSACM
(
2
,
2
)))/
DREAL
(
FSACM
(
1
,
1
))
RMDCHR
=
(
DIMAG
(
FSACM
(
1
,
1
))
-
DIMAG
(
FSACM
(
2
,
2
)))/
DIMAG
(
FSACM
(
1
,
1
))
WRITE
(
IW
,
6940
)
RMBRIF
WRITE
(
IW
,
6945
)
RMDCHR
212
WRITE
(
IW
,
6992
)
JTH
,
JPH
,
JTHS
,
JPHS
WRITE
(
IW
,
6720
)
TH
,
PH
,
THS
,
PHS
WRITE
(
IW
,
6740
)
SCAN
WRITE
(
IW
,
6721
)
CFMP
,
SFMP
WRITE
(
IW
,
6722
)
CFSP
,
SFSP
IF
(
ISAM
.LT.
0
)
GO TO
214
WRITE
(
IW
,
6166
)
UN
(
1
),
UN
(
2
),
UN
(
3
)
WRITE
(
IW
,
6167
)
UNS
(
1
),
UNS
(
2
),
UNS
(
3
)
GO TO
220
214
WRITE
(
IW
,
6165
)
UN
(
1
),
UN
(
2
),
UN
(
3
)
220
IF
(
INPOL
.NE.
0
)
GO TO
222
WRITE
(
IW
,
6066
)
GO TO
224
222
WRITE
(
IW
,
6061
)
224
CALL
SCR2
(
VK
,
VKARG
,
EXRI
,
DUK
)
IF
(
LI
.NE.
LE
)
WRITE
(
IW
,
6069
)
DO
226
I
=
1
,
NSPH
IF
(
IOG
(
I
)
.LT.
I
)
GO TO
226
WRITE
(
IW
,
6070
)
I
WRITE
(
IW
,
6242
)
SAS
(
I
,
1
,
1
),
SAS
(
I
,
2
,
1
)
WRITE
(
IW
,
6243
)
SAS
(
I
,
1
,
2
),
SAS
(
I
,
2
,
2
)
DO
225
J
=
1
,
16
225
VINT
(
J
)
=
VINTS
(
I
,
J
)
CALL
MMULC
(
VINT
,
CMULLR
,
CMUL
)
WRITE
(
IW
,
6331
)
WRITE
(
IW
,
6350
)((
CMUL
(
I1
,
J
),
J
=
1
,
4
),
I1
=
1
,
4
)
WRITE
(
IW
,
6336
)
WRITE
(
IW
,
6350
)((
CMULLR
(
I1
,
J
),
J
=
1
,
4
),
I1
=
1
,
4
)
226
CONTINUE
WRITE
(
IW
,
6252
)
TSAS
(
1
,
1
),
TSAS
(
2
,
1
)
WRITE
(
IW
,
6253
)
TSAS
(
1
,
2
),
TSAS
(
2
,
2
)
WRITE
(
IW
,
6080
)
CALL
PCROS
(
VK
,
EXRI
)
CALL
MEXTC
(
VK
,
EXRI
,
FSAC
,
CEXTLR
,
CEXT
)
CALL
MMULC
(
VINT
,
CMULLR
,
CMUL
)
IF
(
JW
.EQ.
0
)
GO TO
254
JW
=
0
WRITE
(
IT
)((
CEXT
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
WRITE
(
IT
)(
SCSC
(
I
),
SCSCP
(
I
),
ECSC
(
I
),
ECSCP
(
I
),
I
=
1
,
2
)
WRITE
(
IT
)((
GAP
(
I
,
J
),
GAPP
(
I
,
J
),
J
=
1
,
2
),
I
=
1
,
3
)
WRITE
(
IT
)((
TQCE
(
I
,
J
),
TQCPE
(
I
,
J
),
J
=
1
,
3
),
I
=
1
,
2
)
WRITE
(
IT
)((
TQCS
(
I
,
J
),
TQCPS
(
I
,
J
),
J
=
1
,
3
),
I
=
1
,
2
)
WRITE
(
IT
)(
U
(
I
),
UP
(
I
),
UN
(
I
),
I
=
1
,
3
)
254
WRITE
(
IT
)(
VINT
(
I
),
I
=
1
,
16
)
WRITE
(
IT
)((
CMUL
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
JLR
=
2
DO
290
ILR
=
1
,
2
IPOL
=
(
-1
)
**
ILR
IF
(
ILR
.EQ.
2
)
JLR
=
1
EXTSEC
=
ECSC
(
ILR
)
QEXT
=
EXTSEC
*
SQSFI
/
GCS
EXTRAT
=
EXTSEC
/
ECS
SCASEC
=
SCSC
(
ILR
)
ALBEDC
=
SCASEC
/
EXTSEC
QSCA
=
SCASEC
*
SQSFI
/
GCS
SCARAT
=
SCASEC
/
SCS
ABSSEC
=
EXTSEC
-
SCASEC
QABS
=
ABSSEC
*
SQSFI
/
GCS
IF
(
DABS
(
ACS
/
ECS
)
.GT.
1.0D-06
)
GO TO
260
ABSRAT
=
1.0D0
GO TO
262
260
ABSRAT
=
ABSSEC
/
ACS
262
S0
=
FSAC
(
ILR
,
ILR
)
*
EXRI
QSCHU
=
DIMAG
(
S0
)
*
CSCH
PSCHU
=
DREAL
(
S0
)
*
CSCH
S0MAG
=
CDABS
(
S0
)
*
CS0
REFINR
=
DREAL
(
FSAC
(
ILR
,
ILR
))/
DREAL
(
TFSAS
)
EXTCOR
=
DIMAG
(
FSAC
(
ILR
,
ILR
))/
DIMAG
(
TFSAS
)
IF
(
INPOL
.NE.
0
)
GO TO
273
WRITE
(
IW
,
6065
)
IPOL
GO TO
275
273
WRITE
(
IW
,
6060
)
IPOL
275
WRITE
(
IW
,
6500
)
WRITE
(
IW
,
6150
)
SCASEC
,
ABSSEC
,
EXTSEC
,
ALBEDC
WRITE
(
IW
,
6600
)
WRITE
(
IW
,
6150
)
QSCA
,
QABS
,
QEXT
WRITE
(
IW
,
6700
)
WRITE
(
IW
,
6150
)
SCARAT
,
ABSRAT
,
EXTRAT
WRITE
(
IW
,
6800
)
ILR
,
ILR
,
FSAC
(
ILR
,
ILR
),
JLR
,
ILR
,
FSAC
(
JLR
,
ILR
)
WRITE
(
IW
,
6810
)
ILR
,
ILR
,
SAC
(
ILR
,
ILR
),
JLR
,
ILR
,
SAC
(
JLR
,
ILR
)
WRITE
(
IW
,
6850
)
ILR
,
ILR
,
REFINR
,
ILR
,
ILR
,
EXTCOR
WRITE
(
IW
,
6930
)
QSCHU
,
PSCHU
,
S0MAG
IF
((
ISAM
.GE.
0
)
.AND.
((
JTHS
.GT.
1
)
.OR.
(
JPHS
.GT.
1
)))
GO TO
290
GAPV
(
1
)
=
GAP
(
1
,
ILR
)
GAPV
(
2
)
=
GAP
(
2
,
ILR
)
GAPV
(
3
)
=
GAP
(
3
,
ILR
)
EXTINS
=
ECSC
(
ILR
)
SCATTS
=
SCSC
(
ILR
)
CALL
RFTR
1
(
U
,
UP
,
UN
,
GAPV
,
EXTINS
,
SCATTS
,
RAPR
,
COSAV
,
FP
,
FN
,
FK
,
FX
,
FY
,
FZ
)
WRITE
(
IW
,
6970
)
COSAV
,
RAPR
WRITE
(
IW
,
6973
)
FP
,
FN
,
FK
WRITE
(
IW
,
6971
)
FX
,
FY
,
FZ
TQEV
(
1
)
=
TQCE
(
ILR
,
1
)
TQEV
(
2
)
=
TQCE
(
ILR
,
2
)
TQEV
(
3
)
=
TQCE
(
ILR
,
3
)
TQSV
(
1
)
=
TQCS
(
ILR
,
1
)
TQSV
(
2
)
=
TQCS
(
ILR
,
2
)
TQSV
(
3
)
=
TQCS
(
ILR
,
3
)
CALL
TQR
(
U
,
UP
,
UN
,
TQEV
,
TQSV
,
TEP
,
TEN
,
TEK
,
TSP
,
TSN
,
TSK
)
WRITE
(
IW
,
6983
)
TEP
,
TEN
,
TEK
WRITE
(
IW
,
6984
)
TSP
,
TSN
,
TSK
WRITE
(
IW
,
6981
)
TQCE
(
ILR
,
1
),
TQCE
(
ILR
,
2
),
TQCE
(
ILR
,
3
)
WRITE
(
IW
,
6982
)
TQCS
(
ILR
,
1
),
TQCS
(
ILR
,
2
),
TQCS
(
ILR
,
3
)
290
CONTINUE
RBIRIF
=
(
DREAL
(
FSAC
(
1
,
1
))
-
DREAL
(
FSAC
(
2
,
2
)))/
DREAL
(
FSAC
(
1
,
1
))
RDICHR
=
(
DIMAG
(
FSAC
(
1
,
1
))
-
DIMAG
(
FSAC
(
2
,
2
)))/
DIMAG
(
FSAC
(
1
,
1
))
WRITE
(
IW
,
6940
)
RBIRIF
WRITE
(
IW
,
6945
)
RDICHR
WRITE
(
IW
,
6332
)
WRITE
(
IW
,
6350
)((
CMUL
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
WRITE
(
IW
,
6337
)
WRITE
(
IW
,
6350
)((
CMULLR
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
IF
(
IAVM
.EQ.
0
)
GO TO
420
CALL
MMULC
(
VINTM
,
CMULLR
,
CMUL
)
WRITE
(
IT
)(
VINTM
(
I
),
I
=
1
,
16
)
WRITE
(
IT
)((
CMUL
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
WRITE
(
IW
,
6460
)
IAVM
IF
(
INPOL
.NE.
0
)
GO TO
316
WRITE
(
IW
,
6066
)
GO TO
318
316
WRITE
(
IW
,
6061
)
318
WRITE
(
IW
,
6332
)
WRITE
(
IW
,
6350
)((
CMUL
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
WRITE
(
IW
,
6337
)
WRITE
(
IW
,
6350
)((
CMULLR
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
4
)
420
CONTINUE
480
IF
(
ISAM
.LT.
1
)
PHS
=
PHS
+
PHSSTP
482
IF
(
ISAM
.LE.
1
)
THSL
=
THSL
+
THSSTP
484
PH
=
PH
+
PHSTP
486
TH
=
TH
+
THSTP
488
CONTINUE
GO TO
500
490
WRITE
(
IW
,
6550
)
JER
,
LCALC
,
ARG
GO TO
500
495
WRITE
(
IW
,
6300
)
GO TO
500
497
WRITE
(
IW
,
*
)
' WRONG INPUT TAPE'
500
CONTINUE
CLOSE
(
IW
)
CLOSE
(
IT
)
CLOSE
(
ITIN
)
STOP
END
SUBROUTINE
RABAS
(
INPOL
,
LI
,
NSPH
,
IOG
,
RMI
,
REI
,
TQSE
,
TQSPE
,
TQSS
,
TQSPS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
IOG
(
NSPH
),
RMI
(
LI
,
NSPH
),
REI
(
LI
,
NSPH
),
CCC
1
TQSE
(
2
,
NSPH
),
TQSPE
(
2
,
NSPH
),
TQSS
(
2
,
NSPH
),
TQSPS
(
2
,
NSPH
)
DIMENSION
IOG
(
6
),
RMI
(
8
,
6
),
REI
(
8
,
6
),
1
TQSE
(
2
,
6
),
TQSPE
(
2
,
6
),
TQSS
(
2
,
6
),
TQSPS
(
2
,
6
)
COMPLEX
*
16
RMI
,
REI
,
TQSPE
,
TQSPS
COMPLEX
*
16
CC0
,
UIM
,
RM
,
RE
,
PCE
,
PCS
C0
=
0.0D0
PIG2
=
DACOS
(
C0
)
*
4.0D0
CC0
=
(
0.0D0
,
0.0D0
)
UIM
=
(
0.0D0
,
1.0D0
)
DO
80
I
=
1
,
NSPH
IF
(
IOG
(
I
)
.LT.
I
)
GO TO
80
TQSE
(
1
,
I
)
=
C0
TQSE
(
2
,
I
)
=
C0
TQSPE
(
1
,
I
)
=
CC0
TQSPE
(
2
,
I
)
=
CC0
TQSS
(
1
,
I
)
=
C0
TQSS
(
2
,
I
)
=
C0
TQSPS
(
1
,
I
)
=
CC0
TQSPS
(
2
,
I
)
=
CC0
DO
70
L
=
1
,
LI
FL
=
L
+
L
+1
RM
=
1.0D0
/
RMI
(
L
,
I
)
RMM
=
DREAL
(
RM
*
DCONJG
(
RM
))
RE
=
1.0D0
/
REI
(
L
,
I
)
REM
=
DREAL
(
RE
*
DCONJG
(
RE
))
IF
(
INPOL
.NE.
0
)
GO TO
40
PCE
=
((
RM
+
RE
)
*
UIM
)
*
FL
PCS
=
((
RMM
+
REM
)
*
FL
)
*
UIM
TQSPE
(
1
,
I
)
=
TQSPE
(
1
,
I
)
-
PCE
TQSPE
(
2
,
I
)
=
TQSPE
(
2
,
I
)
+
PCE
TQSPS
(
1
,
I
)
=
TQSPS
(
1
,
I
)
-
PCS
TQSPS
(
2
,
I
)
=
TQSPS
(
2
,
I
)
+
PCS
GO TO
70
40
CE
=
DREAL
(
RM
+
RE
)
*
FL
CS
=
(
RMM
+
REM
)
*
FL
TQSE
(
1
,
I
)
=
TQSE
(
1
,
I
)
-
CE
TQSE
(
2
,
I
)
=
TQSE
(
2
,
I
)
+
CE
TQSS
(
1
,
I
)
=
TQSS
(
1
,
I
)
-
CS
TQSS
(
2
,
I
)
=
TQSS
(
2
,
I
)
+
CS
70
CONTINUE
IF
(
INPOL
.NE.
0
)
GO TO
75
TQSPE
(
1
,
I
)
=
TQSPE
(
1
,
I
)
*
PIG2
TQSPE
(
2
,
I
)
=
TQSPE
(
2
,
I
)
*
PIG2
TQSPS
(
1
,
I
)
=
TQSPS
(
1
,
I
)
*
PIG2
TQSPS
(
2
,
I
)
=
TQSPS
(
2
,
I
)
*
PIG2
GO TO
80
75
TQSE
(
1
,
I
)
=
TQSE
(
1
,
I
)
*
PIG2
TQSE
(
2
,
I
)
=
TQSE
(
2
,
I
)
*
PIG2
TQSS
(
1
,
I
)
=
TQSS
(
1
,
I
)
*
PIG2
TQSS
(
2
,
I
)
=
TQSS
(
2
,
I
)
*
PIG2
80
CONTINUE
RETURN
END
SUBROUTINE
TQR
(
U
,
UP
,
UN
,
TQEV
,
TQSV
,
TEP
,
TEN
,
TEK
,
TSP
,
TSN
,
TSK
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
U
(
3
),
UP
(
3
),
UN
(
3
),
TQEV
(
3
),
TQSV
(
3
)
TEP
=
UP
(
1
)
*
TQEV
(
1
)
+
UP
(
2
)
*
TQEV
(
2
)
+
UP
(
3
)
*
TQEV
(
3
)
TEN
=
UN
(
1
)
*
TQEV
(
1
)
+
UN
(
2
)
*
TQEV
(
2
)
+
UN
(
3
)
*
TQEV
(
3
)
TEK
=
U
(
1
)
*
TQEV
(
1
)
+
U
(
2
)
*
TQEV
(
2
)
+
U
(
3
)
*
TQEV
(
3
)
TSP
=
UP
(
1
)
*
TQSV
(
1
)
+
UP
(
2
)
*
TQSV
(
2
)
+
UP
(
3
)
*
TQSV
(
3
)
TSN
=
UN
(
1
)
*
TQSV
(
1
)
+
UN
(
2
)
*
TQSV
(
2
)
+
UN
(
3
)
*
TQSV
(
3
)
TSK
=
U
(
1
)
*
TQSV
(
1
)
+
U
(
2
)
*
TQSV
(
2
)
+
U
(
3
)
*
TQSV
(
3
)
RETURN
END
SUBROUTINE
RABA
(
LE
,
AM0M
,
W
,
TQCE
,
TQCPE
,
TQCS
,
TQCPS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
AM0M
(
NLEMT
,
NLEMT
),
W
(
NLEMT
,
4
)
DIMENSION
AM0M
(
160
,
160
),
W
(
160
,
4
),
1
TQCE
(
2
,
3
),
TQCPE
(
2
,
3
),
TQCS
(
2
,
3
),
TQCPS
(
2
,
3
)
COMPLEX
*
16
AM0M
,
W
,
TQCPE
,
TQCPS
CCC
DIMENSION
A
(
NLEMT
,
2
)
DIMENSION
A
(
160
,
2
),
CTQCE
(
2
,
3
),
CTQCS
(
2
,
3
)
COMPLEX
*
16
A
,
CTQCE
,
CTQCS
COMPLEX
*
16
CC0
,
UIM
,
ACW
,
ACWP
,
ACA
,
ACAP
,
C1
,
C2
,
C3
CC0
=
(
0.0D0
,
0.0D0
)
UIM
=
(
0.0D0
,
1.0D0
)
SQ2I
=
1.0D0
/
DSQRT
(
2.0D0
)
NLEM
=
LE
*
(
LE
+2
)
NLEMT
=
NLEM
+
NLEM
DO
20
I
=
1
,
NLEMT
C1
=
CC0
C2
=
CC0
DO
10
J
=
1
,
NLEMT
C1
=
C1
+
AM0M
(
I
,
J
)
*
W
(
J
,
1
)
C2
=
C2
+
AM0M
(
I
,
J
)
*
W
(
J
,
2
)
10
CONTINUE
A
(
I
,
1
)
=
C1
A
(
I
,
2
)
=
C2
20
CONTINUE
JPO
=
2
DO
70
IPO
=
1
,
2
IF
(
IPO
.EQ.
2
)
JPO
=
1
CTQCE
(
IPO
,
1
)
=
CC0
CTQCE
(
IPO
,
2
)
=
CC0
CTQCE
(
IPO
,
3
)
=
CC0
TQCPE
(
IPO
,
1
)
=
CC0
TQCPE
(
IPO
,
2
)
=
CC0
TQCPE
(
IPO
,
3
)
=
CC0
CTQCS
(
IPO
,
1
)
=
CC0
CTQCS
(
IPO
,
2
)
=
CC0
CTQCS
(
IPO
,
3
)
=
CC0
TQCPS
(
IPO
,
1
)
=
CC0
TQCPS
(
IPO
,
2
)
=
CC0
TQCPS
(
IPO
,
3
)
=
CC0
DO
60
L
=
1
,
LE
LPO
=
L
+1
IL
=
L
*
LPO
LTPO
=
L
+
LPO
DO
60
IM
=
1
,
LTPO
M
=
IM
-
LPO
I
=
M
+
IL
IE
=
I
+
NLEM
MMMU
=
M
+1
MMMMU
=
IABS
(
MMMU
)
IF
(
MMMMU
.GT.
L
)
GO TO
30
IMMU
=
MMMU
+
IL
IMMUE
=
IMMU
+
NLEM
RMU
=
(
L
+
MMMU
)
*
(
L
-
M
)
RMU
=-
DSQRT
(
RMU
)
*
SQ2I
ACW
=
DCONJG
(
A
(
I
,
IPO
))
*
W
(
IMMU
,
IPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
W
(
IMMUE
,
IPO
)
ACWP
=
DCONJG
(
A
(
I
,
IPO
))
*
W
(
IMMU
,
JPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
W
(
IMMUE
,
JPO
)
ACA
=
DCONJG
(
A
(
I
,
IPO
))
*
A
(
IMMU
,
IPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
A
(
IMMUE
,
IPO
)
ACAP
=
DCONJG
(
A
(
I
,
IPO
))
*
A
(
IMMU
,
JPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
A
(
IMMUE
,
JPO
)
CTQCE
(
IPO
,
1
)
=
CTQCE
(
IPO
,
1
)
+
ACW
*
RMU
TQCPE
(
IPO
,
1
)
=
TQCPE
(
IPO
,
1
)
+
ACWP
*
RMU
CTQCS
(
IPO
,
1
)
=
CTQCS
(
IPO
,
1
)
+
ACA
*
RMU
TQCPS
(
IPO
,
1
)
=
TQCPS
(
IPO
,
1
)
+
ACAP
*
RMU
30
RMU
=-
M
ACW
=
DCONJG
(
A
(
I
,
IPO
))
*
W
(
I
,
IPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
W
(
IE
,
IPO
)
ACWP
=
DCONJG
(
A
(
I
,
IPO
))
*
W
(
I
,
JPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
W
(
IE
,
JPO
)
ACA
=
DCONJG
(
A
(
I
,
IPO
))
*
A
(
I
,
IPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
A
(
IE
,
IPO
)
ACAP
=
DCONJG
(
A
(
I
,
IPO
))
*
A
(
I
,
JPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
A
(
IE
,
JPO
)
CTQCE
(
IPO
,
2
)
=
CTQCE
(
IPO
,
2
)
+
ACW
*
RMU
TQCPE
(
IPO
,
2
)
=
TQCPE
(
IPO
,
2
)
+
ACWP
*
RMU
CTQCS
(
IPO
,
2
)
=
CTQCS
(
IPO
,
2
)
+
ACA
*
RMU
TQCPS
(
IPO
,
2
)
=
TQCPS
(
IPO
,
2
)
+
ACAP
*
RMU
MMMU
=
M
-1
MMMMU
=
IABS
(
MMMU
)
IF
(
MMMMU
.GT.
L
)
GO TO
50
IMMU
=
MMMU
+
IL
IMMUE
=
IMMU
+
NLEM
RMU
=
(
L
-
MMMU
)
*
(
L
+
M
)
RMU
=
DSQRT
(
RMU
)
*
SQ2I
ACW
=
DCONJG
(
A
(
I
,
IPO
))
*
W
(
IMMU
,
IPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
W
(
IMMUE
,
IPO
)
ACWP
=
DCONJG
(
A
(
I
,
IPO
))
*
W
(
IMMU
,
JPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
W
(
IMMUE
,
JPO
)
ACA
=
DCONJG
(
A
(
I
,
IPO
))
*
A
(
IMMU
,
IPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
A
(
IMMUE
,
IPO
)
ACAP
=
DCONJG
(
A
(
I
,
IPO
))
*
A
(
IMMU
,
JPO
)
+
DCONJG
(
A
(
IE
,
IPO
))
*
A
(
IMMUE
,
JPO
)
CTQCE
(
IPO
,
3
)
=
CTQCE
(
IPO
,
3
)
+
ACW
*
RMU
TQCPE
(
IPO
,
3
)
=
TQCPE
(
IPO
,
3
)
+
ACWP
*
RMU
CTQCS
(
IPO
,
3
)
=
CTQCS
(
IPO
,
3
)
+
ACA
*
RMU
TQCPS
(
IPO
,
3
)
=
TQCPS
(
IPO
,
3
)
+
ACAP
*
RMU
50
CONTINUE
60
CONTINUE
70
CONTINUE
DO
78
IPO
=
1
,
2
TQCE
(
IPO
,
1
)
=
DREAL
(
CTQCE
(
IPO
,
1
)
-
CTQCE
(
IPO
,
3
))
*
SQ2I
TQCE
(
IPO
,
2
)
=
DREAL
((
CTQCE
(
IPO
,
1
)
+
CTQCE
(
IPO
,
3
))
*
UIM
)
*
SQ2I
TQCE
(
IPO
,
3
)
=
DREAL
(
CTQCE
(
IPO
,
2
))
C1
=
TQCPE
(
IPO
,
1
)
C2
=
TQCPE
(
IPO
,
2
)
C3
=
TQCPE
(
IPO
,
3
)
TQCPE
(
IPO
,
1
)
=
(
C1
-
C3
)
*
SQ2I
TQCPE
(
IPO
,
2
)
=
(
C1
+
C3
)
*
(
UIM
*
SQ2I
)
TQCPE
(
IPO
,
3
)
=
C2
TQCS
(
IPO
,
1
)
=-
DREAL
(
CTQCS
(
IPO
,
1
)
-
CTQCS
(
IPO
,
3
))
*
SQ2I
TQCS
(
IPO
,
2
)
=-
DREAL
((
CTQCS
(
IPO
,
1
)
+
CTQCS
(
IPO
,
3
))
*
UIM
)
*
SQ2I
TQCS
(
IPO
,
3
)
=-
DREAL
(
CTQCS
(
IPO
,
2
))
C1
=
TQCPS
(
IPO
,
1
)
C2
=
TQCPS
(
IPO
,
2
)
C3
=
TQCPS
(
IPO
,
3
)
TQCPS
(
IPO
,
1
)
=-
(
C1
-
C3
)
*
SQ2I
TQCPS
(
IPO
,
2
)
=-
(
C1
+
C3
)
*
(
UIM
*
SQ2I
)
TQCPS
(
IPO
,
3
)
=-
C2
78
CONTINUE
RETURN
END
SUBROUTINE
RFTR
1
(
U
,
UP
,
UN
,
GAPV
,
EXTINS
,
SCATTS
,
RAPR
,
COSAV
,
FP
,
FN
,
FK
,
FX
,
FY
,
FZ
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
U
(
3
),
UP
(
3
),
UN
(
3
),
GAPV
(
3
)
FK
=
U
(
1
)
*
GAPV
(
1
)
+
U
(
2
)
*
GAPV
(
2
)
+
U
(
3
)
*
GAPV
(
3
)
RAPR
=
EXTINS
-
FK
COSAV
=
FK
/
SCATTS
FP
=-
(
UP
(
1
)
*
GAPV
(
1
)
+
UP
(
2
)
*
GAPV
(
2
)
+
UP
(
3
)
*
GAPV
(
3
))
FN
=-
(
UN
(
1
)
*
GAPV
(
1
)
+
UN
(
2
)
*
GAPV
(
2
)
+
UN
(
3
)
*
GAPV
(
3
))
FK
=
RAPR
FX
=
U
(
1
)
*
EXTINS
-
GAPV
(
1
)
FY
=
U
(
2
)
*
EXTINS
-
GAPV
(
2
)
FZ
=
U
(
3
)
*
EXTINS
-
GAPV
(
3
)
RETURN
END
SUBROUTINE
MEXTC
(
VK
,
EXRI
,
FSAC
,
CEXTLR
,
CEXT
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
FSAC
(
2
,
2
),
CEXTLR
(
4
,
4
),
CEXT
(
4
,
4
)
COMPLEX
*
16
FSAC
FA11R
=
DREAL
(
FSAC
(
1
,
1
))
FA11I
=
DIMAG
(
FSAC
(
1
,
1
))
FA21R
=
DREAL
(
FSAC
(
2
,
1
))
FA21I
=
DIMAG
(
FSAC
(
2
,
1
))
FA12R
=
DREAL
(
FSAC
(
1
,
2
))
FA12I
=
DIMAG
(
FSAC
(
1
,
2
))
FA22R
=
DREAL
(
FSAC
(
2
,
2
))
FA22I
=
DIMAG
(
FSAC
(
2
,
2
))
CEXTLR
(
1
,
1
)
=
FA11I
*
2.0D0
CEXTLR
(
1
,
2
)
=
0.0D0
CEXTLR
(
1
,
3
)
=-
FA12I
CEXTLR
(
1
,
4
)
=-
FA12R
CEXTLR
(
2
,
1
)
=
0.0D0
CEXTLR
(
2
,
2
)
=
FA22I
*
2.0D0
CEXTLR
(
2
,
3
)
=-
FA21I
CEXTLR
(
2
,
4
)
=
FA21R
CEXTLR
(
3
,
1
)
=-
FA21I
*
2.0D0
CEXTLR
(
3
,
2
)
=-
FA12I
*
2.0D0
CEXTLR
(
3
,
3
)
=
FA11I
+
FA22I
CEXTLR
(
3
,
4
)
=
FA22R
-
FA11R
CEXTLR
(
4
,
1
)
=
FA21R
*
2.0D0
CEXTLR
(
4
,
2
)
=-
FA12R
*
2.0D0
CEXTLR
(
4
,
3
)
=
FA11R
-
FA22R
CEXTLR
(
4
,
4
)
=
CEXTLR
(
3
,
3
)
CEXT
(
1
,
1
)
=
CEXTLR
(
4
,
4
)
CEXT
(
2
,
2
)
=
CEXTLR
(
4
,
4
)
CEXT
(
3
,
3
)
=
CEXTLR
(
4
,
4
)
CEXT
(
3
,
4
)
=
CEXTLR
(
3
,
4
)
CEXT
(
4
,
3
)
=
CEXTLR
(
4
,
3
)
CEXT
(
4
,
4
)
=
CEXTLR
(
4
,
4
)
CEXT
(
1
,
2
)
=
FA11I
-
FA22I
CEXT
(
1
,
3
)
=-
FA12I
-
FA21I
CEXT
(
1
,
4
)
=
FA21R
-
FA12R
CEXT
(
2
,
1
)
=
CEXT
(
1
,
2
)
CEXT
(
2
,
3
)
=
FA21I
-
FA12I
CEXT
(
4
,
2
)
=
FA12R
+
FA21R
CEXT
(
2
,
4
)
=-
CEXT
(
4
,
2
)
CEXT
(
3
,
1
)
=
CEXT
(
1
,
3
)
CEXT
(
3
,
2
)
=-
CEXT
(
2
,
3
)
CEXT
(
4
,
1
)
=
CEXT
(
1
,
4
)
CKM
=
VK
/
EXRI
DO
10
I
=
1
,
4
DO
10
J
=
1
,
4
CEXTLR
(
I
,
J
)
=
CEXTLR
(
I
,
J
)
*
CKM
10
CEXT
(
I
,
J
)
=
CEXT
(
I
,
J
)
*
CKM
RETURN
END
SUBROUTINE
MMULC
(
VINT
,
CMULLR
,
CMUL
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
VINT
(
16
),
CMULLR
(
4
,
4
),
CMUL
(
4
,
4
)
COMPLEX
*
16
VINT
SM2
=
DREAL
(
VINT
(
1
))
S24
=
DREAL
(
VINT
(
2
))
D24
=
DIMAG
(
VINT
(
2
))
SM4
=
DREAL
(
VINT
(
6
))
S23
=
DREAL
(
VINT
(
9
))
D32
=
DIMAG
(
VINT
(
9
))
S34
=
DREAL
(
VINT
(
10
))
D34
=
DIMAG
(
VINT
(
10
))
SM3
=
DREAL
(
VINT
(
11
))
S31
=
DREAL
(
VINT
(
12
))
D31
=
DIMAG
(
VINT
(
12
))
S21
=
DREAL
(
VINT
(
13
))
D12
=
DIMAG
(
VINT
(
13
))
S41
=
DREAL
(
VINT
(
14
))
D14
=
DIMAG
(
VINT
(
14
))
SM1
=
DREAL
(
VINT
(
16
))
CMULLR
(
1
,
1
)
=
SM2
CMULLR
(
1
,
2
)
=
SM3
CMULLR
(
1
,
3
)
=-
S23
CMULLR
(
1
,
4
)
=-
D32
CMULLR
(
2
,
1
)
=
SM4
CMULLR
(
2
,
2
)
=
SM1
CMULLR
(
2
,
3
)
=-
S41
CMULLR
(
2
,
4
)
=-
D14
CMULLR
(
3
,
1
)
=-
S24
*
2.0D0
CMULLR
(
3
,
2
)
=-
S31
*
2.0D0
CMULLR
(
3
,
3
)
=
S21
+
S34
CMULLR
(
3
,
4
)
=
D34
+
D12
CMULLR
(
4
,
1
)
=-
D24
*
2.0D0
CMULLR
(
4
,
2
)
=-
D31
*
2.0D0
CMULLR
(
4
,
3
)
=
D34
-
D12
CMULLR
(
4
,
4
)
=
S21
-
S34
CMUL
(
1
,
1
)
=
(
SM2
+
SM3
+
SM4
+
SM1
)
*
0.5D0
CMUL
(
1
,
2
)
=
(
SM2
-
SM3
+
SM4
-
SM1
)
*
0.5D0
CMUL
(
1
,
3
)
=-
S23
-
S41
CMUL
(
1
,
4
)
=-
D32
-
D14
CMUL
(
2
,
1
)
=
(
SM2
+
SM3
-
SM4
-
SM1
)
*
0.5D0
CMUL
(
2
,
2
)
=
(
SM2
-
SM3
-
SM4
+
SM1
)
*
0.5D0
CMUL
(
2
,
3
)
=-
S23
+
S41
CMUL
(
2
,
4
)
=-
D32
+
D14
CMUL
(
3
,
1
)
=-
S24
-
S31
CMUL
(
3
,
2
)
=-
S24
+
S31
CMUL
(
3
,
3
)
=
S21
+
S34
CMUL
(
3
,
4
)
=
D34
+
D12
CMUL
(
4
,
1
)
=-
D24
-
D31
CMUL
(
4
,
2
)
=-
D24
+
D31
CMUL
(
4
,
3
)
=
D34
-
D12
CMUL
(
4
,
4
)
=
S21
-
S34
RETURN
END
SUBROUTINE
SCR0
(
VK
,
EXRI
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C3
/
TFSAS
,
TSAS
(
2
,
2
),
GCS
,
SCS
,
ECS
,
ACS
COMPLEX
*
16
TFSAS
,
TSAS
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMPLEX
*
16
SUM21
,
RM
,
RE
,
CC0
,
CSAM
CC0
=
(
0.0D0
,
0.0D0
)
C0
=
0.0D0
EXDC
=
EXRI
*
EXRI
CCS
=
4.0D0
*
DACOS
(
C0
)/(
VK
*
VK
)
CCCS
=
CCS
/
EXDC
CSAM
=-
(
CCS
/(
EXRI
*
VK
))
*
(
0.0D0
,
0.5D0
)
SCS
=
C0
ECS
=
C0
ACS
=
C0
TFSAS
=
CC0
DO
14
I
=
1
,
NSPH
IOGI
=
IOG
(
I
)
IF
(
IOGI
.LT.
I
)
GO TO
12
SUMS
=
C0
SUM21
=
CC0
DO
10
L
=
1
,
LI
FL
=
L
+
L
+1
RM
=
1.0D0
/
RMI
(
L
,
I
)
RE
=
1.0D0
/
REI
(
L
,
I
)
SUMS
=
SUMS
+
DREAL
(
DCONJG
(
RM
)
*
RM
+
DCONJG
(
RE
)
*
RE
)
*
FL
10
SUM21
=
SUM21
+
(
RM
+
RE
)
*
FL
SUM21
=-
SUM21
SCASEC
=
CCCS
*
SUMS
EXTSEC
=-
CCCS
*
DREAL
(
SUM21
)
ABSSEC
=
EXTSEC
-
SCASEC
SSCS
(
I
)
=
SCASEC
SEXS
(
I
)
=
EXTSEC
SABS
(
I
)
=
ABSSEC
GCSS
=
GCSV
(
I
)
SQSCS
(
I
)
=
SCASEC
/
GCSS
SQEXS
(
I
)
=
EXTSEC
/
GCSS
SQABS
(
I
)
=
ABSSEC
/
GCSS
FSAS
(
I
)
=
SUM21
*
CSAM
12
SCS
=
SCS
+
SSCS
(
IOGI
)
ECS
=
ECS
+
SEXS
(
IOGI
)
ACS
=
ACS
+
SABS
(
IOGI
)
14
TFSAS
=
TFSAS
+
FSAS
(
IOGI
)
RETURN
END
SUBROUTINE
SCR2
(
VK
,
VKARG
,
EXRI
,
DUK
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C3
/
TFSAS
,
TSAS
(
2
,
2
),
GCS
,
SCS
,
ECS
,
ACS
COMPLEX
*
16
TFSAS
,
TSAS
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
DIMENSION
DUK
(
3
)
COMPLEX
*
16
S11
,
S21
,
S12
,
S22
,
RM
,
RE
,
CC0
,
CSAM
,
CPH
,
PHAS
,
CC
CC0
=
(
0.0D0
,
0.0D0
)
C0
=
0.0D0
CCS
=
1.0D0
/(
VK
*
VK
)
CSAM
=-
(
CCS
/(
EXRI
*
VK
))
*
(
0.0D0
,
0.5D0
)
PIGFSQ
=
6.4D+1
*
DACOS
(
C0
)
**
2
CFSQ
=
4.0D0
/(
PIGFSQ
*
CCS
*
CCS
)
CPH
=
(
0.0D0
,
1.0D0
)
*
(
EXRI
*
VKARG
)
LS
=
MIN0
(
LI
,
LE
)
TSAS
(
1
,
1
)
=
CC0
TSAS
(
2
,
1
)
=
CC0
TSAS
(
1
,
2
)
=
CC0
TSAS
(
2
,
2
)
=
CC0
DO
14
I
=
1
,
NSPH
IOGI
=
IOG
(
I
)
IF
(
IOGI
.LT.
I
)
GO TO
12
K
=
0
S11
=
CC0
S21
=
CC0
S12
=
CC0
S22
=
CC0
DO
10
L
=
1
,
LS
RM
=
1.0D0
/
RMI
(
L
,
I
)
RE
=
1.0D0
/
REI
(
L
,
I
)
LTPO
=
L
+
L
+1
DO
10
IM
=
1
,
LTPO
K
=
K
+1
KE
=
K
+
NLEM
S11
=
S11
-
W
(
K
,
3
)
*
W
(
K
,
1
)
*
RM
-
W
(
KE
,
3
)
*
W
(
KE
,
1
)
*
RE
S21
=
S21
-
W
(
K
,
4
)
*
W
(
K
,
1
)
*
RM
-
W
(
KE
,
4
)
*
W
(
KE
,
1
)
*
RE
S12
=
S12
-
W
(
K
,
3
)
*
W
(
K
,
2
)
*
RM
-
W
(
KE
,
3
)
*
W
(
KE
,
2
)
*
RE
10
S22
=
S22
-
W
(
K
,
4
)
*
W
(
K
,
2
)
*
RM
-
W
(
KE
,
4
)
*
W
(
KE
,
2
)
*
RE
SAS
(
I
,
1
,
1
)
=
S11
*
CSAM
SAS
(
I
,
2
,
1
)
=
S21
*
CSAM
SAS
(
I
,
1
,
2
)
=
S12
*
CSAM
SAS
(
I
,
2
,
2
)
=
S22
*
CSAM
12
PHAS
=
CDEXP
(
CPH
*
(
DUK
(
1
)
*
RXX
(
I
)
+
DUK
(
2
)
*
RYY
(
I
)
+
DUK
(
3
)
*
RZZ
(
I
)))
TSAS
(
1
,
1
)
=
TSAS
(
1
,
1
)
+
SAS
(
IOGI
,
1
,
1
)
*
PHAS
TSAS
(
2
,
1
)
=
TSAS
(
2
,
1
)
+
SAS
(
IOGI
,
2
,
1
)
*
PHAS
TSAS
(
1
,
2
)
=
TSAS
(
1
,
2
)
+
SAS
(
IOGI
,
1
,
2
)
*
PHAS
14
TSAS
(
2
,
2
)
=
TSAS
(
2
,
2
)
+
SAS
(
IOGI
,
2
,
2
)
*
PHAS
DO
24
I
=
1
,
NSPH
IOGI
=
IOG
(
I
)
IF
(
IOGI
.LT.
I
)
GO TO
24
J
=
0
DO
22
IPO1
=
1
,
2
DO
22
JPO1
=
1
,
2
CC
=
DCONJG
(
SAS
(
I
,
JPO1
,
IPO1
))
DO
22
IPO2
=
1
,
2
DO
22
JPO2
=
1
,
2
J
=
J
+1
22
VINTS
(
I
,
J
)
=
SAS
(
I
,
JPO2
,
IPO2
)
*
CC
*
CFSQ
24
CONTINUE
J
=
0
DO
32
IPO1
=
1
,
2
DO
32
JPO1
=
1
,
2
CC
=
DCONJG
(
TSAS
(
JPO1
,
IPO1
))
DO
32
IPO2
=
1
,
2
DO
32
JPO2
=
1
,
2
J
=
J
+1
32
VINTT
(
J
)
=
TSAS
(
JPO2
,
IPO2
)
*
CC
*
CFSQ
RETURN
END
SUBROUTINE
PCROS
(
VK
,
EXRI
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMPLEX
*
16
SUMP
,
SUM1
,
SUM2
,
SUM3
,
SUM4
,
AM
,
AMP
,
CC
,
CSAM
,
CC0
CC0
=
(
0.0D0
,
0.0D0
)
C0
=
0.0D0
EXDC
=
EXRI
*
EXRI
CCS
=
1.0D0
/(
VK
*
VK
)
CCCS
=
CCS
/
EXDC
CSAM
=-
(
CCS
/(
EXRI
*
VK
))
*
(
0.0D0
,
0.5D0
)
PIGFSQ
=
6.4D+1
*
DACOS
(
C0
)
**
2
CFSQ
=
4.0D0
/(
PIGFSQ
*
CCS
*
CCS
)
NLEMT
=
NLEM
+
NLEM
JPO
=
2
DO
18
IPO
=
1
,
2
IF
(
IPO
.EQ.
2
)
JPO
=
1
IPOPT
=
IPO
+2
JPOPT
=
JPO
+2
SUM
=
C0
SUMP
=
CC0
SUM1
=
CC0
SUM2
=
CC0
SUM3
=
CC0
SUM4
=
CC0
DO
12
I
=
1
,
NLEMT
AM
=
CC0
AMP
=
CC0
DO
10
J
=
1
,
NLEMT
AM
=
AM
+
AM0M
(
I
,
J
)
*
W
(
J
,
IPO
)
10
AMP
=
AMP
+
AM0M
(
I
,
J
)
*
W
(
J
,
JPO
)
SUM
=
SUM
+
DREAL
(
DCONJG
(
AM
)
*
AM
)
SUMP
=
SUMP
+
(
DCONJG
(
AMP
)
*
AM
)
SUM1
=
SUM1
+
DCONJG
(
W
(
I
,
IPO
))
*
AM
SUM2
=
SUM2
+
DCONJG
(
W
(
I
,
JPO
))
*
AM
SUM3
=
SUM3
+
W
(
I
,
IPOPT
)
*
AM
12
SUM4
=
SUM4
+
W
(
I
,
JPOPT
)
*
AM
SCSC
(
IPO
)
=
CCCS
*
SUM
SCSCP
(
IPO
)
=
CCCS
*
SUMP
ECSC
(
IPO
)
=-
CCCS
*
DREAL
(
SUM1
)
ECSCP
(
IPO
)
=-
CCCS
*
SUM2
FSAC
(
IPO
,
IPO
)
=
CSAM
*
SUM1
FSAC
(
JPO
,
IPO
)
=
CSAM
*
SUM2
SAC
(
IPO
,
IPO
)
=
CSAM
*
SUM3
18
SAC
(
JPO
,
IPO
)
=
CSAM
*
SUM4
I
=
0
DO
22
IPO1
=
1
,
2
DO
22
JPO1
=
1
,
2
CC
=
DCONJG
(
SAC
(
JPO1
,
IPO1
))
DO
22
IPO2
=
1
,
2
DO
22
JPO2
=
1
,
2
I
=
I
+1
22
VINT
(
I
)
=
SAC
(
JPO2
,
IPO2
)
*
CC
*
CFSQ
RETURN
END
SUBROUTINE
PCRSM0
(
VK
,
EXRI
,
INPOL
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMPLEX
*
16
SUM1
,
SUM2
,
SUM3
,
SUM4
,
SUMPD
,
SUMS1
,
SUMS2
,
SUMS3
,
SUMS4
,
1
CSAM
,
CC0
,
UIM
CC0
=
(
0.0D0
,
0.0D0
)
UIM
=
(
0.0D0
,
1.0D0
)
C0
=
0.0D0
EXDC
=
EXRI
*
EXRI
CCS
=
4.0D0
*
DACOS
(
C0
)/(
VK
*
VK
)
CCCS
=
CCS
/
EXDC
CSAM
=-
(
CCS
/(
EXRI
*
VK
))
*
(
0.0D0
,
0.5D0
)
SUM2
=
CC0
SUM3
=
CC0
DO
14
I
=
1
,
NLEM
IE
=
I
+
NLEM
SUM2
=
SUM2
+
(
AM0M
(
I
,
I
)
+
AM0M
(
IE
,
IE
))
14
SUM3
=
SUM3
+
(
AM0M
(
I
,
IE
)
+
AM0M
(
IE
,
I
))
SUMPI
=
C0
SUMPD
=
CC0
NLEMT
=
NLEM
+
NLEM
DO
16
I
=
1
,
NLEMT
DO
16
J
=
1
,
NLEM
JE
=
J
+
NLEM
SUMPI
=
SUMPI
+
DREAL
1
(
DCONJG
(
AM0M
(
I
,
J
))
*
AM0M
(
I
,
J
)
+
DCONJG
(
AM0M
(
I
,
JE
))
*
AM0M
(
I
,
JE
))
16
SUMPD
=
SUMPD
+
1
(
DCONJG
(
AM0M
(
I
,
J
))
*
AM0M
(
I
,
JE
)
+
DCONJG
(
AM0M
(
I
,
JE
))
*
AM0M
(
I
,
J
))
IF
(
INPOL
.NE.
0
)
GO TO
18
SUM1
=
SUM2
SUM4
=
SUM3
*
UIM
SUM3
=-
SUM4
SUMS1
=
SUMPI
SUMS2
=
SUMPI
SUMS3
=
SUMPD
*
UIM
SUMS4
=-
SUMS3
GO TO
20
18
SUM1
=
SUM2
+
SUM3
SUM2
=
SUM2
-
SUM3
SUM3
=
CC0
SUM4
=
CC0
SUMS1
=
SUMPI
-
SUMPD
SUMS2
=
SUMPI
+
SUMPD
SUMS3
=
CC0
SUMS4
=
CC0
20
ECSCM
(
1
)
=-
CCCS
*
DREAL
(
SUM2
)
ECSCM
(
2
)
=-
CCCS
*
DREAL
(
SUM1
)
ECSCPM
(
1
)
=-
CCCS
*
SUM4
ECSCPM
(
2
)
=-
CCCS
*
SUM3
FSACM
(
1
,
1
)
=
CSAM
*
SUM2
FSACM
(
2
,
1
)
=
CSAM
*
SUM4
FSACM
(
2
,
2
)
=
CSAM
*
SUM1
FSACM
(
1
,
2
)
=
CSAM
*
SUM3
SCSCM
(
1
)
=
CCCS
*
DREAL
(
SUMS1
)
SCSCM
(
2
)
=
CCCS
*
DREAL
(
SUMS2
)
SCSCPM
(
1
)
=
CCCS
*
SUMS3
SCSCPM
(
2
)
=
CCCS
*
SUMS4
RETURN
END
SUBROUTINE
CRSM1
(
VK
,
EXRI
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMMON
/
C6
/
RAC3J
(
17
)
CCC
DIMENSION
SVF
(
LE4PO
,
LE4PO
,
4
),
SVW
(
LE4PO
,
4
,
4
),
SVS
(
LE4PO
,
4
)
CCC
LE4PO
=
LE
*
4+1
DIMENSION
SVF
(
33
,
33
,
4
),
SVW
(
33
,
4
,
4
),
SVS
(
33
,
4
)
COMPLEX
*
16
SVF
,
SVW
,
SVS
COMPLEX
*
16
CAM
,
CC0
CC0
=
(
0.0D0
,
0.0D0
)
C0
=
0.0D0
EXDC
=
EXRI
*
EXRI
CCS
=
1.0D0
/(
VK
*
VK
)
PIGFSQ
=
6.4D+1
*
DACOS
(
C0
)
**
2
CINT
=
CCS
/(
PIGFSQ
*
EXDC
)
LETPO
=
LE
+
LE
+1
DO
20
I
=
1
,
16
20
VINTM
(
I
)
=
CC0
DO
40
LPO
=
1
,
LETPO
L
=
LPO
-1
LTPO
=
LPO
+
L
IMMN
=
LETPO
-
L
IMMX
=
LETPO
+
L
DO
22
IMF
=
IMMN
,
IMMX
DO
22
IMS
=
IMMN
,
IMMX
DO
22
IPO
=
1
,
4
22
SVF
(
IMF
,
IMS
,
IPO
)
=
CC0
DO
34
L1
=
1
,
LE
IL1
=
L1
*
(
L1
+1
)
DO
34
L2
=
1
,
LE
IF
((
L
.LT.
IABS
(
L2
-
L1
))
.OR.
(
L
.GT.
(
L2
+
L1
)))
GO TO
34
IL2
=
L2
*
(
L2
+1
)
DO
24
IM
=
IMMN
,
IMMX
DO
24
IPA
=
1
,
4
SVS
(
IM
,
IPA
)
=
CC0
DO
24
IPO
=
1
,
4
24
SVW
(
IM
,
IPA
,
IPO
)
=
CC0
DO
30
IM
=
IMMN
,
IMMX
M
=
IM
-
LETPO
CALL
R3JMR
(
L
,
L1
,
L2
,
M
)
M1MNMO
=
MAX0
(
-
L1
,
-
L2
-
M
)
-1
NM1
=
MIN0
(
L1
,
L2
-
M
)
-
M1MNMO
DO
30
IM1
=
1
,
NM1
M1
=-
IM1
-
M1MNMO
ISN
=
1
IF
(
MOD
(
M1
,
2
)
.NE.
0
)
ISN
=
-1
CG3J
=
RAC3J
(
IM1
)
*
ISN
CCC
CG
=
(
LTPO
**
(
1
/
2
))
*
CG3J
ILM1
=
IL1
+
M1
ILM2
=
IL2
+
M1
-
M
IPA
=
0
DO
30
IPA1
=
1
,
2
I1
=
ILM1
IF
(
IPA1
.EQ.
2
)
I1
=
ILM1
+
NLEM
DO
30
IPA2
=
1
,
2
I2
=
ILM2
IF
(
IPA2
.EQ.
2
)
I2
=
ILM2
+
NLEM
IPA
=
IPA
+1
SVS
(
IM
,
IPA
)
=
SVS
(
IM
,
IPA
)
+
AM0M
(
I1
,
I2
)
*
CG3J
IPO
=
0
DO
30
IPO2
=
1
,
2
DO
30
IPO1
=
3
,
4
IPO
=
IPO
+1
30
SVW
(
IM
,
IPA
,
IPO
)
=
SVW
(
IM
,
IPA
,
IPO
)
+
W
(
I1
,
IPO1
)
*
W
(
I2
,
IPO2
)
*
CG3J
DO
32
IMF
=
IMMN
,
IMMX
DO
32
IMS
=
IMMN
,
IMMX
DO
32
IPO
=
1
,
4
DO
32
IPA
=
1
,
4
32
SVF
(
IMF
,
IMS
,
IPO
)
=
SVF
(
IMF
,
IMS
,
IPO
)
+
SVW
(
IMF
,
IPA
,
IPO
)
*
SVS
(
IMS
,
IPA
)
34
CONTINUE
DO
40
IMF
=
IMMN
,
IMMX
DO
40
IMS
=
IMMN
,
IMMX
I
=
0
DO
40
IPO1
=
1
,
4
CAM
=
DCONJG
(
SVF
(
IMF
,
IMS
,
IPO1
))
DO
40
IPO2
=
1
,
4
I
=
I
+1
40
VINTM
(
I
)
=
VINTM
(
I
)
+
(
SVF
(
IMF
,
IMS
,
IPO2
)
*
CAM
)
*
LTPO
DO
42
I
=
1
,
16
42
VINTM
(
I
)
=
VINTM
(
I
)
*
CINT
RETURN
END
SUBROUTINE
APS
(
ZPV
,
LI
,
NSPH
,
IOG
,
RMI
,
REI
,
SQK
,
GAPS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
ZPV
(
LM
,
3
,
2
,
2
),
IOG
(
NSPH
),
CCC
1
RMI
(
LI
,
NSPH
),
REI
(
LI
,
NSPH
),
GAPS
(
NSPH
)
DIMENSION
ZPV
(
8
,
3
,
2
,
2
),
IOG
(
6
),
RMI
(
8
,
6
),
REI
(
8
,
6
),
GAPS
(
6
)
COMPLEX
*
16
RMI
,
REI
COMPLEX
*
16
CC0
,
SUMM
,
SUME
,
SUEM
,
SUEE
,
SUM
CC0
=
(
0.0D0
,
0.0D0
)
C0
=
0.0D0
PIGH
=
DACOS
(
C0
)
COFS
=
PIGH
*
2.0D0
/
SQK
DO
40
I
=
1
,
NSPH
IF
(
IOG
(
I
)
.LT.
I
)
GO TO
40
SUM
=
CC0
DO
30
L
=
1
,
LI
LTPO
=
L
+
L
+1
DO
30
ILMP
=
1
,
3
IF
(((
L
.EQ.
1
)
.AND.
(
ILMP
.EQ.
1
))
.OR.
((
L
.EQ.
LI
)
.AND.
(
ILMP
.EQ.
3
)))
1
GO TO
30
LMPML
=
ILMP
-2
LMP
=
L
+
LMPML
COFL
=
LTPO
*
(
LMP
+
LMP
+1
)
COFL
=
DSQRT
(
COFL
)
SUMM
=
ZPV
(
L
,
ILMP
,
1
,
1
)/(
DCONJG
(
RMI
(
L
,
I
))
*
RMI
(
LMP
,
I
))
SUME
=
ZPV
(
L
,
ILMP
,
1
,
2
)/(
DCONJG
(
RMI
(
L
,
I
))
*
REI
(
LMP
,
I
))
SUEM
=
ZPV
(
L
,
ILMP
,
2
,
1
)/(
DCONJG
(
REI
(
L
,
I
))
*
RMI
(
LMP
,
I
))
SUEE
=
ZPV
(
L
,
ILMP
,
2
,
2
)/(
DCONJG
(
REI
(
L
,
I
))
*
REI
(
LMP
,
I
))
SUM
=
SUM
+
(
CG1
(
LMPML
,
0
,
L
,
-1
)
*
(
SUMM
-
SUME
-
SUEM
+
SUEE
)
+
1
CG1
(
LMPML
,
0
,
L
,
1
)
*
(
SUMM
+
SUME
+
SUEM
+
SUEE
))
*
COFL
30
CONTINUE
GAPS
(
I
)
=
DREAL
(
SUM
)
*
COFS
40
CONTINUE
RETURN
END
SUBROUTINE
APC
(
ZPV
,
LE
,
AM0M
,
W
,
SQK
,
GAPR
,
GAPP
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
ZPV
(
LM
,
3
,
2
,
2
),
AM0M
(
NLEMT
,
NLEMT
),
W
(
NLEMT
,
4
)
DIMENSION
ZPV
(
8
,
3
,
2
,
2
),
AM0M
(
160
,
160
),
W
(
160
,
4
),
1
GAPR
(
3
,
2
),
GAPP
(
3
,
2
)
COMPLEX
*
16
AM0M
,
W
,
GAPP
CCC
DIMENSION
AC
(
NLEMT
,
2
)
DIMENSION
AC
(
160
,
2
),
GAP
(
3
,
2
)
COMPLEX
*
16
AC
,
GAP
COMPLEX
*
16
CC0
,
UIM
,
UIMMP
,
1
SUMM
,
SUME
,
SUEM
,
SUEE
,
SUMMP
,
SUMEP
,
SUEMP
,
SUEEP
CC0
=
(
0.0D0
,
0.0D0
)
UIM
=
(
0.0D0
,
1.0D0
)
COF
=
1.0D0
/
SQK
CIMU
=
COF
/
DSQRT
(
2.0D0
)
NLEM
=
LE
*
(
LE
+2
)
NLEMT
=
NLEM
+
NLEM
DO
45
J
=
1
,
NLEMT
AC
(
J
,
1
)
=
CC0
AC
(
J
,
2
)
=
CC0
DO
45
I
=
1
,
NLEMT
AC
(
J
,
1
)
=
AC
(
J
,
1
)
+
AM0M
(
J
,
I
)
*
W
(
I
,
1
)
AC
(
J
,
2
)
=
AC
(
J
,
2
)
+
AM0M
(
J
,
I
)
*
W
(
I
,
2
)
45
CONTINUE
DO
90
IMU
=
1
,
3
MU
=
IMU
-2
GAP
(
IMU
,
1
)
=
CC0
GAP
(
IMU
,
2
)
=
CC0
GAPP
(
IMU
,
1
)
=
CC0
GAPP
(
IMU
,
2
)
=
CC0
DO
80
L
=
1
,
LE
LPO
=
L
+1
LTPO
=
LPO
+
L
IMM
=
L
*
LPO
DO
80
ILMP
=
1
,
3
IF
(((
L
.EQ.
1
)
.AND.
(
ILMP
.EQ.
1
))
.OR.
((
L
.EQ.
LE
)
.AND.
(
ILMP
.EQ.
3
)))
1
GO TO
80
LMPML
=
ILMP
-2
LMP
=
L
+
LMPML
UIMMP
=-
LMPML
*
UIM
IMPMMMP
=
LMP
*
(
LMP
+1
)
DO
70
IM
=
1
,
LTPO
M
=
IM
-
LPO
MMP
=
M
-
MU
IF
(
IABS
(
MMP
)
.GT.
LMP
)
GO TO
70
I
=
IMM
+
M
IE
=
I
+
NLEM
IMP
=
IMPMMMP
+
MMP
IMPE
=
IMP
+
NLEM
CGC
=
CG1
(
LMPML
,
MU
,
L
,
M
)
JPO
=
2
DO
60
IPO
=
1
,
2
IF
(
IPO
.EQ.
2
)
JPO
=
1
SUMM
=
DCONJG
(
AC
(
I
,
IPO
))
*
AC
(
IMP
,
IPO
)
SUME
=
DCONJG
(
AC
(
I
,
IPO
))
*
AC
(
IMPE
,
IPO
)
SUEM
=
DCONJG
(
AC
(
IE
,
IPO
))
*
AC
(
IMP
,
IPO
)
SUEE
=
DCONJG
(
AC
(
IE
,
IPO
))
*
AC
(
IMPE
,
IPO
)
SUMMP
=
DCONJG
(
AC
(
I
,
JPO
))
*
AC
(
IMP
,
IPO
)
SUMEP
=
DCONJG
(
AC
(
I
,
JPO
))
*
AC
(
IMPE
,
IPO
)
SUEMP
=
DCONJG
(
AC
(
IE
,
JPO
))
*
AC
(
IMP
,
IPO
)
SUEEP
=
DCONJG
(
AC
(
IE
,
JPO
))
*
AC
(
IMPE
,
IPO
)
IF
(
LMPML
.EQ.
0
)
GO TO
55
SUMM
=
SUMM
*
UIMMP
SUME
=
SUME
*
UIMMP
SUEM
=
SUEM
*
UIMMP
SUEE
=
SUEE
*
UIMMP
SUMMP
=
SUMMP
*
UIMMP
SUMEP
=
SUMEP
*
UIMMP
SUEMP
=
SUEMP
*
UIMMP
SUEEP
=
SUEEP
*
UIMMP
55
GAP
(
IMU
,
IPO
)
=
GAP
(
IMU
,
IPO
)
+
CGC
*
1
(
SUMM
*
ZPV
(
L
,
ILMP
,
1
,
1
)
+
SUME
*
ZPV
(
L
,
ILMP
,
1
,
2
)
+
2
SUEM
*
ZPV
(
L
,
ILMP
,
2
,
1
)
+
SUEE
*
ZPV
(
L
,
ILMP
,
2
,
2
))
GAPP
(
IMU
,
IPO
)
=
GAPP
(
IMU
,
IPO
)
+
CGC
*
1
(
SUMMP
*
ZPV
(
L
,
ILMP
,
1
,
1
)
+
SUMEP
*
ZPV
(
L
,
ILMP
,
1
,
2
)
+
2
SUEMP
*
ZPV
(
L
,
ILMP
,
2
,
1
)
+
SUEEP
*
ZPV
(
L
,
ILMP
,
2
,
2
))
60
CONTINUE
70
CONTINUE
80
CONTINUE
90
CONTINUE
DO
95
IPO
=
1
,
2
SUME
=
GAP
(
1
,
IPO
)
*
CIMU
SUEE
=
GAP
(
2
,
IPO
)
*
COF
SUEM
=
GAP
(
3
,
IPO
)
*
CIMU
GAPR
(
1
,
IPO
)
=
DREAL
(
SUME
-
SUEM
)
GAPR
(
2
,
IPO
)
=
DREAL
((
SUME
+
SUEM
)
*
UIM
)
GAPR
(
3
,
IPO
)
=
DREAL
(
SUEE
)
SUMEP
=
GAPP
(
1
,
IPO
)
*
CIMU
SUEEP
=
GAPP
(
2
,
IPO
)
*
COF
SUEMP
=
GAPP
(
3
,
IPO
)
*
CIMU
GAPP
(
1
,
IPO
)
=
SUMEP
-
SUEMP
GAPP
(
2
,
IPO
)
=
(
SUMEP
+
SUEMP
)
*
UIM
GAPP
(
3
,
IPO
)
=
SUEEP
95
CONTINUE
RETURN
END
SUBROUTINE
APCRA
(
ZPV
,
LE
,
AM0M
,
INPOL
,
SQK
,
GAPRM
,
GAPPM
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
ZPV
(
LM
,
3
,
2
,
2
),
AM0M
(
NLEMT
,
NLEMT
)
DIMENSION
ZPV
(
8
,
3
,
2
,
2
),
AM0M
(
160
,
160
),
GAPRM
(
3
,
2
),
GAPPM
(
3
,
2
)
COMPLEX
*
16
AM0M
,
GAPPM
CCC
DIMENSION
SVW
(
LE
,
3
,
2
,
2
),
SVS
(
LE
,
3
,
2
,
2
)
DIMENSION
SVW
(
8
,
3
,
2
,
2
),
SVS
(
8
,
3
,
2
,
2
)
COMPLEX
*
16
SVS
COMPLEX
*
16
CC0
,
UIM
,
UIMTL
,
UIMTLS
,
FC
,
1
CA11
,
CA12
,
CA21
,
CA22
,
A11
,
A12
,
A21
,
A22
,
SUM1
,
SUM2
CC0
=
(
0.0D0
,
0.0D0
)
UIM
=
(
0.0D0
,
1.0D0
)
NLEM
=
LE
*
(
LE
+2
)
DO
28
L
=
1
,
LE
LPO
=
L
+1
LTPO
=
LPO
+
L
FL
=
LTPO
FL
=
DSQRT
(
FL
)
DO
26
ILMP
=
1
,
3
IF
(((
L
.EQ.
1
)
.AND.
(
ILMP
.EQ.
1
))
.OR.
((
L
.EQ.
LE
)
.AND.
(
ILMP
.EQ.
3
)))
1
GO TO
26
LMPML
=
ILMP
-2
LMP
=
L
+
LMPML
FLMP
=
LMP
+
LMP
+1
FLMP
=
DSQRT
(
FLMP
)
FLLMP
=
FLMP
/
FL
CGMMO
=
FLLMP
*
CG1
(
LMPML
,
0
,
L
,
1
)
CGMPO
=
FLLMP
*
CG1
(
LMPML
,
0
,
L
,
-1
)
IF
(
INPOL
.NE.
0
)
GO TO
22
CGS
=
CGMPO
+
CGMMO
CGD
=
CGMPO
-
CGMMO
SVW
(
L
,
ILMP
,
1
,
1
)
=
CGS
SVW
(
L
,
ILMP
,
1
,
2
)
=
CGD
SVW
(
L
,
ILMP
,
2
,
1
)
=
CGD
SVW
(
L
,
ILMP
,
2
,
2
)
=
CGS
GO TO
26
22
SVW
(
L
,
ILMP
,
1
,
1
)
=
CGMPO
SVW
(
L
,
ILMP
,
2
,
1
)
=
CGMPO
SVW
(
L
,
ILMP
,
1
,
2
)
=-
CGMMO
SVW
(
L
,
ILMP
,
2
,
2
)
=
CGMMO
26
CONTINUE
28
CONTINUE
DO
30
L
=
1
,
LE
DO
30
ILMP
=
1
,
3
DO
30
IPA
=
1
,
2
DO
30
IPAMP
=
1
,
2
SVS
(
L
,
ILMP
,
IPA
,
IPAMP
)
=
CC0
30
CONTINUE
DO
58
L
=
1
,
LE
LPO
=
L
+1
LTPO
=
L
+
LPO
IMM
=
L
*
LPO
DO
56
ILMP
=
1
,
3
IF
(((
L
.EQ.
1
)
.AND.
(
ILMP
.EQ.
1
))
.OR.
((
L
.EQ.
LE
)
.AND.
(
ILMP
.EQ.
3
)))
1
GO TO
56
LMPML
=
ILMP
-2
LMP
=
L
+
LMPML
IMPMM
=
LMP
*
(
LMP
+1
)
UIMTL
=
LMPML
*
UIM
IF
(
LMPML
.EQ.
0
)
UIMTL
=
(
1.0D0
,
0.0D0
)
DO
54
IM
=
1
,
LTPO
M
=
IM
-
LPO
I
=
IMM
+
M
IE
=
I
+
NLEM
DO
52
IMU
=
1
,
3
MU
=
IMU
-2
MMP
=
M
-
MU
IF
(
IABS
(
MMP
)
.GT.
LMP
)
GO TO
52
IMP
=
IMPMM
+
MMP
IMPE
=
IMP
+
NLEM
CGC
=
CG1
(
LMPML
,
-
MU
,
L
,
-
M
)
DO
48
LS
=
1
,
LE
LSPO
=
LS
+1
LSTPO
=
LS
+
LSPO
ISMM
=
LS
*
LSPO
DO
46
ILSMP
=
1
,
3
IF
(((
LS
.EQ.
1
)
.AND.
(
ILSMP
.EQ.
1
))
.OR.
((
LS
.EQ.
LE
)
.AND.
(
ILSMP
.EQ.
3
)))
1
GO TO
46
LSMPML
=
ILSMP
-2
LSMP
=
LS
+
LSMPML
ISMPMM
=
LSMP
*
(
LSMP
+1
)
UIMTLS
=-
LSMPML
*
UIM
IF
(
LSMPML
.EQ.
0
)
UIMTLS
=
(
1.0D0
,
0.0D0
)
DO
44
IMS
=
1
,
LSTPO
MS
=
IMS
-
LSPO
MSMP
=
MS
-
MU
IF
(
IABS
(
MSMP
)
.GT.
LSMP
)
GO TO
44
IS
=
ISMM
+
MS
ISE
=
IS
+
NLEM
ISMP
=
ISMPMM
+
MSMP
ISMPE
=
ISMP
+
NLEM
CGCS
=
CG1
(
LSMPML
,
MU
,
LS
,
MS
)
FC
=
(
UIMTL
*
UIMTLS
)
*
(
CGC
*
CGCS
)
CA11
=
DCONJG
(
AM0M
(
IS
,
I
))
CA12
=
DCONJG
(
AM0M
(
IS
,
IE
))
CA21
=
DCONJG
(
AM0M
(
ISE
,
I
))
CA22
=
DCONJG
(
AM0M
(
ISE
,
IE
))
A11
=
AM0M
(
ISMP
,
IMP
)
A12
=
AM0M
(
ISMP
,
IMPE
)
A21
=
AM0M
(
ISMPE
,
IMP
)
A22
=
AM0M
(
ISMPE
,
IMPE
)
Z11
=
ZPV
(
LS
,
ILSMP
,
1
,
1
)
Z12
=
ZPV
(
LS
,
ILSMP
,
1
,
2
)
Z21
=
ZPV
(
LS
,
ILSMP
,
2
,
1
)
Z22
=
ZPV
(
LS
,
ILSMP
,
2
,
2
)
SVS
(
L
,
ILMP
,
1
,
1
)
=
SVS
(
L
,
ILMP
,
1
,
1
)
+
1
(
CA11
*
A11
*
Z11
+
CA11
*
A21
*
Z12
+
CA21
*
A11
*
Z21
+
CA21
*
A21
*
Z22
)
*
FC
SVS
(
L
,
ILMP
,
1
,
2
)
=
SVS
(
L
,
ILMP
,
1
,
2
)
+
1
(
CA11
*
A12
*
Z11
+
CA11
*
A22
*
Z12
+
CA21
*
A12
*
Z21
+
CA21
*
A22
*
Z22
)
*
FC
SVS
(
L
,
ILMP
,
2
,
1
)
=
SVS
(
L
,
ILMP
,
2
,
1
)
+
1
(
CA12
*
A11
*
Z11
+
CA12
*
A21
*
Z12
+
CA22
*
A11
*
Z21
+
CA22
*
A21
*
Z22
)
*
FC
SVS
(
L
,
ILMP
,
2
,
2
)
=
SVS
(
L
,
ILMP
,
2
,
2
)
+
1
(
CA12
*
A12
*
Z11
+
CA12
*
A22
*
Z12
+
CA22
*
A12
*
Z21
+
CA22
*
A22
*
Z22
)
*
FC
44
CONTINUE
46
CONTINUE
48
CONTINUE
52
CONTINUE
54
CONTINUE
56
CONTINUE
58
CONTINUE
SUM1
=
CC0
SUM2
=
CC0
DO
68
L
=
1
,
LE
LPO
=
L
+1
LTPO
=
L
+
LPO
IMM
=
L
*
LPO
DO
66
ILMP
=
1
,
3
IF
(((
L
.EQ.
1
)
.AND.
(
ILMP
.EQ.
1
))
.OR.
((
L
.EQ.
LE
)
.AND.
(
ILMP
.EQ.
3
)))
1
GO TO
66
IF
(
INPOL
.NE.
0
)
GO TO
62
SUM1
=
SUM1
+
1
SVW
(
L
,
ILMP
,
1
,
1
)
*
SVS
(
L
,
ILMP
,
1
,
1
)
+
SVW
(
L
,
ILMP
,
2
,
1
)
*
SVS
(
L
,
ILMP
,
1
,
2
)
+
2
SVW
(
L
,
ILMP
,
2
,
1
)
*
SVS
(
L
,
ILMP
,
2
,
1
)
+
SVW
(
L
,
ILMP
,
1
,
1
)
*
SVS
(
L
,
ILMP
,
2
,
2
)
SUM2
=
SUM2
+
1
SVW
(
L
,
ILMP
,
1
,
2
)
*
SVS
(
L
,
ILMP
,
1
,
1
)
+
SVW
(
L
,
ILMP
,
2
,
2
)
*
SVS
(
L
,
ILMP
,
1
,
2
)
+
2
SVW
(
L
,
ILMP
,
2
,
2
)
*
SVS
(
L
,
ILMP
,
2
,
1
)
+
SVW
(
L
,
ILMP
,
1
,
2
)
*
SVS
(
L
,
ILMP
,
2
,
2
)
GO TO
66
62
SUM1
=
SUM1
+
1
SVW
(
L
,
ILMP
,
2
,
1
)
*
SVS
(
L
,
ILMP
,
1
,
1
)
+
SVW
(
L
,
ILMP
,
1
,
1
)
*
SVS
(
L
,
ILMP
,
1
,
2
)
+
2
SVW
(
L
,
ILMP
,
1
,
1
)
*
SVS
(
L
,
ILMP
,
2
,
1
)
+
SVW
(
L
,
ILMP
,
2
,
1
)
*
SVS
(
L
,
ILMP
,
2
,
2
)
SUM2
=
SUM2
+
1
SVW
(
L
,
ILMP
,
2
,
2
)
*
SVS
(
L
,
ILMP
,
1
,
1
)
+
SVW
(
L
,
ILMP
,
1
,
2
)
*
SVS
(
L
,
ILMP
,
1
,
2
)
+
2
SVW
(
L
,
ILMP
,
1
,
2
)
*
SVS
(
L
,
ILMP
,
2
,
1
)
+
SVW
(
L
,
ILMP
,
2
,
2
)
*
SVS
(
L
,
ILMP
,
2
,
2
)
66
CONTINUE
68
CONTINUE
C0
=
0.0D0
PIGH
=
DACOS
(
C0
)
COFS
=
PIGH
*
2.0D0
/
SQK
GAPRM
(
1
,
1
)
=
C0
GAPRM
(
1
,
2
)
=
C0
GAPRM
(
2
,
1
)
=
C0
GAPRM
(
2
,
2
)
=
C0
GAPPM
(
1
,
1
)
=
CC0
GAPPM
(
1
,
2
)
=
CC0
GAPPM
(
2
,
1
)
=
CC0
GAPPM
(
2
,
2
)
=
CC0
IF
(
INPOL
.NE.
0
)
GO TO
72
SUM1
=
SUM1
*
COFS
SUM2
=
SUM2
*
COFS
GAPRM
(
3
,
1
)
=
DREAL
(
SUM1
)
GAPRM
(
3
,
2
)
=
DREAL
(
SUM1
)
GAPPM
(
3
,
1
)
=
SUM2
*
UIM
GAPPM
(
3
,
2
)
=-
GAPPM
(
3
,
1
)
RETURN
72
COFS
=
COFS
*
2.0D0
GAPRM
(
3
,
1
)
=
DREAL
(
SUM1
)
*
COFS
GAPRM
(
3
,
2
)
=
DREAL
(
SUM2
)
*
COFS
GAPPM
(
3
,
1
)
=
CC0
GAPPM
(
3
,
2
)
=
CC0
RETURN
END
SUBROUTINE
THDPS
(
LM
,
ZPV
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
ZPV
(
LM
,
3
,
2
,
2
)
DIMENSION
ZPV
(
8
,
3
,
2
,
2
)
C0
=
0.0D0
DO
10
L
=
1
,
LM
DO
10
ILMP
=
1
,
3
ZPV
(
L
,
ILMP
,
1
,
1
)
=
C0
ZPV
(
L
,
ILMP
,
1
,
2
)
=
C0
ZPV
(
L
,
ILMP
,
2
,
1
)
=
C0
ZPV
(
L
,
ILMP
,
2
,
2
)
=
C0
10
CONTINUE
DO
15
L
=
1
,
LM
XD
=
L
*
(
L
+1
)
ZP
=
-1.0D0
/
DSQRT
(
XD
)
ZPV
(
L
,
2
,
1
,
2
)
=
ZP
ZPV
(
L
,
2
,
2
,
1
)
=
ZP
15
CONTINUE
IF
(
LM
.EQ.
1
)
GO TO
30
DO
20
L
=
2
,
LM
XN
=
(
L
-1
)
*
(
L
+1
)
XD
=
L
*
(
L
+
L
+1
)
ZP
=
DSQRT
(
XN
/
XD
)
ZPV
(
L
,
1
,
1
,
1
)
=
ZP
ZPV
(
L
,
1
,
2
,
2
)
=
ZP
20
CONTINUE
LMMO
=
LM
-1
DO
25
L
=
1
,
LMMO
XN
=
L
*
(
L
+2
)
XD
=
(
L
+1
)
*
(
L
+
L
+1
)
ZP
=-
DSQRT
(
XN
/
XD
)
ZPV
(
L
,
3
,
1
,
1
)
=
ZP
ZPV
(
L
,
3
,
2
,
2
)
=
ZP
25
CONTINUE
30
CONTINUE
RETURN
END
REAL
*
8
FUNCTION
CG1
(
LMPML
,
MU
,
L
,
M
)
CCC
CG1
(
LMPML
,
MU
,
L
,
M
)
=
CLGO
(
1
,
LMP
,
L
;
MU
,
M
-
MU
,
M
)
REAL
*
8
XD
,
XN
IF
(
LMPML
)
30
,
5
,
60
5
IF
((
M
.NE.
0
)
.OR.
(
MU
.NE.
0
))
GO TO
10
CG1
=
0.0D0
RETURN
10
IF
(
MU
.EQ.
0
)
GO TO
20
XD
=
(
L
+1
)
*
L
*
2
IF
(
MU
.GT.
0
)
GO TO
15
XN
=
(
L
-
M
)
*
(
L
+
M
+1
)
CG1
=-
DSQRT
(
XN
/
XD
)
RETURN
15
XN
=
(
L
+
M
)
*
(
L
-
M
+1
)
CG1
=
DSQRT
(
XN
/
XD
)
RETURN
20
XD
=
(
L
+1
)
*
L
XN
=-
M
CG1
=
XN
/
DSQRT
(
XD
)
RETURN
30
XD
=
(
L
*
2-1
)
*
L
*
2
IF
(
MU
)
35
,
40
,
45
35
XN
=
(
L
-1
-
M
)
*
(
L
-
M
)
CG1
=
DSQRT
(
XN
/
XD
)
RETURN
40
XN
=
(
L
-
M
)
*
(
L
+
M
)
*
2
CG1
=
DSQRT
(
XN
/
XD
)
RETURN
45
XN
=
(
L
-1
+
M
)
*
(
L
+
M
)
CG1
=
DSQRT
(
XN
/
XD
)
RETURN
60
XD
=
(
L
*
2+3
)
*
(
L
+1
)
*
2
IF
(
MU
)
65
,
70
,
75
65
XN
=
(
L
+1
+
M
)
*
(
L
+2
+
M
)
CG1
=
DSQRT
(
XN
/
XD
)
RETURN
70
XN
=
(
L
+1
-
M
)
*
(
L
+1
+
M
)
*
2
CG1
=-
DSQRT
(
XN
/
XD
)
RETURN
75
XN
=
(
L
+1
-
M
)
*
(
L
+2
-
M
)
CG1
=
DSQRT
(
XN
/
XD
)
RETURN
END
SUBROUTINE
UPVMP
(
THD
,
PHD
,
ICSPNV
,
COST
,
SINT
,
COSP
,
SINP
,
U
,
UP
,
UN
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
U
(
3
),
UP
(
3
),
UN
(
3
)
C0
=
0.0D0
PIGH
=
DACOS
(
C0
)
RDR
=
PIGH
/
9.0D+1
TH
=
THD
*
RDR
PH
=
PHD
*
RDR
COST
=
DCOS
(
TH
)
SINT
=
DSIN
(
TH
)
COSP
=
DCOS
(
PH
)
SINP
=
DSIN
(
PH
)
U
(
1
)
=
COSP
*
SINT
U
(
2
)
=
SINP
*
SINT
U
(
3
)
=
COST
UP
(
1
)
=
COSP
*
COST
UP
(
2
)
=
SINP
*
COST
UP
(
3
)
=-
SINT
UN
(
1
)
=-
SINP
UN
(
2
)
=
COSP
UN
(
3
)
=
C0
IF
(
ICSPNV
.EQ.
0
)
RETURN
UP
(
1
)
=-
UP
(
1
)
UP
(
2
)
=-
UP
(
2
)
UP
(
3
)
=-
UP
(
3
)
UN
(
1
)
=-
UN
(
1
)
UN
(
2
)
=-
UN
(
2
)
RETURN
END
SUBROUTINE
WMAMP
1
(
IIS
,
COST
,
SINT
,
COSP
,
SINP
,
INPOL
,
LM
,
IDOT
,
NSPH
,
ARG
,
U
,
UP
,
UN
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
YLM
(
NLMM
+2
),
ARG
(
NSPEF
)
CCC
NSPEF
=
1
CALLING
WITH
IDOT
=
0
,
NSPEF
=
NSPH
OTHERWISE
DIMENSION
YLM
(
82
),
U
(
3
),
UP
(
3
),
UN
(
3
),
ARG
(
1
)
COMPLEX
*
16
YLM
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
NLMP
=
LM
*
(
LM
+2
)
+2
YLM
(
NLMP
)
=
(
0.0D0
,
0.0D0
)
IF
(
IDOT
.EQ.
0
)
GO TO
65
IF
(
IDOT
.EQ.
1
)
GO TO
45
DO
40
N
=
1
,
NSPH
40
ARG
(
N
)
=
U
(
1
)
*
RXX
(
N
)
+
U
(
2
)
*
RYY
(
N
)
+
U
(
3
)
*
RZZ
(
N
)
GO TO
55
45
DO
50
N
=
1
,
NSPH
50
ARG
(
N
)
=
COST
*
RZZ
(
N
)
55
IF
(
IIS
.NE.
2
)
GO TO
65
DO
60
N
=
1
,
NSPH
60
ARG
(
N
)
=-
ARG
(
N
)
65
CALL
SPHAR
(
COST
,
SINT
,
COSP
,
SINP
,
LM
,
YLM
)
CALL
PWMA
(
UP
,
UN
,
YLM
,
INPOL
,
LM
,
IIS
)
RETURN
END
SUBROUTINE
UPVSP
(
U
,
UPMP
,
UNMP
,
US
,
UPSMP
,
UNSMP
,
UP
,
UN
,
UPS
,
UNS
,
DUK
,
1
ISQ
,
IBF
,
SCAND
,
CFMP
,
SFMP
,
CFSP
,
SFSP
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
U
(
3
),
UPMP
(
3
),
UNMP
(
3
),
US
(
3
),
UPSMP
(
3
),
UNSMP
(
3
),
1
UP
(
3
),
UN
(
3
),
UPS
(
3
),
UNS
(
3
),
DUK
(
3
)
C0
=
0.0D0
RDR
=
DACOS
(
C0
)/
9.0D+1
SML
=
1.0D-6
ISQ
=
0
SCAND
=
U
(
1
)
*
US
(
1
)
+
U
(
2
)
*
US
(
2
)
+
U
(
3
)
*
US
(
3
)
IF
(
DABS
(
SCAND
-1.0D0
)
.LT.
SML
)
GO TO
10
IF
(
DABS
(
SCAND
+1.0D0
)
.LT.
SML
)
GO TO
15
SCAND
=
DACOS
(
SCAND
)/
RDR
DUK
(
1
)
=
U
(
1
)
-
US
(
1
)
DUK
(
2
)
=
U
(
2
)
-
US
(
2
)
DUK
(
3
)
=
U
(
3
)
-
US
(
3
)
IBF
=
0
GO TO
25
10
SCAND
=
C0
DUK
(
1
)
=
C0
DUK
(
2
)
=
C0
DUK
(
3
)
=
C0
IBF
=
-1
ISQ
=
-1
UPS
(
1
)
=
UPSMP
(
1
)
UPS
(
2
)
=
UPSMP
(
2
)
UPS
(
3
)
=
UPSMP
(
3
)
UNS
(
1
)
=
UNSMP
(
1
)
UNS
(
2
)
=
UNSMP
(
2
)
UNS
(
3
)
=
UNSMP
(
3
)
GO TO
20
15
SCAND
=
180.0D0
DUK
(
1
)
=
U
(
1
)
*
2.0D0
DUK
(
2
)
=
U
(
2
)
*
2.0D0
DUK
(
3
)
=
U
(
3
)
*
2.0D0
IBF
=
1
UPS
(
1
)
=-
UPSMP
(
1
)
UPS
(
2
)
=-
UPSMP
(
2
)
UPS
(
3
)
=-
UPSMP
(
3
)
UNS
(
1
)
=-
UNSMP
(
1
)
UNS
(
2
)
=-
UNSMP
(
2
)
UNS
(
3
)
=-
UNSMP
(
3
)
20
UP
(
1
)
=
UPMP
(
1
)
UP
(
2
)
=
UPMP
(
2
)
UP
(
3
)
=
UPMP
(
3
)
UN
(
1
)
=
UNMP
(
1
)
UN
(
2
)
=
UNMP
(
2
)
UN
(
3
)
=
UNMP
(
3
)
GO TO
85
25
CALL
ORUNVE
(
U
,
US
,
UN
,
-1
,
SML
)
UNS
(
1
)
=
UN
(
1
)
UNS
(
2
)
=
UN
(
2
)
UNS
(
3
)
=
UN
(
3
)
CALL
ORUNVE
(
UN
,
U
,
UP
,
1
,
SML
)
CALL
ORUNVE
(
UNS
,
US
,
UPS
,
1
,
SML
)
85
CFMP
=
UPMP
(
1
)
*
UP
(
1
)
+
UPMP
(
2
)
*
UP
(
2
)
+
UPMP
(
3
)
*
UP
(
3
)
SFMP
=
UNMP
(
1
)
*
UP
(
1
)
+
UNMP
(
2
)
*
UP
(
2
)
+
UNMP
(
3
)
*
UP
(
3
)
CFSP
=
UPS
(
1
)
*
UPSMP
(
1
)
+
UPS
(
2
)
*
UPSMP
(
2
)
+
UPS
(
3
)
*
UPSMP
(
3
)
SFSP
=
UNS
(
1
)
*
UPSMP
(
1
)
+
UNS
(
2
)
*
UPSMP
(
2
)
+
UNS
(
3
)
*
UPSMP
(
3
)
RETURN
END
SUBROUTINE
WMASP
(
COST
,
SINT
,
COSP
,
SINP
,
COSTS
,
SINTS
,
COSPS
,
SINPS
,
1
U
,
UP
,
UN
,
US
,
UPS
,
UNS
,
ISQ
,
IBF
,
INPOL
,
LM
,
IDOT
,
NSPH
,
ARGI
,
ARGS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
YLM
(
NLMM
+2
),
ARGI
(
NSPEF
),
ARGS
(
NSPEF
)
CCC
NSPEF
=
1
CALLING
WITH
IDOT
=
0
,
NSPEF
=
NSPH
OTHERWISE
DIMENSION
YLM
(
82
),
ARGI
(
1
),
ARGS
(
1
),
1
U
(
3
),
UP
(
3
),
UN
(
3
),
US
(
3
),
UPS
(
3
),
UNS
(
3
)
COMPLEX
*
16
YLM
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
NLMP
=
LM
*
(
LM
+2
)
+2
YLM
(
NLMP
)
=
(
0.0D0
,
0.0D0
)
IF
(
IDOT
.EQ.
0
)
GO TO
75
IF
(
IDOT
.EQ.
1
)
GO TO
50
DO
40
N
=
1
,
NSPH
ARGI
(
N
)
=
U
(
1
)
*
RXX
(
N
)
+
U
(
2
)
*
RYY
(
N
)
+
U
(
3
)
*
RZZ
(
N
)
IF
(
IBF
.EQ.
0
)
GO TO
35
ARGS
(
N
)
=
ARGI
(
N
)
*
IBF
GO TO
40
35
ARGS
(
N
)
=-
(
US
(
1
)
*
RXX
(
N
)
+
US
(
2
)
*
RYY
(
N
)
+
US
(
3
)
*
RZZ
(
N
))
40
CONTINUE
GO TO
75
50
DO
60
N
=
1
,
NSPH
ARGI
(
N
)
=
COST
*
RZZ
(
N
)
IF
(
IBF
.EQ.
0
)
GO TO
55
ARGS
(
N
)
=
ARGI
(
N
)
*
IBF
GO TO
60
55
ARGS
(
N
)
=-
COSTS
*
RZZ
(
N
)
60
CONTINUE
75
CALL
SPHAR
(
COST
,
SINT
,
COSP
,
SINP
,
LM
,
YLM
)
CALL
PWMA
(
UP
,
UN
,
YLM
,
INPOL
,
LM
,
ISQ
)
IF
(
IBF
.LT.
0
)
RETURN
CALL
SPHAR
(
COSTS
,
SINTS
,
COSPS
,
SINPS
,
LM
,
YLM
)
CALL
PWMA
(
UPS
,
UNS
,
YLM
,
INPOL
,
LM
,
2
)
RETURN
END
SUBROUTINE
STR
(
RCF
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
RCF
(
NSPH
,
NSHL
),
YLM
(
MAX0
(
LITPOS
,
LMTPOS
))
DIMENSION
RCF
(
6
,
8
),
YLM
(
289
)
COMPLEX
*
16
YLM
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C3
/
TFSAS
,
TSAS
(
2
,
2
),
GCS
,
SCS
,
ECS
,
ACS
COMPLEX
*
16
TFSAS
,
TSAS
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMMON
/
C6
/
RAC3J
(
17
)
C0
=
0.0D0
PIGH
=
DACOS
(
C0
)
PIG
=
PIGH
*
2.0D0
GCS
=
C0
DO
18
I
=
1
,
NSPH
IOGI
=
IOG
(
I
)
IF
(
IOGI
.LT.
I
)
GO TO
18
GCSS
=
PIG
*
ROS
(
I
)
*
ROS
(
I
)
GCSV
(
I
)
=
GCSS
NSH
=
NSHL
(
I
)
DO
16
J
=
1
,
NSH
16
RC
(
I
,
J
)
=
RCF
(
I
,
J
)
*
ROS
(
I
)
18
GCS
=
GCS
+
GCSV
(
IOGI
)
LITPO
=
LI
+
LI
+1
LITPOS
=
LITPO
*
LITPO
LMTPO
=
LI
+
LE
+1
LMTPOS
=
LMTPO
*
LMTPO
NLIM
=
LI
*
(
LI
+2
)
NLEM
=
LE
*
(
LE
+2
)
LM
=
MAX0
(
LI
,
LE
)
LMPO
=
LM
+1
I
=
0
DO
28
L1PO
=
1
,
LMPO
L1
=
L1PO
-1
DO
28
L2
=
1
,
LM
CALL
R3J000
(
L1
,
L2
)
IND3J
(
L1PO
,
L2
)
=
I
LMNPO
=
IABS
(
L2
-
L1
)
+1
LMXPO
=
L2
+
L1
+1
IL
=
0
DO
28
LPO
=
LMNPO
,
LMXPO
,
2
I
=
I
+1
IL
=
IL
+1
28
V3J0
(
I
)
=
RAC3J
(
IL
)
NSPHMO
=
NSPH
-1
LIT
=
LI
+
LI
IVY
=
0
DO
40
NF
=
1
,
NSPHMO
NFPO
=
NF
+1
DO
40
NS
=
NFPO
,
NSPH
RX
=
RXX
(
NF
)
-
RXX
(
NS
)
RY
=
RYY
(
NF
)
-
RYY
(
NS
)
RZ
=
RZZ
(
NF
)
-
RZZ
(
NS
)
CALL
POLAR
(
RX
,
RY
,
RZ
,
RR
,
CRTH
,
SRTH
,
CRPH
,
SRPH
)
CALL
SPHAR
(
CRTH
,
SRTH
,
CRPH
,
SRPH
,
LIT
,
YLM
)
DO
38
IV
=
1
,
LITPOS
38
VYHJ
(
IV
+
IVY
)
=
DCONJG
(
YLM
(
IV
))
40
IVY
=
IVY
+
LITPOS
LMT
=
LI
+
LE
IVY
=
0
DO
50
NF
=
1
,
NSPH
RX
=
RXX
(
NF
)
RY
=
RYY
(
NF
)
RZ
=
RZZ
(
NF
)
IF
(
RX
.EQ.
C0
.AND.
RY
.EQ.
C0
.AND.
RZ
.EQ.
C0
)
GO TO
50
CALL
POLAR
(
RX
,
RY
,
RZ
,
RR
,
CRTH
,
SRTH
,
CRPH
,
SRPH
)
CALL
SPHAR
(
CRTH
,
SRTH
,
CRPH
,
SRPH
,
LMT
,
YLM
)
DO
48
IV
=
1
,
LMTPOS
48
VYJ0
(
IV
+
IVY
)
=
DCONJG
(
YLM
(
IV
))
50
IVY
=
IVY
+
LMTPOS
RETURN
END
SUBROUTINE
HJV
(
EXRI
,
VK
,
JER
,
LCALC
,
ARG
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
RFJ
(
MAX0
(
LIT
,
LMT
)),
RFN
(
LITPO
)
DIMENSION
RFJ
(
17
),
RFN
(
17
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMPLEX
*
16
ARG
,
UIM
JER
=
0
C0
=
0.0D0
UIM
=
(
0.0D0
,
1.0D0
)
NSPHMO
=
NSPH
-1
LIT
=
LI
+
LI
IVHB
=
0
DO
40
NF
=
1
,
NSPHMO
NFPO
=
NF
+1
DO
40
NS
=
NFPO
,
NSPH
RX
=
RXX
(
NF
)
-
RXX
(
NS
)
RY
=
RYY
(
NF
)
-
RYY
(
NS
)
RZ
=
RZZ
(
NF
)
-
RZZ
(
NS
)
RR
=
DSQRT
(
RX
*
RX
+
RY
*
RY
+
RZ
*
RZ
)
RARG
=
RR
*
VK
*
EXRI
ARG
=
RARG
CALL
RBF
(
LIT
,
RARG
,
LCALC
,
RFJ
)
IF
(
LCALC
.GE.
LIT
)
GO TO
35
JER
=
1
RETURN
35
CALL
RNF
(
LIT
,
RARG
,
LCALC
,
RFN
)
IF
(
LCALC
.GE.
LIT
)
GO TO
37
JER
=
2
RETURN
37
DO
38
LPO
=
1
,
LITPO
38
VH
(
LPO
+
IVHB
)
=
RFJ
(
LPO
)
+
UIM
*
RFN
(
LPO
)
40
IVHB
=
IVHB
+
LITPO
LMT
=
LI
+
LE
IVHB
=
0
DO
50
NF
=
1
,
NSPH
RX
=
RXX
(
NF
)
RY
=
RYY
(
NF
)
RZ
=
RZZ
(
NF
)
IF
(
RX
.EQ.
C0
.AND.
RY
.EQ.
C0
.AND.
RZ
.EQ.
C0
)
GO TO
50
RR
=
DSQRT
(
RX
*
RX
+
RY
*
RY
+
RZ
*
RZ
)
RARG
=
RR
*
VK
*
EXRI
CALL
RBF
(
LMT
,
RARG
,
LCALC
,
RFJ
)
IF
(
LCALC
.GE.
LMT
)
GO TO
45
JER
=
3
ARG
=
RARG
RETURN
45
DO
47
LPO
=
1
,
LMTPO
47
VJ0
(
LPO
+
IVHB
)
=
RFJ
(
LPO
)
50
IVHB
=
IVHB
+
LMTPO
RETURN
END
SUBROUTINE
PWMA
(
UP
,
UN
,
YLM
,
INPOL
,
LW
,
ISQ
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
YLM
(
NLWM
+2
)
DIMENSION
YLM
(
82
),
UP
(
3
),
UN
(
3
)
COMPLEX
*
16
YLM
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMPLEX
*
16
CP1
,
CM1
,
C1
,
CP2
,
CM2
,
C2
,
UIM
,
CL
PI4
=
DACOS
(
0.0D0
)
*
8.0D0
IS
=
ISQ
IF
(
ISQ
.EQ.
-1
)
IS
=
0
ISPO
=
IS
+1
ISPT
=
IS
+2
NLWM
=
LW
*
(
LW
+2
)
NLWMT
=
NLWM
+
NLWM
SQRTWI
=
1.0D0
/
DSQRT
(
2.0D0
)
UIM
=
(
0.0D0
,
1.0D0
)
CM1
=
.5D0
*
DCMPLX
(
UP
(
1
),
UP
(
2
))
CP1
=
.5D0
*
DCMPLX
(
UP
(
1
),
-
UP
(
2
))
CZ1
=
UP
(
3
)
CM2
=
.5D0
*
DCMPLX
(
UN
(
1
),
UN
(
2
))
CP2
=
.5D0
*
DCMPLX
(
UN
(
1
),
-
UN
(
2
))
CZ2
=
UN
(
3
)
DO
20
L
=
1
,
LW
LF
=
L
+1
LFTL
=
LF
*
L
X
=
LFTL
CL
=
(
PI4
/
DSQRT
(
X
))
*
UIM
**
L
MV
=
L
+
LF
M
=-
LF
DO
20
MF
=
1
,
MV
M
=
M
+1
K
=
LFTL
+
M
X
=
LFTL
-
M
*
(
M
+1
)
CP
=
DSQRT
(
X
)
X
=
LFTL
-
M
*
(
M
-1
)
CM
=
DSQRT
(
X
)
CZ
=
M
W
(
K
,
ISPO
)
=
DCONJG
(
CP1
*
CP
*
YLM
(
K
+2
)
+
CM1
*
CM
*
YLM
(
K
)
+
CZ1
*
CZ
*
YLM
(
K
+1
))
*
CL
20
W
(
K
,
ISPT
)
=
DCONJG
(
CP2
*
CP
*
YLM
(
K
+2
)
+
CM2
*
CM
*
YLM
(
K
)
+
CZ2
*
CZ
*
YLM
(
K
+1
))
*
CL
DO
30
K
=
1
,
NLWM
I
=
K
+
NLWM
W
(
I
,
ISPO
)
=
UIM
*
W
(
K
,
ISPT
)
30
W
(
I
,
ISPT
)
=-
UIM
*
W
(
K
,
ISPO
)
IF
(
INPOL
.EQ.
0
)
GO TO
42
DO
40
K
=
1
,
NLWM
I
=
K
+
NLWM
C1
=
(
W
(
K
,
ISPO
)
+
UIM
*
W
(
K
,
ISPT
))
*
SQRTWI
C2
=
(
W
(
K
,
ISPO
)
-
UIM
*
W
(
K
,
ISPT
))
*
SQRTWI
W
(
K
,
ISPO
)
=
C2
W
(
I
,
ISPO
)
=-
C2
W
(
K
,
ISPT
)
=
C1
40
W
(
I
,
ISPT
)
=
C1
42
IF
(
ISQ
.EQ.
0
)
RETURN
DO
50
I
=
1
,
2
IPT
=
I
+2
IPIS
=
I
+
IS
DO
50
K
=
1
,
NLWMT
50
W
(
K
,
IPT
)
=
DCONJG
(
W
(
K
,
IPIS
))
RETURN
END
SUBROUTINE
ORUNVE
(
U1
,
U2
,
U3
,
IORTH
,
TORTH
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
U1
(
3
),
U2
(
3
),
U3
(
3
)
IF
(
IORTH
.GT.
0
)
GO TO
10
CP
=
U1
(
1
)
*
U2
(
1
)
+
U1
(
2
)
*
U2
(
2
)
+
U1
(
3
)
*
U2
(
3
)
IF
((
IORTH
.LT.
0
)
.AND.
(
DABS
(
CP
)
.LT.
TORTH
))
GO TO
10
FN
=
1.0D0
/
DSQRT
(
1.0D0
-
CP
*
CP
)
U3
(
1
)
=
(
U1
(
2
)
*
U2
(
3
)
-
U1
(
3
)
*
U2
(
2
))
*
FN
U3
(
2
)
=
(
U1
(
3
)
*
U2
(
1
)
-
U1
(
1
)
*
U2
(
3
))
*
FN
U3
(
3
)
=
(
U1
(
1
)
*
U2
(
2
)
-
U1
(
2
)
*
U2
(
1
))
*
FN
RETURN
10
U3
(
1
)
=
U1
(
2
)
*
U2
(
3
)
-
U1
(
3
)
*
U2
(
2
)
U3
(
2
)
=
U1
(
3
)
*
U2
(
1
)
-
U1
(
1
)
*
U2
(
3
)
U3
(
3
)
=
U1
(
1
)
*
U2
(
2
)
-
U1
(
2
)
*
U2
(
1
)
RETURN
END
SUBROUTINE
CMS
(
AM
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
CCC
DIMENSION
AM
(
MXNDM
,
MXNDM
)
CCC
NDIT
.LE.
MXNDM
DIMENSION
AM
(
960
,
960
)
COMPLEX
*
16
AM
COMPLEX
*
16
DM
,
DE
,
CGH
,
CGK
,
GHIT
,
CC0
CC0
=
(
0.0D0
,
0.0D0
)
NDI
=
NSPH
*
NLIM
NBL
=
0
NSPHMO
=
NSPH
-1
DO
26
N1
=
1
,
NSPHMO
IN1
=
(
N1
-1
)
*
NLIM
N1PO
=
N1
+1
DO
26
N2
=
N1PO
,
NSPH
IN2
=
(
N2
-1
)
*
NLIM
NBL
=
NBL
+1
DO
24
L1
=
1
,
LI
L1PO
=
L1
+1
IL1
=
L1PO
*
L1
L1TPO
=
L1PO
+
L1
DO
24
IM1
=
1
,
L1TPO
M1
=
IM1
-
L1PO
ILM1
=
IL1
+
M1
ILM1E
=
ILM1
+
NDI
I1
=
IN1
+
ILM1
I1E
=
IN1
+
ILM1E
J1
=
IN2
+
ILM1
J1E
=
IN2
+
ILM1E
DO
24
L2
=
1
,
LI
L2PO
=
L2
+1
IL2
=
L2PO
*
L2
L2TPO
=
L2PO
+
L2
ISH
=
(
-1
)
**
(
L2
+
L1
)
ISK
=-
ISH
DO
24
IM2
=
1
,
L2TPO
M2
=
IM2
-
L2PO
ILM2
=
IL2
+
M2
ILM2E
=
ILM2
+
NDI
I2
=
IN2
+
ILM2
I2E
=
IN2
+
ILM2E
J2
=
IN1
+
ILM2
J2E
=
IN1
+
ILM2E
CGH
=
GHIT
(
0
,
0
,
NBL
,
L1
,
M1
,
L2
,
M2
)
CGK
=
GHIT
(
0
,
1
,
NBL
,
L1
,
M1
,
L2
,
M2
)
AM
(
I1
,
I2
)
=
CGH
AM
(
I1
,
I2E
)
=
CGK
AM
(
I1E
,
I2
)
=
CGK
AM
(
I1E
,
I2E
)
=
CGH
AM
(
J1
,
J2
)
=
CGH
*
ISH
AM
(
J1
,
J2E
)
=
CGK
*
ISK
AM
(
J1E
,
J2
)
=
CGK
*
ISK
AM
(
J1E
,
J2E
)
=
CGH
*
ISH
24
CONTINUE
26
CONTINUE
DO
30
N1
=
1
,
NSPH
IN1
=
(
N1
-1
)
*
NLIM
DO
30
L1
=
1
,
LI
DM
=
RMI
(
L1
,
N1
)
DE
=
REI
(
L1
,
N1
)
L1PO
=
L1
+1
IL1
=
L1PO
*
L1
L1TPO
=
L1PO
+
L1
DO
30
IM1
=
1
,
L1TPO
M1
=
IM1
-
L1PO
ILM1
=
IL1
+
M1
I1
=
IN1
+
ILM1
I1E
=
I1
+
NDI
DO
28
ILM2
=
1
,
NLIM
I2
=
IN1
+
ILM2
I2E
=
I2
+
NDI
AM
(
I1
,
I2
)
=
CC0
AM
(
I1
,
I2E
)
=
CC0
AM
(
I1E
,
I2
)
=
CC0
28
AM
(
I1E
,
I2E
)
=
CC0
AM
(
I1
,
I1
)
=
DM
30
AM
(
I1E
,
I1E
)
=
DE
RETURN
END
SUBROUTINE
ZTM
(
AM
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMMON
/
C9
/
GIS
(
480
,
80
),
GLS
(
480
,
80
),
SAM
(
960
,
160
)
COMPLEX
*
16
GIS
,
GLS
,
SAM
CCC
DIMENSION
AM
(
MXNDM
,
MXNDM
)
CCC
NDIT
.LE.
MXNDM
DIMENSION
AM
(
960
,
960
)
COMPLEX
*
16
AM
COMPLEX
*
16
GIE
,
GLE
,
GHIT
,
A1
,
A2
,
A3
,
A4
,
1
SUM1
,
SUM2
,
SUM3
,
SUM4
,
CC0
CC0
=
(
0.0D0
,
0.0D0
)
NDI
=
NSPH
*
NLIM
I2
=
0
DO
15
N2
=
1
,
NSPH
DO
15
L2
=
1
,
LI
L2TPO
=
L2
+
L2
+1
M2
=-
L2
-1
DO
15
IM2
=
1
,
L2TPO
M2
=
M2
+1
I2
=
I2
+1
I3
=
0
DO
15
L3
=
1
,
LE
L3TPO
=
L3
+
L3
+1
M3
=-
L3
-1
DO
15
IM3
=
1
,
L3TPO
M3
=
M3
+1
I3
=
I3
+1
GIS
(
I2
,
I3
)
=
GHIT
(
2
,
0
,
N2
,
L2
,
M2
,
L3
,
M3
)
15
GLS
(
I2
,
I3
)
=
GHIT
(
2
,
1
,
N2
,
L2
,
M2
,
L3
,
M3
)
DO
25
I1
=
1
,
NDI
I1E
=
I1
+
NDI
DO
25
I3
=
1
,
NLEM
I3E
=
I3
+
NLEM
SUM1
=
CC0
SUM2
=
CC0
SUM3
=
CC0
SUM4
=
CC0
DO
20
I2
=
1
,
NDI
I2E
=
I2
+
NDI
GIE
=
GIS
(
I2
,
I3
)
GLE
=
GLS
(
I2
,
I3
)
A1
=
AM
(
I1
,
I2
)
A2
=
AM
(
I1
,
I2E
)
A3
=
AM
(
I1E
,
I2
)
A4
=
AM
(
I1E
,
I2E
)
SUM1
=
SUM1
+
A1
*
GIE
+
A2
*
GLE
SUM2
=
SUM2
+
A1
*
GLE
+
A2
*
GIE
SUM3
=
SUM3
+
A3
*
GIE
+
A4
*
GLE
20
SUM4
=
SUM4
+
A3
*
GLE
+
A4
*
GIE
SAM
(
I1
,
I3
)
=
SUM1
SAM
(
I1
,
I3E
)
=
SUM2
SAM
(
I1E
,
I3
)
=
SUM3
25
SAM
(
I1E
,
I3E
)
=
SUM4
DO
35
I1
=
1
,
NDI
DO
35
I0
=
1
,
NLEM
GIS
(
I1
,
I0
)
=
DCONJG
(
GIS
(
I1
,
I0
))
35
GLS
(
I1
,
I0
)
=
DCONJG
(
GLS
(
I1
,
I0
))
NLEMT
=
NLEM
+
NLEM
DO
45
I0
=
1
,
NLEM
I0E
=
I0
+
NLEM
DO
45
I3
=
1
,
NLEMT
SUM1
=
CC0
SUM2
=
CC0
DO
40
I1
=
1
,
NDI
I1E
=
I1
+
NDI
A1
=
SAM
(
I1
,
I3
)
A2
=
SAM
(
I1E
,
I3
)
GIE
=
GIS
(
I1
,
I0
)
GLE
=
GLS
(
I1
,
I0
)
SUM1
=
SUM1
+
A1
*
GIE
+
A2
*
GLE
40
SUM2
=
SUM2
+
A1
*
GLE
+
A2
*
GIE
AM0M
(
I0
,
I3
)
=-
SUM1
45
AM0M
(
I0E
,
I3
)
=-
SUM2
RETURN
END
COMPLEX
*
16
FUNCTION
GHIT
(
IHI
,
IPAMO
,
NBL
,
L1
,
M1
,
L2
,
M2
)
CCC
NBL
INDIVIDUATES
TRANSFER
VECTOR
GOING
FROM
N2
TO
N1
;
CCC
IHI
=
0
FOR
HANKEL
,
IHI
=
1
FOR
BESSEL
,
IHI
=
2
FOR
BESSEL
FROM
ORIGIN
;
CCC
DEPENDING
ON
IHI
,
IPAMO
=
0
GIVES
H
OR
I
,
IPAMO
=
1
GIVES
K
OR
L
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C4
/
LITPO
,
LITPOS
,
LMTPO
,
LMTPOS
,
LI
,
NLIM
,
LE
,
NLEM
,
NSPH
COMMON
/
C6
/
RAC3J
(
17
)
COMPLEX
*
16
CSUM
,
CC0
,
UIM
,
CFUN
CC0
=
(
0.0D0
,
0.0D0
)
GHIT
=
CC0
IF
(
IHI
.NE.
2
)
GO TO
10
C0
=
0.0D0
IF
(
RXX
(
NBL
)
.NE.
C0
.OR.
RYY
(
NBL
)
.NE.
C0
.OR.
RZZ
(
NBL
)
.NE.
C0
)
GO TO
10
IF
(
IPAMO
.NE.
0
)
RETURN
IF
(
L1
.EQ.
L2
.AND.
M1
.EQ.
M2
)
GHIT
=
(
1.0D0
,
0.0D0
)
RETURN
10
L1MP
=
L1
-
IPAMO
L1PO
=
L1
+1
M1MM2
=
M1
-
M2
M1MM2M
=
IABS
(
M1MM2
)
+1
LMINPO
=
IABS
(
L2
-
L1MP
)
+1
LMAXPO
=
L2
+
L1MP
+1
I3J0IN
=
IND3J
(
L1MP
+1
,
L2
)
ILIN
=
-1
IF
((
M1MM2M
.GT.
LMINPO
)
.AND.
(
MOD
(
M1MM2M
-
LMINPO
,
2
)
.NE.
0
))
ILIN
=
0
ISN
=
1
IF
(
MOD
(
M1
,
2
)
.NE.
0
)
ISN
=-
ISN
IF
(
MOD
(
LMINPO
,
2
)
.NE.
0
)
GO TO
12
ISN
=-
ISN
IF
(
L2
.GT.
L1MP
)
ISN
=-
ISN
12
NBLMO
=
NBL
-1
IF
(
IHI
.EQ.
2
)
GO TO
50
NBHJ
=
NBLMO
*
LITPO
NBY
=
NBLMO
*
LITPOS
IF
(
IHI
.EQ.
1
)
GO TO
30
DO
24
JM
=
1
,
3
CSUM
=
CC0
MU
=
JM
-2
MUPM1
=
MU
+
M1
MUPM2
=
MU
+
M2
IF
(
MUPM1
.LT.
-
L1MP
.OR.
MUPM1
.GT.
L1MP
.OR.
MUPM2
.LT.
-
L2
.OR.
MUPM2
.GT.
L2
)
1
GO TO
24
JSN
=-
ISN
IF
(
MU
.EQ.
0
)
JSN
=
ISN
CR
=
CGEV
(
IPAMO
,
MU
,
L1
,
M1
)
*
CGEV
(
0
,
MU
,
L2
,
M2
)
I3J0
=
I3J0IN
IF
((
MUPM1
.NE.
0
)
.OR.
(
MUPM2
.NE.
0
))
GO TO
16
DO
14
LT
=
LMINPO
,
LMAXPO
,
2
I3J0
=
I3J0
+1
L3
=
LT
-1
NY
=
L3
*
L3
+
LT
AORS
=
L3
+
LT
F3J
=
(
V3J0
(
I3J0
)
*
V3J0
(
I3J0
)
*
DSQRT
(
AORS
))
*
JSN
CFUN
=
(
VH
(
NBHJ
+
LT
)
*
VYHJ
(
NBY
+
NY
))
*
F3J
CSUM
=
CSUM
+
CFUN
14
JSN
=-
JSN
GO TO
22
16
CALL
R3JJR
(
L1MP
,
L2
,
-
MUPM1
,
MUPM2
)
IL
=
ILIN
DO
20
LT
=
LMINPO
,
LMAXPO
,
2
I3J0
=
I3J0
+1
IF
(
M1MM2M
.GT.
LT
)
GO TO
20
IL
=
IL
+2
L3
=
LT
-1
NY
=
L3
*
L3
+
LT
+
M1MM2
AORS
=
L3
+
LT
F3J
=
(
RAC3J
(
IL
)
*
V3J0
(
I3J0
)
*
DSQRT
(
AORS
))
*
JSN
CFUN
=
(
VH
(
NBHJ
+
LT
)
*
VYHJ
(
NBY
+
NY
))
*
F3J
CSUM
=
CSUM
+
CFUN
20
JSN
=-
JSN
22
CSUM
=
CSUM
*
CR
GHIT
=
GHIT
+
CSUM
24
CONTINUE
GO TO
70
30
DO
44
JM
=
1
,
3
CSUM
=
CC0
MU
=
JM
-2
MUPM1
=
MU
+
M1
MUPM2
=
MU
+
M2
IF
(
MUPM1
.LT.
-
L1MP
.OR.
MUPM1
.GT.
L1MP
.OR.
MUPM2
.LT.
-
L2
.OR.
MUPM2
.GT.
L2
)
1
GO TO
44
JSN
=-
ISN
IF
(
MU
.EQ.
0
)
JSN
=
ISN
CR
=
CGEV
(
IPAMO
,
MU
,
L1
,
M1
)
*
CGEV
(
0
,
MU
,
L2
,
M2
)
I3J0
=
I3J0IN
IF
((
MUPM1
.NE.
0
)
.OR.
(
MUPM2
.NE.
0
))
GO TO
36
DO
34
LT
=
LMINPO
,
LMAXPO
,
2
I3J0
=
I3J0
+1
L3
=
LT
-1
NY
=
L3
*
L3
+
LT
AORS
=
L3
+
LT
F3J
=
(
V3J0
(
I3J0
)
*
V3J0
(
I3J0
)
*
DSQRT
(
AORS
))
*
JSN
CFUN
=
(
VJ
(
NBHJ
+
LT
)
*
VYHJ
(
NBY
+
NY
))
*
F3J
CSUM
=
CSUM
+
CFUN
34
JSN
=-
JSN
GO TO
42
36
CALL
R3JJR
(
L1MP
,
L2
,
-
MUPM1
,
MUPM2
)
IL
=
ILIN
DO
40
LT
=
LMINPO
,
LMAXPO
,
2
I3J0
=
I3J0
+1
IF
(
M1MM2M
.GT.
LT
)
GO TO
40
IL
=
IL
+2
L3
=
LT
-1
NY
=
L3
*
L3
+
LT
+
M1MM2
AORS
=
L3
+
LT
F3J
=
(
RAC3J
(
IL
)
*
V3J0
(
I3J0
)
*
DSQRT
(
AORS
))
*
JSN
CFUN
=
(
VJ
(
NBHJ
+
LT
)
*
VYHJ
(
NBY
+
NY
))
*
F3J
CSUM
=
CSUM
+
CFUN
40
JSN
=-
JSN
42
CSUM
=
CSUM
*
CR
GHIT
=
GHIT
+
CSUM
44
CONTINUE
GO TO
70
50
NBHJ
=
NBLMO
*
LMTPO
NBY
=
NBLMO
*
LMTPOS
DO
64
JM
=
1
,
3
CSUM
=
CC0
MU
=
JM
-2
MUPM1
=
MU
+
M1
MUPM2
=
MU
+
M2
IF
(
MUPM1
.LT.
-
L1MP
.OR.
MUPM1
.GT.
L1MP
.OR.
MUPM2
.LT.
-
L2
.OR.
MUPM2
.GT.
L2
)
1
GO TO
64
JSN
=-
ISN
IF
(
MU
.EQ.
0
)
JSN
=
ISN
CR
=
CGEV
(
IPAMO
,
MU
,
L1
,
M1
)
*
CGEV
(
0
,
MU
,
L2
,
M2
)
I3J0
=
I3J0IN
IF
((
MUPM1
.NE.
0
)
.OR.
(
MUPM2
.NE.
0
))
GO TO
56
DO
54
LT
=
LMINPO
,
LMAXPO
,
2
I3J0
=
I3J0
+1
L3
=
LT
-1
NY
=
L3
*
L3
+
LT
AORS
=
L3
+
LT
F3J
=
(
V3J0
(
I3J0
)
*
V3J0
(
I3J0
)
*
DSQRT
(
AORS
))
*
JSN
CFUN
=
(
VJ0
(
NBHJ
+
LT
)
*
VYJ0
(
NBY
+
NY
))
*
F3J
CSUM
=
CSUM
+
CFUN
54
JSN
=-
JSN
GO TO
62
56
CALL
R3JJR
(
L1MP
,
L2
,
-
MUPM1
,
MUPM2
)
IL
=
ILIN
DO
60
LT
=
LMINPO
,
LMAXPO
,
2
I3J0
=
I3J0
+1
IF
(
M1MM2M
.GT.
LT
)
GO TO
60
IL
=
IL
+2
L3
=
LT
-1
NY
=
L3
*
L3
+
LT
+
M1MM2
AORS
=
L3
+
LT
F3J
=
(
RAC3J
(
IL
)
*
V3J0
(
I3J0
)
*
DSQRT
(
AORS
))
*
JSN
CFUN
=
(
VJ0
(
NBHJ
+
LT
)
*
VYJ0
(
NBY
+
NY
))
*
F3J
CSUM
=
CSUM
+
CFUN
60
JSN
=-
JSN
62
CSUM
=
CSUM
*
CR
GHIT
=
GHIT
+
CSUM
64
CONTINUE
70
PI4
=
DACOS
(
0.0D0
)
*
8.0D0
IF
(
IPAMO
.EQ.
1
)
GO TO
90
CR
=
PI4
*
(
L1
+
L1PO
)
*
(
L2
+
L2
+1
)
CR
=
DSQRT
(
CR
)
GHIT
=
GHIT
*
CR
RETURN
90
UIM
=
(
0.0D0
,
1.0D0
)
CR
=
L1PO
CR
=
(
PI4
*
(
L1
+
L1MP
)
*
(
L1
+
L1PO
)
*
(
L2
+
L2
+1
))/
CR
CR
=
DSQRT
(
CR
)
GHIT
=
GHIT
*
(
CR
*
UIM
)
RETURN
END
REAL
*
8
FUNCTION
CGEV
(
IPAMO
,
MU
,
L
,
M
)
CCC
CGEV
(
IPAMO
,
MU
,
L
,
M
)
=
CLGO
(
1
,
L
-
IPAMO
,
L
;
-
MU
,
MU
+
M
,
M
)
REAL
*
8
XD
,
XN
IF
(
IPAMO
.NE.
0
)
GO TO
30
IF
((
M
.NE.
0
)
.OR.
(
MU
.NE.
0
))
GO TO
10
CGEV
=
0.0D0
RETURN
10
IF
(
MU
.EQ.
0
)
GO TO
20
XD
=
(
L
+1
)
*
L
*
2
IF
(
MU
.GT.
0
)
GO TO
15
XN
=
(
L
+
M
)
*
(
L
-
M
+1
)
CGEV
=
DSQRT
(
XN
/
XD
)
RETURN
15
XN
=
(
L
-
M
)
*
(
L
+
M
+1
)
CGEV
=-
DSQRT
(
XN
/
XD
)
RETURN
20
XD
=
(
L
+1
)
*
L
XN
=-
M
CGEV
=
XN
/
DSQRT
(
XD
)
RETURN
30
XD
=
(
L
*
2-1
)
*
L
*
2
IF
(
MU
)
35
,
40
,
45
35
XN
=
(
L
-1
+
M
)
*
(
L
+
M
)
GO TO
50
40
XN
=
(
L
-
M
)
*
(
L
+
M
)
*
2
GO TO
50
45
XN
=
(
L
-1
-
M
)
*
(
L
-
M
)
50
CGEV
=
DSQRT
(
XN
/
XD
)
RETURN
END
SUBROUTINE
R3J000
(
J2
,
J3
)
CCC
3
j
(
J
,
J2
,
J3
;
0
,
0
,
0
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C6
/
RAC3J
(
17
)
ONE
=
1.0D0
JMX
=
J3
+
J2
IF
(
JMX
.GT.
0
)
GO TO
10
RAC3J
(
1
)
=
ONE
RETURN
10
JMN
=
IABS
(
J3
-
J2
)
NJMO
=
(
JMX
-
JMN
)/
2
JF
=
JMX
+
JMX
+1
ISN
=
1
IF
(
MOD
(
JMN
,
2
)
.NE.
0
)
ISN
=
-1
IF
(
NJMO
.GT.
0
)
GO TO
15
SJ
=
JF
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
RAC3J
(
1
)
=
CNR
RETURN
15
SJR
=
JF
JMXPOS
=
(
JMX
+1
)
*
(
JMX
+1
)
JMNS
=
JMN
*
JMN
J1MO
=
JMX
-1
J1S
=
(
J1MO
+1
)
*
(
J1MO
+1
)
CJ
=
(
JMXPOS
-
J1S
)
*
(
J1S
-
JMNS
)
CJ
=
DSQRT
(
CJ
)
J1MOS
=
J1MO
*
J1MO
CJMO
=
(
JMXPOS
-
J1MOS
)
*
(
J1MOS
-
JMNS
)
CJMO
=
DSQRT
(
CJMO
)
IF
(
NJMO
.GT.
1
)
GO TO
20
RAC3J
(
1
)
=-
CJ
/
CJMO
SJ
=
SJR
+
(
RAC3J
(
1
)
*
RAC3J
(
1
))
*
(
JF
-4
)
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
RAC3J
(
2
)
=
CNR
RAC3J
(
1
)
=
RAC3J
(
1
)
*
CNR
RETURN
20
NJ
=
NJMO
+1
NMAT
=
(
NJ
+1
)/
2
RAC3J
(
NJ
)
=
ONE
RAC3J
(
NJMO
)
=-
CJ
/
CJMO
IF
(
NMAT
.EQ.
NJMO
)
GO TO
50
NBR
=
NJMO
-
NMAT
DO
45
IBR
=
1
,
NBR
IRR
=
NJ
-
IBR
JF
=
JF
-4
J1MO
=
J1MO
-2
J1S
=
(
J1MO
+1
)
*
(
J1MO
+1
)
CJ
=
(
JMXPOS
-
J1S
)
*
(
J1S
-
JMNS
)
CJ
=
DSQRT
(
CJ
)
J1MOS
=
J1MO
*
J1MO
CJMO
=
(
JMXPOS
-
J1MOS
)
*
(
J1MOS
-
JMNS
)
CJMO
=
DSQRT
(
CJMO
)
RAC3J
(
IRR
-1
)
=
RAC3J
(
IRR
)
*
(
-
CJ
/
CJMO
)
45
SJR
=
SJR
+
(
RAC3J
(
IRR
)
*
RAC3J
(
IRR
))
*
JF
50
RACMAT
=
RAC3J
(
NMAT
)
SJR
=
SJR
+
(
RACMAT
*
RACMAT
)
*
(
JF
-4
)
RAC3J
(
1
)
=
ONE
JF
=
JMN
+
JMN
+1
SJL
=
JF
J1PT
=
JMN
+2
J1POS
=
(
J1PT
-1
)
*
(
J1PT
-1
)
CJPO
=
(
JMXPOS
-
J1POS
)
*
(
J1POS
-
JMNS
)
CJPO
=
DSQRT
(
CJPO
)
J1PTS
=
J1PT
*
J1PT
CJPT
=
(
JMXPOS
-
J1PTS
)
*
(
J1PTS
-
JMNS
)
CJPT
=
DSQRT
(
CJPT
)
RAC3J
(
2
)
=-
CJPO
/
CJPT
NMATMO
=
NMAT
-1
IF
(
NMATMO
.LT.
2
)
GO TO
75
DO
70
IRL
=
2
,
NMATMO
JF
=
JF
+4
J1PT
=
J1PT
+2
J1POS
=
(
J1PT
-1
)
*
(
J1PT
-1
)
CJPO
=
(
JMXPOS
-
J1POS
)
*
(
J1POS
-
JMNS
)
CJPO
=
DSQRT
(
CJPO
)
J1PTS
=
J1PT
*
J1PT
CJPT
=
(
JMXPOS
-
J1PTS
)
*
(
J1PTS
-
JMNS
)
CJPT
=
DSQRT
(
CJPT
)
RAC3J
(
IRL
+1
)
=
RAC3J
(
IRL
)
*
(
-
CJPO
/
CJPT
)
70
SJL
=
SJL
+
(
RAC3J
(
IRL
)
*
RAC3J
(
IRL
))
*
JF
75
RATRAC
=
RACMAT
/
RAC3J
(
NMAT
)
RATS
=
RATRAC
*
RATRAC
SJ
=
SJR
+
SJL
*
RATS
RAC3J
(
NMAT
)
=
RACMAT
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
DO
80
IRR
=
NMAT
,
NJ
80
RAC3J
(
IRR
)
=
RAC3J
(
IRR
)
*
CNR
CNL
=
CNR
*
RATRAC
DO
85
IRL
=
1
,
NMATMO
85
RAC3J
(
IRL
)
=
RAC3J
(
IRL
)
*
CNL
RETURN
END
SUBROUTINE
R3JJR
(
J2
,
J3
,
M2
,
M3
)
CCC
3
j
(
J
,
J2
,
J3
;
-
M2
-
M3
,
M2
,
M3
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C6
/
RAC3J
(
17
)
ONE
=
1.0D0
JMX
=
J3
+
J2
JDF
=
J3
-
J2
M1
=-
M2
-
M3
JMN
=
MAX0
(
IABS
(
JDF
),
IABS
(
M1
))
NJMO
=
JMX
-
JMN
JF
=
JMX
+
JMX
+1
ISN
=
1
IF
(
MOD
(
JDF
+
M1
,
2
)
.NE.
0
)
ISN
=
-1
IF
(
NJMO
.GT.
0
)
GO TO
15
SJ
=
JF
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
RAC3J
(
1
)
=
CNR
RETURN
15
SJT
=
ONE
SJR
=
JF
JSMPOS
=
(
JMX
+1
)
*
(
JMX
+1
)
JDFS
=
JDF
*
JDF
M1S
=
M1
*
M1
MDF
=
M3
-
M2
IDJC
=
M1
*
(
J3
*
(
J3
+1
)
-
J2
*
(
J2
+1
))
J1
=
JMX
J1S
=
J1
*
J1
J1PO
=
J1
+1
CCJ
=
(
J1S
-
JDFS
)
*
(
J1S
-
M1S
)
CJ
=
CCJ
*
(
JSMPOS
-
J1S
)
CJ
=
DSQRT
(
CJ
)
DJ
=
JF
*
(
J1
*
J1PO
*
MDF
+
IDJC
)
IF
(
NJMO
.GT.
1
)
GO TO
20
RAC3J
(
1
)
=-
DJ
/(
CJ
*
J1PO
)
SJ
=
SJR
+
(
RAC3J
(
1
)
*
RAC3J
(
1
))
*
(
JF
-2
)
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
RAC3J
(
2
)
=
CNR
RAC3J
(
1
)
=
RAC3J
(
1
)
*
CNR
RETURN
20
NJ
=
NJMO
+1
NMAT
=
(
NJ
+1
)/
2
RAC3J
(
NJ
)
=
ONE
RAC3J
(
NJMO
)
=-
DJ
/(
CJ
*
J1PO
)
IF
(
NMAT
.EQ.
NJMO
)
GO TO
50
NBR
=
NJMO
-
NMAT
DO
45
IBR
=
1
,
NBR
IRR
=
NJ
-
IBR
JF
=
JF
-2
J1
=
J1
-1
J1S
=
J1
*
J1
J1PO
=
J1
+1
CJP
=
CJ
CCJ
=
(
J1S
-
JDFS
)
*
(
J1S
-
M1S
)
CJ
=
CCJ
*
(
JSMPOS
-
J1S
)
CJ
=
DSQRT
(
CJ
)
SJT
=
RAC3J
(
IRR
)
*
RAC3J
(
IRR
)
DJ
=
JF
*
(
J1
*
J1PO
*
MDF
+
IDJC
)
RAC3J
(
IRR
-1
)
=-
(
RAC3J
(
IRR
)
*
DJ
+
RAC3J
(
IRR
+1
)
*
(
CJP
*
J1
))/(
CJ
*
J1PO
)
45
SJR
=
SJR
+
SJT
*
JF
50
OSJT
=
SJT
SJT
=
RAC3J
(
NMAT
)
*
RAC3J
(
NMAT
)
IF
(
SJT
.LT.
OSJT
)
GO TO
55
SJR
=
SJR
+
SJT
*
(
JF
-2
)
GO TO
60
55
NMAT
=
NMAT
+1
60
RACMAT
=
RAC3J
(
NMAT
)
RAC3J
(
1
)
=
ONE
JF
=
JMN
+
JMN
+1
SJL
=
JF
J1
=
JMN
IF
(
J1
.EQ.
0
)
GO TO
62
J1PO
=
J1
+1
J1POS
=
J1PO
*
J1PO
CCJP
=
(
J1POS
-
JDFS
)
*
(
J1POS
-
M1S
)
CJP
=
CCJP
*
(
JSMPOS
-
J1POS
)
CJP
=
DSQRT
(
CJP
)
DJ
=
JF
*
(
J1
*
J1PO
*
MDF
+
IDJC
)
RAC3J
(
2
)
=-
DJ
/(
CJP
*
J1
)
GO TO
63
62
CJP
=
JSMPOS
-1
CJP
=
DSQRT
(
CJP
)
DJ
=
MDF
RAC3J
(
2
)
=-
DJ
/
CJP
63
NMATMO
=
NMAT
-1
IF
(
NMATMO
.LT.
2
)
GO TO
75
DO
70
IRL
=
2
,
NMATMO
JF
=
JF
+2
J1
=
J1
+1
J1PO
=
J1
+1
J1POS
=
J1PO
*
J1PO
CJ
=
CJP
CCJP
=
(
J1POS
-
JDFS
)
*
(
J1POS
-
M1S
)
CJP
=
CCJP
*
(
JSMPOS
-
J1POS
)
CJP
=
DSQRT
(
CJP
)
SJT
=
RAC3J
(
IRL
)
*
RAC3J
(
IRL
)
DJ
=
JF
*
(
J1
*
J1PO
*
MDF
+
IDJC
)
RAC3J
(
IRL
+1
)
=-
(
RAC3J
(
IRL
)
*
DJ
+
RAC3J
(
IRL
-1
)
*
(
CJ
*
J1PO
))/(
CJP
*
J1
)
70
SJL
=
SJL
+
SJT
*
JF
75
RATRAC
=
RACMAT
/
RAC3J
(
NMAT
)
RATS
=
RATRAC
*
RATRAC
SJ
=
SJR
+
SJL
*
RATS
RAC3J
(
NMAT
)
=
RACMAT
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
DO
80
IRR
=
NMAT
,
NJ
80
RAC3J
(
IRR
)
=
RAC3J
(
IRR
)
*
CNR
CNL
=
CNR
*
RATRAC
DO
85
IRL
=
1
,
NMATMO
85
RAC3J
(
IRL
)
=
RAC3J
(
IRL
)
*
CNL
RETURN
END
SUBROUTINE
R3JMR
(
J1
,
J2
,
J3
,
M1
)
CCC
3
j
(
J1
,
J2
,
J3
;
M1
,
M
,
-
M1
-
M
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C6
/
RAC3J
(
17
)
ONE
=
1.0D0
MMX
=
MIN0
(
J2
,
J3
-
M1
)
MMN
=
MAX0
(
-
J2
,
-
J3
-
M1
)
NMMO
=
MMX
-
MMN
J1PO
=
J1
+1
J1TPO
=
J1PO
+
J1
ISN
=
1
IF
(
MOD
(
J2
-
J3
-
M1
,
2
)
.NE.
0
)
ISN
=
-1
IF
(
NMMO
.GT.
0
)
GO TO
15
SJ
=
J1TPO
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
RAC3J
(
1
)
=
CNR
RETURN
15
J1S
=
J1
*
J1PO
J2PO
=
J2
+1
J2S
=
J2
*
J2PO
J3PO
=
J3
+1
J3S
=
J3
*
J3PO
ID
=
J1S
-
J2S
-
J3S
M2
=
MMX
M3
=
M1
+
M2
CM
=
(
J2PO
-
M2
)
*
(
J2
+
M2
)
*
(
J3PO
-
M3
)
*
(
J3
+
M3
)
CM
=
DSQRT
(
CM
)
DM
=
ID
+
M2
*
M3
*
2
IF
(
NMMO
.GT.
1
)
GO TO
20
RAC3J
(
1
)
=
DM
/
CM
SJ
=
(
ONE
+
RAC3J
(
1
)
*
RAC3J
(
1
))
*
J1TPO
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
RAC3J
(
2
)
=
CNR
RAC3J
(
1
)
=
RAC3J
(
1
)
*
CNR
RETURN
20
NM
=
NMMO
+1
NMAT
=
(
NM
+1
)/
2
RAC3J
(
NM
)
=
ONE
RAC3J
(
NMMO
)
=
DM
/
CM
SJT
=
ONE
SJR
=
ONE
IF
(
NMAT
.EQ.
NMMO
)
GO TO
50
NBR
=
NMMO
-
NMAT
DO
45
IBR
=
1
,
NBR
IRR
=
NM
-
IBR
M2
=
M2
-1
M3
=
M1
+
M2
CMP
=
CM
CM
=
(
J2PO
-
M2
)
*
(
J2
+
M2
)
*
(
J3PO
-
M3
)
*
(
J3
+
M3
)
CM
=
DSQRT
(
CM
)
SJT
=
RAC3J
(
IRR
)
*
RAC3J
(
IRR
)
DM
=
ID
+
M2
*
M3
*
2
RAC3J
(
IRR
-1
)
=
(
RAC3J
(
IRR
)
*
DM
-
RAC3J
(
IRR
+1
)
*
CMP
)/
CM
45
SJR
=
SJR
+
SJT
50
OSJT
=
SJT
SJT
=
RAC3J
(
NMAT
)
*
RAC3J
(
NMAT
)
IF
(
SJT
.LT.
OSJT
)
GO TO
55
SJR
=
SJR
+
SJT
GO TO
60
55
NMAT
=
NMAT
+1
60
RACMAT
=
RAC3J
(
NMAT
)
RAC3J
(
1
)
=
ONE
M2
=
MMN
M3
=
M1
+
M2
CMP
=
(
J2
-
M2
)
*
(
J2PO
+
M2
)
*
(
J3
-
M3
)
*
(
J3PO
+
M3
)
CMP
=
DSQRT
(
CMP
)
DM
=
ID
+
M2
*
M3
*
2
RAC3J
(
2
)
=
DM
/
CMP
SJL
=
ONE
NMATMO
=
NMAT
-1
IF
(
NMATMO
.LT.
2
)
GO TO
75
DO
70
IRL
=
2
,
NMATMO
M2
=
M2
+1
M3
=
M1
+
M2
CM
=
CMP
CMP
=
(
J2
-
M2
)
*
(
J2PO
+
M2
)
*
(
J3
-
M3
)
*
(
J3PO
+
M3
)
CMP
=
DSQRT
(
CMP
)
SJT
=
RAC3J
(
IRL
)
*
RAC3J
(
IRL
)
DM
=
ID
+
M2
*
M3
*
2
RAC3J
(
IRL
+1
)
=
(
RAC3J
(
IRL
)
*
DM
-
RAC3J
(
IRL
-1
)
*
CM
)/
CMP
70
SJL
=
SJL
+
SJT
75
RATRAC
=
RACMAT
/
RAC3J
(
NMAT
)
RATS
=
RATRAC
*
RATRAC
SJ
=
(
SJR
+
SJL
*
RATS
)
*
J1TPO
RAC3J
(
NMAT
)
=
RACMAT
CNR
=
(
ONE
/
DSQRT
(
SJ
))
*
ISN
DO
80
IRR
=
NMAT
,
NM
80
RAC3J
(
IRR
)
=
RAC3J
(
IRR
)
*
CNR
CNL
=
CNR
*
RATRAC
DO
85
IRL
=
1
,
NMATMO
85
RAC3J
(
IRL
)
=
RAC3J
(
IRL
)
*
CNL
RETURN
END
SUBROUTINE
DME
(
LI
,
I
,
NPNT
,
NPNTTS
,
VK
,
EXDC
,
EXRI
,
JER
,
LCALC
,
ARG
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
CFJ
(
LIPT
),
RFJ
(
LIPT
),
RFN
(
LIPT
),
CCC
1
FBI
(
LIPT
),
FB
(
LIPT
),
FN
(
LIPT
),
CCC
2
RMF
(
LI
),
DRMF
(
LI
),
REF
(
LI
),
DREF
(
LI
)
DIMENSION
CFJ
(
10
),
RFJ
(
10
),
RFN
(
10
),
1
FBI
(
10
),
FB
(
10
),
FN
(
10
),
RMF
(
8
),
DRMF
(
8
),
REF
(
8
),
DREF
(
8
)
COMPLEX
*
16
CFJ
,
FBI
,
FB
,
FN
,
RMF
,
DRMF
,
REF
,
DREF
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C2
/
RIS
(
999
),
DLRI
(
999
),
DC0
(
5
),
VKT
(
6
),
VSZ
(
6
)
COMPLEX
*
16
RIS
,
DLRI
,
DC0
,
VKT
COMPLEX
*
16
DFBI
,
DFB
,
DFN
,
CCNA
,
CCNB
,
CCNC
,
CCND
,
1
Y1
,
DY1
,
Y2
,
DY2
,
ARIN
,
ARG
,
CRI
,
UIM
JER
=
0
UIM
=
(
0.0D0
,
1.0D0
)
NSTP
=
NPNT
-1
NSTPTS
=
NPNTTS
-1
LIPO
=
LI
+1
LIPT
=
LI
+2
SZ
=
VK
*
ROS
(
I
)
VSZ
(
I
)
=
SZ
VKR1
=
VK
*
RC
(
I
,
1
)
NSH
=
NSHL
(
I
)
VKT
(
I
)
=
CDSQRT
(
DC0
(
1
))
ARG
=
VKR1
*
VKT
(
I
)
ARIN
=
ARG
IF
(
DIMAG
(
ARG
)
.EQ.
0.0D0
)
GO TO
26
CALL
CBF
(
LIPO
,
ARG
,
LCALC
,
CFJ
)
IF
(
LCALC
.GE.
LIPO
)
GO TO
22
JER
=
5
RETURN
22
DO
24
J
=
1
,
LIPT
24
FBI
(
J
)
=
CFJ
(
J
)
GO TO
32
26
RARG
=
DREAL
(
ARG
)
CALL
RBF
(
LIPO
,
RARG
,
LCALC
,
RFJ
)
IF
(
LCALC
.GE.
LIPO
)
GO TO
28
JER
=
5
RETURN
28
DO
30
J
=
1
,
LIPT
30
FBI
(
J
)
=
RFJ
(
J
)
32
AREX
=
SZ
*
EXRI
ARG
=
AREX
RARG
=
AREX
CALL
RBF
(
LIPO
,
RARG
,
LCALC
,
RFJ
)
IF
(
LCALC
.GE.
LIPO
)
GO TO
40
JER
=
7
RETURN
40
CALL
RNF
(
LIPO
,
RARG
,
LCALC
,
RFN
)
IF
(
LCALC
.GE.
LIPO
)
GO TO
42
JER
=
8
RETURN
42
DO
43
J
=
1
,
LIPT
FB
(
J
)
=
RFJ
(
J
)
43
FN
(
J
)
=
RFN
(
J
)
IF
(
NSH
.GT.
1
)
GO TO
65
CRI
=
DC0
(
1
)/
EXDC
DO
60
L
=
1
,
LI
LPO
=
L
+1
LTPO
=
LPO
+
L
LPT
=
LPO
+1
DFBI
=
(
L
*
FBI
(
L
)
-
LPO
*
FBI
(
LPT
))
*
ARIN
+
FBI
(
LPO
)
*
LTPO
DFB
=
(
L
*
FB
(
L
)
-
LPO
*
FB
(
LPT
))
*
AREX
+
FB
(
LPO
)
*
LTPO
DFN
=
(
L
*
FN
(
L
)
-
LPO
*
FN
(
LPT
))
*
AREX
+
FN
(
LPO
)
*
LTPO
CCNA
=
FBI
(
LPO
)
*
DFN
CCNB
=
FN
(
LPO
)
*
DFBI
CCNC
=
FBI
(
LPO
)
*
DFB
CCND
=
FB
(
LPO
)
*
DFBI
RMI
(
L
,
I
)
=
1.0D0
+
UIM
*
(
CCNA
-
CCNB
)/(
CCNC
-
CCND
)
60
REI
(
L
,
I
)
=
1.0D0
+
UIM
*
(
CRI
*
CCNA
-
CCNB
)/(
CRI
*
CCNC
-
CCND
)
RETURN
65
DO
80
L
=
1
,
LI
LPO
=
L
+1
LTPO
=
LPO
+
L
LPT
=
LPO
+1
DLTPO
=
LTPO
cccccccccccccccccccccc
Y1
=
FBI
(
LPO
)
DY1
=
(
L
*
FBI
(
L
)
-
LPO
*
FBI
(
LPT
))
*
VKT
(
I
)/
DLTPO
cccccccccccccccccccccc
Y2
=
Y1
DY2
=
DY1
IC
=
1
DO
76
NS
=
2
,
NSH
NSMO
=
NS
-1
VKR
=
VK
*
RC
(
I
,
NSMO
)
IF
(
MOD
(
NS
,
2
)
.EQ.
0
)
GO TO
70
IC
=
IC
+1
STEP
=
NSTP
STEP
=
VK
*
(
RC
(
I
,
NS
)
-
RC
(
I
,
NSMO
))/
STEP
ARG
=
DC0
(
IC
)
CALL
RKC
(
NSTP
,
STEP
,
ARG
,
VKR
,
LPO
,
Y1
,
Y2
,
DY1
,
DY2
)
GO TO
76
70
CALL
DIEL
(
NSTPTS
,
NSMO
,
I
,
IC
,
VK
)
STEPTS
=
NSTPTS
STEPTS
=
VK
*
(
RC
(
I
,
NS
)
-
RC
(
I
,
NSMO
))/
STEPTS
CALL
RKT
(
NSTPTS
,
STEPTS
,
VKR
,
LPO
,
Y1
,
Y2
,
DY1
,
DY2
)
76
CONTINUE
RMF
(
L
)
=
Y1
*
SZ
DRMF
(
L
)
=
DY1
*
SZ
+
Y1
REF
(
L
)
=
Y2
*
SZ
80
DREF
(
L
)
=
DY2
*
SZ
+
Y2
CRI
=
(
1.0D0
,
0.0D0
)
IF
(
MOD
(
NSH
,
2
)
.NE.
0
)
CRI
=
DC0
(
IC
)/
EXDC
DO
90
L
=
1
,
LI
LPO
=
L
+1
LTPO
=
LPO
+
L
LPT
=
LPO
+1
DFB
=
(
L
*
FB
(
L
)
-
LPO
*
FB
(
LPT
))
*
AREX
+
FB
(
LPO
)
*
LTPO
DFN
=
(
L
*
FN
(
L
)
-
LPO
*
FN
(
LPT
))
*
AREX
+
FN
(
LPO
)
*
LTPO
CCNA
=
RMF
(
L
)
*
DFN
CCNB
=
DRMF
(
L
)
*
FN
(
LPO
)
*
SZ
*
LTPO
CCNC
=
RMF
(
L
)
*
DFB
CCND
=
DRMF
(
L
)
*
FB
(
LPO
)
*
SZ
*
LTPO
RMI
(
L
,
I
)
=
1.0D0
+
UIM
*
(
CCNA
-
CCNB
)/(
CCNC
-
CCND
)
CCNA
=
REF
(
L
)
*
DFN
CCNB
=
DREF
(
L
)
*
FN
(
LPO
)
*
SZ
*
LTPO
CCNC
=
REF
(
L
)
*
DFB
CCND
=
DREF
(
L
)
*
FB
(
LPO
)
*
SZ
*
LTPO
90
REI
(
L
,
I
)
=
1.0D0
+
UIM
*
(
CRI
*
CCNA
-
CCNB
)/(
CRI
*
CCNC
-
CCND
)
RETURN
END
SUBROUTINE
RKT
(
NPNTMO
,
STEP
,
X
,
LPO
,
Y1
,
Y2
,
DY1
,
DY2
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C2
/
RIS
(
999
),
DLRI
(
999
),
DC0
(
5
),
VKT
(
6
),
VSZ
(
6
)
COMPLEX
*
16
RIS
,
DLRI
,
DC0
,
VKT
COMPLEX
*
16
Y1
,
DY1
,
Y2
,
DY2
,
CY1
,
CDY1
,
C11
,
1
CY23
,
CDY23
,
YC2
,
C12
,
C13
,
CY4
,
CDY4
,
YY
,
C14
,
C21
,
C22
,
C23
,
C24
HSTEP
=
.5D0
*
STEP
CL
=
LPO
*
(
LPO
-1
)
DO
60
IPNT
=
1
,
NPNTMO
JPNT
=
IPNT
+
IPNT
-1
CY1
=
CL
/(
X
*
X
)
-
RIS
(
JPNT
)
CDY1
=
-2.0D0
/
X
C11
=
(
CY1
*
Y1
+
CDY1
*
DY1
)
*
STEP
XH
=
X
+
HSTEP
JPNTPO
=
JPNT
+1
CY23
=
CL
/(
XH
*
XH
)
-
RIS
(
JPNTPO
)
CDY23
=
-2.0D0
/
XH
YC2
=
Y1
+
DY1
*
HSTEP
C12
=
(
CY23
*
YC2
+
CDY23
*
(
DY1
+.5D0
*
C11
))
*
STEP
C13
=
(
CY23
*
(
YC2
+.25D0
*
C11
*
STEP
)
+
CDY23
*
(
DY1
+.5D0
*
C12
))
*
STEP
XN
=
X
+
STEP
JPNTPT
=
JPNT
+2
CY4
=
CL
/(
XN
*
XN
)
-
RIS
(
JPNTPT
)
CDY4
=
-2.0D0
/
XN
YY
=
Y1
+
DY1
*
STEP
C14
=
(
CY4
*
(
YY
+.5D0
*
C12
*
STEP
)
+
CDY4
*
(
DY1
+
C13
))
*
STEP
Y1
=
YY
+
(
C11
+
C12
+
C13
)
*
STEP
/
6.0D0
DY1
=
DY1
+
(
.5D0
*
C11
+
C12
+
C13
+.5D0
*
C14
)/
3.0D0
CY1
=
CY1
-
CDY1
*
DLRI
(
JPNT
)
CDY1
=
CDY1
+2.0D0
*
DLRI
(
JPNT
)
C21
=
(
CY1
*
Y2
+
CDY1
*
DY2
)
*
STEP
CY23
=
CY23
-
CDY23
*
DLRI
(
JPNTPO
)
CDY23
=
CDY23
+2.0D0
*
DLRI
(
JPNTPO
)
YC2
=
Y2
+
DY2
*
HSTEP
C22
=
(
CY23
*
YC2
+
CDY23
*
(
DY2
+.5D0
*
C21
))
*
STEP
C23
=
(
CY23
*
(
YC2
+.25D0
*
C21
*
STEP
)
+
CDY23
*
(
DY2
+.5D0
*
C22
))
*
STEP
CY4
=
CY4
-
CDY4
*
DLRI
(
JPNTPT
)
CDY4
=
CDY4
+2.0D0
*
DLRI
(
JPNTPT
)
YY
=
Y2
+
DY2
*
STEP
C24
=
(
CY4
*
(
YC2
+.5D0
*
C22
*
STEP
)
+
CDY4
*
(
DY2
+
C23
))
*
STEP
Y2
=
YY
+
(
C21
+
C22
+
C23
)
*
STEP
/
6.0D0
DY2
=
DY2
+
(
.5D0
*
C21
+
C22
+
C23
+.5D0
*
C24
)/
3.0D0
60
X
=
XN
RETURN
END
SUBROUTINE
RKC
(
NPNTMO
,
STEP
,
DCC
,
X
,
LPO
,
Y1
,
Y2
,
DY1
,
DY2
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMPLEX
*
16
Y1
,
DY1
,
Y2
,
DY2
,
CY1
,
CDY1
,
C11
,
1
CY23
,
YC2
,
C12
,
C13
,
CY4
,
YY
,
C14
,
C21
,
C22
,
C23
,
C24
,
DCC
HSTEP
=
.5D0
*
STEP
CL
=
LPO
*
(
LPO
-1
)
DO
60
IPNT
=
1
,
NPNTMO
CY1
=
CL
/(
X
*
X
)
-
DCC
CDY1
=
-2.0D0
/
X
C11
=
(
CY1
*
Y1
+
CDY1
*
DY1
)
*
STEP
XH
=
X
+
HSTEP
CY23
=
CL
/(
XH
*
XH
)
-
DCC
CDY23
=
-2.0D0
/
XH
YC2
=
Y1
+
DY1
*
HSTEP
C12
=
(
CY23
*
YC2
+
CDY23
*
(
DY1
+.5D0
*
C11
))
*
STEP
C13
=
(
CY23
*
(
YC2
+.25D0
*
C11
*
STEP
)
+
CDY23
*
(
DY1
+.5D0
*
C12
))
*
STEP
XN
=
X
+
STEP
CY4
=
CL
/(
XN
*
XN
)
-
DCC
CDY4
=
-2.0D0
/
XN
YY
=
Y1
+
DY1
*
STEP
C14
=
(
CY4
*
(
YY
+.5D0
*
C12
*
STEP
)
+
CDY4
*
(
DY1
+
C13
))
*
STEP
Y1
=
YY
+
(
C11
+
C12
+
C13
)
*
STEP
/
6.0D0
DY1
=
DY1
+
(
.5D0
*
C11
+
C12
+
C13
+.5D0
*
C14
)/
3.0D0
C21
=
(
CY1
*
Y2
+
CDY1
*
DY2
)
*
STEP
YC2
=
Y2
+
DY2
*
HSTEP
C22
=
(
CY23
*
YC2
+
CDY23
*
(
DY2
+.5D0
*
C21
))
*
STEP
C23
=
(
CY23
*
(
YC2
+.25D0
*
C21
*
STEP
)
+
CDY23
*
(
DY2
+.5D0
*
C22
))
*
STEP
YY
=
Y2
+
DY2
*
STEP
C24
=
(
CY4
*
(
YC2
+.5D0
*
C22
*
STEP
)
+
CDY4
*
(
DY2
+
C23
))
*
STEP
Y2
=
YY
+
(
C21
+
C22
+
C23
)
*
STEP
/
6.0D0
DY2
=
DY2
+
(
.5D0
*
C21
+
C22
+
C23
+.5D0
*
C24
)/
3.0D0
60
X
=
XN
RETURN
END
SUBROUTINE
DIEL
(
NPNTMO
,
NS
,
I
,
IC
,
VK
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
C1
/
VH
(
255
),
VJ0
(
102
),
VYHJ
(
4335
),
VYJ0
(
1734
),
VJ
(
1
),
1
RMI
(
8
,
6
),
REI
(
8
,
6
),
W
(
160
,
4
),
AM0M
(
160
,
160
),
2
FSAS
(
6
),
SAS
(
6
,
2
,
2
),
VINTS
(
6
,
16
),
VINTT
(
16
),
3
FSAC
(
2
,
2
),
SAC
(
2
,
2
),
FSACM
(
2
,
2
),
4
VINT
(
16
),
VINTM
(
16
),
SCSCP
(
2
),
ECSCP
(
2
),
SCSCPM
(
2
),
ECSCPM
(
2
),
5
V3J0
(
276
),
SCSC
(
2
),
ECSC
(
2
),
SCSCM
(
2
),
ECSCM
(
2
),
6
SSCS
(
6
),
SEXS
(
6
),
SABS
(
6
),
SQSCS
(
6
),
SQEXS
(
6
),
SQABS
(
6
),
GCSV
(
6
),
7
RXX
(
6
),
RYY
(
6
),
RZZ
(
6
),
ROS
(
6
),
RC
(
6
,
8
),
8
IND3J
(
9
,
8
),
IOG
(
6
),
NSHL
(
6
)
COMPLEX
*
16
VH
,
VJ0
,
VYHJ
,
VYJ0
,
VJ
,
RMI
,
REI
,
W
,
AM0M
,
FSAS
,
SAS
,
1
VINTS
,
VINTT
,
FSAC
,
SAC
,
FSACM
,
VINT
,
VINTM
,
SCSCP
,
ECSCP
,
SCSCPM
,
ECSCPM
COMMON
/
C2
/
RIS
(
999
),
DLRI
(
999
),
DC0
(
5
),
VKT
(
6
),
VSZ
(
6
)
COMPLEX
*
16
RIS
,
DLRI
,
DC0
,
VKT
COMPLEX
*
16
DEL
DIF
=
RC
(
I
,
NS
+1
)
-
RC
(
I
,
NS
)
HSTEP
=
NPNTMO
HSTEP
=
.5D0
*
DIF
/
HSTEP
RR
=
RC
(
I
,
NS
)
DEL
=
DC0
(
IC
+1
)
-
DC0
(
IC
)
KPNT
=
NPNTMO
+
NPNTMO
RIS
(
KPNT
+1
)
=
DC0
(
IC
+1
)
DLRI
(
KPNT
+1
)
=
(
0.0D0
,
0.0D0
)
DO
90
NP
=
1
,
KPNT
FF
=
(
RR
-
RC
(
I
,
NS
))/
DIF
RIS
(
NP
)
=
DEL
*
FF
*
FF
*
(
-2.0D0
*
FF
+3.0D0
)
+
DC0
(
IC
)
DLRI
(
NP
)
=
3.0D0
*
DEL
*
FF
*
(
1.0D0
-
FF
)/(
DIF
*
VK
*
RIS
(
NP
))
90
RR
=
RR
+
HSTEP
RETURN
END
SUBROUTINE
RBF
(
N
,
X
,
NM
,
SJ
)
C
C
FROM
SPHJ
OF
LIBRARY
specfun
C
C
=======================================================
C
Purpose
:
Compute
spherical
Bessel
functions
j
C
Input
:
X
---
Argument
of
j
C
N
---
Order
of
j
(
N
=
0
,
1
,
2
,
...
)
C
Output
:
SJ
(
N
+1
)
---
j
C
NM
---
Highest
order
computed
C
Routines
called
:
C
MSTA1
and
MSTA2
for
computing
the
starting
C
point
for
backward
recurrence
C
=======================================================
C
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
SJ
(
N
+1
)
A0
=
DABS
(
X
)
NM
=
N
IF
(
A0
.LT.
1.0D-60
)
THEN
DO
K
=
2
,
N
+1
SJ
(
K
)
=
0.0D0
ENDDO
SJ
(
1
)
=
1.0D0
RETURN
ENDIF
SJ
(
1
)
=
DSIN
(
X
)/
X
IF
(
N
.EQ.
0
)
RETURN
SJ
(
2
)
=
(
SJ
(
1
)
-
DCOS
(
X
))/
X
IF
(
N
.EQ.
1
)
RETURN
SA
=
SJ
(
1
)
SB
=
SJ
(
2
)
M
=
MSTA1
(
A0
,
200
)
IF
(
M
.LT.
N
)
THEN
NM
=
M
ELSE
M
=
MSTA2
(
A0
,
N
,
15
)
ENDIF
F0
=
0.0D0
F1
=
1.0D0
-100
DO
K
=
M
,
0
,
-1
F
=
(
2.0D0
*
K
+3.0D0
)
*
F1
/
X
-
F0
IF
(
K
.LE.
NM
)
SJ
(
K
+1
)
=
F
F0
=
F1
F1
=
F
ENDDO
IF
(
DABS
(
SA
)
.GT.
DABS
(
SB
))
CS
=
SA
/
F
IF
(
DABS
(
SA
)
.LE.
DABS
(
SB
))
CS
=
SB
/
F0
DO
K
=
1
,
NM
+1
SJ
(
K
)
=
CS
*
SJ
(
K
)
ENDDO
END
SUBROUTINE
CBF
(
N
,
Z
,
NM
,
CSJ
)
C
C
FROM
CSPHJY
OF
LIBRARY
specfun
C
C
==========================================================
C
Purpose
:
Compute
spherical
Bessel
functions
j
C
Input
:
Z
---
Complex
argument
of
j
C
N
---
Order
of
j
(
N
=
0
,
1
,
2
,
...
)
C
Output
:
CSJ
(
N
+1
)
---
j
C
NM
---
Highest
order
computed
C
Routines
called
:
C
MSTA1
and
MSTA2
for
computing
the
starting
C
point
for
backward
recurrence
C
==========================================================
C
IMPLICIT
COMPLEX
*
16
(
C
,
Z
)
REAL
*
8
A0
DIMENSION
CSJ
(
N
+1
)
A0
=
CDABS
(
Z
)
NM
=
N
IF
(
A0
.LT.
1.0D-60
)
THEN
DO
K
=
2
,
N
+1
CSJ
(
K
)
=
0.0D0
ENDDO
CSJ
(
1
)
=
(
1.0D0
,
0.0D0
)
RETURN
ENDIF
CSJ
(
1
)
=
CDSIN
(
Z
)/
Z
IF
(
N
.EQ.
0
)
RETURN
CSJ
(
2
)
=
(
CSJ
(
1
)
-
CDCOS
(
Z
))/
Z
IF
(
N
.EQ.
1
)
RETURN
CSA
=
CSJ
(
1
)
CSB
=
CSJ
(
2
)
M
=
MSTA1
(
A0
,
200
)
IF
(
M
.LT.
N
)
THEN
NM
=
M
ELSE
M
=
MSTA2
(
A0
,
N
,
15
)
ENDIF
CF0
=
0.0D0
CF1
=
1.0D0
-100
DO
K
=
M
,
0
,
-1
CF
=
(
2.0D0
*
K
+3.0D0
)
*
CF1
/
Z
-
CF0
IF
(
K
.LE.
NM
)
CSJ
(
K
+1
)
=
CF
CF0
=
CF1
CF1
=
CF
ENDDO
IF
(
CDABS
(
CSA
)
.GT.
CDABS
(
CSB
))
CS
=
CSA
/
CF
IF
(
CDABS
(
CSA
)
.LE.
CDABS
(
CSB
))
CS
=
CSB
/
CF0
DO
K
=
1
,
NM
+1
CSJ
(
K
)
=
CS
*
CSJ
(
K
)
ENDDO
END
INTEGER
FUNCTION
MSTA1
(
X
,
MP
)
C
C
===================================================
C
Purpose
:
Determine
the
starting
point
for
backward
C
recurrence
such
that
the
magnitude
of
all
C
J
or
j
at
that
point
is
about
10
**
(
-
MP
)
C
Input
:
X
---
Abs
of
argument
of
J
or
j
C
MP
---
Value
of
magnitude
C
Output
:
MSTA1
---
Starting
point
C
===================================================
C
IMPLICIT
DOUBLE PRECISION
(
A
-
H
,
O
-
Z
)
A0
=
DABS
(
X
)
N0
=
INT
(
1.1
*
A0
)
+1
F0
=
ENVJ
(
N0
,
A0
)
-
MP
N1
=
N0
+5
F1
=
ENVJ
(
N1
,
A0
)
-
MP
DO
10
IT
=
1
,
20
NN
=
N1
-
IDINT
((
N1
-
N0
)/(
1.0D0
-
F0
/
F1
))
F
=
ENVJ
(
NN
,
A0
)
-
MP
IF
(
ABS
(
NN
-
N1
)
.LT.
1
)
GO TO
20
N0
=
N1
F0
=
F1
N1
=
NN
10
F1
=
F
20
MSTA1
=
NN
RETURN
END
INTEGER
FUNCTION
MSTA2
(
X
,
N
,
MP
)
C
C
===================================================
C
Purpose
:
Determine
the
starting
point
for
backward
C
recurrence
such
that
all
J
or
j
C
have
MP
significant
digits
C
Input
:
X
---
Abs
of
argument
of
J
or
j
C
N
---
Order
of
J
or
j
C
MP
---
Significant
digit
C
Output
:
MSTA2
---
Starting
point
C
===================================================
C
IMPLICIT
DOUBLE PRECISION
(
A
-
H
,
O
-
Z
)
A0
=
DABS
(
X
)
HMP
=
0.5D0
*
MP
EJN
=
ENVJ
(
N
,
A0
)
IF
(
EJN
.LE.
HMP
)
THEN
OBJ
=
MP
C
N0
=
INT
(
1.1
*
A0
)
+1
C
ELSE
OBJ
=
HMP
+
EJN
N0
=
N
ENDIF
F0
=
ENVJ
(
N0
,
A0
)
-
OBJ
N1
=
N0
+5
F1
=
ENVJ
(
N1
,
A0
)
-
OBJ
DO
10
IT
=
1
,
20
NN
=
N1
-
IDINT
((
N1
-
N0
)/(
1.0D0
-
F0
/
F1
))
F
=
ENVJ
(
NN
,
A0
)
-
OBJ
IF
(
ABS
(
NN
-
N1
)
.LT.
1
)
GO TO
20
N0
=
N1
F0
=
F1
N1
=
NN
10
F1
=
F
20
MSTA2
=
NN
+10
RETURN
END
REAL
*
8
FUNCTION
ENVJ
(
N
,
X
)
DOUBLE PRECISION
X
,
XN
C
IF
(
N
.EQ.
0
)
THEN
XN
=
1.0D-100
ENVJ
=
0.5D0
*
DLOG10
(
6.28D0
*
XN
)
-
XN
*
DLOG10
(
1.36D0
*
X
/
XN
)
ELSE
C
ENVJ
=
0.5D0
*
DLOG10
(
6.28D0
*
N
)
-
N
*
DLOG10
(
1.36D0
*
X
/
N
)
C
ENDIF
C
RETURN
END
SUBROUTINE
RNF
(
N
,
X
,
NM
,
SY
)
C
C
FROM
SPHJY
OF
LIBRARY
specfun
C
C
C
======================================================
C
Purpose
:
Compute
spherical
Bessel
functions
y
C
Input
:
X
---
Argument
of
y
(
X
>
0
)
C
N
---
Order
of
y
(
N
=
0
,
1
,
2
,
...
)
C
Output
:
SY
(
N
+1
)
---
y
C
NM
---
Highest
order
computed
C
======================================================
C
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
DIMENSION
SY
(
N
+1
)
IF
(
X
.LT.
1.0D-60
)
THEN
DO
K
=
1
,
N
+1
SY
(
K
)
=
-1.0D+300
ENDDO
RETURN
ENDIF
SY
(
1
)
=-
DCOS
(
X
)/
X
IF
(
N
.EQ.
0
)
RETURN
SY
(
2
)
=
(
SY
(
1
)
-
DSIN
(
X
))/
X
IF
(
N
.EQ.
1
)
RETURN
F0
=
SY
(
1
)
F1
=
SY
(
2
)
DO
K
=
2
,
N
F
=
(
2.0D0
*
K
-1.0D0
)
*
F1
/
X
-
F0
SY
(
K
+1
)
=
F
IF
(
DABS
(
F
)
.GE.
1.0D+300
)
GO TO
20
F0
=
F1
F1
=
F
ENDDO
RETURN
20
NM
=
K
RETURN
END
SUBROUTINE
POLAR
(
X
,
Y
,
Z
,
R
,
CTH
,
STH
,
CPH
,
SPH
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
LOGICAL
ONX
,
ONY
,
ONZ
ONE
=
1.0D0
C0
=
0.0D0
ONX
=
Y
.EQ.
C0
ONY
=
X
.EQ.
C0
ONZ
=
ONX
.AND.
ONY
IF
(
ONZ
)
GO TO
10
IF
(
ONX
)
GO TO
15
IF
(
ONY
)
GO TO
20
RHOS
=
X
*
X
+
Y
*
Y
RHO
=
DSQRT
(
RHOS
)
CPH
=
X
/
RHO
SPH
=
Y
/
RHO
GO TO
25
10
CPH
=
ONE
SPH
=
C0
GO TO
25
15
RHOS
=
X
*
X
RHO
=
DABS
(
X
)
CPH
=
DSIGN
(
ONE
,
X
)
SPH
=
C0
GO TO
25
20
RHOS
=
Y
*
Y
RHO
=
DABS
(
Y
)
CPH
=
C0
SPH
=
DSIGN
(
ONE
,
Y
)
25
IF
(
Z
.NE.
C0
)
GO TO
35
IF
(
ONZ
)
GO TO
30
R
=
RHO
CTH
=
C0
STH
=
ONE
RETURN
30
R
=
C0
CTH
=
ONE
STH
=
C0
RETURN
35
IF
(
ONZ
)
GO TO
40
R
=
DSQRT
(
RHOS
+
Z
*
Z
)
CTH
=
Z
/
R
STH
=
RHO
/
R
RETURN
40
R
=
DABS
(
Z
)
CTH
=
DSIGN
(
ONE
,
Z
)
STH
=
C0
RETURN
END
SUBROUTINE
SPHAR
(
COSRTH
,
SINRTH
,
COSRPH
,
SINRPH
,
LL
,
YLM
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
SINRMP
(
LL
),
COSRMP
(
LL
),
PLEGN
((
LLPO
*
LL
)/
2
+
LLPO
),
CCC
1
YLM
(
LLPO
*
LLPO
)
CCC
LL
=
MAX0
(
LIT
,
LMT
)
DIMENSION
SINRMP
(
16
),
COSRMP
(
16
),
PLEGN
(
153
),
YLM
(
289
)
COMPLEX
*
16
YLM
PI4
=
DACOS
(
0.0D0
)
*
8.0D0
PI4IRS
=
1.0D0
/
DSQRT
(
PI4
)
X
=
COSRTH
Y
=
DABS
(
SINRTH
)
CLLMO
=
3.0D0
CLL
=
1.5D0
YTOL
=
Y
PLEGN
(
1
)
=
1.0D0
PLEGN
(
2
)
=
X
*
DSQRT
(
CLLMO
)
PLEGN
(
3
)
=
YTOL
*
DSQRT
(
CLL
)
SINRMP
(
1
)
=
SINRPH
COSRMP
(
1
)
=
COSRPH
IF
(
LL
.LT.
2
)
GO TO
30
K
=
3
DO
20
L
=
2
,
LL
LMO
=
L
-1
LTPO
=
L
+
L
+1
LTMO
=
LTPO
-2
LTS
=
LTPO
*
LTMO
CN
=
LTS
DO
10
MPO
=
1
,
LMO
M
=
MPO
-1
MPOPK
=
MPO
+
K
LS
=
(
L
+
M
)
*
(
L
-
M
)
CD
=
LS
CNM
=
LTPO
*
(
LMO
+
M
)
*
(
L
-
MPO
)
CDM
=
(
LTMO
-2
)
*
LS
10
PLEGN
(
MPOPK
)
=
PLEGN
(
MPOPK
-
L
)
*
X
*
DSQRT
(
CN
/
CD
)
-
1
PLEGN
(
MPOPK
-
LTMO
)
*
DSQRT
(
CNM
/
CDM
)
LPK
=
L
+
K
CLTPO
=
LTPO
PLEGN
(
LPK
)
=
PLEGN
(
K
)
*
X
*
DSQRT
(
CLTPO
)
K
=
LPK
+1
CLT
=
LTPO
-1
CLL
=
CLL
*
(
CLTPO
/
CLT
)
YTOL
=
YTOL
*
Y
PLEGN
(
K
)
=
YTOL
*
DSQRT
(
CLL
)
SINRMP
(
L
)
=
SINRPH
*
COSRMP
(
LMO
)
+
COSRPH
*
SINRMP
(
LMO
)
20
COSRMP
(
L
)
=
COSRPH
*
COSRMP
(
LMO
)
-
SINRPH
*
SINRMP
(
LMO
)
30
L
=
0
40
M
=
0
K
=
L
*
(
L
+1
)
L0Y
=
K
+1
L0P
=
K
/
2+1
YLM
(
L0Y
)
=
PI4IRS
*
PLEGN
(
L0P
)
GO TO
45
44
LMP
=
L0P
+
M
SAVE
=
PI4IRS
*
PLEGN
(
LMP
)
LMY
=
L0Y
+
M
YLM
(
LMY
)
=
SAVE
*
DCMPLX
(
COSRMP
(
M
),
SINRMP
(
M
))
IF
(
MOD
(
M
,
2
)
.NE.
0
)
YLM
(
LMY
)
=-
YLM
(
LMY
)
LMY
=
L0Y
-
M
YLM
(
LMY
)
=
SAVE
*
DCMPLX
(
COSRMP
(
M
),
-
SINRMP
(
M
))
45
IF
(
M
.GE.
L
)
GO TO
47
M
=
M
+1
GO TO
44
47
IF
(
L
.GE.
LL
)
RETURN
L
=
L
+1
GO TO
40
END
SUBROUTINE
LUCIN
(
AM
,
NDDMST
,
N
,
IER
)
C
C
NDDMST
FIRST
DIMENSION
OF
AM
AS
DECLARED
IN
DIMENSION
C
STATEMENT
.
C
N
NUMBER
OF
ROWS
IN
AM
.
C
IER
IS
REPLACED
BY
1
FOR
SINGULARITY
.
C
C
C
CALLS
COMPLEX
INNER
PRODUCT
FUNCTION
CDTP
.
C
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
AM
(
NDDMST
,
NDDMST
),
V
(
NDDMST
)
DIMENSION
AM
(
960
,
960
),
V
(
960
)
COMPLEX
*
16
AM
COMPLEX
*
16
CTEMP
,
CDTP
IER
=
0
NMINUS
=
N
-1
C
C
1.2
DEAL
WITH
THE
SPECIAL
CASE
N
=
1.
C
C1200
IF
(
N
.NE.
1
)
GO TO
1300
C
CTEMP
=
AM
(
1
,
1
)
C
IF
(
CTEMP
.EQ.
(
0.0D0
,
0.0D0
))
GO TO
5200
C
AM
(
1
,
1
)
=
1.0D0
/
CTEMP
C
RETURN
C
C
1.3
SET
V
(
I
)
=
1
/
R
(
I
)
**
2
,
WHERE
R
(
I
)
IS
THE
LENGTH
OF
ROW
I
.
C
C1300
DO
1309
I
=
1
,
N
DO
1309
I
=
1
,
N
SUM
=
0.0D0
DO
1319
J
=
1
,
N
SUM
=
SUM
+
DREAL
(
AM
(
I
,
J
))
**
2
+
DIMAG
(
AM
(
I
,
J
))
**
2
1319
CONTINUE
V
(
I
)
=
1.0D0
/
SUM
1309
CONTINUE
C
C
2.
REPLACE
AM
BY
TRIANGULAR
MATRICES
(
L
,
U
)
WHERE
AM
=
L
*
U
.
C
REPLACE
L
(
I
,
I
)
BY
1
/
L
(
I
,
I
),
READY
FOR
SECTION
4.
C
(
ROW
INTERCHANGES
TAKE
PLACE
,
AND
THE
INDICES
OF
THE
PIVOTAL
ROWS
C
ARE
PLACED
IN
V
.
)
C
DO
2019
K
=
1
,
N
KPLUS
=
K
+1
KMINUS
=
K
-1
L
=
K
PSQMAX
=
0.0D0
DO
2029
I
=
K
,
N
CTEMP
=-
CDTP
(
-
AM
(
I
,
K
),
AM
,
I
,
1
,
K
,
KMINUS
,
NDDMST
)
AM
(
I
,
K
)
=
CTEMP
PSQ
=
V
(
I
)
*
(
DREAL
(
CTEMP
)
**
2
+
DIMAG
(
CTEMP
)
**
2
)
IF
(
PSQ
.LE.
PSQMAX
)
GO TO
2029
PSQMAX
=
PSQ
L
=
I
2029
CONTINUE
IF
(
L
.EQ.
K
)
GO TO
2011
DO
2049
J
=
1
,
N
CTEMP
=
AM
(
K
,
J
)
AM
(
K
,
J
)
=
AM
(
L
,
J
)
AM
(
L
,
J
)
=
CTEMP
2049
CONTINUE
V
(
L
)
=
V
(
K
)
2011
V
(
K
)
=
L
IF
(
PSQMAX
.EQ.
0.0D0
)
GO TO
5200
CTEMP
=
1.0D0
/
AM
(
K
,
K
)
AM
(
K
,
K
)
=
CTEMP
IF
(
KPLUS
.GT.
N
)
GO TO
2019
DO
2059
J
=
KPLUS
,
N
AM
(
K
,
J
)
=-
CTEMP
*
CDTP
(
-
AM
(
K
,
J
),
AM
,
K
,
1
,
J
,
KMINUS
,
NDDMST
)
2059
CONTINUE
2019
CONTINUE
C
C
4.
REPLACE
AM
BY
ITS
INVERSE
AMINV
.
C
C
C
4.1
REPLACE
L
AND
U
BY
THEIR
INVERSES
LINV
AND
UINV
.
C
DO
4109
K
=
1
,
NMINUS
KPLUS
=
K
+1
DO
4119
I
=
KPLUS
,
N
AM
(
I
,
K
)
=-
AM
(
I
,
I
)
*
CDTP
((
0.0D0
,
0.0D0
),
AM
,
I
,
K
,
K
,
I
-
K
,
1
NDDMST
)
AM
(
K
,
I
)
=-
CDTP
(
AM
(
K
,
I
),
AM
,
K
,
KPLUS
,
I
,
I
-
K
-1
,
NDDMST
)
4119
CONTINUE
4109
CONTINUE
C
C
4.2
FORM
AMINV
=
UINV
*
LINV
.
C
DO
4209
K
=
1
,
N
DO
4219
I
=
1
,
N
IF
(
I
.GE.
K
)
GO TO
4212
AM
(
I
,
K
)
=
CDTP
((
0.0D0
,
0.0D0
),
AM
,
I
,
K
,
K
,
N
-
K
+1
,
NDDMST
)
GO TO
4219
4212
AM
(
I
,
K
)
=
CDTP
(
AM
(
I
,
K
),
AM
,
I
,
I
+1
,
K
,
N
-
I
,
NDDMST
)
4219
CONTINUE
4209
CONTINUE
C
C
4.3
INTERCHANGE
COLUMNS
OF
AMINV
AS
SPECIFIED
BY
V
,
BUT
IN
REVERSE
C
ORDER
.
C
DO
4309
L
=
1
,
N
K
=
N
-
L
+1
KCOL
=
IDINT
(
V
(
K
))
IF
(
KCOL
.EQ.
K
)
GO TO
4309
DO
4319
I
=
1
,
N
CTEMP
=
AM
(
I
,
K
)
AM
(
I
,
K
)
=
AM
(
I
,
KCOL
)
AM
(
I
,
KCOL
)
=
CTEMP
4319
CONTINUE
4309
CONTINUE
RETURN
5200
IER
=
1
RETURN
END
COMPLEX
*
16
FUNCTION
CDTP
(
Z
,
AV
,
I
,
JF
,
K
,
NJ
,
ISTEP
)
CCC
DIMENSION
AV
(
NDDMST
*
NDDMST
)
DIMENSION
AV
(
921600
)
COMPLEX
*
16
AV
,
Z
CDTP
=
Z
IF
(
NJ
.LE.
0
)
RETURN
JL
=
JF
+
NJ
-1
IR
=
(
K
-1
)
*
ISTEP
DO
3
J
=
JF
,
JL
3
CDTP
=
CDTP
+
AV
((
J
-1
)
*
ISTEP
+
I
)
*
AV
(
J
+
IR
)
RETURN
END
CCC
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment