added DWUCK4 source code, no UI implemented for it
This commit is contained in:
parent
c49095aa95
commit
67cd8a1b09
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -10,3 +10,4 @@ __pycache__
|
|||
IAEA_NuclearData.csv
|
||||
|
||||
*.txt
|
||||
*.o
|
||||
|
|
1075
dwuck4/ADWCK4.FOR
Normal file
1075
dwuck4/ADWCK4.FOR
Normal file
File diff suppressed because it is too large
Load Diff
564
dwuck4/BDWCK4.FOR
Normal file
564
dwuck4/BDWCK4.FOR
Normal file
|
@ -0,0 +1,564 @@
|
|||
c***********************************************************************
|
||||
SUBROUTINE BDWUCK4
|
||||
c
|
||||
c Control program for second part of DWUCK4 which integrates the
|
||||
c distorted waves, calculates radial integrals, inelastic
|
||||
c amplitudes and the crossections.
|
||||
c
|
||||
c***********************************************************************
|
||||
c
|
||||
parameter(ispc0 = 4010, ispc1 = 8000, ispc2 = 8000)
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
logical i_sym(2)
|
||||
COMMON ALPHA(15),IDAT(6),ICON(20),ANGLE(5),HBARC,AMU,AMASS,CHSQ,AA
|
||||
1,DRF,Z(3),ZA(3),FM(3),FMA(3),RC(3),AC(3),PNLOC(3),FS(3),ECM(3)
|
||||
2,FK(3),FK2(3),ETA(3),DR(3),FMU(3),FN,FL,FJ2,FSS,VCE,FNRNG,RSIG(2)
|
||||
3,K,KZ,LPLUS,LPL2,IS(3),NS(3),NLTR,LTRT(8),JTRT(8),ISTRT(8),IBF(8)
|
||||
4,KC,IBUFF,IWORD,ILINE,JLINE
|
||||
Common/array0/space0(ispc0)
|
||||
Common/array1/space1(ispc1)
|
||||
Common/array2/space2(ispc2)
|
||||
|
||||
DIMENSION D(8000),sigplt(200,2),plm(2000), dtemp(2000), F(800)
|
||||
1, FLL(8000), UB(800), FF(10)
|
||||
Equivalence (space1( 1), D), (space2( 1), FLL)
|
||||
1, (space0( 1), F), (space0( 1), plm(1))
|
||||
2, (space0(1601), sigplt(1,1)), (space0(3201), UB)
|
||||
3, (space0(4001), FF) ,(space1(1001), dtemp)
|
||||
DATA FOURPI/12.5663706/
|
||||
c
|
||||
do 40 i=1,2
|
||||
c
|
||||
if(fm(i).eq.fma(i).and.z(i).eq.za(i)) then
|
||||
i_sym(i)=.true.
|
||||
else
|
||||
i_sym(i)=.false.
|
||||
endif
|
||||
40 continue
|
||||
C
|
||||
IBUF=IBF(1)
|
||||
write(*,'(a)')' Subroutine INTEG entered'
|
||||
CALL INTEG4(i_sym)
|
||||
C
|
||||
C PRINT OUT ELASTIC CROSS-SECTIONS
|
||||
C
|
||||
IF(ICON(6).ne.0.or.ICON(16).ne.0) then
|
||||
WRITE(6,9999)ALPHA,(IDAT(I),I=1,3)
|
||||
WRITE(6,9904)
|
||||
C
|
||||
CALL ELSIG(dtemp,d,plm,sigplt,angle,fk,eta,rsig,alpha
|
||||
1 ,idat,is,icon,lplus,i_sym)
|
||||
C
|
||||
else
|
||||
WRITE(6,9002)(RSIG(N),N=1,2)
|
||||
endif
|
||||
IF(ICON(12).NE.0) then
|
||||
c
|
||||
c print out radial wave functions
|
||||
c
|
||||
c skip over form factors
|
||||
DO 72 M=1,NLTR
|
||||
READ(4)
|
||||
72 CONTINUE
|
||||
WRITE(6,9999)ALPHA,(IDAT(I),I=1,3)
|
||||
C
|
||||
CALL TAPED
|
||||
C
|
||||
endif
|
||||
c
|
||||
RZ=FLOAT(KZ)*DRF
|
||||
RMAX=FLOAT(K)*DRF
|
||||
JR=NS(1)
|
||||
JS=NS(2)
|
||||
DO 101 II=1,NLTR
|
||||
LTR=LTRT(II)
|
||||
MPLUS=LTR+1
|
||||
C
|
||||
C SPACE TO PROPER FORM FACTOR FOR THIS L-TRANSFER
|
||||
C
|
||||
DO 70 IJ=1,NLTR
|
||||
IF(IJ.EQ.II) then
|
||||
READ (4)UB,FF
|
||||
else
|
||||
READ (4)
|
||||
endif
|
||||
70 continue
|
||||
C
|
||||
write(*,'(a)')' Subroutine RADINT entered'
|
||||
CALL RADINT(F, FLL, UB, FF, LTR)
|
||||
C
|
||||
IF(ICON(7).ne.0) then
|
||||
C
|
||||
C WRITE( RADIAL MATRIX ELEMENTS IF ICON(7).NE.0
|
||||
C
|
||||
INCR=LPL2*LTR
|
||||
INC=1
|
||||
IS1=-IS(1)
|
||||
|
||||
DO 100 I=1,JR
|
||||
IS2=-IS(2)
|
||||
DO 98 J=1,JS
|
||||
WRITE(6,9999)ALPHA,(IDAT(M),M=1,3)
|
||||
WRITE(6,9900)IS1,IS2
|
||||
WRITE(6,9901)
|
||||
DO 90 LL=1,LPLUS
|
||||
LM=LL-1
|
||||
IND=INC+INCR
|
||||
WRITE(6,9902)LM,(FLL(IT),FLL(IT+1),IT=INC,IND,LPL2)
|
||||
INC=INC+2
|
||||
90 CONTINUE
|
||||
INC=INC+INCR
|
||||
IS2=IS2+2
|
||||
98 CONTINUE
|
||||
IS1=IS1+2
|
||||
100 CONTINUE
|
||||
endif
|
||||
101 CONTINUE
|
||||
END FILE 2
|
||||
REWIND 2
|
||||
C
|
||||
C RESTORE SPIN STORAGE
|
||||
C
|
||||
IS(1)=IBF(7)
|
||||
FS(1)=FLOAT(IBF(7))/2.0
|
||||
NS(1)=IBF(7)+1
|
||||
JR=NS(1)
|
||||
IS(2)=IBF(8)
|
||||
FS(2)=FLOAT(IBF(8))/2.0
|
||||
NS(2)=IBF(8)+1
|
||||
JS=NS(2)
|
||||
DO 300 II=1,NLTR
|
||||
LTR=LTRT(II)
|
||||
JTR=JTRT(II)
|
||||
IS(3)=ISTRT(II)
|
||||
C
|
||||
C CALCULATE NORMALIZATION FACTOR
|
||||
C
|
||||
c fact normalizes the cross section
|
||||
c flfact normalizes the amplitudes
|
||||
c
|
||||
flfact=1.0
|
||||
C
|
||||
c Photo-capture
|
||||
if (fm(2).eq.0.0.and.is(2).eq.2) then
|
||||
c (p,gamma) reaction normalization
|
||||
fact= 2.0*fmu(1)*amu/(hbarc*fk(1))**2
|
||||
1 *chsq/fk(2)**2
|
||||
flfact=sqrt(float(2*ltr+1))
|
||||
c
|
||||
c Photo-disintegration
|
||||
elseif(fm(1).eq.0.0.and.is(1).eq.2) then
|
||||
c (gamma,p) reaction normalization
|
||||
fact= 2.0*fmu(2)*amu/(hbarc*fk(2))**2
|
||||
1 *chsq/fk(1)**2
|
||||
else
|
||||
FACT= 2.0*FMU(1)/(HBARC*FK(1))**2
|
||||
1 *2.0*FMU(2)/(HBARC*FK(2))**2
|
||||
2 *AMU**2/FOURPI
|
||||
if(abs(fm(1)-fm(2)).GT.0.1) then
|
||||
C Stripping normalization factors
|
||||
flfact=100.0*SQRT(FLOAT(2*LTR+1)/FLOAT(JTR+1))
|
||||
fact=fact*float(jtr+1)
|
||||
endif
|
||||
endif
|
||||
c
|
||||
FACT=FACT*FK(2)/FK(1)
|
||||
FN=(II-1)*ICON(3)*(ICON(3)-1)
|
||||
C
|
||||
CALL BETAFN(FLL, D, LTR,JTR,flfact,i_sym)
|
||||
C
|
||||
MPLUS=JTR/2+1
|
||||
IF(icon(3).le.1.or.(icon(3).eq.2.and.II.eq.NLTR)) then
|
||||
IF(ICON(8).ne.0) then
|
||||
C
|
||||
C WRITE BETA TABLES IF ICON(8).NE.0
|
||||
C
|
||||
I1=MPLUS+MPLUS
|
||||
IFACT=I1 *NS(1)*NS(2)
|
||||
KT=1
|
||||
IS1=-IS(1)
|
||||
DO 120 I=1,JR
|
||||
IS2=-IS(2)
|
||||
DO 116 J=1,JS
|
||||
WRITE(6,9999)ALPHA,(IDAT(M),M=1,3)
|
||||
WRITE(6,9905)IS2,IS1
|
||||
WRITE(6,9903)
|
||||
DO 114 LL=1,LPLUS
|
||||
LM=LL-1
|
||||
IND=KT+LM*IFACT
|
||||
INDF=IND+I1-1
|
||||
WRITE(6,9902)LM,(D(INDEX),INDEX=IND,INDF)
|
||||
114 CONTINUE
|
||||
KT=KT+I1
|
||||
IS2=IS2+2
|
||||
116 CONTINUE
|
||||
IS1=IS1+2
|
||||
120 CONTINUE
|
||||
endif
|
||||
C
|
||||
C SET HEADINGS FOR INELASTIC SIGMA
|
||||
C
|
||||
WRITE(6,9999)ALPHA,(IDAT(I),I=1,3)
|
||||
WRITE(6,9507)DRF,RZ,RMAX,VCE,FS(1)
|
||||
WRITE(6,9508)FNRNG,PNLOC,FS(2)
|
||||
TEMP=ECM(2)-ECM(1)
|
||||
do 280 jj=1,nltr
|
||||
if((icon(3).le.1.and.jj.eq.ii).or.
|
||||
1 (icon(3).eq.2.and.ii.eq.nltr)) then
|
||||
WRITE(6,9505)LTRT(jj),JTRT(jj),IS(3),TEMP
|
||||
endif
|
||||
280 continue
|
||||
C
|
||||
write(*,'(a)')' Subroutine INSIG entered'
|
||||
CALL INSIG(D, plm, JTR,FACT)
|
||||
C
|
||||
endif
|
||||
300 CONTINUE
|
||||
REWIND 2
|
||||
RETURN
|
||||
|
||||
9002 FORMAT(1H0,'REACSIG 1',1PE14.5,45X,'REACSIG 2',1PE14.5)
|
||||
9505 FORMAT(18H ANG MOM TRANSFER ,9H LTR =,I4,14H. 2*JTR=,I4
|
||||
1,14H. 2*STR=,I4,14H. Q =,F9.4)
|
||||
9507 FORMAT(18H0BASIC DATA ,9H DR =,F9.4,9H RMIN =,F9.4
|
||||
1, 9H RMAX =,F9.4,9H COUEX=,F9.4
|
||||
2, 9H IS1=,F9.4)
|
||||
9508 FORMAT(18X,9H FNRNG=,F9.4,9H PNLC1=,F9.4,9H PNLC2=,F9.4
|
||||
1, 9H PNLC3=,F9.4,9H IS2=,F9.4)
|
||||
9900 FORMAT(24H0 RADIAL MATRIX ELEMENTS ,9H, J1=L1+,I2,2H/2
|
||||
1, 9H, J2=L2+,I2,2H/2 )
|
||||
9901 FORMAT('0 L2 F(L2,/L2-LTR/ ) F(L2,/L2-LTR/+2)'
|
||||
1, ' F(L2,/L2-LTR/+4) F(L2,/L2-LTR/+6)')
|
||||
9902 FORMAT(I4,1P10E10.3/(4X,1P10E10.3))
|
||||
9903 FORMAT('0 L2 BETA(L2,0) BETA(L2,1) BETA(L2,2)'
|
||||
1, ' BETA(L2,3) BETA(L2,4)')
|
||||
9904 FORMAT(1H0,32HELASTIC SCATTERING CROSS-SECTION )
|
||||
9905 FORMAT(1H0,8H MS2=,I2,2H/2,8H MS1=,I2,2H/2)
|
||||
9999 FORMAT(1H1,15A4,I4,2(1H/,I2.2),I4,2(1H.,I2.2))
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
SUBROUTINE INTEG4(isym)
|
||||
C
|
||||
c Subroutine to integrate radial differential equations for the
|
||||
c distorted waves.
|
||||
c
|
||||
c***********************************************************************
|
||||
parameter(ispc0 = 4010, ispc1 = 8000, ispc2 = 8000)
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
logical isym(2)
|
||||
COMMON ALPHA(15),IDAT(6),ICON(20),ANGLE(5),HBARC,AMU,AMASS,CHSQ,AA
|
||||
1,DRF,Z(3),ZA(3),FM(3),FMA(3),RC(3),AC(3),PNLOC(3),FS(3),ECM(3)
|
||||
2,FK(3),FK2(3),ETA(3),DR(3),FMU(3),FN,FL,FJ2,FSS,VCE,FNRNG,RSIG(2)
|
||||
3,K,KZ,LPLUS,LPL2,IS(3),NS(3),NLTR,LTRT(8),JTRT(8),ISTRT(8),IBF(8)
|
||||
4,KC,IBUFF,IWORD,ILINE,JLINE
|
||||
Common/array0/space0(ispc0)
|
||||
Common/array1/space1(ispc1)
|
||||
Common/array2/space2(ispc2)
|
||||
DIMENSION U(800,2), V(800,2)
|
||||
1 ,F (400),FP(400),G (400),GP(400),S(400)
|
||||
2 ,F1(800),F2(800),Q1(800),Q2(800),C(800)
|
||||
3 ,D (800),X(800),DTEMP(3200)
|
||||
4 ,E (12),Q(4),A(2),B(2),CTEMP(2),LM(6)
|
||||
5 ,DRR2(2),DR2(2),R(2)
|
||||
EQUIVALENCE (space0( 1), U), (space0(1601), V)
|
||||
1 ,(U,DTEMP)
|
||||
2 ,(space1( 1),Q1),(space1( 801),Q2),(space1(1601),F1)
|
||||
3 ,(space1(2401),F2),(space1( 801),X ),(space1( 1),D )
|
||||
4 ,(DTEMP( 1),F ),(DTEMP( 401),FP),(DTEMP( 801),G )
|
||||
5 ,(DTEMP(1201),GP),(DTEMP(1601),S ),(DTEMP(2001),C )
|
||||
DATA ETA3/10.E+00/
|
||||
C
|
||||
IWORD=0
|
||||
JT=NS(1)+NS(2)
|
||||
NP=LPL2*JT
|
||||
I=0
|
||||
DO 30 N=1,2
|
||||
DR2(N)=DR(N)**2/12.0
|
||||
R(N)=0.0
|
||||
JS=NS(N)
|
||||
DO 29 ISS=1,JS
|
||||
I=I+1
|
||||
LM(I)=0
|
||||
29 CONTINUE
|
||||
30 CONTINUE
|
||||
DO 40 IQ=1,NP
|
||||
F1(IQ)=0.0
|
||||
F2(IQ)=0.0
|
||||
Q1(IQ)=0.0
|
||||
Q2(IQ)=0.0
|
||||
40 CONTINUE
|
||||
C
|
||||
DO 100 M=1,K
|
||||
MK=M+M-1
|
||||
IX=0
|
||||
I=0
|
||||
DO 90 N=1,2
|
||||
R(N)=R(N)+DR(N)
|
||||
DRR2(N)=DR2(N)/R(N)**2
|
||||
Q(1)=1.0+DR2(N)*U(MK ,N)
|
||||
Q(2)= DR2(N)*U(MK+1,N)
|
||||
LTEMP=2.0*FK(N)*R(N)+ETA3
|
||||
LTEMP=MIN0(LTEMP,LPLUS)
|
||||
FI=-FS(N)
|
||||
JS=NS(N)
|
||||
SFACT=FS(N)**2+FS(N)
|
||||
DO 89 ISS=1,JS
|
||||
I=I+1
|
||||
FL=0.0
|
||||
DO 80 LL=1,LPLUS
|
||||
FJ=FL+FI
|
||||
IX1=IX+LL+LL-1
|
||||
FLFACT=FL**2+FL
|
||||
FACT=DR2(N)*(FJ**2+FJ-FLFACT-SFACT)*0.5
|
||||
Q(3 )=Q(1)+FACT*V(MK ,N)-DRR2(N)*FLFACT
|
||||
Q(4 )=Q(2)+FACT*V(MK+1,N)
|
||||
IF(LL.LE.LM(I)) GO TO 70
|
||||
IF(LTEMP.LT.LL) GO TO 72
|
||||
LM(I)=LM(I)+1
|
||||
IF(FJ-ABS(FL-FS(N)).LT.0.0) GO TO 72
|
||||
c calculate approximate starting value
|
||||
f2(ix1 )=1.0
|
||||
do 50 ii=1,ll
|
||||
f2(ix1 )=f2(ix1 )*(fk(n)*r(n))/float(2*ii-1)
|
||||
50 continue
|
||||
F2(IX1+1)=0.0
|
||||
Q2(IX1 )=Q(3)*f2(ix1 )
|
||||
Q2(IX1+1)=Q(4)*f2(ix1 )
|
||||
C
|
||||
C EVALUATE Q AT ORIGIN FOR L=1
|
||||
C
|
||||
IF(LL.EQ.2) Q1(IX+3)=-f2(ix1 )/6.0
|
||||
GO TO 72
|
||||
70 CONTINUE
|
||||
c
|
||||
c Step equations forward by dr(n) via Numerov-Fox-Goodwin-Milne method
|
||||
c
|
||||
CTEMP(1)=12.*F2(IX1 )-10.*Q2(IX1 )-Q1(IX1 )
|
||||
CTEMP(2)=12.*F2(IX1+1)-10.*Q2(IX1+1)-Q1(IX1+1)
|
||||
F1(IX1 )=F2(IX1 )
|
||||
F1(IX1+1)=F2(IX1+1)
|
||||
DET=Q(3)**2+Q(4)**2
|
||||
F2(IX1 )=(CTEMP(1)*Q(3 )+CTEMP(2)*Q(4 ))/DET
|
||||
F2(IX1+1)=(CTEMP(2)*Q(3 )-CTEMP(1)*Q(4 ))/DET
|
||||
Q1(IX1 )=Q2(IX1 )
|
||||
Q1(IX1+1)=Q2(IX1+1)
|
||||
Q2(IX1 )=CTEMP(1)
|
||||
Q2(IX1+1)=CTEMP(2)
|
||||
72 CONTINUE
|
||||
FL=FL+1.0
|
||||
80 CONTINUE
|
||||
FI=FI+1.0
|
||||
IX=IX+LPL2
|
||||
89 CONTINUE
|
||||
90 CONTINUE
|
||||
C
|
||||
C WRITE RADIAL WAVE FUNCTIONS ON TAPE 4
|
||||
C
|
||||
WRITE(4)(F2(J),J=1,NP)
|
||||
100 CONTINUE
|
||||
LX=1
|
||||
drrc = 0.1
|
||||
DO 120 N=1,2
|
||||
R2=FK(N)*R(N)
|
||||
R1=R2-DR(N)*FK(N)
|
||||
CALL COU(R1,R2,ETA(N),LPLUS,drrc,F(LX),FP(LX),G(LX),GP(LX),S(LX))
|
||||
RSIG(N)=0.0
|
||||
LX=LX+LPLUS
|
||||
120 CONTINUE
|
||||
C
|
||||
IF(ICON(5).ne.0) then
|
||||
WRITE(6,9999)ALPHA,(IDAT(I),I=1,3)
|
||||
WRITE(6,9600)
|
||||
WRITE(6,9601)
|
||||
endif
|
||||
c
|
||||
c Match solutions to asymptotic form
|
||||
c
|
||||
DO 300 LL=1,LPLUS
|
||||
FL=FLOAT(LL-1)
|
||||
LX=LL
|
||||
I=0
|
||||
IX1=LL+LL-1
|
||||
DO 200 N=1,2
|
||||
JS=NS(N)
|
||||
FI=-FS(N)
|
||||
ARG=S(LX)-S(LX-LL+1)
|
||||
Q(1)=COS(ARG)
|
||||
Q(2)=SIN(ARG)
|
||||
Q(3)=Q(1)**2-Q(2)**2
|
||||
Q(4)=2.0*Q(1)*Q(2)
|
||||
DO 199 ISS=1,JS
|
||||
FJ=FL+FI
|
||||
I=I+1
|
||||
DET=F(LX)*GP(LX)-FP(LX)*G(LX)
|
||||
A(1)=(F1(IX1 )*GP(LX)-F2(IX1 )*G (LX))/DET
|
||||
A(2)=(F1(IX1+1)*GP(LX)-F2(IX1+1)*G (LX))/DET
|
||||
B(1)=(F2(IX1 )*F (LX)-F1(IX1 )*FP(LX))/DET
|
||||
B(2)=(F2(IX1+1)*F (LX)-F1(IX1+1)*FP(LX))/DET
|
||||
IF(LL.LE.LM(I).and.FJ-ABS(FL-FS(N)).ge.0.0) then
|
||||
DET=(A(1)+B(2))**2+(A(2)-B(1))**2
|
||||
CTEMP(1)=(A(1)+B(2))/DET
|
||||
CTEMP(2)=(B(1)-A(2))/DET
|
||||
else
|
||||
CTEMP(1)=0.0
|
||||
CTEMP(2)=0.0
|
||||
endif
|
||||
C
|
||||
C C=NORMALIZATION CONSTANTS
|
||||
C
|
||||
C(IX1 )=Q(1)*CTEMP(1)-Q(2)*CTEMP(2)
|
||||
C(IX1+1)=Q(1)*CTEMP(2)+Q(2)*CTEMP(1)
|
||||
C
|
||||
C E=PARTIAL WAVE SCATTERING AMPLITUDES
|
||||
C
|
||||
E(2*I-1)=B(1)*CTEMP(1)-B(2)*CTEMP(2)
|
||||
E(2*I )=B(1)*CTEMP(2)+B(2)*CTEMP(1)
|
||||
T1 = E(2*I-1)
|
||||
T2 = E(2*I )
|
||||
if(isym(N) .and. is(N).eq.0 ) then
|
||||
if(Phasef(lx-1).lt.0.0) then
|
||||
T1 = 0.0
|
||||
T2 = 0.0
|
||||
E(2*I-1) = 0.0
|
||||
E(2*I ) = 0.0
|
||||
else
|
||||
T1 = 2.0*T1
|
||||
T2 = 2.0*T2
|
||||
endif
|
||||
endif
|
||||
C
|
||||
C D=PARTIAL WAVE SCATTERING AMPLITUDES* COULOMB PHASE / WAVE NUMBER
|
||||
C
|
||||
D(IX1 )=(Q(3)*T1 - Q(4)*T2)/FK(N)
|
||||
D(IX1+1)=(Q(3)*T2 + Q(4)*T1)/FK(N)
|
||||
X(IX1 )=E(2*I-1)
|
||||
X(IX1+1)=E(2*I )
|
||||
C
|
||||
C CALCULATE REACTION SIGMA
|
||||
C
|
||||
T1 = E(2*I ) - E(2*I-1)**2-E(2*I )**2
|
||||
if(isym(N) .and. is(N).eq. 0) T1 = 4.0*T1
|
||||
RSIG(N)=RSIG(N)+(2.0*FJ+1.0)*T1
|
||||
FI=FI+1.0
|
||||
IX1=IX1+LPL2
|
||||
199 CONTINUE
|
||||
LX=LX+LPLUS
|
||||
200 CONTINUE
|
||||
IF(ICON(5).ne.0) then
|
||||
C
|
||||
C WRITE ELASTIC PARTIAL WAVE SCATTERING AMPLITUDES
|
||||
C
|
||||
IX=LL-1
|
||||
I1=1
|
||||
I2=NS(1)*2
|
||||
WRITE(6,9602)IX,(E(INDEX ),INDEX=I1,I2)
|
||||
I1=I2+1
|
||||
I2=I2+NS(2)*2
|
||||
WRITE(6,9603)IX,(E(INDEX ),INDEX=I1,I2)
|
||||
endif
|
||||
300 CONTINUE
|
||||
DO 310 N=1,2
|
||||
RSIG(N)=RSIG(N)*12.566371 /((2.0*FS(N)+1.0)*FK(N)**2)
|
||||
310 CONTINUE
|
||||
C
|
||||
C WRITE NORMALIZATION CONSTANTS ON TAPE 4
|
||||
C
|
||||
WRITE(4)(C(I),I=1,NP)
|
||||
C
|
||||
C WRITE END POINT FUNCTIONS FOR UNBOUND STATE STRIPPING
|
||||
C
|
||||
C ILINE IS SET IN ADWUCK FORM FACTOR LOOP
|
||||
IF(ILINE.EQ.0) GO TO 400
|
||||
WRITE(4)(X(I),I=1,NP),(GP(I),FP(I),I=1,LPL2),(S(I),I=1,LPL2)
|
||||
400 CONTINUE
|
||||
END FILE 4
|
||||
REWIND 4
|
||||
RETURN
|
||||
9600 FORMAT(1H0,35HPARTIAL WAVE SCATTERING AMPLITUDES )
|
||||
9601 FORMAT(4H L,20H REAL D1 IMAG D1 ,20H REAL D2 IMAG D2
|
||||
1, 20H REAL D3 IMAG D3
|
||||
2, 4X,4H L,20H REAL D1 IMAG D1 ,20H REAL D2 IMAG D2
|
||||
3, 20H REAL D3 IMAG D3 )
|
||||
9602 FORMAT(1H , I3,6F10.6)
|
||||
9603 FORMAT(1H+,68X,I3,6F10.6)
|
||||
9999 FORMAT(1H1,15A4,I4,2(1H/,I2.2),I4,2(1H.,I2.2))
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
SUBROUTINE TAPED
|
||||
C
|
||||
c Subroutine writes out radial wave functions,
|
||||
c spaced icon(12) points apart
|
||||
c***********************************************************************
|
||||
c
|
||||
parameter(ispc0 = 4010, ispc1 = 8000, ispc2 = 8000)
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
COMMON ALPHA(15),IDAT(6),ICON(20),ANGLE(5),HBARC,AMU,AMASS,CHSQ,AA
|
||||
1,DRF,Z(3),ZA(3),FM(3),FMA(3),RC(3),AC(3),PNLOC(3),FS(3),ECM(3)
|
||||
2,FK(3),FK2(3),ETA(3),DR(3),FMU(3),FN,FL,FJ2,FSS,VCE,FNRNG,RSIG(2)
|
||||
3,K,KZ,LPLUS,LPL2,IS(3),NS(3),NLTR,LTRT(8),JTRT(8),ISTRT(8),IBF(8)
|
||||
4,KC,IBUFF,IWORD,ILINE,JLINE
|
||||
Common/array0/space0(ispc0)
|
||||
Common/array1/space1(ispc1)
|
||||
Common/array2/space2(ispc2)
|
||||
|
||||
DIMENSION C(800),FR(800),R(2),CTEMP(2)
|
||||
EQUIVALENCE (space0(2001), C(1)), (space0( 801), FR(1))
|
||||
c
|
||||
IK=ICON(12)
|
||||
JT=NS(1)+NS(2)
|
||||
NP=LPL2*JT
|
||||
R(1)=0.0
|
||||
R(2)=0.0
|
||||
IKTEMP=0
|
||||
DO 50 M=1,K
|
||||
IKTEMP=IKTEMP+1
|
||||
C
|
||||
C READ IN DISTORTED WAVE RADIAL FUNCTIONS
|
||||
C
|
||||
READ (4)(FR(J),J=1,NP)
|
||||
IF(IKTEMP.NE.IK) GO TO 50
|
||||
IKTEMP=0
|
||||
IX=0
|
||||
DO 40 N=1,2
|
||||
R(N)=R(N)+DR(N)*FLOAT(IK)
|
||||
JX=NS(N)
|
||||
DO 39 J=1,JX
|
||||
DO 30 LL=1,LPLUS
|
||||
LK=LL+LL-1
|
||||
IX1=LK+IX
|
||||
IX2=IX1+1
|
||||
C
|
||||
C NORMALIZE RADIAL FUNCTIONS
|
||||
C
|
||||
CTEMP(1)=FR(IX1)*C(IX1)-FR(IX2)*C(IX2)
|
||||
CTEMP(2)=FR(IX1)*C(IX2)+FR(IX2)*C(IX1)
|
||||
FR(IX1)=CTEMP(1)
|
||||
FR(IX2)=CTEMP(2)
|
||||
30 CONTINUE
|
||||
IX=IX+LPL2
|
||||
39 CONTINUE
|
||||
40 CONTINUE
|
||||
WRITE(6,9001)R(1),R(2)
|
||||
WRITE(6,9601)
|
||||
DO 45 LL=1,LPLUS
|
||||
LM=LL-1
|
||||
LK1=LM+LL
|
||||
LK2=LPL2*(NS(1)-1)+LK1
|
||||
WRITE(6,9602)LM,(FR(LK),FR(LK+1),LK=LK1,LK2,LPL2)
|
||||
LK1=LK2+LPL2
|
||||
LK2=LPL2*(NS(2)-1)+LK1
|
||||
WRITE(6,9603)LM,(FR(LK),FR(LK+1),LK=LK1,LK2,LPL2)
|
||||
45 CONTINUE
|
||||
50 CONTINUE
|
||||
REWIND 4
|
||||
RETURN
|
||||
9001 FORMAT(1H0,3HR1=,F8.4,57X,3HR2=,F8.4)
|
||||
9601 FORMAT(4H L,20H REAL D1 IMAG D1 ,20H REAL D2 IMAG D2 ,20H
|
||||
1 REAL D3 IMAG D3 ,4X,4H L,20H REAL D1 IMAG D1 ,20H REAL D2
|
||||
2 IMAG D2 ,20H REAL D3 IMAG D3 )
|
||||
9602 FORMAT(1H , I3,6F10.7)
|
||||
9603 FORMAT(1H+,68X,I3,6F10.7)
|
||||
END
|
||||
|
813
dwuck4/CDWCK4.FOR
Normal file
813
dwuck4/CDWCK4.FOR
Normal file
|
@ -0,0 +1,813 @@
|
|||
|
||||
c$debug
|
||||
c***********************************************************************
|
||||
SUBROUTINE RADINT(F,FLL,UB,FF,LTR)
|
||||
c
|
||||
c Subroutine for computing radial integrals
|
||||
c
|
||||
c f Radial wave function storage
|
||||
c fll Radial integral storage
|
||||
c ltr Angular momentum transfer
|
||||
c***********************************************************************
|
||||
c
|
||||
c Ymax maximum X = ikr, off real axis
|
||||
c Nx number of points off real axis, must be a multiple of 5
|
||||
C
|
||||
parameter(ispc0 = 2005, ispc1 = 4000, ispc2 = 4000)
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
double complex space0, space1, space2
|
||||
parameter (kmax = 400, lmax = 400, nx=200, Ymax=10.0)
|
||||
double complex FLL(*), F(*), H(lmax), C(lmax), D(lmax)
|
||||
1 , cfk1, cfk2, cfk3, FP(2*nx+1), FA(2*nx+1)
|
||||
1 , UB, CTEMP, VTEMP, FFTEMP, buffr
|
||||
2 , T1, CN, CP, CD, SUM1, SUM3, Smat, HN
|
||||
c
|
||||
COMMON ALPHA(15),IDAT(6),ICON(20),ANGLE(5),HBARC,AMU,AMASS,CHSQ,AA
|
||||
1,DRF,Z(3),ZA(3),FM(3),FMA(3),RC(3),AC(3),PNLOC(3),FS(3),ECM(3)
|
||||
2,FK(3),FK2(3),ETA(3),DR(3),FMU(3),FN,FL,FJ2,FSS,VCE,FNRNG,RSIG(2)
|
||||
3,K,KZ,LPLUS,LPL2,IS(3),NS(3),NLTR,LTRT(8),JTRT(8),ISTRT(8),IBF(8)
|
||||
4,KC,IBUFF,IWORD,ILINE,JLINE
|
||||
c
|
||||
Common/array0/space0(ispc0)
|
||||
Common/array1/space1(ispc1)
|
||||
Common/array2/space2(ispc2)
|
||||
c
|
||||
DIMENSION UB(kmax),ff(10),buffr(1600)
|
||||
1, DRX(2), LPTBL(lmax/2), S(lmax), WT(5)
|
||||
EQUIVALENCE (space1( 1), buffr), (space0( 1), D)
|
||||
2 ,(space0( 401), H), (space0(1201), C)
|
||||
C
|
||||
IF(RC(3).EQ.0.0) RC(3)=DR(3)
|
||||
c Coulomb excitation factor
|
||||
VFACT=3.0*VCE*CHSQ*Z(3)*ZA(3)*RC(3)**LTR/FLOAT(LTR+LTR+1)
|
||||
if(ltr.eq.0) vfact=vfact/3.0
|
||||
DRX(1)=2.0*DR(3)/3.0
|
||||
DRX(2)=2.0*DRX(1)
|
||||
C JACOBIAN FACTOR
|
||||
ANORM= MAX (DR(1),DR(2))**2/(DR(3)* MIN (DR(1),DR(2)))
|
||||
JR = NS(1)
|
||||
JS = NS(2)
|
||||
NP=LPLUS*(JR+JS)
|
||||
INCR=LPLUS*(LTR+1)
|
||||
c
|
||||
C Unbound state and coulomb excitation end point data
|
||||
C ff( 1) = D REAL (exp(2i*delta) - 1)/(2i)
|
||||
C ff( 2) = D IMAG (exp(2i*delta) - 1)/(2i)
|
||||
C ff( 3) = G irregular solution at R = Rmax
|
||||
C ff( 4) = F regular solution at R = Rmax
|
||||
C ff( 5) = K**2 real
|
||||
C ff( 6) = K**2 imag
|
||||
C ff( 7) = Eta * K
|
||||
C ff( 8) = IVB switch
|
||||
C = 2, unbound state routine
|
||||
C = 4, coulomb excitation
|
||||
C ff( 9) = Number of last point of form factor
|
||||
C ff(10) = ISW parameter in BIND routine
|
||||
C
|
||||
IVB =ff( 8)
|
||||
isw =ff(10)
|
||||
c
|
||||
if(ivb.eq.2) then
|
||||
c Unbound state
|
||||
FFTEMP = UB(KC)
|
||||
elseif(ivb.eq.4) then
|
||||
c Coulomb excitation
|
||||
fftemp = cmplx(ff(1), ff(2))/(dr(3)*float(k))
|
||||
endif
|
||||
c Spin orbit factor
|
||||
FSFACT=FS(1)*(FS(1)+1.)+FS(2)*(FS(2)+1.)
|
||||
c clear radial integral storage
|
||||
INC=INCR*NS(1)*NS(2)
|
||||
DO 3 II=1,INC
|
||||
FLL(II)=0.0
|
||||
3 CONTINUE
|
||||
c
|
||||
R3 = 0.0
|
||||
MX = 1
|
||||
DO 100 M=1,K
|
||||
MX = 3-MX
|
||||
R3 = R3+DRF
|
||||
C
|
||||
C READ IN DISTORTED WAVE RADIAL FUNCTIONS
|
||||
C
|
||||
READ (4)(F(J),J=1,NP)
|
||||
VTEMP = UB(M)*DRX(MX)
|
||||
IF(VFACT.NE.0.0) then
|
||||
C
|
||||
C COULOMB EXCITATION ADDITION TO FORM FACTOR
|
||||
C
|
||||
IF(R3 .GT .RC(3)) then
|
||||
VTEMP = VTEMP + DRX(MX)*VFACT/R3**(LTR+1)
|
||||
endif
|
||||
endif
|
||||
C
|
||||
C**** READ IN NORMALIZATION CONSTANTS at last point
|
||||
C
|
||||
IF(M .EQ. K) then
|
||||
READ (4)(C(I),I=1,NP)
|
||||
c adjust last point in integration rule
|
||||
VTEMP = VTEMP*0.5
|
||||
endif
|
||||
c
|
||||
INC=0
|
||||
IY=0
|
||||
c
|
||||
c Loop over initial state spin states
|
||||
c
|
||||
FS1=-FS(1)
|
||||
DO 96 I= 1,JR
|
||||
IZ=NS(1)*LPLUS
|
||||
c
|
||||
c Loop over final state spin states
|
||||
c
|
||||
FS2=-FS(2)
|
||||
DO 95 J=1,JS
|
||||
c
|
||||
c Final state L values
|
||||
c
|
||||
DO 90 LL=1,LPLUS
|
||||
LK=LL
|
||||
IZ1=LL+IZ+(J-1)*LPLUS
|
||||
LP1=IABS(LL-LTR-1)+1
|
||||
LP2=MIN0(LL+LTR,LPLUS)
|
||||
CTEMP = VTEMP*F(IZ1)
|
||||
c
|
||||
c Initial state L values
|
||||
c
|
||||
DO 80 LP=LP1,LP2,2
|
||||
IY1=LP+(I-1)*LPLUS
|
||||
IND=LK+INC
|
||||
IF(M .LT. KZ) GO TO 79
|
||||
FLL(IND)=FLL(IND) + CTEMP*F(IY1)
|
||||
IF(M.EQ.K) THEN
|
||||
C
|
||||
C NORMALIZE RADIAL INTEGRALS
|
||||
C
|
||||
FLL(IND) = C(IZ1)*FLL(IND)*C(IY1)*ANORM
|
||||
C L*S FORM FACTOR, use symmetrized form
|
||||
IF(IVB.EQ.1) THEN
|
||||
FJ1=FLOAT(LL)+FS1
|
||||
FJ2=FLOAT(LP)+FS2
|
||||
TEMP1 = (FJ1*(FJ1-1.)+FJ2*(FJ2-1.)-FLOAT(LL*(LL-1))
|
||||
1 -FLOAT(LP*(LP-1))-FSFACT)/4.
|
||||
FLL(IND)=FLL(IND)*TEMP1
|
||||
ENDIF
|
||||
ENDIF
|
||||
79 continue
|
||||
LK=LK+LPLUS
|
||||
80 CONTINUE
|
||||
90 CONTINUE
|
||||
INC=INC+INCR
|
||||
FS2=FS2+1.0
|
||||
95 CONTINUE
|
||||
IY=IY+LPLUS
|
||||
FS1=FS1+1.0
|
||||
96 CONTINUE
|
||||
100 CONTINUE
|
||||
c special flag to skip this section
|
||||
IF(ICON(20).NE.0) GO TO 1100
|
||||
IF(IVB.EQ.2 .OR .IVB.EQ.4) THEN
|
||||
C
|
||||
C UNBOUND STATE SECTION
|
||||
C
|
||||
cfk1 = fk2(1)
|
||||
cfk2 = fk2(2)
|
||||
cfk3 =cmplx(ff (5),ff(6))
|
||||
CN =cmplx(FF(1), FF(2))
|
||||
HN =cmplx(FF(3), FF(4))
|
||||
etak =ff(7)
|
||||
FK(3) = sqrt(abs(ff (5)))
|
||||
c
|
||||
C read in scatt. amp. and asymptotic fcts - h(ODD) = g, h(EVEN) = f
|
||||
c and coulomb phases
|
||||
c
|
||||
READ (4)(D(I),I=1,NP),(H(I),I=1,LPL2),(S(I),I=1,LPL2)
|
||||
R1=DR(1)*FLOAT(KC)
|
||||
R2=DR(2)*FLOAT(KC)
|
||||
R3=DR(3)*FLOAT(KC)
|
||||
DX=Ymax/FLOAT(NX)
|
||||
EZ=EXP(-DX)
|
||||
DX1=DX/(FK(1)-FK(2)*FMA(1)/FMA(2)-FK(3))
|
||||
IF(DX1.LE.0.0) THEN
|
||||
WRITE(6,'(a)')'0KINEMATICS INCONSISTENT - EXIT ON ERROR'
|
||||
STOP 'Kinematics error in Routine UNBIND'
|
||||
ENDIF
|
||||
C
|
||||
NI=DX1/DR(1)/2.0+0.5
|
||||
NI=MAX0(NI,1)
|
||||
DX1=DX1/FLOAT(NI)
|
||||
DX2=DX1*FMA(1)/FMA(2)
|
||||
C Calculate form factor extension into complex (Rmax,y) plane
|
||||
IFLG=1
|
||||
C -----------------------------------------------------
|
||||
CALL UNBIND(LTR,NX,NI,FA,CN,HN,etak,cfk3,DX1,R1,IFLG)
|
||||
C -----------------------------------------------------
|
||||
C ADJUST FA FOR FINITE RANGE, NON LOCALITY, AND PHASE
|
||||
C FFTEMP IS FORM FACTOR AT RMAX
|
||||
C FA(R+i0) IS UNMODIFIED FORM FACTOR FROM BIND AT RMAX
|
||||
C T1 = FFTEMP/FA(R+i0)
|
||||
T1 = FFTEMP/FA(nx+1)
|
||||
DX=DX1*FLOAT(NI)
|
||||
NX1=NX+1
|
||||
C Multiply FA BY R/(R+iy )
|
||||
DO 120 M=1,NX1
|
||||
M1=M
|
||||
M2=2*NX+2 - M
|
||||
X = dx*float(NX1-M)
|
||||
FA(M1) = FA(M1)*(R1*T1)/cmplx(R1, X)
|
||||
FA(M2) = conjg(FA(M1))
|
||||
120 CONTINUE
|
||||
C
|
||||
WT(1)=190.*DX/288.
|
||||
WT(2)=375.*DX/288.
|
||||
WT(3)=250.*DX/288.
|
||||
WT(4)=WT(3)
|
||||
WT(5)=WT(2)
|
||||
C MULTIPLY FA BY INTEGRATION WEIGHTS
|
||||
DO 130 M=1,NX
|
||||
M1=M
|
||||
M2=2*NX+2 - M
|
||||
MX=MOD(M-1,5) + 1
|
||||
FA(M1 ) = FA(M1 )*WT(MX)
|
||||
FA(M2 ) = FA(M2 )*WT(MX)
|
||||
130 CONTINUE
|
||||
C ADJUST WT FOR END POINT R+i0 IN INTEGRATION RULE
|
||||
FA(NX1) = FA(NX1)*0.5*WT(1)
|
||||
C
|
||||
IF((2*LTR+1)*(2*NX+2).GT.IBUFF) THEN
|
||||
WRITE(6,9900)LTR
|
||||
9900 FORMAT('0NOT ENOUGH CIRCULAR BUFFER SPACE FOR DEUTERON WAVE,'
|
||||
1 ,' LTR=' , I3, ' IS TOO LARGE')
|
||||
STOP 'BUFFER ERROR IN UNBIND'
|
||||
ENDIF
|
||||
C
|
||||
INC=0
|
||||
IY1=0
|
||||
FS1=-FS(1)
|
||||
DO 1020 I=1,JR
|
||||
IY2=NS(1)*LPLUS
|
||||
FS2=-FS(2)
|
||||
DO 1010 J=1,JS
|
||||
LPX=0
|
||||
LPT=1
|
||||
DO 1000 LL=1,LPLUS
|
||||
LK=LL
|
||||
LP1=IABS(LL-LTR-1)+1
|
||||
LP2=MIN0(LL+LTR,LPLUS)
|
||||
FJ2=FLOAT(LL-1)+FS2
|
||||
C CALCULATE PROTON WAVE extension into complex plane
|
||||
LM=LL+LPLUS
|
||||
IZ2=IY2+LK
|
||||
IFLG=1
|
||||
C -----------------------------------------------------
|
||||
CALL UNBIND(LL-1,NX,NI,FP(1),D(IZ2),H(LM)
|
||||
1, ETA(2)*fk(2),cfk2,DX2,R2,IFLG)
|
||||
C -----------------------------------------------------
|
||||
C
|
||||
M2=2*NX+2
|
||||
LP=1
|
||||
IF(LL.EQ.1) LP=MIN0(LTR+1,LPLUS)
|
||||
IF(LPX.GE.LPLUS) GO TO 160
|
||||
DO 150 L=1,LP
|
||||
C CALCULATE DEUTERON WAVE AND PLACE IN CIRCULAR BUFFER
|
||||
LM=LPX+1
|
||||
IZ1=IY1+LM
|
||||
IFLG=0
|
||||
C -----------------------------------------------------
|
||||
CALL UNBIND(LPX,NX,NI,BUFFR(LPT),D(IZ1),H(LM)
|
||||
1, ETA(1)*fk(1),cfk1,DX1,R1,IFLG)
|
||||
C -----------------------------------------------------
|
||||
LPX=LPX+1
|
||||
LPTBL(LPX)=LPT-1
|
||||
LPT=LPT+(NX+1)
|
||||
IF(LPT+(NX+1).GT.IBUFF/2) LPT=1
|
||||
150 CONTINUE
|
||||
160 CONTINUE
|
||||
C
|
||||
C MULTIPLY FP BY FA and place in FP
|
||||
C
|
||||
LM=LL+LPLUS
|
||||
CP = cmplx(COS(S(LM)-S(LPLUS+1)), SIN(S(LM)-S(LPLUS+1)) )
|
||||
NX2=2*NX+1
|
||||
DO 300 M=1,NX2
|
||||
FP(M) = CP*FP(M)*FA(M)
|
||||
300 CONTINUE
|
||||
c
|
||||
LPT1=LPTBL(LP)+1
|
||||
LPT2=LPT1+(NX+1)-1
|
||||
C
|
||||
DO 400 LP=LP1,LP2,2
|
||||
FJ1=FLOAT(LP-1)+FS1
|
||||
IND=LK+INC
|
||||
SUM1=0.0
|
||||
SUM3=0.0
|
||||
C CONSTRUCT OUTGOING WAVE AMPLITUDE FROM D = ( EXP(2i*delta) - 1)/2i
|
||||
IZ1=IY1+LP
|
||||
Smat = cmplx(0.0, 2.0)*D(IZ1) + 1.0
|
||||
CD = cmplx(COS(S(LP)-S(1)), SIN(S(LP)-S(1)) )
|
||||
IF(FJ1.LT.0.0.OR.FJ2.LT.0.0) GO TO 331
|
||||
C NUMERICAL INTEGRATION FOR RADIAL MATRIX ELEMENTS
|
||||
C INTEGRATION IS +i*Dy FOR +y AND -i*Dy FOR -y
|
||||
C WITH LIMITS ON y OF 0 --> infinity HENCE THE + SIGN
|
||||
C WHEN COMBINING OUTGOING AND INGOING DEUTERON WAVES
|
||||
C
|
||||
FE=1.0
|
||||
NX1=NX+1
|
||||
DO 330 M=1,NX1
|
||||
M1=NX+2 - M
|
||||
M2=NX + M
|
||||
IX1=LPTBL(LP)+M1
|
||||
c
|
||||
c Let k = k_d - k_p - k_n, EZ = exp(-k*dy), FE = exp(-k*y)
|
||||
c use UD(-, R-iy) = conjg[ UD(+, R+iy) ]
|
||||
c
|
||||
C MULTIPLY BY DEUTERON OUTGOING WAVE PART, UD(+)*FP(R+iy)*exp(-k*y)
|
||||
SUM1 = SUM1 + FP(M1)* BUFFR(IX1) *FE
|
||||
C MULTIPLY BY DEUTERON INGOING WAVE PART, UD(-)*FP(R-iy)*exp(-k*y)
|
||||
SUM3 = SUM3 + FP(M2)*conjg(BUFFR(IX1))*FE
|
||||
FE=FE*EZ
|
||||
330 CONTINUE
|
||||
331 CONTINUE
|
||||
C UD = (S*UD(+) + UD(-))/2 (divide by 2i NOT! since dz = idy)
|
||||
FLL(IND) = FLL(IND)+(Smat*SUM1+SUM3)*(0.5*CD*ANORM)
|
||||
LK=LK+LPLUS
|
||||
400 CONTINUE
|
||||
1000 CONTINUE
|
||||
INC=INC+INCR
|
||||
IY2=IY2+LPLUS
|
||||
FS1=FS1+1.0
|
||||
1010 CONTINUE
|
||||
IY1=IY1+LPLUS
|
||||
FS2=FS2+1.0
|
||||
1020 CONTINUE
|
||||
C
|
||||
c End of unbound state section
|
||||
c
|
||||
ENDIF
|
||||
C
|
||||
1100 CONTINUE
|
||||
C
|
||||
C
|
||||
REWIND 4
|
||||
JR=IBF(7)+1
|
||||
JS=IBF(8)+1
|
||||
IF(NLTR.NE.1) GO TO 1105
|
||||
IF(JR+JS.EQ.2) GO TO 2000
|
||||
1105 CONTINUE
|
||||
C
|
||||
C WRITE RADIAL MATRIX ELEMENTS ON TAPE 2
|
||||
C
|
||||
JSX=JS
|
||||
IF(IBF(6).EQ.0) JSX=1
|
||||
DO 1120 I=1,JR
|
||||
IY=I-1
|
||||
IF(IBF(5).EQ.0) IY=0
|
||||
DO 1110 J=1,JS
|
||||
IZ=J-1
|
||||
IF(IBF(6).EQ.0) IZ=0
|
||||
INC=INCR*(JSX*IY+IZ)+1
|
||||
INDEX=INC-1+INCR
|
||||
WRITE(2)(FLL(II),II=INC,INDEX)
|
||||
1110 CONTINUE
|
||||
1120 CONTINUE
|
||||
2000 CONTINUE
|
||||
RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
SUBROUTINE UNBIND(L,NX,NI,Y,D,H,ETAK,cfk2,DX,R,IFLG)
|
||||
C
|
||||
c Subroutine to extend wave functions into complex plane for unbound
|
||||
c stripping cases.
|
||||
c
|
||||
c L Orbital angular momentum
|
||||
c nx Number of points in integration
|
||||
c ni Number of intermediate points
|
||||
c y Storage for resulting wave function
|
||||
c d Scattering amplitude = (exp(2i*delta) - 1)/(2i)
|
||||
c h Hankel functions at Rmax
|
||||
c etak Coulomb parameter * wave number
|
||||
c cfk2 Square of wave number
|
||||
c dx Integration step size
|
||||
c r Rmax on real axis
|
||||
c iflg =0 for single side of real axis, =1 for both sides
|
||||
c***********************************************************************
|
||||
c
|
||||
implicit real*8(a-h,o-z)
|
||||
double complex Y(*), D, H, cfk2, Y1, Z1, Z0, Z
|
||||
1 , T1, T3, Smat
|
||||
c
|
||||
DATA Yinit/1.0E+00/
|
||||
C
|
||||
R2=R*R
|
||||
FL1=L*(L+1)
|
||||
DX12=DX*DX/12.
|
||||
EZ = EXP(-DX*SQRT(real(cfk2)))
|
||||
c set starting points
|
||||
X = DX*FLOAT(NX*NI+NI+1)
|
||||
Z = cmplx(R, X)
|
||||
ETAK2=2.0*ETAK
|
||||
IF(real(cfk2) .EQ. 0.0) THEN
|
||||
Y0 = 1.0 - cmplx(0.0, float(L)) *DX/Z
|
||||
ELSE
|
||||
Y0 = Yinit
|
||||
ENDIF
|
||||
Z0 = Y0 * (1.0 + DX12*(FL1/Z**2 + ETAK2/Z - cfk2))
|
||||
C
|
||||
Z = Z - cmplx(0.0D+0, DX)
|
||||
Y1 = Yinit
|
||||
Z1 = Y1 * (1.0 + DX12*(FL1/Z**2 + ETAK2/Z - cfk2))
|
||||
|
||||
C INTEGRATE INWARDS FROM R + iy TO R - iy FOR IFLG = 1
|
||||
C FROM R + iy TO R FOR IFLG = 0
|
||||
C REMOVE EXP( k*y ) FACTOR SO THERE IS NO OVERFLOW
|
||||
C
|
||||
if(iflg .eq. 0) then
|
||||
n2 = nx+1
|
||||
else
|
||||
n2 = 2*nx+1
|
||||
endif
|
||||
c
|
||||
DO 200 I=1,N2
|
||||
DO 190 J=1,NI
|
||||
Z = Z - cmplx(0.0D+0, DX)
|
||||
T1=12.0*Y1
|
||||
T1=(T1 - 10.0*Z1 - Z0*EZ)*EZ
|
||||
Z0 = Z1
|
||||
Z1 = T1
|
||||
Y1 = Z1 / (1.0 + DX12*(FL1/Z**2 + ETAK2/Z - cfk2))
|
||||
190 CONTINUE
|
||||
Y(I)=Y1
|
||||
200 CONTINUE
|
||||
C
|
||||
IF(IFLG .EQ. 0) then
|
||||
C
|
||||
C NORMALIZE 'DEUTERON' WAVE TO OUTGOING HANKEL FUNCTION
|
||||
C
|
||||
C Z0 is normalization constant to an
|
||||
C outgoing Hankel fct at Z = RMAX + i0
|
||||
C Z0 = H(+)/Y( R + i0)
|
||||
Z0 = H/Y(NX+1)
|
||||
DO 220 I=1,NX+1
|
||||
Y(I ) = Y(I )*Z0
|
||||
220 CONTINUE
|
||||
c
|
||||
RETURN
|
||||
else
|
||||
c
|
||||
c here for proton or neutron function
|
||||
c
|
||||
c Construct an outgoing wave amplitude from H
|
||||
C H(1) IS G
|
||||
C H(2) IS F
|
||||
C Z0 is normalization constant to an
|
||||
C outgoing Hankel fct at Z = RMAX + i0
|
||||
C Z0 = H(+)/Y(R + i0)
|
||||
c
|
||||
Z0 = H/Y(NX+1)
|
||||
c
|
||||
C D is scattering amplitude = (exp(2i*delta) -1)/(2i)
|
||||
c
|
||||
Smat = cmplx(0.0, 2.0)*D + 1.0
|
||||
F1=1.0
|
||||
F2=EZ**(2*NI)
|
||||
NX1 = NX+1
|
||||
DO 250 I=1,NX1
|
||||
IK = NX+2 - I
|
||||
IL = NX + I
|
||||
C T1 = exp(-k*X)*H(R-iy)
|
||||
C T3 = exp( k*X)*H(R+iy)
|
||||
T1 = Y(IL)*Z0
|
||||
T3 = Y(IK)*Z0*F1
|
||||
c
|
||||
C u(R+iy) = exp(-k*X)*(S*H(R+iy) - H(R-iy))/(2*i)
|
||||
Y(IK) = (Smat*T3 - dconjg(T1) )*cmplx(0.0, -0.5)
|
||||
C u(R-iy) = exp(-k*X)*(S*H(R-iy) - H(R+iy))/(2i)
|
||||
Y(IL) = (Smat*T1 - dconjg(T3) )*cmplx(0.0, -0.5)
|
||||
F1=F1*F2
|
||||
250 CONTINUE
|
||||
c
|
||||
endif
|
||||
c
|
||||
RETURN
|
||||
c
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
SUBROUTINE BETAFN(FLL,D,LTR,JX,flfact,i_sym)
|
||||
C
|
||||
c Subroutine to form scattering amplitude from radial matrix elements
|
||||
c
|
||||
c FLL Storage for radial matrix elements
|
||||
c D Storage for scattering amplitudes
|
||||
c LTR L -transfer
|
||||
c JX 2*J-transfer
|
||||
c flfact normalizing factor
|
||||
c i_sym symmetry flags
|
||||
c***********************************************************************
|
||||
c
|
||||
implicit real*8(a-h,o-z)
|
||||
double complex FLL(*), D(*)
|
||||
logical i_sym(2), igam1,igam2
|
||||
C
|
||||
COMMON ALPHA(15),IDAT(6),ICON(20),ANGLE(5),HBARC,AMU,AMASS,CHSQ,AA
|
||||
1,DRF,Z(3),ZA(3),FM(3),FMA(3),RC(3),AC(3),PNLOC(3),FS(3),ECM(3)
|
||||
2,FK(3),FK2(3),ETA(3),DR(3),FMU(3),FN,FL,FJ2,FSS,VCE,FNRNG,RSIG(2)
|
||||
3,K,KZ,LPLUS,LPL2,IS(3),NS(3),NLTR,LTRT(8),JTRT(8),ISTRT(8),IBF(8)
|
||||
4,KC
|
||||
c
|
||||
ISB=IS(3)
|
||||
JR=NS(1)
|
||||
JS=NS(2)
|
||||
c
|
||||
c Set up spin for photon
|
||||
c
|
||||
if(fm(1).eq.0.0.and.is(1).eq.2) then
|
||||
isi=0
|
||||
igam1=.true.
|
||||
else
|
||||
isi=is(1)
|
||||
igam1=.false.
|
||||
endif
|
||||
if(fm(2).eq.0.0.and.is(2).eq.2) then
|
||||
isf=0
|
||||
igam2=.true.
|
||||
else
|
||||
isf=is(2)
|
||||
igam2=.false.
|
||||
endif
|
||||
c
|
||||
MPLUS=JX/2+1
|
||||
IFACT=MPLUS*JR*JS
|
||||
J2K=(1.0+PHASEF(NS(2)))/2.0
|
||||
M2K=JX-MPLUS-MPLUS+2
|
||||
LX=LTR+LTR
|
||||
TEMP2=SQRT(FLOAT((JX+1)*(IS(1)+1)))*flfact
|
||||
IF(FN.EQ.0.0) THEN
|
||||
c clear amplitude storage unless for coherent sum
|
||||
IND=2*LPLUS*IFACT
|
||||
DO 10 M=1,IND
|
||||
D(M)=0.0
|
||||
10 CONTINUE
|
||||
ENDIF
|
||||
IS1=-IS(1)
|
||||
DO 95 I=1,JR
|
||||
IS2=-IS(2)
|
||||
DO 90 J=1,JS
|
||||
IF(NLTR.NE.1) GO TO 14
|
||||
IF(JR*JS.EQ.1) GO TO 15
|
||||
IF(IBF(5)+IBF(6).EQ.0) GO TO 15
|
||||
14 CONTINUE
|
||||
C
|
||||
C READ RADIAL MATRIX ELEMENTS FROM TAPE 2
|
||||
C
|
||||
INCR = LPLUS*(LTR+1)
|
||||
READ (2)(FLL(INDEX),INDEX=1,INCR)
|
||||
15 continue
|
||||
c final L loop
|
||||
DO 80 LL=1,LPLUS
|
||||
lf=LL-1
|
||||
LLX=lf+lf
|
||||
JLX=LLX+IS2
|
||||
IF(JLX.LT.0) GO TO 75
|
||||
if(i_sym(2)) then
|
||||
if(phasef(lf).gt.0.0) then
|
||||
temp4=2.0*temp2
|
||||
else
|
||||
temp4=0.0
|
||||
endif
|
||||
else
|
||||
temp4=temp2
|
||||
endif
|
||||
TEMP4=temp4*SQRT(FLOAT(JLX+1))*float(llx+1)
|
||||
if(igam2) then
|
||||
temp4=temp4*sqrt(float(ll)/(float(lf)+1.e-6))
|
||||
1 *(z(1)+za(1)*(-fm(1)/fma(1))**lf)
|
||||
endif
|
||||
LSTOR=lf*IFACT
|
||||
LP1=IABS(LL-LTR-1)+1
|
||||
LP2=MIN0(LL+LTR,LPLUS)
|
||||
LK=0
|
||||
c initial L loop
|
||||
DO 60 LP=LP1,LP2,2
|
||||
li=lp-1
|
||||
LPX=LP+LP-2
|
||||
JPX=LPX+IS1
|
||||
IF(JPX.GE.0) then
|
||||
if(i_sym(1)) then
|
||||
if(phasef(li).gt.0.0) then
|
||||
temp3=2.0*temp4
|
||||
else
|
||||
temp3=0.0
|
||||
endif
|
||||
else
|
||||
temp3=temp4
|
||||
endif
|
||||
if(igam1) then
|
||||
temp3=temp3*sqrt(float(lp)/(float(li)+1.e-6))
|
||||
1 *(z(2)+za(1)*(-fm(2)/fma(2))**li)
|
||||
endif
|
||||
TEMP=temp3*SQRT(FLOAT(LPX+1))*PHASEF((LP-LL-LTR)/2)
|
||||
1 *VCC(LLX,LX,LPX,0,0)*WINEJ(LLX,isf,JLX,LX,ISB,JX,LPX,isi,JPX)
|
||||
INDEX=LK+LL
|
||||
KT=0
|
||||
c Initial state spins
|
||||
MSP=-IS(1)
|
||||
DO 57 MS1=1,JR
|
||||
c Final state spins
|
||||
MS =-IS(2)
|
||||
DO 55 MS2=1,JS
|
||||
VCP=VCC(LPX,IS(1),JPX,0,MSP)
|
||||
c
|
||||
DO 50 M=1,MPLUS
|
||||
MK=M+M-1
|
||||
MX=MK-1+M2K
|
||||
ML2=MSP-MX-MS
|
||||
ML=IABS(ML2/2)
|
||||
IF(ML.LE.lf) then
|
||||
IND=LSTOR+KT+M
|
||||
FACT=VCP*VCC(JLX,JX,JPX,MSP-MX,MX)*VCC(LLX,IS(2),JLX,ML2,MS)
|
||||
1 *SQRT(YXFCT(lf+ML,lf-ML))*TEMP
|
||||
D(IND)=D(IND)+FLL(INDEX)*FACT
|
||||
endif
|
||||
50 CONTINUE
|
||||
KT = KT+MPLUS
|
||||
MS =MS +2
|
||||
55 CONTINUE
|
||||
MSP=MSP+2
|
||||
57 CONTINUE
|
||||
endif
|
||||
LK=LK+LPLUS
|
||||
60 CONTINUE
|
||||
75 CONTINUE
|
||||
80 CONTINUE
|
||||
IS2=IS2+2
|
||||
90 CONTINUE
|
||||
IS1=IS1+2
|
||||
95 CONTINUE
|
||||
RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
SUBROUTINE INSIG(D,PLM,JTR,FACTR)
|
||||
c
|
||||
c Calculate inelastic cross sections and spin observables.
|
||||
c
|
||||
c D Final state amplitudes
|
||||
c PLM Legendre polynomial storage
|
||||
c JTR 2*J_transfer
|
||||
c Factr Normalization factor from BDWUCK4
|
||||
c***********************************************************************
|
||||
c
|
||||
parameter( ispc0 = 4010, ispc1 = 8000, ispc2 = 8000)
|
||||
implicit real*8(a-h,o-z)
|
||||
parameter(pi = 3.14159265, NX = 200, npol = 10)
|
||||
double complex D(*), SUM1, SUM(1000)
|
||||
logical i_open20, i_out20, i_20flag
|
||||
c
|
||||
COMMON ALPHA(15),IDAT(6),ICON(20),ANGLE(5),HBARC,AMU,AMASS,CHSQ,AA
|
||||
1,DRF,Z(3),ZA(3),FM(3),FMA(3),RC(3),AC(3),PNLOC(3),FS(3),ECM(3)
|
||||
2,FK(3),FK2(3),ETA(3),DR(3),FMU(3),FN,FL,FJ2,FSS,VCE,FNRNG,RSIG(2)
|
||||
3,K,KZ,LPLUS,LPL2,IS(3),NS(3),NLTR,LTRT(8),JTRT(8),ISTRT(8),IBF(8)
|
||||
4,KC,IBUFF,IWORD,ILINE,JLINE
|
||||
Common/array2/Space2(ispc2)
|
||||
c
|
||||
DIMENSION PLM(1000), Polz(npol)
|
||||
DIMENSION Sigplt(NX), Asyplt(NX)
|
||||
EQUIVALENCE (Space2(1), SUM(1)), (Space2(3601), Sigplt(1))
|
||||
1 , (Space2(3601+NX), Asyplt(1))
|
||||
2 , (ANGLE(1), THETAN),(ANGLE(2), THETA1)
|
||||
3 , (ANGLE(3), DTHETA), (SIG, Polz(1))
|
||||
data i_20flag / .true. /
|
||||
C
|
||||
if(icon(17) .eq. 2 .or. icon(17) .eq. 3) then
|
||||
i_out20 = .true.
|
||||
if(i_20flag) then
|
||||
i_open20 = .true.
|
||||
endif
|
||||
i_20flag = .false.
|
||||
else
|
||||
i_open20 = .false.
|
||||
i_out20 = .false.
|
||||
endif
|
||||
NTHETA=THETAN
|
||||
NTHETA = min0(NTHETA, NX)
|
||||
asymax=0.0
|
||||
JR=NS(1)
|
||||
JS=NS(2)
|
||||
if(is(1).eq.2.and.fm(1).eq.0.0) then
|
||||
c initial state average factor for Gamma ray
|
||||
FACTR=sqrt(FACTR*3.0/2.0)
|
||||
else
|
||||
FACTA=sqrt(FACTR)
|
||||
endif
|
||||
c
|
||||
M2K=(1.0-PHASEF(IS(3)))/2.0
|
||||
NPLUS=(JTR+IS(1)+IS(2))/2+1
|
||||
MPLUS=JTR/2+1
|
||||
IFACT = MPLUS*JR*JS
|
||||
WRITE(6,9000)
|
||||
IF(NTHETA.EQ.0) GO TO 230
|
||||
TotSig=0.0
|
||||
c
|
||||
THETA=THETA1
|
||||
DO 120 NTH=1,NTHETA
|
||||
CALL LGNDR(PLM,NPLUS,LPLUS,THETA)
|
||||
c
|
||||
Index1 = JS*JR*((JTR+1)/2)
|
||||
Index2 = Index1 + 1
|
||||
DO 100 M=1,MPLUS
|
||||
M2 = 2*(M-1)+M2K
|
||||
KT=M
|
||||
IS1=-IS(1)
|
||||
c Loop for initial spin substates
|
||||
DO 70 I=1,JR
|
||||
IS2=-IS(2)
|
||||
c Loop for final spin substates
|
||||
DO 60 J=1,JS
|
||||
ML=-(M2+IS2-IS1)/2
|
||||
PHAS1 = 1.0
|
||||
IF(ML .lt. 0) PHAS1 = PHASEF(ML)
|
||||
PHAS2 = 1.0
|
||||
IF(ML .gt. 0) PHAS2 = PHASEF(ML)
|
||||
ML1 = IABS(ML)*LPLUS
|
||||
SUM1=0.0
|
||||
c
|
||||
IND=KT
|
||||
DO 40 LL=1,LPLUS
|
||||
ML1 =ML1 +1
|
||||
SUM1 = SUM1+D(IND)*PLM(ML1)
|
||||
C
|
||||
C CALCULATE TOTAL INELASTIC SIGMA
|
||||
C
|
||||
IF(NTH .eq. 1) THEN
|
||||
L=LL-1
|
||||
ML = iabs(ML)
|
||||
if(ML.le.L) then
|
||||
FACT = conjg(D(IND))*D(IND)*YXFCT(L-ML,L+ML)/FLOAT(2*L+1)
|
||||
IF(M2 .NE. 0) FACT=FACT*2.0
|
||||
TotSig=TotSig+FACT
|
||||
endif
|
||||
ENDIF
|
||||
IND=IND+IFACT
|
||||
40 CONTINUE
|
||||
index1 = index1+1
|
||||
SUM(index1) = SUM1*PHAS1 *FACTA
|
||||
if(M2 .ne. 0) then
|
||||
index2 = index2-1
|
||||
SUM(index2) = SUM1*PHAS2 *FACTA
|
||||
endif
|
||||
c if(nth.eq.2) write(*,'(a,4i3, 1p4e12.4)')
|
||||
c 1 ' Is2,Is1 M, ML :',is2,is1,M,ML,SUM(Index1),SUM(Index2)
|
||||
KT = KT+MPLUS
|
||||
IS2=IS2+2
|
||||
60 CONTINUE
|
||||
IS1=IS1+2
|
||||
70 CONTINUE
|
||||
c
|
||||
100 CONTINUE
|
||||
c
|
||||
Maxi = JTR + 1
|
||||
Max1 = 1
|
||||
CALL POLFCT(Max1,Maxi,JR,JS,Theta,Polz,SUM
|
||||
1 ,i_open20,i_out20,nth,ntheta,ALPHA,IDAT)
|
||||
c
|
||||
WRITE(6,9001)THETA,(Polz(I), I=1,10),THETA
|
||||
SIGPLT(NTH)=SIG
|
||||
ASYPLT(NTH)=Polz(3)
|
||||
asymax=max(asymax,abs(asyplt(nth)))
|
||||
THETA=THETA+DTHETA
|
||||
120 CONTINUE
|
||||
c
|
||||
TotSig =TotSig *4.0*pi*FACTA**2/float(JR)
|
||||
WRITE(6,9002)TotSig
|
||||
c
|
||||
IF(ICON(13).ne.0) then
|
||||
WRITE(7,9011)ALPHA
|
||||
WRITE(7,9010)(SIGPLT(N),N=1,NTHETA)
|
||||
ENDIF
|
||||
IF(ICON(9).NE.0) then
|
||||
NTH=NTHETA
|
||||
WRITE(6,9011)ALPHA,(IDAT(I),I=1,3)
|
||||
CALL DWPLOT(NTH,ICON(9),SIGPLT,DTHETA,THETA1)
|
||||
NTEMP=-10
|
||||
if(IS(1).NE.0.and.asymax.gt.0.05) then
|
||||
WRITE(6,9013)ALPHA,(IDAT(I),I=1,3)
|
||||
CALL DWPLOT(NTH,NTEMP ,ASYPLT,DTHETA,THETA1)
|
||||
endif
|
||||
ENDIF
|
||||
230 continue
|
||||
RETURN
|
||||
c
|
||||
9000 FORMAT('0 Theta',' Inelsig,fm**2'
|
||||
1, ' Polz',' Asy',' Ayy'
|
||||
2, ' A22',' A21',' A20'
|
||||
3, ' T22',' T21',' T20'
|
||||
4, ' Theta')
|
||||
9001 FORMAT(0PF7.2,1PE14.4,0P9F10.4,0PF7.2)
|
||||
9002 FORMAT('0Tot-sig',1PE13.4)
|
||||
9010 FORMAT(1PE10.4,5(4X,1PE10.4))
|
||||
9011 FORMAT('1Inelastic ',15A4,I4,2(1H/,I2.2),I4,2(1H.,I2.2))
|
||||
9013 FORMAT('1Asymmetry ',15A4,I4,2(1H/,I2.2),I4,2(1H.,I2.2))
|
||||
END
|
||||
|
18
dwuck4/CompileAndTest.sh
Executable file
18
dwuck4/CompileAndTest.sh
Executable file
|
@ -0,0 +1,18 @@
|
|||
#added --std=legacy to obviate awkward compilation error in ADWCK.FOR caused by FORTRAN being a messy little goblin
|
||||
|
||||
gfortran --std=legacy -c *.FOR
|
||||
gfortran -c DW4UNIX.F
|
||||
|
||||
cd culib4
|
||||
|
||||
gfortran --std=legacy -c *.FOR
|
||||
|
||||
cd ../culib8
|
||||
|
||||
gfortran --std=legacy -c *.FOR
|
||||
|
||||
cd ..
|
||||
|
||||
gfortran *.o culib8/*.o -o DWUCK4
|
||||
|
||||
./DWUCK4 < DW4TST.DAT
|
133
dwuck4/DW4TST.DAT
Normal file
133
dwuck4/DW4TST.DAT
Normal file
|
@ -0,0 +1,133 @@
|
|||
1001000030000000 CA40(D,P)CA41 G.S. LZR WITH PROTON SPIN ORBIT
|
||||
+37. +00. +05.
|
||||
+15+01+03+07
|
||||
+00.10 +12.
|
||||
+13.70 +02. +01. +40. +20. +01.40 +02.
|
||||
+01. -97.40 +01.112 +00.875 +01.562 +00.477
|
||||
-02. +01.112 +00.875 +70.00 +01.562 +00.477
|
||||
+06.141 +01. +01. +41. +20. +01.25 +01.
|
||||
+01. -49.47 +01.18 +00.70 +24.2 +01.180 +00.700
|
||||
-02. +01.18 +00.70 +19.80 +01.252 +00.750
|
||||
-08.364 +01. +00. +40. +20. +01.25 +01.
|
||||
-01. -01. +01.18 +00.70 +25.
|
||||
+00. +03. +07. +01. +58.
|
||||
1001000030100000 ZR91 (D,HE3) Y90 28 MEV. P3/2 HULTHEN FR CORR
|
||||
+55. +00. +01.6667
|
||||
+20+01+01+02
|
||||
+00.1 +00. +18. +00.77 +90.
|
||||
+28. +02. +01. +91. +40. +01.30
|
||||
+02. +00. +01.10 +00.80 +00. +49.9 +01.27 +00.844 +00.
|
||||
-01. -100. +01.10 +00.80 +00. +00. +01.27 +00.844 +00.
|
||||
-03.21 +03. +02. +90. +39. +01.40
|
||||
-01. -170. +01.14 +00.75 +00. -18. +01.60 +00.80 +00.
|
||||
-08.71 +01. +01. +90. +39. +01.25
|
||||
-01. -01. +01.25 +00.70 +18.
|
||||
+01. +01. +03. +01. +56.77
|
||||
1212000030000000 TEST OF OPTIONS 1 AND 6 IN CATHEN
|
||||
+55. +00. +03.3334
|
||||
+15+02+00+00
|
||||
+00.1 +00. +15.
|
||||
+27. +01. +01. +56. +26. +01.25
|
||||
+01. -50. +01.25 +00.65 +00. +00. +01.25 +00.47 +00.
|
||||
-02. +00. +01.25 +00.65 +00. +40. +01.25 +00.47 +00.
|
||||
+00. +01. +01. +56. +26. +01.25
|
||||
+01. -50. +01.25 +00.65 +00. +00. +01.25 +00.47 +00.
|
||||
-02. +00. +01.25 +00.65 +00. +40. +01.25 +00.47 +00.
|
||||
-01. +01. +08.00 +40.0744
|
||||
-08. +01. +00. +56. +26. +01.25
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+01. +01. +03. +01. +55.
|
||||
-01. +06. +00.00 +01.
|
||||
-08. +01. +00. +56. +26. +01.25
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+01. +01. +03. +01. +55.
|
||||
1011000030000000 FE56(P,P)FE56* L=3- SPIN ORBIT = OPTION 4
|
||||
+37.0000+00.0000+05.0000
|
||||
+15+02+03+03
|
||||
+00.1000+00.0000+15.0000
|
||||
+22.5000+01.0078+01.0000+56.0000+26.0000+01.2500+00.0000+00.0000+01.0000
|
||||
+04. -28.2 +01.25 +00.735 +00. +00. +01.25 +00.735 +00.
|
||||
+01.0000-46.3800+01.2500+00.7350+00. +00.0000+01.2500+00.7350+00.0000
|
||||
-02.0000+00.0000+01.2500+00.4370+00.0000+61.4000+01.2500+00.4370+00.0000
|
||||
-04.4999+01.0078+01.0000+56.0000+26.0000+01.2500+00.0000+00.0000+01.0000
|
||||
+04. -28.2 +01.25 +00.735 +00. +00. +01.25 +00.735 +00.
|
||||
+01.0000-46.3800+01.2500+00.7350+00. +00.0000+01.2500+00.7350+00.0000
|
||||
-02.0000+00.0000+01.2500+00.4370+00.0000+61.4000+01.2500+00.4370+00.0000
|
||||
+00.0000+01.0000+00.0000+56.0000+26.0000+01.2500+00.0000+00.0000+00.0000
|
||||
+02.0000-46.3800+01.2500+00.7350+00. +00.0000+01.2500+00.7350+00.0000
|
||||
-03.0000+00.0000+01.2500+00.4370+00.0000+61.4000+01.2500+00.4370+00.0000
|
||||
+00.0000+01.0000+00.0000+56.0000+26.0000+01.2500+00.0000+00.0000+00.0000
|
||||
+11.0000-46.3800+01.2500+00.7350+00. +00.0000+01.2500+00.7350+00.0000
|
||||
+00.10 +03.
|
||||
-12.0000+00.0000+01.2500+00.4370+00.0000+61.4000+01.2500+00.4370+00.0000
|
||||
+00.10 +03.
|
||||
1222000030000000 FE54(HE3,T)CO54 EX= 1.82 1+,LTR=0,2 COHERENT SUM
|
||||
+55. +00. +01.6667
|
||||
+25+02+00+02+02+02
|
||||
+00.1 +00. +15. +00. +00.
|
||||
+37.7 +03. +02. +54. +26. +01.4 +00. +00. +01.
|
||||
-01. -170.6 +01.143 +00.721 +00. -18.5 +01.599 +00.829 +00.
|
||||
-10.071 +03. +01. +54. +27. +01.4 +00. +00. +01.
|
||||
-01. -170.6 +01.143 +00.721 +00. -18.5 +01.599 +00.829 +00.
|
||||
+02. +03. +00.7 +10. +07. +00. +02.
|
||||
-13.6 +01. +00. +54. +26. +01.25 +00. +00. +02.
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+00. +03. +07. +01. +52.
|
||||
-04. +01. +01. +54. +26. +01.25 +00. +00. +02.
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+00. +03. +07. +01. +52.
|
||||
-02. -01. +00.7 +10. +07. +00. +02.
|
||||
+02. +03. +00.7 +10. +07. +00. +02.
|
||||
-13.6 +01. +00. +54. +26. +01.25 +00. +00. +02.
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+00. +03. +07. +01. +52.
|
||||
-04. +01. +01. +54. +26. +01.25 +00. +00. +02.
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+00. +03. +07. +01. +52.
|
||||
-02. -01. +00.7 +10. +07. +00. +02.
|
||||
1202000030000000 CA40(T,P) 0+ 10.1 MEV ZR-TNT BAYMAN CASE
|
||||
+55. +00. +03.3334
|
||||
+20+01+00+00
|
||||
+00.10 -16.00
|
||||
+10.10 +03.016 +01. +40. +20. +01.24 +00.00 +00.
|
||||
-01. -144. +01.24 +00.678 +00. -30. +01.45 +00.841 +00.
|
||||
+11.35 +01.008 +01. +42. +20. +01.30 +00.00 +00.
|
||||
+01. -53. +01.25 +00.65 +00. +00. +01.25 +00.47 +00.
|
||||
-02. +00. +01.25 +00.65 +00. +62.00 +01.25 +00.47 +00.
|
||||
-01. +05. +00. +03.118
|
||||
-09.90 +01.008 +00. +40. +20. +01.25
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+01. +01. +03. +01. +55.
|
||||
1202000030000000 TI50(P,T)TI48 0+ 19 MEV .95(F7/2)**2+ .31(P3/2)**2
|
||||
+55. +00. +01.6667
|
||||
+20+01+00+00
|
||||
+00.1 +00. +15. +00.
|
||||
+19. +01. +01. +50. +22. +01.25 +01.
|
||||
+04. -24. +00.98 +00.75 +00.
|
||||
+01. -54.6 +01.12 +00.78 +00. -03.2 +01.32 +00.568 +00.
|
||||
-02. +00. +01.12 +00.78 +00. +24. +01.32 +00.568 +00.
|
||||
-10.61 +03. +01. +48. +22. +01.3 +01.
|
||||
-01. -165.4 +01.16 +00.752 +00. -16.4 +01.498 +00.817 +00.
|
||||
+01. +05. +00. +00.95
|
||||
-09.55 +01. +00. +48. +22. +01.25
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+00. +03. +07. +01. +55.
|
||||
-01. +05. +00. +00.31
|
||||
-09.55 +01. +00. +48. +22. +01.25
|
||||
-01. -01. +01.25 +00.65 +25.
|
||||
+01. +01. +03. +01. +55.
|
||||
1011000030000000 O16(D,P)O17 D3/2+ UNBOUND STRIPPPING RMAX= 15 FM
|
||||
+55. +00. +03.3334
|
||||
+16+01+02+03
|
||||
+00.10 +00. -15.
|
||||
+12. +02. +01. +16. +08. +01.25 +02.
|
||||
+01. -85.3 +01.25 +00.606 +00. +00. +00.958 +01.578 +00.
|
||||
-02. +00. +01.25 +00.606 +00. +51.00 +00.958 +01.578 +00.
|
||||
-03.17 +01. +01. +17. +08. +01.25 +00. +01.
|
||||
+01. -57.32 +01.25 +00.425 +00. +00. +01.207 +00.254 +00.
|
||||
-02. +00. +01.25 +00.425 +00. +30.80 +01.207 +00.254 +00.
|
||||
+00.933 +01. +00. +16. +08. +01.25 +01.
|
||||
-01. -01. +01.325 +00.50 +34.00
|
||||
+00. +02. +03. +01. +51.30 +00. +00.00
|
||||
9 END OF DATA DWUCK4 test cases
|
||||
|
127
dwuck4/DW4UNIX.F
Normal file
127
dwuck4/DW4UNIX.F
Normal file
|
@ -0,0 +1,127 @@
|
|||
SUBROUTINE DW4UNIX(IDAT,ifirst)
|
||||
DIMENSION IDAT(8)
|
||||
C
|
||||
if(ifirst.eq.0) then
|
||||
OPEN(UNIT=2,STATUS='SCRATCH',FORM='UNFORMATTED')
|
||||
OPEN(UNIT=4,STATUS='SCRATCH',FORM='UNFORMATTED')
|
||||
C
|
||||
CALL unixfile(5,6,'DWUCK4 AT YOUR SERVICE')
|
||||
endif
|
||||
C
|
||||
CALL unixDAT(IDAT)
|
||||
C
|
||||
RETURN
|
||||
END
|
||||
C
|
||||
C SUBROUTINE UNIXFILE (INPUT, IOUTPUT, TITLE)
|
||||
C
|
||||
C @(#)sunfile.f 1.2 90/05/30 10:38:37 J.J.A. Zalmstra
|
||||
C
|
||||
C This subroutine will determine the files associated with STDIN(= unit 5)
|
||||
C and STDOUT (= unit 6) and print a two line title block to STDOUT
|
||||
C
|
||||
C
|
||||
SUBROUTINE UNIXFILE (INPUT, IOUTPUT, TITLE)
|
||||
CHARACTER*(*) TITLE
|
||||
C
|
||||
integer getcwd
|
||||
character*40 instdat, fdate
|
||||
character*40 infile, outfile
|
||||
character*40 user
|
||||
character*40 cwd
|
||||
character*256 arg
|
||||
parameter (instdat = 'Mon May 21 11:05:50 1990 ')
|
||||
|
||||
infile = 'Standard Input'
|
||||
outfile= 'Standard Output'
|
||||
user = 'unknown'
|
||||
cwd = 'unknown'
|
||||
c
|
||||
c Determine the user
|
||||
c
|
||||
call getenv('USER',arg)
|
||||
if(lnblnk(arg) .ne. 0) user = arg
|
||||
|
||||
c
|
||||
c We have read all flags and must now check for input and/or
|
||||
c outputfilename. 'arg' contains the argument to check, unless
|
||||
c there are no arguments at all.
|
||||
c
|
||||
nargs = iargc()
|
||||
if(nargs .gt. 0) then
|
||||
call getarg(1,arg)
|
||||
if(arg(1:1) .ne. '-') then
|
||||
open(input,file=arg,err=99)
|
||||
call ltrunc(arg, infile, 40)
|
||||
rewind input
|
||||
endif
|
||||
endif
|
||||
if(nargs .gt. 1) then
|
||||
call getarg(2, arg)
|
||||
open(ioutput,file=arg,err=99)
|
||||
rewind ioutput
|
||||
call ltrunc(arg, outfile, 40)
|
||||
endif
|
||||
c
|
||||
c Print title page
|
||||
c
|
||||
write(6,1020) title,instdat,fdate()
|
||||
if(getcwd(arg) .eq. 0) then
|
||||
call ltrunc(arg, cwd, 40)
|
||||
else
|
||||
write(0,*)'Cannot get current directory name'
|
||||
endif
|
||||
write(ioutput,1030)user,cwd,infile,outfile
|
||||
return
|
||||
|
||||
|
||||
99 write(0,1010)arg
|
||||
stop
|
||||
1010 format('Cannot open file ',a)
|
||||
1020 format(1h1,20(1h*),A,20(1h*)//
|
||||
+ ' installed',t20,a,/,' today is ',t20,a,
|
||||
+ 20(/))
|
||||
1030 format(20x,55(1h*)/20x,1h*,t75,1h*/
|
||||
+ 20x,1h*,' User : ',a40,t75,1h*/
|
||||
+ 20x,1h*,' Directory: ',a40,t75,1h*/
|
||||
+ 20x,1h*,' Input : ',a40,t75,1h*/
|
||||
+ 20x,1h*,' Output : ',a40,t75,1h*/
|
||||
+ 20x,1h*,t75,1h*,/20x,55(1h*)/1h1)
|
||||
end
|
||||
|
||||
|
||||
subroutine ltrunc(src, dest, maxlen)
|
||||
c
|
||||
c copy src to dest but truncate from the left if
|
||||
c the length of src exceeds maxlen
|
||||
c
|
||||
character*(*) src, dest
|
||||
|
||||
istart = 1
|
||||
iend = lnblnk(src)
|
||||
if(iend .gt. maxlen) then
|
||||
istart = iend - maxlen - 3
|
||||
dest(1:2) = '<-'
|
||||
dest(3:maxlen) = src(istart:iend)
|
||||
else
|
||||
dest = src(istart:iend)
|
||||
endif
|
||||
return
|
||||
end
|
||||
|
||||
SUBROUTINE unixDAT(IDAT)
|
||||
DIMENSION IDAT(8)
|
||||
C
|
||||
CALL date_and_time(VALUES = IDAT)
|
||||
c
|
||||
RETURN
|
||||
END
|
||||
|
||||
SUBROUTINE SECOND(TIME)
|
||||
C THIS SUBROUTINE INTERFACES THE SUN SECONDS ROUTINE
|
||||
C TO THE SECONDS CALL IN THE PROGRAMS
|
||||
c implicit real*8 time
|
||||
real tarray(2), time
|
||||
time = etime(tarray)
|
||||
RETURN
|
||||
END
|
BIN
dwuck4/DWUCK4
Executable file
BIN
dwuck4/DWUCK4
Executable file
Binary file not shown.
99
dwuck4/DWUCK4.FOR
Normal file
99
dwuck4/DWUCK4.FOR
Normal file
|
@ -0,0 +1,99 @@
|
|||
c$debug
|
||||
c***********************************************************************
|
||||
PROGRAM DWUCK4
|
||||
c
|
||||
c Main program, calls ADWCK4 and BDWCK4
|
||||
c
|
||||
c***********************************************************************
|
||||
c
|
||||
parameter(ispc0 = 4010, ispc1 = 8000, ispc2 = 8000)
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
COMMON ALPHA(15),IDAT(6),ICON(20),ANGLE(5),HBARC,AMU,AMASS,CHSQ,AA
|
||||
1,DRF,Z(3),ZA(3),FM(3),FMA(3),RC(3),AC(3),PNLOC(3),FS(3),ECM(3)
|
||||
2,FK(3),FK2(3),ETA(3),DR(3),FMU(3),FN,FL,FJ2,FSS,VCE,FNRNG,RSIG(2)
|
||||
3,K,KZ,LPLUS,LPL2,IS(3),NS(3),NLTR,LTRT(8),JTRT(8),ISTRT(8),IBF(8)
|
||||
4,KC,IBUFF,IWORD,ILINE,JLINE
|
||||
Common/array0/space0(ispc0)
|
||||
Common/array1/space1(ispc1)
|
||||
Common/array2/space2(ispc2)
|
||||
C
|
||||
C STORE STANDARD ANGLE DATA
|
||||
C
|
||||
ANGLE(1)=37.0
|
||||
ANGLE(2)=0.0
|
||||
ANGLE(3)=5.0
|
||||
c Store fundamental constants
|
||||
HBARC=197.327
|
||||
AMU=931.495
|
||||
FSCON=137.036
|
||||
CHSQ=HBARC/FSCON
|
||||
IBUFF=3200
|
||||
IFIRST=0
|
||||
C
|
||||
1001 CONTINUE
|
||||
CALL DW4unix (IDAT,IFIRST)
|
||||
C CALL DW4Vax (IDAT,IFIRST)
|
||||
C CALL DW4unix(IDAT,IFIRST)
|
||||
C CALL DW4ibm (IDAT,IFIRST)
|
||||
WRITE(6,9999)IFIRST
|
||||
call cpu_time(time)
|
||||
write(*,9900)time
|
||||
write(6,9900)time
|
||||
ifirst = 1
|
||||
ibf(3) = 0
|
||||
C
|
||||
C TAPE 2 STORES RADIAL INTEGRALS
|
||||
REWIND 2
|
||||
C
|
||||
C TAPE 4 STORES DISTORTED WAVES
|
||||
REWIND 4
|
||||
C
|
||||
|
||||
C READ CARD SET 1
|
||||
|
||||
WRITE(6,9502)
|
||||
WRITE(6,9804)IDAT
|
||||
c
|
||||
c icon Control integers
|
||||
c alpha Alphanumeric run identification
|
||||
c
|
||||
icon(1) = 9
|
||||
READ (5,9802,END=2)ICON,ALPHA
|
||||
WRITE(6,9803)ICON,ALPHA
|
||||
2 continue
|
||||
IF(ICON(1).eq.9) then
|
||||
c
|
||||
c close up shop
|
||||
c
|
||||
close (2)
|
||||
close (4)
|
||||
close (5)
|
||||
close (6)
|
||||
STOP ' End of data'
|
||||
endif
|
||||
C
|
||||
C DIVISION FOR OVERLAY MAY BE MADE 1-ADWUCK4, 2-BDWUCK4
|
||||
C
|
||||
write(*,'('' '',15a4)')alpha
|
||||
call cpu_time(time)
|
||||
write(*,'(a)') ' Adwck4 entered'
|
||||
CALL ADWUCK4
|
||||
C CALL OVERLAY(FNAME,1,0)
|
||||
IF(IBF(3).EQ.0) then
|
||||
call cpu_time(time)
|
||||
write(*,'(a)') ' Bdwck4 entered'
|
||||
CALL BDWUCK4
|
||||
C CALL OVERLAY(FNAME,2,0)
|
||||
endif
|
||||
GO TO 1001
|
||||
c
|
||||
9502 FORMAT('0CONTROL INTEGERS')
|
||||
9802 FORMAT(20I1,15A4)
|
||||
9803 FORMAT(1H ,20I2,4X,15A4)
|
||||
9804 FORMAT(' 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K'
|
||||
1, ' RUN IDENTIFICATION ',40X
|
||||
2 ,I4,2(1H/,I2.2),I4,2(1H.,I2.2))
|
||||
9900 format(' Elapsed time in seconds =',f7.2)
|
||||
9999 FORMAT(I1,'DWUCK4-DISTORTED WAVES U.COLORADO- PC-VERSION'
|
||||
1,' 12/Jan /1995' )
|
||||
END
|
250
dwuck4/culib4/ANGMOM.FOR
Normal file
250
dwuck4/culib4/ANGMOM.FOR
Normal file
|
@ -0,0 +1,250 @@
|
|||
|
||||
c***********************************************************************
|
||||
FUNCTION VCC(JX1,JX2,JX3,MX1,MX2)
|
||||
c
|
||||
c Clebsch-Gordan Coefficient Routine
|
||||
c
|
||||
c***********************************************************************
|
||||
C IMPLICIT REAL*8(A-H,O-Z)
|
||||
c EXTERNAL FACTOR
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
C
|
||||
VCC=0.0
|
||||
J1=JX1
|
||||
J2=JX2
|
||||
J3=JX3
|
||||
M1=MX1
|
||||
M2=MX2
|
||||
IF(J1.LT.J2) GO TO 20
|
||||
IF(J3.LT.J2) GO TO 30
|
||||
ICNTR=0
|
||||
GO TO 40
|
||||
20 IF(J3.LT.J1) GO TO 30
|
||||
ICNTR=-1
|
||||
IT=J1
|
||||
J1=J2
|
||||
J2=IT
|
||||
IT=M1
|
||||
M1=M2
|
||||
M2=IT
|
||||
GO TO 40
|
||||
30 ICNTR=1
|
||||
IT=J2
|
||||
J2=J3
|
||||
J3=IT
|
||||
M2=-M1-M2
|
||||
40 CONTINUE
|
||||
JZ1=(J1+J2-J3)/2
|
||||
IF(JZ1.LT.0) GO TO 150
|
||||
JZ2=(J1+J3-J2)/2
|
||||
IF(JZ2.LT.0) GO TO 150
|
||||
JZ3=(J2+J3-J1)/2
|
||||
IF(JZ3.LT.0) GO TO 150
|
||||
IF(J1-IABS(M1).LT.0) GO TO 150
|
||||
IF(J2-IABS(M2).LT.0) GO TO 150
|
||||
IF(J3-IABS(M1+M2).LT.0) GO TO 150
|
||||
JT1=(J1-J3+M2)/2
|
||||
JT2=(J2-J3-M1)/2
|
||||
NUMIN=MAX0 (JT1,JT2,0)
|
||||
JT3=(J1-M1)/2
|
||||
JT4=(J2+M2)/2
|
||||
NUMAX=MIN0 (JT3,JT4,JZ1)
|
||||
JT5=(J2-M2)/2
|
||||
IF(NUMAX.LT.NUMIN) GO TO 150
|
||||
J4=J1/2
|
||||
J5=J3/2
|
||||
PHAS=PHASEF(NUMIN)
|
||||
DO 100 NU=NUMIN,NUMAX
|
||||
VCC=VCC+PHAS *(YXFCT(JT3-NU,J4)*YXFCT(NU-JT2,J5))
|
||||
1/(FACT(JT4-NU)*FACT(NU-JT1)*FACT(JZ1-NU)*FACT(NU))
|
||||
PHAS=-PHAS
|
||||
100 CONTINUE
|
||||
FCTOR=YXFCT(J4,(J1+M1)/2)*YXFCT(J4,JT3)*YXFCT((J1+J2+J3)/2+1,JZ2)*
|
||||
1YXFCT(J5,(J3+M1+M2)/2)*YXFCT(J5,(J3-M1-M2)/2)*FACT(JZ1)*FACT(JZ3)*
|
||||
2FACT(JT4)*FACT(JT5)*FLOAT(J3+1)
|
||||
VCC=SQRT(FCTOR)*VCC
|
||||
IF(ICNTR)120,150,110
|
||||
110 VCC=VCC*SQRT(FLOAT(J2+1)/FLOAT(J3+1))*PHASEF(JT3)
|
||||
GO TO 150
|
||||
120 VCC=VCC*PHASEF(JZ1)
|
||||
150 RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION PHASEF(N)
|
||||
c
|
||||
c Calculates (-1)**N
|
||||
c
|
||||
c***********************************************************************
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
PHASEF=FLOAT(1-2*IABS(N-2*(N/2)))
|
||||
RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION YXFCT(M,N)
|
||||
c
|
||||
C COMPUTES N_FACTORIAL/M_FACTORIAL
|
||||
c
|
||||
c***********************************************************************
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
YXFCT=1.0
|
||||
NUMAX=M-N
|
||||
IF(NUMAX)30,100,20
|
||||
20 ICTRL=0
|
||||
FCTOR=N
|
||||
GO TO 40
|
||||
30 ICTRL=1
|
||||
NUMAX=-NUMAX
|
||||
FCTOR=M
|
||||
40 CONTINUE
|
||||
DO 50 NU=1,NUMAX
|
||||
FCTOR=FCTOR+1.0
|
||||
YXFCT=YXFCT*FCTOR
|
||||
50 CONTINUE
|
||||
IF(ICTRL.EQ.0) YXFCT=1.0/YXFCT
|
||||
100 RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION RACAH(J1,J2,J3,J4,J5,J6)
|
||||
c
|
||||
c Calculates Racah coefficients
|
||||
c Spins are input as twice the spin
|
||||
c
|
||||
c***********************************************************************
|
||||
c
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
logical jy_big
|
||||
c
|
||||
c EXTERNAL FACTOR
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
c
|
||||
RACAH=0.0
|
||||
Z1=DELR(J1,J2,J5)
|
||||
IF(Z1.EQ.0.0) GO TO 90
|
||||
Z1=DELR(J3,J4,J5)*Z1
|
||||
IF(Z1.EQ.0.0) GO TO 90
|
||||
Z2=DELR(J1,J3,J6)
|
||||
IF(Z2.EQ.0.0) GO TO 90
|
||||
Z2=DELR(J2,J4,J6)*Z2
|
||||
IF(Z2.EQ.0.0) GO TO 90
|
||||
Z1=SQRT(Z1/Z2)*Z2
|
||||
JT1=(J1+J2+J5)/2
|
||||
JT2=(J3+J4+J5)/2
|
||||
JT3=(J1+J3+J6)/2
|
||||
JT4=(J2+J4+J6)/2
|
||||
JZ1=(J1+J2+J3+J4)/2
|
||||
JZ2=(J1+J4+J5+J6)/2
|
||||
JZ3=(J2+J3+J5+J6)/2
|
||||
c
|
||||
NUMIN=MAX0 (JT1,JT2,JT3,JT4)
|
||||
NUMAX=MIN0 (JZ1,JZ2,JZ3)
|
||||
IF(NUMAX.ge.NUMIN) then
|
||||
if(NUMIN-JT4 .gt. JZ1-NUMIN) then
|
||||
jy_big = .true.
|
||||
else
|
||||
jy_big = .false.
|
||||
endif
|
||||
PHASE=PHASEF(NUMIN+JZ1)*Z1
|
||||
DO 80 NU=NUMIN,NUMAX
|
||||
JY1=NU-JT1
|
||||
JY2=NU-JT2
|
||||
JY3=NU-JT3
|
||||
JY4=NU-JT4
|
||||
JY5=JZ1-NU
|
||||
JY6=JZ2-NU
|
||||
JY7=JZ3-NU
|
||||
if(jy_big) then
|
||||
FACTR = YXFCT(JY4,NU+1)/FACT(JY5)
|
||||
else
|
||||
FACTR = YXFCT(JY5,NU+1)/FACT(JY4)
|
||||
endif
|
||||
RACAH=RACAH+PHASE*FACTR
|
||||
1 /(FACT(JY1)*FACT(JY2)*FACT(JY3)*FACT(JY6)*FACT(JY7))
|
||||
PHASE=-PHASE
|
||||
80 CONTINUE
|
||||
endif
|
||||
90 RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION DELR(J1,J2,J3)
|
||||
c
|
||||
c Triangular function
|
||||
c Used by Racah Function
|
||||
c
|
||||
c***********************************************************************
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
EXTERNAL FACTOR
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
c
|
||||
JZ1=(J1+J2-J3)/2
|
||||
IF(JZ1.LT.0) GO TO 130
|
||||
JZ2=(J1-J2+J3)/2
|
||||
IF(JZ2.LT.0) GO TO 130
|
||||
JZ3=(J2+J3-J1)/2
|
||||
IF(JZ3.LT.0) GO TO 130
|
||||
JZ4=(J1+J2+J3)/2+1
|
||||
IF(JZ3.LT.JZ2) GO TO 80
|
||||
IF(JZ3.LT.JZ1) GO TO 70
|
||||
DELR=YXFCT(JZ4,JZ3)*FACT(JZ1)*FACT(JZ2)
|
||||
RETURN
|
||||
70 DELR=YXFCT(JZ4,JZ1)*FACT(JZ2)*FACT(JZ3)
|
||||
RETURN
|
||||
80 IF(JZ2.LT.JZ1) GO TO 70
|
||||
DELR=YXFCT(JZ4,JZ2)*FACT(JZ1)*FACT(JZ3)
|
||||
RETURN
|
||||
130 DELR=0.0
|
||||
RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION WINEJ(J1,J2,J3,J4,J5,J6,J7,J8,J9)
|
||||
c
|
||||
c NineJ Symbol Function
|
||||
c
|
||||
c***********************************************************************
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
WINEJ=0.0
|
||||
MUMIN=MAX0(IABS(J1-J9),IABS(J2-J6),IABS(J4-J8))
|
||||
MUMAX=MIN0(J1+J9,J2+J6,J4+J8)
|
||||
IF(MUMAX.LT.MUMIN) GO TO 40
|
||||
DO 20 MU=MUMIN,MUMAX,2
|
||||
PROD=RACAH(J1,J4,J9,J8,J7,MU)*RACAH(J2,J5,MU,J4,J8,J6)*
|
||||
1 RACAH(J9,MU,J3,J2,J1,J6)*FLOAT(MU+1)
|
||||
WINEJ=WINEJ+PROD
|
||||
20 CONTINUE
|
||||
WINEJ=WINEJ*PHASEF((J1+J3+J5+J8)/2+J2+J4+J9)
|
||||
40 RETURN
|
||||
END
|
||||
|
||||
BLOCK DATA FACTOR
|
||||
c
|
||||
c Factorial table
|
||||
c
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
C
|
||||
DATA FACT/ 1.0000000000E+00, 1.0000000000E+00, 2.0000000000E+00
|
||||
1 , 6.0000000000E+00, 2.4000000000E+01, 1.2000000000E+02
|
||||
2 , 7.2000000000E+02, 5.0400000000E+03, 4.0320000000E+04
|
||||
3 , 3.6288000000E+05, 3.6288000000E+06, 3.9916800000E+07
|
||||
4 , 4.7900160000E+08, 6.2270208000E+09, 8.7178291200E+10
|
||||
5 , 1.3076743680E+12, 2.0922789888E+13, 3.5568742810E+14
|
||||
6 , 6.4023737057E+15, 1.2164510041E+17, 2.4329020082E+18
|
||||
7 , 5.1090942172E+19, 1.1240007278E+21, 2.5852016739E+22
|
||||
8 , 6.2044840173E+23, 1.5511210043E+25, 4.0329146113E+26
|
||||
9 , 1.0888869450E+28, 3.0488834461E+29, 8.8417619937E+30
|
||||
$ , 2.6525285981E+32, 8.2228386542E+33, 2.6313083693E+35/
|
||||
C $ , 8.6833176188D+36, 2.9523279904D+38, 1.0333147966D+40
|
||||
C $ , 3.7199332679D+41, 1.3763753091D+43, 5.2302261747D+44
|
||||
C $ , 2.0397882081D+46, 8.1591528325D+47, 3.3452526613D+49
|
||||
C $ , 1.4050061178D+51, 6.0415263063D+52, 2.6582715748D+54
|
||||
C $ , 1.1962222087D+56, 5.5026221598D+57, 2.5862324151D+59
|
||||
C $ , 1.2413915593D+61, 6.0828186403D+62, 3.0414093202D+64
|
||||
C $ , 1.5511187533D+66/
|
||||
END
|
443
dwuck4/culib4/BIND.FOR
Normal file
443
dwuck4/culib4/BIND.FOR
Normal file
|
@ -0,0 +1,443 @@
|
|||
SUBROUTINE BIND(U,F,DR,RM,FNODE,FL,Kin,FK,ETA,V,E,FK2,ISW,IERR,D)
|
||||
C
|
||||
C U = POTENTIAL STORAGE
|
||||
C ODD = - SCALED PART OF V *(2M/HBAR**2)
|
||||
C EVEN = (ENERGY - NON SCALED PART OF V)*(2M/HBAR**2)
|
||||
C F = OUTPUTTED WAVE FUNCTION
|
||||
C DR = RADIAL INCREMENT
|
||||
C RM = MATCHING RADIUS, INPUT IS DEFAULT, OUTPUT IS VALUE USED
|
||||
C FNODE = NO. NODES IN WAVE FCT., EXCLUDING ORIGIN AND INFINITY
|
||||
C FL = ORBITAL ANGULAR MOMENTUM
|
||||
C Kin = MAX NO. OF POINTS + 2048*(MIN POINT)
|
||||
C FK = |WAVE NUMBER| E.G. SIN(FK*R) OR EXP(-FK*R)
|
||||
C ETA = COULOMB PARAMETER
|
||||
C V = SCALE FACTOR FOR ODD POTENTIAL VALUES
|
||||
C E = ENERGY
|
||||
C FK2 = E*(2*M/HBAR**2)
|
||||
C ISW = SEARCH SWITCH
|
||||
C 0 = SEARCH ON V
|
||||
C 1 = SEARCH ON E
|
||||
C 2 = NO SEARCH, FOR E>0 ONLY (PHASE SHIFT IS CALCULATED)
|
||||
C 3 = Search on V, box b.c.
|
||||
C 4 = Search on E. box b.c.
|
||||
C IERR = ERROR FLAG, IS SET IF ERROR OCCURS
|
||||
C D = LAST POINT DATA FOR UNBOUND STRIPPING
|
||||
C D(1),D(2) ARE REAL AND IMAG PARTS OF EXP(2I*DELTA)
|
||||
C D(3),D(4) ARE GL(RMAX) AND FL(RMAX)
|
||||
C D(5),D(6) are real and imaginary K**2
|
||||
C D(10) is ISW
|
||||
C
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
parameter (Pi = 3.141592654)
|
||||
logical dplus,dminus,turnpt
|
||||
CHARACTER*2 A
|
||||
DIMENSION U(800),F(400),T(8),D(10)
|
||||
common /ch3files/input,ioutp
|
||||
DATA ICMAX/32/
|
||||
DATA DLAMY,DETX,dinterp,dlammax/.001,.01,0.1,0.3/
|
||||
DATA XFACT, ELOG10, ONE/0.707, 2.302585, 1.0/
|
||||
C
|
||||
C CHANGES TO ALLOW INTEGRATION OF HARD CORE POTENTIALS
|
||||
C THEY ARE KLUDGED TO ALLOW BACKWARD COMPATIBILITY
|
||||
C Kmin is initial point for hard core
|
||||
C
|
||||
if(ioutp .eq. 0) then
|
||||
ioutput = 6
|
||||
else
|
||||
ioutput = ioutp
|
||||
endif
|
||||
Kmin = Kin/2048
|
||||
Kmax = Kin-Kmin*2048
|
||||
Kmin=Kmin+1
|
||||
C
|
||||
CFACT=1.0
|
||||
dv=0.225*v
|
||||
v0=0.0
|
||||
v1=0.0
|
||||
d0 =-1.0e20
|
||||
d1 = 1.0e20
|
||||
dplus =.false.
|
||||
dminus=.false.
|
||||
IXNT=0
|
||||
IPRNT=0
|
||||
IF(IERR.LT.0) IPRNT=1
|
||||
IERR=0
|
||||
ICNT=ICMAX
|
||||
IF(ISW.EQ.2) ICNT=0
|
||||
FLP=FL*(FL+1.0)
|
||||
DR2=DR**2/12.0
|
||||
LL=FL+1.0
|
||||
ITER=0
|
||||
C
|
||||
C CALCULATE OUTER BOUNDARY CONDITION
|
||||
C
|
||||
10 CONTINUE
|
||||
RMAX=DR*FLOAT(Kmax)
|
||||
IF(FK2.GT.0.0) THEN
|
||||
C POSITIVE ENERGY BOUNDARY CONDITION
|
||||
IF(ISW.EQ.0.OR.ISW.EQ.1.OR.ISW.EQ.2) THEN
|
||||
c
|
||||
c get functions at Rmax - dr and Rmax
|
||||
c
|
||||
M=MAX0(LL+1,3)
|
||||
T(2)=FK*RMAX
|
||||
T(1)=T(2)-FK*DR
|
||||
CALL COU(T(1),T(2),ETA,M ,DR,F( 1),F(21),F(41),F(61),F(81))
|
||||
SCALE=ABS(F(LL+60))
|
||||
T(8)=F(LL+60)/SCALE
|
||||
T(7)=F(LL+40)/SCALE
|
||||
T(6)=F(LL+20)/SCALE
|
||||
T(5)=F(LL )/SCALE
|
||||
D(4)=F(LL+20)
|
||||
D(3)=F(LL+60)
|
||||
c
|
||||
c Calculate surface term for width
|
||||
c
|
||||
c calculate Surf = d(k*u'/u)/dk = (u'/u) +kR*[(u''/u) - (u'/u)**2]
|
||||
c
|
||||
c Ratio = (u'/u)
|
||||
c
|
||||
Ratio = (((FL+1.0)**2 + ETA)/t(2)
|
||||
1 - sqrt((FL+1.0)**2 + ETA**2)*F(LL+61)/F(LL+60))/(FL+1.0)
|
||||
Surf = ( (1. - T(2)*Ratio)*Ratio
|
||||
1 -T(2)*(1.0 - FL*(FL+1.0)/T(2)**2 - 2.0*ETA/T(2)))/(2.0*fk)
|
||||
c
|
||||
c write(ioutput,'(a,1p4e12.4)')' Surf =',Surf
|
||||
c
|
||||
ELSEIF(ISW.EQ.3.OR.ISW.EQ.4) THEN
|
||||
T(8)=0.0
|
||||
T(7)=1.0E-15
|
||||
SCALE=1.0
|
||||
ELSE
|
||||
IERR=1
|
||||
WRITE(ioutput,'(''0Illegal FISW parameter, ='',i3)')isw
|
||||
RETURN
|
||||
C
|
||||
ENDIF
|
||||
ELSE
|
||||
C NEGATIVE ENERGY BOUNDARY CONDITION
|
||||
IF(ISW.EQ.0.OR.ISW.EQ.1) THEN
|
||||
T(8)=1.0E-15
|
||||
T(7)=T(8)*EXP(FK*DR+ETA* LOG(1.0+DR/RMAX))
|
||||
SCALE=1.0
|
||||
C BOX BOUNDARY CONDITIONS
|
||||
ELSEIF(ISW.EQ.3.OR.ISW.EQ.4) THEN
|
||||
T(8)=0.0
|
||||
T(7)=1.0E-15
|
||||
SCALE=1.0
|
||||
ENDIF
|
||||
ENDIF
|
||||
40 CONTINUE
|
||||
width = 0.0
|
||||
fnorm0 = 0.5*t(8)**2 + t(7)**2
|
||||
F(Kmax )=T(8)
|
||||
F(Kmax-1)=T(7)
|
||||
RMAX=RMAX-DR
|
||||
K1 = Kmax-2
|
||||
turnpt=.true.
|
||||
KM=Kmax
|
||||
C
|
||||
C INTEGRATE FROM INFINITY TO TURNING POINT
|
||||
C
|
||||
50 continue
|
||||
R=RMAX
|
||||
FNCT=0.0
|
||||
IF(ISW.NE.2) THEN
|
||||
G5=U(2*Kmax-4)-FLP/R**2
|
||||
IF(G5.LT.0.0) THEN
|
||||
IFLAG=1
|
||||
ELSE
|
||||
IFLAG=0
|
||||
ENDIF
|
||||
Q6=1.0+DR2*(U(2*Kmax-2)-FLP/(R+DR)**2)
|
||||
Q5=1.0+DR2*G5
|
||||
F6=T(8)
|
||||
F5=T(7)
|
||||
W2=0.0
|
||||
FNORM2=fnorm0
|
||||
C
|
||||
DO 100 M=K1,Kmin,-1
|
||||
MM = M
|
||||
MK=2*M-1
|
||||
R=R-DR
|
||||
G4=U(MK+1)+V*U(MK )-FLP/R**2
|
||||
Q4=1.0+DR2*G4
|
||||
F4=((12.0-10.0*Q5)*F5-Q6*F6)/Q4
|
||||
Q6=Q5
|
||||
Q5=Q4
|
||||
G6=G5
|
||||
G5=G4
|
||||
if(f6*f5.lt.0.0) fnct=fnct+1.0
|
||||
F6=F5
|
||||
F5=F4
|
||||
F(M)=F4
|
||||
IF(G6*G5.LT.0.0) IFLAG=IFLAG+1
|
||||
if((.not.turnpt.and.f5.lt.f6).or.IFLAG.GE.2) GO TO 110
|
||||
FNORM2=FNORM2+F5**2
|
||||
W2=W2+U(MK+2)*F5**2
|
||||
100 CONTINUE
|
||||
C
|
||||
C If no classical turning point is found, then find first maximum,
|
||||
C then if none, use external matching radius.
|
||||
C
|
||||
if(turnpt) then
|
||||
turnpt=.false.
|
||||
go to 50
|
||||
else
|
||||
MM = INT(RM/DR)
|
||||
endif
|
||||
105 continue
|
||||
F5=F(MM )
|
||||
F6=F(MM+1)
|
||||
110 CONTINUE
|
||||
C
|
||||
C INTEGRATE FROM ORIGIN TO TURNING POINT
|
||||
C
|
||||
if(isw.lt.2) fnct = 0.0
|
||||
KM=MM+1
|
||||
120 CONTINUE
|
||||
ENDIF
|
||||
c End of (Isw ne. 2)
|
||||
KS=FL/3.3+2.0
|
||||
W1=0.0
|
||||
FNORM1=0.0
|
||||
F2=0.0
|
||||
Q2=0.0
|
||||
R =0.0
|
||||
C
|
||||
DO 200 M=Kmin,KM
|
||||
MK=M+M-1
|
||||
R=R+DR
|
||||
Q3=1.0+DR2*(U(MK+1)+V*U(MK )-FLP/R**2)
|
||||
IF(M.GT.KS) THEN
|
||||
F3=((12.0-10.0*Q2)*F2-Q1*F1)/Q3
|
||||
ELSE
|
||||
F3=R**LL
|
||||
ENDIF
|
||||
Q1=Q2
|
||||
Q2=Q3
|
||||
F1=F2
|
||||
F2=F3
|
||||
IF(ICNT.EQ.0) F(M)=F3
|
||||
FNORM1=FNORM1+F1**2
|
||||
W1=W1+U(MK)*F1**2
|
||||
C NODE COUNT
|
||||
IF(F1*F2.LT.0.0) FNCT=FNCT+1.0
|
||||
200 CONTINUE
|
||||
F12=(F1+F2)*0.5
|
||||
IF(F1*F2.lt.0.0.and.F12*F2.lt.0.0) FNCT=FNCT-1.0
|
||||
C
|
||||
FN=FNODE-FNCT
|
||||
IF(ISW.EQ.2) GO TO 500
|
||||
F56=(F5+F6)*0.5
|
||||
DET=(F1*F6-F5*F2)/(F12*F56*DR)
|
||||
FNORM1=FNORM1/F2**2
|
||||
FNORM2=FNORM2/F6**2
|
||||
FNORM=FNORM1+FNORM2
|
||||
ITER=ITER+1
|
||||
IF(ICNT.EQ.0) GO TO 500
|
||||
ICNT=ICNT-1
|
||||
IF(ICNT.EQ.0) THEN
|
||||
WRITE(ioutput,'(''0BOUND STATE SEARCH FAILS IN'',I3,
|
||||
1 '' ITERATIONS'')')ICMAX
|
||||
IERR=1
|
||||
ENDIF
|
||||
IF(ICNT.EQ.18) CFACT=CFACT*XFACT
|
||||
IF(ICNT.EQ.12) CFACT=CFACT*XFACT
|
||||
RM=(FLOAT(KM)-0.5)*DR
|
||||
IF((ISW.EQ.3.OR.ISW.EQ.4).AND.E.GT.0.0) THEN
|
||||
RSCALE=RMAX
|
||||
ELSE
|
||||
RSCALE=RM*1.5
|
||||
ENDIF
|
||||
ESCALE= ABS(((fnode+1.0)*3.0+fl)/(FK2*RSCALE**2))
|
||||
DLAMX =DLAMY*ESCALE
|
||||
vold=v
|
||||
eold=e
|
||||
IF(ISW.EQ.0.OR.ISW.EQ.3) THEN
|
||||
C
|
||||
C CHOOSE NEXT GUESS FOR WELL DEPTH
|
||||
C
|
||||
IF(FN.NE.0.0) THEN
|
||||
c Node count incorrect
|
||||
c dlam= 1.625*cfact*fn*escale
|
||||
dlam= (cfact*((fnode+0.5*fl+0.5)**2
|
||||
1 - (fnct+0.5*fl+0.5)**2) )
|
||||
if(dlam.lt.-abs(dv/v)) then
|
||||
dlam = abs(dv/v)*sign(one,dlam)
|
||||
else
|
||||
dlam = min(dlam,dlammax*sign(one,dlam))
|
||||
endif
|
||||
a='Vn'
|
||||
ELSE
|
||||
if(det.gt.0.0) then
|
||||
dplus =.true.
|
||||
if(det.lt.d1) then
|
||||
v1=v
|
||||
d1=det
|
||||
endif
|
||||
else
|
||||
dminus=.true.
|
||||
if(det.gt.d0) then
|
||||
v0=v
|
||||
d0=det
|
||||
endif
|
||||
endif
|
||||
IF(dplus.and.dminus.and.abs(det).gt.dinterp) THEN
|
||||
c Interpolation search
|
||||
if(abs(d1/d0).gt.5.0 .or. abs(d1/d0).lt.0.2) then
|
||||
DLAM = (v0+v1)/(2.0*v) - 1.0
|
||||
else
|
||||
DLAM = ((d1*v0-d0*v1)/((d1-d0)*v) - 1.0)
|
||||
endif
|
||||
a='Vi'
|
||||
ELSE
|
||||
c Variational search
|
||||
DLAM= -DET/(V*DR*(W1/F12**2+W2/F56**2))
|
||||
IF(ABS(DLAM).GT.dlammax) DLAM=SIGN(dlammax,DLAM)
|
||||
a='Vv'
|
||||
ENDIF
|
||||
IXNT=IXNT+1
|
||||
ENDIF
|
||||
flam=1.0+dlam
|
||||
V=V*FLAM
|
||||
DLAMX=DLAMY
|
||||
C
|
||||
C CHOOSE NEXT GUESS FOR BINDING ENERGY
|
||||
C
|
||||
ELSEIF(ISW.EQ.1.OR.ISW.EQ.4) THEN
|
||||
IF(FN.NE.0.0) THEN
|
||||
c Node count incorrect
|
||||
c DLAM= 1.625*cfact*fn*sign(escale,e)
|
||||
DLAM= -0.75*cfact*((fnct +0.5*fl+0.5)**2
|
||||
1 -(fnode+0.5*fl+0.5)**2)*(3.2/rscale)**2/fk2
|
||||
a='En'
|
||||
ELSE
|
||||
if(det.gt.0.0) then
|
||||
dplus =.true.
|
||||
if(det.lt.d1) then
|
||||
v1=e
|
||||
d1=det
|
||||
endif
|
||||
else
|
||||
dminus=.true.
|
||||
if(det.gt.d0) then
|
||||
v0=e
|
||||
d0=det
|
||||
endif
|
||||
endif
|
||||
IF(dplus.and.dminus.and.abs(det).gt.dinterp) THEN
|
||||
c Interpolation search
|
||||
DLAM= ((d1*v0-d0*v1)/((d1-d0)*e) - 1.0)
|
||||
a='Ei'
|
||||
ELSE
|
||||
c Variational search
|
||||
DLAM= -cfact*DET/(DR*FK2*FNORM)
|
||||
a='Ev'
|
||||
IF(ABS(DLAM).GT.ESCALE) DLAM = SIGN(ESCALE,DLAM)
|
||||
ENDIF
|
||||
ENDIF
|
||||
FLAM=1.0+DLAM
|
||||
TEMP=SQRT(ABS(FLAM))
|
||||
FK=FK*TEMP
|
||||
ETA=ETA/TEMP
|
||||
TEMP=FK2*FLAM-FK2
|
||||
FK2=FK2+TEMP
|
||||
E=E*FLAM
|
||||
DO 485 M=1,Kmax
|
||||
MK=M+M-1
|
||||
U(MK+1)=U(MK+1)+TEMP
|
||||
485 CONTINUE
|
||||
ENDIF
|
||||
c diagnostic printout
|
||||
c if(icnt+1.eq.icmax) write(ioutput,8888)
|
||||
c 8888 format(' Iter',' Nodes',5x,' Det',9x,'Fnorm',9x,'Old E'
|
||||
c 1, 9x,'New E',9x,'Old V',9x,'New V',9x,' Flam',9x,' RM')
|
||||
c WRITE(ioutput,8889)A,ITER,FNCT,DET,FNORM,eold,E
|
||||
c 1 ,vold,V,1.0+DLAM,rm
|
||||
c 8889 FORMAT(' ',A2,I6,F6.0,8(2X,1PE12.5))
|
||||
c
|
||||
IF(ABS(DET).LT.DETX .AND. ABS(DLAM).LT.DLAMX) THEN
|
||||
ICNT=0
|
||||
ENDIF
|
||||
GO TO 10
|
||||
C
|
||||
500 CONTINUE
|
||||
C
|
||||
C NORMALIZE WAVE FUNCTION
|
||||
C
|
||||
IF(FK2.LT.0.0.OR.ISW.EQ.3.OR.ISW.EQ.4) THEN
|
||||
C
|
||||
C NEGATIVE ENERGY AND BOX B.C.
|
||||
C
|
||||
FNORM=SQRT(FNORM*DR)
|
||||
ELSEIF(FK.GT.0.0.AND.(ISW.EQ.0.OR.ISW.EQ.1)) THEN
|
||||
C POSITIVE ENERGY AND PI/2 PHASE SHIFT
|
||||
C
|
||||
D(1)=0.0
|
||||
D(2)=1.0
|
||||
VOL=(FNORM1+FNORM2)*DR*F6**2
|
||||
c Volume and surface terms are still divided by SCALE**2
|
||||
WIDTH=2.0*E/(FK*(VOL+SURF))
|
||||
IF(WIDTH.LT.0.0) then
|
||||
WRITE(ioutput,'(''0 Negative width '',20(1H*)/)')
|
||||
endif
|
||||
WIDTH=ABS(WIDTH)
|
||||
TEMP=( LOG(WIDTH)-2.0* LOG(SCALE))/ELOG10
|
||||
I1=TEMP-1.0
|
||||
A1=EXP(ELOG10*(TEMP-FLOAT(I1)))
|
||||
WRITE(ioutput,9502)A1,I1,VOL*SCALE**2,SURF*SCALE**2
|
||||
FNORM=1.0/SQRT(WIDTH*FK/(2.0*E))/F6
|
||||
C
|
||||
ELSEIF(FK.GT.0.0.AND.ISW.EQ.2) THEN
|
||||
C
|
||||
C FIND B.C. FOR E > 0 AND NO SEARCH (ISW = 2)
|
||||
C
|
||||
DET=T(5)*T(8)-T(6)*T(7)
|
||||
A1=(F1 *T(8)-F2 *T(7))/DET
|
||||
B1=(T(5)*F2 -T(6)*F1 )/DET
|
||||
DET=1.0/SQRT(A1**2+B1**2)
|
||||
A1=A1*DET
|
||||
B1=B1*DET
|
||||
C A1=COS(DELTA), B1=SIN(DELTA)
|
||||
C (D1,D2) = (exp(2i*delta) - 1)/(2i) = exp(i*delta)*sin(delta)
|
||||
WRITE(ioutput,9501)A1,B1
|
||||
D(1)=B1*A1
|
||||
D(2)=B1*B1
|
||||
FNORM=FK/SCALE
|
||||
F2=1.0/DET
|
||||
F6=1.0
|
||||
DET=0.0
|
||||
ENDIF
|
||||
C
|
||||
TEMP=1.0/(F2*FNORM)
|
||||
R=0.0
|
||||
DO 510 M=1,KM
|
||||
R=R+DR
|
||||
F(M)=F(M)*TEMP/R
|
||||
510 CONTINUE
|
||||
IF(KM.LT.Kmax) THEN
|
||||
KM=KM+1
|
||||
TEMP=1.0/(F6*FNORM)
|
||||
DO 520 M=KM,Kmax
|
||||
R=R+DR
|
||||
F(M)=F(M)*TEMP/R
|
||||
520 CONTINUE
|
||||
ENDIF
|
||||
IF(IPRNT.EQ.0.OR.IERR.NE.0) then
|
||||
WRITE(ioutput,9500)V,DET,FNCT,RM,E,ITER
|
||||
endif
|
||||
c
|
||||
D(5) = fk2
|
||||
D(6) = (fk2/e)*width/2.0/scale**2
|
||||
D(10)=ISW
|
||||
c
|
||||
RETURN
|
||||
c
|
||||
9500 FORMAT(21X,6HV =,F9.4,3X,6HDET =,F9.4,3X,6HNODES=,F9.4,3X,
|
||||
1 6HRM =,F9.4,3X,6HE =,F9.4,3X,6HITER.=,I4 )
|
||||
9501 FORMAT(21X,6HCOSD =,1pe12.4,12x,9H SIND =,1pe12.4)
|
||||
9502 FORMAT(24H0SINGLE PARTICLE WIDTH = ,F7.4,1HE,I3,' MEV '
|
||||
1,13HVOLUME TERM = ,1PE12.4,5X,14HSURFACE TERM = ,1PE12.4)
|
||||
END
|
201
dwuck4/culib4/COU.FOR
Normal file
201
dwuck4/culib4/COU.FOR
Normal file
|
@ -0,0 +1,201 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE COU(R,RP,ETA,L,H,F,FP,G,GP,S)
|
||||
c
|
||||
c Coulomb Function Subroutine
|
||||
c
|
||||
c Calculates the functions at 2 points, R and RP for convenience
|
||||
c in matching to the output of some integration formulae.
|
||||
c
|
||||
c R First argument
|
||||
c RP Second argument
|
||||
c E Coulomb parameter, eta
|
||||
c L Number of angular momenta = lmax+1
|
||||
c H Integration step size, usually = 0.10
|
||||
c F Regular function at R
|
||||
c FP Regular function at RP
|
||||
c G Irregular function at R
|
||||
c GP Irregular function at RP
|
||||
c S Coulomb phase
|
||||
c
|
||||
c***********************************************************************
|
||||
c
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
DIMENSION F(51),FP(51),G(51),GP(51),S(51)
|
||||
C
|
||||
LL=L
|
||||
IF(LL.LT.50) THEN
|
||||
ELP=50.
|
||||
J=50
|
||||
ELSE
|
||||
ELP=LL
|
||||
J=LL
|
||||
ENDIF
|
||||
A=ATAN (ETA/ELP)
|
||||
B=SQRT (ETA**2+ELP**2)
|
||||
Y=A*(ELP-0.5)+ETA*( LOG(B)-1.)-SIN (A)/(12.*B)
|
||||
1 +SIN (3.*A)/(360.*B**3)-SIN (5.*A)/(1260.*B**5)
|
||||
2 +SIN (7.*A)/(1680.*B**7)-SIN (9.*A)/(1188.*B**9)
|
||||
C
|
||||
K=J-1
|
||||
DO 100 I=1,K
|
||||
IF(J.LE.LL) S(J)=Y
|
||||
ELP=ELP-1.
|
||||
J=J-1
|
||||
Y=Y-ATAN (ETA/ELP)
|
||||
100 CONTINUE
|
||||
S(1)=Y
|
||||
DEL1=R-2.0*ETA
|
||||
RMAX=.41666667*(ETA**2+4.*ETA+3.)
|
||||
IF(RMAX.LT.10.0) RMAX=10.0
|
||||
DEL=R-RMAX
|
||||
IF(ETA.GE.5.0.AND.ABS (DEL1).LT.ABS (DEL)) THEN
|
||||
DEL=DEL1
|
||||
I1=2
|
||||
C Transition line expansion
|
||||
X=2.0*ETA
|
||||
T1=ETA**2
|
||||
T2=T1**2
|
||||
T3=ETA** .666666667
|
||||
T4=T3**2
|
||||
T5=T4**2
|
||||
T6=T3*T5
|
||||
T7=T4*T6
|
||||
T8=T3*T7
|
||||
T9=ETA** .166666667
|
||||
Y=1.22340402*T9*(1.+.495957017E-1/T4-.888888889E-2/T1
|
||||
1 +.245519918E-2/T6-.910895806E-3/T2+.845362E-3/T8)
|
||||
Z=-.707881773/T9*(1.-.172826039/T3+.317460317E-3/T1
|
||||
1 -.358121485E-2/T5+.311782468E-3/T2-.907396643E-3/T7)
|
||||
ELSE
|
||||
C
|
||||
IF(DEL.GE.0.0.OR.ETA.EQ.0.0) THEN
|
||||
X=R
|
||||
I1=1
|
||||
ELSE
|
||||
X=RMAX
|
||||
I1=2
|
||||
ENDIF
|
||||
C Asymptotic expansion
|
||||
T1=ETA**2
|
||||
T2=2.*X
|
||||
T4=ETA/T2
|
||||
SS=1.
|
||||
TS=0.
|
||||
SL=0.
|
||||
TL=1.-ETA/X
|
||||
SSS=1.
|
||||
STS=0.
|
||||
SSL=0.
|
||||
STL=TL
|
||||
EN=0.
|
||||
DO 700 K=1,25
|
||||
IF(ABS (SS/SSS).GT.1.0E-10) THEN
|
||||
T5=EN+1.
|
||||
T6=T5+EN
|
||||
T7=EN*T5
|
||||
T8=T6*T4/T5
|
||||
T9=(T1-T7)/(T2*T5)
|
||||
T5=T8*SS-T9*TS
|
||||
TS=T8*TS+T9*SS
|
||||
SS=T5
|
||||
T5=T8*SL-T9*TL-SS/X
|
||||
TL=T8*TL+T9*SL-TS/X
|
||||
SL=T5
|
||||
SSS=SSS+SS
|
||||
STS=STS+TS
|
||||
SSL=SSL+SL
|
||||
STL=STL+TL
|
||||
EN=EN+1.
|
||||
ENDIF
|
||||
700 CONTINUE
|
||||
C
|
||||
T3=X-ETA* LOG(T2)+S(1)
|
||||
T8=SIN (T3)
|
||||
T9=COS (T3)
|
||||
Y=SSS*T9-STS*T8
|
||||
Z=SSL*T9-STL*T8
|
||||
ENDIF
|
||||
C
|
||||
DO 810 I=1,I1
|
||||
IF(I.EQ.I1) THEN
|
||||
G(1) = Y
|
||||
W = Z
|
||||
DEL = RP - R
|
||||
ENDIF
|
||||
C Runge-Kutta integration
|
||||
N=ABS (DEL/H)+1.0
|
||||
DX=DEL/FLOAT(N)
|
||||
T1=DX/2.
|
||||
T2=DX/8.
|
||||
T3=2.0*ETA
|
||||
DO 805 J=1,N
|
||||
T4=DX*(T3/X-1.)*Y
|
||||
X=X+T1
|
||||
T5=DX*(T3/X-1.)*(Y+T1*Z+T2*T4)
|
||||
X=X+T1
|
||||
T6=DX*(T3/X-1.)*(Y+DX*Z+T1*T5)
|
||||
Y=Y+DX*(Z+(T4+2.*T5)/6.)
|
||||
Z=Z+(T4+4.*T5+T6)/6.
|
||||
805 CONTINUE
|
||||
810 CONTINUE
|
||||
GP(1)=Y
|
||||
C
|
||||
T1=ETA**2
|
||||
T8=SQRT (1.+T1)
|
||||
G(2)=((1./R+ETA)*G(1)-W)/T8
|
||||
GP(2)=((1./RP+ETA)*Y-Z)/T8
|
||||
T2=1.
|
||||
T3=2.
|
||||
C Recur irregular function upwards
|
||||
DO 910 I=3,LL
|
||||
T4=T2+T3
|
||||
T5=T2*T3
|
||||
T6=T3*SQRT (T2**2+T1)
|
||||
T7=T2*SQRT (T3**2+T1)
|
||||
G (I)=(T4*(ETA+T5/R )*G (I-1)-T6*G (I-2))/T7
|
||||
GP(I)=(T4*(ETA+T5/RP)*GP(I-1)-T6*GP(I-2))/T7
|
||||
T2=T2+1.
|
||||
T3=T3+1.
|
||||
910 CONTINUE
|
||||
N=MAX0(L+11, INT(2.0*R+11.0) )
|
||||
I1=N
|
||||
Y =1.0E-20
|
||||
YP=Y
|
||||
Z =0.
|
||||
ZP=Z
|
||||
C Recur regular function downwards
|
||||
DO 930 I=1,I1
|
||||
T2=N
|
||||
T3=T2+1.
|
||||
T4=T2+T3
|
||||
T5=T2*T3
|
||||
T6=T2*SQRT (T3**2+T1)
|
||||
T7=T3*SQRT (T2**2+T1)
|
||||
X =(T4*(ETA+T5/R )*Y -T6*Z )/T7
|
||||
XP=(T4*(ETA+T5/RP)*YP-T6*ZP)/T7
|
||||
IF(N.LE.LL) THEN
|
||||
F (N)=X
|
||||
FP(N)=XP
|
||||
ELSE
|
||||
c Scale for l > lmax
|
||||
IF(ABS (X).GT.1.0) THEN
|
||||
Y =Y *1.0E-20
|
||||
YP=YP*1.0E-20
|
||||
X =X *1.0E-20
|
||||
XP=XP*1.0E-20
|
||||
ENDIF
|
||||
ENDIF
|
||||
N=N-1
|
||||
Z =Y
|
||||
ZP=YP
|
||||
Y =X
|
||||
YP=XP
|
||||
930 CONTINUE
|
||||
Z =1./(T8*(F (1)*G (2)-F (2)*G (1)))
|
||||
ZP=1./(T8*(FP(1)*GP(2)-FP(2)*GP(1)))
|
||||
DO 950 I=1,LL
|
||||
F (I)=F (I)*Z
|
||||
950 FP(I)=FP(I)*ZP
|
||||
RETURN
|
||||
END
|
278
dwuck4/culib4/DSTRIP.FOR
Normal file
278
dwuck4/culib4/DSTRIP.FOR
Normal file
|
@ -0,0 +1,278 @@
|
|||
|
||||
SUBROUTINE DSTRIP(IQ,DR,K,F1,F2,FR,QNUM,OPT,KM,SL,C)
|
||||
c
|
||||
c Calculates two nucleon transfer form factor (Bayman and Kallio)
|
||||
c
|
||||
c IQ Input quantum numbers for form factor
|
||||
c DR Step size
|
||||
c K Number of steps
|
||||
c F1 First orbital
|
||||
c F2 Second orbital
|
||||
c FR Output form factor
|
||||
c QNUM Quantum numbers for orbitals
|
||||
c OPT
|
||||
c
|
||||
parameter (maxg=10, maxr=12)
|
||||
DIMENSION F1(400),F2(400),FR(800),QNUM(4,2),IQ(4),TVCC(-9:9)
|
||||
1 ,D1(-9:9),D2(-9:9),C(32),AG(maxg),WG(maxg),BG(maxg)
|
||||
2 ,AR(maxr),WR(maxr)
|
||||
C
|
||||
DATA KR,KX,krel/0,0,0/
|
||||
data ag, wg, bg, ar, wr/maxg*0.,maxg*0.,maxg*0.,maxr*0.,maxr*0./
|
||||
C
|
||||
c c1 = R1 scale
|
||||
c c2 = R2 scale
|
||||
c c3 = r1 scale
|
||||
c c4 = r2 scale
|
||||
c c5 = r0, integration scale
|
||||
c c6 = Pauli flag
|
||||
c c7 = order of integration
|
||||
c c8 = number of integration points
|
||||
c
|
||||
IPAULI=C(6)
|
||||
R0 =C(5)
|
||||
L = IQ(1)
|
||||
IS = IQ(2)
|
||||
JJ = IQ(3)
|
||||
lrel = iq(4)
|
||||
N1=QNUM(1,1)
|
||||
N2=QNUM(1,2)
|
||||
L1=QNUM(2,1)
|
||||
L2=QNUM(2,2)
|
||||
J1=QNUM(3,1)
|
||||
J2=QNUM(3,2)
|
||||
IS1=QNUM(4,1)
|
||||
IS2=QNUM(4,2)
|
||||
c3=c(3)
|
||||
c4=c(4)
|
||||
dr1=dr*c(1)
|
||||
dr2=dr*c(2)
|
||||
ITEMP=N1+N1+N2+N2
|
||||
NX=(((ITEMP+L1+L2+L+2)/4+2)+3+4*lrel)/2+2*IPAULI
|
||||
if(c(8).eq.0.0) then
|
||||
NR=(((ITEMP+L1+L2-L+3)/4+8)+1+2)/2+2*IPAULI
|
||||
NR=MIN0(NR,maxr)
|
||||
IF(NR.NE.KR) then
|
||||
CUT=0.0
|
||||
IERR=0
|
||||
ALFA=C(7)
|
||||
CALL GAUSSR(NR,KS,ALFA,AR,WR,IERR,CUT)
|
||||
NR=KS
|
||||
kr=nr
|
||||
endif
|
||||
else
|
||||
nr = c(8)
|
||||
do 45 i=1,nr
|
||||
ar(i)=c(i+8)
|
||||
wr(i)=c(i+nr+8)
|
||||
if(wr(i).ne.0.0) kr=i
|
||||
45 continue
|
||||
nr=kr
|
||||
endif
|
||||
NX=MIN0(NX,maxg)
|
||||
IF(NX .NE. KX .or. lrel .ne. krel) then
|
||||
CALL LEGAUS(2*NX,AG,WG)
|
||||
KX=NX
|
||||
krel=lrel
|
||||
DL1=sqrt(YXFCT(0,2*lrel))*YXFCT(lrel,2*lrel)/2.0**lrel
|
||||
1 *sqrt(float(2*lrel+1))*phasef(lrel)
|
||||
do 47 i=1,nx
|
||||
BG(i) = sqrt(1.0-ag(i)**2)
|
||||
DM1=0.0
|
||||
DO 46 LI=1,lrel
|
||||
DL1=DL1*BG(i)
|
||||
46 CONTINUE
|
||||
wg(i) = wg(i)*DL1
|
||||
47 continue
|
||||
endif
|
||||
c WRITE(20,'(15H0 NO. R STEPS =,I3,18H NO. X STEPS =,I3)')NR,NX
|
||||
c
|
||||
LL=L+L
|
||||
LL1=L1+L1
|
||||
LL2=L2+L2
|
||||
FACT1=YXFCT(L1,LL1)/2.0**L1
|
||||
FACT2=YXFCT(L2,LL2)/2.0**L2
|
||||
FNORM=OPT*SQRT(FLOAT((LL1+1)*(LL2+1))/FLOAT(LL+1))
|
||||
1 /vcc(LL,2*lrel,LL,0,2*lrel)
|
||||
IF(IPAULI. eq. 0) then
|
||||
TEMP=2.0
|
||||
DO 50 I=1,4
|
||||
IF(QNUM(I,1).NE.QNUM(I,2)) GO TO 55
|
||||
50 CONTINUE
|
||||
TEMP=4.0
|
||||
55 CONTINUE
|
||||
FNORM=FNORM/SQRT(TEMP)
|
||||
endif
|
||||
c
|
||||
FNORM=FNORM*SQRT(FLOAT((LL+1)*(IS+1)*(J1+1)*(J2+1)))
|
||||
1 *WINEJ(LL1,IS1,J1,LL2,IS2,J2,LL,IS,JJ)
|
||||
if(l1 .le. l2) then
|
||||
mmin= -min0(l1,l2-lrel)
|
||||
mmax= l1
|
||||
else
|
||||
mmin=-min0(l2,l1-lrel)
|
||||
mmax= l2+lrel
|
||||
endif
|
||||
DO 80 M=mmin,mmax
|
||||
TVCC( M)=VCC(LL1,LL2,LL, 2*M,-2*M+2*lrel)
|
||||
1 *SQRT(yxfct(l1+abs( m ),l1-abs( m ))
|
||||
2 *yxfct(l2+abs(-m+lrel),l2-abs(-m+lrel)))
|
||||
c write(20,'(a,2i4,2f10.5)')' m1, m2, Tvcc(m1,m2)'
|
||||
c 1 ,m,-m+lrel,Tvcc( m)
|
||||
80 CONTINUE
|
||||
C
|
||||
C RS=r
|
||||
C
|
||||
C R1=| C1*R+C3*r |
|
||||
C R2=| C2*R+C4*r |
|
||||
C
|
||||
C
|
||||
C CENTER OF MASS R LOOP
|
||||
C
|
||||
R=0.0
|
||||
S=0.0
|
||||
DO 500 M =1,K
|
||||
R=R+DR1
|
||||
S=S+DR2
|
||||
RSQ=R**2
|
||||
SSQ=S**2
|
||||
SUMR=0.0
|
||||
C
|
||||
C RELATIVE R LOOP
|
||||
C
|
||||
c RS = r/2
|
||||
DO 400 MR=1,KR
|
||||
RS=AR(MR)*R0
|
||||
SS=RS*C3
|
||||
RS=RS*C4
|
||||
RSSQ=RS**2+RSQ
|
||||
RPROD=2.0*R*RS
|
||||
SSSQ=SS**2+SSQ
|
||||
SPROD=2.0*S*SS
|
||||
C
|
||||
C RELATIVE R ANGLE LOOP
|
||||
C
|
||||
SUMX=0.0
|
||||
DO 300 MX=1,KX
|
||||
X =AG(MX)
|
||||
y =BG(mx)
|
||||
IX=0
|
||||
110 CONTINUE
|
||||
R1=SQRT(RSSQ+RPROD*X)
|
||||
R2=SQRT(SSSQ+SPROD*X)
|
||||
FK1=R1/DR
|
||||
K1=FK1
|
||||
K1=MAX0(K1,2)
|
||||
FK1=FK1-FLOAT(K1)
|
||||
IF(K1.GT.K) GO TO 300
|
||||
FK2=R2/DR
|
||||
K2=FK2
|
||||
K2=MAX0(K2,2)
|
||||
FK2=FK2-FLOAT(K2)
|
||||
IF(K2.GT.K) GO TO 300
|
||||
COS1=(R+RS*X)/R1
|
||||
COS2=(S+SS*X)/R2
|
||||
SIN1=abs(rs*y/r1)
|
||||
SIN2=abs(ss*y/r2)
|
||||
c
|
||||
120 CONTINUE
|
||||
DM1=0.0
|
||||
DL1=FACT1
|
||||
DO 140 LI=1,L1
|
||||
DL1=DL1*SIN1
|
||||
140 CONTINUE
|
||||
c time reversal phase
|
||||
D1( L1)=DL1*phasef(L1)
|
||||
D1(-L1)=DL1
|
||||
DM2=0.0
|
||||
DL2=FACT2
|
||||
DO 150 LI=1,L2
|
||||
DL2=DL2*SIN2
|
||||
150 CONTINUE
|
||||
c time reversal phase * exp(im*pi)
|
||||
D2( L2)=DL2
|
||||
D2(-L2)=DL2*phasef(L2)
|
||||
FJ1=1.0
|
||||
FL1=LL1
|
||||
FM1=LL1
|
||||
DO 170 m1=L1-1,0,-1
|
||||
DK1=(FM1*COS1*DL1/SIN1-DM1)/(FJ1*FL1)
|
||||
FJ1=FJ1+1.0
|
||||
FL1=FL1-1.0
|
||||
FM1=FM1-2.0
|
||||
DM1=DL1
|
||||
DL1=DK1
|
||||
c time reversal phase
|
||||
D1( m1)=DL1*phasef(m1)
|
||||
D1(-m1)=DL1
|
||||
170 CONTINUE
|
||||
c if(m .eq. 1 .and. mr .eq. 1) then
|
||||
c write(20,'(a,10(i4,f10.5))')' m1, D1 ='
|
||||
c 1 ,(m1,d1(m1),m1=l1,-l1,-1)
|
||||
c endif
|
||||
FJ2=1.0
|
||||
FL2=LL2
|
||||
FM2=LL2
|
||||
DO 180 m2=L2-1,0,-1
|
||||
DK2=(FM2*COS2*DL2/SIN2-DM2)/(FJ2*FL2)
|
||||
FJ2=FJ2+1.0
|
||||
FL2=FL2-1.0
|
||||
FM2=FM2-2.0
|
||||
DM2=DL2
|
||||
DL2=DK2
|
||||
c time reversal phase * exp(im*pi)
|
||||
D2( m2)=DL2
|
||||
D2(-m2)=DL2*phasef(m2)
|
||||
180 CONTINUE
|
||||
c if(m .eq. 1 .and. mr .eq. 1) then
|
||||
c write(20,'(a,10(i4,f10.5))')' m2, D2 ='
|
||||
c 1 ,(m2,d2(m2),m2=l2,-l2,-1)
|
||||
c endif
|
||||
PROD=0.0
|
||||
DO 185 LI=mmin,mmax
|
||||
PROD=PROD+D1( LI)*D2(-LI+lrel)*TVCC(LI)
|
||||
c if(m .eq. 1 .and. mr .eq. 1) then
|
||||
c write(20,'(a,2i4,4f10.5)')' m1, m2, D1, D2, Tvcc, Prod ='
|
||||
c 1 ,li,-li+lrel,d1(li),d2(-li+lrel),Tvcc(li),prod
|
||||
c endif
|
||||
185 CONTINUE
|
||||
280 CONTINUE
|
||||
C INTERPOLATE - 4 POINT FORMULA
|
||||
FT1=-FK1*(FK1-1.)*(FK1-2.)*F1(K1-1)/6.
|
||||
1 + (FK1**2-1.)*(FK1-2.)*F1(K1 )/2.
|
||||
2 - FK1*(FK1+1.)*(FK1-2.)*F1(K1+1)/2.
|
||||
3 + FK1*(FK1**2-1.)*F1(K1+2)/6.
|
||||
FT2=-FK2*(FK2-1.)*(FK2-2.)*F2(K2-1)/6.
|
||||
1 + (FK2**2-1.)*(FK2-2.)*F2(K2 )/2.
|
||||
2 - FK2*(FK2+1.)*(FK2-2.)*F2(K2+1)/2.
|
||||
3 + FK2*(FK2**2-1.)*F2(K2+2)/6.
|
||||
SUMX=SUMX+WG(MX)*PROD*FT1*FT2
|
||||
c if(m.eq.34) write(20,'(2i4,1p10e12.4)')mr,mx,x,r1,r2,r1**2+r2**2
|
||||
c 1 ,ft1,ft2,ft1*ft2,prod,wg(mx),sumx
|
||||
IF(IX.eq.0) then
|
||||
IX=1
|
||||
ITEMP=K1
|
||||
K1=K2
|
||||
K2=ITEMP
|
||||
ATEMP=FK1
|
||||
FK1=FK2
|
||||
FK2=ATEMP
|
||||
IF(L1.EQ.L2) GO TO 280
|
||||
ATEMP=COS1
|
||||
COS1=COS2
|
||||
COS2=ATEMP
|
||||
ATEMP=SIN1
|
||||
SIN1=SIN2
|
||||
SIN2=ATEMP
|
||||
GO TO 120
|
||||
endif
|
||||
300 CONTINUE
|
||||
SUMR=SUMR+WR(MR)*SUMX
|
||||
400 CONTINUE
|
||||
SUMR=SUMR*FNORM
|
||||
FR(2*M-1)=FR(2*M-1)+SUMR
|
||||
IF(M.EQ.KM) SL=SUMR
|
||||
500 CONTINUE
|
||||
1000 CONTINUE
|
||||
RETURN
|
||||
END
|
81
dwuck4/culib4/DWPLOT.FOR
Normal file
81
dwuck4/culib4/DWPLOT.FOR
Normal file
|
@ -0,0 +1,81 @@
|
|||
|
||||
SUBROUTINE DWPLOT(NTH0,NLOG,SIGPLT,DTHETA,THETA1)
|
||||
C
|
||||
C THIS IS A NEW VERSION OF THE PRINTER PLOT ROUTINE, June 1992
|
||||
C
|
||||
Parameter (len = 100, pi = 3.141592)
|
||||
DIMENSION SIGPLT(*)
|
||||
CHARACTER*1 temp
|
||||
1, BLANK /' '/, ASTER /'*'/, FENCE /'|'/, APLUS /'+'/
|
||||
CHARACTER*(len+1) dstore
|
||||
CHARACTER*(len+3) astore
|
||||
c
|
||||
common/ch3files/input, ioutp
|
||||
C
|
||||
ioutput = 6
|
||||
if(ioutp .ne. 0) ioutput = ioutp
|
||||
nth = abs(nth0)
|
||||
if(nlog.gt.0) then
|
||||
MAXN= 0
|
||||
DO 30 I=1,NTH
|
||||
IF(SIGPLT(I).LE.0.0) SIGPLT(I)=1.0E-20
|
||||
SIGPLT(I)= LOG10(SIGPLT(I))
|
||||
MAXN=MAX0(MAXN,INT(SIGPLT(I) + 100.0)-NLOG)
|
||||
30 CONTINUE
|
||||
MAXN = MAXN - 100 + 1
|
||||
nlogp= nlog
|
||||
else
|
||||
MAXN = -1
|
||||
nlogp= 2
|
||||
endif
|
||||
c Write header line
|
||||
do 40 j=1,len+3
|
||||
40 astore(j:j) = BLANK
|
||||
do 45 j=0,nlogp
|
||||
indx = j*(len/nlogp) + 1
|
||||
45 write(astore(indx:indx+2),'(i3)')MAXN +j
|
||||
WRITE(ioutput,9000)astore
|
||||
c
|
||||
DO 100 I=1,NTH
|
||||
tint = THETA1 + (i-1)*DTHETA
|
||||
C Coose between angle or cos(angle) data
|
||||
if(nth0.lt.0) then
|
||||
if (tint.gt. 1.0) tint = 1.0
|
||||
if (tint.lt.-1.0) tint =-1.0
|
||||
theta = acos(tint)*180./pi
|
||||
else
|
||||
theta = tint
|
||||
endif
|
||||
cs = cos(theta*pi/180.)
|
||||
IF(I.EQ.1.OR.I.EQ.NTH) THEN
|
||||
TEMP=APLUS
|
||||
ELSE
|
||||
TEMP=BLANK
|
||||
ENDIF
|
||||
DSTORE( 1: 1) = APLUS
|
||||
DSTORE(len+1:len+1) = APLUS
|
||||
DO 70 J=2,LEN
|
||||
DSTORE(j:j) = TEMP
|
||||
70 CONTINUE
|
||||
if(nlog.le.0) dstore(len/2+1:len/2+1) = APLUS
|
||||
C
|
||||
IF(I .EQ. 1 .OR. I .EQ. NTH) THEN
|
||||
DO 80 J=0,NLOGP
|
||||
indx = j*(len/nlogp) +1
|
||||
DSTORE(indx:indx) = FENCE
|
||||
80 CONTINUE
|
||||
ENDIF
|
||||
C
|
||||
INDX= (SIGPLT(I)-float(MAXN))*float((LEN/NLOGP)) + 1.5
|
||||
IF(INDX.GE.1) DSTORE(indx:indx) = ASTER
|
||||
C
|
||||
WRITE(ioutput,9002)THETA,DSTORE,THETA,cs
|
||||
100 CONTINUE
|
||||
C Write trailer line
|
||||
WRITE(ioutput,9000)astore
|
||||
c
|
||||
RETURN
|
||||
c
|
||||
9000 FORMAT(' THETA ',A103 ,' THETA ','cos(theta)')
|
||||
9002 FORMAT(' ',F8.2 ,' ',A101, F8.2, f10.4 )
|
||||
END
|
74
dwuck4/culib4/FNLOC5.FOR
Normal file
74
dwuck4/culib4/FNLOC5.FOR
Normal file
|
@ -0,0 +1,74 @@
|
|||
|
||||
SUBROUTINE FNLOC5(U,V,W,PNLOC,FK2,FK,ETA,RC,DR,KT)
|
||||
c
|
||||
c W Central optical potential
|
||||
c V Spin orbit potential, for Darwin form
|
||||
c W Function for correction to be applied to
|
||||
c PNLOC Non-locality parameter
|
||||
c Positive value gives Gaussian form
|
||||
c Negative value gives Darwin form
|
||||
c FK2 Wave numbre squared
|
||||
c FK Wave number
|
||||
c ETA Coulomb parameter
|
||||
c RC Coulomb radius
|
||||
c DR Radial increment
|
||||
c KT Number of points
|
||||
c
|
||||
DIMENSION U(800),V(800),W(800)
|
||||
C
|
||||
C NON LOCALITY CORRECTION FACTOR FOR DISTORTED WAVES
|
||||
C
|
||||
FACP=PNLOC**2/8.0
|
||||
IF(FACP.EQ.0.0) GO TO 410
|
||||
C
|
||||
WRITE(6,9900)PNLOC
|
||||
IF(PNLOC.GT.0.0) THEN
|
||||
R=0.0
|
||||
ETAK=2.0*ETA*FK
|
||||
ELSE
|
||||
R1=DR*FLOAT(KT+1)
|
||||
ENDIF
|
||||
CTEMP1=0.0
|
||||
CTEMP2=0.0
|
||||
T1=0.0
|
||||
T2=0.0
|
||||
C
|
||||
DO 400 M=1,KT
|
||||
IF(PNLOC.GT.0.0) THEN
|
||||
C PNLOC POSITIVE GIVES USUAL NON-LOCAL FACTOR WITH GAUSSIAN SHAPE
|
||||
MK=M+M-1
|
||||
R=R+DR
|
||||
IF(R.GT.RC) THEN
|
||||
VCOUL=ETAK/R
|
||||
ELSE
|
||||
VCOUL=0.5*ETAK*(3.0-(R/RC)**2)/RC
|
||||
ENDIF
|
||||
CTEMP1=-FACP*U(MK )+FACP*(FK2-VCOUL)
|
||||
CTEMP2=-FACP*U(MK+1)
|
||||
T1=U(MK )
|
||||
T2=U(MK+1)
|
||||
ELSE
|
||||
C PNLOC NEGATIVE GIVES DIRAC TYPE DARWIN FACTOR BASED ON SPIN ORBIT
|
||||
MK=KT+KT-M-M+1
|
||||
R2=R1
|
||||
R1=R1-DR
|
||||
CTEMP1=CTEMP1-(R2*T1+R1*V(MK ))*(DR*0.25)
|
||||
CTEMP2=CTEMP2-(R2*T2+R1*V(MK+1))*(DR*0.25)
|
||||
T1=V(MK )
|
||||
T2=V(MK+1)
|
||||
ENDIF
|
||||
C
|
||||
FACT=EXP(CTEMP1)
|
||||
UT1=FACT*COS(CTEMP2)
|
||||
UT2=FACT*SIN(CTEMP2)
|
||||
UF1 =UT1*W(MK )-UT2*W(MK+1)
|
||||
UF2 =UT1*W(MK+1)+UT2*W(MK )
|
||||
W(MK )=UF1
|
||||
W(MK+1)=UF2
|
||||
C WRITE(20,7777)R1,T1,T2,UT1,UT2
|
||||
C 7777 FORMAT(' R =',F6.2,' POT =',1P2E12.4,' FACTOR =',1P2E12.4)
|
||||
400 CONTINUE
|
||||
410 CONTINUE
|
||||
RETURN
|
||||
9900 FORMAT('0Non-locality correction is applied, parameter =',f8.3)
|
||||
END
|
83
dwuck4/culib4/GAUSSR.FOR
Normal file
83
dwuck4/culib4/GAUSSR.FOR
Normal file
|
@ -0,0 +1,83 @@
|
|||
|
||||
SUBROUTINE GAUSSR(NMAX,INDEX,ALFA,AG,WG,IERR,CUTOFF)
|
||||
C
|
||||
C GAUSS-HERMITE AND GAUSS-LAGUERRE POINT AND WAIT ROUTINE
|
||||
C
|
||||
C IF ALFA IS INTEGER -- GAUSS-LAGUERRE
|
||||
C IF ALFA IS INTEGER + 1/2 -- GAUSS-HERMITE
|
||||
C
|
||||
c e.g. alfa = -0.5 gives usual Gauss-Hermite points and weights
|
||||
c e.g. alfa = 0.0 gives usual Gauss-Laguerre points and weights
|
||||
c
|
||||
DIMENSION AG(100),WG(100)
|
||||
C
|
||||
DATA PI,SQRPI,eps/3.14159265,1.77245385,1.e-6/
|
||||
INDEX=0
|
||||
FI=NMAX
|
||||
FKI=4.0*(FI+(ALFA+1.0)*0.5)
|
||||
FLN= LOG(FI)
|
||||
C
|
||||
K=ALFA
|
||||
JJ=(ALFA-FLOAT(K))*2.0
|
||||
DY=0.0
|
||||
IF(JJ.EQ.0) then
|
||||
FNORM=1.0
|
||||
IF(K.NE.0) then
|
||||
DO 10 J=1,K
|
||||
FNORM=FNORM*(ALFA+FI+1.0-FLOAT(J))
|
||||
10 CONTINUE
|
||||
endif
|
||||
else
|
||||
FNORM=SQRPI/2.0
|
||||
DO 20 J=1,NMAX
|
||||
FNORM=FNORM*(1.0+ALFA/FLOAT(J))
|
||||
20 CONTINUE
|
||||
K=ALFA+1.0
|
||||
IF(K.NE.0) then
|
||||
DO 22 J=1,K
|
||||
FNORM=FNORM*(FLOAT(J)-0.5)
|
||||
22 CONTINUE
|
||||
endif
|
||||
endif
|
||||
Y=0.0
|
||||
Z1=0.0
|
||||
Z2=0.0
|
||||
C
|
||||
DO 80 J=1,NMAX
|
||||
FJ=J
|
||||
FKJ=4.0*(FJ+(ALFA+1.0)*0.5)
|
||||
Z=((FJ+0.5*ALFA-0.25)*PI)**2/FKI
|
||||
Z=Z*(1.0+Z*(1.0+PI* LOG(FJ)*FLN/(8.0*(FI+FLN-FJ+eps)))/(3.0*FKI))
|
||||
DELZ=Z-Z1
|
||||
Z1=Z
|
||||
Z=Y+DELZ
|
||||
Z3=Z
|
||||
DO 74 M=1,20
|
||||
A1=0.0
|
||||
A2=1.0
|
||||
DO 70 K=1,NMAX
|
||||
FK=K
|
||||
A3=((2.0*FK+ALFA-1.0-Z)*A2-(FK+ALFA-1.0)*A1)/FK
|
||||
A1=A2
|
||||
A2=A3
|
||||
B2=(FK*A2-(FK+ALFA)*A1)/Z
|
||||
70 CONTINUE
|
||||
Y=Z-A2/B2
|
||||
IF(ABS((Z-Y)/Z).LT.3.0E-07) GO TO 75
|
||||
Z=Y
|
||||
74 CONTINUE
|
||||
IERR=J
|
||||
75 CONTINUE
|
||||
DZ=Z-Z2
|
||||
Z2=Z
|
||||
DZ=((FNORM/Z)/B2)/B2
|
||||
IF(DZ.LT.CUTOFF.AND.DZ.LT.DY) GO TO 100
|
||||
DY=DZ
|
||||
INDEX=J
|
||||
AG(J)=Y
|
||||
WG(J)=DZ
|
||||
IF(JJ.NE.0) AG(J)=SQRT(Y)
|
||||
80 CONTINUE
|
||||
100 CONTINUE
|
||||
RETURN
|
||||
END
|
43
dwuck4/culib4/LEGAUS.FOR
Normal file
43
dwuck4/culib4/LEGAUS.FOR
Normal file
|
@ -0,0 +1,43 @@
|
|||
|
||||
SUBROUTINE LEGAUS(LL,X,W)
|
||||
C
|
||||
C GAUSS-LEGENDRE POINT AND WAIT ROUTINE FOR AN EVEN NO. OF POINTS
|
||||
C
|
||||
C ll = order i.e. the total number of points for -1< x <1
|
||||
C x = points
|
||||
C w = weights
|
||||
C
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
real*4 x,w
|
||||
DIMENSION X(100),W(100)
|
||||
Z3=-1.6/FLOAT(LL+1)
|
||||
Z2=3.0*Z3
|
||||
Z1=5.0*Z3
|
||||
NL=(LL+1)/2
|
||||
DO 200 L=1,NL
|
||||
ZOLD=0.0
|
||||
Z=Z1+3.0*(Z3-Z2)
|
||||
DO 50 J=1,10
|
||||
P1=0.0
|
||||
P2=1.0
|
||||
DO 30 I=1,LL
|
||||
P3=(FLOAT(I+I-1)*Z*P2-FLOAT(I-1)*P1)/FLOAT(I)
|
||||
P1=P2
|
||||
P2=P3
|
||||
30 CONTINUE
|
||||
DP=FLOAT(LL)*(P1-Z*P2)/(1.0-Z*Z)
|
||||
Z=Z-P2/DP
|
||||
IF(ABS(Z-ZOLD)/Z.LT.1.0E-10) GO TO 51
|
||||
ZOLD=Z
|
||||
50 CONTINUE
|
||||
WRITE(6,9100)L
|
||||
9100 FORMAT(28H0NO CONVERGENCE FOR ZERO NO.,I4)
|
||||
51 CONTINUE
|
||||
X(L)=Z
|
||||
W(L)=2.0/((1.0-Z*Z)*DP*DP)
|
||||
Z1=Z2
|
||||
Z2=Z3
|
||||
Z3=Z
|
||||
200 CONTINUE
|
||||
RETURN
|
||||
END
|
38
dwuck4/culib4/LGNDR.FOR
Normal file
38
dwuck4/culib4/LGNDR.FOR
Normal file
|
@ -0,0 +1,38 @@
|
|||
|
||||
SUBROUTINE LGNDR(PLM,MPLUS,LPLUS,THET)
|
||||
DIMENSION PLM(459)
|
||||
THETA=THET /57.295779
|
||||
Y=COS(THETA)
|
||||
Z=SIN(THETA)
|
||||
IX=0
|
||||
DO 100 M=1,MPLUS
|
||||
LX=M-1
|
||||
L2=0
|
||||
P3=1.0
|
||||
FL1=LX
|
||||
IF(LX.EQ.0) GO TO 41
|
||||
DO 40 LT=1,LX
|
||||
FL1=FL1+1.0
|
||||
P3=P3*FL1*Z/2.0
|
||||
40 CONTINUE
|
||||
41 P2=0.0
|
||||
FL2=FL1+1.0
|
||||
FL3=1.0
|
||||
DO 90 LT=1,LPLUS
|
||||
IX1=IX+LT
|
||||
IF(L2-LX)50,70,60
|
||||
50 PLM(IX1)=0.0
|
||||
GO TO 75
|
||||
60 P3=(FL2*Y*P2-FL1*P1)/FL3
|
||||
FL1=FL1+1.0
|
||||
FL2=FL2+2.0
|
||||
FL3=FL3+1.0
|
||||
70 PLM(IX1)=P3
|
||||
P1=P2
|
||||
P2=P3
|
||||
75 L2=L2+1
|
||||
90 CONTINUE
|
||||
IX=IX+LPLUS
|
||||
100 CONTINUE
|
||||
RETURN
|
||||
END
|
287
dwuck4/culib4/POLFCT.FOR
Normal file
287
dwuck4/culib4/POLFCT.FOR
Normal file
|
@ -0,0 +1,287 @@
|
|||
c$debug
|
||||
subroutine polfct(max1,maxi,jr,js,theta,Pol,sr
|
||||
1 ,iopen20,iout20,nth,ntheta,ALPHA,IDAT)
|
||||
c -------------------------------------------------------------
|
||||
c max1 initial target multiplicity
|
||||
c maxi final target multiplicity
|
||||
c jr initial projectile multiplicity
|
||||
c js final projectile multiplicity
|
||||
c sr(1...jr, 1...js, 1...max1, 1...maxi)
|
||||
c -------------------------------------------------------------
|
||||
c Double precision statements -------------------------------
|
||||
c implicit real*8 (a-h,o-z)
|
||||
c double complex sr(js,jr,maxi,max1), a(3,3), b(3,3), c(3,3)
|
||||
c 1 , d(3,3,4), e(3,3,3)
|
||||
c real*8 Knn
|
||||
c -------------------------------------------------------------
|
||||
c Single precision statements --------------------------------
|
||||
complex sr(js,jr,maxi,max1), a(3,3), b(3,3), c(3,3)
|
||||
1 , d(3,3,4), e(3,3,3)
|
||||
real*4 Knn
|
||||
c -------------------------------------------------------------
|
||||
parameter (nsig = 4, npol = 10, nay = 4, nty = 3
|
||||
1 , rads = 3.141592/180.)
|
||||
logical iopen20, iout20
|
||||
|
||||
dimension s(2,2,3), ii(nsig), jj(nsig)
|
||||
1 , Pol(npol), Sy(3,3,3), Sij(3,3,4), IDAT(6), ALPHA(15)
|
||||
2 ,csig(nsig), Cij(nsig), Dij(nsig), dsig(nsig)
|
||||
c
|
||||
c spin 1/2 matrices for Spin correlation coefficients
|
||||
c s stored as S_z, S_x and S_y
|
||||
c
|
||||
data s /-1., 0., 0., 1.
|
||||
1 , 0., 1., 1., 0.
|
||||
2 , 0.,-1., 1., 0./
|
||||
C
|
||||
c SY MATRIX FOR SPIN 0, 1/2 and 1
|
||||
c
|
||||
DATA Sy/0.0,0.0,0.0, 0.0,0.0,0.0, 0.0,0.0,0.0
|
||||
1, 0.0,-1.0,0.0, 1.0,0.0,0.0, 0.0,0.0,0.0
|
||||
2, 0.0,-.707106781,0.0, .707106781,0.0,-.707106781
|
||||
3, 0.0,.707106781,0.0/
|
||||
C
|
||||
C SYY = ( 3*SY*SY - S*S )
|
||||
C S22 = ( S^*S^ )*SQRT(3)/4
|
||||
C S21 = ( S^*SZ + SZ*S^)*SQRT(3)/2
|
||||
C S20 = ( 3*SZ*SZ - S*S )/SQRT(2)
|
||||
C
|
||||
DATA Sij/-0.5,0.0,-1.5, 0.0,1.0,0.0, -1.5,0.0,-0.5
|
||||
1, 0.0,0.0,0.0, 0.0,0.0,0.0, 1.73205081,0.0,0.0
|
||||
2, 0.0,0.0,0.0, -1.2247449,0.0,0.0, 0.0,1.2247449,0.0
|
||||
3, 0.70710678,0.0,0.0,0.0,-1.4124214,0.0
|
||||
4, 0.0,0.0,0.70710678/
|
||||
C
|
||||
data ii/1, 2, 3, 1/
|
||||
data jj/1, 2, 3, 2/
|
||||
data zero/0.0/
|
||||
c
|
||||
c write(20,'(1p8e12.4)')sr
|
||||
cs=cos(theta*rads)
|
||||
ss=sin(theta*rads)
|
||||
do 20 n=1,nsig
|
||||
csig(n)=0.0
|
||||
dsig(n)=0.0
|
||||
20 continue
|
||||
do 30 i=1,npol
|
||||
Pol(i) = 0.0
|
||||
30 continue
|
||||
Dnn = 0.0
|
||||
Knn = 0.0
|
||||
c
|
||||
if(jr.gt.3 .or. js.gt.3) go to 1000
|
||||
c
|
||||
c Calculate Dnn = < S_y(initial) * S_y(final) >
|
||||
c Calculate pol = < S_y(final ) >
|
||||
c Calculate asy = < S_y(initial) >
|
||||
c
|
||||
do 200 mx=1,max1
|
||||
do 190 my=1,maxi
|
||||
c
|
||||
do 180 m =1,jr
|
||||
do 170 mp=1,js
|
||||
a(mp,m ) = 0.0
|
||||
b(mp, m) = 0.0
|
||||
c(mp, m) = 0.0
|
||||
if(jr .eq. 3) then
|
||||
do 115 i=1,nay
|
||||
d(mp,m ,i) = 0.0
|
||||
115 continue
|
||||
endif
|
||||
do 130 m1=1,jr
|
||||
do 120 m2=1,js
|
||||
c Dnn coefficient -------------------------------------------
|
||||
c(mp,m )=c(mp,m ) + sr(m2,m1,my,mx) * cmplx(zero, Sy(m2,mp,js))
|
||||
1 *cmplx(zero, Sy(m ,m1,jr))
|
||||
120 continue
|
||||
c Asymmetry --------------------------------------------
|
||||
b(mp,m )=b(mp,m ) + sr(mp,m1,my,mx) * cmplx(zero, Sy(m ,m1,jr))
|
||||
if(jr .eq. 3) then
|
||||
do 125 i=1,nay
|
||||
d(mp,m ,i)=d(mp,m ,i) + sr(mp,m1,my,mx) * Sij(m ,m1,i)
|
||||
125 continue
|
||||
endif
|
||||
130 continue
|
||||
do 140 m2=1,js
|
||||
c Polarization --------------------------------------------
|
||||
a(mp,m )=a(mp,m ) + sr(m2,m ,my,mx) * cmplx(zero, Sy(m2,mp,js))
|
||||
if(js .eq. 3) then
|
||||
do 135 i=1,nty
|
||||
e(mp,m ,i)=e(mp,m ,i) + sr(m2,m ,my,mx) * Sij(m2,mp,1)
|
||||
135 continue
|
||||
endif
|
||||
140 continue
|
||||
c
|
||||
Pol(1) =Pol(1) + conjg(sr(mp,m ,my,mx)) * sr(mp,m ,my,mx)
|
||||
Pol(2) =Pol(2) + conjg(sr(mp,m ,my,mx)) * a(mp,m )
|
||||
Pol(3) =Pol(3) + conjg(sr(mp,m ,my,mx)) * b(mp,m )
|
||||
if(jr .eq. 3) then
|
||||
do 160 i=1,nay
|
||||
pol(i+3)=Pol(i+3) + conjg(sr(mp,m ,my,mx)) * d(mp,m ,i)
|
||||
160 continue
|
||||
endif
|
||||
if(js .eq. 3) then
|
||||
do 165 i=1,nty
|
||||
pol(i+7)=Pol(i+7) + conjg(sr(mp,m ,my,mx)) * e(mp,m ,i)
|
||||
165 continue
|
||||
endif
|
||||
Dnn =Dnn + conjg(sr(mp,m ,my,mx)) * c(mp,m )
|
||||
170 continue
|
||||
180 continue
|
||||
190 continue
|
||||
200 continue
|
||||
c
|
||||
if(Pol(1) .eq. 0.0) go to 1000
|
||||
IF(iout20) THEN
|
||||
if(jr.eq.2 .and. maxi.eq.2) then
|
||||
c
|
||||
c Calculate Knn = < S_y(initial) * I_y(final) >
|
||||
c
|
||||
do 300 mx=1,max1
|
||||
do 290 mp=1,js
|
||||
c
|
||||
do 280 my=1,maxi
|
||||
do 270 m = 1,jr
|
||||
c(m ,my) = 0.0
|
||||
do 260 m1=1,maxi
|
||||
do 250 m2=1,jr
|
||||
c Knn coefficient
|
||||
c(m ,my)=c(m ,my) + sr(mp,m1,m2,mx) * cmplx(zero, Sy(my,m2,2))
|
||||
1 *cmplx(zero, Sy(m1,m ,2))
|
||||
250 continue
|
||||
260 continue
|
||||
Knn = Knn + conjg(sr(mp,m ,my,mx)) * c(m ,my)
|
||||
270 continue
|
||||
280 continue
|
||||
290 continue
|
||||
300 continue
|
||||
endif
|
||||
c
|
||||
if(jr .eq. 2 .and. js .eq.2) then
|
||||
c
|
||||
c Calculate Dij = < S_i(initial) * S_j(final) >
|
||||
c
|
||||
|
||||
do 600 mx=1,max1
|
||||
do 580 my=1,maxi
|
||||
do 500 n=1,nsig
|
||||
i1=ii(n)
|
||||
j1=jj(n)
|
||||
do 490 m =1,jr
|
||||
do 480 mp=1,js
|
||||
a(mp,m )=0.0
|
||||
do 440 m1=1,jr
|
||||
do 420 m2=1,js
|
||||
a(mp,m )=a(mp,m ) + sr(m2,m1,my,mx) * s(m2,mp,i1)*s(m ,m1,j1)
|
||||
420 continue
|
||||
440 continue
|
||||
c
|
||||
c Dij correlation coefficients
|
||||
dsig(n)=dsig(n)+conjg(sr(mp,m ,my,mx))*a(mp,m )
|
||||
480 continue
|
||||
490 continue
|
||||
500 continue
|
||||
580 continue
|
||||
600 continue
|
||||
endif
|
||||
c
|
||||
Dsig(3) = -Dsig(3)
|
||||
do 610 n=1,nsig
|
||||
dsig(n) = dsig(n)/Pol(1)
|
||||
610 continue
|
||||
c
|
||||
if(js .eq. 2 .and. maxi .eq. 2) then
|
||||
c
|
||||
c Spin correlation coefficients (final state target and projectile)
|
||||
c Calculate Cij = < S_y(final) * I_y(final) >
|
||||
c
|
||||
do 800 mx=1,max1
|
||||
do 780 m =1,jr
|
||||
c
|
||||
do 700 n=1,nsig
|
||||
i1=ii(n)
|
||||
j1=jj(n)
|
||||
do 690 my=1,maxi
|
||||
do 680 mp=1,js
|
||||
a(mp,my)=0.0
|
||||
do 640 m1=1,maxi
|
||||
do 620 m2=1,js
|
||||
a(mp,my)=a(mp,my)+sr(m2,m ,m1,mx)*s(m2,mp,i1)*s(m1,my,j1)
|
||||
620 continue
|
||||
640 continue
|
||||
c
|
||||
csig(n)=csig(n)+conjg(sr(mp,m ,my,mx))*a(mp,my)
|
||||
680 continue
|
||||
690 continue
|
||||
700 continue
|
||||
c
|
||||
780 continue
|
||||
800 continue
|
||||
do 820 n=1,nsig
|
||||
csig(n) = csig(n)/Pol(1)
|
||||
820 continue
|
||||
csig(3)=-csig(3)
|
||||
c
|
||||
c rotate operators to outgoing particle direction
|
||||
c
|
||||
c Minus signs on C_zz, C_xx and C_xz make output agree with the data
|
||||
c where the z and x axes for the target are in opposite directions
|
||||
c to those of the projectile
|
||||
c
|
||||
Cij(3) = -(csig(1)*cs**2 + csig(2)*ss**2 + 2.0*csig(4)*cs*ss)
|
||||
Cij(1) = -(csig(1)*ss**2 + csig(2)*cs**2 - 2.0*csig(4)*cs*ss)
|
||||
Cij(4) = -(csig(4)*(cs**2-ss**2) + (csig(2)-csig(1))*cs*ss)
|
||||
Cij(2) = csig(3)
|
||||
endif
|
||||
c
|
||||
c Singlet fraction
|
||||
ssum = (1.0-(csig(1)+csig(2)+csig(3)))/4.0
|
||||
Dij(3) = dsig(1)
|
||||
Dij(1) = dsig(2)
|
||||
Dij(4) = dsig(4)
|
||||
Dij(2) = dsig(3)
|
||||
ENDIF
|
||||
900 continue
|
||||
c
|
||||
do 980 i=2,npol
|
||||
Pol(i) = Pol(i)/Pol(1)
|
||||
980 continue
|
||||
Dnn = Dnn /Pol(1)
|
||||
Knn = Knn /Pol(1)
|
||||
Pol(1) = Pol(1)/float(max1*jr)
|
||||
1000 continue
|
||||
c
|
||||
c --------------------------------------------------------
|
||||
c output to disk file 20 and file 21
|
||||
c
|
||||
if(iopen20) then
|
||||
open(unit = 20, file = 'for020.dat', status = 'unknown')
|
||||
open(unit = 21, file = 'for021.dat', status = 'unknown')
|
||||
iopen20 = .false.
|
||||
endif
|
||||
c
|
||||
if(iout20) then
|
||||
c Write header to file
|
||||
if(nth .eq. 1) then
|
||||
WRITE(20,9010)ALPHA,IDAT
|
||||
write(20,9020) ntheta
|
||||
WRITE(21,9010)ALPHA,IDAT
|
||||
write(21,9021) ntheta
|
||||
endif
|
||||
c
|
||||
write(20,'(2(0pf8.3,1h,), 1pe12.4, 9(1h,,0pf8.4))')
|
||||
1 theta, cs, (Pol(i),i=1,3), Dnn, Knn
|
||||
c
|
||||
write(21,'(0pf8.3,1h,,0pf8.3, 9(1h,,0pf8.4))')
|
||||
1 theta, cs, Cij, Dij, ssum
|
||||
endif
|
||||
c
|
||||
return
|
||||
c
|
||||
9010 FORMAT(' (',15A4,I4.2,2(1H/,I2.2),I4.2,2(1H:,I2.2))
|
||||
9020 FORMAT(' (',i2,',angle cos[th] Sigma Pol Asy'
|
||||
1 ,' Dnn Knn')
|
||||
9021 FORMAT(' (',i2,',angle cos[th] Cxx Cyy Czz'
|
||||
1 ,' Cxz Dxx Dyy Dzz Dxz fsingl')
|
||||
c
|
||||
end
|
812
dwuck4/culib4/POTS.FOR
Normal file
812
dwuck4/culib4/POTS.FOR
Normal file
|
@ -0,0 +1,812 @@
|
|||
c***********************************************************************
|
||||
SUBROUTINE POTS(U,V)
|
||||
c
|
||||
c Calculates the potentials or form factors
|
||||
c***********************************************************************
|
||||
c
|
||||
c IMPLICIT REAL*8(A-H,O-Z)
|
||||
COMMON/POTTER/DRX,AFACT(2),VFACT,SFACT,ENG,RM,G(4),ETAX,FKX,ETAKX
|
||||
1 ,RCX,HBARC2,ABETA(3),FLDF(3)
|
||||
2 ,NX,LAMX,KMXX,KX,IBX,LPLUSX,ICON4,NSPC,IDIRAC,ICHK
|
||||
|
||||
CHARACTER*18 B(26)
|
||||
DIMENSION UT(5),CN(16),CP(16),YLAM(16),PLM(8)
|
||||
1 ,XG(8),WG(8),U(800),V(800),LDFRM(3)
|
||||
C DIMENSION UD(800)
|
||||
EQUIVALENCE (YLAM(1),PLM(1))
|
||||
C
|
||||
c
|
||||
DATA b / ' NX=0 No potential', ' NX=1 VOLUME W-S '
|
||||
1, ' NX=2 SURFAC, W-S ', ' NX=3 2ND DERIV ', ' NX=4 L.S VOLUME '
|
||||
2, ' NX=5 L.S SURFACE ', ' NX=6 VOL*R**POWR ', ' NX=7 SUR*R**POWR '
|
||||
3, ' NX=8 EXTERN FORMF', ' NX=9 HARMONIC OSC', ' NX=10 GAUSSIAN '
|
||||
4, ' NX=11 DEFORM VOL ', ' NX=12 DEFORM SURF', ' NX=13 Hulthen '
|
||||
5, ' NX=14 Yukawa Lam ', ' NX=15 Yukawa L*S ', ' NX=16 NO OPTION '
|
||||
6, ' NX=17 NO OPTION ', ' NX=18 NO OPTION ', ' NX=19 NO OPTION '
|
||||
7, ' NX=20 VECTOR ', ' NX=21 SCALAR ', ' NX=22 Not used '
|
||||
8, ' NX=23 Not used ', ' NX=24 Not used ', ' NX=25 Not used '
|
||||
9/
|
||||
C
|
||||
DATA NG,NGX/8,0/
|
||||
C
|
||||
ETA4 = 6.0
|
||||
ETA5 =10.0
|
||||
SQRPI= 1.772453851
|
||||
PI=3.141592654
|
||||
C
|
||||
IVFLAG=0
|
||||
ISFLAG=0
|
||||
FACT=VFACT
|
||||
70 CONTINUE
|
||||
C
|
||||
C READ IN CARD SET 5,6,OR 7 POTENTIAL CARDS
|
||||
C
|
||||
READ (5,9000)FZ,VR,RY,AR,VSOR,VI,RZ,AI,VSOI,PWR
|
||||
C
|
||||
NZ=ABS(FZ)
|
||||
RR=ABS(RY)*AFACT(1)
|
||||
IF(RY.LT.0.0) RR=RR+ABS(RY)*AFACT(2)
|
||||
RI=ABS(RZ)*AFACT(1)
|
||||
IF(RZ.LT.0.0) RI=RI+ABS(RZ)*AFACT(2)
|
||||
IF(ICON4.NE.2.OR.NSPC.LT.3) THEN
|
||||
WRITE(6,9509)B(NZ+1),VR,RY,AR,RR,VSOR
|
||||
WRITE(6,9510) VI,RZ,AI,RI,VSOI,PWR
|
||||
ENDIF
|
||||
C
|
||||
KFLAG=0
|
||||
IF(NX.LT.3) THEN
|
||||
VR=VR*FACT
|
||||
VI=VI*FACT
|
||||
KT=FKX * MAX (RR,RI)+ETA5
|
||||
LPLUSX=MAX0(LPLUSX,KT)
|
||||
KT=(2.3*ETA4* MAX (AR,AI)+ MAX (RR,RI))/DRX
|
||||
ELSE
|
||||
IF(ENG.EQ.0.0) THEN
|
||||
KT=(2.3*ETA4* MAX (AR,AI)+ MAX (RR,RI))/DRX
|
||||
ELSE
|
||||
RM= MAX (RM,RR)
|
||||
RM= MAX (RM,RI)
|
||||
IF(RM.EQ.0.0) RM=1.0
|
||||
VR=VR*FACT
|
||||
VI=VI*FACT
|
||||
KT=(2.3*ETA4/SQRT(FKX**2+2.0*ETAX*FKX/RM))/DRX
|
||||
ENDIF
|
||||
ENDIF
|
||||
KX=MIN0(MAX0(KX,KT),KMXX)
|
||||
83 CONTINUE
|
||||
IF(AR.EQ.0.0) THEN
|
||||
F1=0.0
|
||||
F2=0.0
|
||||
ELSE
|
||||
F2=EXP(-DRX /AR)
|
||||
F1=EXP( RR/AR)
|
||||
ENDIF
|
||||
IF(AI.EQ.0.0) THEN
|
||||
F3=0.0
|
||||
F4=0.0
|
||||
ELSE
|
||||
F4=EXP(-DRX /AI)
|
||||
F3=EXP( RI/AI)
|
||||
ENDIF
|
||||
C
|
||||
IF(NX.GE.3.AND.ENG.EQ.0.0.AND.NZ.LE.5) THEN
|
||||
IF(AR.NE.0.0) VR=VR*(RR/AR)**(PWR+1)
|
||||
IF(AI.NE.0.0) VI=VI*(RI/AI)**(PWR+1)
|
||||
ENDIF
|
||||
IF(NZ.EQ.0) GO TO 6050
|
||||
GO TO ( 100, 200, 300, 400, 500, 600, 700, 800, 900,1000),NZ
|
||||
GO TO (1100,1200,1300,1400,1500,1600,1700,1800,1900,2000),NZ-10
|
||||
GO TO (2100),NZ-20
|
||||
write(6,'(''0Invalid potential option '',i3)')nz
|
||||
|
||||
C
|
||||
C VOLUME WOODS SAXON
|
||||
C
|
||||
100 CONTINUE
|
||||
DO 160 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )-VR*F1/(1.0+F1)
|
||||
U(MK+1)=U(MK+1)-VI*F3/(1.0+F3)
|
||||
160 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C 1ST DERIVATIVE WOODS SAXON
|
||||
C
|
||||
200 CONTINUE
|
||||
DO 260 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )+VR*F1/(1.0+F1)**2
|
||||
U(MK+1)=U(MK+1)+VI*F3/(1.0+F3)**2
|
||||
260 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C 2ND DERIVATIVE WOODS SAXON
|
||||
C
|
||||
300 CONTINUE
|
||||
DO 360 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )-VR*F1*(1.0-F1)/(1.0+F1)**3
|
||||
U(MK+1)=U(MK+1)-VI*F3*(1.0-F3)/(1.0+F3)**3
|
||||
360 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C L.S VOLUME WOODS SAXON
|
||||
C
|
||||
400 CONTINUE
|
||||
IBX=1
|
||||
IF(AR.NE.0.0) VR=VR/AR
|
||||
IF(AI.NE.0.0) VI=VI/AI
|
||||
R=0.0
|
||||
DO 460 M=1,KX
|
||||
R=R+DRX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )-VR*F1/(R*(1.0+F1)**2)
|
||||
V(MK+1)=V(MK+1)-VI*F3/(R*(1.0+F3)**2)
|
||||
460 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C L.S 1ST DERIVATIVE WOODS SAXON
|
||||
C
|
||||
500 CONTINUE
|
||||
IBX=1
|
||||
IF(AR.NE.0.0) VR=VR/AR
|
||||
IF(AI.NE.0.0) VI=VI/AI
|
||||
R=0.0
|
||||
DO 560 M=1,KX
|
||||
R=R+DRX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )+VR*F1*(1.0-F1)/(R*(1.0+F1)**3)
|
||||
V(MK+1)=V(MK+1)+VI*F3*(1.0-F3)/(R*(1.0+F3)**3)
|
||||
560 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C WOOD SAXON*R**PWR
|
||||
C
|
||||
600 CONTINUE
|
||||
R=0.0
|
||||
DO 660 M=1,KX
|
||||
R=R+DRX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
RPWR=R**PWR
|
||||
U(MK )=U(MK )-VR*F1*RPWR/(1.0+F1)
|
||||
U(MK+1)=U(MK+1)-VI*F3*RPWR/(1.0+F3)
|
||||
660 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C 1ST DERIVATIVE WOOD SAXON*R**PWR
|
||||
C
|
||||
700 CONTINUE
|
||||
R=0.0
|
||||
DO 760 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
RPWR=R**PWR
|
||||
U(MK )=U(MK )+VR*F1*RPWR/(1.0+F1)**2
|
||||
U(MK+1)=U(MK+1)+VI*F3*RPWR/(1.0+F3)**2
|
||||
760 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C EXTERNAL FORM FACTOR
|
||||
C
|
||||
800 CONTINUE
|
||||
IF(NX.GE.3) THEN
|
||||
READ (5,9000)G
|
||||
WRITE(6,9508)G
|
||||
ENDIF
|
||||
READ(5,9000)F1,F2
|
||||
C
|
||||
C F2 = 0 REAL CENTRAL
|
||||
C F2 = 1 IMAG CENTRAL
|
||||
C F2 = 2 REAL SPIN ORBIT
|
||||
C F2 = 3 IMAG SPIN ORBIT
|
||||
C
|
||||
IF(F2.EQ.0.0.OR.F2.EQ.2) THEN
|
||||
F3=VR
|
||||
MK=1
|
||||
ELSE
|
||||
F3=VI
|
||||
MK=2
|
||||
ENDIF
|
||||
IF(F3.EQ.0.0) F3=1.0
|
||||
KT=F1
|
||||
DO 820 M=1,KT,5
|
||||
READ(5,9100)UT
|
||||
IF(M.GT.KMXX) GO TO 820
|
||||
DO 810 I=1,5
|
||||
IF(F2.LT.2.0) THEN
|
||||
U(MK )=U(MK )+UT(I)*F3
|
||||
ELSE
|
||||
V(MK )=V(MK )+UT(I)*F3
|
||||
ENDIF
|
||||
MK=MK+2
|
||||
810 CONTINUE
|
||||
820 CONTINUE
|
||||
C
|
||||
KX=min0(KT,kmxx)
|
||||
|
||||
GO TO 6000
|
||||
C
|
||||
C HARMONIC OSCILLATOR, NORMALIZED N*EXP(-(R/RY)**2/2)
|
||||
C
|
||||
900 CONTINUE
|
||||
READ (5,9000)G
|
||||
WRITE(6,9508)G
|
||||
F1=1.0/RY**2
|
||||
F2=F1/RY
|
||||
F3=0.5
|
||||
F4=SQRPI*0.5
|
||||
L=G(2)
|
||||
IF(L.NE.0) THEN
|
||||
DO 930 I=1,L
|
||||
F3=F3+1.0
|
||||
F4=F4*F3
|
||||
F2=F2*F1
|
||||
930 CONTINUE
|
||||
ENDIF
|
||||
NN=G(1)
|
||||
T1=1.0
|
||||
T2=F4
|
||||
C LAGUERRE POLYNOMIAL COEFFICIENTS = (Abramowitz-Stegun)*(-1)**nn
|
||||
CN(1)=(-1.0)**NN
|
||||
IF(NN.NE.0) THEN
|
||||
DO 940 I=1,NN
|
||||
F3=F3+1.0
|
||||
T1=T1*FLOAT(I)
|
||||
T2=T2*F3
|
||||
CN(I+1)=-CN(I)*F1*FLOAT(NN+1-I)/(FLOAT(I)*F3)
|
||||
940 CONTINUE
|
||||
ENDIF
|
||||
ANORM=SQRT(2.0*F2*T1/T2)*T2/(T1*F4)
|
||||
IF(VR.NE.0.0) ANORM=VR*ANORM
|
||||
KT=10.0*RY/DRX
|
||||
KT=MIN0(KT,KMXX)
|
||||
R=0.0
|
||||
F1=F1/2.0
|
||||
DO 960 M=1,KT
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
R2=R**2
|
||||
F2=CN(1)
|
||||
IF(NN.EQ.0) GO TO 951
|
||||
F3=1.0
|
||||
DO 950 I=1,NN
|
||||
F3=F3*R2
|
||||
F2=F2+CN(I+1)*F3
|
||||
950 CONTINUE
|
||||
951 CONTINUE
|
||||
U(MK )=U(MK )+F2*ANORM*EXP(-F1*R2)*R**L
|
||||
960 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C EXP(-(R/R0)**2)*R**POWR
|
||||
C
|
||||
1000 CONTINUE
|
||||
IF(VR.NE.0.0) THEN
|
||||
R=0.0
|
||||
DO 1060 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
U(MK )=U(MK )-VR*EXP(-(R/RY)**2)*R**PWR
|
||||
1060 CONTINUE
|
||||
endif
|
||||
IF(VI.NE.0.0) THEN
|
||||
R=0.0
|
||||
DO 1070 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
U(MK+1)=U(MK+1)-VI*EXP(-(R/RZ)**2)*R**PWR
|
||||
1070 CONTINUE
|
||||
endif
|
||||
GO TO 6000
|
||||
C
|
||||
C DEFORMED VOLUME OR SURFACE BY YLM EXPANSION
|
||||
C
|
||||
1100 CONTINUE
|
||||
IF(NGX.NE.NG) THEN
|
||||
CALL LEGAUS(2*NG,XG,WG)
|
||||
NGX=NG
|
||||
ENDIF
|
||||
T2=(-1.0)**LAMX
|
||||
IF(ICHK.EQ.0) THEN
|
||||
READ (5,9000) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
WRITE(6,9000)
|
||||
WRITE(6,9512) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
ENDIF
|
||||
LMAX=LAMX+1
|
||||
DO 1101 J=1,3
|
||||
LDFRM(J)=FLDF(J)
|
||||
LMAX=MAX0(LMAX,LDFRM(J)+1)
|
||||
1101 CONTINUE
|
||||
T2=(-1.0)**LAMX
|
||||
C
|
||||
DO 1108 I=1,NG
|
||||
CN(I )=0.0
|
||||
CN(I+NG)=0.0
|
||||
P2=0.0
|
||||
P3=1.0
|
||||
C
|
||||
DO 1106 M=1,LMAX
|
||||
L=M-1
|
||||
FL=L-1
|
||||
IF(L.EQ.0) GO TO 1102
|
||||
P3=((2.0*FL+1.0)*XG(I)*P2-FL*P1)/(FL+1.0)
|
||||
1102 CONTINUE
|
||||
DO 1103 J=1,3
|
||||
IF(ABETA(J).EQ.0.0) GO TO 1103
|
||||
IF(L.NE.LDFRM(J)) GO TO 1103
|
||||
FACTOR=P3*ABETA(J)*SQRT(FLOAT(L+L+1)/(4.0*PI))
|
||||
CN(I )=CN(I )+FACTOR
|
||||
CN(I+NG)=CN(I+8)+FACTOR*(-1.0)**LDFRM(J)
|
||||
1103 CONTINUE
|
||||
IF(L.NE.LAMX) GO TO 1104
|
||||
YLAM(I )= P3*WG(I)*SQRT(FLOAT(L+L+1)*PI)
|
||||
YLAM(I+NG)=YLAM(I )*T2
|
||||
1104 CONTINUE
|
||||
P1=P2
|
||||
P2=P3
|
||||
1106 CONTINUE
|
||||
1108 CONTINUE
|
||||
DO 1170 I=1,2
|
||||
IF(I.EQ.1) THEN
|
||||
IF(VR.EQ.0.0) GO TO 1170
|
||||
VX=VR
|
||||
RX=RR
|
||||
AX=AR
|
||||
F1=1.0
|
||||
IFL=-1
|
||||
ELSE
|
||||
IF(VI.EQ.0.0) GO TO 1170
|
||||
VX=VI
|
||||
RX=RI
|
||||
AX=AI
|
||||
F1=1.0
|
||||
F2=F4
|
||||
IFL=0
|
||||
ENDIF
|
||||
DO 1135 J=1,16
|
||||
CP(J)=EXP((1.0+CN(J))*RX/AX)
|
||||
1135 CONTINUE
|
||||
IF(LAMX.EQ.0) VX=VX/(SQRPI*2.0)
|
||||
J=NZ-10
|
||||
IF(J.EQ.2) GO TO 1151
|
||||
DO 1150 M=1,KX
|
||||
MK=M+M+IFL
|
||||
VTEMP=0.0
|
||||
F1=F1*F2
|
||||
DO 1145 J=1,16
|
||||
F3=F1*CP(J)
|
||||
VTEMP=VTEMP-YLAM(J)*VX*F3/(1.0+F3)
|
||||
1145 CONTINUE
|
||||
U(MK )=U(MK )+VTEMP
|
||||
1150 CONTINUE
|
||||
GO TO 1170
|
||||
1151 CONTINUE
|
||||
DO 1160 M=1,KX
|
||||
MK=M+M+IFL
|
||||
VTEMP=0.0
|
||||
F1=F1*F2
|
||||
DO 1155 J=1,16
|
||||
F3=F1*CP(J)
|
||||
VTEMP=VTEMP+YLAM(J)*VX*F3/(1.0+F3)**2
|
||||
1155 CONTINUE
|
||||
U(MK )=U(MK )+VTEMP
|
||||
1160 CONTINUE
|
||||
1170 CONTINUE
|
||||
GO TO 6000
|
||||
1200 CONTINUE
|
||||
GO TO 1100
|
||||
C
|
||||
C HULTHEN WAVE FUNCTION= NORM*(EXP(-R/RY)-EXP(-R/RZ))/R
|
||||
C
|
||||
1300 CONTINUE
|
||||
READ (5,9000)G
|
||||
WRITE(6,9508)G
|
||||
T1=1.0/RY
|
||||
T2=1.0/RZ
|
||||
T3=T2**2-T1**2
|
||||
T4=SQRT(2.0*T1*(T1+T2)*T2)/(T2-T1)
|
||||
IF(VR.NE.0.0) KT=16.0* MIN (RY,RZ)/DRX
|
||||
IF(VR.EQ.0.0) KT=16.0* MAX (RY,RZ)/DRX
|
||||
KX=MIN0(KX,KMXX)
|
||||
F1=1.0
|
||||
F2=EXP(-DRX *T1)
|
||||
F3=1.0
|
||||
F4=EXP(-DRX *T2)
|
||||
R=0.0
|
||||
DO 1260 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(M)=T3*F3/(F1-F3)
|
||||
TEMP=1.0
|
||||
IF(VR.NE.0.0) TEMP=V(M)/FACT
|
||||
U(MK )=U(MK )+TEMP*T4*(F1-F3)/R
|
||||
1260 CONTINUE
|
||||
GO TO 6000
|
||||
c
|
||||
c Yukawa L=LAM
|
||||
c
|
||||
c v = V-0*exp(-r/rx)/(r/rx) ay < r
|
||||
c = Wood-Saxon r < ay
|
||||
c
|
||||
1400 CONTINUE
|
||||
lam=lamx
|
||||
if(ry.eq.0.0) ry=1.0
|
||||
if(rz.eq.0.0) rz=1.0
|
||||
if(ar.eq.0.0) ar=drx
|
||||
if(ai.eq.0.0) ai=drx
|
||||
f1=1.0
|
||||
f2=exp(-drx/ry)
|
||||
xr=ar/ry
|
||||
t1=1.0+1.0/xr
|
||||
t2=1.0
|
||||
c Recur Hankel functions
|
||||
do 1420 i=0,lam
|
||||
t0=t1
|
||||
t1=t2
|
||||
t2=float(2*i-1)*t1/xr+t0
|
||||
1420 continue
|
||||
vzr =2.0*vr*t2*exp(-xr)/xr
|
||||
betar=2.0*(float(lam+1)*t2/xr+t1)/t2
|
||||
f3=1.0
|
||||
f4=exp(-drx/rz)
|
||||
xi=ai/rz
|
||||
t1=1.0+1.0/xi
|
||||
t2=1.0
|
||||
c Recur Hankel functions
|
||||
do 1430 i=0,lam
|
||||
t0=t1
|
||||
t1=t2
|
||||
t2=float(2*i-1)*t1/xi+t0
|
||||
1430 continue
|
||||
vzi =2.0*vi*t2*exp(-xi)/xi
|
||||
betai=2.0*(float(lam+1)*t2/xi+t1)/t2
|
||||
c
|
||||
if(vr.ne.0.0) then
|
||||
r =0.0
|
||||
do 1460 m=1,k
|
||||
r=r+drx
|
||||
mk=m+m-1
|
||||
f1=f1*f2
|
||||
f3=f3*f4
|
||||
if(r.lt.ar) then
|
||||
u(mk )=u(mk )-vzr/(1.0+exp(betar*(r/ry-xr)))
|
||||
else
|
||||
xr=r/ry
|
||||
t1=1.0+1.0/xr
|
||||
t2=1.0
|
||||
c Recur Hankel functions
|
||||
do 1450 i=0,lam
|
||||
t0=t1
|
||||
t1=t2
|
||||
t2=float(2*i-1)*t1/xr+t0
|
||||
1450 continue
|
||||
u(mk )=u(mk )-vr*t2*f1/xr
|
||||
endif
|
||||
1460 continue
|
||||
endif
|
||||
if(vi.ne.0.0) then
|
||||
r =0.0
|
||||
do 1480 m=1,k
|
||||
r=r+drx
|
||||
mk=m+m-1
|
||||
if(r.lt.ai) then
|
||||
u(mk+1)=u(mk+1)-vzi/(1.0+exp(betai*(r/rz-xi)))
|
||||
else
|
||||
xi=r/rz
|
||||
t1=1.0+1.0/xi
|
||||
t2=1.0
|
||||
c Recur Hankel functions
|
||||
do 1470 i=0,lam
|
||||
t0=t1
|
||||
t1=t2
|
||||
t2=float(2*i-1)*t1/xi+t0
|
||||
1470 continue
|
||||
u(mk+1)=u(mk+1)-vi*t2*f3/xi
|
||||
endif
|
||||
1480 continue
|
||||
endif
|
||||
go to 6000
|
||||
c
|
||||
c Yukawa L*S
|
||||
c
|
||||
1500 CONTINUE
|
||||
r =0.0
|
||||
if(ry.eq.0.0) ry=1.0
|
||||
if(rz.eq.0.0) rz=1.0
|
||||
if(ar.eq.0.0) ar=1.0
|
||||
if(ai.eq.0.0) ai=1.0
|
||||
f1=1.0
|
||||
f2=exp(-drx/ry)
|
||||
xr=ar/ry
|
||||
betar=2.0*(1.0+3.0/xr+3.0/xr**2)/(1.0+1.0/xr)
|
||||
vzr =2.0*vr*exp(-xr)*(1.0+1.0/xr)/xr**2
|
||||
f3=1.0
|
||||
f4=exp(-drx/rz)
|
||||
xi=ai/rz
|
||||
betai=2.0*(1.0+3.0/xi+3.0/xi**2)/(1.0+1.0/xi)
|
||||
vzi =2.0*vi*exp(-xi)*(1.0+1.0/xi)/xi**2
|
||||
do 1560 m=1,k
|
||||
r=r+drx
|
||||
mk=m+m-1
|
||||
f1=f1*f2
|
||||
f3=f3*f4
|
||||
if(r.lt.ar) then
|
||||
u(mk )=u(mk )-vzr/(1.0+exp(betar*(r/ry-xr)))
|
||||
else
|
||||
u(mk )=u(mk )-vr *f1*(1.0+1.0*ry/r)/(r/ry)**2
|
||||
endif
|
||||
if(r.lt.ai) then
|
||||
u(mk+1)=u(mk+1)-vzi/(1.0+exp(betai*(r/rz-xi)))
|
||||
else
|
||||
u(mk+1)=u(mk+1)-vi *f3*(1.0+1.0*rz/r)/(r/rz)**2
|
||||
endif
|
||||
1560 continue
|
||||
go to 6000
|
||||
1600 CONTINUE
|
||||
1700 CONTINUE
|
||||
go to 6000
|
||||
1800 CONTINUE
|
||||
DO 1860 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )-VR*F1/(1.0+F1)
|
||||
V(MK+1)=V(MK+1)-VI*F3/(1.0+F3)
|
||||
1860 CONTINUE
|
||||
GO TO 6000
|
||||
1900 CONTINUE
|
||||
c
|
||||
c Coulomb excitation for a deformed uniform charge distribution
|
||||
c
|
||||
IF(ICHK.EQ.0) THEN
|
||||
READ (5,9000) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
WRITE(6,9000)
|
||||
WRITE(6,9512) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
ENDIF
|
||||
if(vr.eq.0.0) vr=1.0
|
||||
do 1990 i=1,3
|
||||
beta=abeta(i)
|
||||
if(beta.ne.0.0) then
|
||||
c set flag for unbound stripping evaluation of coulomb ex.
|
||||
ibx=4
|
||||
flam1=beta*sqrt(float(2*lamx+1)/(4.0*pi))
|
||||
flam2=flam1*phasef(lamx)
|
||||
c
|
||||
if(ngx.ne.ng) then
|
||||
ngx=ng
|
||||
call legaus(2*ng,xg,wg)
|
||||
endif
|
||||
c
|
||||
an=0.0
|
||||
do 1920 k=1,ng
|
||||
p1=0.0
|
||||
p2=1.0
|
||||
if(lamx.gt.0) then
|
||||
do 1910 j=1,lamx
|
||||
p3=(float(2*j-1)*xg(k)*p2 - float(j-1)*p1)/float(j)
|
||||
p1=p2
|
||||
p2=p3
|
||||
1910 continue
|
||||
endif
|
||||
plm(k)=p2
|
||||
c
|
||||
c calculate normalization
|
||||
c
|
||||
r1=rcx*(1.0+flam1*p2)
|
||||
r2=rcx*(1.0+flam2*p2)
|
||||
an=an+(r1**3+r2**3)*wg(k)
|
||||
1920 continue
|
||||
c
|
||||
an =an/3.0
|
||||
c
|
||||
r =0.0
|
||||
c
|
||||
do 1940 m=1,kx
|
||||
mk=m+m-1
|
||||
r=r+drx
|
||||
sum=0.0
|
||||
do 1930 k=1,ng
|
||||
r1=rcx*(1.0+flam1*plm(k))
|
||||
r2=rcx*(1.0+flam2*plm(k))
|
||||
c
|
||||
if(r.gt.r1) then
|
||||
s1=r1**(lamx+3)/(r**(lamx+1)*float(lamx+3))
|
||||
else
|
||||
if(lamx.eq.2) then
|
||||
s1=( log(r1/r)+1.0/float(lamx+3))*r**2
|
||||
else
|
||||
s1=(r**lamx/r1**(lamx-2)
|
||||
1 -float(2*lamx+1)*r**2/float(lamx+3))/float(2-lamx)
|
||||
endif
|
||||
endif
|
||||
c
|
||||
if(r.gt.r2) then
|
||||
s2=r2**(lamx+3)/(r**(lamx+1)*float(lamx+3))
|
||||
else
|
||||
if(lamx.eq.2) then
|
||||
s2=( log(r2/r)+1.0/float(lamx+3))*r**2
|
||||
else
|
||||
s2=(r**lamx/r2**(lamx-2)
|
||||
1 -float(2*lamx+1)*r**2/float(lamx+3))/float(2-lamx)
|
||||
endif
|
||||
endif
|
||||
c
|
||||
sum=sum+(s1+s2*phasef(lamx))*wg(k)*plm(k)
|
||||
1930 continue
|
||||
c
|
||||
sum=sum/an
|
||||
if(beta.ne.0.0.and.lamx.ne.0) sum=sum/flam1
|
||||
u(mk )=u(mk )+sum*(vr*etakx/fact)
|
||||
1940 continue
|
||||
endif
|
||||
1990 continue
|
||||
GO TO 6000
|
||||
C
|
||||
C VECTOR POTENTIAL
|
||||
C VSOR, VSOI ARE THE THIRD PARAMETERS
|
||||
C IN THE 3 PARAMETER FERMI MODEL
|
||||
C [1 + VSO?*(R/R?)**2]
|
||||
C
|
||||
2000 CONTINUE
|
||||
IVFLAG=-1
|
||||
R=0.0
|
||||
DO 2060 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )-VR*F1*(1.0+VSOR*(R/RR)**2)/(1.0+F1)
|
||||
U(MK+1)=U(MK+1)-VI*F3*(1.0+VSOI*(R/RI)**2)/(1.0+F3)
|
||||
2060 CONTINUE
|
||||
GO TO 6020
|
||||
C
|
||||
C SCALAR POTENTIAL
|
||||
C VSOR, VSOI ARE THE FERMI THIRD PARAMETERS
|
||||
C IN THE 3 PARAMETER FERMI MODEL
|
||||
C [1 + VSO?*(R/R?)**2]
|
||||
C
|
||||
2100 CONTINUE
|
||||
ISFLAG=-1
|
||||
VR=VR*(SFACT/VFACT)
|
||||
VI=VI*(SFACT/VFACT)
|
||||
R=0.0
|
||||
DO 2160 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )-VR*F1*(1.0+VSOR*(R/RR)**2)/(1.0+F1)
|
||||
V(MK+1)=V(MK+1)-VI*F3*(1.0+VSOI*(R/RI)**2)/(1.0+F3)
|
||||
2160 CONTINUE
|
||||
GO TO 6020
|
||||
C
|
||||
C END OF POTENTIALS
|
||||
C
|
||||
6000 CONTINUE
|
||||
IDIRAC=1
|
||||
6020 CONTINUE
|
||||
IF(KFLAG.NE.0.OR.NZ.GT.5) GO TO 6050
|
||||
IF(ABS(VSOR)+ABS(VSOI).EQ.0.0) GO TO 6050
|
||||
NZ=NZ+3
|
||||
KFLAG=1
|
||||
VR=VR*VSOR/45.2
|
||||
VI=VI*VSOI/45.2
|
||||
GO TO 83
|
||||
6050 CONTINUE
|
||||
IF(FZ.GT.0.0) GO TO 70
|
||||
C
|
||||
C PROCESS DIRAC POTENTIALS
|
||||
C
|
||||
C ENTRY WITH U -> K**2 - VFACT*V VFACT = 2.0*W1 /HBARC**2
|
||||
C V -> - SFACT*S SFACT = 2.0*FM1/HBARC**2
|
||||
C
|
||||
IF(IVFLAG.NE.0.AND.ISFLAG.NE.0) THEN
|
||||
IF(IDIRAC.EQ.1) THEN
|
||||
WRITE(6,9515)
|
||||
ENDIF
|
||||
IDIRAC=-1
|
||||
C
|
||||
C KT2=KX+KX
|
||||
C WRITE(20,7777)' ENTRY POTENTIALS'
|
||||
C WRITE(20,7778)(U(I),I=1,KT2)
|
||||
C WRITE(20,7777)
|
||||
C WRITE(20,7778)(V(I),I=1,KT2)
|
||||
W1M1=(VFACT+SFACT)*0.5*HBARC2
|
||||
|
||||
DO 6100 M=1,Kx
|
||||
MK=M+M-1
|
||||
VVR=(U(MK )-FKX**2)/VFACT
|
||||
VVI= U(MK+1) /VFACT
|
||||
VSR= V(MK ) /SFACT
|
||||
VSI= V(MK+1) /SFACT
|
||||
U(MK )=U(MK )+V(MK ) +(VVR**2-VVI**2 - VSR**2+VSI**2)/HBARC2
|
||||
U(MK+1)=U(MK+1)+V(MK+1) +(VVR*VVI - VSR*VSI)*2.0/HBARC2
|
||||
T1 = W1M1 + VVR-VSR
|
||||
T2 = VVI-VSI
|
||||
V(MK )=0.5* LOG (T1**2 + T2**2)
|
||||
V(MK+1)=ATAN2(T2,T1)
|
||||
6100 CONTINUE
|
||||
C WRITE(20,7777)' SECOND POTENTIALS'
|
||||
C WRITE(20,7778)(U(I),I=1,KT2)
|
||||
C WRITE(20,7777)
|
||||
C WRITE(20,7778)(V(I),I=1,KT2)
|
||||
C
|
||||
R=FLOAT(KX+1)*DRX
|
||||
MK=KX+KX-1
|
||||
D2=V(MK )
|
||||
D1=D2
|
||||
A2=V(MK+1)
|
||||
A1=A2
|
||||
IBX=1
|
||||
DO 6150 M=2,KX
|
||||
MK=MK-2
|
||||
R=R-DRX
|
||||
D3=D2
|
||||
D2=D1
|
||||
D1=V(MK )
|
||||
A3=A2
|
||||
A2=A1
|
||||
A1=V(MK+1)
|
||||
C FIRST DERIVATIVE TERMS
|
||||
DPR=(D3-D1)/(2.0*DRX)
|
||||
DPI=(A3-A1)/(2.0*DRX)
|
||||
V(MK+2)=2.0*DPR/R
|
||||
V(MK+3)=2.0*DPI/R
|
||||
C SECOND DERIVATIVE TERMS
|
||||
DPPR=(D3+D1-2.0*D2)/DRX**2
|
||||
DPPI=(A3+A1-2.0*A2)/DRX**2
|
||||
UDR =0.5*DPPR-0.25*(DPR**2-DPI**2)+DPR/R
|
||||
UDI =0.5*DPPI-0.25*(2.0*DPR*DPI )+DPI/R
|
||||
C UD(MK+2)=UDR
|
||||
C UD(MK+3)=UDI
|
||||
U(MK+2)=U(MK+2)+UDR
|
||||
U(MK+3)=U(MK+3)+UDI
|
||||
6150 CONTINUE
|
||||
V(1 )=V(3 )*2.0
|
||||
V(2 )=V(4 )*2.0
|
||||
U(1 )=U(1 )+UDR
|
||||
U(2 )=U(2 )+UDI
|
||||
C WRITE(20,7777)'TERTIARY POTENTIALS'
|
||||
C WRITE(20,7777)'CENTRAL POTENTIAL'
|
||||
C WRITE(20,7778)(U(I),I=1,KT2)
|
||||
C WRITE(20,7777)'SPIN ORBIT POTENTIAL'
|
||||
C WRITE(20,7778)(V(I),I=1,KT2)
|
||||
C WRITE(20,7777)'UD - DARWIN TERM'
|
||||
C WRITE(20,7778)(UD(I),I=1,KT2)
|
||||
C 7777 FORMAT(A30)
|
||||
C 7778 FORMAT(' ',1P10E12.4)
|
||||
ENDIF
|
||||
C
|
||||
IF(IDIRAC.EQ.1) IDIRAC=0
|
||||
RETURN
|
||||
C
|
||||
9000 FORMAT(10F8.4)
|
||||
9100 FORMAT(5E16.7)
|
||||
9508 FORMAT(18X,9H NODES=,F9.4,9H L =,F9.4,9H 2*J =,F9.4
|
||||
1 ,9H 2*S =,F9.4,9H FISW =,F9.4)
|
||||
9509 FORMAT(A18,9H V RL =,F9.4,9H R0RL =,F9.4,9H A RL =,F9.4
|
||||
1 ,9H R RL =,F9.4,9H VSOR =,F9.4)
|
||||
9510 FORMAT(18X,9H V IM =,F9.4,9H R0IM =,F9.4,9H A IM =,F9.4
|
||||
1 ,9H R IM =,F9.4,9H VSOI =,F9.4,9H POWR =,F9.4)
|
||||
9512 FORMAT(18X,9H BETA1=,F9.4,9H LDFR1=,F9.4,9H BETA2=,F9.4
|
||||
1 ,9H LDFR2=,F9.4,9H BETA3=,F9.4,9H LDFR3=,F9.4)
|
||||
9515 FORMAT('0',20('*'),' WARNING, Mixing of Dirac and non-Dirac'
|
||||
1, ' potentials may be hazardous to your calculation'
|
||||
2, 20('*'))
|
||||
END
|
135
dwuck4/culib4/SLATER.FOR
Normal file
135
dwuck4/culib4/SLATER.FOR
Normal file
|
@ -0,0 +1,135 @@
|
|||
|
||||
SUBROUTINE SLATR (KT,KMAX,DRF,VB,MINL,FMU,ICODE)
|
||||
c
|
||||
c Calculates expansion of potentials for Cathen
|
||||
c
|
||||
DIMENSION VB(800)
|
||||
C
|
||||
C YUKAWA SLATER EXPANSION
|
||||
C
|
||||
R=0.0
|
||||
IF(ICODE.EQ.2) GO TO 101
|
||||
C
|
||||
C HANKEL FUNCTION*EXP(+FMU*R)
|
||||
C
|
||||
F1=1.0
|
||||
F2=EXP(-FMU*DRF)
|
||||
DO 100 M=1,KMAX
|
||||
R=R+DRF
|
||||
X=FMU*R
|
||||
F1=F1*F2
|
||||
AZ=(1.0-F1*F1)/(2.0*X)
|
||||
B2=1.0/X
|
||||
B1=B2*(1.0+B2)
|
||||
FL=-1.0
|
||||
DO 50 LL=1,MINL
|
||||
B3=FL*B2/X+B1
|
||||
B1=B2
|
||||
B2=B3
|
||||
FL=FL+2.0
|
||||
50 CONTINUE
|
||||
VB(M+KMAX)=B2
|
||||
C
|
||||
C BESSEL FUNCTION*EXP(-FMU*R)
|
||||
C
|
||||
MAX=2.0*X+10.0
|
||||
MAX=MAX0(MAX,MINL+5)
|
||||
A3=0.0
|
||||
A2=1.0
|
||||
FL=MAX+MAX+3
|
||||
DO 70 LL=1,MAX
|
||||
N=MAX+1-LL
|
||||
FL=FL-2.0
|
||||
A1=A3+FL*A2/X
|
||||
IF(N.LT.MINL) GO TO 69
|
||||
IF(ABS(A1).LT.1.0E+20) GO TO 69
|
||||
A1=A1*1.0E-20
|
||||
A2=A2*1.0E-20
|
||||
69 CONTINUE
|
||||
IF(N.EQ.MINL) TEMP=A1
|
||||
A3=A2
|
||||
A2=A1
|
||||
70 CONTINUE
|
||||
VB(M )=TEMP*AZ/A1
|
||||
100 CONTINUE
|
||||
RETURN
|
||||
C
|
||||
C COULOMB SLATER EXPANSION
|
||||
C
|
||||
101 CONTINUE
|
||||
FL=MINL+MINL-1
|
||||
DO 200 M=1,KMAX
|
||||
R=R+DRF
|
||||
A2=1.0
|
||||
DO 105 LL=1,MINL
|
||||
A2=A2*R
|
||||
105 CONTINUE
|
||||
VB(M )=A2/(R*FL)
|
||||
VB(M+KMAX)=1.0/A2
|
||||
200 CONTINUE
|
||||
RETURN
|
||||
END
|
||||
|
||||
SUBROUTINE RADIN(KT,KMAX,DRF,FMU,VB,UB,UC,SL,OPT,SI,KMT,SK)
|
||||
c
|
||||
c Calculates slater integrals for Cathen
|
||||
c
|
||||
DIMENSION UB(400),UC(400),VB(800),SI(800),DG(2)
|
||||
DATA XRHO/80./
|
||||
c FLOAT(III)=DFLOAT(III)
|
||||
C
|
||||
KM1=KMAX
|
||||
KM2=KMAX*2
|
||||
KM3=KMAX*3
|
||||
DG(1)=2.0*DRF/3.0
|
||||
DG(2)=2.0*DG(1)
|
||||
F0=EXP( FMU*DRF)
|
||||
MMAX=XRHO/FMU/DRF
|
||||
R2=0.0
|
||||
SUMA=0.0
|
||||
SUMB=0.0
|
||||
SUMC=0.0
|
||||
SUMD=0.0
|
||||
DO 200 M=1,KT
|
||||
MK=M+M-1
|
||||
R2=R2+DRF
|
||||
F2=EXP(-FLOAT(MIN0(MMAX,M)-1)*FMU*DRF)
|
||||
SLL=0.0
|
||||
MX=1
|
||||
R1=0.0
|
||||
DO 100 MM=1,KT
|
||||
R1=R1+DRF
|
||||
MX=3-MX
|
||||
if(iabs(m-mm).lt.mmax) then
|
||||
if(m.lt.mm) then
|
||||
F2=F2/F0
|
||||
TEMP=VB(M)*VB(MM+KM3)*F2
|
||||
elseif(m.gt.mm) then
|
||||
TEMP=VB(MM+KM2)*VB(M+KM1)*F2
|
||||
F2=F2*F0
|
||||
else
|
||||
TEMP=0.5*(VB(M)*VB(M+KM3)+VB(M+KM2)*VB(M+KM1))
|
||||
endif
|
||||
F1=DG(MX)*UB(MM)*UC(MM)*R1**2
|
||||
SLL=SLL+F1*TEMP
|
||||
endif
|
||||
100 CONTINUE
|
||||
SLL=SLL*OPT
|
||||
R22=R2**2
|
||||
IF(M.EQ.KMT) SK=SLL
|
||||
SI(MK)=SI(MK)+SLL
|
||||
SUMA=SUMA+UB(M)*UC(M)*R22
|
||||
SUMB=SUMB+UB(M)*UC(M)*R22**2
|
||||
SUMC=SUMC+SLL*R22
|
||||
SUMD=SUMD+SLL*R22**2
|
||||
200 CONTINUE
|
||||
SUMA=SUMA*DRF
|
||||
SUMB=SUMB*DRF
|
||||
SUMC=SUMC*DRF
|
||||
SUMD=SUMD*DRF
|
||||
SL=SUMC
|
||||
WRITE(6,9100)SUMA,SUMB,SUMC,SUMD
|
||||
RETURN
|
||||
9100 FORMAT(13H0 J0 =,F11.4,7H J1 =,F11.4,7H K0 =,F11.4
|
||||
1 ,7H K1 =,F11.4)
|
||||
END
|
249
dwuck4/culib8/ANGMOM.FOR
Normal file
249
dwuck4/culib8/ANGMOM.FOR
Normal file
|
@ -0,0 +1,249 @@
|
|||
c***********************************************************************
|
||||
FUNCTION VCC(JX1,JX2,JX3,MX1,MX2)
|
||||
c
|
||||
c Clebsch-Gordan Coefficient Routine
|
||||
c
|
||||
c***********************************************************************
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
c EXTERNAL FACTOR
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
C
|
||||
VCC=0.0
|
||||
J1=JX1
|
||||
J2=JX2
|
||||
J3=JX3
|
||||
M1=MX1
|
||||
M2=MX2
|
||||
IF(J1.LT.J2) GO TO 20
|
||||
IF(J3.LT.J2) GO TO 30
|
||||
ICNTR=0
|
||||
GO TO 40
|
||||
20 IF(J3.LT.J1) GO TO 30
|
||||
ICNTR=-1
|
||||
IT=J1
|
||||
J1=J2
|
||||
J2=IT
|
||||
IT=M1
|
||||
M1=M2
|
||||
M2=IT
|
||||
GO TO 40
|
||||
30 ICNTR=1
|
||||
IT=J2
|
||||
J2=J3
|
||||
J3=IT
|
||||
M2=-M1-M2
|
||||
40 CONTINUE
|
||||
JZ1=(J1+J2-J3)/2
|
||||
IF(JZ1.LT.0) GO TO 150
|
||||
JZ2=(J1+J3-J2)/2
|
||||
IF(JZ2.LT.0) GO TO 150
|
||||
JZ3=(J2+J3-J1)/2
|
||||
IF(JZ3.LT.0) GO TO 150
|
||||
IF(J1-IABS(M1).LT.0) GO TO 150
|
||||
IF(J2-IABS(M2).LT.0) GO TO 150
|
||||
IF(J3-IABS(M1+M2).LT.0) GO TO 150
|
||||
JT1=(J1-J3+M2)/2
|
||||
JT2=(J2-J3-M1)/2
|
||||
NUMIN=MAX0 (JT1,JT2,0)
|
||||
JT3=(J1-M1)/2
|
||||
JT4=(J2+M2)/2
|
||||
NUMAX=MIN0 (JT3,JT4,JZ1)
|
||||
JT5=(J2-M2)/2
|
||||
IF(NUMAX.LT.NUMIN) GO TO 150
|
||||
J4=J1/2
|
||||
J5=J3/2
|
||||
PHAS=PHASEF(NUMIN)
|
||||
DO 100 NU=NUMIN,NUMAX
|
||||
VCC=VCC+PHAS *(YXFCT(JT3-NU,J4)*YXFCT(NU-JT2,J5))
|
||||
1/(FACT(JT4-NU)*FACT(NU-JT1)*FACT(JZ1-NU)*FACT(NU))
|
||||
PHAS=-PHAS
|
||||
100 CONTINUE
|
||||
FCTOR=YXFCT(J4,(J1+M1)/2)*YXFCT(J4,JT3)*YXFCT((J1+J2+J3)/2+1,JZ2)*
|
||||
1YXFCT(J5,(J3+M1+M2)/2)*YXFCT(J5,(J3-M1-M2)/2)*FACT(JZ1)*FACT(JZ3)*
|
||||
2FACT(JT4)*FACT(JT5)*FLOAT(J3+1)
|
||||
VCC=SQRT(FCTOR)*VCC
|
||||
IF(ICNTR)120,150,110
|
||||
110 VCC=VCC*SQRT(FLOAT(J2+1)/FLOAT(J3+1))*PHASEF(JT3)
|
||||
GO TO 150
|
||||
120 VCC=VCC*PHASEF(JZ1)
|
||||
150 RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION PHASEF(N)
|
||||
c
|
||||
c Calculates (-1)**N
|
||||
c
|
||||
c***********************************************************************
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
PHASEF=FLOAT(1-2*IABS(N-2*(N/2)))
|
||||
RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION YXFCT(M,N)
|
||||
c
|
||||
C COMPUTES N_FACTORIAL/M_FACTORIAL
|
||||
c
|
||||
c***********************************************************************
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
YXFCT=1.0
|
||||
NUMAX=M-N
|
||||
IF(NUMAX)30,100,20
|
||||
20 ICTRL=0
|
||||
FCTOR=N
|
||||
GO TO 40
|
||||
30 ICTRL=1
|
||||
NUMAX=-NUMAX
|
||||
FCTOR=M
|
||||
40 CONTINUE
|
||||
DO 50 NU=1,NUMAX
|
||||
FCTOR=FCTOR+1.0
|
||||
YXFCT=YXFCT*FCTOR
|
||||
50 CONTINUE
|
||||
IF(ICTRL.EQ.0) YXFCT=1.0/YXFCT
|
||||
100 RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION RACAH(J1,J2,J3,J4,J5,J6)
|
||||
c
|
||||
c Calculates Racah coefficients
|
||||
c Spins are input as twice the spin
|
||||
c
|
||||
c***********************************************************************
|
||||
c
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
logical jy_big
|
||||
c
|
||||
c EXTERNAL FACTOR
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
c
|
||||
RACAH=0.0
|
||||
Z1=DELR(J1,J2,J5)
|
||||
IF(Z1.EQ.0.0) GO TO 90
|
||||
Z1=DELR(J3,J4,J5)*Z1
|
||||
IF(Z1.EQ.0.0) GO TO 90
|
||||
Z2=DELR(J1,J3,J6)
|
||||
IF(Z2.EQ.0.0) GO TO 90
|
||||
Z2=DELR(J2,J4,J6)*Z2
|
||||
IF(Z2.EQ.0.0) GO TO 90
|
||||
Z1=SQRT(Z1/Z2)*Z2
|
||||
JT1=(J1+J2+J5)/2
|
||||
JT2=(J3+J4+J5)/2
|
||||
JT3=(J1+J3+J6)/2
|
||||
JT4=(J2+J4+J6)/2
|
||||
JZ1=(J1+J2+J3+J4)/2
|
||||
JZ2=(J1+J4+J5+J6)/2
|
||||
JZ3=(J2+J3+J5+J6)/2
|
||||
c
|
||||
NUMIN=MAX0 (JT1,JT2,JT3,JT4)
|
||||
NUMAX=MIN0 (JZ1,JZ2,JZ3)
|
||||
IF(NUMAX.ge.NUMIN) then
|
||||
if(NUMIN-JT4 .gt. JZ1-NUMIN) then
|
||||
jy_big = .true.
|
||||
else
|
||||
jy_big = .false.
|
||||
endif
|
||||
PHASE=PHASEF(NUMIN+JZ1)*Z1
|
||||
DO 80 NU=NUMIN,NUMAX
|
||||
JY1=NU-JT1
|
||||
JY2=NU-JT2
|
||||
JY3=NU-JT3
|
||||
JY4=NU-JT4
|
||||
JY5=JZ1-NU
|
||||
JY6=JZ2-NU
|
||||
JY7=JZ3-NU
|
||||
if(jy_big) then
|
||||
FACTR = YXFCT(JY4,NU+1)/FACT(JY5)
|
||||
else
|
||||
FACTR = YXFCT(JY5,NU+1)/FACT(JY4)
|
||||
endif
|
||||
RACAH=RACAH+PHASE*FACTR
|
||||
1 /(FACT(JY1)*FACT(JY2)*FACT(JY3)*FACT(JY6)*FACT(JY7))
|
||||
PHASE=-PHASE
|
||||
80 CONTINUE
|
||||
endif
|
||||
90 RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION DELR(J1,J2,J3)
|
||||
c
|
||||
c Triangular function
|
||||
c Used by Racah Function
|
||||
c
|
||||
c***********************************************************************
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
EXTERNAL FACTOR
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
c
|
||||
JZ1=(J1+J2-J3)/2
|
||||
IF(JZ1.LT.0) GO TO 130
|
||||
JZ2=(J1-J2+J3)/2
|
||||
IF(JZ2.LT.0) GO TO 130
|
||||
JZ3=(J2+J3-J1)/2
|
||||
IF(JZ3.LT.0) GO TO 130
|
||||
JZ4=(J1+J2+J3)/2+1
|
||||
IF(JZ3.LT.JZ2) GO TO 80
|
||||
IF(JZ3.LT.JZ1) GO TO 70
|
||||
DELR=YXFCT(JZ4,JZ3)*FACT(JZ1)*FACT(JZ2)
|
||||
RETURN
|
||||
70 DELR=YXFCT(JZ4,JZ1)*FACT(JZ2)*FACT(JZ3)
|
||||
RETURN
|
||||
80 IF(JZ2.LT.JZ1) GO TO 70
|
||||
DELR=YXFCT(JZ4,JZ2)*FACT(JZ1)*FACT(JZ3)
|
||||
RETURN
|
||||
130 DELR=0.0
|
||||
RETURN
|
||||
END
|
||||
|
||||
c***********************************************************************
|
||||
FUNCTION WINEJ(J1,J2,J3,J4,J5,J6,J7,J8,J9)
|
||||
c
|
||||
c NineJ Symbol Function
|
||||
c
|
||||
c***********************************************************************
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
WINEJ=0.0
|
||||
MUMIN=MAX0(IABS(J1-J9),IABS(J2-J6),IABS(J4-J8))
|
||||
MUMAX=MIN0(J1+J9,J2+J6,J4+J8)
|
||||
IF(MUMAX.LT.MUMIN) GO TO 40
|
||||
DO 20 MU=MUMIN,MUMAX,2
|
||||
PROD=RACAH(J1,J4,J9,J8,J7,MU)*RACAH(J2,J5,MU,J4,J8,J6)*
|
||||
1 RACAH(J9,MU,J3,J2,J1,J6)*FLOAT(MU+1)
|
||||
WINEJ=WINEJ+PROD
|
||||
20 CONTINUE
|
||||
WINEJ=WINEJ*PHASEF((J1+J3+J5+J8)/2+J2+J4+J9)
|
||||
40 RETURN
|
||||
END
|
||||
|
||||
BLOCK DATA FACTOR
|
||||
c
|
||||
c Factorial table
|
||||
c
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
COMMON/FACTRL/FACT(0:32)
|
||||
C
|
||||
DATA FACT/ 1.0000000000E+00, 1.0000000000E+00, 2.0000000000E+00
|
||||
1 , 6.0000000000E+00, 2.4000000000E+01, 1.2000000000E+02
|
||||
2 , 7.2000000000E+02, 5.0400000000E+03, 4.0320000000E+04
|
||||
3 , 3.6288000000E+05, 3.6288000000E+06, 3.9916800000E+07
|
||||
4 , 4.7900160000E+08, 6.2270208000E+09, 8.7178291200E+10
|
||||
5 , 1.3076743680E+12, 2.0922789888E+13, 3.5568742810E+14
|
||||
6 , 6.4023737057E+15, 1.2164510041E+17, 2.4329020082E+18
|
||||
7 , 5.1090942172E+19, 1.1240007278E+21, 2.5852016739E+22
|
||||
8 , 6.2044840173E+23, 1.5511210043E+25, 4.0329146113E+26
|
||||
9 , 1.0888869450E+28, 3.0488834461E+29, 8.8417619937E+30
|
||||
$ , 2.6525285981E+32, 8.2228386542E+33, 2.6313083693E+35/
|
||||
C $ , 8.6833176188D+36, 2.9523279904D+38, 1.0333147966D+40
|
||||
C $ , 3.7199332679D+41, 1.3763753091D+43, 5.2302261747D+44
|
||||
C $ , 2.0397882081D+46, 8.1591528325D+47, 3.3452526613D+49
|
||||
C $ , 1.4050061178D+51, 6.0415263063D+52, 2.6582715748D+54
|
||||
C $ , 1.1962222087D+56, 5.5026221598D+57, 2.5862324151D+59
|
||||
C $ , 1.2413915593D+61, 6.0828186403D+62, 3.0414093202D+64
|
||||
C $ , 1.5511187533D+66/
|
||||
END
|
443
dwuck4/culib8/BIND.FOR
Normal file
443
dwuck4/culib8/BIND.FOR
Normal file
|
@ -0,0 +1,443 @@
|
|||
SUBROUTINE BIND(U,F,DR,RM,FNODE,FL,Kin,FK,ETA,V,E,FK2,ISW,IERR,D)
|
||||
C
|
||||
C U = POTENTIAL STORAGE
|
||||
C ODD = - SCALED PART OF V *(2M/HBAR**2)
|
||||
C EVEN = (ENERGY - NON SCALED PART OF V)*(2M/HBAR**2)
|
||||
C F = OUTPUTTED WAVE FUNCTION
|
||||
C DR = RADIAL INCREMENT
|
||||
C RM = MATCHING RADIUS, INPUT IS DEFAULT, OUTPUT IS VALUE USED
|
||||
C FNODE = NO. NODES IN WAVE FCT., EXCLUDING ORIGIN AND INFINITY
|
||||
C FL = ORBITAL ANGULAR MOMENTUM
|
||||
C Kin = MAX NO. OF POINTS + 2048*(MIN POINT)
|
||||
C FK = |WAVE NUMBER| E.G. SIN(FK*R) OR EXP(-FK*R)
|
||||
C ETA = COULOMB PARAMETER
|
||||
C V = SCALE FACTOR FOR ODD POTENTIAL VALUES
|
||||
C E = ENERGY
|
||||
C FK2 = E*(2*M/HBAR**2)
|
||||
C ISW = SEARCH SWITCH
|
||||
C 0 = SEARCH ON V
|
||||
C 1 = SEARCH ON E
|
||||
C 2 = NO SEARCH, FOR E>0 ONLY (PHASE SHIFT IS CALCULATED)
|
||||
C 3 = Search on V, box b.c.
|
||||
C 4 = Search on E. box b.c.
|
||||
C IERR = ERROR FLAG, IS SET IF ERROR OCCURS
|
||||
C D = LAST POINT DATA FOR UNBOUND STRIPPING
|
||||
C D(1),D(2) ARE REAL AND IMAG PARTS OF EXP(2I*DELTA)
|
||||
C D(3),D(4) ARE GL(RMAX) AND FL(RMAX)
|
||||
C D(5),D(6) are real and imaginary K**2
|
||||
C D(10) is ISW
|
||||
C
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
c
|
||||
parameter (Pi = 3.141592654)
|
||||
logical dplus,dminus,turnpt
|
||||
CHARACTER*2 A
|
||||
DIMENSION U(800),F(400),T(8),D(10)
|
||||
common /ch3files/input,ioutp
|
||||
DATA ICMAX/32/
|
||||
DATA DLAMY,DETX,dinterp,dlammax/.001,.01,0.1,0.3/
|
||||
DATA XFACT, ELOG10, ONE/0.707, 2.302585, 1.0/
|
||||
C
|
||||
C CHANGES TO ALLOW INTEGRATION OF HARD CORE POTENTIALS
|
||||
C THEY ARE KLUDGED TO ALLOW BACKWARD COMPATIBILITY
|
||||
C Kmin is initial point for hard core
|
||||
C
|
||||
if(ioutp .eq. 0) then
|
||||
ioutput = 6
|
||||
else
|
||||
ioutput = ioutp
|
||||
endif
|
||||
Kmin = Kin/2048
|
||||
Kmax = Kin-Kmin*2048
|
||||
Kmin=Kmin+1
|
||||
C
|
||||
CFACT=1.0
|
||||
dv=0.225*v
|
||||
v0=0.0
|
||||
v1=0.0
|
||||
d0 =-1.0e20
|
||||
d1 = 1.0e20
|
||||
dplus =.false.
|
||||
dminus=.false.
|
||||
IXNT=0
|
||||
IPRNT=0
|
||||
IF(IERR.LT.0) IPRNT=1
|
||||
IERR=0
|
||||
ICNT=ICMAX
|
||||
IF(ISW.EQ.2) ICNT=0
|
||||
FLP=FL*(FL+1.0)
|
||||
DR2=DR**2/12.0
|
||||
LL=FL+1.0
|
||||
ITER=0
|
||||
C
|
||||
C CALCULATE OUTER BOUNDARY CONDITION
|
||||
C
|
||||
10 CONTINUE
|
||||
RMAX=DR*FLOAT(Kmax)
|
||||
IF(FK2.GT.0.0) THEN
|
||||
C POSITIVE ENERGY BOUNDARY CONDITION
|
||||
IF(ISW.EQ.0.OR.ISW.EQ.1.OR.ISW.EQ.2) THEN
|
||||
c
|
||||
c get functions at Rmax - dr and Rmax
|
||||
c
|
||||
M=MAX0(LL+1,3)
|
||||
T(2)=FK*RMAX
|
||||
T(1)=T(2)-FK*DR
|
||||
CALL COU(T(1),T(2),ETA,M ,DR,F( 1),F(21),F(41),F(61),F(81))
|
||||
SCALE=ABS(F(LL+60))
|
||||
T(8)=F(LL+60)/SCALE
|
||||
T(7)=F(LL+40)/SCALE
|
||||
T(6)=F(LL+20)/SCALE
|
||||
T(5)=F(LL )/SCALE
|
||||
D(4)=F(LL+20)
|
||||
D(3)=F(LL+60)
|
||||
c
|
||||
c Calculate surface term for width
|
||||
c
|
||||
c calculate Surf = d(k*u'/u)/dk = (u'/u) +kR*[(u''/u) - (u'/u)**2]
|
||||
c
|
||||
c Ratio = (u'/u)
|
||||
c
|
||||
Ratio = (((FL+1.0)**2 + ETA)/t(2)
|
||||
1 - sqrt((FL+1.0)**2 + ETA**2)*F(LL+61)/F(LL+60))/(FL+1.0)
|
||||
Surf = ( (1. - T(2)*Ratio)*Ratio
|
||||
1 -T(2)*(1.0 - FL*(FL+1.0)/T(2)**2 - 2.0*ETA/T(2)))/(2.0*fk)
|
||||
c
|
||||
c write(ioutput,'(a,1p4e12.4)')' Surf =',Surf
|
||||
c
|
||||
ELSEIF(ISW.EQ.3.OR.ISW.EQ.4) THEN
|
||||
T(8)=0.0
|
||||
T(7)=1.0E-15
|
||||
SCALE=1.0
|
||||
ELSE
|
||||
IERR=1
|
||||
WRITE(ioutput,'(''0Illegal FISW parameter, ='',i3)')isw
|
||||
RETURN
|
||||
C
|
||||
ENDIF
|
||||
ELSE
|
||||
C NEGATIVE ENERGY BOUNDARY CONDITION
|
||||
IF(ISW.EQ.0.OR.ISW.EQ.1) THEN
|
||||
T(8)=1.0E-15
|
||||
T(7)=T(8)*EXP(FK*DR+ETA* LOG(1.0+DR/RMAX))
|
||||
SCALE=1.0
|
||||
C BOX BOUNDARY CONDITIONS
|
||||
ELSEIF(ISW.EQ.3.OR.ISW.EQ.4) THEN
|
||||
T(8)=0.0
|
||||
T(7)=1.0E-15
|
||||
SCALE=1.0
|
||||
ENDIF
|
||||
ENDIF
|
||||
40 CONTINUE
|
||||
width = 0.0
|
||||
fnorm0 = 0.5*t(8)**2 + t(7)**2
|
||||
F(Kmax )=T(8)
|
||||
F(Kmax-1)=T(7)
|
||||
RMAX=RMAX-DR
|
||||
K1 = Kmax-2
|
||||
turnpt=.true.
|
||||
KM=Kmax
|
||||
C
|
||||
C INTEGRATE FROM INFINITY TO TURNING POINT
|
||||
C
|
||||
50 continue
|
||||
R=RMAX
|
||||
FNCT=0.0
|
||||
IF(ISW.NE.2) THEN
|
||||
G5=U(2*Kmax-4)-FLP/R**2
|
||||
IF(G5.LT.0.0) THEN
|
||||
IFLAG=1
|
||||
ELSE
|
||||
IFLAG=0
|
||||
ENDIF
|
||||
Q6=1.0+DR2*(U(2*Kmax-2)-FLP/(R+DR)**2)
|
||||
Q5=1.0+DR2*G5
|
||||
F6=T(8)
|
||||
F5=T(7)
|
||||
W2=0.0
|
||||
FNORM2=fnorm0
|
||||
C
|
||||
DO 100 M=K1,Kmin,-1
|
||||
MM = M
|
||||
MK=2*M-1
|
||||
R=R-DR
|
||||
G4=U(MK+1)+V*U(MK )-FLP/R**2
|
||||
Q4=1.0+DR2*G4
|
||||
F4=((12.0-10.0*Q5)*F5-Q6*F6)/Q4
|
||||
Q6=Q5
|
||||
Q5=Q4
|
||||
G6=G5
|
||||
G5=G4
|
||||
if(f6*f5.lt.0.0) fnct=fnct+1.0
|
||||
F6=F5
|
||||
F5=F4
|
||||
F(M)=F4
|
||||
IF(G6*G5.LT.0.0) IFLAG=IFLAG+1
|
||||
if((.not.turnpt.and.f5.lt.f6).or.IFLAG.GE.2) GO TO 110
|
||||
FNORM2=FNORM2+F5**2
|
||||
W2=W2+U(MK+2)*F5**2
|
||||
100 CONTINUE
|
||||
C
|
||||
C If no classical turning point is found, then find first maximum,
|
||||
C then if none, use external matching radius.
|
||||
C
|
||||
if(turnpt) then
|
||||
turnpt=.false.
|
||||
go to 50
|
||||
else
|
||||
MM = INT(RM/DR)
|
||||
endif
|
||||
105 continue
|
||||
F5=F(MM )
|
||||
F6=F(MM+1)
|
||||
110 CONTINUE
|
||||
C
|
||||
C INTEGRATE FROM ORIGIN TO TURNING POINT
|
||||
C
|
||||
if(isw.lt.2) fnct = 0.0
|
||||
KM=MM+1
|
||||
120 CONTINUE
|
||||
ENDIF
|
||||
c End of (Isw ne. 2)
|
||||
KS=FL/3.3+2.0
|
||||
W1=0.0
|
||||
FNORM1=0.0
|
||||
F2=0.0
|
||||
Q2=0.0
|
||||
R =0.0
|
||||
C
|
||||
DO 200 M=Kmin,KM
|
||||
MK=M+M-1
|
||||
R=R+DR
|
||||
Q3=1.0+DR2*(U(MK+1)+V*U(MK )-FLP/R**2)
|
||||
IF(M.GT.KS) THEN
|
||||
F3=((12.0-10.0*Q2)*F2-Q1*F1)/Q3
|
||||
ELSE
|
||||
F3=R**LL
|
||||
ENDIF
|
||||
Q1=Q2
|
||||
Q2=Q3
|
||||
F1=F2
|
||||
F2=F3
|
||||
IF(ICNT.EQ.0) F(M)=F3
|
||||
FNORM1=FNORM1+F1**2
|
||||
W1=W1+U(MK)*F1**2
|
||||
C NODE COUNT
|
||||
IF(F1*F2.LT.0.0) FNCT=FNCT+1.0
|
||||
200 CONTINUE
|
||||
F12=(F1+F2)*0.5
|
||||
IF(F1*F2.lt.0.0.and.F12*F2.lt.0.0) FNCT=FNCT-1.0
|
||||
C
|
||||
FN=FNODE-FNCT
|
||||
IF(ISW.EQ.2) GO TO 500
|
||||
F56=(F5+F6)*0.5
|
||||
DET=(F1*F6-F5*F2)/(F12*F56*DR)
|
||||
FNORM1=FNORM1/F2**2
|
||||
FNORM2=FNORM2/F6**2
|
||||
FNORM=FNORM1+FNORM2
|
||||
ITER=ITER+1
|
||||
IF(ICNT.EQ.0) GO TO 500
|
||||
ICNT=ICNT-1
|
||||
IF(ICNT.EQ.0) THEN
|
||||
WRITE(ioutput,'(''0BOUND STATE SEARCH FAILS IN'',I3,
|
||||
1 '' ITERATIONS'')')ICMAX
|
||||
IERR=1
|
||||
ENDIF
|
||||
IF(ICNT.EQ.18) CFACT=CFACT*XFACT
|
||||
IF(ICNT.EQ.12) CFACT=CFACT*XFACT
|
||||
RM=(FLOAT(KM)-0.5)*DR
|
||||
IF((ISW.EQ.3.OR.ISW.EQ.4).AND.E.GT.0.0) THEN
|
||||
RSCALE=RMAX
|
||||
ELSE
|
||||
RSCALE=RM*1.5
|
||||
ENDIF
|
||||
ESCALE= ABS(((fnode+1.0)*3.0+fl)/(FK2*RSCALE**2))
|
||||
DLAMX =DLAMY*ESCALE
|
||||
vold=v
|
||||
eold=e
|
||||
IF(ISW.EQ.0.OR.ISW.EQ.3) THEN
|
||||
C
|
||||
C CHOOSE NEXT GUESS FOR WELL DEPTH
|
||||
C
|
||||
IF(FN.NE.0.0) THEN
|
||||
c Node count incorrect
|
||||
c dlam= 1.625*cfact*fn*escale
|
||||
dlam= (cfact*((fnode+0.5*fl+0.5)**2
|
||||
1 - (fnct+0.5*fl+0.5)**2) )
|
||||
if(dlam.lt.-abs(dv/v)) then
|
||||
dlam = abs(dv/v)*sign(one,dlam)
|
||||
else
|
||||
dlam = min(dlam,dlammax*sign(one,dlam))
|
||||
endif
|
||||
a='Vn'
|
||||
ELSE
|
||||
if(det.gt.0.0) then
|
||||
dplus =.true.
|
||||
if(det.lt.d1) then
|
||||
v1=v
|
||||
d1=det
|
||||
endif
|
||||
else
|
||||
dminus=.true.
|
||||
if(det.gt.d0) then
|
||||
v0=v
|
||||
d0=det
|
||||
endif
|
||||
endif
|
||||
IF(dplus.and.dminus.and.abs(det).gt.dinterp) THEN
|
||||
c Interpolation search
|
||||
if(abs(d1/d0).gt.5.0 .or. abs(d1/d0).lt.0.2) then
|
||||
DLAM = (v0+v1)/(2.0*v) - 1.0
|
||||
else
|
||||
DLAM = ((d1*v0-d0*v1)/((d1-d0)*v) - 1.0)
|
||||
endif
|
||||
a='Vi'
|
||||
ELSE
|
||||
c Variational search
|
||||
DLAM= -DET/(V*DR*(W1/F12**2+W2/F56**2))
|
||||
IF(ABS(DLAM).GT.dlammax) DLAM=SIGN(dlammax,DLAM)
|
||||
a='Vv'
|
||||
ENDIF
|
||||
IXNT=IXNT+1
|
||||
ENDIF
|
||||
flam=1.0+dlam
|
||||
V=V*FLAM
|
||||
DLAMX=DLAMY
|
||||
C
|
||||
C CHOOSE NEXT GUESS FOR BINDING ENERGY
|
||||
C
|
||||
ELSEIF(ISW.EQ.1.OR.ISW.EQ.4) THEN
|
||||
IF(FN.NE.0.0) THEN
|
||||
c Node count incorrect
|
||||
c DLAM= 1.625*cfact*fn*sign(escale,e)
|
||||
DLAM= -0.75*cfact*((fnct +0.5*fl+0.5)**2
|
||||
1 -(fnode+0.5*fl+0.5)**2)*(3.2/rscale)**2/fk2
|
||||
a='En'
|
||||
ELSE
|
||||
if(det.gt.0.0) then
|
||||
dplus =.true.
|
||||
if(det.lt.d1) then
|
||||
v1=e
|
||||
d1=det
|
||||
endif
|
||||
else
|
||||
dminus=.true.
|
||||
if(det.gt.d0) then
|
||||
v0=e
|
||||
d0=det
|
||||
endif
|
||||
endif
|
||||
IF(dplus.and.dminus.and.abs(det).gt.dinterp) THEN
|
||||
c Interpolation search
|
||||
DLAM= ((d1*v0-d0*v1)/((d1-d0)*e) - 1.0)
|
||||
a='Ei'
|
||||
ELSE
|
||||
c Variational search
|
||||
DLAM= -cfact*DET/(DR*FK2*FNORM)
|
||||
a='Ev'
|
||||
IF(ABS(DLAM).GT.ESCALE) DLAM = SIGN(ESCALE,DLAM)
|
||||
ENDIF
|
||||
ENDIF
|
||||
FLAM=1.0+DLAM
|
||||
TEMP=SQRT(ABS(FLAM))
|
||||
FK=FK*TEMP
|
||||
ETA=ETA/TEMP
|
||||
TEMP=FK2*FLAM-FK2
|
||||
FK2=FK2+TEMP
|
||||
E=E*FLAM
|
||||
DO 485 M=1,Kmax
|
||||
MK=M+M-1
|
||||
U(MK+1)=U(MK+1)+TEMP
|
||||
485 CONTINUE
|
||||
ENDIF
|
||||
c diagnostic printout
|
||||
c if(icnt+1.eq.icmax) write(ioutput,8888)
|
||||
c 8888 format(' Iter',' Nodes',5x,' Det',9x,'Fnorm',9x,'Old E'
|
||||
c 1, 9x,'New E',9x,'Old V',9x,'New V',9x,' Flam',9x,' RM')
|
||||
c WRITE(ioutput,8889)A,ITER,FNCT,DET,FNORM,eold,E
|
||||
c 1 ,vold,V,1.0+DLAM,rm
|
||||
c 8889 FORMAT(' ',A2,I6,F6.0,8(2X,1PE12.5))
|
||||
c
|
||||
IF(ABS(DET).LT.DETX .AND. ABS(DLAM).LT.DLAMX) THEN
|
||||
ICNT=0
|
||||
ENDIF
|
||||
GO TO 10
|
||||
C
|
||||
500 CONTINUE
|
||||
C
|
||||
C NORMALIZE WAVE FUNCTION
|
||||
C
|
||||
IF(FK2.LT.0.0.OR.ISW.EQ.3.OR.ISW.EQ.4) THEN
|
||||
C
|
||||
C NEGATIVE ENERGY AND BOX B.C.
|
||||
C
|
||||
FNORM=SQRT(FNORM*DR)
|
||||
ELSEIF(FK.GT.0.0.AND.(ISW.EQ.0.OR.ISW.EQ.1)) THEN
|
||||
C POSITIVE ENERGY AND PI/2 PHASE SHIFT
|
||||
C
|
||||
D(1)=0.0
|
||||
D(2)=1.0
|
||||
VOL=(FNORM1+FNORM2)*DR*F6**2
|
||||
c Volume and surface terms are still divided by SCALE**2
|
||||
WIDTH=2.0*E/(FK*(VOL+SURF))
|
||||
IF(WIDTH.LT.0.0) then
|
||||
WRITE(ioutput,'(''0 Negative width '',20(1H*)/)')
|
||||
endif
|
||||
WIDTH=ABS(WIDTH)
|
||||
TEMP=( LOG(WIDTH)-2.0* LOG(SCALE))/ELOG10
|
||||
I1=TEMP-1.0
|
||||
A1=EXP(ELOG10*(TEMP-FLOAT(I1)))
|
||||
WRITE(ioutput,9502)A1,I1,VOL*SCALE**2,SURF*SCALE**2
|
||||
FNORM=1.0/SQRT(WIDTH*FK/(2.0*E))/F6
|
||||
C
|
||||
ELSEIF(FK.GT.0.0.AND.ISW.EQ.2) THEN
|
||||
C
|
||||
C FIND B.C. FOR E > 0 AND NO SEARCH (ISW = 2)
|
||||
C
|
||||
DET=T(5)*T(8)-T(6)*T(7)
|
||||
A1=(F1 *T(8)-F2 *T(7))/DET
|
||||
B1=(T(5)*F2 -T(6)*F1 )/DET
|
||||
DET=1.0/SQRT(A1**2+B1**2)
|
||||
A1=A1*DET
|
||||
B1=B1*DET
|
||||
C A1=COS(DELTA), B1=SIN(DELTA)
|
||||
C (D1,D2) = (exp(2i*delta) - 1)/(2i) = exp(i*delta)*sin(delta)
|
||||
WRITE(ioutput,9501)A1,B1
|
||||
D(1)=B1*A1
|
||||
D(2)=B1*B1
|
||||
FNORM=FK/SCALE
|
||||
F2=1.0/DET
|
||||
F6=1.0
|
||||
DET=0.0
|
||||
ENDIF
|
||||
C
|
||||
TEMP=1.0/(F2*FNORM)
|
||||
R=0.0
|
||||
DO 510 M=1,KM
|
||||
R=R+DR
|
||||
F(M)=F(M)*TEMP/R
|
||||
510 CONTINUE
|
||||
IF(KM.LT.Kmax) THEN
|
||||
KM=KM+1
|
||||
TEMP=1.0/(F6*FNORM)
|
||||
DO 520 M=KM,Kmax
|
||||
R=R+DR
|
||||
F(M)=F(M)*TEMP/R
|
||||
520 CONTINUE
|
||||
ENDIF
|
||||
IF(IPRNT.EQ.0.OR.IERR.NE.0) then
|
||||
WRITE(ioutput,9500)V,DET,FNCT,RM,E,ITER
|
||||
endif
|
||||
c
|
||||
D(5) = fk2
|
||||
D(6) = (fk2/e)*width/2.0/scale**2
|
||||
D(10)=ISW
|
||||
c
|
||||
RETURN
|
||||
c
|
||||
9500 FORMAT(21X,6HV =,F9.4,3X,6HDET =,F9.4,3X,6HNODES=,F9.4,3X,
|
||||
1 6HRM =,F9.4,3X,6HE =,F9.4,3X,6HITER.=,I4 )
|
||||
9501 FORMAT(21X,6HCOSD =,1pe12.4,12x,9H SIND =,1pe12.4)
|
||||
9502 FORMAT(24H0SINGLE PARTICLE WIDTH = ,F7.4,1HE,I3,' MEV '
|
||||
1,13HVOLUME TERM = ,1PE12.4,5X,14HSURFACE TERM = ,1PE12.4)
|
||||
END
|
201
dwuck4/culib8/COU.FOR
Normal file
201
dwuck4/culib8/COU.FOR
Normal file
|
@ -0,0 +1,201 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE COU(R,RP,ETA,L,H,F,FP,G,GP,S)
|
||||
c
|
||||
c Coulomb Function Subroutine
|
||||
c
|
||||
c Calculates the functions at 2 points, R and RP for convenience
|
||||
c in matching to the output of some integration formulae.
|
||||
c
|
||||
c R First argument
|
||||
c RP Second argument
|
||||
c E Coulomb parameter, eta
|
||||
c L Number of angular momenta = lmax+1
|
||||
c H Integration step size, usually = 0.10
|
||||
c F Regular function at R
|
||||
c FP Regular function at RP
|
||||
c G Irregular function at R
|
||||
c GP Irregular function at RP
|
||||
c S Coulomb phase
|
||||
c
|
||||
c***********************************************************************
|
||||
c
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
DIMENSION F(51),FP(51),G(51),GP(51),S(51)
|
||||
C
|
||||
LL=L
|
||||
IF(LL.LT.50) THEN
|
||||
ELP=50.
|
||||
J=50
|
||||
ELSE
|
||||
ELP=LL
|
||||
J=LL
|
||||
ENDIF
|
||||
A=ATAN (ETA/ELP)
|
||||
B=SQRT (ETA**2+ELP**2)
|
||||
Y=A*(ELP-0.5)+ETA*( LOG(B)-1.)-SIN (A)/(12.*B)
|
||||
1 +SIN (3.*A)/(360.*B**3)-SIN (5.*A)/(1260.*B**5)
|
||||
2 +SIN (7.*A)/(1680.*B**7)-SIN (9.*A)/(1188.*B**9)
|
||||
C
|
||||
K=J-1
|
||||
DO 100 I=1,K
|
||||
IF(J.LE.LL) S(J)=Y
|
||||
ELP=ELP-1.
|
||||
J=J-1
|
||||
Y=Y-ATAN (ETA/ELP)
|
||||
100 CONTINUE
|
||||
S(1)=Y
|
||||
DEL1=R-2.0*ETA
|
||||
RMAX=.41666667*(ETA**2+4.*ETA+3.)
|
||||
IF(RMAX.LT.10.0) RMAX=10.0
|
||||
DEL=R-RMAX
|
||||
IF(ETA.GE.5.0.AND.ABS (DEL1).LT.ABS (DEL)) THEN
|
||||
DEL=DEL1
|
||||
I1=2
|
||||
C Transition line expansion
|
||||
X=2.0*ETA
|
||||
T1=ETA**2
|
||||
T2=T1**2
|
||||
T3=ETA** .666666667
|
||||
T4=T3**2
|
||||
T5=T4**2
|
||||
T6=T3*T5
|
||||
T7=T4*T6
|
||||
T8=T3*T7
|
||||
T9=ETA** .166666667
|
||||
Y=1.22340402*T9*(1.+.495957017E-1/T4-.888888889E-2/T1
|
||||
1 +.245519918E-2/T6-.910895806E-3/T2+.845362E-3/T8)
|
||||
Z=-.707881773/T9*(1.-.172826039/T3+.317460317E-3/T1
|
||||
1 -.358121485E-2/T5+.311782468E-3/T2-.907396643E-3/T7)
|
||||
ELSE
|
||||
C
|
||||
IF(DEL.GE.0.0.OR.ETA.EQ.0.0) THEN
|
||||
X=R
|
||||
I1=1
|
||||
ELSE
|
||||
X=RMAX
|
||||
I1=2
|
||||
ENDIF
|
||||
C Asymptotic expansion
|
||||
T1=ETA**2
|
||||
T2=2.*X
|
||||
T4=ETA/T2
|
||||
SS=1.
|
||||
TS=0.
|
||||
SL=0.
|
||||
TL=1.-ETA/X
|
||||
SSS=1.
|
||||
STS=0.
|
||||
SSL=0.
|
||||
STL=TL
|
||||
EN=0.
|
||||
DO 700 K=1,25
|
||||
IF(ABS (SS/SSS).GT.1.0E-10) THEN
|
||||
T5=EN+1.
|
||||
T6=T5+EN
|
||||
T7=EN*T5
|
||||
T8=T6*T4/T5
|
||||
T9=(T1-T7)/(T2*T5)
|
||||
T5=T8*SS-T9*TS
|
||||
TS=T8*TS+T9*SS
|
||||
SS=T5
|
||||
T5=T8*SL-T9*TL-SS/X
|
||||
TL=T8*TL+T9*SL-TS/X
|
||||
SL=T5
|
||||
SSS=SSS+SS
|
||||
STS=STS+TS
|
||||
SSL=SSL+SL
|
||||
STL=STL+TL
|
||||
EN=EN+1.
|
||||
ENDIF
|
||||
700 CONTINUE
|
||||
C
|
||||
T3=X-ETA* LOG(T2)+S(1)
|
||||
T8=SIN (T3)
|
||||
T9=COS (T3)
|
||||
Y=SSS*T9-STS*T8
|
||||
Z=SSL*T9-STL*T8
|
||||
ENDIF
|
||||
C
|
||||
DO 810 I=1,I1
|
||||
IF(I.EQ.I1) THEN
|
||||
G(1) = Y
|
||||
W = Z
|
||||
DEL = RP - R
|
||||
ENDIF
|
||||
C Runge-Kutta integration
|
||||
N=ABS (DEL/H)+1.0
|
||||
DX=DEL/FLOAT(N)
|
||||
T1=DX/2.
|
||||
T2=DX/8.
|
||||
T3=2.0*ETA
|
||||
DO 805 J=1,N
|
||||
T4=DX*(T3/X-1.)*Y
|
||||
X=X+T1
|
||||
T5=DX*(T3/X-1.)*(Y+T1*Z+T2*T4)
|
||||
X=X+T1
|
||||
T6=DX*(T3/X-1.)*(Y+DX*Z+T1*T5)
|
||||
Y=Y+DX*(Z+(T4+2.*T5)/6.)
|
||||
Z=Z+(T4+4.*T5+T6)/6.
|
||||
805 CONTINUE
|
||||
810 CONTINUE
|
||||
GP(1)=Y
|
||||
C
|
||||
T1=ETA**2
|
||||
T8=SQRT (1.+T1)
|
||||
G(2)=((1./R+ETA)*G(1)-W)/T8
|
||||
GP(2)=((1./RP+ETA)*Y-Z)/T8
|
||||
T2=1.
|
||||
T3=2.
|
||||
C Recur irregular function upwards
|
||||
DO 910 I=3,LL
|
||||
T4=T2+T3
|
||||
T5=T2*T3
|
||||
T6=T3*SQRT (T2**2+T1)
|
||||
T7=T2*SQRT (T3**2+T1)
|
||||
G (I)=(T4*(ETA+T5/R )*G (I-1)-T6*G (I-2))/T7
|
||||
GP(I)=(T4*(ETA+T5/RP)*GP(I-1)-T6*GP(I-2))/T7
|
||||
T2=T2+1.
|
||||
T3=T3+1.
|
||||
910 CONTINUE
|
||||
N=MAX0(L+11, INT(2.0*R+11.0) )
|
||||
I1=N
|
||||
Y =1.0E-20
|
||||
YP=Y
|
||||
Z =0.
|
||||
ZP=Z
|
||||
C Recur regular function downwards
|
||||
DO 930 I=1,I1
|
||||
T2=N
|
||||
T3=T2+1.
|
||||
T4=T2+T3
|
||||
T5=T2*T3
|
||||
T6=T2*SQRT (T3**2+T1)
|
||||
T7=T3*SQRT (T2**2+T1)
|
||||
X =(T4*(ETA+T5/R )*Y -T6*Z )/T7
|
||||
XP=(T4*(ETA+T5/RP)*YP-T6*ZP)/T7
|
||||
IF(N.LE.LL) THEN
|
||||
F (N)=X
|
||||
FP(N)=XP
|
||||
ELSE
|
||||
c Scale for l > lmax
|
||||
IF(ABS (X).GT.1.0) THEN
|
||||
Y =Y *1.0E-20
|
||||
YP=YP*1.0E-20
|
||||
X =X *1.0E-20
|
||||
XP=XP*1.0E-20
|
||||
ENDIF
|
||||
ENDIF
|
||||
N=N-1
|
||||
Z =Y
|
||||
ZP=YP
|
||||
Y =X
|
||||
YP=XP
|
||||
930 CONTINUE
|
||||
Z =1./(T8*(F (1)*G (2)-F (2)*G (1)))
|
||||
ZP=1./(T8*(FP(1)*GP(2)-FP(2)*GP(1)))
|
||||
DO 950 I=1,LL
|
||||
F (I)=F (I)*Z
|
||||
950 FP(I)=FP(I)*ZP
|
||||
RETURN
|
||||
END
|
264
dwuck4/culib8/DSTRIP.FOR
Normal file
264
dwuck4/culib8/DSTRIP.FOR
Normal file
|
@ -0,0 +1,264 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE DSTRIP(IQ,DR,K,F1,F2,FR,QNUM,OPT,KM,SL,C)
|
||||
c
|
||||
c Calculates two nucleon transfer form factor via the
|
||||
c Bayman and Kallio method.
|
||||
c***********************************************************************
|
||||
c
|
||||
c IQ Input quantum numbers for form factor
|
||||
c DR Step size
|
||||
c K Number of steps
|
||||
c F1 First orbital
|
||||
c F2 Second orbital
|
||||
c FR Output form factor
|
||||
c QNUM Quantum numbers for orbitals
|
||||
c OPT
|
||||
c
|
||||
implicit real*8(a-h,o-z)
|
||||
parameter (maxg=10, maxr=12)
|
||||
DIMENSION F1(400),F2(400),FR(800),QNUM(4,2),TVCC(10),IQ(3)
|
||||
1 ,D1(10),D2(10),C(32),AG(maxg),WG(maxg),BG(maxg)
|
||||
2 ,AR(maxr),WR(maxr)
|
||||
C
|
||||
DATA KR,KX/0,0/
|
||||
data ag,wg,bg,ar,wr/maxg*0.,maxg*0.,maxg*0.,maxr*0.,maxr*0./
|
||||
C
|
||||
c c1 = R1 scale
|
||||
c c2 = R2 scale
|
||||
c c3 = r1 scale
|
||||
c c4 = r2 scale
|
||||
c c5 = r0, integration scale
|
||||
c c6 = Pauli flag
|
||||
c c7 = order of integration
|
||||
c c8 = number of integration points
|
||||
c
|
||||
IPAULI=C(6)
|
||||
R0 =C(5)
|
||||
L =IQ(1)
|
||||
IS=IQ(2)
|
||||
JJ=IQ(3)
|
||||
N1=QNUM(1,1)
|
||||
N2=QNUM(1,2)
|
||||
L1=QNUM(2,1)
|
||||
L2=QNUM(2,2)
|
||||
J1=QNUM(3,1)
|
||||
J2=QNUM(3,2)
|
||||
IS1=QNUM(4,1)
|
||||
IS2=QNUM(4,2)
|
||||
c3=c(3)
|
||||
c4=c(4)
|
||||
dr1=dr*c(1)
|
||||
dr2=dr*c(2)
|
||||
ITEMP=N1+N1+N2+N2
|
||||
NX=(((ITEMP+L1+L2+L+2)/4+2)+1+2)/2+2*IPAULI
|
||||
if(c(8).eq.0.0) then
|
||||
NR=(((ITEMP+L1+L2-L+3)/4+8)+1+2)/2+2*IPAULI
|
||||
NR=MIN0(NR,maxr)
|
||||
IF(NR.NE.KR) then
|
||||
CUT=0.0
|
||||
IERR=0
|
||||
ALFA=C(7)
|
||||
CALL GAUSSR(NR,KS,ALFA,AR,WR,IERR,CUT)
|
||||
NR=KS
|
||||
kr=nr
|
||||
endif
|
||||
else
|
||||
nr = c(8)
|
||||
do 45 i=1,nr
|
||||
ar(i)=c(i+8)
|
||||
wr(i)=c(i+nr+8)
|
||||
if(wr(i).ne.0.0) kr=i
|
||||
45 continue
|
||||
nr=kr
|
||||
endif
|
||||
NX=MIN0(NX,maxg)
|
||||
WRITE(6,9000)NR,NX
|
||||
9000 FORMAT(15H0 NO. R STEPS =,I3,18H NO. X STEPS =,I3)
|
||||
IF(NX.NE.KX) then
|
||||
CALL LEGAUS(2*NX,AG,WG)
|
||||
KX=NX
|
||||
do 47 i=1,nx
|
||||
BG(i) = sqrt(1.0-ag(i)**2)
|
||||
47 continue
|
||||
endif
|
||||
LL=L+L
|
||||
LL1=L1+L1
|
||||
LL2=L2+L2
|
||||
FACT1=YXFCT(L1,LL1)/2.0**L1
|
||||
FACT2=YXFCT(L2,LL2)/2.0**L2
|
||||
FNORM=OPT*SQRT(FLOAT((LL1+1)*(LL2+1))/FLOAT(LL+1))
|
||||
IF(IPAULI.NE.0) GO TO 60
|
||||
TEMP=2.0
|
||||
DO 50 I=1,4
|
||||
IF(QNUM(I,1).NE.QNUM(I,2)) GO TO 55
|
||||
50 CONTINUE
|
||||
TEMP=4.0
|
||||
55 CONTINUE
|
||||
FNORM=FNORM/SQRT(TEMP)
|
||||
60 CONTINUE
|
||||
FNORM=FNORM*SQRT(FLOAT((LL+1)*(IS+1)*(J1+1)*(J2+1)))
|
||||
1 *WINEJ(LL1,IS1,J1,LL2,IS2,J2,LL,IS,JJ)
|
||||
FM1=1.0
|
||||
FM2=1.0
|
||||
FL1=L1
|
||||
FL2=L2
|
||||
LPL=MIN0(L1,L2)+1
|
||||
DO 80 M=1,LPL
|
||||
M2=M+M-2
|
||||
FM=M-1
|
||||
TVCC(M)=VCC(LL1,LL2,LL,M2,-M2)*2.0/SQRT(FM1*FM2)
|
||||
FM1=FM1*(FL1+FM+1)*(FL1-FM)
|
||||
FM2=FM2*(FL2+FM+1)*(FL2-FM)
|
||||
80 CONTINUE
|
||||
TVCC(1)=TVCC(1)/2.0
|
||||
C
|
||||
C RS=r
|
||||
C
|
||||
C R1=| C1*R+C3*r |
|
||||
C R2=| C2*R+C4*r |
|
||||
C
|
||||
C
|
||||
C CENTER OF MASS R LOOP
|
||||
C
|
||||
R=0.0
|
||||
S=0.0
|
||||
DO 500 M=1,K
|
||||
R=R+DR1
|
||||
S=S+DR2
|
||||
RSQ=R**2
|
||||
SSQ=S**2
|
||||
SUMR=0.0
|
||||
C
|
||||
C RELATIVE R LOOP
|
||||
C
|
||||
DO 400 MR=1,KR
|
||||
RS=AR(MR)*R0
|
||||
SS=RS*C3
|
||||
RS=RS*C4
|
||||
RSSQ=RS**2+RSQ
|
||||
RPROD=2.0*R*RS
|
||||
SSSQ=SS**2+SSQ
|
||||
SPROD=2.0*S*SS
|
||||
C
|
||||
C RELATIVE R ANGLE LOOP
|
||||
C
|
||||
SUMX=0.0
|
||||
DO 300 MX=1,KX
|
||||
X =AG(MX)
|
||||
y =BG(mx)
|
||||
IX=0
|
||||
110 CONTINUE
|
||||
R1=SQRT(RSSQ+RPROD*X)
|
||||
R2=SQRT(SSSQ+SPROD*X)
|
||||
FK1=R1/DR
|
||||
K1=FK1
|
||||
K1=MAX0(K1,2)
|
||||
FK1=FK1-FLOAT(K1)
|
||||
IF(K1.GT.K) GO TO 300
|
||||
FK2=R2/DR
|
||||
K2=FK2
|
||||
K2=MAX0(K2,2)
|
||||
FK2=FK2-FLOAT(K2)
|
||||
IF(K2.GT.K) GO TO 300
|
||||
COS1=(R+RS*X)/R1
|
||||
COS2=(S+SS*X)/R2
|
||||
SIN1=abs(rs*y/r1)
|
||||
SIN2=abs(ss*y/r2)
|
||||
120 CONTINUE
|
||||
DM1=0.0
|
||||
DL1=FACT1
|
||||
IF(L1.EQ.0) GO TO 141
|
||||
DO 140 LI=1,L1
|
||||
DL1=DL1*SIN1
|
||||
140 CONTINUE
|
||||
141 CONTINUE
|
||||
D1(L1+1)=DL1
|
||||
DM2=0.0
|
||||
DL2=FACT2
|
||||
IF(L2.EQ.0) GO TO 151
|
||||
DO 150 LI=1,L2
|
||||
DL2=DL2*SIN2
|
||||
150 CONTINUE
|
||||
151 CONTINUE
|
||||
D2(L2+1)=DL2
|
||||
IF(L1.EQ.0) GO TO 171
|
||||
FJ1=1.0
|
||||
FL1=LL1
|
||||
FM1=LL1
|
||||
DO 170 LI=1,L1
|
||||
DK1=(FM1*COS1*DL1/SIN1-DM1)/(FJ1*FL1)
|
||||
FJ1=FJ1+1.0
|
||||
FL1=FL1-1.0
|
||||
FM1=FM1-2.0
|
||||
DM1=DL1
|
||||
DL1=DK1
|
||||
INDX=L1+1-LI
|
||||
D1(INDX)=DL1
|
||||
170 CONTINUE
|
||||
171 CONTINUE
|
||||
IF(L2.EQ.0) GO TO 181
|
||||
FJ2=1.0
|
||||
FL2=LL2
|
||||
FM2=LL2
|
||||
DO 180 LI=1,L2
|
||||
DK2=(FM2*COS2*DL2/SIN2-DM2)/(FJ2*FL2)
|
||||
FJ2=FJ2+1.0
|
||||
FL2=FL2-1.0
|
||||
FM2=FM2-2.0
|
||||
DM2=DL2
|
||||
DL2=DK2
|
||||
INDX=L2+1-LI
|
||||
D2(INDX)=DL2
|
||||
180 CONTINUE
|
||||
181 CONTINUE
|
||||
PROD=0.0
|
||||
DO 185 LI=1,LPL
|
||||
PROD=PROD+D1(LI)*D2(LI)*TVCC(LI)
|
||||
185 CONTINUE
|
||||
280 CONTINUE
|
||||
C INTERPOLATE - 4 POINT FORMULA
|
||||
FT1=-FK1*(FK1-1.)*(FK1-2.)*F1(K1-1)/6.
|
||||
1 + (FK1**2-1.)*(FK1-2.)*F1(K1 )/2.
|
||||
2 - FK1*(FK1+1.)*(FK1-2.)*F1(K1+1)/2.
|
||||
3 + FK1*(FK1**2-1.)*F1(K1+2)/6.
|
||||
FT2=-FK2*(FK2-1.)*(FK2-2.)*F2(K2-1)/6.
|
||||
1 + (FK2**2-1.)*(FK2-2.)*F2(K2 )/2.
|
||||
2 - FK2*(FK2+1.)*(FK2-2.)*F2(K2+1)/2.
|
||||
3 + FK2*(FK2**2-1.)*F2(K2+2)/6.
|
||||
C INTERPOLATE - 2 POINT FORMULA
|
||||
C FT1=FK1*(F1(K1+1)-F1(K1))+F1(K1)
|
||||
C FT2=FK2*(F2(K2+1)-F2(K2))+F2(K2)
|
||||
c if(m.eq.21) write(20,'(2i4,1p10e12.4)')mr,mx,x,r1,r2,r1**2+r2**2
|
||||
c 1 ,ft1,ft2,ft1*ft2
|
||||
SUMX=SUMX+WG(MX)*PROD*FT1*FT2
|
||||
IF(IX.NE.0) GO TO 300
|
||||
IX=1
|
||||
IF(IPAULI.EQ.0) then
|
||||
ITEMP=K1
|
||||
K1=K2
|
||||
K2=ITEMP
|
||||
ATEMP=FK1
|
||||
FK1=FK2
|
||||
FK2=ATEMP
|
||||
ATEMP=COS1
|
||||
COS1=COS2
|
||||
COS2=ATEMP
|
||||
ATEMP=SIN1
|
||||
SIN1=SIN2
|
||||
SIN2=ATEMP
|
||||
IF(L1.EQ.L2) GO TO 280
|
||||
GO TO 120
|
||||
endif
|
||||
X=-X
|
||||
GO TO 110
|
||||
300 CONTINUE
|
||||
SUMR=SUMR+WR(MR)*SUMX
|
||||
400 CONTINUE
|
||||
SUMR=SUMR*FNORM
|
||||
FR(2*M-1)=FR(2*M-1)+SUMR
|
||||
IF(M.EQ.KM) SL=SUMR
|
||||
500 CONTINUE
|
||||
1000 CONTINUE
|
||||
RETURN
|
||||
END
|
82
dwuck4/culib8/DWPLOT.FOR
Normal file
82
dwuck4/culib8/DWPLOT.FOR
Normal file
|
@ -0,0 +1,82 @@
|
|||
|
||||
SUBROUTINE DWPLOT(NTH0,NLOG,SIGPLT,DTHETA,THETA1)
|
||||
C
|
||||
C THIS IS A NEW VERSION OF THE PRINTER PLOT ROUTINE, June 1992
|
||||
C
|
||||
IMPLICIT REAL*8 (A-H,O-Z)
|
||||
Parameter (len = 100, pi = 3.141592)
|
||||
DIMENSION SIGPLT(*)
|
||||
CHARACTER*1 temp
|
||||
1, BLANK /' '/, ASTER /'*'/, FENCE /'|'/, APLUS /'+'/
|
||||
CHARACTER*(len+1) dstore
|
||||
CHARACTER*(len+3) astore
|
||||
c
|
||||
common/ch3files/input, ioutp
|
||||
C
|
||||
ioutput = 6
|
||||
if(ioutp .ne. 0) ioutput = ioutp
|
||||
nth = abs(nth0)
|
||||
if(nlog.gt.0) then
|
||||
MAXN= 0
|
||||
DO 30 I=1,NTH
|
||||
IF(SIGPLT(I).LE.0.0) SIGPLT(I)=1.0E-20
|
||||
SIGPLT(I)= LOG10(SIGPLT(I))
|
||||
MAXN=MAX0(MAXN,INT(SIGPLT(I) + 100.0)-NLOG)
|
||||
30 CONTINUE
|
||||
MAXN = MAXN - 100 + 1
|
||||
nlogp= nlog
|
||||
else
|
||||
MAXN = -1
|
||||
nlogp= 2
|
||||
endif
|
||||
c Write header line
|
||||
do 40 j=1,len+3
|
||||
40 astore(j:j) = BLANK
|
||||
do 45 j=0,nlogp
|
||||
indx = j*(len/nlogp) + 1
|
||||
45 write(astore(indx:indx+2),'(i3)')MAXN +j
|
||||
WRITE(ioutput,9000)astore
|
||||
c
|
||||
DO 100 I=1,NTH
|
||||
tint = THETA1 + (i-1)*DTHETA
|
||||
C Coose between angle or cos(angle) data
|
||||
if(nth0.lt.0) then
|
||||
if (tint.gt. 1.0) tint = 1.0
|
||||
if (tint.lt.-1.0) tint =-1.0
|
||||
theta = acos(tint)*180./pi
|
||||
else
|
||||
theta = tint
|
||||
endif
|
||||
cs = cos(theta*pi/180.)
|
||||
IF(I.EQ.1.OR.I.EQ.NTH) THEN
|
||||
TEMP=APLUS
|
||||
ELSE
|
||||
TEMP=BLANK
|
||||
ENDIF
|
||||
DSTORE( 1: 1) = APLUS
|
||||
DSTORE(len+1:len+1) = APLUS
|
||||
DO 70 J=2,LEN
|
||||
DSTORE(j:j) = TEMP
|
||||
70 CONTINUE
|
||||
if(nlog.le.0) dstore(len/2+1:len/2+1) = APLUS
|
||||
C
|
||||
IF(I .EQ. 1 .OR. I .EQ. NTH) THEN
|
||||
DO 80 J=0,NLOGP
|
||||
indx = j*(len/nlogp) +1
|
||||
DSTORE(indx:indx) = FENCE
|
||||
80 CONTINUE
|
||||
ENDIF
|
||||
C
|
||||
INDX= (SIGPLT(I)-float(MAXN))*float((LEN/NLOGP)) + 1.5
|
||||
IF(INDX.GE.1) DSTORE(indx:indx) = ASTER
|
||||
C
|
||||
WRITE(ioutput,9002)THETA,DSTORE,THETA,cs
|
||||
100 CONTINUE
|
||||
C Write trailer line
|
||||
WRITE(ioutput,9000)astore
|
||||
c
|
||||
RETURN
|
||||
c
|
||||
9000 FORMAT(' THETA ',A103 ,' THETA ','cos(theta)')
|
||||
9002 FORMAT(' ',F8.2 ,' ',A101, F8.2, f10.4 )
|
||||
END
|
168
dwuck4/culib8/ELSIG.FOR
Normal file
168
dwuck4/culib8/ELSIG.FOR
Normal file
|
@ -0,0 +1,168 @@
|
|||
c$debug
|
||||
c***********************************************************************
|
||||
SUBROUTINE ELSIG(dtemp,d,plm,SigPlt,angle,fk,eta,rsig,alpha
|
||||
1 ,idat,is,icon,lplus,isym)
|
||||
c
|
||||
c Subroutine to print out elastic scattering cross sections
|
||||
c***********************************************************************
|
||||
c
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
complex*16 SUM(25),dtemp(*),d(*)
|
||||
logical isym(2), i_open20, i_out20
|
||||
DIMENSION plm(1000),SigPlt(200)
|
||||
1,angle(3),fk(2),eta(2),rsig(2),alpha(15),idat(6),is(2),icon(20)
|
||||
2,POL(12)
|
||||
|
||||
DATA NX, N2, Pi/200, 1, 3.141592654/
|
||||
c
|
||||
i_open20 = .false.
|
||||
i_out20 = .false.
|
||||
C
|
||||
NTHETA=angle(1)
|
||||
theta1=angle(2)
|
||||
dtheta=angle(3)
|
||||
IF(NTHETA.EQ.0) return
|
||||
c
|
||||
ICNT=0
|
||||
IC1=0
|
||||
DO 200 N=1,N2
|
||||
ISS=IS(N)+1
|
||||
IS2=IS(N)
|
||||
IQ=LPLUS*ISS**2
|
||||
C Clear Amplitude Storage
|
||||
DO 3 IP=1,IQ
|
||||
DTEMP(IP)=0.0
|
||||
3 CONTINUE
|
||||
C
|
||||
C CONSTRUCT TABLE OF SCATTERING AMPLITUDES WITH ANG-MOM COEFFICENTS
|
||||
C
|
||||
DO 25 LL=1,LPLUS
|
||||
L=LL-1
|
||||
LK=LL+LL-1
|
||||
L2=LK-1
|
||||
FL=LK
|
||||
J1=L2-IS2
|
||||
J2=L2+IS2
|
||||
IQ=IC1+LL
|
||||
c
|
||||
DO 20 JJ2=J1,J2,2
|
||||
IP=LL
|
||||
DO 15 MS2=-IS2,IS2,2
|
||||
VCI=VCC(L2,IS2,JJ2,0,MS2)*FL
|
||||
DO 14 MS1=-IS2,IS2,2
|
||||
ML2=MS2-MS1
|
||||
ML=IABS(ML2/2)
|
||||
IF(ML .LE. L) THEN
|
||||
VCF=VCC(L2,IS2,JJ2,ML2,MS1)
|
||||
DTEMP(IP)=DTEMP(IP)+D(IQ)
|
||||
1 *VCI*VCF*SQRT(YXFCT(L+ML,L-ML))
|
||||
ENDIF
|
||||
IP=IP+LPLUS
|
||||
14 CONTINUE
|
||||
15 CONTINUE
|
||||
IQ=IQ+LPLUS
|
||||
20 CONTINUE
|
||||
25 CONTINUE
|
||||
IC1=IC1+LPLUS*ISS
|
||||
C
|
||||
C CALCULATE ELASTIC CROSS SECTION
|
||||
C
|
||||
THETA=THETA1
|
||||
if(ETA(N) .ne. 0.0) then
|
||||
WRITE(6,9027)
|
||||
else
|
||||
WRITE(6,9028)
|
||||
endif
|
||||
DO 100 NTH=1,NTHETA
|
||||
CALL LGNDR(PLM,ISS,LPLUS,THETA)
|
||||
Nss = ISS**2
|
||||
DO 30 I=1,Nss
|
||||
SUM(I)=0.0
|
||||
30 CONTINUE
|
||||
DO 40 LL=1,LPLUS
|
||||
IP=LL
|
||||
DO 35 I=1,ISS
|
||||
DO 34 J=1,ISS
|
||||
MP = iabs(J-I)*LPLUS+LL
|
||||
index = (I-1)*ISS + J
|
||||
Phas = 1.0
|
||||
if(I .lt. J) Phas = phasef(I-J)
|
||||
SUM(index) = SUM(index) + DTEMP(IP)*PLM(MP)*Phas
|
||||
IP=IP+LPLUS
|
||||
34 CONTINUE
|
||||
35 CONTINUE
|
||||
40 CONTINUE
|
||||
C
|
||||
C CALCULATE COULOMB AMPLITUDE
|
||||
C
|
||||
if(theta.lt.0.0625
|
||||
1 .or. (isym(N) .and. abs(theta-180.).lt. 0.0625)) then
|
||||
CL=0.0
|
||||
SL=0.0
|
||||
else
|
||||
ARG =THETA*(Pi/360.)
|
||||
S =SIN(ARG)**2
|
||||
ARG =ETA(N)*LOG(S)
|
||||
FFACT=ETA(N)/(2.0*FK(N)*S)
|
||||
CL = COS(ARG)*FFACT
|
||||
SL = SIN(ARG)*FFACT
|
||||
if(isym(N) .and. is(N).eq.0) then
|
||||
ARG =THETA*(Pi/360.)
|
||||
C =COS(ARG)**2
|
||||
ARG =ETA(N)*LOG(C)
|
||||
GFACT=ETA(N)/(2.0*FK(N)*C)
|
||||
CL =CL+COS(ARG)*GFACT
|
||||
SL =SL+SIN(ARG)*GFACT
|
||||
endif
|
||||
endif
|
||||
c Add Coulomb amplitude
|
||||
DO 60 I=1,ISS
|
||||
index = (I-1)*ISS + I
|
||||
SUM(index) = SUM(index) - cmplx(CL, -SL)
|
||||
60 CONTINUE
|
||||
c
|
||||
CALL POLFCT(1,1,ISS,ISS, theta,POL,SUM
|
||||
1 ,i_open20,i_out20, nth,nthetra, ALPHA,IDAT)
|
||||
if(eta(n).eq.0.0) then
|
||||
Ratio = 1.0
|
||||
SigPlt(NTH) = Pol(1)
|
||||
else
|
||||
if(theta.lt.0.0625
|
||||
1 .or. (isym(N) .and. abs(theta-180.).lt.0.0625)) then
|
||||
Ratio = 1.0
|
||||
Pol(1) = 0.0
|
||||
else
|
||||
Ratio = Pol(1)/(CL**2+SL**2)
|
||||
endif
|
||||
SigPlt(nth) = Ratio
|
||||
endif
|
||||
cs = cos(theta*(Pi/180.))
|
||||
if(ETA(N) .ne. 0.0) then
|
||||
WRITE(6,9030)THETA,Ratio,(POL(I),I=1,7),THETA,cs
|
||||
else
|
||||
WRITE(6,9031)THETA, (POL(I),I=1,7),THETA,cs
|
||||
endif
|
||||
90 CONTINUE
|
||||
THETA=THETA+DTHETA
|
||||
100 CONTINUE
|
||||
WRITE(6,9002)RSIG(N)
|
||||
NTH=MIN0(NTHETA,NX)
|
||||
c
|
||||
IF(ICON(6).ne.0) then
|
||||
WRITE(6,9999)ALPHA,(IDAT(I),I=1,3)
|
||||
CALL DWPLOT(NTH,ICON(6),SigPlt,DTHETA,THETA1)
|
||||
endif
|
||||
200 continue
|
||||
RETURN
|
||||
c
|
||||
9002 FORMAT('0REACSIG ',1PE13.4)
|
||||
9027 FORMAT('0 Theta Sig(1)/Coul Sigma(1) ',' Pol '
|
||||
1 ,' Asy ',' Ayy ',' A22 ',' A21 '
|
||||
2 ,' A20 ',' Theta ','Cos(Theta)')
|
||||
9028 FORMAT('0 Theta Sigma(1) ',' Pol '
|
||||
1 ,' Asy ',' Ayy ',' A22 ',' A21 '
|
||||
2 ,' A20 ',' Theta ','Cos(Theta)')
|
||||
9030 FORMAT(0PF8.2,2X,1P2E13.4,0P6F10.4,0PF10.2,0pf10.3)
|
||||
9031 FORMAT(0PF8.2,2X,1P1E13.4,0P6F10.4,0PF10.2,0pf10.3)
|
||||
9999 FORMAT('1',15A4,I4,2('/',I2.2),I4,2('.',I2.2))
|
||||
END
|
64
dwuck4/culib8/FNLOC5.FOR
Normal file
64
dwuck4/culib8/FNLOC5.FOR
Normal file
|
@ -0,0 +1,64 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE FNLOC5(U,V,W,PNLOC,FK2,FK,ETA,RC,DR,KT)
|
||||
c
|
||||
c Non-locality correction factor for the distorted waves
|
||||
c
|
||||
c***********************************************************************
|
||||
c
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
DIMENSION U(800),V(800),W(800)
|
||||
FACP=PNLOC**2/8.0
|
||||
IF(FACP.EQ.0.0) GO TO 410
|
||||
C
|
||||
WRITE(6,9900)PNLOC
|
||||
IF(PNLOC.GT.0.0) THEN
|
||||
R=0.0
|
||||
ETAK=2.0*ETA*FK
|
||||
ELSE
|
||||
R1=DR*FLOAT(KT+1)
|
||||
ENDIF
|
||||
CTEMP1=0.0
|
||||
CTEMP2=0.0
|
||||
T1=0.0
|
||||
T2=0.0
|
||||
C
|
||||
DO 400 M=1,KT
|
||||
IF(PNLOC.GT.0.0) THEN
|
||||
C PNLOC POSITIVE GIVES USUAL NON-LOCAL FACTOR WITH GAUSSIAN SHAPE
|
||||
MK=M+M-1
|
||||
R=R+DR
|
||||
IF(R.GT.RC) THEN
|
||||
VCOUL=ETAK/R
|
||||
ELSE
|
||||
VCOUL=0.5*ETAK*(3.0-(R/RC)**2)/RC
|
||||
ENDIF
|
||||
CTEMP1=-FACP*U(MK )+FACP*(FK2-VCOUL)
|
||||
CTEMP2=-FACP*U(MK+1)
|
||||
T1=U(MK )
|
||||
T2=U(MK+1)
|
||||
ELSE
|
||||
C PNLOC NEGATIVE GIVES DIRAC TYPE DARWIN FACTOR BASED ON SPIN ORBI
|
||||
MK=KT+KT-M-M+1
|
||||
R2=R1
|
||||
R1=R1-DR
|
||||
CTEMP1=CTEMP1+PNLOC*(R2*T1+R1*V(MK ))*(DR*0.125)
|
||||
CTEMP2=CTEMP2+PNLOC*(R2*T2+R1*V(MK+1))*(DR*0.125)
|
||||
T1=V(MK )
|
||||
T2=V(MK+1)
|
||||
ENDIF
|
||||
C
|
||||
FACT=EXP(CTEMP1)
|
||||
UT1=FACT*COS(CTEMP2)
|
||||
UT2=FACT*SIN(CTEMP2)
|
||||
UF1 =UT1*W(MK )-UT2*W(MK+1)
|
||||
UF2 =UT1*W(MK+1)+UT2*W(MK )
|
||||
W(MK )=UF1
|
||||
W(MK+1)=UF2
|
||||
c WRITE(20,7777)R1,T1,T2,UT1,UT2
|
||||
c 7777 FORMAT(' R =',F6.2,' POT =',1P2E12.4,' FACTOR =',1P2E12.4)
|
||||
400 CONTINUE
|
||||
410 CONTINUE
|
||||
RETURN
|
||||
9900 FORMAT('0Non-locality correction is applied, parameter =',f8.3)
|
||||
END
|
84
dwuck4/culib8/GAUSSR.FOR
Normal file
84
dwuck4/culib8/GAUSSR.FOR
Normal file
|
@ -0,0 +1,84 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE GAUSSR(NMAX,INDEX,ALFA,AG,WG,IERR,CUTOFF)
|
||||
C
|
||||
c Gauss-Hermite and gauss-laguerre point and weight routine
|
||||
c***********************************************************************
|
||||
C
|
||||
C IF ALFA IS INTEGER -- GAUSS-LAGUERRE
|
||||
C IF ALFA IS INTEGER + 1/2 -- GAUSS-HERMITE
|
||||
C
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
DIMENSION AG(100),WG(100)
|
||||
data eps/1.e-6/
|
||||
DATA PI,SQRPI/3.14159265,1.77245385/
|
||||
c
|
||||
INDEX=0
|
||||
FI=NMAX
|
||||
FKI=4.0*(FI+(ALFA+1.0)*0.5)
|
||||
FLN= LOG(FI)
|
||||
C
|
||||
K=ALFA
|
||||
JJ=(ALFA-FLOAT(K))*2.0
|
||||
DY=0.0
|
||||
IF(JJ.NE.0) GO TO 19
|
||||
FNORM=1.0
|
||||
IF(K.EQ.0) GO TO 11
|
||||
DO 10 J=1,K
|
||||
FNORM=FNORM*(ALFA+FI+1.0-FLOAT(J))
|
||||
10 CONTINUE
|
||||
11 CONTINUE
|
||||
GO TO 25
|
||||
19 CONTINUE
|
||||
FNORM=SQRPI/2.0
|
||||
DO 20 J=1,NMAX
|
||||
FNORM=FNORM*(1.0+ALFA/FLOAT(J))
|
||||
20 CONTINUE
|
||||
K=ALFA+1.0
|
||||
IF(K.EQ.0) GO TO 25
|
||||
DO 22 J=1,K
|
||||
FNORM=FNORM*(FLOAT(J)-0.5)
|
||||
22 CONTINUE
|
||||
25 CONTINUE
|
||||
Y=0.0
|
||||
Z1=0.0
|
||||
Z2=0.0
|
||||
C
|
||||
DO 80 J=1,NMAX
|
||||
FJ=J
|
||||
FKJ=4.0*(FJ+(ALFA+1.0)*0.5)
|
||||
Z=((FJ+0.5*ALFA-0.25)*PI)**2/FKI
|
||||
Z=Z*(1.0+Z*(1.0+PI* LOG(FJ)*FLN/(8.0*(FI+FLN-FJ+eps)))/(3.0*FKI))
|
||||
DELZ=Z-Z1
|
||||
Z1=Z
|
||||
Z=Y+DELZ
|
||||
Z3=Z
|
||||
DO 74 M=1,20
|
||||
A1=0.0
|
||||
A2=1.0
|
||||
DO 70 K=1,NMAX
|
||||
FK=K
|
||||
A3=((2.0*FK+ALFA-1.0-Z)*A2-(FK+ALFA-1.0)*A1)/FK
|
||||
A1=A2
|
||||
A2=A3
|
||||
B2=(FK*A2-(FK+ALFA)*A1)/Z
|
||||
70 CONTINUE
|
||||
Y=Z-A2/B2
|
||||
IF(ABS((Z-Y)/Z).LT.3.E-14) GO TO 75
|
||||
Z=Y
|
||||
74 CONTINUE
|
||||
IERR=J
|
||||
75 CONTINUE
|
||||
DZ=Z-Z2
|
||||
Z2=Z
|
||||
DZ=((FNORM/Z)/B2)/B2
|
||||
IF(DZ.LT.CUTOFF.AND.DZ.LT.DY) GO TO 100
|
||||
DY=DZ
|
||||
INDEX=J
|
||||
AG(J)=Y
|
||||
WG(J)=DZ
|
||||
IF(JJ.NE.0) AG(J)=SQRT(Y)
|
||||
80 CONTINUE
|
||||
100 CONTINUE
|
||||
RETURN
|
||||
END
|
48
dwuck4/culib8/LEGAUS.FOR
Normal file
48
dwuck4/culib8/LEGAUS.FOR
Normal file
|
@ -0,0 +1,48 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE LEGAUS(LL,X,W)
|
||||
C
|
||||
c Gauss-Legendre point and weight routine for an even no. of points.
|
||||
c***********************************************************************
|
||||
C
|
||||
C ll= order i.e. the total number of points -1< x <1
|
||||
C x = points, calculates and stores only for 0< x <1
|
||||
C w = weights
|
||||
C
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
DIMENSION X(100),W(100)
|
||||
c
|
||||
c starting values for recursion
|
||||
c
|
||||
Z3=-1.6/FLOAT(LL+1)
|
||||
Z2=3.0*Z3
|
||||
Z1=5.0*Z3
|
||||
c
|
||||
NL=(LL+1)/2
|
||||
DO 200 L=1,NL
|
||||
ZOLD=0.0
|
||||
Z=Z1+3.0*(Z3-Z2)
|
||||
DO 50 J=1,10
|
||||
P1=0.0
|
||||
P2=1.0
|
||||
DO 30 I=1,LL
|
||||
P3=(FLOAT(I+I-1)*Z*P2-FLOAT(I-1)*P1)/FLOAT(I)
|
||||
P1=P2
|
||||
P2=P3
|
||||
30 CONTINUE
|
||||
DP=FLOAT(LL)*(P1-Z*P2)/(1.0-Z*Z)
|
||||
Z=Z-P2/DP
|
||||
IF(ABS(Z-ZOLD)/Z.LT.1.0E-10) GO TO 51
|
||||
ZOLD=Z
|
||||
50 CONTINUE
|
||||
WRITE(6,9100)L
|
||||
9100 FORMAT(28H0NO CONVERGENCE FOR ZERO NO.,I4)
|
||||
51 CONTINUE
|
||||
X(L)=Z
|
||||
W(L)=2.0/((1.0-Z*Z)*DP*DP)
|
||||
Z1=Z2
|
||||
Z2=Z3
|
||||
Z3=Z
|
||||
200 CONTINUE
|
||||
RETURN
|
||||
END
|
50
dwuck4/culib8/LGNDR.FOR
Normal file
50
dwuck4/culib8/LGNDR.FOR
Normal file
|
@ -0,0 +1,50 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE LGNDR(PLM,MPLUS,LPLUS,THET)
|
||||
c
|
||||
c Calculates Legendre polynomials Plm
|
||||
c
|
||||
c mplus number of m's >0
|
||||
c lplus number of l's >0
|
||||
c thet angle in degrees
|
||||
c***********************************************************************
|
||||
c
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
|
||||
DIMENSION PLM(459)
|
||||
c
|
||||
THETA=THET /57.295779
|
||||
Y=COS(THETA)
|
||||
Z=SIN(THETA)
|
||||
IX=0
|
||||
DO 100 M=1,MPLUS
|
||||
LX=M-1
|
||||
L2=0
|
||||
P3=1.0
|
||||
FL1=LX
|
||||
IF(LX.EQ.0) GO TO 41
|
||||
DO 40 LT=1,LX
|
||||
FL1=FL1+1.0
|
||||
P3=P3*FL1*Z/2.0
|
||||
40 CONTINUE
|
||||
41 P2=0.0
|
||||
FL2=FL1+1.0
|
||||
FL3=1.0
|
||||
DO 90 LT=1,LPLUS
|
||||
IX1=IX+LT
|
||||
IF(L2-LX)50,70,60
|
||||
50 PLM(IX1)=0.0
|
||||
GO TO 75
|
||||
60 P3=(FL2*Y*P2-FL1*P1)/FL3
|
||||
FL1=FL1+1.0
|
||||
FL2=FL2+2.0
|
||||
FL3=FL3+1.0
|
||||
70 PLM(IX1)=P3
|
||||
P1=P2
|
||||
P2=P3
|
||||
75 L2=L2+1
|
||||
90 CONTINUE
|
||||
IX=IX+LPLUS
|
||||
100 CONTINUE
|
||||
RETURN
|
||||
END
|
326
dwuck4/culib8/POLFCT.FOR
Normal file
326
dwuck4/culib8/POLFCT.FOR
Normal file
|
@ -0,0 +1,326 @@
|
|||
c$debug
|
||||
subroutine polfct(max1,maxi,jr,js,theta,Pol,sr
|
||||
1 ,iopen20,iout20,nth,ntheta,ALPHA,IDAT)
|
||||
c -------------------------------------------------------------
|
||||
c max1 initial target multiplicity
|
||||
c maxi final target multiplicity
|
||||
c jr initial projectile multiplicity
|
||||
c js final projectile multiplicity
|
||||
c sr(1...js, 1...jr, 1...maxi, 1...max1), m storage order: -s...+s
|
||||
c -------------------------------------------------------------
|
||||
c Double precision statements -------------------------------
|
||||
implicit real*8 (a-h,o-z)
|
||||
double complex sr(js,jr,maxi,max1), a(3,3), b(3,3), c(3,3)
|
||||
1 , d(3,3,4), e(3,3,3), s(2,2,3), Sy(3,3,3)
|
||||
real*8 Knn
|
||||
c -------------------------------------------------------------
|
||||
c Single precision statements --------------------------------
|
||||
c complex sr(js,jr,maxi,max1), a(3,3), b(3,3), c(3,3)
|
||||
c 1 , d(3,3,4), e(3,3,3), s(2,2,3), Sy(3,3,3)
|
||||
c real*4 Knn
|
||||
c -------------------------------------------------------------
|
||||
parameter (nsig = 5, npol = 10, nay = 4, npy = 3
|
||||
1 , rads = 3.141592/180.)
|
||||
logical iopen20, iout20
|
||||
|
||||
dimension ii(nsig), jj(nsig)
|
||||
1 ,csig(nsig), Cij(nsig), dsig(nsig), Dij(nsig)
|
||||
2 , Pol(npol), Sij(3,3,4), IDAT(6), ALPHA(15)
|
||||
c
|
||||
c spin 1/2 matrices for Spin correlation coefficients
|
||||
c s stored as S_z, S_x and S_y
|
||||
c
|
||||
data s /(-1.,0.), (0.,0.), ( 0.,0.), (1.,0.)
|
||||
1 ,( 0.,0.), (1.,0.), ( 1.,0.), (0.,0.)
|
||||
2 ,( 0.,0.), (1.,0.), (-1.,0.), (0.,0.)/
|
||||
C
|
||||
c SY MATRIX FOR SPIN 0, 1/2 and 1
|
||||
c
|
||||
DATA Sy/(0.,0.),(0.,0.),(0.,0.),(0.,0.),(0.,0.)
|
||||
1 ,(0.,0.),(0.,0.),(0.,0.),(0.,0.)
|
||||
1 ,(0.,0.),(0.,-1.),(0.,0.),(0., 1.),(0.,0.)
|
||||
3 ,(0.,0.),(0., 0.),(0.,0.),(0., 0.)
|
||||
2 ,(0.,0.),(0.,-.707106781),(0.,0.)
|
||||
5 ,(0., .707106781),(0.,0.),(0.,-.707106781)
|
||||
3 ,(0.,0.),(0.,.707106781),(0.,0.)/
|
||||
C
|
||||
C SYY = ( 3*SY*SY - S*S )
|
||||
C S22 = ( S^*S^ )*SQRT(3)/4
|
||||
C S21 = ( S^*SZ + SZ*S^)*SQRT(3)/2
|
||||
C S20 = ( 3*SZ*SZ - S*S )/SQRT(2)
|
||||
C
|
||||
DATA Sij/-0.5,0.0,-1.5, 0.0,1.0,0.0, -1.5,0.0,-0.5
|
||||
1, 0.0,0.0,0.0, 0.0,0.0,0.0, 1.73205081,0.0,0.0
|
||||
2, 0.0,0.0,0.0, -1.2247449,0.0,0.0, 0.0,1.2247449,0.0
|
||||
3, 0.70710678,0.0,0.0,0.0,-1.4124214,0.0
|
||||
4, 0.0,0.0,0.70710678/
|
||||
C
|
||||
c zz xx yy zx xz
|
||||
data ii/1, 2, 3, 1, 2/
|
||||
data jj/1, 2, 3, 2, 1/
|
||||
c
|
||||
c Array Pol(npol) contains
|
||||
c
|
||||
c Pol(1) Cross section
|
||||
c Pol(2) Vector Polarization
|
||||
c Pol(3) Vector Asymmetry
|
||||
c Pol(4-7) Tensor Asymmetry
|
||||
c Pol(8-10) Tensor Polarization
|
||||
c
|
||||
c write(20,'(1p8e12.4)')sr
|
||||
cs=cos(theta*rads)
|
||||
ss=sin(theta*rads)
|
||||
do 20 n=1,nsig
|
||||
csig(n)=0.0
|
||||
dsig(n)=0.0
|
||||
20 continue
|
||||
do 30 i=1,npol
|
||||
Pol(i) = 0.0
|
||||
30 continue
|
||||
Dnn = 0.0
|
||||
Knn = 0.0
|
||||
Tpol = 0.0
|
||||
c
|
||||
if(jr.gt.3 .or. js.gt.3) go to 2000
|
||||
c
|
||||
c
|
||||
do 200 mx=1,max1
|
||||
do 190 my=1,maxi
|
||||
c
|
||||
do 180 m =1,jr
|
||||
do 170 mp=1,js
|
||||
a(mp,m ) = 0.0
|
||||
b(mp, m) = 0.0
|
||||
c(mp, m) = 0.0
|
||||
if(jr .eq. 3) then
|
||||
do 115 i=1,nay
|
||||
d(mp,m ,i) = 0.0
|
||||
115 continue
|
||||
endif
|
||||
if(js .eq. 3) then
|
||||
do 116 i=1,npy
|
||||
e(mp,m ,i) = 0.0
|
||||
116 continue
|
||||
endif
|
||||
do 130 m1=1,jr
|
||||
c Asymmetry --------------------------------------------
|
||||
c Calculate asy = < S_y(initial) >
|
||||
b(mp,m )=b(mp,m ) + sr(mp,m1,my,mx) * Sy(m ,m1,jr)
|
||||
if(jr .eq. 3) then
|
||||
c Calculate Tensor asymmetry = <Sij(initial)>
|
||||
do 125 i=1,nay
|
||||
d(mp,m ,i)=d(mp,m ,i) + sr(mp,m1,my,mx) * Sij(m ,m1,i)
|
||||
125 continue
|
||||
endif
|
||||
130 continue
|
||||
do 140 m2=1,js
|
||||
c Polarization --------------------------------------------
|
||||
c Calculate pol = < S_y(final ) >
|
||||
a(mp,m )=a(mp,m ) + sr(m2,m ,my,mx) * Sy(m2,mp,js)
|
||||
if(js .eq. 3) then
|
||||
c Calculate Tensor polarization = <Sij(final)>
|
||||
do 135 i=1,npy
|
||||
e(mp,m ,i)=e(mp,m ,i) + sr(m2,m ,my,mx) * Sij(m2,mp,i+1)
|
||||
135 continue
|
||||
endif
|
||||
140 continue
|
||||
c
|
||||
Pol(1) =Pol(1) + conjg(sr(mp,m ,my,mx)) * sr(mp,m ,my,mx)
|
||||
Pol(2) =Pol(2) + conjg(sr(mp,m ,my,mx)) * a(mp,m )
|
||||
Pol(3) =Pol(3) + conjg(sr(mp,m ,my,mx)) * b(mp,m )
|
||||
if(jr .eq. 3) then
|
||||
do 160 i=1,nay
|
||||
Pol(i+3)=Pol(i+3) + conjg(sr(mp,m ,my,mx)) * d(mp,m ,i)
|
||||
160 continue
|
||||
endif
|
||||
if(js .eq. 3) then
|
||||
do 165 i=1,npy
|
||||
Pol(i+7)=Pol(i+7) + conjg(sr(mp,m ,my,mx)) * e(mp,m ,i)
|
||||
165 continue
|
||||
endif
|
||||
170 continue
|
||||
180 continue
|
||||
190 continue
|
||||
200 continue
|
||||
do 245 i=2,npol
|
||||
Pol(i) = Pol(i)/Pol(1)
|
||||
245 continue
|
||||
Sigma = Pol(1)
|
||||
Pol(1) = Pol(1)/float(max1*jr)
|
||||
c
|
||||
IF(iout20) THEN
|
||||
if(Sigma .eq. 0.0) go to 1000
|
||||
if(jr.eq.2 .and. maxi.eq.2) then
|
||||
c
|
||||
c Calculate target polarization I_n = <I_y(final)>
|
||||
c
|
||||
if(maxi .ge. 2 .and. maxi .le. 3) then
|
||||
do 240 m =1,jr
|
||||
do 235 mp=1,js
|
||||
do 230 mx=1,max1
|
||||
do 225 my=1,maxi
|
||||
a(my,mx) = 0.0
|
||||
do 220 m1=1,maxi
|
||||
a(my,mx) = a(my,mx) + Sy(m1,my,maxi) * sr(mp,m ,m1,mx)
|
||||
220 continue
|
||||
Tpol = Tpol + conjg(sr(mp,m ,my,mx))*a(my,mx)
|
||||
225 continue
|
||||
230 continue
|
||||
235 continue
|
||||
240 continue
|
||||
end if
|
||||
Tpol = Tpol /Sigma
|
||||
c
|
||||
c
|
||||
c Calculate Knn = < S_y(initial) * I_y(final) >
|
||||
c
|
||||
do 300 mx=1,max1
|
||||
do 290 mp=1,js
|
||||
c
|
||||
do 280 my=1,maxi
|
||||
do 270 m = 1,jr
|
||||
c(m ,my) = 0.0
|
||||
do 260 m1=1,maxi
|
||||
do 250 m2=1,jr
|
||||
c Knn coefficient
|
||||
c(m ,my)=c(m ,my) + sr(mp,m1,m2,mx) * Sy(my,m2,2)*Sy(m1,m ,2)
|
||||
250 continue
|
||||
260 continue
|
||||
Knn = Knn + conjg(sr(mp,m ,my,mx)) * c(m ,my)
|
||||
270 continue
|
||||
280 continue
|
||||
290 continue
|
||||
300 continue
|
||||
endif
|
||||
Knn = Knn /Sigma
|
||||
c
|
||||
if(jr .eq. 2 .and. js .eq.2) then
|
||||
c
|
||||
c Calculate Dij = < S_i(initial) * S_j(final) >
|
||||
c
|
||||
|
||||
do 600 mx=1,max1
|
||||
do 580 my=1,maxi
|
||||
do 500 n=1,nsig
|
||||
i1=ii(n)
|
||||
j1=jj(n)
|
||||
do 490 m =1,jr
|
||||
do 480 mp=1,js
|
||||
a(mp,m )=0.0
|
||||
do 440 m1=1,jr
|
||||
do 420 m2=1,js
|
||||
a(mp,m )=a(mp,m ) + sr(m2,m1,my,mx) * s(m2,mp,i1)*s(m ,m1,j1)
|
||||
420 continue
|
||||
440 continue
|
||||
c
|
||||
c Dij correlation coefficients
|
||||
dsig(n)=dsig(n)+conjg(sr(mp,m ,my,mx))*a(mp,m )
|
||||
480 continue
|
||||
490 continue
|
||||
500 continue
|
||||
580 continue
|
||||
600 continue
|
||||
endif
|
||||
c
|
||||
Dsig(3) = -Dsig(3)
|
||||
do 610 n=1,nsig
|
||||
dsig(n) = dsig(n)/Sigma
|
||||
610 continue
|
||||
c
|
||||
if(js .eq. 2 .and. maxi .eq. 2) then
|
||||
c
|
||||
c Spin correlation coefficients (final state target and projectile)
|
||||
c Calculate Cij = < S_y(final) * I_y(final) >
|
||||
c
|
||||
do 800 mx=1,max1
|
||||
do 780 m =1,jr
|
||||
c
|
||||
do 700 n=1,nsig
|
||||
i1=ii(n)
|
||||
j1=jj(n)
|
||||
do 690 my=1,maxi
|
||||
do 680 mp=1,js
|
||||
a(mp,my)=0.0
|
||||
do 640 m1=1,maxi
|
||||
do 620 m2=1,js
|
||||
a(mp,my)=a(mp,my)+sr(m2,m ,m1,mx)*s(m2,mp,i1)*s(m1,my,j1)
|
||||
620 continue
|
||||
640 continue
|
||||
c
|
||||
csig(n)=csig(n)+conjg(sr(mp,m ,my,mx))*a(mp,my)
|
||||
680 continue
|
||||
690 continue
|
||||
700 continue
|
||||
c
|
||||
780 continue
|
||||
800 continue
|
||||
do 820 n=1,nsig
|
||||
csig(n) = csig(n)/Sigma
|
||||
820 continue
|
||||
csig(3)=-csig(3)
|
||||
c
|
||||
c rotate operators to outgoing particle direction
|
||||
c
|
||||
c Minus signs on C_zz, C_xx and C_xz make output agree with the data
|
||||
c where the z and x axes for the target are in opposite directions
|
||||
c to those of the projectile
|
||||
c
|
||||
Cij(3) = -(csig(1)*cs**2 + csig(2)*ss**2
|
||||
1 + (csig(4)+csig(5))*cs*ss)
|
||||
Cij(1) = -(csig(1)*ss**2 + csig(2)*cs**2
|
||||
1 - (csig(4)+csig(5))*cs*ss)
|
||||
Cij(4) = -(csig(4)*cs**2-csig(5)*ss**2 + (csig(2)-csig(1))*cs*ss)
|
||||
Cij(5) = -(csig(5)*cs**2-csig(4)*ss**2 + (csig(2)-csig(1))*cs*ss)
|
||||
Cij(2) = csig(3)
|
||||
endif
|
||||
c
|
||||
c Singlet fraction
|
||||
ssum = (1.0-(csig(1)+csig(2)+csig(3)))/4.0
|
||||
c
|
||||
Dij(3) = dsig(1)
|
||||
Dij(1) = dsig(2)
|
||||
Dij(4) = dsig(4)
|
||||
Dij(5) = dsig(5)
|
||||
Dij(2) = dsig(3)
|
||||
c Calculate Dnn = < S_y(initial) * S_y(final) >
|
||||
Dnn = Dij(2)
|
||||
1000 continue
|
||||
ENDIF
|
||||
2000 continue
|
||||
c
|
||||
c --------------------------------------------------------
|
||||
c output to disk file 20 and file 21
|
||||
c
|
||||
if(iopen20) then
|
||||
open(unit = 20, file = 'for020.dat', status = 'unknown')
|
||||
open(unit = 21, file = 'for021.dat', status = 'unknown')
|
||||
iopen20 = .false.
|
||||
endif
|
||||
c
|
||||
if(iout20) then
|
||||
c Write header to file
|
||||
if(nth .eq. 1) then
|
||||
WRITE(20,9010)ALPHA,IDAT
|
||||
write(20,9020) ntheta
|
||||
WRITE(21,9010)ALPHA,IDAT
|
||||
write(21,9021) ntheta
|
||||
endif
|
||||
c
|
||||
write(20,'(2(0pf8.3,1h,) ,1pe12.4, 10(:1h,,0pf7.4))')
|
||||
1 theta, cs, (Pol(i),i=1,3), Dnn, Knn, Tpol
|
||||
c
|
||||
write(21,'(0pf8.3,1h,,0pf8.3, 12(:1h,,0pf7.4))')
|
||||
1 theta, cs, Cij, Dij, ssum
|
||||
endif
|
||||
c
|
||||
c
|
||||
return
|
||||
c
|
||||
9010 FORMAT(' (',15A4,I4.2,2(1H/,I2.2),I4.2,2(1H:,I2.2))
|
||||
9020 FORMAT(' (',i2,',angle cos[th] Sigma Pol Asy'
|
||||
1 ,' Dnn Knn Inn')
|
||||
9021 FORMAT(' (',i2,',angle cos[th] Cxx Cyy Czz Czx'
|
||||
1 ,' Cxz Dxx Dyy Dzz Dzx Dxz fsingl')
|
||||
c
|
||||
end
|
||||
|
726
dwuck4/culib8/POTS.FOR
Normal file
726
dwuck4/culib8/POTS.FOR
Normal file
|
@ -0,0 +1,726 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE POTS(U,V)
|
||||
c
|
||||
c Calculates the potentials or form factors
|
||||
c***********************************************************************
|
||||
c
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
COMMON/POTTER/DRX,AFACT(2),VFACT,SFACT,ENG,RM,G(4),ETAX,FKX,ETAKX
|
||||
1 ,RCX,HBARC2,ABETA(3),FLDF(3)
|
||||
2 ,NX,LAMX,KMXX,KX,IBX,LPLUSX,ICON4,NSPC,IDIRAC,ICHK
|
||||
|
||||
CHARACTER*18 B(21),C(22)
|
||||
DIMENSION UT(5),CN(16),CP(16),YLAM(16),PLM(8)
|
||||
1 ,XG(8),WG(8),U(800),V(800),LDFRM(3)
|
||||
C DIMENSION UD(800)
|
||||
EQUIVALENCE (B(1),C(2)),(YLAM(1),PLM(1))
|
||||
C
|
||||
DATA C( 1) /' NX=0 No potential'/
|
||||
DATA B( 1) /' NX=1 VOLUME W-S '/
|
||||
DATA B( 2) /' NX=2 SURFACE W-S '/
|
||||
DATA B( 3) /' NX=3 2ND DERIV '/
|
||||
DATA B( 4) /' NX=4 L*S VOLUME '/
|
||||
DATA B( 5) /' NX=5 L*S SURFACE '/
|
||||
DATA B( 6) /' NX=6 VOL *R**POWR'/
|
||||
DATA B( 7) /' NX=7 SURF*R**POWR'/
|
||||
DATA B( 8) /' NX=8 EXTERN FORMF'/
|
||||
DATA B( 9) /' NX=9 HARMONIC OSC'/
|
||||
DATA B(10) /' NX=10 GAUSSIAN '/
|
||||
DATA B(11) /' NX=11 DEFORM VOL '/
|
||||
DATA B(12) /' NX=12 DEFORM SURF'/
|
||||
DATA B(13) /' NX=13 HULTHEN '/
|
||||
DATA B(14) /' NX=14 NO OPTION '/
|
||||
DATA B(15) /' NX=15 NO OPTION '/
|
||||
DATA B(16) /' NX=16 NO OPTION '/
|
||||
DATA B(17) /' NX=17 NO OPTION '/
|
||||
DATA B(18) /' NX=18 Volume L*S '/
|
||||
DATA B(19) /' NX=19 COUL EXCIT '/
|
||||
DATA B(20) /' NX=20 VECTOR '/
|
||||
DATA B(21) /' NX=21 SCALAR '/
|
||||
|
||||
C
|
||||
DATA NG,NGX/8,0/
|
||||
C
|
||||
ETA4 = 6.0
|
||||
ETA5 =10.0
|
||||
SQRPI= 1.772453851
|
||||
PI=3.141592654
|
||||
C
|
||||
IVFLAG=0
|
||||
ISFLAG=0
|
||||
FACT=VFACT
|
||||
70 CONTINUE
|
||||
C
|
||||
C READ IN CARD SET 5,6,OR 7 POTENTIAL CARDS
|
||||
C
|
||||
READ (5,9000)FZ,VR,RY,AR,VSOR,VI,RZ,AI,VSOI,PWR
|
||||
C
|
||||
NZ=ABS(FZ)
|
||||
RR=ABS(RY)*AFACT(1)
|
||||
IF(RY.LT.0.0) RR=RR+ABS(RY)*AFACT(2)
|
||||
RI=ABS(RZ)*AFACT(1)
|
||||
IF(RZ.LT.0.0) RI=RI+ABS(RZ)*AFACT(2)
|
||||
IF(ICON4.NE.2.OR.NSPC.LT.3) THEN
|
||||
WRITE(6,9509)B(NZ),VR,RY,AR,RR,VSOR
|
||||
WRITE(6,9510) VI,RZ,AI,RI,VSOI,PWR
|
||||
ENDIF
|
||||
C NZ= 1 VOLUME WOODS-SAXON
|
||||
C NZ= 2 SURFACE WOODS-SAXON
|
||||
C NZ= 3 SECOND DERIVATIVE WOODS-SAXON
|
||||
C NZ= 4 L*S POTENTIAL FOR WOODS-SAXON VOLUME
|
||||
C NZ= 5 L*S POTENTIAL FOR WOODS-SAXON SURFACE
|
||||
C NZ= 6 WOOD-SAXON*R**PWR
|
||||
C NZ= 7 1ST-DER WOOD-SAXON*R**PWR
|
||||
C NZ= 8 FORMF8 EXTERNAL FORM FACTOR
|
||||
C NZ= 9 HARMONIC OSCILLATOR
|
||||
C NZ=10 GAUSSIAN*R**PWR
|
||||
C NZ=11 DEFORMED VOLUME
|
||||
C NZ=12 DEFORMED SURFACE
|
||||
C NZ=13 Hulthen
|
||||
C Nz=18 Volume L*S
|
||||
C NZ=19 COULOMB-EXCITATION
|
||||
C NZ=20 VECTOR DIRAC
|
||||
C NZ=21 SCALAR DIRAC
|
||||
C
|
||||
KFLAG=0
|
||||
IF(NX.LT.3) THEN
|
||||
VR=VR*FACT
|
||||
VI=VI*FACT
|
||||
KT=FKX * MAX (RR,RI)+ETA5
|
||||
LPLUSX=MAX0(LPLUSX,KT)
|
||||
KT=(2.3*ETA4* MAX (AR,AI)+ MAX (RR,RI))/DRX
|
||||
ELSE
|
||||
IF(ENG.EQ.0.0) THEN
|
||||
KT=(2.3*ETA4* MAX (AR,AI)+ MAX (RR,RI))/DRX
|
||||
ELSE
|
||||
RM= MAX (RM,RR)
|
||||
RM= MAX (RM,RI)
|
||||
IF(RM.EQ.0.0) RM=1.0
|
||||
VR=VR*FACT
|
||||
VI=VI*FACT
|
||||
KT=(2.3*ETA4/SQRT(FKX**2+2.0*ETAX*FKX/RM))/DRX
|
||||
ENDIF
|
||||
ENDIF
|
||||
KX=MIN0(MAX0(KX,KT),KMXX)
|
||||
83 CONTINUE
|
||||
IF(AR.EQ.0.0) THEN
|
||||
F1=0.0
|
||||
F2=0.0
|
||||
ELSE
|
||||
F2=EXP(-DRX /AR)
|
||||
F1=EXP( RR/AR)
|
||||
ENDIF
|
||||
IF(AI.EQ.0.0) THEN
|
||||
F3=0.0
|
||||
F4=0.0
|
||||
ELSE
|
||||
F4=EXP(-DRX /AI)
|
||||
F3=EXP( RI/AI)
|
||||
ENDIF
|
||||
C
|
||||
IF(NX.GE.3.AND.ENG.EQ.0.0.AND.NZ.LE.5) THEN
|
||||
IF(AR.NE.0.0) VR=VR*(RR/AR)**(PWR+1)
|
||||
IF(AI.NE.0.0) VI=VI*(RI/AI)**(PWR+1)
|
||||
ENDIF
|
||||
IF(NZ.EQ.0) GO TO 6050
|
||||
GO TO (100,200,300,400,500,600,700,800,900,1000,1100,1200
|
||||
1,1300,1400,1500,1600,1700,1800,1900,2000,2100),NZ
|
||||
C
|
||||
C VOLUME WOODS SAXON
|
||||
C
|
||||
100 CONTINUE
|
||||
DO 160 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )-VR*F1/(1.0+F1)
|
||||
U(MK+1)=U(MK+1)-VI*F3/(1.0+F3)
|
||||
160 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C 1ST DERIVATIVE WOODS SAXON
|
||||
C
|
||||
200 CONTINUE
|
||||
DO 260 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )+VR*F1/(1.0+F1)**2
|
||||
U(MK+1)=U(MK+1)+VI*F3/(1.0+F3)**2
|
||||
260 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C 2ND DERIVATIVE WOODS SAXON
|
||||
C
|
||||
300 CONTINUE
|
||||
DO 360 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )-VR*F1*(1.0-F1)/(1.0+F1)**3
|
||||
U(MK+1)=U(MK+1)-VI*F3*(1.0-F3)/(1.0+F3)**3
|
||||
360 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C L.S VOLUME WOODS SAXON
|
||||
C
|
||||
400 CONTINUE
|
||||
IBX=1
|
||||
IF(AR.NE.0.0) VR=VR/AR
|
||||
IF(AI.NE.0.0) VI=VI/AI
|
||||
R=0.0
|
||||
DO 460 M=1,KX
|
||||
R=R+DRX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )-VR*F1/(R*(1.0+F1)**2)
|
||||
V(MK+1)=V(MK+1)-VI*F3/(R*(1.0+F3)**2)
|
||||
460 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C L.S 1ST DERIVATIVE WOODS SAXON
|
||||
C
|
||||
500 CONTINUE
|
||||
IBX=1
|
||||
IF(AR.NE.0.0) VR=VR/AR
|
||||
IF(AI.NE.0.0) VI=VI/AI
|
||||
R=0.0
|
||||
DO 560 M=1,KX
|
||||
R=R+DRX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )+VR*F1*(1.0-F1)/(R*(1.0+F1)**3)
|
||||
V(MK+1)=V(MK+1)+VI*F3*(1.0-F3)/(R*(1.0+F3)**3)
|
||||
560 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C WOOD SAXON*R**PWR
|
||||
C
|
||||
600 CONTINUE
|
||||
R=0.0
|
||||
DO 660 M=1,KX
|
||||
R=R+DRX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
RPWR=R**PWR
|
||||
U(MK )=U(MK )-VR*F1*RPWR/(1.0+F1)
|
||||
U(MK+1)=U(MK+1)-VI*F3*RPWR/(1.0+F3)
|
||||
660 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C 1ST DERIVATIVE WOOD SAXON*R**PWR
|
||||
C
|
||||
700 CONTINUE
|
||||
R=0.0
|
||||
DO 760 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
RPWR=R**PWR
|
||||
U(MK )=U(MK )+VR*F1*RPWR/(1.0+F1)**2
|
||||
U(MK+1)=U(MK+1)+VI*F3*RPWR/(1.0+F3)**2
|
||||
760 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C EXTERNAL FORM FACTOR
|
||||
C
|
||||
800 CONTINUE
|
||||
IF(NX.GE.3) THEN
|
||||
READ (5,9000)G
|
||||
WRITE(6,9508)G
|
||||
ENDIF
|
||||
READ(5,9000)F1,F2
|
||||
C
|
||||
C F2 = 0 REAL CENTRAL
|
||||
C F2 = 1 IMAG CENTRAL
|
||||
C F2 = 2 REAL SPIN ORBIT
|
||||
C F2 = 3 IMAG SPIN ORBIT
|
||||
C
|
||||
IF(F2.EQ.0.0.OR.F2.EQ.2) THEN
|
||||
F3=VR
|
||||
MK=1
|
||||
ELSE
|
||||
F3=VI
|
||||
MK=2
|
||||
ENDIF
|
||||
IF(F3.EQ.0.0) F3=1.0
|
||||
KT=F1
|
||||
DO 820 M=1,KT,5
|
||||
READ(5,9100)UT
|
||||
IF(M.GT.KMXX) GO TO 820
|
||||
DO 810 I=1,5
|
||||
IF(F2.LT.2.0) THEN
|
||||
U(MK )=U(MK )+UT(I)*F3
|
||||
ELSE
|
||||
V(MK )=V(MK )+UT(I)*F3
|
||||
ENDIF
|
||||
MK=MK+2
|
||||
810 CONTINUE
|
||||
820 continue
|
||||
kmxx2 = 2*kmxx
|
||||
if(abs(FZ) .ne. float(NZ)) then
|
||||
read (5,9100)(U(i+kmxx2),i=1,10)
|
||||
IBX = U(5+kmxx2)
|
||||
endif
|
||||
C
|
||||
KX=min0(KT,kmxx)
|
||||
|
||||
GO TO 6000
|
||||
C
|
||||
C HARMONIC OSCILLATOR, NORMALIZED N*EXP(-(R/RY)**2/2)
|
||||
C
|
||||
900 CONTINUE
|
||||
READ (5,9000)G
|
||||
WRITE(6,9508)G
|
||||
F1=1.0/RY**2
|
||||
F2=F1/RY
|
||||
F3=0.5
|
||||
F4=SQRPI*0.5
|
||||
L=G(2)
|
||||
IF(L.NE.0) THEN
|
||||
DO 930 I=1,L
|
||||
F3=F3+1.0
|
||||
F4=F4*F3
|
||||
F2=F2*F1
|
||||
930 CONTINUE
|
||||
ENDIF
|
||||
NN=G(1)
|
||||
T1=1.0
|
||||
T2=F4
|
||||
C LAGUERRE POLYNOMIAL COEFFICIENTS = (Abramowitz-Stegun)*(-1)**nn
|
||||
CN(1)=(-1.0)**NN
|
||||
IF(NN.NE.0) THEN
|
||||
DO 940 I=1,NN
|
||||
F3=F3+1.0
|
||||
T1=T1*FLOAT(I)
|
||||
T2=T2*F3
|
||||
CN(I+1)=-CN(I)*F1*FLOAT(NN+1-I)/(FLOAT(I)*F3)
|
||||
940 CONTINUE
|
||||
ENDIF
|
||||
ANORM=SQRT(2.0*F2*T1/T2)*T2/(T1*F4)
|
||||
IF(VR.NE.0.0) ANORM=VR*ANORM
|
||||
KT=10.0*RY/DRX
|
||||
KT=MIN0(KT,KMXX)
|
||||
R=0.0
|
||||
F1=F1/2.0
|
||||
DO 960 M=1,KT
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
R2=R**2
|
||||
F2=CN(1)
|
||||
IF(NN.EQ.0) GO TO 951
|
||||
F3=1.0
|
||||
DO 950 I=1,NN
|
||||
F3=F3*R2
|
||||
F2=F2+CN(I+1)*F3
|
||||
950 CONTINUE
|
||||
951 CONTINUE
|
||||
U(MK )=U(MK )+F2*ANORM*EXP(-F1*R2)*R**L
|
||||
960 CONTINUE
|
||||
GO TO 6000
|
||||
C
|
||||
C EXP(-(R/R0)**2)*R**POWR
|
||||
C
|
||||
1000 CONTINUE
|
||||
IF(VR.NE.0.0) THEN
|
||||
R=0.0
|
||||
DO 1060 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
U(MK )=U(MK )-VR*EXP(-(R/RY)**2)*R**PWR
|
||||
1060 CONTINUE
|
||||
endif
|
||||
IF(VI.NE.0.0) THEN
|
||||
R=0.0
|
||||
DO 1070 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
U(MK+1)=U(MK+1)-VI*EXP(-(R/RZ)**2)*R**PWR
|
||||
1070 CONTINUE
|
||||
endif
|
||||
GO TO 6000
|
||||
C
|
||||
C DEFORMED VOLUME OR SURFACE BY YLM EXPANSION
|
||||
C
|
||||
1100 CONTINUE
|
||||
IF(NGX.NE.NG) THEN
|
||||
CALL LEGAUS(2*NG,XG,WG)
|
||||
NGX=NG
|
||||
ENDIF
|
||||
T2=(-1.0)**LAMX
|
||||
IF(ICHK.EQ.0) THEN
|
||||
READ (5,9000) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
WRITE(6,9000)
|
||||
WRITE(6,9512) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
ENDIF
|
||||
LMAX=LAMX+1
|
||||
DO 1101 J=1,3
|
||||
LDFRM(J)=FLDF(J)
|
||||
LMAX=MAX0(LMAX,LDFRM(J)+1)
|
||||
1101 CONTINUE
|
||||
T2=(-1.0)**LAMX
|
||||
C
|
||||
DO 1108 I=1,NG
|
||||
CN(I )=0.0
|
||||
CN(I+NG)=0.0
|
||||
P2=0.0
|
||||
P3=1.0
|
||||
C
|
||||
DO 1106 M=1,LMAX
|
||||
L=M-1
|
||||
FL=L-1
|
||||
IF(L.EQ.0) GO TO 1102
|
||||
P3=((2.0*FL+1.0)*XG(I)*P2-FL*P1)/(FL+1.0)
|
||||
1102 CONTINUE
|
||||
DO 1103 J=1,3
|
||||
IF(ABETA(J).EQ.0.0) GO TO 1103
|
||||
IF(L.NE.LDFRM(J)) GO TO 1103
|
||||
FACTOR=P3*ABETA(J)*SQRT(FLOAT(L+L+1)/(4.0*PI))
|
||||
CN(I )=CN(I )+FACTOR
|
||||
CN(I+NG)=CN(I+8)+FACTOR*(-1.0)**LDFRM(J)
|
||||
1103 CONTINUE
|
||||
IF(L.NE.LAMX) GO TO 1104
|
||||
YLAM(I )= P3*WG(I)*SQRT(FLOAT(L+L+1)*PI)
|
||||
YLAM(I+NG)=YLAM(I )*T2
|
||||
1104 CONTINUE
|
||||
P1=P2
|
||||
P2=P3
|
||||
1106 CONTINUE
|
||||
1108 CONTINUE
|
||||
DO 1170 I=1,2
|
||||
IF(I.EQ.1) THEN
|
||||
IF(VR.EQ.0.0) GO TO 1170
|
||||
VX=VR
|
||||
RX=RR
|
||||
AX=AR
|
||||
F1=1.0
|
||||
IFL=-1
|
||||
ELSE
|
||||
IF(VI.EQ.0.0) GO TO 1170
|
||||
VX=VI
|
||||
RX=RI
|
||||
AX=AI
|
||||
F1=1.0
|
||||
F2=F4
|
||||
IFL=0
|
||||
ENDIF
|
||||
DO 1135 J=1,16
|
||||
CP(J)=EXP((1.0+CN(J))*RX/AX)
|
||||
1135 CONTINUE
|
||||
IF(LAMX.EQ.0) VX=VX/(SQRPI*2.0)
|
||||
J=NZ-10
|
||||
IF(J.EQ.2) GO TO 1151
|
||||
DO 1150 M=1,KX
|
||||
MK=M+M+IFL
|
||||
VTEMP=0.0
|
||||
F1=F1*F2
|
||||
DO 1145 J=1,16
|
||||
F3=F1*CP(J)
|
||||
VTEMP=VTEMP-YLAM(J)*VX*F3/(1.0+F3)
|
||||
1145 CONTINUE
|
||||
U(MK )=U(MK )+VTEMP
|
||||
1150 CONTINUE
|
||||
GO TO 1170
|
||||
1151 CONTINUE
|
||||
DO 1160 M=1,KX
|
||||
MK=M+M+IFL
|
||||
VTEMP=0.0
|
||||
F1=F1*F2
|
||||
DO 1155 J=1,16
|
||||
F3=F1*CP(J)
|
||||
VTEMP=VTEMP+YLAM(J)*VX*F3/(1.0+F3)**2
|
||||
1155 CONTINUE
|
||||
U(MK )=U(MK )+VTEMP
|
||||
1160 CONTINUE
|
||||
1170 CONTINUE
|
||||
GO TO 6000
|
||||
1200 CONTINUE
|
||||
GO TO 1100
|
||||
C
|
||||
C HULTHEN WAVE FUNCTION= NORM*(EXP(-R/RY)-EXP(-R/RZ))/R
|
||||
C
|
||||
1300 CONTINUE
|
||||
READ (5,9000)G
|
||||
WRITE(6,9508)G
|
||||
T1=1.0/RY
|
||||
T2=1.0/RZ
|
||||
T3=T2**2-T1**2
|
||||
T4=SQRT(2.0*T1*(T1+T2)*T2)/(T2-T1)
|
||||
IF(VR.NE.0.0) KT=16.0* MIN (RY,RZ)/DRX
|
||||
IF(VR.EQ.0.0) KT=16.0* MAX (RY,RZ)/DRX
|
||||
KX=MIN0(KX,KMXX)
|
||||
F1=1.0
|
||||
F2=EXP(-DRX *T1)
|
||||
F3=1.0
|
||||
F4=EXP(-DRX *T2)
|
||||
R=0.0
|
||||
DO 1260 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(M)=T3*F3/(F1-F3)
|
||||
TEMP=1.0
|
||||
IF(VR.NE.0.0) TEMP=V(M)/FACT
|
||||
U(MK )=U(MK )+TEMP*T4*(F1-F3)/R
|
||||
1260 CONTINUE
|
||||
GO TO 6000
|
||||
1400 CONTINUE
|
||||
1500 CONTINUE
|
||||
1600 CONTINUE
|
||||
1700 CONTINUE
|
||||
go to 6000
|
||||
1800 CONTINUE
|
||||
DO 1860 M=1,KX
|
||||
MK=M+M-1
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )-VR*F1/(1.0+F1)
|
||||
V(MK+1)=V(MK+1)-VI*F3/(1.0+F3)
|
||||
1860 CONTINUE
|
||||
GO TO 6000
|
||||
1900 CONTINUE
|
||||
c
|
||||
c Coulomb excitation for a deformed uniform charge distribution
|
||||
c
|
||||
IF(ICHK.EQ.0) THEN
|
||||
READ (5,9000) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
WRITE(6,9000)
|
||||
WRITE(6,9512) (ABETA(J),FLDF(J) ,J=1,3)
|
||||
ENDIF
|
||||
if(vr.eq.0.0) vr=1.0
|
||||
do 1990 i=1,3
|
||||
beta=abeta(i)
|
||||
if(beta.ne.0.0) then
|
||||
c set flag for unbound stripping evaluation of coulomb ex.
|
||||
ibx=4
|
||||
flam1=beta*sqrt(float(2*lamx+1)/(4.0*pi))
|
||||
flam2=flam1*phasef(lamx)
|
||||
c
|
||||
if(ngx.ne.ng) then
|
||||
ngx=ng
|
||||
call legaus(2*ng,xg,wg)
|
||||
endif
|
||||
c
|
||||
an=0.0
|
||||
do 1920 k=1,ng
|
||||
p1=0.0
|
||||
p2=1.0
|
||||
if(lamx.gt.0) then
|
||||
do 1910 j=1,lamx
|
||||
p3=(float(2*j-1)*xg(k)*p2 - float(j-1)*p1)/float(j)
|
||||
p1=p2
|
||||
p2=p3
|
||||
1910 continue
|
||||
endif
|
||||
plm(k)=p2
|
||||
c
|
||||
c calculate normalization
|
||||
c
|
||||
r1=rcx*(1.0+flam1*p2)
|
||||
r2=rcx*(1.0+flam2*p2)
|
||||
an=an+(r1**3+r2**3)*wg(k)
|
||||
1920 continue
|
||||
c
|
||||
an =an/3.0
|
||||
c
|
||||
r =0.0
|
||||
c
|
||||
do 1940 m=1,kx
|
||||
mk=m+m-1
|
||||
r=r+drx
|
||||
sum=0.0
|
||||
do 1930 k=1,ng
|
||||
r1=rcx*(1.0+flam1*plm(k))
|
||||
r2=rcx*(1.0+flam2*plm(k))
|
||||
c
|
||||
if(r.gt.r1) then
|
||||
s1=r1**(lamx+3)/(r**(lamx+1)*float(lamx+3))
|
||||
else
|
||||
if(lamx.eq.2) then
|
||||
s1=( log(r1/r)+1.0/float(lamx+3))*r**2
|
||||
else
|
||||
s1=(r**lamx/r1**(lamx-2)
|
||||
1 -float(2*lamx+1)*r**2/float(lamx+3))/float(2-lamx)
|
||||
endif
|
||||
endif
|
||||
c
|
||||
if(r.gt.r2) then
|
||||
s2=r2**(lamx+3)/(r**(lamx+1)*float(lamx+3))
|
||||
else
|
||||
if(lamx.eq.2) then
|
||||
s2=( log(r2/r)+1.0/float(lamx+3))*r**2
|
||||
else
|
||||
s2=(r**lamx/r2**(lamx-2)
|
||||
1 -float(2*lamx+1)*r**2/float(lamx+3))/float(2-lamx)
|
||||
endif
|
||||
endif
|
||||
c
|
||||
sum=sum+(s1+s2*phasef(lamx))*wg(k)*plm(k)
|
||||
1930 continue
|
||||
c
|
||||
sum=sum/an
|
||||
if(beta.ne.0.0.and.lamx.ne.0) sum=sum/flam1
|
||||
u(mk )=u(mk )+sum*(vr*etakx/fact)
|
||||
1940 continue
|
||||
endif
|
||||
1990 continue
|
||||
GO TO 6000
|
||||
C
|
||||
C VECTOR POTENTIAL
|
||||
C VSOR, VSOI ARE THE THIRD PARAMETERS
|
||||
C IN THE 3 PARAMETER FERMI MODEL
|
||||
C [1 + VSO?*(R/R?)**2]
|
||||
C
|
||||
2000 CONTINUE
|
||||
IVFLAG=-1
|
||||
R=0.0
|
||||
DO 2060 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
U(MK )=U(MK )-VR*F1*(1.0+VSOR*(R/RR)**2)/(1.0+F1)
|
||||
U(MK+1)=U(MK+1)-VI*F3*(1.0+VSOI*(R/RI)**2)/(1.0+F3)
|
||||
2060 CONTINUE
|
||||
GO TO 6020
|
||||
C
|
||||
C SCALAR POTENTIAL
|
||||
C VSOR, VSOI ARE THE FERMI THIRD PARAMETERS
|
||||
C IN THE 3 PARAMETER FERMI MODEL
|
||||
C [1 + VSO?*(R/R?)**2]
|
||||
C
|
||||
2100 CONTINUE
|
||||
ISFLAG=-1
|
||||
VR=VR*(SFACT/VFACT)
|
||||
VI=VI*(SFACT/VFACT)
|
||||
R=0.0
|
||||
DO 2160 M=1,KX
|
||||
MK=M+M-1
|
||||
R=R+DRX
|
||||
F1=F1*F2
|
||||
F3=F3*F4
|
||||
V(MK )=V(MK )-VR*F1*(1.0+VSOR*(R/RR)**2)/(1.0+F1)
|
||||
V(MK+1)=V(MK+1)-VI*F3*(1.0+VSOI*(R/RI)**2)/(1.0+F3)
|
||||
2160 CONTINUE
|
||||
GO TO 6020
|
||||
C
|
||||
C END OF POTENTIALS
|
||||
C
|
||||
6000 CONTINUE
|
||||
IDIRAC=1
|
||||
6020 CONTINUE
|
||||
IF(KFLAG.NE.0.OR.NZ.GT.5) GO TO 6050
|
||||
IF(ABS(VSOR)+ABS(VSOI).EQ.0.0) GO TO 6050
|
||||
NZ=NZ+3
|
||||
KFLAG=1
|
||||
VR=VR*VSOR/45.2
|
||||
VI=VI*VSOI/45.2
|
||||
GO TO 83
|
||||
6050 CONTINUE
|
||||
IF(FZ.GT.0.0) GO TO 70
|
||||
C
|
||||
C PROCESS DIRAC POTENTIALS
|
||||
C
|
||||
C ENTRY WITH U -> K**2 - VFACT*V VFACT = 2.0*W1 /HBARC**2
|
||||
C V -> - SFACT*S SFACT = 2.0*FM1/HBARC**2
|
||||
C
|
||||
IF(IVFLAG.NE.0.AND.ISFLAG.NE.0) THEN
|
||||
IF(IDIRAC.EQ.1) THEN
|
||||
WRITE(6,9515)
|
||||
ENDIF
|
||||
IDIRAC=-1
|
||||
C
|
||||
C KT2=KX+KX
|
||||
C WRITE(20,7777)' ENTRY POTENTIALS'
|
||||
C WRITE(20,7778)(U(I),I=1,KT2)
|
||||
C WRITE(20,7777)
|
||||
C WRITE(20,7778)(V(I),I=1,KT2)
|
||||
W1M1=(VFACT+SFACT)*0.5*HBARC2
|
||||
|
||||
DO 6100 M=1,Kx
|
||||
MK=M+M-1
|
||||
VVR=(U(MK )-FKX**2)/VFACT
|
||||
VVI= U(MK+1) /VFACT
|
||||
VSR= V(MK ) /SFACT
|
||||
VSI= V(MK+1) /SFACT
|
||||
U(MK )=U(MK )+V(MK ) +(VVR**2-VVI**2 - VSR**2+VSI**2)/HBARC2
|
||||
U(MK+1)=U(MK+1)+V(MK+1) +(VVR*VVI - VSR*VSI)*2.0/HBARC2
|
||||
T1 = W1M1 + VVR-VSR
|
||||
T2 = VVI-VSI
|
||||
V(MK )=0.5* LOG (T1**2 + T2**2)
|
||||
V(MK+1)=ATAN2(T2,T1)
|
||||
6100 CONTINUE
|
||||
C WRITE(20,7777)' SECOND POTENTIALS'
|
||||
C WRITE(20,7778)(U(I),I=1,KT2)
|
||||
C WRITE(20,7777)
|
||||
C WRITE(20,7778)(V(I),I=1,KT2)
|
||||
C
|
||||
R=FLOAT(KX+1)*DRX
|
||||
MK=KX+KX-1
|
||||
D2=V(MK )
|
||||
D1=D2
|
||||
A2=V(MK+1)
|
||||
A1=A2
|
||||
IBX=1
|
||||
DO 6150 M=2,KX
|
||||
MK=MK-2
|
||||
R=R-DRX
|
||||
D3=D2
|
||||
D2=D1
|
||||
D1=V(MK )
|
||||
A3=A2
|
||||
A2=A1
|
||||
A1=V(MK+1)
|
||||
C FIRST DERIVATIVE TERMS
|
||||
DPR=(D3-D1)/(2.0*DRX)
|
||||
DPI=(A3-A1)/(2.0*DRX)
|
||||
V(MK+2)=2.0*DPR/R
|
||||
V(MK+3)=2.0*DPI/R
|
||||
C SECOND DERIVATIVE TERMS
|
||||
DPPR=(D3+D1-2.0*D2)/DRX**2
|
||||
DPPI=(A3+A1-2.0*A2)/DRX**2
|
||||
UDR =0.5*DPPR-0.25*(DPR**2-DPI**2)+DPR/R
|
||||
UDI =0.5*DPPI-0.25*(2.0*DPR*DPI )+DPI/R
|
||||
C UD(MK+2)=UDR
|
||||
C UD(MK+3)=UDI
|
||||
U(MK+2)=U(MK+2)+UDR
|
||||
U(MK+3)=U(MK+3)+UDI
|
||||
6150 CONTINUE
|
||||
V(1 )=V(3 )*2.0
|
||||
V(2 )=V(4 )*2.0
|
||||
U(1 )=U(1 )+UDR
|
||||
U(2 )=U(2 )+UDI
|
||||
C WRITE(20,7777)'TERTIARY POTENTIALS'
|
||||
C WRITE(20,7777)'CENTRAL POTENTIAL'
|
||||
C WRITE(20,7778)(U(I),I=1,KT2)
|
||||
C WRITE(20,7777)'SPIN ORBIT POTENTIAL'
|
||||
C WRITE(20,7778)(V(I),I=1,KT2)
|
||||
C WRITE(20,7777)'UD - DARWIN TERM'
|
||||
C WRITE(20,7778)(UD(I),I=1,KT2)
|
||||
C 7777 FORMAT(A30)
|
||||
C 7778 FORMAT(' ',1P10E12.4)
|
||||
ENDIF
|
||||
C
|
||||
IF(IDIRAC.EQ.1) IDIRAC=0
|
||||
RETURN
|
||||
C
|
||||
9000 FORMAT(10F8.4)
|
||||
9100 FORMAT(5E16.7)
|
||||
9508 FORMAT(18X,9H NODES=,F9.4,9H L =,F9.4,9H 2*J =,F9.4
|
||||
1 ,9H 2*S =,F9.4,9H FISW =,F9.4)
|
||||
9509 FORMAT(A18,9H V RL =,F9.4,9H R0RL =,F9.4,9H A RL =,F9.4
|
||||
1 ,9H R RL =,F9.4,9H VSOR =,F9.4)
|
||||
9510 FORMAT(18X,9H V IM =,F9.4,9H R0IM =,F9.4,9H A IM =,F9.4
|
||||
1 ,9H R IM =,F9.4,9H VSOI =,F9.4,9H POWR =,F9.4)
|
||||
9512 FORMAT(18X,9H BETA1=,F9.4,9H LDFR1=,F9.4,9H BETA2=,F9.4
|
||||
1 ,9H LDFR2=,F9.4,9H BETA3=,F9.4,9H LDFR3=,F9.4)
|
||||
9515 FORMAT('0',20('*'),' WARNING, Mixing of Dirac and non-Dirac'
|
||||
1, ' potentials may be hazardous to your calculation'
|
||||
2, 20('*'))
|
||||
END
|
137
dwuck4/culib8/SLATER.FOR
Normal file
137
dwuck4/culib8/SLATER.FOR
Normal file
|
@ -0,0 +1,137 @@
|
|||
|
||||
c***********************************************************************
|
||||
SUBROUTINE SLATR (KT,KMAX,DRF,VB,MINL,FMU,ICODE)
|
||||
c
|
||||
c computes the slater integrals for the microscopic inelastic cases.
|
||||
c***********************************************************************
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
DIMENSION VB(800)
|
||||
C
|
||||
C YUKAWA SLATER EXPANSION
|
||||
C
|
||||
KM =KMAX
|
||||
R=0.0
|
||||
IF(ICODE.EQ.2) GO TO 101
|
||||
C
|
||||
C HANKEL FUNCTION*EXP(+FMU*R)
|
||||
C
|
||||
F1=1.0
|
||||
F2=EXP(-FMU*DRF)
|
||||
DO 100 M=1,KT
|
||||
R=R+DRF
|
||||
X=FMU*R
|
||||
F1=F1*F2
|
||||
AZ=(1.0-F1*F1)/(2.0*X)
|
||||
B2=1.0/X
|
||||
B1=B2*(1.0+B2)
|
||||
FL=-1.0
|
||||
DO 50 LL=1,MINL
|
||||
B3=FL*B2/X+B1
|
||||
B1=B2
|
||||
B2=B3
|
||||
FL=FL+2.0
|
||||
50 CONTINUE
|
||||
VB(M+KM )=B2
|
||||
C
|
||||
C BESSEL FUNCTION*EXP(-FMU*R)
|
||||
C
|
||||
MAX=2.0*X+10.0
|
||||
MAX=MAX0(MAX,MINL+5)
|
||||
A3=0.0
|
||||
A2=1.0
|
||||
FL=MAX+MAX+3
|
||||
DO 70 LL=1,MAX
|
||||
N=MAX+1-LL
|
||||
FL=FL-2.0
|
||||
A1=A3+FL*A2/X
|
||||
IF(N.LT.MINL) GO TO 69
|
||||
IF(ABS(A1).LT.1.0E+20) GO TO 69
|
||||
A1=A1*1.0E-20
|
||||
A2=A2*1.0E-20
|
||||
69 CONTINUE
|
||||
IF(N.EQ.MINL) TEMP=A1
|
||||
A3=A2
|
||||
A2=A1
|
||||
70 CONTINUE
|
||||
VB(M )=TEMP*AZ/A1
|
||||
100 CONTINUE
|
||||
RETURN
|
||||
C
|
||||
C COULOMB SLATER EXPANSION
|
||||
C
|
||||
101 CONTINUE
|
||||
FL=MINL+MINL-1
|
||||
DO 200 M=1,KT
|
||||
R=R+DRF
|
||||
A2=1.0
|
||||
DO 105 LL=1,MINL
|
||||
A2=A2*R
|
||||
105 CONTINUE
|
||||
VB(M )=A2/(R*FL)
|
||||
VB(M+KM )=1.0/A2
|
||||
200 CONTINUE
|
||||
RETURN
|
||||
END
|
||||
CDWK407
|
||||
SUBROUTINE RADIN(KT,KMAX,DRF,FMU,VB,UB,UC,SL,OPT,SI,KMT,SK)
|
||||
IMPLICIT REAL*8(A-H,O-Z)
|
||||
DIMENSION UB(400),UC(400),VB(800),SI(800),DG(2)
|
||||
DATA XRHO/80./
|
||||
FLOAT(III)=DFLOAT(III)
|
||||
C
|
||||
KM =KMAX
|
||||
KM2=KMAX*2
|
||||
KM3=KMAX*3
|
||||
DG(1)=2.0*DRF/3.0
|
||||
DG(2)=2.0*DG(1)
|
||||
F0=EXP( FMU*DRF)
|
||||
MMAX=XRHO/FMU/DRF
|
||||
R2=0.0
|
||||
SUMA=0.0
|
||||
SUMB=0.0
|
||||
SUMC=0.0
|
||||
SUMD=0.0
|
||||
DO 200 M=1,KT
|
||||
MK=M+M-1
|
||||
R2=R2+DRF
|
||||
F2=EXP(-FLOAT(MIN0(MMAX,M)-1)*FMU*DRF)
|
||||
SLL=0.0
|
||||
MX=1
|
||||
R1=0.0
|
||||
DO 100 MM=1,KT
|
||||
R1=R1+DRF
|
||||
MX=3-MX
|
||||
IF(IABS(M-MM).GT.MMAX) GO TO 100
|
||||
F1=DG(MX)*UB(MM)*UC(MM)*R1**2
|
||||
IF(M.GT.MM) GO TO 80
|
||||
IF(M.EQ.MM) GO TO 90
|
||||
F2=F2/F0
|
||||
TEMP=VB(M)*VB(MM+KM3)*F2
|
||||
GO TO 95
|
||||
80 CONTINUE
|
||||
TEMP=VB(MM+KM2)*VB(M+KM )*F2
|
||||
F2=F2*F0
|
||||
GO TO 95
|
||||
90 TEMP=0.5*(VB(M)*VB(M+KM3)+VB(M+KM2)*VB(M+KM ))
|
||||
95 CONTINUE
|
||||
SLL=SLL+F1*TEMP
|
||||
100 CONTINUE
|
||||
SLL=SLL*OPT
|
||||
R22=R2**2
|
||||
IF(M.EQ.KMT) SK=SLL
|
||||
SI(MK)=SI(MK)+SLL
|
||||
SUMA=SUMA+UB(M)*UC(M)*R22
|
||||
SUMB=SUMB+UB(M)*UC(M)*R22**2
|
||||
SUMC=SUMC+SLL*R22
|
||||
SUMD=SUMD+SLL*R22**2
|
||||
200 CONTINUE
|
||||
SUMA=SUMA*DRF
|
||||
SUMB=SUMB*DRF
|
||||
SUMC=SUMC*DRF
|
||||
SUMD=SUMD*DRF
|
||||
SL=SUMC
|
||||
WRITE(6,9100)SUMA,SUMB,SUMC,SUMD
|
||||
RETURN
|
||||
9100 FORMAT(13H0 J0 =,F11.4,7H J1 =,F11.4,7H K0 =,F11.4
|
||||
1 ,7H K1 =,F11.4)
|
||||
END
|
BIN
dwuck4/dw4_doc.pdf
Normal file
BIN
dwuck4/dw4_doc.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user