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
c9244503
Commit
c9244503
authored
1 year ago
by
Giacomo Mulas
Browse files
Options
Downloads
Patches
Plain Diff
Upload New File
parent
af60175b
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
trapping/lffft.f
+494
-0
494 additions, 0 deletions
trapping/lffft.f
with
494 additions
and
0 deletions
trapping/lffft.f
0 → 100644
+
494
−
0
View file @
c9244503
PROGRAM
LFFFT
CCC
140630
CCC
LE
=
20
,
LM
=
20
,
LE
<=
LM
CCC
FRPIF
IS
INTENSITY
FACTOR
ANALOGOUS
TO
I0
FOR
FOCAL
REGION
POINTS
;
CCC
JFT
<=
0
-->
OUTPUTS
ON
TAPE
FORCE
*
(
c
/
FRPIF
)
IN
m
**
2
;
CCC
JFT
>=
0
-->
OUTPUTS
ON
TAPE
TORQUE
*
(
c
/
FRPIF
)
*
(
VK
*
EXRI
)
**
3
;
CCC
(
TORQUE
OUTPUTS
)/(
EXDC
*
VK
*
VK
)
ARE
IN
m
**
2
CCC
JSS
=
1
USES
TWS
FOR
INPUT
CCC
JTW
=
1
FOR
OUTPUTS
ON
PAPER
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
ZPV
(
LE
,
3
,
2
,
2
),
AC
(
NLEMT
),
WS
(
NLEMT
)
DIMENSION
ZPV
(
20
,
3
,
2
,
2
),
AC
(
880
),
WS
(
880
),
1
FFFE
(
3
),
FFFS
(
3
),
FFTE
(
3
),
FFTS
(
3
)
COMPLEX
*
16
AC
,
WS
CCC
DIMENSION
XV
(
NXV
),
YV
(
NYV
),
ZV
(
NZV
),
WSL
(
NLMMT
)
DIMENSION
XV
(
51
),
YV
(
51
),
ZV
(
51
),
WSL
(
160
)
COMPLEX
*
16
WSL
CCC
DIMENSION
AM0M
(
NLEMT
,
NLEMT
)
DIMENSION
AM0M
(
880
,
880
)
COMPLEX
*
16
AM0M
CCC
DIMENSION
AMD
(
NVAM
,
4
),
INDAM
(
LE
,
LE
)
CCC
NVAM
=
LE
*
LE
+
(
LE
*
LEPO
*
LETPO
)/
3
DIMENSION
AMD
(
6140
,
4
),
INDAM
(
20
,
20
)
COMPLEX
*
16
AMD
CCC
DIMENSION
TMSM
(
LE
),
TMSE
(
LE
)
DIMENSION
TMSM
(
20
),
TMSE
(
20
)
COMPLEX
*
16
TMSM
,
TMSE
CCC
DIMENSION
TMS
(
LE
,
3
)
DIMENSION
TMS
(
20
,
3
)
COMPLEX
*
16
TMS
COMMON
/
CIL
/
LE
,
NLEM
,
NLEMT
,
MXMPO
,
MXIM
COMMON
/
CCR
/
CC0
,
UIM
,
SQ2ITI
,
COF
,
CIMU
,
SQ2I
COMPLEX
*
16
CC0
,
UIM
,
SQ2ITI
IR
=
5
IT
=
7
OPEN
(
IR
,
FILE
=
'DLFFFT'
,
STATUS
=
'OLD'
)
READ
(
IR
,
*
)
JFT
,
JSS
,
JTW
CLOSE
(
IR
)
OPEN
(
IT
,
FILE
=
'TTMS'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'OLD'
)
READ
(
IT
)
IS
,
LE
READ
(
IT
)
VKS
,
EXRIS
NLEM
=
LE
*
(
LE
+2
)
NLEMT
=
NLEM
+
NLEM
IF
(
IS
.GT.
2222
)
GO TO
120
IF
(
IS
.GT.
1111
)
GO TO
125
IF
(
IS
.GE.
0
)
GO TO
135
IF
(
IS
.LT.
0
)
GO TO
145
120
CONTINUE
READ
(
IT
)(
TMS
(
I
,
1
),
TMS
(
I
,
2
),
TMS
(
I
,
3
),
I
=
1
,
LM
)
GO TO
150
125
CONTINUE
READ
(
IT
)(
TMSM
(
I
),
TMSE
(
I
),
I
=
1
,
LE
)
GO TO
150
135
CONTINUE
READ
(
IT
)((
AM0M
(
I
,
J
),
J
=
1
,
NLEMT
),
I
=
1
,
NLEMT
)
GO TO
150
145
CONTINUE
NVAM
=
LE
*
LE
+
(
LE
*
(
LE
+1
)
*
(
LE
*
2+1
))/
3
READ
(
IT
)((
AMD
(
I
,
J
),
J
=
1
,
4
),
I
=
1
,
NVAM
)
READ
(
IT
)((
INDAM
(
I
,
J
),
J
=
1
,
LE
),
I
=
1
,
LE
)
READ
(
IT
)
MXMPO
MXIM
=
MXMPO
*
2-1
150
CLOSE
(
IT
)
IF
(
JSS
.NE.
1
)
1
OPEN
(
IT
,
FILE
=
'TFRFME'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'OLD'
)
IF
(
JSS
.EQ.
1
)
1
OPEN
(
IT
,
FILE
=
'TWS'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'OLD'
)
READ
(
IT
)
LMODE
,
LM
,
NKV
,
NXV
,
NYV
,
NZV
IF
(
LM
.LT.
LE
)
GO TO
500
READ
(
IT
)
VK
,
EXRI
,
AN
,
FF
,
TRA
IF
((
VK
.NE.
VKS
)
.OR.
(
EXRI
.NE.
EXRIS
))
GO TO
500
READ
(
IT
)
SPD
,
FRSH
,
EXRIL
READ
(
IT
)(
XV
(
I
),
I
=
1
,
NXV
)
READ
(
IT
)(
YV
(
I
),
I
=
1
,
NYV
)
READ
(
IT
)(
ZV
(
I
),
I
=
1
,
NZV
)
CC0
=
(
0.0D0
,
0.0D0
)
UIM
=
(
0.0D0
,
1.0D0
)
IF
(
JFT
.GT.
0
)
GO TO
155
CALL
THDPS
(
LE
,
ZPV
)
EXDC
=
EXRI
*
EXRI
SQK
=
VK
*
VK
*
EXDC
COF
=
1.0D0
/
SQK
CIMU
=
COF
/
DSQRT
(
2.0D0
)
IF
(
JSS
.EQ.
1
)
GO TO
155
ITF
=
8
OPEN
(
ITF
,
FILE
=
'TLFFF'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'UNKNOWN'
)
WRITE
(
ITF
)
LMODE
,
LE
,
NKV
,
NXV
,
NYV
,
NZV
WRITE
(
ITF
)
VK
,
EXRI
,
AN
,
FF
,
TRA
WRITE
(
ITF
)
SPD
,
FRSH
,
EXRIL
WRITE
(
ITF
)(
XV
(
I
),
I
=
1
,
NXV
)
WRITE
(
ITF
)(
YV
(
I
),
I
=
1
,
NYV
)
WRITE
(
ITF
)(
ZV
(
I
),
I
=
1
,
NZV
)
IF
(
JFT
.LT.
0
)
GO TO
160
155
SQ2I
=
1.0D0
/
DSQRT
(
2.0D0
)
SQ2ITI
=
SQ2I
*
UIM
IF
(
JSS
.EQ.
1
)
GO TO
160
ITT
=
9
OPEN
(
ITT
,
FILE
=
'TLFFT'
,
FORM
=
'UNFORMATTED'
,
STATUS
=
'UNKNOWN'
)
WRITE
(
ITT
)
LMODE
,
LE
,
NKV
,
NXV
,
NYV
,
NZV
WRITE
(
ITT
)
VK
,
EXRI
,
AN
,
FF
,
TRA
WRITE
(
ITT
)
SPD
,
FRSH
,
EXRIL
WRITE
(
ITT
)(
XV
(
I
),
I
=
1
,
NXV
)
WRITE
(
ITT
)(
YV
(
I
),
I
=
1
,
NYV
)
WRITE
(
ITT
)(
ZV
(
I
),
I
=
1
,
NZV
)
160
NLMM
=
LM
*
(
LM
+2
)
NLMMT
=
NLMM
+
NLMM
DO
475
IZ
=
1
,
NZV
DO
475
IY
=
1
,
NYV
DO
475
IX
=
1
,
NXV
IF
(
LM
.GT.
LE
)
GO TO
170
READ
(
IT
)(
WS
(
I
),
I
=
1
,
NLMMT
)
GO TO
180
170
READ
(
IT
)(
WSL
(
I
),
I
=
1
,
NLMMT
)
DO
175
I
=
1
,
NLEM
IE
=
I
+
NLEM
IEL
=
I
+
NLMM
WS
(
I
)
=
WSL
(
I
)
WS
(
IE
)
=
WSL
(
IEL
)
175
CONTINUE
180
IF
(
IS
.EQ.
2222
)
GO TO
200
IF
(
IS
.EQ.
1111
)
GO TO
205
IF
(
IS
.GT.
0
)
GO TO
305
IF
(
IS
.LT.
0
)
GO TO
405
200
CONTINUE
CALL
SAMPOA
(
AC
,
TMS
,
WS
)
GO TO
445
205
CONTINUE
CALL
SAMP
(
AC
,
TMSM
,
TMSE
,
WS
)
GO TO
445
305
CONTINUE
CALL
CAMP
(
AC
,
AM0M
,
WS
)
GO TO
445
405
CONTINUE
CALL
CZAMP
(
AC
,
AMD
,
INDAM
,
WS
)
445
CONTINUE
IF
(
JFT
.GT.
0
)
GO TO
460
CALL
FFRF
(
ZPV
,
AC
,
WS
,
FFFE
,
FFFS
)
IF
(
JSS
.NE.
1
)
GO TO
450
WRITE
(
66
,
*
)
FFFE
(
1
),
FFFS
(
1
),
FFFE
(
1
)
-
FFFS
(
1
)
WRITE
(
66
,
*
)
FFFE
(
2
),
FFFS
(
2
),
FFFE
(
2
)
-
FFFS
(
2
)
WRITE
(
66
,
*
)
FFFE
(
3
),
FFFS
(
3
),
FFFE
(
3
)
-
FFFS
(
3
)
GO TO
455
450
WRITE
(
ITF
)(
FFFE
(
I
)
-
FFFS
(
I
),
I
=
1
,
3
)
IF
(
JTW
.EQ.
1
)
WRITE
(
66
,
6666
)
1
IX
,
IY
,
IZ
,
FFFE
(
1
)
-
FFFS
(
1
),
FFFE
(
2
)
-
FFFS
(
2
),
FFFE
(
3
)
-
FFFS
(
3
)
455
IF
(
JFT
.LT.
0
)
GO TO
475
460
CALL
FFRT
(
AC
,
WS
,
FFTE
,
FFTS
)
IF
(
JSS
.NE.
1
)
GO TO
470
WRITE
(
67
,
*
)
FFTE
(
1
),
FFTS
(
1
),
FFTE
(
1
)
-
FFTS
(
1
)
WRITE
(
67
,
*
)
FFTE
(
2
),
FFTS
(
2
),
FFTE
(
2
)
-
FFTS
(
2
)
WRITE
(
67
,
*
)
FFTE
(
3
),
FFTS
(
3
),
FFTE
(
3
)
-
FFTS
(
3
)
GO TO
475
470
WRITE
(
ITT
)(
FFTE
(
I
)
-
FFTS
(
I
),
I
=
1
,
3
)
IF
(
JTW
.EQ.
1
)
WRITE
(
67
,
6666
)
1
IX
,
IY
,
IZ
,
FFTE
(
1
)
-
FFTS
(
1
),
FFTE
(
2
)
-
FFTS
(
2
),
FFTE
(
3
)
-
FFTS
(
3
)
475
CONTINUE
IF
(
JSS
.EQ.
1
)
GO TO
500
IF
(
JFT
.LE.
0
)
CLOSE
(
ITF
)
IF
(
JFT
.GE.
0
)
CLOSE
(
ITT
)
500
CONTINUE
CLOSE
(
IT
)
STOP
6666
FORMAT
(
I5
,
I4
,
I4
,
1PD15.4
,
1PD12.4
,
1PD12.4
)
END
SUBROUTINE
SAMPOA
(
AC
,
TMS
,
WS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
CIL
/
LE
,
NLEM
,
NLEMT
,
MXMPO
,
MXIM
CCC
DIMENSION
AC
(
NLEMT
),
TMS
(
LE
,
3
),
WS
(
NLEMT
)
DIMENSION
AC
(
880
),
TMS
(
20
,
3
),
WS
(
880
)
COMPLEX
*
16
AC
,
TMS
,
WS
DIMENSION
TM
(
2
,
2
)
COMPLEX
*
16
TM
I
=
0
DO
20
L
=
1
,
LE
TM
(
1
,
1
)
=
TMS
(
L
,
1
)
TM
(
1
,
2
)
=
TMS
(
L
,
2
)
TM
(
2
,
2
)
=
TMS
(
L
,
3
)
TM
(
2
,
1
)
=
TM
(
1
,
2
)
LTPO
=
L
+
L
+1
DO
20
IM
=
1
,
LTPO
I
=
I
+1
IE
=
I
+
NLEM
AC
(
I
)
=
TM
(
1
,
1
)
*
WS
(
I
)
+
TM
(
1
,
2
)
*
WS
(
IE
)
AC
(
IE
)
=
TM
(
2
,
1
)
*
WS
(
I
)
+
TM
(
2
,
2
)
*
WS
(
IE
)
20
CONTINUE
RETURN
END
SUBROUTINE
SAMP
(
AC
,
TMSM
,
TMSE
,
WS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
CIL
/
LE
,
NLEM
,
NLEMT
,
MXMPO
,
MXIM
CCC
DIMENSION
AC
(
NLEMT
),
TMSM
(
LE
),
TMSE
(
LE
),
WS
(
NLEMT
)
DIMENSION
AC
(
880
),
TMSM
(
20
),
TMSE
(
20
),
WS
(
880
)
COMPLEX
*
16
AC
,
TMSM
,
TMSE
,
WS
I
=
0
DO
20
L
=
1
,
LE
LTPO
=
L
+
L
+1
DO
20
IM
=
1
,
LTPO
I
=
I
+1
IE
=
I
+
NLEM
AC
(
I
)
=
TMSM
(
L
)
*
WS
(
I
)
AC
(
IE
)
=
TMSE
(
L
)
*
WS
(
IE
)
20
CONTINUE
RETURN
END
SUBROUTINE
CAMP
(
AC
,
AM0M
,
WS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
CIL
/
LE
,
NLEM
,
NLEMT
,
MXMPO
,
MXIM
COMMON
/
CCR
/
CC0
,
UIM
,
SQ2ITI
,
COF
,
CIMU
,
SQ2I
COMPLEX
*
16
CC0
,
UIM
,
SQ2ITI
CCC
DIMENSION
AC
(
NLEMT
),
AM0M
(
NLEMT
,
NLEMT
),
WS
(
NLEMT
)
DIMENSION
AC
(
880
),
AM0M
(
880
,
880
),
WS
(
880
)
COMPLEX
*
16
AC
,
AM0M
,
WS
DO
20
J
=
1
,
NLEMT
AC
(
J
)
=
CC0
DO
20
I
=
1
,
NLEMT
AC
(
J
)
=
AC
(
J
)
+
AM0M
(
J
,
I
)
*
WS
(
I
)
20
CONTINUE
RETURN
END
SUBROUTINE
CZAMP
(
AC
,
AMD
,
INDAM
,
WS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
CIL
/
LE
,
NLEM
,
NLEMT
,
MXMPO
,
MXIM
COMMON
/
CCR
/
CC0
,
UIM
,
SQ2ITI
,
COF
,
CIMU
,
SQ2I
COMPLEX
*
16
CC0
,
UIM
,
SQ2ITI
CCC
DIMENSION
AC
(
NLEMT
),
AMD
(
NVAM
,
4
),
INDAM
(
LE
,
LE
),
WS
(
NLEMT
)
DIMENSION
AC
(
880
),
AMD
(
6140
,
4
),
INDAM
(
20
,
20
),
WS
(
880
)
COMPLEX
*
16
AC
,
AMD
,
WS
COMPLEX
*
16
SUMM
,
SUME
DO
10
I
=
1
,
NLEMT
10
AC
(
I
)
=
CC0
DO
20
IM
=
1
,
MXIM
M
=
IM
-
MXMPO
LMN
=
MAX0
(
IABS
(
M
),
1
)
DO
20
L
=
LMN
,
LE
I
=
M
+
L
*
(
L
+1
)
IE
=
I
+
NLEM
SUMM
=
CC0
SUME
=
CC0
DO
15
LS
=
LMN
,
LE
IS
=
M
+
LS
*
(
LS
+1
)
ISE
=
IS
+
NLEM
NUM
=
INDAM
(
L
,
LS
)
+
M
SUMM
=
SUMM
+
AMD
(
NUM
,
1
)
*
WS
(
IS
)
+
AMD
(
NUM
,
2
)
*
WS
(
ISE
)
SUME
=
SUME
+
AMD
(
NUM
,
3
)
*
WS
(
IS
)
+
AMD
(
NUM
,
4
)
*
WS
(
ISE
)
15
CONTINUE
AC
(
I
)
=
SUMM
AC
(
IE
)
=
SUME
20
CONTINUE
RETURN
END
SUBROUTINE
FFRF
(
ZPV
,
AC
,
WS
,
FFFE
,
FFFS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
CIL
/
LE
,
NLEM
,
NLEMT
,
MXMPO
,
MXIM
COMMON
/
CCR
/
CC0
,
UIM
,
SQ2ITI
,
COF
,
CIMU
,
SQ2I
COMPLEX
*
16
CC0
,
UIM
,
SQ2ITI
CCC
DIMENSION
ZPV
(
LE
,
3
,
2
,
2
),
AC
(
NLEMT
),
WS
(
NLEMT
)
DIMENSION
ZPV
(
20
,
3
,
2
,
2
),
AC
(
880
),
WS
(
880
),
FFFE
(
3
),
FFFS
(
3
)
COMPLEX
*
16
AC
,
WS
DIMENSION
GAP
(
3
)
COMPLEX
*
16
GAP
COMPLEX
*
16
UIMMP
,
SUMM
,
SUME
,
SUEM
,
SUEE
DO
50
IMU
=
1
,
3
MU
=
IMU
-2
GAP
(
IMU
)
=
CC0
DO
40
L
=
1
,
LE
LPO
=
L
+1
LTPO
=
LPO
+
L
IMM
=
L
*
LPO
DO
40
ILMP
=
1
,
3
IF
(((
L
.EQ.
1
)
.AND.
(
ILMP
.EQ.
1
))
.OR.
((
L
.EQ.
LE
)
.AND.
(
ILMP
.EQ.
3
)))
1
GO TO
40
LMPML
=
ILMP
-2
LMP
=
L
+
LMPML
UIMMP
=-
LMPML
*
UIM
IMPMMMP
=
LMP
*
(
LMP
+1
)
DO
30
IM
=
1
,
LTPO
M
=
IM
-
LPO
MMP
=
M
-
MU
IF
(
IABS
(
MMP
)
.GT.
LMP
)
GO TO
30
I
=
IMM
+
M
IE
=
I
+
NLEM
IMP
=
IMPMMMP
+
MMP
IMPE
=
IMP
+
NLEM
CGC
=
CG1
(
LMPML
,
MU
,
L
,
M
)
SUMM
=
DCONJG
(
WS
(
I
))
*
AC
(
IMP
)
SUME
=
DCONJG
(
WS
(
I
))
*
AC
(
IMPE
)
SUEM
=
DCONJG
(
WS
(
IE
))
*
AC
(
IMP
)
SUEE
=
DCONJG
(
WS
(
IE
))
*
AC
(
IMPE
)
IF
(
LMPML
.EQ.
0
)
GO TO
25
SUMM
=
SUMM
*
UIMMP
SUME
=
SUME
*
UIMMP
SUEM
=
SUEM
*
UIMMP
SUEE
=
SUEE
*
UIMMP
25
GAP
(
IMU
)
=
GAP
(
IMU
)
+
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
))
30
CONTINUE
40
CONTINUE
50
CONTINUE
SUME
=-
GAP
(
1
)
*
CIMU
SUEE
=-
GAP
(
2
)
*
COF
SUEM
=-
GAP
(
3
)
*
CIMU
FFFE
(
1
)
=
DREAL
(
SUME
-
SUEM
)
FFFE
(
2
)
=
DREAL
((
SUME
+
SUEM
)
*
UIM
)
FFFE
(
3
)
=
DREAL
(
SUEE
)
DO
90
IMU
=
1
,
3
MU
=
IMU
-2
GAP
(
IMU
)
=
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
)
SUMM
=
DCONJG
(
AC
(
I
))
*
AC
(
IMP
)
SUME
=
DCONJG
(
AC
(
I
))
*
AC
(
IMPE
)
SUEM
=
DCONJG
(
AC
(
IE
))
*
AC
(
IMP
)
SUEE
=
DCONJG
(
AC
(
IE
))
*
AC
(
IMPE
)
IF
(
LMPML
.EQ.
0
)
GO TO
65
SUMM
=
SUMM
*
UIMMP
SUME
=
SUME
*
UIMMP
SUEM
=
SUEM
*
UIMMP
SUEE
=
SUEE
*
UIMMP
65
GAP
(
IMU
)
=
GAP
(
IMU
)
+
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
))
70
CONTINUE
80
CONTINUE
90
CONTINUE
SUME
=
GAP
(
1
)
*
CIMU
SUEE
=
GAP
(
2
)
*
COF
SUEM
=
GAP
(
3
)
*
CIMU
FFFS
(
1
)
=
DREAL
(
SUME
-
SUEM
)
FFFS
(
2
)
=
DREAL
((
SUME
+
SUEM
)
*
UIM
)
FFFS
(
3
)
=
DREAL
(
SUEE
)
RETURN
END
SUBROUTINE
THDPS
(
LM
,
ZPV
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
CCC
DIMENSION
ZPV
(
LM
,
3
,
2
,
2
)
DIMENSION
ZPV
(
20
,
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
FFRT
(
AC
,
WS
,
FFTE
,
FFTS
)
IMPLICIT
REAL
*
8
(
A
-
H
,
O
-
Z
)
COMMON
/
CIL
/
LE
,
NLEM
,
NLEMT
,
MXMPO
,
MXIM
COMMON
/
CCR
/
CC0
,
UIM
,
SQ2ITI
,
COF
,
CIMU
,
SQ2I
COMPLEX
*
16
CC0
,
UIM
,
SQ2ITI
CCC
DIMENSION
AC
(
NLEMT
),
WS
(
NLEMT
)
DIMENSION
AC
(
880
),
WS
(
880
),
FFTE
(
3
),
FFTS
(
3
)
COMPLEX
*
16
AC
,
WS
DIMENSION
CTQCE
(
3
),
CTQCS
(
3
)
COMPLEX
*
16
CTQCE
,
CTQCS
COMPLEX
*
16
ACW
,
ACA
CTQCE
(
1
)
=
CC0
CTQCE
(
2
)
=
CC0
CTQCE
(
3
)
=
CC0
CTQCS
(
1
)
=
CC0
CTQCS
(
2
)
=
CC0
CTQCS
(
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
(
AC
(
I
))
*
WS
(
IMMU
)
+
DCONJG
(
AC
(
IE
))
*
WS
(
IMMUE
)
ACA
=
DCONJG
(
AC
(
I
))
*
AC
(
IMMU
)
+
DCONJG
(
AC
(
IE
))
*
AC
(
IMMUE
)
CTQCE
(
1
)
=
CTQCE
(
1
)
+
ACW
*
RMU
CTQCS
(
1
)
=
CTQCS
(
1
)
+
ACA
*
RMU
30
RMU
=-
M
ACW
=
DCONJG
(
AC
(
I
))
*
WS
(
I
)
+
DCONJG
(
AC
(
IE
))
*
WS
(
IE
)
ACA
=
DCONJG
(
AC
(
I
))
*
AC
(
I
)
+
DCONJG
(
AC
(
IE
))
*
AC
(
IE
)
CTQCE
(
2
)
=
CTQCE
(
2
)
+
ACW
*
RMU
CTQCS
(
2
)
=
CTQCS
(
2
)
+
ACA
*
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
(
AC
(
I
))
*
WS
(
IMMU
)
+
DCONJG
(
AC
(
IE
))
*
WS
(
IMMUE
)
ACA
=
DCONJG
(
AC
(
I
))
*
AC
(
IMMU
)
+
DCONJG
(
AC
(
IE
))
*
AC
(
IMMUE
)
CTQCE
(
3
)
=
CTQCE
(
3
)
+
ACW
*
RMU
CTQCS
(
3
)
=
CTQCS
(
3
)
+
ACA
*
RMU
50
CONTINUE
60
CONTINUE
FFTE
(
1
)
=
DREAL
(
CTQCE
(
1
)
-
CTQCE
(
3
))
*
SQ2I
FFTE
(
2
)
=
DREAL
((
CTQCE
(
1
)
+
CTQCE
(
3
))
*
SQ2ITI
)
FFTE
(
3
)
=
DREAL
(
CTQCE
(
2
))
FFTS
(
1
)
=-
DREAL
(
CTQCS
(
1
)
-
CTQCS
(
3
))
*
SQ2I
FFTS
(
2
)
=-
DREAL
((
CTQCS
(
1
)
+
CTQCS
(
3
))
*
SQ2ITI
)
FFTS
(
3
)
=-
DREAL
(
CTQCS
(
2
))
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