Skip to content
Snippets Groups Projects
Commit be4513c6 authored by Giacomo Mulas's avatar Giacomo Mulas
Browse files

Upload New File

parent a203e0c3
Branches
Tags
No related merge requests found
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 1VYHJ(NCOU*LITPOS),VYJ0(NSPH*LMTPOS),
CCC 2RMI(LI,NSPH),REI(LI,NSPH),W(NLEMT,4),
CCC 3AM0M(NLEMT,NLEMT),FSAS(NSPH),SAS(NSPH,2,2),VINTS(NSPH,16),
CCC 4V3J0(NV3J),SSCS(NSPH),SEXS(NSPH),SABS(NSPH),
CCC 5SQSCS(NSPH),SQEXS(NSPH),SQABS(NSPH),GCSV(NSPH),
CCC 6RXX(NSPH),RYY(NSPH),RZZ(NSPH),ROS(NSPH),RC(NSPH,NSHL),
CCC 7IND3J(LMPO,LM),IOG(NSPH),NSHL(NSPH)
COMMON/C1/VH(255),VJ0(102),VYHJ(4335),VYJ0(1734),VJ(1),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,VINTT,FSAC,SAC,FSACM,VINT,VINTM,SCSCP,ECSCP,SCSCPM,ECSCPM
CCC COMMON/C2/RIS(NHSPO),DLRI(NHSPO),DC0(NSHL-NTL+1),
CCC 1VKT(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),
1U(3),US(3),UN(3),UNS(3),UP(3),UPS(3),
2UNMP(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),
1GAP(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),
1TQEV(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(1H ,' AT ',I1,' LCALC=',I3,' TOO SMALL WITH ARG=',2(1PD15.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(1H ,' TQEx=',1PD15.7,', TQEy=',1PD15.7,', TQEz=',1PD15.7)
6982 FORMAT
1(1H ,' TQSx=',1PD15.7,', TQSy=',1PD15.7,', TQSz=',1PD15.7)
6983 FORMAT
1(1H ,' TQEl=',1PD15.7,', TQEr=',1PD15.7,', TQEk=',1PD15.7)
6984 FORMAT
1(1H ,' TQSl=',1PD15.7,', TQSr=',1PD15.7,', TQSk=',1PD15.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)))
1GO 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,
1ISQ,IBF,SCAN,CFMP,SFMP,CFSP,SFSP)
IF(ISAM.GE.0)GO TO 192
CALL WMASP(COST,SINT,COSP,SINP,COSTS,SINTS,COSPS,SINPS,
1U,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 1TQSE(2,NSPH),TQSPE(2,NSPH),TQSS(2,NSPH),TQSPS(2,NSPH)
DIMENSION IOG(6),RMI(8,6),REI(8,6),
1TQSE(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),
1TQCE(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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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,
1CSAM,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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 1RMI(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)))
1GO 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)+
1CG1(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),
1GAPR(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,
1SUMM,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)))
1GO 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)+
2SUEM*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)+
2SUEMP*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,
1CA11,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)))
1GO 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)))
1GO 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)))
1GO 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)))
1GO TO 66
IF(INPOL.NE.0)GO TO 62
SUM1=SUM1+
1SVW(L,ILMP,1,1)*SVS(L,ILMP,1,1)+SVW(L,ILMP,2,1)*SVS(L,ILMP,1,2)+
2SVW(L,ILMP,2,1)*SVS(L,ILMP,2,1)+SVW(L,ILMP,1,1)*SVS(L,ILMP,2,2)
SUM2=SUM2+
1SVW(L,ILMP,1,2)*SVS(L,ILMP,1,1)+SVW(L,ILMP,2,2)*SVS(L,ILMP,1,2)+
2SVW(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+
1SVW(L,ILMP,2,1)*SVS(L,ILMP,1,1)+SVW(L,ILMP,1,1)*SVS(L,ILMP,1,2)+
2SVW(L,ILMP,1,1)*SVS(L,ILMP,2,1)+SVW(L,ILMP,2,1)*SVS(L,ILMP,2,2)
SUM2=SUM2+
1SVW(L,ILMP,2,2)*SVS(L,ILMP,1,1)+SVW(L,ILMP,1,2)*SVS(L,ILMP,1,2)+
2SVW(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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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,
1ISQ,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),
1UP(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,
1U,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),
1U(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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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,
1SUM1,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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)
1GO 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)
1GO 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)
1GO 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 3j(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 3j(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 3j(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 1FBI(LIPT),FB(LIPT),FN(LIPT),
CCC 2RMF(LI),DRMF(LI),REF(LI),DREF(LI)
DIMENSION CFJ(10),RFJ(10),RFN(10),
1FBI(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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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,
1Y1,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,
1CY23,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,
1CY23,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),
1RMI(8,6),REI(8,6),W(160,4),AM0M(160,160),
2FSAS(6),SAS(6,2,2),VINTS(6,16),VINTT(16),
3FSAC(2,2),SAC(2,2),FSACM(2,2),
4VINT(16),VINTM(16),SCSCP(2),ECSCP(2),SCSCPM(2),ECSCPM(2),
5V3J0(276),SCSC(2),ECSC(2),SCSCM(2),ECSCM(2),
6SSCS(6),SEXS(6),SABS(6),SQSCS(6),SQEXS(6),SQABS(6),GCSV(6),
7RXX(6),RYY(6),RZZ(6),ROS(6),RC(6,8),
8IND3J(9,8),IOG(6),NSHL(6)
COMPLEX*16 VH,VJ0,VYHJ,VYJ0,VJ,RMI,REI,W,AM0M,FSAS,SAS,
1VINTS,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 1YLM(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)-
1PLEGN(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,
1NDDMST)
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment