C C Program for coupled-channels equations for heavy-ion C fusion reactions C C The couplings are always treated to all orders. C c Two different modes of excitation (if any) both in the projectile c and the target (but with a simple harmonic coupling). C C last modification: December 22nd, 2005 c June 29th, 2010: closed channels c December 14th, 2010: delete the option "P=1-R" C IMPLICIT REAL*8 (A-H,O-Z) CHARACTER*1 ANS C C Parameters: C NLEVELMAX - maximum number of intrinsic levels to be included C PARAMETER (NLEVELMAX=30,NRMAX=5000) C C Principal global variables C C P - penetrability C SIGMA - fusion cross section, unit mb C SPIN - mean angular momentum C C AP,ZP,RP - atomic #, proton # and radius of the projectile C AT,ZT,RT - those of the target C RMASS - reduced mass, unit MeV/c**2 C ANMASS - nucleon mass, unit MeV/c**2 C E - bombarding energy in the center of mass frame, unit MeV C V0,R0,A0 - depth, range, and dissuseness parameters of uncoupled C nuclear potential, which is assumed to be a Woods-Saxon form C IVIBROT - option for intrinsic degree of freedom C = -1; no excitation (inert)/ =0 ; vibrational coupling/ C =1; rotational coupling C BETA - defeormation parameter C OMEGA - excitation energy of the oscillator C LAMBDA - multipolarity C NPHONON - the number of phonon to be included C BETA2 - static quadrupole deformation parameter C BETA4 - static hexadecapole deformation parameter C E2 - excitation energy of 2+ state in a rotational band C NROT - the number of levels in the rotational band to be included C (up to I^pi=2*NROT+ states are included) C L - angular momentum of the relative motion C CPOT - coupling matrix C DIMENSION CPOT0(NLEVELMAX,NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/INTR/IVIBROTP,IVIBROTT,NPROJ,NTARG COMMON/OSCP/BETAP,BETAPN,OMEGAP,LAMBDAP,NPHONONP COMMON/OSCP2/BETAP2,BETAP2N,OMEGAP2,LAMBDAP2,NPHONONP2 COMMON/ROTP/BETA2P,BETA4P,E2P,NROTP COMMON/OSCT/BETAT,BETATN,OMEGAT,LAMBDAT,NPHONONT COMMON/OSCT2/BETAT2,BETAT2N,OMEGAT2,LAMBDAT2,NPHONONT2 COMMON/ROTT/BETA2T,BETA4T,E2T,NROTT COMMON/DIMEN/NLEVEL COMMON/POT/V0,R0,A0,POW COMMON/DYN/E,RMASS COMMON/ANGULAR/L COMMON/SHAPE/RB,VB,CURV COMMON/GRID/RMIN,RMAX,DR COMMON/COUP/CPOT(NLEVELMAX,NLEVELMAX,0:NRMAX) COMMON/COUPH/CPOTH(NLEVELMAX,NLEVELMAX) COMMON/TRANS/FTR,QTRANS,IQ,NTRANS COMMON/MUT/IMUTUAL(0:NLEVELMAX,0:NLEVELMAX) COMMON/MUTp/IMUTUALp(0:NLEVELMAX,0:NLEVELMAX) COMMON/EIGEN/EV(NLEVELMAX),EVEC(NLEVELMAX,NLEVELMAX) C C Output files: C OUTPUT: detailed information of the calculation C cross.dat : fusion cross sections C spin.dat : averaged angular momenta C partial.dat: partial cross sections (being calculated only when a single C value of the energy is entered in the input file) C OPEN(7,FILE='cross.dat',STATUS='UNKNOWN') OPEN(8,FILE='spin.dat',STATUS='UNKNOWN') OPEN(9,FILE='OUTPUT',STATUS='UNKNOWN') OPEN(10,FILE='ccfull2.inp',STATUS='UNKNOWN') C C Define two constants used in various places C HBAR=197.329D0 PI=3.141592653D0 C C Input phase C ANMASS=938.D0 AP=16. ZP=8. AT=148. ZT=62. READ(10,*)AP,ZP,AT,ZT C r_coup, unit fm RP=1.2D0*AP**(1.D0/3.D0) RT=1.06D0*AT**(1.D0/3.D0) READ(10,*)RP,IVIBROTP,RT,IVIBROTT RP=RP*AP**(1.D0/3.D0) RT=RT*AT**(1.D0/3.D0) RMASS=AP*AT/(AP+AT)*ANMASS C----- c IVIBROTT=0 C = -1 for inert, =0 for vibration, =1 for rotation IF(IVIBROTT.EQ.-1) THEN NTARG=0 READ(10,*)OMEGA,BETA,ALAMBDA,NPHONON ELSEIF(IVIBROTT.EQ.0) THEN C (input for target phonon) OMEGAT=0.55D0 BETAT=0.182D0 LAMBDAT=2 NPHONONT=3 READ(10,*)OMEGAT,BETAT,LAMBDAT,NPHONONT NTARG=NPHONONT ELSE C (input for target rotation) E2T=0.D0 BETA2T=0.D0 BETA4T=0.D0 NROTT=0 LAMBDAT=2 READ(10,*)E2T,BETA2T,BETA4T,NROTT NTARG=NROTT ENDIF C----- C (input for target phonon (the second mode of excitation)) NPHONONT2=3 C =0; no second mode in the target OMEGAT2=1.16D0 BETAT2=0.236D0 LAMBDAT2=3 READ(10,*)OMEGAT2,BETAT2,LAMBDAT2,NPHONONT2 IF(IVIBROTT.EQ.-1) NPHONONT2=0 C----- C IVIBROTP=-1 C = -1 for inert, =0 for vibration, =1 for rotation IF(IVIBROTP.EQ.-1) THEN NPROJ=0 READ(10,*)OMEGAP,BETAP,ALAMBDAP,NPHONONP ELSE IF(IVIBROTP.EQ.0) THEN C (input for projectile phonon) OMEGAP=3.74D0 BETAP=0.339D0 LAMBDAP=3 NPHONONP=1 READ(10,*)OMEGAP,BETAP,LAMBDAP,NPHONONP NPROJ=NPHONONP ELSE C (input for projectile rotation) E2P=0.D0 BETA2P=0.D0 BETA4P=0.D0 NROTP=0 READ(10,*)E2P,BETA2P,BETA4P,NROTP NPROJ=NROTP ENDIF C (input for projectile phonon (the second mode of excitation)) NPHONONp2=3 C =0; no second mode in the target OMEGAp2=1.16D0 BETAp2=0.236D0 LAMBDAp2=3 READ(10,*)OMEGAp2,BETAp2,LAMBDAp2,NPHONONp2 IF(IVIBROTp.EQ.-1) NPHONONp2=0 NTRANS=0 C NTRANS= 0 ; no transfer channel/ =1 ; with transfer channel C FTRANS(R)=FTR*dVN(R)/dR C FTR=7.D0 QTRANS=5.21D0 READ(10,*)NTRANS,QTRANS,FTR C--------------- parameters for the nuclear potential R1=1.233D0*AP**(1.D0/3.D0)-0.98D0*AP**(-1.D0/3.D0) R2=1.233D0*AT**(1.D0/3.D0)-0.98D0*AT**(-1.D0/3.D0) R0=R1+R2+0.29D0 R12=R1*R2/(R1+R2) A0=0.63D0 GAMMA=0.95D0*(1.D0-1.8D0*(AP-2.D0*ZP)/AP*(AT-2.D0*ZT)/AT) V0=16.D0*PI*GAMMA*R12*A0 v0=31.67*r1*r2/(r1+r2) V0=1551D0 R0=0.95D0*(AP**(1.D0/3.D0)+AT**(1.D0/3.D0)) A0=1.05D0 READ(10,*)V0,R0,A0 R0=R0*(AP**(1.D0/3.D0)+AT**(1.D0/3.D0)) POW=1.D0 c WRITE(6,*)' Modified Woods-Saxon (power of WS) (n/y)?' c READ(5,1)ANS c 1 FORMAT(A1) c IF(ANS.EQ.'Y' .OR. ANS.EQ.'y') THEN c WRITE(6,*)'power=?' c READ(5,*)POW c IF(POW.EQ.0.D0) THEN c WRITE(6,*)'Power cannot be zero :^(' c STOP c ENDIF c ENDIF C the minimum energy, the maximum energy, and the energy step EMIN=53.D0 EMAX=72.D0 DE=2.D0*AT/(AP+AT)/6.D0 READ(10,*)EMIN,EMAX,DE RMAX=50.D0 DR=0.05D0 READ(10,*)RMAX,DR C========================================== end of input phase IF(IVIBROTT.NE.-1.AND.NTARG.EQ.0.AND.NPHONONT2.NE.0) THEN ivibrott=0 nphonont=nphonont2 nphonont2=0 omegat=omegat2 betat=betat2 lambdat=lambdat2 ntarg=nphonont endif IF(IVIBROTP.NE.-1.AND.NPROJ.EQ.0.AND.NPHONONP2.NE.0) THEN ivibrotp=0 nphononp=nphononp2 nphononp2=0 omegap=omegap2 betap=betap2 lambdap=lambdap2 nproj=nphononp endif CALL NUCLEUS NLEVEL=NLEVEL+NTRANS IF(NLEVEL.GT.NLEVELMAX) THEN WRITE(6,*)'Too many channels :^(' STOP ENDIF 100 WRITE(6,*) 'NLEVEL=',NLEVEL C Evaluation coupling matrix elements C------------------------------------------------------ L=0 C search a minimum of the Coulomb pocket RMIN CALL POTSHAPE ITERAT=INT((RMAX-RMIN)/DR)+1.D-6 IF(ITERAT+1.GT.NRMAX) THEN WRITE(6,*)'Too large grid !! :^(' STOP ENDIF RMAX=RMIN+DR*ITERAT CALL CMAT0 DO 29 IR=0,ITERAT+1 R=RMIN+DR*IR CALL CMAT(R,CPOT0) DO 31 I=1,NLEVEL DO 32 J=1,NLEVEL CPOT(I,J,IR)=CPOT0(I,J) 32 CONTINUE 31 CONTINUE 29 CONTINUE RH=RMIN+DR/2.D0 CALL CMAT(RH,CPOTH) WRITE(9,99) WRITE(9,97) 99 FORMAT(/,' Ecm (MeV) sigma (mb) ') 97 FORMAT(' -------------------------------------') IWARN=0 C start the energy loop C------------------------------------------------------------- IF(DE.EQ.0.D0) THEN IESTEP=0 ELSE IESTEP=(EMAX-EMIN)/DE+1.D-6 ENDIF IF(IESTEP.EQ.0) THEN OPEN(11,FILE='partial.dat',STATUS='UNKNOWN') ENDIF DO 10 I=0,IESTEP E=EMIN+DE*I SIGMA=0.D0 SPIN=0.D0 C angular momentum loop C----------------------- DO 20 L=0,200 S0=SIGMA RMIN0=RMIN CALL POTSHAPE RMIN00=RMIN RMIN=RMIN0 IF(V(RMIN00).GT.E.OR.RMIN00.LT.0.D0) THEN P=0.D0 IF(L.NE.0.AND.IWARN.EQ.0) THEN WRITE(6,*)' ' WRITE(6,*)'!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!' WRITE(6,*)'Shallow potential!!!!' WRITE(6,*)'You may get an oscillatioin in BD at E > ', E WRITE(6,*)'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' WRITE(6,*)' ' WRITE(9,*)' ' WRITE(9,*)'!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!' WRITE(9,*)'Shallow potential!!!!' WRITE(9,*)'You may get an oscillatioin in BD at E > ', E WRITE(9,*)'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' WRITE(9,*)' ' IWARN=1 ENDIF GO TO 15 ENDIF C C integration of the c.c. equations CALL MNUMEROV(P) C IF(L.EQ.0) WRITE(9,*)E,P IF(NLEVEL.GT.10) WRITE(6,*)E,L*1.,P IF(IESTEP.EQ.0) THEN WRITE(11,*)E,L*1.,(2.D0*L+1.D0)*P*PI*HBAR**2/2.D0/RMASS/E*10.D0 ENDIF SIGMA=SIGMA+(2.D0*L+1.D0)*P*PI*HBAR**2/2.D0/RMASS/E*10.D0 SPIN=SPIN+L*(2.D0*L+1.D0)*P*PI*HBAR**2/2.D0/RMASS/E*10.D0 IF(SIGMA-S0.LT.S0*1.D-4) GOTO 15 20 CONTINUE 15 IF(SIGMA.NE.0.D0) SPIN=SPIN/SIGMA WRITE(7,*)E,SIGMA WRITE(8,*)E,SPIN IF(SIGMA.LT.1.D-2) THEN WRITE(6,81)E,SIGMA,SPIN WRITE(9,81)E,SIGMA,SPIN ELSE WRITE(6,82)E,SIGMA,SPIN WRITE(9,82)E,SIGMA,SPIN ENDIF 10 CONTINUE 81 FORMAT(F15.5,E15.5,F15.5) 82 FORMAT(3F15.5) WRITE(6,*)'The program terminated normally :^)' IF(IWARN.EQ.1) THEN WRITE(6,*)' ' WRITE(6,*)'.....but you may get an oscillation in BD' WRITE(6,*)' (see OUTPUT file).' ENDIF STOP END C************************************************************* SUBROUTINE NUCLEUS C C Subroutine to record several input parameters in the C 'OUTPUT' file C C************************************************************* IMPLICIT REAL*8(A-H,O-Z) PARAMETER (NLEVELMAX=30) CHARACTER*1 ANS,SGN CHARACTER*2 TEXT,PRO,TARG DIMENSION TEXT(109) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/INTR/IVIBROTP,IVIBROTT,NPROJ,NTARG COMMON/OSCP/BETAP,BETAPN,OMEGAP,LAMBDAP,NPHONONP COMMON/OSCP2/BETAP2,BETAP2N,OMEGAP2,LAMBDAP2,NPHONONP2 COMMON/ROTP/BETA2P,BETA4P,E2P,NROTP COMMON/OSCT/BETAT,BETATN,OMEGAT,LAMBDAT,NPHONONT COMMON/OSCT2/BETAT2,BETAT2N,OMEGAT2,LAMBDAT2,NPHONONT2 COMMON/ROTT/BETA2T,BETA4T,E2T,NROTT COMMON/PHONON/NPHONON COMMON/DIMEN/NLEVEL COMMON/POT/V0,R0,A0,POW COMMON/DYN/E,RMASS COMMON/SHAPE/RB,VB,CURV COMMON/GRID/RMIN,RMAX,DR COMMON/TRANS/FTR,QTRANS,IQ,NTRANS COMMON/MUT/IMUTUAL(0:NLEVELMAX,0:NLEVELMAX) COMMON/MUTp/IMUTUALp(0:NLEVELMAX,0:NLEVELMAX) DATA TEXT/'H ','He','Li','Be','B ','C ','N ','O ','F ','Ne', &'Na','Mg','Al','Si','P ','S ','Cl','Ar','K ','Ca','Sc','Ti','V ', &'Cr','Mn','Fe','Co','Ni','Cu','Zn','Ga','Ge','As','Se','Br','Kr', &'Rb','Sr','Y ','Zr','Nb','Mo','Tc','Ru','Rh','Pd','Ag','Cd','In', &'Sn','Sb','Te','I ','Xe','Cs','Ba','La','Ce','Pr','Nd','Pm','Sm', &'Eu','Gd','Tb','Dy','Ho','Er','Tm','Yb','Lu','Hf','Ta','W ','Re', &'Os','Ir','Pt','Au','Hg','Tl','Pb','Bi','Po','At','Rn','Fr','Ra', &'Ac','Th','Pa','U ','Np','Pu','Am','Cm','Bk','Cf','Es','Fm','Md', &'No','Lr','XX','X1','X2','X3','X4','04'/ NLEVEL=(NPROJ+1)*(NTARG+1) NP=ZP NPP=AP PRO=TEXT(NP) NT=ZT NTT=AT TARG=TEXT(NT) WRITE(9,*)NPP,PRO,' + ',NTT,TARG, ' Fusion reaction' WRITE(6,*)NPP,PRO,' + ',NTT,TARG, ' Fusion reaction' WRITE(9,30) WRITE(6,30) R0P=RP/AP**(1.D0/3.D0) R0T=RT/AT**(1.D0/3.D0) IF(NTARG.NE.0) THEN IF(IVIBROTT.EQ.0) THEN WRITE(6,21)BETAT,OMEGAT,LAMBDAT,NPHONONT 21 FORMAT('Phonon Excitation in the targ.: beta=',F6.3, & ', omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) BETATN=BETAT WRITE(6,*)' ' WRITE(6,*)' Different beta_N from beta_C for this mode(n/y)?' READ(5,1)ANS IF(ANS.EQ.'Y' .OR. ANS.EQ.'y') THEN WRITE(6,*)'beta_N=?' READ(5,*)BETATN ENDIF WRITE(9,211)BETATN,BETAT,r0T,OMEGAT,LAMBDAT,NPHONONT 211 FORMAT('Phonon Excitation in the targ.: beta_N=',F6.3, & ', beta_C=',F6.3,', r0=',F5.2,'(fm),', & /32X,'omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) ENDIF IF(IVIBROTT.EQ.1) THEN WRITE(9,22)BETA2T,BETA4T,R0T,E2T,NROTT WRITE(6,22)BETA2T,BETA4T,R0T,E2T,NROTT 22 FORMAT('Rotational Excitation in the targ.: beta2=',F6.3, & ', beta4=',F6.3,', r0=',F5.2,'(fm),', & /36X,'E2=',F5.2,'(MeV), Nrot=',I2) ENDIF ENDIF IF(NPHONONT2.NE.0) THEN WRITE(6,23)BETAT2,OMEGAT2,LAMBDAT2,NPHONONT2 23 FORMAT('Phonon Excitation in the targ.: beta=',F6.3, & ', omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) BETAT2N=BETAT2 WRITE(6,*)' ' WRITE(6,*)' Different beta_N from beta_C for this mode(n/y)?' READ(5,1)ANS IF(ANS.EQ.'Y' .OR. ANS.EQ.'y') THEN WRITE(6,*)'beta_N=?' READ(5,*)BETAT2N ENDIF WRITE(9,233)BETAT2N,BETAT2,R0T,OMEGAT2,LAMBDAT2,NPHONONT2 233 FORMAT('Phonon Excitation in the targ.: beta_N=',F6.3, & ', beta_C=',F6.3,', r0=',F5.2,'(fm),', & /32X, 'omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) CALL MUTUAL ENDIF IF(NPROJ.NE.0) THEN IF(IVIBROTP.EQ.0) THEN WRITE(6,24)BETAP,OMEGAP,LAMBDAP,NPHONONP 24 FORMAT('Phonon Excitation in the proj.: beta=',F6.3, & ', omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) BETAPN=BETAP WRITE(6,*)' ' WRITE(6,*)' Different beta_N from beta_C for this mode(n/y)?' READ(5,1)ANS IF(ANS.EQ.'Y' .OR. ANS.EQ.'y') THEN WRITE(6,*)'beta_N=?' READ(5,*)BETAPN ENDIF WRITE(9,244)BETAPN,BETAP,R0P,OMEGAP,LAMBDAP,NPHONONP 244 FORMAT('Phonon Excitation in the proj.: beta_N=',F6.3, & ', beta_C=',F6.3,', r0=',F5.2,'(fm),', & /32X, 'omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) ENDIF IF(IVIBROTP.EQ.1) THEN WRITE(9,25)BETA2P,BETA4P,R0P,E2P,NROTP WRITE(6,25)BETA2P,BETA4P,R0P,E2P,NROTP 25 FORMAT('Rotational Excitation in the proj.: beta2=',F6.3, & ', beta4=',F6.3,', r0=',F5.2,'(fm),', & /36X,'E2=',F5.2,'(MeV), Nrot=',I2) ENDIF ENDIF IF(NPHONONP2.NE.0) THEN WRITE(6,33)BETAP2,OMEGAP2,LAMBDAP2,NPHONONP2 33 FORMAT('Phonon Excitation in the proj.: beta=',F6.3, & ', omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) BETAP2N=BETAP2 WRITE(6,*)' ' WRITE(6,*)' Different beta_N from beta_C for this mode(n/y)?' READ(5,1)ANS IF(ANS.EQ.'Y' .OR. ANS.EQ.'y') THEN WRITE(6,*)'beta_N=?' READ(5,*)BETAP2N ENDIF WRITE(9,333)BETAP2N,BETAP2,R0P,OMEGAP2,LAMBDAP2,NPHONONP2 333 FORMAT('Phonon Excitation in the proj.: beta_N=',F6.3, & ', beta_C=',F6.3,', r0=',F5.2,'(fm),', & /32X, 'omega=',F5.2, '(MeV), Lambda=',I2,', Nph=',I2) CALL MUTUALP ENDIF IF(NTRANS.NE.0) THEN WRITE(9,30) WRITE(9,26)FTR, QTRANS WRITE(6,26)FTR, QTRANS 26 FORMAT('Transfer channel: Strength=',F5.2, & ', Q=',F5.2, '(MeV)') IQ=0 WRITE(6,*)' ' WRITE(6,*)'Which type (charge change)?' WRITE(6,*)' [0 for n-transfer, 1 for p-pick up,', & ' -1 for p-stripping, etc.]' READ(5,*)IQ IF(IQ.GT.0) THEN SGN='+' WRITE(6,291)SGN,IQ WRITE(9,291)SGN,IQ ELSE WRITE(6,29)IQ WRITE(9,29)IQ ENDIF 29 FORMAT(' Charge difference of the transfer partition:',I5) 291 FORMAT(' Charge difference of the transfer partition: ', & A,I2) WRITE(6,*)' ' ENDIF WRITE(9,30) R00=R0/(AP**(1.D0/3.D0)+AT**(1.D0/3.D0)) WRITE(9,27)V0,R00,A0,POW 27 FORMAT('Potential parameters: V0=', F8.2, '(MeV), r0=', & F5.2, '(fm), a=', F5.2, '(fm), power=',F5.2) CALL POTSHAPE WRITE(9,28)RB,VB,CURV 28 FORMAT(' Uncoupled barrier: Rb=', F5.2, '(fm), Vb=',F8.2, & '(MeV), Curv=',F5.2, '(MeV)') WRITE(9,30) 30 FORMAT('-------------------------------------------------') 1 FORMAT(A1) RETURN END C***************************************************************************** SUBROUTINE MUTUAL C C Subroutine to select levels to be included in the c.c. calculations C C***************************************************************************** IMPLICIT REAL*8(A-H,M,O-Z) PARAMETER (NLEVELMAX=30) CHARACTER*1 ANS,SIGN1,SIGN2 COMMON/INTR/IVIBROTP,IVIBROTT,NPROJ,NTARG COMMON/OSCT/BETAT,BETATN,OMEGAT,LAMBDAT,NPHONONT COMMON/OSCT2/BETAT2,BETAT2N,OMEGAT2,LAMBDAT2,NPHONONT2 COMMON/ROTT/BETA2T,BETA4T,E2T,NROTT COMMON/DIMEN/NLEVEL COMMON/TRANS/FTR,QTRANS,IQ,NTRANS COMMON/MUT/IMUTUAL(0:NLEVELMAX,0:NLEVELMAX) DO 10 I=0,NLEVELMAX DO 20 J=0,NLEVELMAX IMUTUAL(I,J)=0 20 CONTINUE 10 CONTINUE WRITE(6,*)' ' WRITE(6,*)'Mutual excitations in the *target* nucleus' WRITE(6,*)' Include the mutual excitations (y/n)?' READ(5,1)ANS 1 FORMAT(A1) IF(ANS.EQ.'n' .OR. ANS.EQ.'N') THEN IMUT=0 NLEVEL=(NTARG+NPHONONT2+1)*(NPROJ+1) c WRITE(9,99) c 99 FORMAT(1H ,'No mutual excitations in the target are included.') DO 80 I=0,NTARG DO 81 J=0,NPHONONT2 IF(I.EQ.0.OR.J.EQ.0) IMUTUAL(I,J)=1 81 CONTINUE 80 CONTINUE GOTO 70 ENDIF WRITE(6,*)' All the possible mutual excitation channels (n/y)?' READ(5,1)ANS IF(ANS.EQ.'Y' .OR. ANS.EQ.'y') THEN IMUT=1 NLEVEL=(NTARG+1)*(NPHONONT2+1)*(NPROJ+1) c WRITE(9,90) c 90 FORMAT(1H ,'All the possible mutual excitation channels' c & 1H ,'in the target are included.') DO 82 I=0,NTARG DO 83 J=0,NPHONONT2 IMUTUAL(I,J)=1 83 CONTINUE 82 CONTINUE GOTO 70 ENDIF IMUT=2 IF((-1.D0)**LAMBDAT.EQ.1.D0) SIGN1='+' IF((-1.D0)**LAMBDAT.EQ.-1.D0) SIGN1='-' IF((-1.D0)**LAMBDAT2.EQ.1.D0) SIGN2='+' IF((-1.D0)**LAMBDAT2.EQ.-1.D0) SIGN2='-' DO 30 I=0,NTARG DO 40 J=0,NPHONONT2 IF(I.EQ.0.OR.J.EQ.0) THEN IMUTUAL(I,J)=1 GOTO 40 ENDIF WRITE(6,94)' Include (',LAMBDAT,SIGN1,'^',I,',',LAMBDAT2,SIGN2, & '^',J,') state ? (y/n)' READ(5,1)ANS IF(ANS.EQ.'n' .OR. ANS.EQ.'N') THEN IMUTUAL(I,J)=0 GOTO 40 ENDIF IMUTUAL(I,J)=1 40 CONTINUE 30 CONTINUE 70 WRITE(9,*)' ' WRITE(9,93) WRITE(6,93) 93 FORMAT(1H ,' Excited states in the target to be included: ') NLEVEL=0 IF((-1.D0)**LAMBDAT.EQ.1.D0) SIGN1='+' IF((-1.D0)**LAMBDAT.EQ.-1.D0) SIGN1='-' IF((-1.D0)**LAMBDAT2.EQ.1.D0) SIGN2='+' IF((-1.D0)**LAMBDAT2.EQ.-1.D0) SIGN2='-' DO 50 I=0,NTARG DO 60 J=0,NPHONONT2 IF(IMUTUAL(I,J).EQ.0) GOTO 60 WRITE(9,94)' (',LAMBDAT,SIGN1,'^',I,',',LAMBDAT2,SIGN2, & '^',J,') state' WRITE(6,94)' (',LAMBDAT,SIGN1,'^',I,',',LAMBDAT2,SIGN2, & '^',J,') state' 94 FORMAT(1H ,A,I2,2A,I2,A,I2,2A,I2,A) NLEVEL=NLEVEL+1 60 CONTINUE 50 CONTINUE NLEVEL=NLEVEL*(NPROJ+1) RETURN END C***************************************************************************** SUBROUTINE MUTUALP C C Subroutine to select levels to be included in the c.c. calculations c (for the projectile excitation) C C***************************************************************************** IMPLICIT REAL*8(A-H,M,O-Z) PARAMETER (NLEVELMAX=30) CHARACTER*1 ANS,SIGN1,SIGN2 COMMON/INTR/IVIBROTP,IVIBROTT,NPROJ,NTARG COMMON/OSCP/BETAP,BETAPN,OMEGAP,LAMBDAP,NPHONONP COMMON/OSCP2/BETAP2,BETAP2N,OMEGAP2,LAMBDAP2,NPHONONP2 COMMON/ROTP/BETA2P,BETA4P,E2P,NROTP COMMON/DIMEN/NLEVEL COMMON/TRANS/FTR,QTRANS,IQ,NTRANS COMMON/MUTP/IMUTUALP(0:NLEVELMAX,0:NLEVELMAX) NLEVEL0=NLEVEL/(NPROJ+1) DO 10 I=0,NLEVELMAX DO 20 J=0,NLEVELMAX IMUTUALP(I,J)=0 20 CONTINUE 10 CONTINUE WRITE(6,*)' ' WRITE(6,*)'Mutual excitations in the *projectile* nucleus' WRITE(6,*)' Include the mutual excitations (y/n)?' READ(5,1)ANS 1 FORMAT(A1) IF(ANS.EQ.'n' .OR. ANS.EQ.'N') THEN IMUT=0 NLEVEL=(NPROJ+NPHONONP2+1)*nlevel0 c WRITE(9,99) c 99 FORMAT(1H ,'No mutual excitations in the target are included.') DO 80 I=0,Nproj DO 81 J=0,NPHONONp2 IF(I.EQ.0.OR.J.EQ.0) IMUTUALp(I,J)=1 81 CONTINUE 80 CONTINUE GOTO 70 ENDIF WRITE(6,*)' All the possible mutual excitation channels (n/y)?' READ(5,1)ANS IF(ANS.EQ.'Y' .OR. ANS.EQ.'y') THEN IMUT=1 NLEVEL=(NPHONONP2+1)*(NPROJ+1)*nlevel0 c WRITE(9,90) c 90 FORMAT(1H ,'All the possible mutual excitation channels' c & 1H ,'in the target are included.') DO 82 I=0,Nproj DO 83 J=0,NPHONONp2 IMUTUALp(I,J)=1 83 CONTINUE 82 CONTINUE GOTO 70 ENDIF IMUT=2 IF((-1.D0)**LAMBDAp.EQ.1.D0) SIGN1='+' IF((-1.D0)**LAMBDAp.EQ.-1.D0) SIGN1='-' IF((-1.D0)**LAMBDAp2.EQ.1.D0) SIGN2='+' IF((-1.D0)**LAMBDAp2.EQ.-1.D0) SIGN2='-' DO 30 I=0,Nproj DO 40 J=0,NPHONONp2 IF(I.EQ.0.OR.J.EQ.0) THEN IMUTUALp(I,J)=1 GOTO 40 ENDIF WRITE(6,94)' Include (',LAMBDAT,SIGN1,'^',I,',',LAMBDAT2,SIGN2, & '^',J,') state ? (y/n)' READ(5,1)ANS IF(ANS.EQ.'n' .OR. ANS.EQ.'N') THEN IMUTUALp(I,J)=0 GOTO 40 ENDIF IMUTUALp(I,J)=1 40 CONTINUE 30 CONTINUE 70 WRITE(9,*)' ' WRITE(9,93) WRITE(6,93) 93 FORMAT(1H ,' Excited states in the projectile to be included: ') NLEVEL=0 IF((-1.D0)**LAMBDAp.EQ.1.D0) SIGN1='+' IF((-1.D0)**LAMBDAp.EQ.-1.D0) SIGN1='-' IF((-1.D0)**LAMBDAp2.EQ.1.D0) SIGN2='+' IF((-1.D0)**LAMBDAp2.EQ.-1.D0) SIGN2='-' DO 50 I=0,Nproj DO 60 J=0,NPHONONp2 IF(IMUTUALp(I,J).EQ.0) GOTO 60 WRITE(9,94)' (',LAMBDAp,SIGN1,'^',I,',',LAMBDAp2,SIGN2, & '^',J,') state' WRITE(6,94)' (',LAMBDAp,SIGN1,'^',I,',',LAMBDAp2,SIGN2, & '^',J,') state' 94 FORMAT(1H ,A,I2,2A,I2,A,I2,2A,I2,A) NLEVEL=NLEVEL+1 60 CONTINUE 50 CONTINUE NLEVEL=NLEVEL*nlevel0 RETURN END C***************************************************************************** SUBROUTINE POTSHAPE C C shape of the bare Coulomb barrier, i.e. the barrier position, the curvature, C and the position of the Coulomb pocket C C***************************************************************************** IMPLICIT REAL*8(A-H,M,O-Z) COMMON/SHAPE/RB,VB,CURV COMMON/GRID/RMIN,RMAX,DR COMMON/DYN/E,RMASS COMMON/CONST/HBAR,PI EXTERNAL DV,V R=50.5D0 U0=DV(R) 10 R=R-1.D0 IF(R.LT.0.D0) THEN RB=-5.D0 RMIN=-5.D0 RETURN ENDIF U1=DV(R) IF(U0*U1.GT.0.D0) GOTO 10 RA=R+1.D0 RB=R TOLK=1.D-6 N=LOG10(ABS(RB-RA)/TOLK)/LOG10(2.D0)+0.5D0 DO 20 I=1,N R=(RA+RB)/2.D0 U=DV(R) IF(U0*U.LT.0.D0) THEN RB=R ELSE RA=R ENDIF 20 CONTINUE RB=R DDV00=(DV(RB+1.D-5)-DV(RB-1.D-5))/2.D-5 IF(DDV00.GT.0.D0) THEN WRITE(6,*)'SOMETHING IS STRANGE :^(' WRITE(8,*)'SOMETHING IS STRANGE :^(' STOP ENDIF CURV=HBAR*SQRT(ABS(DDV00)/RMASS) VB=V(RB) RA=RB-0.5D0 U0=DV(RA) RBB=0.5D0 U1=DV(RBB) TOLK=1.D-6 N=LOG10(ABS(RB-RA)/TOLK)/LOG10(2.D0)+0.5D0 DO 21 I=1,N R=(RA+RBB)/2.D0 U=DV(R) IF(U0*U.LT.0.D0) THEN RBB=R ELSE RA=R ENDIF 21 CONTINUE RMIN=R C WRITE(6,*)'RMIN=',RMIN,V(RMIN) C WRITE(6,*)'RB=',RB,V(RB) C WRITE(6,*)'CURV=',CURV00 RETURN END C************************************************************** SUBROUTINE MNUMEROV00(P) C C Subroutine for integration of the c.c. eqs. by modified C Numerov method C C************************************************************** IMPLICIT REAL*8 (A-H,O-Z) EXTERNAL V PARAMETER (NLEVELMAX=30,NRMAX=5000) DIMENSION PSI(NLEVELMAX),PSI0(NLEVELMAX),PSI1(NLEVELMAX) DIMENSION XI(NLEVELMAX),XI0(NLEVELMAX),XI1(NLEVELMAX) DIMENSION PHI0(NLEVELMAX) DIMENSION BB(NLEVELMAX,NLEVELMAX), & BIN(NLEVELMAX,NLEVELMAX) DIMENSION BB2(NLEVELMAX,NLEVELMAX) DIMENSION CC(NLEVELMAX,NLEVELMAX), & CIN(NLEVELMAX,NLEVELMAX) DIMENSION DD0(NLEVELMAX,NLEVELMAX),DD1(NLEVELMAX,NLEVELMAX) DIMENSION DD(NLEVELMAX) DIMENSION FCW(0:200),GCW(0:200),FPCW(0:200),GPCW(0:200) DIMENSION SIGMAD(0:200),IEXP(0:200) DIMENSION ECH(NLEVELMAX),ECH2(NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/DIMEN/NLEVEL COMMON/DYN/E,RMASS COMMON/ANGULAR/L COMMON/GRID/RMIN,RMAX,DR COMMON/COUP/CPOT(NLEVELMAX,NLEVELMAX,0:NRMAX) COMPLEX*16 K,KK,K2 COMPLEX*16 PSI,PSI0,PSI1,PHI0 COMPLEX*16 XI,XI0,XI1 COMPLEX*16 AI COMPLEX*16 CWUP0,CWDOWN0,CWUP1,CWDOWN1 COMPLEX*16 BB,BB2,BIN,CC,CIN,DD COMPLEX*16 DUMMY,DUMMY2 AI=(0.D0,1.D0) C define two constants used in this subroutine FAC=DR**2*(2.D0*RMASS/HBAR**2) ITERAT=INT((RMAX-RMIN)/DR) RMAX=RMIN+ITERAT*DR DO 22 LC=0,200 FCW(LC)=0.D0 GCW(LC)=0.D0 FPCW(LC)=0.D0 GPCW(LC)=0.D0 SIGMAD(LC)=0.D0 IEXP(LC)=0D0 22 CONTINUE DO 51 I=1,NLEVELMAX DO 52 J=1,NLEVELMAX BB(I,J)=0.D0 BIN(I,J)=0.D0 CC(I,J)=0.D0 CIN(I,J)=0.D0 52 CONTINUE DD(I)=0.D0 51 CONTINUE C integration of the io-th channel wave function from RMIN C========================================================== DO 15 IO=1,NLEVEL c write(6,*)'IO=',IO*1. DO 200 J1=1,NLEVEL PSI(J1)=0.D0 PSI0(J1)=0.D0 PSI1(J1)=0.D0 PHI0(J1)=0.D0 XI0(J1)=0.D0 XI1(J1)=0.D0 XI(J1)=0.D0 200 CONTINUE IF(IO.EQ.1) THEN DO IO2=1,NLEVEL ECH(IO2)=E-V(RMIN)-CPOT(IO2,IO2,0) ECH2(IO2)=E-CPOT(IO2,IO2,ITERAT) ENDDO ENDIF C initial conditions C---------- IF(ECH(IO).GT.0.D0) THEN K=SQRT(2.D0*RMASS/HBAR**2*ECH(IO)) PSI0(IO)=EXP(-AI*K*RMIN) PHI0(IO)=-AI*K*PSI0(IO) ELSE K=SQRT(2.D0*RMASS/HBAR**2*ABS(ECH(IO))) PSI0(IO)=EXP(K*RMIN) PHI0(IO)=K*PSI0(IO) ENDIF CALL RKUTTA00(PSI0,PHI0,PSI1) DO 91 I0=1,NLEVEL XI0(I0)=(1.D0-FAC/12.D0*(V(RMIN)-E))*PSI0(I0) XI1(I0)=(1.D0-FAC/12.D0*(V(RMIN+DR)-E))*PSI1(I0) DO 92 IC=1,NLEVEL XI0(I0)=XI0(I0)-FAC/12.D0*CPOT(I0,IC,0)*PSI0(IC) XI1(I0)=XI1(I0)-FAC/12.D0*CPOT(I0,IC,1)*PSI1(IC) 92 CONTINUE 91 CONTINUE DO 29 IR=2,ITERAT+1 C---------------------------------------------- ITERATIONS START R=RMIN+DR*IR R0=RMIN+DR*(IR-2) R1=RMIN+DR*(IR-1) DO 71 I0=1,NLEVEL DO 72 IC=1,NLEVEL DD0(I0,IC)=FAC/SQRT(12.D0)*CPOT(I0,IC,IR-1) IF(I0.EQ.IC) DD0(I0,IC)=DD0(I0,IC)+FAC/SQRT(12.D0)*(V(R1)-E) & +SQRT(3.D0) 72 CONTINUE 71 CONTINUE DO 73 I0=1,NLEVEL DO 74 IC=1,NLEVEL DD1(I0,IC)=0.D0 IF(I0.EQ.IC) DD1(I0,IC)=DD1(I0,IC)-1.D0 DO 75 IK=1,NLEVEL DD1(I0,IC)=DD1(I0,IC)+DD0(I0,IK)*DD0(IK,IC) 75 CONTINUE 74 CONTINUE 73 CONTINUE DO 54 I0=1,NLEVEL XI(I0)=-XI0(I0) DO 53 IC=1,NLEVEL XI(I0)=XI(I0)+DD1(I0,IC)*XI1(IC) 53 CONTINUE 54 CONTINUE IF(IR.EQ.ITERAT+1) GOTO 66 DO 42 I0=1,NLEVEL XI0(I0)=XI1(I0) XI1(I0)=XI(I0) 42 CONTINUE 29 CONTINUE C-------------------------------------------------------------- C Matching to the Coulomb wave function at RMAX 66 DO 56 I0=1,NLEVEL DO 55 IC=1,NLEVEL CC(I0,IC)=-FAC/12.D0*CPOT(I0,IC,ITERAT-1) IF(I0.EQ.IC) CC(I0,IC)=CC(I0,IC)-FAC/12.D0*(V(RMAX-DR)-E)+1.D0 55 CONTINUE 56 CONTINUE CALL MATINV(NLEVEL,CC,CIN) DO 94 I0=1,NLEVEL PSI0(I0)=0.D0 DO 93 IC=1,NLEVEL PSI0(I0)=PSI0(I0)+CIN(I0,IC)*XI0(IC) 93 CONTINUE 94 CONTINUE DO 556 I0=1,NLEVEL DO 555 IC=1,NLEVEL CC(I0,IC)=-FAC/12.D0*CPOT(I0,IC,ITERAT+1) IF(I0.EQ.IC) CC(I0,IC)=CC(I0,IC)-FAC/12.D0*(V(RMAX+DR)-E)+1.D0 555 CONTINUE 556 CONTINUE CALL MATINV(NLEVEL,CC,CIN) DO 944 I0=1,NLEVEL PSI(I0)=0.D0 DO 933 IC=1,NLEVEL PSI(I0)=PSI(I0)+CIN(I0,IC)*XI(IC) 933 CONTINUE 944 CONTINUE DO 60 II=1,NLEVEL C Coulomb wave function EC=E-CPOT(II,II,ITERAT-1) RHO=SQRT(2.D0*RMASS*EC)/HBAR*(RMAX-DR) ETA=(ZP*ZT/137.D0)*SQRT(RMASS/2.D0/EC) CALL DFCOUL(ETA,RHO,FCW,FPCW,GCW,GPCW,SIGMAD,L,IEXP) CWUP0=(GCW(L)+AI*FCW(L)) CWDOWN0=GCW(L)-AI*FCW(L) EC=E-CPOT(II,II,ITERAT+1) RHO=SQRT(2.D0*RMASS*EC)/HBAR*(RMAX+DR) ETA=(ZP*ZT/137.D0)*SQRT(RMASS/2.D0/EC) CALL DFCOUL(ETA,RHO,FCW,FPCW,GCW,GPCW,SIGMAD,L,IEXP) CWUP1=(GCW(L)+AI*FCW(L)) CWDOWN1=GCW(L)-AI*FCW(L) BB(IO,II)=(CWUP0*PSI(II)-CWUP1*PSI0(II)) & /(CWUP0*CWDOWN1-CWUP1*CWDOWN0) BB2(IO,II)=(CWDOWN1*PSI0(II)-CWDOWN0*PSI(II)) & /(CWUP0*CWDOWN1-CWUP1*CWDOWN0) 60 CONTINUE C--------------------------------------------------------------- 15 CONTINUE C=============================================================== C PENETRATION PROBABILITY C calculate the inversion of the matrix BB CALL MATINV(NLEVEL,BB,BIN) C P=0.D0 REF=0.D0 DO 85 IO=1,NLEVEL IF(ECH(IO).LT.0.D0) GOTO 85 K=SQRT((2.D0*RMASS/HBAR**2*ECH(IO))) K2=SQRT((2.D0*RMASS/HBAR**2*ECH2(IO))) KK=SQRT(2.D0*RMASS/HBAR**2*E) DUMMY=0.D0 DUMMY2=0.D0 DO IO2=1,NLEVEL DUMMY2=DUMMY2+BIN(1,IO2)*BB2(IO2,IO) ENDDO P=P+(ABS(BIN(1,IO)))**2*K/KK REF=REF+(ABS(DUMMY2))**2*K2/KK 85 CONTINUE c IF(P+REF.GT.1.1D0) THEN c WRITE(6,*)'Penetrability > 1.1 !!!!!' c WRITE(6,*)'Something must be strange (accuracy problem) :^(' c STOP c ENDIF IF(P.GT.0.99D0) P=1.D0-REF RETURN END C************************************************************** SUBROUTINE MNUMEROV0(P) C C Subroutine for integration of the c.c. eqs. by modified C Numerov method C C A similar stabilization method as that given in C Z.H. Levine, PRA30('84) 1120 C T.N. Rescigno and A.E. Orel, PRA25('82)2402 C is used in the routine. C C The linear independence condition is imposed at the barrier position. C C************************************************************** IMPLICIT REAL*8 (A-H,O-Z) EXTERNAL V PARAMETER (NLEVELMAX=30,ISTAB0=5,NRMAX=5000) DIMENSION PSI(NLEVELMAX),PSI0(NLEVELMAX),PSI1(NLEVELMAX) DIMENSION XI(NLEVELMAX,NLEVELMAX),XI0(NLEVELMAX,NLEVELMAX), & XI1(NLEVELMAX,NLEVELMAX) DIMENSION PHI0(NLEVELMAX) DIMENSION BB(NLEVELMAX,NLEVELMAX), & BIN(NLEVELMAX,NLEVELMAX) DIMENSION BB2(NLEVELMAX,NLEVELMAX) DIMENSION CC(NLEVELMAX,NLEVELMAX), & CIN(NLEVELMAX,NLEVELMAX) DIMENSION DD0(NLEVELMAX,NLEVELMAX),DD1(NLEVELMAX,NLEVELMAX) DIMENSION DD(NLEVELMAX) DIMENSION FCW(0:200),GCW(0:200),FPCW(0:200),GPCW(0:200) DIMENSION SIGMAD(0:200),IEXP(0:200) DIMENSION ECH(NLEVELMAX),ECH2(NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/DIMEN/NLEVEL COMMON/DYN/E,RMASS COMMON/ANGULAR/L COMMON/GRID/RMIN,RMAX,DR COMMON/COUP/CPOT(NLEVELMAX,NLEVELMAX,0:NRMAX) COMMON/SHAPE/RB,VB,CURV COMPLEX*16 K,KK,K2 COMPLEX*16 PSI,PSI0,PSI1,PHI0 COMPLEX*16 XI,XI0,XI1 COMPLEX*16 AI COMPLEX*16 CWUP0,CWDOWN0,CWUP1,CWDOWN1 COMPLEX*16 BB,BB2,BIN,CC,CIN,DD COMPLEX*16 DUMMY,DUMMY2 COMPLEX*16 XI1D(NLEVELMAX,NLEVELMAX) COMPLEX*16 XI0D(NLEVELMAX,NLEVELMAX) COMPLEX*16 AA(NLEVELMAX,NLEVELMAX) COMPLEX*16 BB0(NLEVELMAX,NLEVELMAX) COMPLEX*16 BB20(NLEVELMAX,NLEVELMAX) AI=(0.D0,1.D0) C define two constants used in this subroutine FAC=DR**2*(2.D0*RMASS/HBAR**2) ITERAT=INT((RMAX-RMIN)/DR) RMAX=RMIN+ITERAT*DR IBARRIER=(RB-RMIN)/DR+1.D-6 DO 22 LC=0,200 FCW(LC)=0.D0 GCW(LC)=0.D0 FPCW(LC)=0.D0 GPCW(LC)=0.D0 SIGMAD(LC)=0.D0 IEXP(LC)=0D0 22 CONTINUE DO 51 I=1,NLEVELMAX DO 52 J=1,NLEVELMAX BB(I,J)=0.D0 BIN(I,J)=0.D0 CC(I,J)=0.D0 CIN(I,J)=0.D0 AA(I,J)=0.D0 52 CONTINUE DD(I)=0.D0 51 CONTINUE DO I=1,NLEVEL AA(I,I)=1.D0 ENDDO C initial conditions C========================================================== DO 15 IO=1,NLEVEL c write(6,*)'IO=',IO*1. DO 200 J1=1,NLEVEL PSI(J1)=0.D0 PSI0(J1)=0.D0 PSI1(J1)=0.D0 PHI0(J1)=0.D0 200 CONTINUE IF(IO.EQ.1) THEN DO IO2=1,NLEVEL ECH(IO2)=E-V(RMIN)-CPOT(IO2,IO2,0) ECH2(IO2)=E-CPOT(IO2,IO2,ITERAT) ENDDO ENDIF IF(ECH(IO).GT.0.D0) THEN K=SQRT(2.D0*RMASS/HBAR**2*ECH(IO)) PSI0(IO)=EXP(-AI*K*RMIN) PHI0(IO)=-AI*K*PSI0(IO) ELSE K=SQRT(2.D0*RMASS/HBAR**2*ABS(ECH(IO))) PSI0(IO)=EXP(K*RMIN) PHI0(IO)=K*PSI0(IO) ENDIF CALL RKUTTA00(PSI0,PHI0,PSI1) DO 91 I0=1,NLEVEL XI0(I0,IO)=(1.D0-FAC/12.D0*(V(RMIN)-E))*PSI0(I0) XI1(I0,IO)=(1.D0-FAC/12.D0*(V(RMIN+DR)-E))*PSI1(I0) DO 92 IC=1,NLEVEL XI0(I0,IO)=XI0(I0,IO)-FAC/12.D0*CPOT(I0,IC,0)*PSI0(IC) XI1(I0,IO)=XI1(I0,IO)-FAC/12.D0*CPOT(I0,IC,1)*PSI1(IC) 92 CONTINUE 91 CONTINUE 15 CONTINUE C=============== ISTAB=0 DO 29 IR=2,ITERAT+1 C---------------------------------------------- ITERATIONS START R=RMIN+DR*IR R0=RMIN+DR*(IR-2) R1=RMIN+DR*(IR-1) ISTAB=ISTAB+1 DO 71 I0=1,NLEVEL DO 72 IC=1,NLEVEL DD0(I0,IC)=FAC/SQRT(12.D0)*CPOT(I0,IC,IR-1) IF(I0.EQ.IC) DD0(I0,IC)=DD0(I0,IC)+FAC/SQRT(12.D0)*(V(R1)-E) & +SQRT(3.D0) 72 CONTINUE 71 CONTINUE DO 73 I0=1,NLEVEL DO 74 IC=1,NLEVEL DD1(I0,IC)=0.D0 IF(I0.EQ.IC) DD1(I0,IC)=DD1(I0,IC)-1.D0 DO 75 IK=1,NLEVEL DD1(I0,IC)=DD1(I0,IC)+DD0(I0,IK)*DD0(IK,IC) 75 CONTINUE 74 CONTINUE 73 CONTINUE DO 16 ICH=1,NLEVEL DO 54 I0=1,NLEVEL XI(I0,ICH)=-XI0(I0,ICH) DO 53 IC=1,NLEVEL XI(I0,ICH)=XI(I0,ICH)+DD1(I0,IC)*XI1(IC,ICH) 53 CONTINUE 54 CONTINUE 16 CONTINUE IF(IR.EQ.ITERAT+1) GOTO 66 IF(r.lt.12.d0.and.ISTAB.EQ.ISTAB0) THEN CALL STABILIZE(XI1,XI,AA,IR) ISTAB=0 ENDIF c IF(IR.EQ.IBARRIER) CALL STABILIZE(XI1,XI,AA,IR) DO ICH=1,NLEVEL DO I0=1,NLEVEL XI0(I0,ICH)=XI1(I0,ICH) XI1(I0,ICH)=XI(I0,ICH) ENDDO ENDDO 29 CONTINUE C-------------------------------------------------------------- C Matching to the Coulomb wave function at RMAX 66 DO 17 IO=1,NLEVEL DO 56 I0=1,NLEVEL DO 55 IC=1,NLEVEL CC(I0,IC)=-FAC/12.D0*CPOT(I0,IC,ITERAT-1) IF(I0.EQ.IC) CC(I0,IC)=CC(I0,IC)-FAC/12.D0*(V(RMAX-DR)-E)+1.D0 55 CONTINUE 56 CONTINUE CALL MATINV(NLEVEL,CC,CIN) DO 94 I0=1,NLEVEL PSI0(I0)=0.D0 DO 93 IC=1,NLEVEL PSI0(I0)=PSI0(I0)+CIN(I0,IC)*XI0(IC,IO) 93 CONTINUE 94 CONTINUE DO 556 I0=1,NLEVEL DO 555 IC=1,NLEVEL CC(I0,IC)=-FAC/12.D0*CPOT(I0,IC,ITERAT+1) IF(I0.EQ.IC) CC(I0,IC)=CC(I0,IC)-FAC/12.D0*(V(RMAX+DR)-E)+1.D0 555 CONTINUE 556 CONTINUE CALL MATINV(NLEVEL,CC,CIN) DO 944 I0=1,NLEVEL PSI(I0)=0.D0 DO 933 IC=1,NLEVEL PSI(I0)=PSI(I0)+CIN(I0,IC)*XI(IC,IO) 933 CONTINUE 944 CONTINUE DO 60 II=1,NLEVEL C Coulomb wave function EC=E-CPOT(II,II,ITERAT-1) RHO=SQRT(2.D0*RMASS*EC)/HBAR*(RMAX-DR) ETA=(ZP*ZT/137.D0)*SQRT(RMASS/2.D0/EC) CALL DFCOUL(ETA,RHO,FCW,FPCW,GCW,GPCW,SIGMAD,L,IEXP) CWUP0=(GCW(L)+AI*FCW(L)) CWDOWN0=GCW(L)-AI*FCW(L) EC=E-CPOT(II,II,ITERAT+1) RHO=SQRT(2.D0*RMASS*EC)/HBAR*(RMAX+DR) ETA=(ZP*ZT/137.D0)*SQRT(RMASS/2.D0/EC) CALL DFCOUL(ETA,RHO,FCW,FPCW,GCW,GPCW,SIGMAD,L,IEXP) CWUP1=(GCW(L)+AI*FCW(L)) CWDOWN1=GCW(L)-AI*FCW(L) BB0(II,IO)=(CWUP0*PSI(II)-CWUP1*PSI0(II)) & /(CWUP0*CWDOWN1-CWUP1*CWDOWN0) BB20(II,IO)=(CWDOWN1*PSI0(II)-CWDOWN0*PSI(II)) & /(CWUP0*CWDOWN1-CWUP1*CWDOWN0) 60 CONTINUE C--------------------------------------------------------------- 17 CONTINUE C=============================================================== C PENETRATION PROBABILITY DO I=1,NLEVEL DO J=1,NLEVEL BB(I,J)=0.D0 BB2(I,J)=0.D0 DO J2=1,NLEVEL BB(I,J)=BB(I,J)+BB0(I,J2)*AA(J2,J) BB2(I,J)=BB2(I,J)+BB20(I,J2)*AA(J2,J) ENDDO ENDDO ENDDO C calculate the inversion of the matrix BB CALL MATINV(NLEVEL,BB,BIN) C P=0.D0 REF=0.D0 DO 85 IO=1,NLEVEL IF(ECH(IO).LT.0.D0) GOTO 85 K=SQRT((2.D0*RMASS/HBAR**2*ECH(IO))) K2=SQRT((2.D0*RMASS/HBAR**2*ECH2(IO))) KK=SQRT(2.D0*RMASS/HBAR**2*E) DUMMY=0.D0 DUMMY2=0.D0 DO IO2=1,NLEVEL DUMMY2=DUMMY2+BB2(IO,IO2)*BIN(IO2,1) ENDDO P=P+(ABS(BIN(IO,1)))**2*K/KK REF=REF+(ABS(DUMMY2))**2*K2/KK 85 CONTINUE c IF(P+REF.GT.1.1D0) THEN c WRITE(6,*)'Penetrability > 1.1 !!!!!' c WRITE(6,*)'Something must be strange (accuracy problem) :^(' c STOP c ENDIF IF(P.GT.0.99D0) P=1.D0-REF RETURN END c************************************************************** subroutine mnumerov(p) c c subroutine for integration of the c.c. eqs. by modified c numerov method c c a similar stabilization method as that given in c Z.H. Levine, pra30('84) 1120 c T.N. Rescigno and A.E. Orel, pra25('82)2402 c is used in the routine. c c the linear independence condition is imposed at the barrier position. c c************************************************************** implicit real*8 (a-h,o-z) external v parameter (nlevelmax=30,nrmax=5000) dimension psi(nlevelmax),psi0(nlevelmax),psi1(nlevelmax) dimension xi(nlevelmax,nlevelmax),xi0(nlevelmax,nlevelmax), & xi1(nlevelmax,nlevelmax) dimension phi0(nlevelmax) dimension bb(nlevelmax,nlevelmax), & bin(nlevelmax,nlevelmax) dimension bb2(nlevelmax,nlevelmax) dimension cc(nlevelmax,nlevelmax), & cin(nlevelmax,nlevelmax) dimension dd0(nlevelmax,nlevelmax),dd1(nlevelmax,nlevelmax) dimension dd(nlevelmax) dimension fcw(0:200),gcw(0:200),fpcw(0:200),gpcw(0:200) dimension sigmad(0:200),iexp(0:200) dimension ech(nlevelmax),ech2(nlevelmax) common/hion/ap,zp,rp,at,zt,rt common/const/hbar,pi common/dimen/nlevel common/dyn/e,rmass common/angular/l common/grid/rmin,rmax,dr common/coup/cpot(nlevelmax,nlevelmax,0:nrmax) common/shape/rb,vb,curv complex*16 k,kk,k2 complex*16 psi,psi0,psi1,phi0 complex*16 xi,xi0,xi1 complex*16 ai complex*16 cwup0,cwdown0,cwup1,cwdown1 complex*16 bb,bb2,bin,cc,cin,dd complex*16 dummy,dummy2 complex*16 xi1d(nlevelmax,nlevelmax) complex*16 xi0d(nlevelmax,nlevelmax) complex*16 aa(nlevelmax,nlevelmax) complex*16 bb0(nlevelmax,nlevelmax) complex*16 bb20(nlevelmax,nlevelmax) ai=(0.d0,1.d0) c define two constants used in this subroutine fac=dr**2*(2.d0*rmass/hbar**2) iterat=int((rmax-rmin)/dr) rmax=rmin+iterat*dr ibarrier=(rb-rmin)/dr+1.d-6 do lc=0,200 fcw(lc)=0.d0 gcw(lc)=0.d0 fpcw(lc)=0.d0 gpcw(lc)=0.d0 sigmad(lc)=0.d0 iexp(lc)=0d0 enddo do i=1,nlevelmax do j=1,nlevelmax bb(i,j)=0.d0 bin(i,j)=0.d0 cc(i,j)=0.d0 cin(i,j)=0.d0 aa(i,j)=0.d0 enddo dd(i)=0.d0 enddo do i=1,nlevel aa(i,i)=1.d0 enddo c initial conditions c========================================================== do 15 io=1,nlevel c write(6,*)'io=',io*1. do j1=1,nlevel psi(j1)=0.d0 psi0(j1)=0.d0 psi1(j1)=0.d0 phi0(j1)=0.d0 enddo if(io.eq.1) then do io2=1,nlevel ech(io2)=e-v(rmin)-cpot(io2,io2,0) ech2(io2)=e-cpot(io2,io2,iterat) enddo endif if(ech(io).gt.0.d0) then k=sqrt(2.d0*rmass/hbar**2*ech(io)) psi0(io)=exp(-ai*k*rmin) phi0(io)=-ai*k*psi0(io) else k=sqrt(2.d0*rmass/hbar**2*abs(ech(io))) psi0(io)=exp(k*rmin) phi0(io)=k*psi0(io) endif call rkutta00(psi0,phi0,psi1) do i0=1,nlevel xi0(i0,io)=(1.d0-fac/12.d0*(v(rmin)-e))*psi0(i0) xi1(i0,io)=(1.d0-fac/12.d0*(v(rmin+dr)-e))*psi1(i0) do ic=1,nlevel xi0(i0,io)=xi0(i0,io)-fac/12.d0*cpot(i0,ic,0)*psi0(ic) xi1(i0,io)=xi1(i0,io)-fac/12.d0*cpot(i0,ic,1)*psi1(ic) enddo enddo 15 continue c=============== do 29 ir=2,iterat+1 c---------------------------------------------- iterations start r=rmin+dr*ir r0=rmin+dr*(ir-2) r1=rmin+dr*(ir-1) do i0=1,nlevel do ic=1,nlevel dd0(i0,ic)=fac/sqrt(12.d0)*cpot(i0,ic,ir-1) if(i0.eq.ic) dd0(i0,ic)=dd0(i0,ic)+fac/sqrt(12.d0)*(v(r1)-e) & +sqrt(3.d0) enddo enddo do i0=1,nlevel do ic=1,nlevel dd1(i0,ic)=0.d0 if(i0.eq.ic) dd1(i0,ic)=dd1(i0,ic)-1.d0 do ik=1,nlevel dd1(i0,ic)=dd1(i0,ic)+dd0(i0,ik)*dd0(ik,ic) enddo enddo enddo do ich=1,nlevel do i0=1,nlevel xi(i0,ich)=-xi0(i0,ich) do ic=1,nlevel xi(i0,ich)=xi(i0,ich)+dd1(i0,ic)*xi1(ic,ich) enddo enddo enddo if(ir.eq.iterat+1) goto 66 if(ir.eq.ibarrier) call stabilize(xi1,xi,aa,ir) do ich=1,nlevel do i0=1,nlevel xi0(i0,ich)=xi1(i0,ich) xi1(i0,ich)=xi(i0,ich) enddo enddo 29 continue c-------------------------------------------------------------- c matching to the coulomb wave function at rmax 66 do 17 io=1,nlevel do i0=1,nlevel do ic=1,nlevel cc(i0,ic)=-fac/12.d0*cpot(i0,ic,iterat-1) if(i0.eq.ic) cc(i0,ic)=cc(i0,ic)-fac/12.d0*(v(rmax-dr)-e)+1.d0 enddo enddo call matinv(nlevel,cc,cin) do i0=1,nlevel psi0(i0)=0.d0 do ic=1,nlevel psi0(i0)=psi0(i0)+cin(i0,ic)*xi0(ic,io) enddo enddo do i0=1,nlevel do ic=1,nlevel cc(i0,ic)=-fac/12.d0*cpot(i0,ic,iterat+1) if(i0.eq.ic) cc(i0,ic)=cc(i0,ic)-fac/12.d0*(v(rmax+dr)-e)+1.d0 enddo enddo call matinv(nlevel,cc,cin) do i0=1,nlevel psi(i0)=0.d0 do ic=1,nlevel psi(i0)=psi(i0)+cin(i0,ic)*xi(ic,io) enddo enddo do 60 ii=1,nlevel c coulomb wave function ec=e-cpot(ii,ii,iterat-1) if(ec.lt.0.) then r1=rmax-dr r2=rmax+dr ak=sqrt(2.d0*rmass*abs(ec)/hbar**2) bb0(ii,io)=(exp(-ak*r2)*psi0(ii)-exp(-ak*r1)*psi(ii)) & /(exp(ak*(r1-r2))-exp(-ak*(r1-r2))) bb20(ii,io)=-(exp(ak*r2)*psi0(ii)-exp(ak*r1)*psi(ii)) & /(exp(ak*(r1-r2))-exp(-ak*(r1-r2))) else rho=sqrt(2.d0*rmass*ec)/hbar*(rmax-dr) eta=(zp*zt/137.d0)*sqrt(rmass/2.d0/ec) call dfcoul(eta,rho,fcw,fpcw,gcw,gpcw,sigmad,l,iexp) cwup0=(gcw(l)+ai*fcw(l)) cwdown0=gcw(l)-ai*fcw(l) ec=e-cpot(ii,ii,iterat+1) rho=sqrt(2.d0*rmass*ec)/hbar*(rmax+dr) eta=(zp*zt/137.d0)*sqrt(rmass/2.d0/ec) call dfcoul(eta,rho,fcw,fpcw,gcw,gpcw,sigmad,l,iexp) cwup1=(gcw(l)+ai*fcw(l)) cwdown1=gcw(l)-ai*fcw(l) bb0(ii,io)=(cwup0*psi(ii)-cwup1*psi0(ii)) & /(cwup0*cwdown1-cwup1*cwdown0) bb20(ii,io)=(cwdown1*psi0(ii)-cwdown0*psi(ii)) & /(cwup0*cwdown1-cwup1*cwdown0) endif 60 continue c--------------------------------------------------------------- 17 continue c=============================================================== c penetration probability do i=1,nlevel do j=1,nlevel bb(i,j)=0.d0 bb2(i,j)=0.d0 do j2=1,nlevel bb(i,j)=bb(i,j)+bb0(i,j2)*aa(j2,j) bb2(i,j)=bb2(i,j)+bb20(i,j2)*aa(j2,j) enddo enddo enddo c calculate the inversion of the matrix bb call matinv(nlevel,bb,bin) c p=0.d0 ref=0.d0 do 85 io=1,nlevel if(ech(io).lt.0.d0) goto 85 k=sqrt((2.d0*rmass/hbar**2*ech(io))) kk=sqrt(2.d0*rmass/hbar**2*e) p=p+(abs(bin(io,1)))**2*k/kk 85 continue do 86 io=1,nlevel if(ech2(io).lt.0.d0) goto 86 k2=sqrt((2.d0*rmass/hbar**2*ech2(io))) kk=sqrt(2.d0*rmass/hbar**2*e) dummy=0.d0 dummy2=0.d0 do io2=1,nlevel dummy2=dummy2+bb2(io,io2)*bin(io2,1) enddo ref=ref+(abs(dummy2))**2*k2/kk 86 continue c if(p+ref.gt.1.1d0) then c write(6,*)'penetrability > 1.1 !!!!!' c write(6,*)'something must be strange (accuracy problem) :^(' c stop c endif c if(p.gt.0.99d0) p=1.d0-ref return end C************************************************************** SUBROUTINE MNUMEROV02(P) C C Subroutine for integration of the c.c. eqs. by modified C Numerov method C C A similar stabilization method as that given in C Z.H. Levine, PRA30('84) 1120 C T.N. Rescigno and A.E. Orel, PRA25('82)2402 C is used in the routine. C C The linear independence condition is imposed at the barrier position. C C************************************************************** IMPLICIT REAL*8 (A-H,O-Z) EXTERNAL V PARAMETER (NLEVELMAX=30,NRMAX=5000) DIMENSION PSI(NLEVELMAX),PSI0(NLEVELMAX),PSI1(NLEVELMAX) DIMENSION XI(NLEVELMAX,NLEVELMAX),XI0(NLEVELMAX,NLEVELMAX), & XI1(NLEVELMAX,NLEVELMAX) DIMENSION PHI0(NLEVELMAX) DIMENSION BB(NLEVELMAX,NLEVELMAX), & BIN(NLEVELMAX,NLEVELMAX) DIMENSION BB2(NLEVELMAX,NLEVELMAX) DIMENSION CC(NLEVELMAX,NLEVELMAX), & CIN(NLEVELMAX,NLEVELMAX) DIMENSION DD0(NLEVELMAX,NLEVELMAX),DD1(NLEVELMAX,NLEVELMAX) DIMENSION DD(NLEVELMAX) DIMENSION FCW(0:200),GCW(0:200),FPCW(0:200),GPCW(0:200) DIMENSION SIGMAD(0:200),IEXP(0:200) DIMENSION ECH(NLEVELMAX),ECH2(NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/DIMEN/NLEVEL COMMON/DYN/E,RMASS COMMON/ANGULAR/L COMMON/GRID/RMIN,RMAX,DR COMMON/COUP/CPOT(NLEVELMAX,NLEVELMAX,0:NRMAX) COMMON/SHAPE/RB,VB,CURV COMPLEX*16 K,KK,K2 COMPLEX*16 PSI,PSI0,PSI1,PHI0 COMPLEX*16 XI,XI0,XI1 COMPLEX*16 AI COMPLEX*16 CWUP0,CWDOWN0,CWUP1,CWDOWN1 COMPLEX*16 BB,BB2,BIN,CC,CIN,DD COMPLEX*16 DUMMY,DUMMY2 COMPLEX*16 XI1D(NLEVELMAX,NLEVELMAX) COMPLEX*16 XI0D(NLEVELMAX,NLEVELMAX) COMPLEX*16 AA(NLEVELMAX,NLEVELMAX) COMPLEX*16 BB0(NLEVELMAX,NLEVELMAX) COMPLEX*16 BB20(NLEVELMAX,NLEVELMAX) AI=(0.D0,1.D0) C define two constants used in this subroutine FAC=DR**2*(2.D0*RMASS/HBAR**2) ITERAT=INT((RMAX-RMIN)/DR) RMAX=RMIN+ITERAT*DR IBARRIER=(RB-RMIN)/DR+1.D-6 DO 22 LC=0,200 FCW(LC)=0.D0 GCW(LC)=0.D0 FPCW(LC)=0.D0 GPCW(LC)=0.D0 SIGMAD(LC)=0.D0 IEXP(LC)=0D0 22 CONTINUE DO 51 I=1,NLEVELMAX DO 52 J=1,NLEVELMAX BB(I,J)=0.D0 BIN(I,J)=0.D0 CC(I,J)=0.D0 CIN(I,J)=0.D0 AA(I,J)=0.D0 52 CONTINUE DD(I)=0.D0 51 CONTINUE DO I=1,NLEVEL AA(I,I)=1.D0 ENDDO C initial conditions C========================================================== DO 15 IO=1,NLEVEL c write(6,*)'IO=',IO*1. DO 200 J1=1,NLEVEL PSI(J1)=0.D0 PSI0(J1)=0.D0 PSI1(J1)=0.D0 PHI0(J1)=0.D0 200 CONTINUE IF(IO.EQ.1) THEN DO IO2=1,NLEVEL ECH(IO2)=E-V(RMIN)-CPOT(IO2,IO2,0) ECH2(IO2)=E-CPOT(IO2,IO2,ITERAT) ENDDO ENDIF IF(ECH(IO).GT.0.D0) THEN K=SQRT(2.D0*RMASS/HBAR**2*ECH(IO)) PSI0(IO)=EXP(-AI*K*RMIN) PHI0(IO)=-AI*K*PSI0(IO) ELSE K=SQRT(2.D0*RMASS/HBAR**2*ABS(ECH(IO))) PSI0(IO)=EXP(K*RMIN) PHI0(IO)=K*PSI0(IO) ENDIF CALL RKUTTA00(PSI0,PHI0,PSI1) DO 91 I0=1,NLEVEL XI0(I0,IO)=(1.D0-FAC/12.D0*(V(RMIN)-E))*PSI0(I0) XI1(I0,IO)=(1.D0-FAC/12.D0*(V(RMIN+DR)-E))*PSI1(I0) DO 92 IC=1,NLEVEL XI0(I0,IO)=XI0(I0,IO)-FAC/12.D0*CPOT(I0,IC,0)*PSI0(IC) XI1(I0,IO)=XI1(I0,IO)-FAC/12.D0*CPOT(I0,IC,1)*PSI1(IC) 92 CONTINUE 91 CONTINUE 15 CONTINUE C=============== DO 29 IR=2,ITERAT+1 C---------------------------------------------- ITERATIONS START R=RMIN+DR*IR R0=RMIN+DR*(IR-2) R1=RMIN+DR*(IR-1) DO 71 I0=1,NLEVEL DO 72 IC=1,NLEVEL DD0(I0,IC)=FAC/SQRT(12.D0)*CPOT(I0,IC,IR-1) IF(I0.EQ.IC) DD0(I0,IC)=DD0(I0,IC)+FAC/SQRT(12.D0)*(V(R1)-E) & +SQRT(3.D0) 72 CONTINUE 71 CONTINUE DO 73 I0=1,NLEVEL DO 74 IC=1,NLEVEL DD1(I0,IC)=0.D0 IF(I0.EQ.IC) DD1(I0,IC)=DD1(I0,IC)-1.D0 DO 75 IK=1,NLEVEL DD1(I0,IC)=DD1(I0,IC)+DD0(I0,IK)*DD0(IK,IC) 75 CONTINUE 74 CONTINUE 73 CONTINUE DO 16 ICH=1,NLEVEL DO 54 I0=1,NLEVEL XI(I0,ICH)=-XI0(I0,ICH) DO 53 IC=1,NLEVEL XI(I0,ICH)=XI(I0,ICH)+DD1(I0,IC)*XI1(IC,ICH) 53 CONTINUE 54 CONTINUE 16 CONTINUE IF(IR.EQ.ITERAT+1) GOTO 66 IF(IR.EQ.IBARRIER) CALL STABILIZE(XI1,XI,AA,IR) DO ICH=1,NLEVEL DO I0=1,NLEVEL XI0(I0,ICH)=XI1(I0,ICH) XI1(I0,ICH)=XI(I0,ICH) ENDDO ENDDO 29 CONTINUE C-------------------------------------------------------------- C Matching to the Coulomb wave function at RMAX 66 DO 17 IO=1,NLEVEL DO 56 I0=1,NLEVEL DO 55 IC=1,NLEVEL CC(I0,IC)=-FAC/12.D0*CPOT(I0,IC,ITERAT-1) IF(I0.EQ.IC) CC(I0,IC)=CC(I0,IC)-FAC/12.D0*(V(RMAX-DR)-E)+1.D0 55 CONTINUE 56 CONTINUE CALL MATINV(NLEVEL,CC,CIN) DO 94 I0=1,NLEVEL PSI0(I0)=0.D0 DO 93 IC=1,NLEVEL PSI0(I0)=PSI0(I0)+CIN(I0,IC)*XI0(IC,IO) 93 CONTINUE 94 CONTINUE DO 556 I0=1,NLEVEL DO 555 IC=1,NLEVEL CC(I0,IC)=-FAC/12.D0*CPOT(I0,IC,ITERAT+1) IF(I0.EQ.IC) CC(I0,IC)=CC(I0,IC)-FAC/12.D0*(V(RMAX+DR)-E)+1.D0 555 CONTINUE 556 CONTINUE CALL MATINV(NLEVEL,CC,CIN) DO 944 I0=1,NLEVEL PSI(I0)=0.D0 DO 933 IC=1,NLEVEL PSI(I0)=PSI(I0)+CIN(I0,IC)*XI(IC,IO) 933 CONTINUE 944 CONTINUE DO 60 II=1,NLEVEL C Coulomb wave function EC=E-CPOT(II,II,ITERAT-1) RHO=SQRT(2.D0*RMASS*EC)/HBAR*(RMAX-DR) ETA=(ZP*ZT/137.D0)*SQRT(RMASS/2.D0/EC) CALL DFCOUL(ETA,RHO,FCW,FPCW,GCW,GPCW,SIGMAD,L,IEXP) CWUP0=(GCW(L)+AI*FCW(L)) CWDOWN0=GCW(L)-AI*FCW(L) EC=E-CPOT(II,II,ITERAT+1) RHO=SQRT(2.D0*RMASS*EC)/HBAR*(RMAX+DR) ETA=(ZP*ZT/137.D0)*SQRT(RMASS/2.D0/EC) CALL DFCOUL(ETA,RHO,FCW,FPCW,GCW,GPCW,SIGMAD,L,IEXP) CWUP1=(GCW(L)+AI*FCW(L)) CWDOWN1=GCW(L)-AI*FCW(L) BB0(II,IO)=(CWUP0*PSI(II)-CWUP1*PSI0(II)) & /(CWUP0*CWDOWN1-CWUP1*CWDOWN0) BB20(II,IO)=(CWDOWN1*PSI0(II)-CWDOWN0*PSI(II)) & /(CWUP0*CWDOWN1-CWUP1*CWDOWN0) 60 CONTINUE C--------------------------------------------------------------- 17 CONTINUE C=============================================================== C PENETRATION PROBABILITY DO I=1,NLEVEL DO J=1,NLEVEL BB(I,J)=0.D0 BB2(I,J)=0.D0 DO J2=1,NLEVEL BB(I,J)=BB(I,J)+BB0(I,J2)*AA(J2,J) BB2(I,J)=BB2(I,J)+BB20(I,J2)*AA(J2,J) ENDDO ENDDO ENDDO C calculate the inversion of the matrix BB CALL MATINV(NLEVEL,BB,BIN) C P=0.D0 REF=0.D0 DO 85 IO=1,NLEVEL IF(ECH(IO).LT.0.D0) GOTO 85 K=SQRT((2.D0*RMASS/HBAR**2*ECH(IO))) K2=SQRT((2.D0*RMASS/HBAR**2*ECH2(IO))) KK=SQRT(2.D0*RMASS/HBAR**2*E) DUMMY=0.D0 DUMMY2=0.D0 DO IO2=1,NLEVEL DUMMY2=DUMMY2+BB2(IO,IO2)*BIN(IO2,1) ENDDO P=P+(ABS(BIN(IO,1)))**2*K/KK REF=REF+(ABS(DUMMY2))**2*K2/KK 85 CONTINUE c IF(P+REF.GT.1.1D0) THEN c WRITE(6,*)'Penetrability > 1.1 !!!!!' c WRITE(6,*)'Something must be strange (accuracy problem) :^(' c STOP c ENDIF IF(P.GT.0.99D0) P=1.D0-REF RETURN END C************************************************************** SUBROUTINE STABILIZE(XI1,XI,AA,IR1) C C A subroutine to stabilize the solutions by imposing the linear C independence. C C Refs. C Z.H. Levine, PRA30('84) 1120 C T.N. Rescigno and A.E. Orel, PRA25('82)2402 C C************************************************************** IMPLICIT REAL*8 (A-H,O-Z) PARAMETER (NLEVELMAX=30,NRMAX=5000) DIMENSION PSI(NLEVELMAX,NLEVELMAX) DIMENSION XI(NLEVELMAX,NLEVELMAX),XI1(NLEVELMAX,NLEVELMAX) DIMENSION CC(NLEVELMAX,NLEVELMAX), & CIN(NLEVELMAX,NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/DIMEN/NLEVEL COMMON/DYN/E,RMASS COMMON/ANGULAR/L COMMON/GRID/RMIN,RMAX,DR COMMON/COUP/CPOT(NLEVELMAX,NLEVELMAX,0:NRMAX) COMPLEX*16 PSI,XI,XI1 COMPLEX*16 AI COMPLEX*16 CC,CIN COMPLEX*16 AA(NLEVELMAX,NLEVELMAX) COMPLEX*16 AA0(NLEVELMAX,NLEVELMAX) COMPLEX*16 XID(NLEVELMAX,NLEVELMAX),XID1(NLEVELMAX,NLEVELMAX) DO I=1,NLEVEL DO J=1,NLEVEL AA0(I,J)=AA(I,J) XID(I,J)=XI(I,J) XID1(I,J)=XI1(I,J) ENDDO ENDDO AI=(0.D0,1.D0) FAC=DR**2*(2.D0*RMASS/HBAR**2) C transforme to the physical wave functions Psi from Xi R=RMIN+IR1*DR DO I0=1,NLEVEL DO IC=1,NLEVEL CC(I0,IC)=-FAC/12.D0*CPOT(I0,IC,IR1) IF(I0.EQ.IC) CC(I0,IC)=CC(I0,IC)-FAC/12.D0*(V(R)-E)+1.D0 ENDDO ENDDO CALL MATINV(NLEVEL,CC,CIN) DO ICH=1,NLEVEL DO I0=1,NLEVEL PSI(I0,ICH)=0.D0 DO IC=1,NLEVEL PSI(I0,ICH)=PSI(I0,ICH)+CIN(I0,IC)*XI(IC,ICH) ENDDO ENDDO ENDDO DO I=1,NLEVEL DO J=1,NLEVEL AA(I,J)=0.D0 DO K=1,NLEVEL AA(I,J)=AA(I,J)+PSI(I,K)*AA0(K,J) ENDDO ENDDO ENDDO CALL MATINV(NLEVEL,PSI,CIN) DO I=1,NLEVEL DO J=1,NLEVEL XI(I,J)=0.D0 XI1(I,J)=0.D0 DO K=1,NLEVEL XI(I,J)=XI(I,J)+XID(I,K)*CIN(K,J) XI1(I,J)=XI1(I,J)+XID1(I,K)*CIN(K,J) ENDDO ENDDO ENDDO RETURN END C************************************************************** SUBROUTINE RKUTTA00(PSI0,PHI0,PSI1) C C Wave functions at R=RMIN+DR C C************************************************************** IMPLICIT REAL*8 (A-H,O-Z) EXTERNAL V PARAMETER (NLEVELMAX=30,NRMAX=5000) DIMENSION PSI0(NLEVELMAX),PHI0(NLEVELMAX),PSI1(NLEVELMAX) DIMENSION AK1(NLEVELMAX),AK2(NLEVELMAX), & AK3(NLEVELMAX),AK4(NLEVELMAX) DIMENSION BK1(NLEVELMAX),BK2(NLEVELMAX), & BK3(NLEVELMAX),BK4(NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/DIMEN/NLEVEL COMMON/DYN/E,RMASS COMMON/ANGULAR/L COMMON/GRID/RMIN,RMAX,DR COMMON/COUP/CPOT(NLEVELMAX,NLEVELMAX,0:NRMAX) COMMON/COUPH/CPOTH(NLEVELMAX,NLEVELMAX) COMPLEX*16 PSI0,PHI0,PSI1 COMPLEX*16 AI COMPLEX*16 AK1,AK2,AK3,AK4 COMPLEX*16 BK1,BK2,BK3,BK4 AI=(0.D0,1.D0) C define two constants used in this subroutine FAC=DR*(2.D0*RMASS/HBAR**2) R=RMIN RPP=RMIN+DR RH=RMIN+DR/2.D0 DO 19 J1=1,NLEVEL AK1(J1)=0.D0 AK2(J1)=0.D0 AK3(J1)=0.D0 AK4(J1)=0.D0 BK1(J1)=0.D0 BK2(J1)=0.D0 BK3(J1)=0.D0 BK4(J1)=0.D0 19 CONTINUE DO 58 I0=1,NLEVEL DO 57 IC=1,NLEVEL AK1(I0)=AK1(I0)+FAC*CPOT(I0,IC,0)*PSI0(IC) 57 CONTINUE AK1(I0)=AK1(I0)-FAC*(E-V(R))*PSI0(I0) BK1(I0)=DR*PHI0(I0) 58 CONTINUE DO 56 I0=1,NLEVEL DO 55 IC=1,NLEVEL AK2(I0)=AK2(I0)+FAC*CPOTH(I0,IC)*(PSI0(IC)+1.D0/2.D0*BK1(IC)) 55 CONTINUE AK2(I0)=AK2(I0)-FAC*(E-V(RH))*(PSI0(I0)+1.D0/2.D0*BK1(I0)) BK2(I0)=DR*(PHI0(I0)+1./2.*AK1(I0)) 56 CONTINUE DO 54 I0=1,NLEVEL DO 53 IC=1,NLEVEL AK3(I0)=AK3(I0)+FAC*CPOTH(I0,IC)*(PSI0(IC)+1.D0/2.D0*BK2(IC)) 53 CONTINUE AK3(I0)=AK3(I0)-FAC*(E-V(RH))*(PSI0(I0)+1.D0/2.D0*BK2(I0)) BK3(I0)=DR*(PHI0(I0)+1.D0/2.D0*AK2(I0)) 54 CONTINUE DO 42 I0=1,NLEVEL DO 41 IC=1,NLEVEL AK4(I0)=AK4(I0)+FAC*CPOT(I0,IC,1)*(PSI0(IC)+BK3(IC)) 41 CONTINUE AK4(I0)=AK4(I0)-FAC*(E-V(RPP))*(PSI0(I0)+BK3(I0)) BK4(I0)=DR*(PHI0(I0)+AK3(I0)) 42 CONTINUE C wave functions at RMIN+DR DO 59 IS=1,NLEVEL PSI1(IS)=PSI0(IS)+1.D0/6.D0*(BK1(IS)+2.D0*BK2(IS) & +2.D0*BK3(IS)+BK4(IS)) 59 CONTINUE RETURN END C****************************************************************** SUBROUTINE CMAT0 C C Preparation for the nuclear coupling matrix C C***************************************************************** IMPLICIT REAL*8 (A-H,O-Z) PARAMETER (NLEVELMAX=30) DIMENSION A(NLEVELMAX,NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/INTR/IVIBROTP,IVIBROTT,NPROJ,NTARG COMMON/OSCP/BETAP,BETAPN,OMEGAP,LAMBDAP,NPHONONP COMMON/OSCP2/BETAP2,BETAP2N,OMEGAP2,LAMBDAP2,NPHONONP2 COMMON/OSCT/BETAT,BETATN,OMEGAT,LAMBDAT,NPHONONT COMMON/OSCT2/BETAT2,BETAT2N,OMEGAT2,LAMBDAT2,NPHONONT2 COMMON/ROTP/BETA2P,BETA4P,E2P,NROTP COMMON/ROTT/BETA2T,BETA4T,E2T,NROTT COMMON/DIMEN/NLEVEL COMMON/MUT/IMUTUAL(0:NLEVELMAX,0:NLEVELMAX) COMMON/MUTp/IMUTUALp(0:NLEVELMAX,0:NLEVELMAX) COMMON/EIGEN/EV(NLEVELMAX),EVEC(NLEVELMAX,NLEVELMAX) COMMON/TRANS/FTR,QTRANS,IQ,NTRANS EXTERNAL CG FVIBT=RT*BETATN/SQRT(4.D0*PI) FROT2T=RT*BETA2T FROT4T=RT*BETA4T FVIBT2=RT*BETAT2N/SQRT(4.D0*PI) FVIBP=RP*BETAPN/SQRT(4.D0*PI) FVIBP2=RP*BETAP2N/SQRT(4.D0*PI) FROT2P=RP*BETA2P FROT4P=RP*BETA4P DO 10 I=1,NLEVELMAX DO 20 J=1,NLEVELMAX A(I,J)=0.D0 20 CONTINUE 10 CONTINUE NDIM=NLEVEL-NTRANS IF(NDIM.EQ.1) RETURN I=0 DO 31 IP=0,NPROJ DO 32 IT=0,NTARG DO 33 IT2=0,NPHONONT2 DO 34 Ip2=0,NPHONONp2 IF(NPHONONT2.NE.0) THEN IF(IMUTUAL(IT,IT2).EQ.0) GOTO 34 ENDIF IF(NPHONONp2.NE.0) THEN IF(IMUTUALp(Ip,Ip2).EQ.0) GOTO 34 ENDIF I=I+1 J=0 DO 41 JP=0,NPROJ DO 42 JT=0,NTARG DO 43 JT2=0,NPHONONT2 DO 44 Jp2=0,NPHONONp2 IF(NPHONONT2.NE.0) THEN IF(IMUTUAL(JT,JT2).EQ.0) GOTO 44 ENDIF IF(NPHONONp2.NE.0) THEN IF(IMUTUALp(Jp,Jp2).EQ.0) GOTO 44 ENDIF J=J+1 IF(I.GT.J) THEN A(I,J)=A(J,I) GOTO 44 ENDIF C=0.D0 IF(IP.EQ.JP.AND.IT2.EQ.JT2.and.ip2.eq.jp2) THEN IF(IVIBROTT.EQ.0) THEN IF(IT.EQ.JT-1) C=SQRT(JT*1.D0)*FVIBT IF(JT.EQ.IT-1) C=SQRT(IT*1.D0)*FVIBT ELSE C=FROT2T*SQRT((2.D0*2*IT+1.D0)*5.D0*(2.D0*2*JT+1.D0) & /4.D0/PI)*CG(2*IT,0,2,0,2*JT,0)**2/(2.D0*2*JT+1.D0) C=C+FROT4T*SQRT((2.D0*2*IT+1.D0)*9.D0*(2.D0*2*JT+1.D0) & /4.D0/PI)*CG(2*IT,0,4,0,2*JT,0)**2/(2.D0*2*JT+1.D0) ENDIF ENDIF IF(IP.EQ.JP.AND.IT.EQ.JT.and.ip2.eq.jp2) THEN IF(IT2.EQ.JT2-1) C=C+SQRT(JT2*1.D0)*FVIBT2 IF(JT2.EQ.IT2-1) C=C+SQRT(IT2*1.D0)*FVIBT2 ENDIF C------- IF(IT.EQ.JT.AND.IT2.EQ.JT2.and.ip2.eq.jp2) THEN IF(IVIBROTP.EQ.0) THEN IF(IP.EQ.JP-1) C=C+SQRT(JP*1.D0)*FVIBP IF(JP.EQ.IP-1) C=C+SQRT(IP*1.D0)*FVIBP ELSE C=C+FROT2P*SQRT((2.D0*2*IP+1.D0)*5.D0*(2.D0*2*JP+1.D0) & /4.D0/PI)*CG(2*IP,0,2,0,2*JP,0)**2/(2.D0*2*JP+1.D0) C=C+FROT4P*SQRT((2.D0*2*IP+1.D0)*9.D0*(2.D0*2*JP+1.D0) & /4.D0/PI)*CG(2*IP,0,4,0,2*JP,0)**2/(2.D0*2*JP+1.D0) ENDIF ENDIF IF(IP.EQ.JP.AND.IT.EQ.JT.and.it2.eq.jt2) THEN IF(Ip2.EQ.Jp2-1) C=C+SQRT(Jp2*1.D0)*FVIBp2 IF(Jp2.EQ.Ip2-1) C=C+SQRT(Ip2*1.D0)*FVIBp2 ENDIF A(I,J)=C 44 CONTINUE 43 CONTINUE 42 CONTINUE 41 CONTINUE 34 CONTINUE 33 CONTINUE 32 CONTINUE 31 CONTINUE CALL MDIAG(A,NDIM) RETURN END C****************************************************************** SUBROUTINE CMAT(R,CPOT) C C Coupling matrix C C***************************************************************** IMPLICIT REAL*8 (A-H,O-Z) PARAMETER (NLEVELMAX=30) DIMENSION CPOT(NLEVELMAX,NLEVELMAX) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/INTR/IVIBROTP,IVIBROTT,NPROJ,NTARG COMMON/OSCP/BETAP,BETAPN,OMEGAP,LAMBDAP,NPHONONP COMMON/OSCP2/BETAP2,BETAP2N,OMEGAP2,LAMBDAP2,NPHONONP2 COMMON/OSCT/BETAT,BETATN,OMEGAT,LAMBDAT,NPHONONT COMMON/OSCT2/BETAT2,BETAT2N,OMEGAT2,LAMBDAT2,NPHONONT2 COMMON/ROTP/BETA2P,BETA4P,E2P,NROTP COMMON/ROTT/BETA2T,BETA4T,E2T,NROTT COMMON/DIMEN/NLEVEL COMMON/MUT/IMUTUAL(0:NLEVELMAX,0:NLEVELMAX) COMMON/MUTp/IMUTUALp(0:NLEVELMAX,0:NLEVELMAX) COMMON/EIGEN/EV(NLEVELMAX),EVEC(NLEVELMAX,NLEVELMAX) COMMON/TRANS/FTR,QTRANS,IQ,NTRANS EXTERNAL FCT,FCP,FACT,VNCC,CG,FCT2,FCT4,FCP2,FCP4,FCTT EXTERNAL FTRANS,fcpp DO 10 I=1,NLEVELMAX DO 20 J=1,NLEVELMAX CPOT(I,J)=0.D0 20 CONTINUE 10 CONTINUE NDIM=NLEVEL-NTRANS IF(NLEVEL.EQ.1) RETURN IF(NDIM.EQ.1) GOTO 55 I=0 DO 31 IP=0,NPROJ DO 32 IT=0,NTARG DO 33 IT2=0,NPHONONT2 DO 34 Ip2=0,NPHONONp2 IF(NPHONONT2.NE.0) THEN IF(IMUTUAL(IT,IT2).EQ.0) GOTO 34 ENDIF IF(NPHONONp2.NE.0) THEN IF(IMUTUALp(Ip,Ip2).EQ.0) GOTO 34 ENDIF I=I+1 J=0 DO 41 JP=0,NPROJ DO 42 JT=0,NTARG DO 43 JT2=0,NPHONONT2 DO 44 Jp2=0,NPHONONp2 IF(NPHONONT2.NE.0) THEN IF(IMUTUAL(JT,JT2).EQ.0) GOTO 44 ENDIF IF(NPHONONp2.NE.0) THEN IF(IMUTUALp(Jp,Jp2).EQ.0) GOTO 44 ENDIF J=J+1 IF(I.GT.J) THEN CPOT(I,J)=CPOT(J,I) GOTO 44 ENDIF C=0.D0 C Nuclear coupling DO 50 K=1,NDIM C=C+VNCC(R,EV(K))*EVEC(I,K)*EVEC(J,K) 50 CONTINUE C Coulomb coupling IF(IP.EQ.JP.AND.IT2.EQ.JT2.and.ip2.eq.jp2) THEN IF(IVIBROTT.EQ.0) THEN IF(IT.EQ.JT-1) C=C+SQRT(JT*1.D0)*FCT(R) IF(JT.EQ.IT-1) C=C+SQRT(IT*1.D0)*FCT(R) ELSE C=C+SQRT((2.D0*2*IT+1.D0)*5.D0*(2.D0*2*JT+1.D0) & /4.D0/PI)*CG(2*IT,0,2,0,2*JT,0)**2/(2.D0*2*JT+1.D0)*FCT2(R) & +SQRT((2.D0*2*IT+1.D0)*9.D0*(2.D0*2*JT+1.D0) & /4.D0/PI)*CG(2*IT,0,4,0,2*JT,0)**2/(2.D0*2*JT+1.D0)*FCT4(R) ENDIF ENDIF IF(IT.EQ.JT.AND.IT2.EQ.JT2.and.ip2.eq.jp2) THEN IF(IVIBROTP.EQ.0) THEN IF(IP.EQ.JP-1) C=C+SQRT(JP*1.D0)*FCP(R) IF(JP.EQ.IP-1) C=C+SQRT(IP*1.D0)*FCP(R) ELSE C=C+SQRT((2.D0*2*IP+1.D0)*5.D0*(2.D0*2*JP+1.D0) & /4.D0/PI)*CG(2*IP,0,2,0,2*JP,0)**2/(2.D0*2*JP+1.D0)*FCP2(R) & +SQRT((2.D0*2*IP+1.D0)*9.D0*(2.D0*2*JP+1.D0) & /4.D0/PI)*CG(2*IP,0,4,0,2*JP,0)**2/(2.D0*2*JP+1.D0)*FCP4(R) ENDIF ENDIF IF(IP.EQ.JP.AND.IT.EQ.JT.and.ip2.eq.jp2) THEN IF(IT2.EQ.JT2-1) C=C+SQRT(JT2*1.D0)*FCTT(R) IF(JT2.EQ.IT2-1) C=C+SQRT(IT2*1.D0)*FCTT(R) ENDIF IF(IP.EQ.JP.AND.IT.EQ.JT.and.it2.eq.jt2) THEN IF(Ip2.EQ.Jp2-1) C=C+SQRT(Jp2*1.D0)*FCpp(R) IF(Jp2.EQ.Ip2-1) C=C+SQRT(Ip2*1.D0)*FCpp(R) ENDIF C Excitation Energy IF(IT.EQ.JT.AND.IP.EQ.JP.AND.IT2.EQ.JT2.and.ip2.eq.jp2) THEN IF(IVIBROTT.EQ.0) THEN C=C+IT*OMEGAT ELSE C=C+2.D0*IT*(2.D0*IT+1.D0)/6.D0*E2T ENDIF IF(IVIBROTP.EQ.0) THEN C=C+IP*OMEGAP ELSE C=C+2.D0*IP*(2.D0*IP+1.D0)/6.D0*E2P ENDIF C=C+IT2*OMEGAT2 C=C+Ip2*OMEGAp2 ENDIF CPOT(I,J)=C 44 CONTINUE 43 CONTINUE 42 CONTINUE 41 CONTINUE 34 CONTINUE 33 CONTINUE 32 CONTINUE 31 CONTINUE C0=CPOT(1,1) DO 51 I=1,NDIM CPOT(I,I)=CPOT(I,I)-VN(R) c CPOT(I,I)=CPOT(I,I)-C0 51 CONTINUE c transfer channel 55 IF(NTRANS.EQ.1) THEN CPOT(1,NLEVEL)=FTRANS(R) CPOT(NLEVEL,1)=FTRANS(R) CPOT(NLEVEL,NLEVEL)=CPOT(1,1)-QTRANS & +(ZP+IQ)*(ZT-IQ)/R*HBAR/137.D0-ZP*ZT/R*HBAR/137.D0 ENDIF RETURN END C***************************************************************** FUNCTION V(R) C C potential for the relative motion C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) EXTERNAL VC,VN,VCENT V=VC(R)+VN(R)+VCENT(R) RETURN END C***************************************************************** FUNCTION VC(R) C C Coulomb potential C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI C Coulomb radius C RC=1.2D0*(AP**(1.D0/3.D0)+AT**(1.D0/3.D0)) C IF(R.GT.RC) THEN VC=ZP*ZT/R*HBAR/137.D0 C ELSE C VC=ZP*ZT*HBAR/137.D0*(3.D0*RC**2-R**2)/2.D0/RC**3 C ENDIF RETURN END C***************************************************************** FUNCTION DVC(R) C C first derivative of the Coulomb potential C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI C Coulomb radius C RC=1.2D0*(AP**(1.D0/3.D0)+AT**(1.D0/3.D0)) C IF(R.GT.RC) THEN DVC=-ZP*ZT/R**2*HBAR/137.D0 C ELSE C VC=ZP*ZT*HBAR/137.D0*(3.D0*RC**2-R**2)/2.D0/RC**3 C ENDIF RETURN END C**************************************************************** FUNCTION VN(R) C C (Power of) Woods-Saxon potential for nuclear potential C C**************************************************************** IMPLICIT REAL*8 (A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/POT/V0,R0,A0,POW IF(R.LT.50.D0) THEN VN=-V0/(1.D0+EXP((R-R0)/A0/POW))**POW ELSE VN=0.D0 ENDIF RETURN END C**************************************************************** FUNCTION VNCC(R,XT) C C (Power of) Woods-Saxon potential for nuclear potential C C**************************************************************** IMPLICIT REAL*8 (A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/POT/V0,R0,A0,POW IF(R.LT.50.D0) THEN RR=R-R0-XT VNCC=-V0/(1.D0+EXP(RR/A0/POW))**POW ELSE VNCC=0.D0 ENDIF RETURN END C*************************************************************** FUNCTION DVN(R) C C The first derivative of VN(R) C C************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/POT/V0,R0,A,POW EXTERNAL VN IF(R.LT.50.D0) THEN C DVN=V0/A*EXP((R-R0)/A)/(1.D0+EXP((R-R0)/A))**2 DVN=(VN(R+1.D-5)-VN(R-1.D-5))/2.D-5 ELSE DVN=0.D0 ENDIF RETURN END C************************************************************ FUNCTION VCENT(R) C C Centrifugal potential C C************************************************************ IMPLICIT REAL*8(A-H,O-Z) COMMON/CONST/HBAR,PI COMMON/ANGULAR/L COMMON/DYN/E,RMASS VCENT=L*(L+1.D0)*HBAR**2/2.D0/RMASS/R**2 RETURN END C************************************************************ FUNCTION DVCENT(R) C C The first derivative of the centrifugal potential C C************************************************************ IMPLICIT REAL*8(A-H,O-Z) COMMON/CONST/HBAR,PI COMMON/ANGULAR/L COMMON/DYN/E,RMASS DVCENT=-2.D0*L*(L+1.D0)*HBAR**2/2.D0/RMASS/R**3 RETURN END C*************************************************************** FUNCTION DV(R) C C The first derivative of V(R) C C*************************************************************** IMPLICIT REAL*8(A-H,O-Z) EXTERNAL DVN,DVC,DVCENT DV=DVN(R)+DVC(R)+DVCENT(R) RETURN END C***************************************************************** FUNCTION FCP(R) C C Coulomb coupling form factor for projectile phonon excitation C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/OSCP/BETAP,BETAPN,OMEGA,LAMBDA,NPHONON RC=RP IF(R.GT.RC) THEN FCP=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/R & *(RP/R)**LAMBDA ELSE FCP=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/RP)**LAMBDA ENDIF FCP=FCP*BETAP/SQRT(4.D0*PI) RETURN END C***************************************************************** FUNCTION FCP2(R) C C Coulomb coupling form factor for projectile excitation C (rotational E2 coupling) C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/ROTP/BETA2P,BETA4P,E2P,NROTP LAMBDA=2 RC=RP IF(R.GT.RC) THEN FCP2=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/R & *(RP/R)**LAMBDA ELSE FCP2=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/RP)**LAMBDA ENDIF FCP2=FCP2*(BETA2P+2.D0*SQRT(5.D0/PI)*BETA2P**2/7.D0) RETURN END C***************************************************************** FUNCTION FCP4(R) C C Coulomb coupling form factor for projectile excitation C (rotational E4 coupling) C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/ROTP/BETA2P,BETA4P,E2P,NROTP LAMBDA=4 RC=RP IF(R.GT.RC) THEN FCP4=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/R & *(RP/R)**LAMBDA ELSE FCP4=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/RP)**LAMBDA ENDIF FCP4=FCP4*(BETA4P+9.D0*BETA2P**2/7.D0/SQRT(PI)) RETURN END C***************************************************************** FUNCTION FCT(R) C C Coulomb coupling form factor for the target phonon excitation C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/OSCT/BETAT,BETATN,OMEGA,LAMBDA,NPHONON RC=RT IF(R.GT.RC) THEN FCT=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/R & *(RT/R)**LAMBDA ELSE FCT=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/RT)**LAMBDA ENDIF FCT=FCT*BETAT/SQRT(4.D0*PI) RETURN END C***************************************************************** FUNCTION FCTT(R) C C Coulomb coupling form factor for the second target phonon excitation C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/OSCT2/BETAT2,BETAT2N,OMEGA2,LAMBDA2,NPHONON2 RC=RT IF(R.GT.RC) THEN FCTT=3.D0/(2.D0*LAMBDA2+1.D0)*ZP*ZT/137.D0*HBAR/R & *(RT/R)**LAMBDA2 ELSE FCTT=3.D0/(2.D0*LAMBDA2+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/RT)**LAMBDA2 ENDIF FCTT=FCTT*BETAT2/SQRT(4.D0*PI) RETURN END C***************************************************************** FUNCTION FCpp(R) C C Coulomb coupling form factor for the second projectile phonon excitation C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/OSCp2/BETAp2,BETAp2N,OMEGA2,LAMBDA2,NPHONON2 RC=Rp IF(R.GT.RC) THEN FCpp=3.D0/(2.D0*LAMBDA2+1.D0)*ZP*ZT/137.D0*HBAR/R & *(Rp/R)**LAMBDA2 ELSE FCpp=3.D0/(2.D0*LAMBDA2+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/Rp)**LAMBDA2 ENDIF FCpp=FCpp*BETAp2/SQRT(4.D0*PI) RETURN END C***************************************************************** FUNCTION FCT2(R) C C Coulomb coupling form factor for target excitation C (rotational E2 coupling) C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/ROTT/BETA2T,BETA4T,E2T,NROTT LAMBDA=2 RC=RT IF(R.GT.RC) THEN FCT2=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/R & *(RT/R)**LAMBDA ELSE FCT2=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/RT)**LAMBDA ENDIF FCT2=FCT2*(BETA2T+2.D0*SQRT(5.D0/PI)*BETA2T**2/7.D0) RETURN END C***************************************************************** FUNCTION FCT4(R) C C Coulomb coupling form factor for target excitation C (rotational E4 coupling) C C***************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/HION/AP,ZP,RP,AT,ZT,RT COMMON/CONST/HBAR,PI COMMON/ROTT/BETA2T,BETA4T,E2T,NROTT LAMBDA=4 RC=RT IF(R.GT.RC) THEN FCT4=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/R & *(RT/R)**LAMBDA ELSE FCT4=3.D0/(2.D0*LAMBDA+1.D0)*ZP*ZT/137.D0*HBAR/RC & *(R/RT)**LAMBDA ENDIF FCT4=FCT4*(BETA4T+9.D0*BETA2T**2/7.D0/SQRT(PI)) RETURN END C*************************************************************** FUNCTION DDVN(R) C C The second derivative of VN(R) C C************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/POT/V0,R0,A,POW EXTERNAL DVN IF(R.LT.50.D0) THEN C DDVN=V0/A**2*EXP((R-R0)/A)/(1.D0+EXP((R-R0)/A))**2 C & -2.D0*V0/A**2*EXP(2.D0*(R-R0)/A) C & /(1.D0+EXP((R-R0)/A))**3 DDVN=(DVN(R+1.D-5)-DVN(R-1.D-5))/2.D-5 ELSE DDVN=0.D0 ENDIF RETURN END C**************************************************************** FUNCTION FTRANS(R) C C Coupling form factor for transfer reactions C C*************************************************************** IMPLICIT REAL*8(A-H,O-Z) COMMON/CONST/HBAR,PI COMMON/TRANS/FTR,QTRANS,IQ,NTRANS EXTERNAL DVN FTRANS=FTR*DVN(R) RETURN END C************************************************************* SUBROUTINE MDIAG(A,N) C C The Jacobi method to compute all eigenvalues and eigenvectors C of a real symmetric matrix A, which is of size N by N, stored C in a physical NP by NP array. On output, the elements of A C above the diagonal are destroyed. D returns the eigenvalues of C A in its first N elements. V is a matrix with the same logical C and physical dimensions as A whose columns contain, on output, C the normalized eigenvectors of A. NROT returns the number of C Jacobi rotations which were required. C C N.B.; The I-th component of the eigenvector for the K-th C eigenvalue is given by V(I,K). C C************************************************************ IMPLICIT REAL*8(A-H,O-Z) PARAMETER(NMAX=100) PARAMETER (NLEVELMAX=30) DIMENSION A(NLEVELMAX,NLEVELMAX) DIMENSION B(NMAX),Z(NMAX) COMMON/EIGEN/D(NLEVELMAX),V(NLEVELMAX,NLEVELMAX) DO 12 IP=1,N DO 11 IQ=1,N V(IP,IQ)=0.D0 11 CONTINUE V(IP,IP)=1.D0 12 CONTINUE DO 13 IP=1,N B(IP)=A(IP,IP) D(IP)=B(IP) Z(IP)=0.D0 13 CONTINUE NROT=0 DO 24 I=1,50 SM=0.D0 DO 15 IP=1,N-1 DO 14 IQ=IP+1,N SM=SM+ABS(A(IP,IQ)) 14 CONTINUE 15 CONTINUE IF(SM.EQ.0.D0) RETURN IF(I.LT.4) THEN TRESH=0.2D0*SM/N**2 ELSE TRESH=0.D0 ENDIF DO 22 IP=1,N-1 DO 21 IQ=IP+1,N G=100.D0*ABS(A(IP,IQ)) IF((I.GT.4).AND.(ABS(D(IP))+G.EQ.ABS(D(IP))) & .AND.(ABS(D(IQ))+G.EQ.ABS(D(IQ)))) THEN A(IP,IQ)=0.D0 ELSEIF(ABS(A(IP,IQ)).GT.TRESH) THEN H=D(IQ)-D(IP) IF(ABS(H)+G.EQ.ABS(H)) THEN T=A(IP,IQ)/H ELSE THETA=0.5D0*H/A(IP,IQ) T=1.D0/(ABS(THETA)+SQRT(1.D0+THETA**2)) IF(THETA.LT.0.D0) T=-T ENDIF C=1.D0/SQRT(1.D0+T**2) S=T*C TAU=S/(1.D0+C) H=T*A(IP,IQ) Z(IP)=Z(IP)-H Z(IQ)=Z(IQ)+H D(IP)=D(IP)-H D(IQ)=D(IQ)+H A(IP,IQ)=0.D0 DO 16 J=1,IP-1 G=A(J,IP) H=A(J,IQ) A(J,IP)=G-S*(H+G*TAU) A(J,IQ)=H+S*(G-H*TAU) 16 CONTINUE DO 17 J=IP+1,IQ-1 G=A(IP,J) H=A(J,IQ) A(IP,J)=G-S*(H+G*TAU) A(J,IQ)=H+S*(G-H*TAU) 17 CONTINUE DO 18 J=IQ+1,N G=A(IP,J) H=A(IQ,J) A(IP,J)=G-S*(H+G*TAU) A(IQ,J)=H+S*(G-H*TAU) 18 CONTINUE DO 19 J=1,N G=V(J,IP) H=V(J,IQ) V(J,IP)=G-S*(H+G*TAU) V(J,IQ)=H+S*(G-H*TAU) 19 CONTINUE NROT=NROT+1 ENDIF 21 CONTINUE 22 CONTINUE DO 23 IP=1,N B(IP)=B(IP)+Z(IP) D(IP)=B(IP) Z(IP)=0.D0 23 CONTINUE 24 CONTINUE PAUSE '50 iterations should never happen' RETURN END C**************************************************************** function cg(j1,m1,j2,m2,j3,m3) C C Clebsh-Gordan Coefficient C**************************************************************** implicit real*8(a-h,o-z) external fact if(m1+m2.ne.m3) then cg=0.d0 return endif if(j3.lt.abs(j1-j2)) then cg=0.d0 return endif if(j3.gt.j1+j2) then cg=0.d0 return endif ka=j1+j2-j3 kb=j3+j1-j2 kc=j2+j3-j1 kd=j1+j2+j3+1 del=sqrt(fact(ka)*fact(kb)*fact(kc)/fact(kd)) cg=0.d0 do 10 n=0,max(j1+j2-j3,j1-m1,j2+m2) ka1=j1+j2-j3-n if(ka1.lt.0.d0) go to 10 ka2=j3-j2+m1+n if(ka2.lt.0.d0) go to 10 ka3=j3-j1-m2+n if(ka3.lt.0.d0) go to 10 ka4=j1-m1-n if(ka4.lt.0.d0) go to 10 ka5=j2+m2-n if(ka5.lt.0.d0) go to 10 an=n*1.d0 cg=cg+(-1.d0)**n & /(fact(n)*fact(ka1)*fact(ka2)*fact(ka3)*fact(ka4)*fact(ka5)) 10 continue 20 cg=cg*sqrt(fact(j1+m1)*fact(j1-m1)) cg=cg*sqrt(fact(j2+m2)*fact(j2-m2)) cg=cg*sqrt(fact(j3+m3)*fact(j3-m3)) cg=cg*sqrt(2.d0*j3+1.d0)*del return end C*************************************************************** SUBROUTINE MATINV(NMAX,C,D) C C subroutine for calculating the inversion of a matrix C, C whose dimension is NMAX C C*************************************************************** IMPLICIT COMPLEX*16 (A-H,O-Z) PARAMETER (NLEVELMAX=30) DIMENSION U(NLEVELMAX),V(NLEVELMAX), & C(NLEVELMAX,NLEVELMAX),D(NLEVELMAX,NLEVELMAX) DETER=1.0 DO 1 M=1,NMAX DO 1 N=1,NMAX D(N,M)=0.0 IF(N.EQ.M) D(N,M)=1.0 1 CONTINUE DO 10 N=1,NMAX T=C(N,N) IF (ABS(T).LT.1.E-10) GO TO3 GO TO 6 3 J=N 4 J=J+1 IF (J.GT.NMAX) GO TO 11 T=C(N,J) DETER=-DETER IF (ABS(T).LE.1.E-10) GO TO 4 DO 5 K=1,NMAX U(K)=C(N,K) V(K)=D(N,K) C(N,K)=C(J,K) D(N,K)=D(J,K) C(J,K)=U(K) 5 D(J,K)=V(K) 6 DO 7 K=1,NMAX IF (K.EQ.N) GO TO 7 A=C(K,N)/C(N,N) DO 8 L=1,NMAX C(K,L)=C(K,L)-A*C(N,L) D(K,L)=D(K,L)-A*D(N,L) 8 CONTINUE 7 CONTINUE B=C(N,N) DETER=B*DETER DO 10 M=1,NMAX C(N,M)=C(N,M)/B D(N,M)=D(N,M)/B 10 CONTINUE RETURN 11 PRINT 12 12 FORMAT('MATRIX NOT INVERTIBLE') RETURN END function fact(n) implicit real*8(a-h,o-z) if(n.lt.0) then fact=0.d0 return endif if (n.eq.0) then fact=1.d0 go to 10 endif fact=1.d0 do 20 i=1,n fact=fact*i*1.d0 20 continue 10 return end C***************************************************************** C Subroutine for the Coulomb wave function C***************************************************************** SUBROUTINE JFLGAM(XD,YD,PAR,PAI,NBCHIF) DOUBLE PRECISION XD,YD,PAR,PAI,TEST,C,HLO2PI,PI,PIS2,PIS4 DOUBLE PRECISION X,Y,U,V,TRA,TRA1,ALO2PI,RAC2,COSI,SINI DOUBLE PRECISION COS2I,SIN2I,ZMOD,DEPI DOUBLE PRECISION XX DOUBLE PRECISION ALOPI DOUBLE PRECISION SUPINT DIMENSION TEST(7),C(6) DATA TEST/2.9152D+7,2.2958D+3,1.4124D+2,3.9522D+1,19.6611D0, &12.791D0,-10.D0/ DATA C/8.333333333333333D-2,-2.777777777777777D-3, &7.936507936507937D-4,-5.952380952380952D-4,8.417508417508418D-4, &-1.917526917526918D-3/ DATA HLO2PI/0.918938533204672/,PI/3.141592653589793/ DATA PIS2/1.570796326794897/,PIS4/0.785398163397448/ DATA ALO2PI/1.837877066409345/,RAC2/0.3465735902799726/ DATA DEPI/6.283185307179586/,ALOPI/1.1447298858494002/ DATA SUPINT/2147483647.D0/ NBCHIF=15 X=DABS(XD) XX=X IF(YD)1,2,1 1 Y=DABS(YD) KR=1 I=DMOD(10.99D0-X,SUPINT) C TRANSLATION IF(I)3,3,4 4 TRA=I X=X+TRA C LOGARITHME(X+IY) (X,Y POSITIFS) 3 IF(X-Y)5,6,7 5 TRA1=X/Y IF(TRA1)8,8,9 8 U=DLOG(Y) V=PIS2 GO TO 10 6 U=RAC2+DLOG(X) V=PIS4 GO TO 10 9 TRA=Y*DSQRT(1.D0+TRA1*TRA1) TRA1=Y/X 11 U=DLOG(TRA) V=DATAN(TRA1) 10 GO TO (12,19,23),KR 7 TRA1=Y/X TRA=X*DSQRT(1.D0+TRA1*TRA1) GO TO 11 12 KR=2 C DEVELOPPEMENT ASYMPTOTIQUE ( X SUPERIEUR A 10 ) TRA=X-0.5D0 PAI=V*TRA+Y*(U-1.D0) PAR=-X+HLO2PI+U*TRA-V*Y ZMOD=X+Y IF(ZMOD-TEST(1))13,13,14 13 TRA=X*X+Y*Y COSI=X/TRA SINI=Y/TRA SIN2I=(SINI*COSI)+(SINI*COSI) COS2I=(COSI+SINI)*(COSI-SINI) K=1 GO TO 15 16 TRA=COSI*COS2I-SINI*SIN2I SINI=SINI*COS2I+COSI*SIN2I COSI=TRA 15 PAR=PAR+C(K)*COSI PAI=PAI-C(K)*SINI K=K+1 IF(ZMOD-TEST(K))16,16,14 C TRANSLATION INVERSE 17 I=I-1 X=I X=XX+X GO TO 3 19 PAR=PAR-U PAI=PAI-V 14 IF(I-1)18,60,17 60 IF(XD)17,61,17 C CONTROLE DU QUADRANT 18 IF(XD)20,61,21 61 TRA=PI*Y IF(TRA-1.D-2)300,300,301 300 PAR= TRA*(2.D0+TRA*(-2.D0+TRA*(1.333333333333333D0+TRA*( &-0.6666666666666666D0+TRA*(0.2666666666666666D0+TRA*( &-0.08888888888888888D0+TRA*0.02539682539682540D0)))))) TRA1=-DLOG(Y)-DLOG(PAR) GO TO 302 301 PAR=1.D0-DEXP(-TRA-TRA) TRA1=-DLOG(Y*PAR) 302 PAR=0.5D0*(ALO2PI-TRA+TRA1) PAI=PAI-PIS2 21 IF(YD)28,100,100 C X+IY CHANGE EN -X-IY 20 TRA=PI*Y PAR=ALO2PI-U-PAR-TRA PAI=PI-V-PAI TRA=DEXP(-TRA-TRA) X=PI*DMOD(X,2.D0) SINI=(1.D0-TRA)*DCOS(X) COSI=(1.D0+TRA)*DSIN(X) KR=3 X=DABS(COSI) Y=DABS(SINI) GO TO 3 23 IF(COSI)24,25,25 24 V=PI-DSIGN(V,SINI) GO TO 26 25 IF(SINI)27,26,26 27 V=-V 26 PAR=PAR-U PAI=PAI-V IF(YD)100,100,28 28 PAI=-PAI C ARGUMENT DANS -PI,PI 100 TRA=DABS(PAI/DEPI) IF(TRA-1.D+15)203,204,204 204 NBCHIF=0 PAI=0.D0 GO TO 29 203 IF(TRA-1.D0)205,205,206 206 NBCHIF=DLOG10(TRA) NBCHIF=14-NBCHIF TRA=DMOD(TRA,SUPINT) PAI=DMOD(TRA,1.D0)*DSIGN(DEPI,PAI) 205 IF(DABS(PAI)-PI)29,29,207 207 PAI=PAI-DSIGN(DEPI,PAI) GO TO 29 C JFLGAM REEL 2 PAI=0.D0 IF(XD)31,32,33 C CONDITIONS D EXISTENCE 32 WRITE (6,1000) 1000 FORMAT (21H JFLGAM(0) EST INFINI) GO TO 50 31 IF(X-4503599627370496.D0)34,35,35 35 WRITE (6,1001) 1001 FORMAT (30H ARGUMENT DE JFLGAM TROP GRAND) GO TO 50 34 Y=DMOD(X,SUPINT) IF(Y)400,36,400 400 IF(Y-0.99D0)33,33,405 405 TRA=IDINT(Y+0.1D0) IF(DABS(Y-TRA)-5.D-15)36,36,33 36 WRITE (6,1002) 1002 FORMAT (28H JFLGAM (-ENTIER) EST INFINI) 50 PAR=1.D+74 NBCHIF=0 GO TO 29 C TRANSLATION 33 I=DMOD(10.99D0-X,SUPINT) IF(I)37,37,38 38 TRA=I X=X+TRA C DEVELOPPEMENT ASYMPTOTIQUE 37 Y=DLOG(X) PAR=-X+HLO2PI+Y*(X-0.5D0) IF(X-TEST(1))39,39,43 39 COSI=1.D0/X COS2I=COSI*COSI K=1 GO TO 41 42 COSI=COSI*COS2I 41 PAR=PAR+C(K)*COSI K=K+1 IF(X-TEST(K))42,42,40 C TRANSLATION INVERSE 44 X=X-1.D0 48 Y=DLOG(X) PAR=PAR-Y I=I-1 40 IF(I-1)43,49,44 49 X=DABS(XD) GO TO 48 C X NEGATIF 43 IF(XD)45,29,29 45 PAR=ALOPI-PAR-Y Y=PI*DMOD(X,2.D0) Y=-DSIN(Y) IF(Y)46,36,47 46 Y=-Y PAI=PI 47 PAR=PAR-DLOG(Y) ENTRY JFLGV1 29 RETURN END SUBROUTINE YFCLEN(ETA,RO,U,UP,V,VP,SIGMA0,IDIV,NN) IMPLICIT COMPLEX*16(A-D,F-H),REAL*8(E,P-Z) C IF(NN.EQ.1)GO TO 20 C ETA2=ETA*ETA FA=DCMPLX(1.D0,ETA) M=0.25*ETA+4.D1 C C POLYNOMES DE TCHEBICHEV JUSQU'AU RANG M C K=M+2 X=(ETA+ETA)/RO XX=X+X-1.D0 T0=1.D0 T1=XX XX=XX+XX DO 6 J=2,K TJ=XX*T1-T0 T0=T1 T1=TJ 6 CONTINUE TM=T1 TL=T0 C C INITIALISATION C AM=(0.D0,0.D0) AL=(1.D-40,1.D-40) BN=(0.D0,0.D0) BM=(1.D-40,1.D-40) BL=(0.D0,0.D0) BK=DCMPLX(4.D0*DFLOAT(M+1),0.D0)*AL+BM F=(0.D0,0.D0) G =(0.D0,0.D0) GP=(0.D0,0.D0) C C RECURRENCE DESCENDANTE C K=M 10 R=K TK=XX*TL-TM TM=TL TL=TK HK=DCMPLX(TK,0.D0) C1=DCMPLX(R*(R+1.D0)-ETA2,ETA*(R+R+1.D0)) C2=(4.D0,0.D0)*DCMPLX(R+1.D0,0.D0) C2=C2*DCMPLX(-R-1.D0,ETA*3.D0) C3=FA*DCMPLX(-R-R-4.D0,ETA) C4=DCMPLX((7.D0*R+5.D0)/4.D0,0.D0) C5=DCMPLX(R+R+2.D0,0.D0) C6=DCMPLX((R+3.D0)/4.D0,0.D0) AK=(C2*AL+C3*AM-C4*BL-C5*BM-C6*BN)/C1 J=K/2 J=K-J-J IF(J)1,2,1 1 F=F-AK GO TO 3 2 F=F+AK 3 Z=ABS(AK) G=G+HK*AK GP=GP+HK*BK C C F=A0/2-A1+A2-A3+A4-A5+... C C CONGRUENCE MODULO 10**60 C IF(Z-1.D60)4,5,5 5 D=(1.D60,0.D0) AK=AK/D AL=AL/D AM=AM/D BK=BK/D BL=BL/D BM=BM/D BN=BN/D F=F/D G=G/D GP=GP/D 4 IF(K)8,8,9 9 D=DCMPLX(4.D0*R,0.D0) BJ=D*AK+BL AM=AL AL=AK BN=BM BM=BL BL=BK BK=BJ K=K-1 GO TO 10 C C NORMALISATION ET CALCUL DE Z(RO) C 8 D=(0.5D0,0.D0)*AK F=F-D G=G-D GP=GP-(0.5D0,0.D0)*BK D=DCMPLX(0.D0,-ETA*DLOG(2.D0)+SIGMA0) AXPO=EXP(D) F=F/AXPO G=G/F GP=GP/F C C CALCUL DE F ET G C D=DCMPLX(0.D0,RO-ETA*DLOG(RO)) AXPO=EXP(D) D=G*AXPO GP=AXPO*(DCMPLX(0.D0,1.D0-ETA/RO)*G-DCMPLX(X/RO,0.D0)*GP) V=D D=(0.D0,-1.D0)*D U=D VP=GP GP=(0.D0,-1.D0)*GP UP=GP IDIV=0 RETURN C C SERIE ORIGINE C 20 PI=3.141592653589793D0 XA=0.577215664901533D0 RO2=RO*RO ETAP=ETA+ETA PIETA=PI*ETA Z=138.15510557964276D0 IDIV=0 IF(DABS(PIETA)-Z)21,21,22 22 INDG=IDINT(PIETA/Z) IDIV=60*INDG IF(ETA.LT.0) IDIV=0 PIETA=PIETA-Z*DFLOAT(INDG) 21 PIETA2=0.5D0*PIETA P=DEXP(PIETA2)*DSQRT(DSINH(PIETA)/PIETA) CALL JFDELG(1.D0,ETA,PAR,PAI,NB) Z1=ETAP*(XA+XA+DLOG(2.D0)-1.D0+PAR) U0=0.D0 U1=RO V0=1.D0 V1=Z1*RO U=U0+U1 V=V0+V1 UP=1.D0 VP=Z1 XN=2.D0 DO 104N=2,10000 XN1=XN*(XN-1.D0) U2=(ETAP*RO*U1-RO2*U0)/XN1 U=U+U2 V2=(ETAP*RO*V1-RO2*V0-ETAP*(XN+XN-1.D0)*U2)/XN1 V=V+V2 UP=UP+XN*U2/RO VP=VP+XN*V2/RO IF(DABS(U2/U).GT.1.D-14)GOTO18 IF(DABS(V2/V).LE.1.D-14)GOTO19 18 U0=U1 U1=U2 V0=V1 V1=V2 XN=XN+1.D0 104 CONTINUE 19 PP=V+ETAP*U*DLOG(RO) W=U/P WP=UP/P V=P*PP VP=P*(VP+ETAP*(UP*DLOG(RO)+U/RO)) U=W UP=WP RETURN END SUBROUTINE YFASYM(ETA,RAU,FO,FPO,GO,GPO,SIGO,IEXP) IMPLICIT REAL*8 (A-H,O-Z) IEXP=0 TRB=0.D0 RAU2=RAU+RAU ETAC=ETA*ETA CALL JFLGAM(1.D0,ETA,TRA,SIGO,NTRUC) 40 N=0 PS=1.D0 GS=0.D0 PT=0.D0 GT=1.D0-ETA/RAU SF=PS SG=GS SPF=PT SPG=GT 45 DENOM= DFLOAT(N+1)*RAU2 AN= DFLOAT(N+N+1)*ETA/DENOM BN= (ETAC-DFLOAT(N*(N+1)))/DENOM PS1=AN*PS-BN*PT GS1=AN*GS-BN*GT-PS1/RAU PT1=AN*PT+BN*PS GT1=AN*GT+BN*GS-PT1/RAU 42 SF=SF+PS1 SG=SG+GS1 SPF=SPF+PT1 SPG=SPG+GT1 N=N+1 IF(N-17)46,48,44 48 TRA=PS*PS+PT*PT 44 TRB=PS1*PS1+PT1*PT1 TEST=TRA-TRB IF(TEST)47,47,46 46 PS=PS1 GS=GS1 PT=PT1 GT=GT1 TRA=TRB GOTO 45 47 TETAO= RAU-ETA*DLOG (RAU2)+SIGO TRA= DSIN(TETAO) TRB=DCOS(TETAO) GO=SF*TRB-SPF*TRA GPO=SG*TRB-SPG*TRA FO=SPF*TRB+SF*TRA FPO=SPG*TRB+SG*TRA RETURN END SUBROUTINE DFCOUL(ETA,RO,F,FP,G,GP,SIGMA,L,IEXP) IMPLICIT REAL*8(A-H,O-Z) DIMENSION F(*),FP(*),G(*),GP(*),IEXP(*),SIGMA(*) DATA DEPI/6.283185307179586D0/ ETAC=ETA*ETA L1=L+1 CALL DFCZ0(ETA,RO,F0,FP0,G0,GP0,S,I) F(1)=F0 FP(1)=FP0 G(1)=G0 GP(1)=GP0 IEXP(1)=I SIGMA(1)=S IF(L)1,1,2 1 RETURN 2 LINF=0 IND=0 IF((ETA.GT.0).AND.(RO.LT.(ETA+ETA)))GO TO 21 Z=ETA+DSQRT(ETAC+DFLOAT(L*(L+1))) IF(RO.GE.Z)GO TO 20 7 ROINF=ETA+DSQRT(ETAC+DFLOAT(LINF*(LINF+1))) IF(RO-ROINF)3,4,4 4 IF(LINF-L)5,6,6 5 LINF=LINF+1 GO TO 7 3 IND=1 6 LIN=LINF+1 20 XM=1.D0 IF(IND.EQ.0)LIN=L1 DO 8 J=2,LIN ZIG=(DSQRT(ETAC+XM*XM))/XM ZAG=ETA/XM+XM/RO F(J)=(ZAG*F(J-1)-FP(J-1))/ZIG FP(J)=ZIG*F(J-1)-ZAG*F(J) G(J)=(ZAG*G(J-1)-GP(J-1))/ZIG GP(J)=ZIG*G(J-1)-ZAG*G(J) IEXP(J)=I SIG=SIGMA(J-1)+DATAN(ETA/(J-1)) IPI=SIG/DEPI SIG=SIG-IPI*DEPI IF(SIG)60,50,70 60 IF(SIG.LT.(-DEPI/2.D0))SIG=SIG+DEPI GO TO 50 70 IF(SIG.GT.(DEPI/2.D0))SIG=SIG-DEPI 50 SIGMA(J)=SIG 8 XM=XM+1.D0 IF(IND.EQ.0)RETURN GO TO 22 21 LIN=1 22 FTEST=F(LIN) FPTEST=FP(LIN) LMAX=LINF+25+IDINT(5.D0*DABS(ETA)) IF(LMAX-L)9,10,10 9 LMAX=L 10 FI=1.D0 FPI=1.D0 13 XM=LMAX+1 ZIG=(DSQRT(ETAC+XM*XM))/XM ZAG=ETA/XM+XM/RO FL=(ZAG*FI+FPI)/ZIG FPL=ZAG*FL-ZIG*FI IF(DABS(FL)-1.D15)26,27,27 26 IF(DABS(FPL)-1.D15)28,27,27 27 FL=FL*1.D-15 FPL=FPL*1.D-15 28 FI=FL FPI=FPL IF(LMAX-L)11,11,12 12 LMAX=LMAX-1 GO TO 13 11 F(LMAX+1)=FL FP(LMAX+1)=FPL IF(LMAX-LINF)15,15,14 14 GO TO 12 15 FACT=FTEST/F(LIN) FACTP=FPTEST/FP(LIN) INDICE=I/60 XM=LINF DO 16 J=LIN,L1 F(J)=F(J)*FACT FP(J)=FP(J)*FACTP 25 IF(J.EQ.1)GO TO 16 ZIG=(DSQRT(ETAC+XM*XM))/XM ZAG=ETA/XM+XM/RO G(J)=(ZAG*G(J-1)-GP(J-1))/ZIG GP(J)=ZIG*G(J-1)-ZAG*G(J) IF(DABS(G(J))-1.D60)17,18,18 17 IF(DABS(GP(J))-1.D60)19,18,18 18 G(J)=G(J)/1.D60 GP(J)=GP(J)/1.D60 INDICE=INDICE+1 19 IEXP(J)=INDICE*60 A=FP(J)*G(J) B=-F(J)*GP(J) IF(A-1.D0)29,30,30 29 I1=IDINT(DLOG10(A)) I2=IDINT(DLOG10(B)) GO TO 31 30 I1=IDINT(DLOG10(A))+1 I2=IDINT(DLOG10(B))+1 31 F(J)=F(J)*1.D1**(-I2) FP(J)=FP(J)*1.D1**(-I1) SIG=SIGMA(J-1)+DATAN(ETA/(J-1)) IPI=SIG/DEPI SIG=SIG-IPI*DEPI IF(SIG)61,51,71 61 IF(SIG.LT.(-DEPI/2.D0))SIG=SIG+DEPI GO TO 51 71 IF(SIG.GT.(DEPI/2.D0))SIG=SIG-DEPI 51 SIGMA(J)=SIG 16 XM=XM+1.D0 RETURN END SUBROUTINE YFIREG(ETA,RO,G0,GP0) IMPLICIT REAL*8(A-H,O-Z) IF(ETA.LE.0.D0)GOTO250 IF(ETA.LE.3.D0)GOTO251 IF(ETA.LE.1.D1)GOTO252 IF(ETA.LE.18.D0)GOTO253 IF(ETA.LE.22.D0)GOTO254 IF(RO.LE.0.3D0+(3.D1-ETA)/8.D1)GOTO200 C SERIE DE TAYLOR DEPART RAU0 300 CONTINUE RAU0=1.666666666666667D0*DABS(ETA)+7.5D0 CALL YFASYM(ETA,RAU0,F0,FP0,G0,GP0,SIGMA0,IEXP) X=RAU0-RO X2=X*X X3=X*X2 UNR=1.D0/RAU0 ETR0=1.D0-2.D0*ETA*UNR U0=G0 U1=-X*GP0 U2=-0.5D0*ETR0*X2*U0 S=U0+U1+U2 V1=U1/X V2=2.D0*U2/X T=V1+V2 XN=3.D0 DO10N=3,10000 C N=N XN1=XN-1.D0 XN1=XN*XN1 U3=X*U2*UNR*(1.D0-2.D0/XN)-ETR0*U1*X2/XN1+X3*U0*UNR/XN1 S=S+U3 V3=XN*U3/X T=T+V3 16 IF(DABS(U3/S).GT.1.D-11)GO TO 11 IF(DABS(V3/T).LE.1.D-11)GO TO 20 11 U0=U1 U1=U2 U2=U3 XN=XN+1.D0 10 CONTINUE 20 G0=S GP0=-T RETURN C SERIE ORIGINE 200 CONTINUE PI=3.141592653589793D0 GA=0.577215664901533D0 ETA2=ETA*ETA RO2=RO*RO ETAP=ETA+ETA PIETA=PI*ETA PIETA2=0.5D0*PIETA B=DEXP(PIETA2)*DSQRT(DSINH(PIETA)/PIETA) CALL JFDELG(1.D0,ETA,PAR,PAI,NB) C1=ETAP*(GA+GA+DLOG(2.D0)-1.D0+PAR) U0=0.D0 U1=RO V0=1.D0 V1=C1*RO U=U0+U1 V=V0+V1 UP=1.D0 VP=C1 XN=2.D0 DO 104N=2,10000 XN1=XN*(XN-1.D0) U2=(ETAP*RO*U1-RO2*U0)/XN1 U=U+U2 V2=(ETAP*RO*V1-RO2*V0-ETAP*(XN+XN-1.D0)*U2)/XN1 V=V+V2 UP=UP+XN*U2/RO VP=VP+XN*V2/RO 17 IF(DABS(U2/U).GT.1.D-14)GOTO18 IF(DABS(V2/V).LE.1.D-14)GOTO19 18 U0=U1 U1=U2 V0=V1 V1=V2 XN=XN+1.D0 104 CONTINUE 19 GP=V+ETAP*U*DLOG(RO) G0=B*GP GP0=B*(VP+ETAP*(UP*DLOG(RO)+U/RO)) RETURN 250 IF(RO.LE.0.5D0*ETA+9.D0)GOTO200 GOTO 300 251 IF(RO.LE.2.25D0+7.35D0*(3.D0-ETA))GOTO200 GOTO 300 252 IF(RO.LE.1.2D0+1.5D-1*(1.D1-ETA))GOTO200 GOTO 300 253 IF(RO.LE.0.6D0+0.75D-1*(18.D0-ETA))GOTO200 GOTO 300 254 IF(RO.LE.0.4D0+0.5D-1*(22.D0-ETA))GOTO200 GOTO 300 END SUBROUTINE YFRICA(ETA,RAU,FO,FPO,GO,GPO,SIGMA0,IDIV) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION Q(5),QP(5) C C COEFFICIENTS RICCATI C DATA G61,G62,G63,G64,G65,G66,G67,G68,G69,G610, &G611/ 0.1159057617187498D-01,0.3863525390624998D-01, &0.4660034179687498D-01,0.4858398437499998D-01, &0.1156514485677080D 01,0.5687475585937496D 01, &0.1323888288225445D 02,0.1713083224826384D 02, &0.1269003295898436D 02,0.5055236816406248D 01, &0.8425394694010415D 00/ DATA G81,G82,G83,G84,G85,G86,G87,G88,G89,G810,G811,G812,G813,G814, &G815/ 0.1851092066083633D-01,0.8638429641723630D-01, &0.1564757823944092D 00,0.1430139541625977D 00, &0.1924622058868408D 00,0.8500803152720129D 01, &0.7265429720878595D 02,0.3057942376817972D 03, &0.7699689544836672D 03,0.1254157054424285D 04, &0.1361719536066055D 04,0.9831831171035763D 03, &0.4547869927883148D 03,0.1222640538215636D 03, &0.1455524450256709D 02/ DATA GP61,GP62,GP63,GP64,GP65,GP66/ 0.2897644042968748D-01, &0.2318115234375000D 00,0.8056640625000000D 00, &0.1601562499999998D 01,0.3046875000000000D 00, &0.5624999999999998D 01/ DATA GP81,GP82,GP83,GP84,GP85,GP86,GP87, &GP88/ 0.6478822231292720D-01,0.6910743713378906D 00, &0.3322952270507811D 01,0.9483032226562498D 01, &0.1769653320312499D 02,0.3478710937499998D 02, &0.5020312499999999D 02,0.7874999999999999D 02/ DATA Q /0.4959570165D-1,0.8888888889D-2,0.2455199181D-2, &0.9108958061D-3,0.2534684115D-3/ DATA QP /0.1728260369D0,0.3174603174D-3,0.3581214850D-2, &0.3117824680D-3,0.9073966427D-3/ CALL JFLGAM(1.D0,ETA,TRA,SIGMA0,IND) RAU2=RAU+RAU RAUC=RAU*RAU ETAC=ETA*ETA ETA2=ETA+ETA ETARO=ETA*RAU ETARO2=ETARO+ETARO PIETA=3.141592653589793*ETA IND=0 JND=0 IG=0 IF(ETA)20,20,21 20 IF(-ETARO-14.0625D0)32,22,22 22 INDICE=1 C RICCATI 3 IDIV=0 GO TO 2 21 IF(DABS(RAU-ETA2).LE.1.D-9)GO TO 18 IF(RAU-ETA2)30,18,31 31 IF(RAU-ETA2-2.D1*(ETA**0.25D0))34,33,33 33 INDICE=0 C RICCATI 2 IDIV=0 GO TO 2 32 NN=1 GO TO 35 34 NN=0 35 CALL YFCLEN(ETA,RAU,FO,FPO,GO,GPO,SIGMA0,IDIV,NN) RETURN 30 IF(ETARO-12.D0)32,32,23 23 TRA=ETA2-6.75D0*(ETA**0.4D0) IF(RAU-TRA)6,6,24 24 IND=1 JND=1 RO=RAU RAU=TRA RAU0=TRA C RICCATI 1 6 X=RAU/ETA2 U= (1.D0-X)/X X2=X*X RU= DSQRT(U) RX= DSQRT(X) TRE= 1.D0/(U*RU*ETA2) TRB=TRE*TRE FI= (DSQRT((1.D0-X)*X)+DASIN(RX)-1.570796326794897D0)*ETA2 TR1= -0.25D0*DLOG(U) 602 TR2= -((9.D0*U+6.D0)*U+5.D0)/48.D0 603 TR3= ((((-3.D0*U-4.D0)*U+6.D0)*U+12.D0)*U+5.D0)/64.D0 604 TR4=- ((((((U+2.D0)*945.D0*U+1395.D0)*U+12300.D0)*U+25191.D0) &*U+19890.D0)*U+5525.D0)/46080.D0 605 TR5= ((((((((-27.D0*U-72.D0)*U-68.D0)*U+360.D0)*U+2190.D0) &*U+4808.D0)*U+5148.D0)*U+2712.D0)*U+565.D0)/2048.D0 606 TR6=- (((((((((G61*U+G62)*U+G63)*U+G64)*U+G65)*U+G66)*U+G67) &*U+G68)*U+G69)*U+G610)*U+G611 607 TR7= ((((((((((((-81.*U-324.)*U-486.)*U-404.)*U+4509.)*U+52344.) &*U+233436.)*U+567864.)*U+838521.)*U+775884.)*U+441450.) &*U+141660.)*U+19675.) /6144. 608 TR8= (((((((((((((G81*U+G82)*U+G83)*U+G84)*U+G85)*U+G86)*U+G87) &*U+G88)*U+G89)*U+G810)*U+G811)*U+G812)*U+G813)*U+G814)*U+G815 PSIP=PSIP+TRA XXX=138.1551055796428D0 FI= FI+TRE*(TR2+TRB*(TR4+TRB*(TR6+TRB*TR8))) PSI=-FI INDG=IDINT(PSI/XXX) IDIV=60*INDG TRA= TR1+TRB*(TR3+TRB*(TR5+TRB*TR7)) FI=FI+TRA PSI=PSI+TRA FIP=RU*ETA2 TRA=1.D0/(X2*U) TR1=0.25D0 TRE= TRE/(X2*X2*U) TRB=TRB/(X2*X2) 702 TR2= -(8.D0*X-3.D0)/32.D0 703 TR3= ((24.D0*X-12.D0)*X+3.D0)/64.D0 704 TR4= (((-1536.D0*X+704.D0)*X-336.D0)*X+63.D0)/2048.D0 705 TR5= ((((1920.D0*X-576.D0)*X+504.D0)*X-180.D0)*X+27.D0)/1024.D0 706 TR6 = ((((-GP66*X+GP65)*X-GP64)*X+GP63)*X-GP62)*X+GP61 707 TR7= - ((((((-40320.D0*X-10560.D0)*X-13248.D0)*X+7560.D0) &*X-3132.D0)*X+756.D0)*X-81.D0) / 2048.D0 708 TR8 =- ((((((GP88*X+GP87)*X+GP86)*X-GP85)*X+GP84)*X-GP83)*X+GP82) &*X-GP81 FIP=FIP +TRE*(TR2+TRB*(TR4+TRB*(TR6+TRB*TR8))) TRA= TRA*(TR1+TRB*(TR3+TRB*(TR5+TRB*TR7))) FIP=FIP+TRA PSIP=-FIP IF(INDG.EQ.0)GO TO 8 PSI=PSI-XXX*DFLOAT(INDG) FI =FI +XXX*DFLOAT(INDG) 8 FO=0.5D0*DEXP(FI) GO= DEXP(PSI) FPO= FO*FIP/ETA2 GPO=GO*PSIP/ETA2 IF(JND.EQ.0)RETURN RAU=RO GO=FO GPO=FPO 27 X=RAU0-RO X2=X*X X3=X*X2 UNR=1.D0/RAU0 ETR0=1.D0-2.D0*ETA*UNR U0=GO U1=-X*GPO U2=-0.5D0*ETR0*X2*U0 S=U0+U1+U2 V1=U1/X V2=2.D0*U2/X T=V1+V2 XN=3.D0 DO10N=3,10000 C N=N XN1=XN-1.D0 XN1=XN*XN1 U3=X*U2*UNR*(1.D0-2.D0/XN)-ETR0*U1*X2/XN1+X3*U0*UNR/XN1 S=S+U3 V3=XN*U3/X T=T+V3 16 IF(DABS(U3/S).GT.1.D-10)GO TO 11 IF(DABS(V3/T).LE.1.D-10)GO TO 17 11 U0=U1 U1=U2 U2=U3 XN=XN+1.D0 10 CONTINUE 17 IF(IG)25,26,25 25 GO=S GPO=-T FO=HO FPO=HPO RETURN 26 HO=S HPO=-T 18 ET0=ETA**(0.166666666666667) ETAD=ETAC*ETAC ET=ETA**(0.6666666666666667) ET1=ET*ET ET2=ET1*ET1 ET3=ET2*ET ET4=ETAD*ET ET5=ET4*ET FO=1.D0-Q(1)/ET1-Q(2)/ETAC-Q(3)/ET3-Q(4)/ETAD-Q(5)/ET5 GO=1.D0+Q(1)/ET1-Q(2)/ETAC+Q(3)/ET3-Q(4)/ETAD+Q(5)/ET5 FPO=1.D0+QP(1)/ET+QP(2)/ETAC+QP(3)/ET2+QP(4)/ETAD+QP(5)/ET4 GPO=1.D0-QP(1)/ET+QP(2)/ETAC-QP(3)/ET2+QP(4)/ETAD-QP(5)/ET4 FO=0.7063326373D0*ET0*FO GO=1.223404016D0*ET0*GO FPO=0.4086957323D0*FPO/ET0 GPO=-0.7078817734D0*GPO/ET0 IDIV=0 IF(IND.EQ.0)RETURN IG=1 RAU0=ETA2 GO TO 27 2 X=ETA2/RAU X2=X*X U=1.D0-X RU= DSQRT(U) U3=U*U*U TRD= 1.D0/(U3*ETA2*ETA2) TRC=X2*TRD TRE=1.D0/(U*RU*ETA2) FI= -0.25D0*DLOG(U) TRB=TRD/64.D0 TR3= (((3.D0*U-4.D0)*U-6.D0)*U+12.D0)*U-5.D0 501 TR5= ((((((((-27.D0*U+72.D0)*U-68.D0)*U-360.D0)*U+2190.D0) &*U-4808.D0)*U+5148.D0)*U-2712.D0)*U+565.D0)/32.D0 502 TR7= ((((((((((((81.D0*U-324.D0)*U+486.D0)*U-404.D0)*U-4509.D0) &*U+52344.D0)*U-233436.D0)*U+567864.D0)*U-838521.D0)*U+775884.D0) &*U-441450.D0)*U+141660.D0)*U-19675.D0)/96.D0 FI= FI+TRB*(TR3+TRD*(TR5+TRD*TR7)) FIP=0.25D0/U TRB=3.D0*TRC/(64.D0*U) TR3= (X-4.D0)*X+8.D0 511 TR5= ((((9.D0*X-60.D0)*X+168.D0)*X-192.D0)*X+640.D0)/16.D0 512 TR7= ((((((-27.D0*X+252.D0)*X-1044.D0)*X+2520.D0)*X-4416.D0) &*X-3520.D0)*X-13440.D0)/32.D0 FIP =FIP+TRB*(TR3+TRC*(TR5+TRC*TR7)) TRA= DABS((RU-1.D0)/(RU+1.D0)) PSI= (0.5D0*DLOG(TRA)+RU/X)*ETA2+0.785398163397448D0 TR2= -((9.D0*U-6.D0)*U+5.D0)/48.D0 521 TR4= ((((((U-2.D0)*945.D0*U+1395.D0)*U-12300.D0)*U+25191.D0) &*U-19890.D0)*U+5525.D0)/46080.D0 522 TR6 = (((((((((-G61*U+G62)*U-G63)*U+G64)*U-G65)*U+G66)*U-G67) &*U+G68)*U-G69)*U+G610)*U-G611 523 TR8= (((((((((((((G81*U-G82)*U+G83)*U-G84)*U+G85)*U-G86)*U+G87) &*U-G88)*U+G89)*U-G810)*U+G811)*U-G812)*U+G813)*U-G814)*U+G815 PSI= PSI+TRE*(TR2+TRD*(TR4+TRD*(TR6+TRD*TR8))) PSIP = -RU*ETA2/X2 TRB=TRE*X/U TR2= (3.D0*X-8.D0)/32.D0 531 TR4= - (((63.D0*X-336.D0)*X+704.D0)*X-1536.D0)/2048.D0 532 TR6 = ((((GP61*X-GP62)*X+GP63)*X-GP64)*X+GP65)*X-GP66 533 TR8 = ((((((-GP81*X+GP82)*X-GP83)*X+GP84)*X-GP85)*X+GP86)*X+GP87) &*X+GP88 PSIP =PSIP+ TRB*(TR2+TRC*(TR4+TRC*(TR6+TRC*TR8))) TRA= DEXP(FI) FO= TRA*DSIN(PSI) GO= TRA*DCOS(PSI) IF(INDICE)535,536,535 535 TRA=FO FO=GO GO=-TRA 536 TRA=-ETA2/RAUC FPO=(FIP*FO+PSIP*GO)*TRA GPO=(FIP*GO-PSIP*FO)*TRA RETURN END SUBROUTINE DFCZ0(ETA,RO,F0,FP0,G0,GP0,SIGMA0,IEXP) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION A1(110),A2(110),B1(110),B2(110) IF(RO)2,2,1 2 WRITE (6,1000) 1000 FORMAT (21H RO NEGATIF OU NUL **) RETURN 1 IF(ETA-30.D0)3,3,4 4 IF(DABS(ETA)-5.D2)28,28,29 28 CALL YFRICA(ETA,RO,F0,FP0,G0,GP0,SIGMA0,IEXP) RETURN 29 WRITE (6,1001) 1001 FORMAT (42H VALEUR ABSOLUE DE ETA SUPE-&EU-E A 500 **) RETURN 3 IF(ETA+8.D0)4,5,5 5 IF(ETA)6,7,6 7 F0=DSIN(RO) G0=DCOS(RO) FP0=G0 GP0=-F0 IEXP=0 SIGMA0=0.D0 RETURN 6 BORNE=1.666666666666667D0*DABS(ETA)+7.5D0 IF(RO-BORNE)8,9,9 9 CALL YFASYM(ETA,RO,F0,FP0,G0,GP0,SIGMA0,IEXP) RETURN 8 IF(ETA-10.D0)10,11,11 10 IF(ETA)12,12,13 13 IF(RO-2.D0)14,12,12 11 IF(ETA-(5.D0*RO+6.D1)/7.D0)12,12,14 12 CALL YFASYM(ETA,BORNE,F0,FP0,G0,GP0,SIGMA0,IEXP) H=BORNE DH=F0/H IF(ETA)20,21,21 20 N=-0.5D0*ETA+5.D0 GO TO 22 21 N=ETA/5.D0+5.D0 22 N=5*(N+1) Z=4.D0/H Y=1.D0-(ETA+ETA)*Z A1(N+2)=1.D-55 A1(N+3)=0.D0 A1(N+4)=1.D-64 B1(N+3)=1.D-50 B1(N+4)=1.D-68 A2(N+2)=0.D0 A2(N+3)=1.D-74 A2(N+4)=1.D-53 B2(N+3)=0.D0 B2(N+4)=1.D-66 M=N+2 DI=N DO 23 II=2,M I=M-II+2 B1(I)=B1(I+2)+Z*(DI+1.D0)*A1(I+1) S=A1(I+2)+Y*(A1(I+1)-A1(I)) Q=(DI+2.D0)*B1(I)+(DI-1.D0)*B1(I+1) A1(I-1)=S-Z*Q B2(I)=B2(I+2)+Z*(DI+1.D0)*A2(I+1) S=A2(I+2)+Y*(A2(I+1)-A2(I)) Q=(DI+2.D0)*B2(I)+(DI-1.D0)*B2(I+1) A2(I-1)=S-Z*Q IF(I.GE.N)GO TO 23 D=-(B2(I+2)+B2(I))/(B1(I+2)+B1(I)) DO 24 J=I,M A2(J)=A2(J)+D*A1(J) B2(J)=B2(J)+D*B1(J) 24 CONTINUE A2(I-1)=A2(I-1)+D*A1(I-1) 23 DI=DI-1.D0 Q=A1(3)-A1(1) C=A2(3)-A2(1) C=Q/C X1=0.5D0*(A1(2)-C*A2(2)) DO 25 I=3,M X1=X1+A1(I)-C*A2(I) 25 CONTINUE X1=DH/X1 X2=-C*X1 DO 26 I=2,M B1(I)=X1*B1(I)+X2*B2(I) A1(I)=X1*A1(I)+X2*A2(I) 26 CONTINUE A1(1)=X1*A1(1)+X2*A2(1) B1(1)=0.D0 X=RO/H Y=2.D0*X-1.D0 T1=1.D0 T2=Y RESULT=0.5D0*A1(2)+Y*A1(3) DERIVE=0.5D0*B1(2)+Y*B1(3) DO 27 I=2,N TI=2.D0*Y*T2-T1 T1=T2 T2=TI RESULT=RESULT+TI*A1(I+2) DERIVE=DERIVE+TI*B1(I+2) 27 CONTINUE F0=RESULT*RO FP0=DERIVE*RO+RESULT GO TO 30 C SERIE ORIGINE REGULIERE 14 PI=3.141592653589793D0 CALL JFLGAM(1.D0,ETA,TRA,SIGMA0,NTRUC) IEXP=0 RO2=RO*RO ETAP=ETA+ETA PIETA=PI*ETA PIETA2=0.5D0*PIETA B=DEXP(PIETA2)*DSQRT(DSINH(PIETA)/PIETA) U0=0.D0 U1=RO U=U0+U1 UP=1.D0 XN=2.D0 DO 15 N=2,10000 XN1=XN*(XN-1.D0) U2=(ETAP*RO*U1-RO2*U0)/XN1 U=U+U2 UP=UP+XN*U2/RO 17 IF(DABS(U2/U).LT.1.D-10)GO TO 19 18 U0=U1 U1=U2 XN=XN+1.D0 15 CONTINUE 19 F0=U/B FP0=UP/B 30 CALL YFIREG(ETA,RO,G0,GP0) RETURN END SUBROUTINE JFDELG (XD,YD,PAR,PAI,NBCHIF) DOUBLE PRECISION XD,YD,PAR,PAI,TEST,C,PI DOUBLE PRECISION X,Y,U,V,TRA,TRA1,COSI,SINI DOUBLE PRECISION COS2I,SIN2I,ZMOD,DEPI DOUBLE PRECISION TRB,XX DOUBLE PRECISION RAC2,PIS4 DOUBLE PRECISION SUPINT DIMENSION TEST(7),C(6) DATA TEST/2.9152D+7,2.2958D+3,1.4124D+2,3.9522D+1,19.6611D0, &12.791D0,-10.D0/ DATA RAC2/0.3465735902799726/,PIS4/0.785398163397448/ DATA C/8.333333333333333D-2,-8.33333333333333D-3, &3.968253968253968D-3,-4.166666666666667D-3,7.575757575757576D-3, &-2.109279609279609D-2/ DATA PI/3.141592653589793/ DATA DEPI/6.283185307179586/ DATA SUPINT/2147483647.D0/ X=DABS(XD) XX=X NBCHIF=15 IF(YD)1,2,1 1 Y=DABS(YD) KR=1 I=DMOD(10.99D0-X,SUPINT) C TRANSLATION IF(I)3,3,4 4 TRA=I X=X+TRA C LOGARITHME(X+IY) (X,Y POSITIFS) 3 IF(X-Y)5,6,7 5 TRA1=X/Y TRB=1.D0+TRA1*TRA1 TRA=Y*DSQRT(TRB) SINI=1./(TRB*Y) COSI=SINI*TRA1 TRA1=Y/X GO TO 11 6 U=RAC2+DLOG(X) V=PIS4 SINI=0.5D0/X COSI=SINI GO TO 10 7 TRA1=Y/X TRB=1.D0+TRA1*TRA1 TRA=X*DSQRT(TRB) COSI=1./(TRB*X) SINI=COSI*TRA1 11 U=DLOG(TRA) V=DATAN(TRA1) C DEVELOPPEMENT ASYMPTOTIQUE ( X SUPERIEUR A 10 ) 10 PAR=U-0.5*COSI PAI=V+0.5*SINI ZMOD=X+Y IF(ZMOD-TEST(1))13,13,14 13 SIN2I=(SINI*COSI)+(SINI*COSI) COS2I=(COSI+SINI)*(COSI-SINI) SINI=SIN2I COSI=COS2I K=1 GO TO 15 16 TRA=COSI*COS2I-SINI*SIN2I SINI=SINI*COS2I+COSI*SIN2I COSI=TRA 15 PAR=PAR-C(K)*COSI PAI=PAI+C(K)*SINI K=K+1 IF(ZMOD-TEST(K))16,16,14 C TRANSLATION INVERSE 17 I=I-1 X=I X=XX+X 56 IF(X-Y)55,55,57 55 TRA1=X/Y TRB=X*TRA1+Y SINI=1.D0/TRB COSI=TRA1/TRB GO TO 19 57 TRA1=Y/X TRB=X+Y*TRA1 COSI=1.D0/TRB SINI=TRA1/TRB 19 PAR=PAR-COSI PAI=PAI+SINI 14 IF(I)18,18,17 C CONTROLE DU QUADRANT 18 IF(XD)20,61,21 61 TRA=PI*Y IF(TRA-1.D-2)300,300,301 300 TRB= TRA*(2.D0+TRA*(-2.D0+TRA*(1.333333333333333D0+TRA*( &-0.6666666666666666D0+TRA*(0.2666666666666666D0+TRA*( &-0.08888888888888888D0+TRA*0.02539682539682540D0)))))) TRB=(2.D0-TRB)/TRB GO TO 302 301 TRB= DEXP(-TRA-TRA) TRB=(1.D0+TRB)/(1.D0-TRB) 302 PAI=0.5D0*(1.D0/Y+PI*TRB) 21 IF(YD)28,100,100 C X+IY CHANGE EN -X-IY 20 TRA=DEXP(-DEPI*Y) TRB=TRA*TRA COS2I=DEPI*DMOD(X,1.D0) SIN2I=-2.D0*TRA*DCOS(COS2I)+1.D0+TRB PAR=PAR+COSI+DEPI*TRA*DSIN(COS2I)/SIN2I PAI=PAI-SINI+PI*(TRB-1.D0)/SIN2I IF(YD)100,100,28 28 PAI=-PAI 35 WRITE (6,1001) 1001 FORMAT (30H ARGUMENT DE JFDELG TROP GRAND) GO TO 50 34 Y=DMOD(X,SUPINT) IF(Y) 400,36,400 400 IF(Y-0.99D0) 33,33,405 405 TRA= IDINT(Y+0.1D0) IF(DABS(Y-TRA)-5.D-15)36,36,33 31 IF(X-4503599627370496.D0)34,35,35 C ARGUMENT DANS -PI,PI 100 TRA=DABS(PAI/DEPI) IF(TRA-1.D+15)203,204,204 204 NBCHIF=0 PAI=0.D0 GO TO 29 203 IF(TRA-1.D0)205,205,206 206 NBCHIF=DLOG10(TRA) NBCHIF=14-NBCHIF TRA=DMOD(TRA,SUPINT) PAI=DMOD(TRA,1.D0)*DSIGN(DEPI,PAI) 205 IF(DABS(PAI)-PI)29,29,207 207 PAI=PAI-DSIGN(DEPI,PAI) GO TO 29 C DELGAMMA REEL 2 PAI=0.D0 IF(XD)31,32,33 C CONDITIONS D EXISTENCE 32 WRITE (6,1000) 1000 FORMAT (21H JFDELG(0) EST INFINI) GO TO 50 36 WRITE (6,1002) 1002 FORMAT (28H JFDELG (-ENTIER) EST INFINI) 50 PAR=1.D+74 NBCHIF=0 GO TO 29 C TRANSLATION 33 I=DMOD(10.99D0-X,SUPINT) IF(I)37,37,38 38 TRA=I X=X+TRA C DEVELOPPEMENT ASYMPTOTIQUE 37 Y=DLOG(X) PAR=Y-0.5D0/X IF(X-TEST(1))39,39,43 39 COS2I=1.D0/(X*X) COSI=COS2I K=1 GO TO 41 42 COSI=COSI*COS2I 41 PAR=PAR-C(K)*COSI K=K+1 IF(X-TEST(K))42,42,40 C TRANSLATION INVERSE 44 I=I-1 X=I X=XX+X PAR=PAR-1.D0/X 40 IF(I)43,43,44 C X NEGATIF 43 IF(XD)45,29,29 45 PAR=PAR+1.D0/X Y=PI*DMOD(X,2.D0) PAR=PAR+PI*DCOS(Y)/DSIN(Y) ENTRY JFDEV1 29 RETURN END