subroutine FHH_6SEC_init() c 6SEC PES of F+H2; Mielke et al, CPL 213, 11 (1993) call prepot_FHH_6SEC() return end cmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmc subroutine FHH_6SEC_pes(rs, v) implicit none real*8 rs(3), v !! Common block real*8 X(3),E,E1,E2,E3 COMMON /POTCM_FHH_6SEC/ X,E,E1,E2,E3 x(1)=rs(1) x(2)=rs(3) x(3)=rs(2) call pot_FHH_6SEC v=E return end cThis is the FH26SEC potential energy surface that you requested. C SUBROUTINE PREPOT_FHH_6SEC C C System: FH2 C Functional form: Double many-body expansion C Common name: 6SEC C Reference: S. L. Mielke, G. C. Lynch, D. G. Truhlar, and C D. W. Schwenke, Chem. Phys. Lett. 213 (1993) 10. C C PREPOT must be called once before any call to POT. C The potential parameters are included through the subprogram C BLOCK DATA FH2. C The coordinates, potential energy for the ground electronic state, and C the derivatives of the potential energy for the ground electronic state C with respect to the coordinates are passed through the common block POTCM: C /POTCM/ R(3), ENERGY, DEDR(3). C All information passed through the common block POTCM is in hartree C atomic units. C C This potential is written such that: C R(1) = R(F-H) C R(2) = R(H-H) C R(3) = R(H-F) C C The the flags that indicate what calculations should be carried out in C the potential routine are passed through the common block POTCCM: C /POTCCM/ NSURF, NDER, NDUM(8) C where: C NSURF = 0 => ground electronic state C This is the only allowed value for NSURF. C NDER = 0 => no derivatives should be calculated C NDER = 1 => calculate first derivatives C NDUM - these 8 integer values can be used to flag options C within the potential; in this potential these options C are not used. C C ENERGY = E(EHF) + E(CORR) + De(H2) C E(EHF) = E(London) + E(3-body) C E(CORR) = ECORR(2-body) + ECORR(3-body) C C Note: The zero of energy for this surface is F infinitely far C from H2 at R(H2) = Re(H2). C To get the zero of energy R1 must be at least 50 a.u. C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCM_FHH_6SEC/R(3), ENERGY, DEDR(3) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) COMMON /DECOM_FHH_6SEC/ DISSE(3) PARAMETER (IPRT = 6) C DIMENSION RTMP(3) COMMON /MINT_FHH_6SEC/RMT(3) COMMON /DIST_FHH_6SEC/RM(3),R0(3) $ COMMON /REF_FHH_6SEC/RO(3) COMMON /TPAR_FHH_6SEC/XHH(3),XHF(3),P(4) COMMON /ATAT_FHH_6SEC/CHH(10),CHF(10) COMMON /COEFF_FHH_6SEC/CFHH,CHHF COMMON /TRIAL_FHH_6SEC/ETA1(10),ETA2(10),ETA3(10), 1 ETAP1(10),ETAP2(10),ETAP3(10) COMMON /KKP_FHH_6SEC/CK1(10),CK2(10),CK3(10),CKP1(10),CKP2(10), $CKP3(10) COMMON /DIAT_FHH_6SEC/D(3),A1(3),A2(3),A3(3),GAMMA(3) COMMON /SWPAR_FHH_6SEC/ DEC(3),RB(3),SW(3),DSW(3,3) COMMON /CSI_FHH_6SEC/FCSI,FCSI1,FCSI2 COMMON /LOCAL_FHH_6SEC/C3C,ALF,ALFP,ALFT,P3C,Q3C,BETP COMMON /DISPC_FHH_6SEC/ALPH0,ALPH1,BET0,BET1 $ C COMMON /DAMPC_FHH_6SEC/AD1,AD2,AD3,BD1,BD2,BD3 COMMON /DPC_FHH_6SEC/DP1(3),DP2(3),DP3(3),DDP1(3),DDP2(3),DDP3(3) COMMON /DEDRCM_FHH_6SEC/DCORR2(3),DCORR3(3),DLDR(3),DE3C(3) COMMON /ENGYCM_FHH_6SEC/ECOR2B, ECOR3B, ELOND, E3C COMMON /PAR_FHH_6SEC/BHH(5),BHF(5) COMMON /VTANH_FHH_6SEC/RTANH(3,10),DRTANH(3,10) C WRITE (IPRT, 1000) C C Error checking: C NSURF - this variable must be equal to 0 C NDER - this variable can be 0 or 1 only C IF (NSURF .NE. 0) THEN WRITE (IPRT, 6000) NSURF STOP 'FH26SEC 1' ENDIF IF (NDER .LT. 0 .OR. NDER .GT. 1) THEN WRITE (IPRT, 6100) NDER STOP 'FH26SEC 2' ENDIF C WRITE(IPRT, 1100) (XHH(I),I=1,3) WRITE(IPRT, 1200) (XHF(I),I=1,3) WRITE(IPRT, 1300) (P(I),I=1,4) WRITE(IPRT, 1400) C3C, P3C, ALF, ALFT, ALFP, BETP C C CONSTANTS NEEDED FOR THE DAMPING FUNCTION C A=ALPH0/FLOAT(N)**ALPH1 N=6,8,10 C B=BET0*EXP(-BET1*FLOAT(N)) N=6,8,10 C AD1= ALPH0/6.0D0**ALPH1 AD2= ALPH0/8.0D0**ALPH1 AD3= ALPH0/10.0D0**ALPH1 BD1= BET0*EXP(-BET1*6.0D0) BD2= BET0*EXP(-BET1*8.0D0) BD3= BET0*EXP(-BET1*10.0D0) C 1000 FORMAT(/,2X,T5,'PREPOT_FHH_6SEC has been called for the $FH2_FHH_6SEC surface ', 1 '6SEC') 1100 FORMAT(/,2X,T5,'Potential parameters',/, 1 /,2X,T5,'c1 = 0.103, c2 = 2.0, and c3 = 0.38', 1 /,2X,T5,'Parameters for the H2 diatomic:', 2 /,2X,T8,'a4',T13,'=',T15,F10.6,T29,'a5',T33,'=',T35,F10.6, 3 T48,'a6',T52,'=',T54,F10.6) 1200 FORMAT(/,2X,T5,'Parameters for the FH diatomic:', 1 /,2X,T8,'Deff',T13,'=',T15,F10.6,T29,'a7',T33,'=', 2 T35,F10.6,T48,'a8',T52,'=',T54,F10.6) 1300 FORMAT(2X,T8,'c11',T13,'=',T15,F10.6,T29,'c12',T33,'=', 1 T35,F10.6,/,2X,T8,'c21',T13,'=',T15,F10.6,T29, 2 'c22',T33,'=',T35,F10.6) 1400 FORMAT(/,2X,T5,'Parameters for the 3-body term:', 1 /,2X,T8,'J',T13,'=',T15,F10.6,T29,'p',T33,'=',T35,F10.6, 2 T48,'c1',T52,'=',T54,F10.6, 3 /,2X,T8,'c2',T13,'=',T15,F10.6,T29,'c3',T33,'=',T35,F10.6, 4 T48,'c4',T52,'=',T54,F10.6,/) 6000 FORMAT(/,2X,T5,'Error: NSURF = ', I5, ' is not an allowed value.') 6100 FORMAT(/,2X,T5,'Error: NDER = ', I5, ' is not an allowed value.', 1 ' Allowed values for NDER are: 0, 1') C RETURN C C============================================================================== C POT: driver for computing the energy and the derivatives. C============================================================================== ENTRY POT_FHH_6SEC C C Test the values of Ri C If the values are unrealistic then print Ri and exit C DO 11 I=1,3 RTMP(I) = R(I) 11 CONTINUE DO 12 I1=1,3 I2 = MOD(I1,3)+1 I3 = MOD(I2,3)+1 T = R(I2) + R(I3) IF(R(I1) .GT. T)THEN WRITE(IPRT,100) R(I1),R(I2),R(I3) STOP ENDIF 12 CONTINUE 100 FORMAT(//,10X,'R1 = ',1PE20.10,5X,'R2 = ',1PE20.10,5X, 1 'R3 = ',1PE20.10) C C I: Compute the damping function for the N th. dispersion coefficient C and, if NDER = 1, compute the derivative of the damping function C w.r.t. R(i) C CALL DAMP_FHH_6SEC(R,RM) C C II: Compute the two-body dynamical correlation term and, if NDER = 1, C compute the derivative of the two-body dynamical correlation term C w.r.t. R(i) C CALL CORR2_FHH_6SEC C C III: Compute the auxiliary function, hn(R), and, if NDER = 1, C compute the derivative of hn(R) w.r.t. R C CALL XTANH_FHH_6SEC(1,ETA1) CALL XTANH_FHH_6SEC(2,ETA2) CALL XTANH_FHH_6SEC(3,ETA3) C C IV: Compute the three-body dynamical correlation term and, if NDER = 1, C compute the derivative of the three-body dynamical correlation term C w.r.t. R(i) C CALL CORR3_FHH_6SEC C C V: Compute the switching function, S(R), which is used in the computation C of the H2 triplet state curves. If NDER = 1, compute the derivatives C of S w.r.t. R C CALL SWITCH_FHH_6SEC C C VI: Compute the lower eigenvalue of the London eq. and, if NDER = 1, C compute the derivatives of the London energy w.r.t. R. C CALL VLOND_FHH_6SEC C C VII: Compute the three-body term and, if NDER = 1, compute the C the derivatives of the three-body energy w.r.t. R. C CALL THCENT_FHH_6SEC C C IX: Compute the total energy which is a sum of the extended-Hartree-Fock C and the dynamical correlation terms. C ENERGY = ECOR2B + ECOR3B + ELOND + E3C + DISSE(2) C C Compute the derivatives of the energy with respect to the coordinates. C IF (NDER .EQ. 1) THEN DO 10 I = 1, 3 DEDR(I) = DCORR2(I) + DCORR3(I) + DLDR(I) + DE3C(I) 10 CONTINUE ENDIF C RETURN END C***** C SUBROUTINE CORR2_FHH_6SEC C============================================================================== C Compute the two-body dynamical energies and derivatives. C============================================================================== C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCM_FHH_6SEC/R(3), ENERGY, DEDR(3) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) COMMON /ATAT_FHH_6SEC/CHH(10),CHF(10) COMMON /DEDRCM_FHH_6SEC/DCORR2(3),DCORR3(3),DLDR(3),DE3C(3) COMMON /DPC_FHH_6SEC/DP1(3),DP2(3),DP3(3),DDP1(3),DDP2(3),DDP3(3) COMMON /ENGYCM_FHH_6SEC/ECOR2B, ECOR3B, ELOND, E3C C R1P6 = R(1)**6 R1P8 = R(1)**8 R1P10 = R(1)**10 R2P6 = R(2)**6 R2P8 = R(2)**8 R2P10 = R(2)**10 R3P6 = R(3)**6 R3P8 = R(3)**8 R3P10 = R(3)**10 C COR2R1 = -DP1(1)*CHF(6)/R1P6 1 -DP1(2)*CHF(8)/R1P8 2 -DP1(3)*CHF(10)/R1P10 C COR2R2 = -DP2(1)*CHH(6)/R2P6 1 -DP2(2)*CHH(8)/R2P8 2 -DP2(3)*CHH(10)/R2P10 C COR2R3 = -DP3(1)*CHF(6)/R3P6 1 -DP3(2)*CHF(8)/R3P8 2 -DP3(3)*CHF(10)/R3P10 C ECOR2B = COR2R1 + COR2R2 + COR2R3 C C Compute the derivatives w.r.t. R(i) if NDER = 1 C IF (NDER .NE. 1) GO TO 100 C DCORR2(1) = -CHF(6)*(DDP1(1)-6.0D0*DP1(1)/R(1))/R1P6 1 -CHF(8)*(DDP1(2)-8.0D0*DP1(2)/R(1))/R1P8 2 -CHF(10)*(DDP1(3)-10.0D0*DP1(3)/R(1))/R1P10 C DCORR2(2) = -CHH(6)*(DDP2(1)-6.0D0*DP2(1)/R(2))/R2P6 1 -CHH(8)*(DDP2(2)-8.0D0*DP2(2)/R(2))/R2P8 2 -CHH(10)*(DDP2(3)-10.0D0*DP2(3)/R(2))/R2P10 C DCORR2(3) = -CHF(6)*(DDP3(1)-6.0D0*DP3(1)/R(3))/R3P6 1 -CHF(8)*(DDP3(2)-8.0D0*DP3(2)/R(3))/R3P8 2 -CHF(10)*(DDP3(3)-10.0D0*DP3(3)/R(3))/R3P10 C 100 CONTINUE C RETURN END C**** C SUBROUTINE DAMP_FHH_6SEC(RT1,RT2) C============================================================================== C Compute the damping function for the Nth. dispersion coefficient and the C derivative w.r.t. R(i) C============================================================================== C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) COMMON /DAMPC_FHH_6SEC/ AD1,AD2,AD3,BD1,BD2,BD3 COMMON /DPC_FHH_6SEC/ DP1(3),DP2(3),DP3(3),DDP1(3),DDP2(3),DDP3(3) COMMON /DIST_FHH_6SEC/RM(3),R0(3) DIMENSION RT1(3),RT2(3),X(3),DX(3),POL1(3),POL2(3),POL3(3) DIMENSION DPOL1(3),DPOL2(3),DPOL3(3) C X(1) = 2.0D0*RT1(1)/(RT2(1)+2.5D0*R0(1)) X(2) = 2.0D0*RT1(2)/(RT2(2)+2.5D0*R0(2)) X(3) = 2.0D0*RT1(3)/(RT2(3)+2.5D0*R0(3)) C POL1(1) = AD1*X(1)+BD1*X(1)**2 POL2(1) = AD2*X(1)+BD2*X(1)**2 POL3(1) = AD3*X(1)+BD3*X(1)**2 C POL1(2) = AD1*X(2)+BD1*X(2)**2 POL2(2) = AD2*X(2)+BD2*X(2)**2 POL3(2) = AD3*X(2)+BD3*X(2)**2 C POL1(3) = AD1*X(3)+BD1*X(3)**2 POL2(3) = AD2*X(3)+BD2*X(3)**2 POL3(3) = AD3*X(3)+BD3*X(3)**2 C DP1(1) = (1.0D0-EXP(-POL1(1)))**6 DP1(2) = (1.0D0-EXP(-POL2(1)))**8 DP1(3) = (1.0D0-EXP(-POL3(1)))**10 C DP2(1) = (1.0D0-EXP(-POL1(2)))**6 DP2(2) = (1.0D0-EXP(-POL2(2)))**8 DP2(3) = (1.0D0-EXP(-POL3(2)))**10 C DP3(1) = (1.0D0-EXP(-POL1(3)))**6 DP3(2) = (1.0D0-EXP(-POL2(3)))**8 DP3(3) = (1.0D0-EXP(-POL3(3)))**10 C IF (NDER .EQ. 1) THEN DX(1) = 2.0D0/(RT2(1)+2.5D0*R0(1)) DX(2) = 2.0D0/(RT2(2)+2.5D0*R0(2)) DX(3) = 2.0D0/(RT2(3)+2.5D0*R0(3)) C DPOL1(1) = AD1+2.0D0*BD1*X(1) DPOL2(1) = AD2+2.0D0*BD2*X(1) DPOL3(1) = AD3+2.0D0*BD3*X(1) C DPOL1(2) = AD1+2.0D0*BD1*X(2) DPOL2(2) = AD2+2.0D0*BD2*X(2) DPOL3(2) = AD3+2.0D0*BD3*X(2) C DPOL1(3) = AD1+2.0D0*BD1*X(3) DPOL2(3) = AD2+2.0D0*BD2*X(3) DPOL3(3) = AD3+2.0D0*BD3*X(3) C DDP1(1) = 6.0D0*DP1(1)*EXP(-POL1(1))*DPOL1(1)*DX(1)/ 1 (1.0D0-EXP(-POL1(1))) DDP1(2) = 8.0D0*DP1(2)*EXP(-POL2(1))*DPOL2(1)*DX(1)/ 1 (1.0D0-EXP(-POL2(1))) DDP1(3) = 10.0D0*DP1(3)*EXP(-POL3(1))*DPOL3(1)*DX(1)/ 1 (1.0D0-EXP(-POL3(1))) C DDP2(1) = 6.0D0*DP2(1)*EXP(-POL1(2))*DPOL1(2)*DX(2)/ 1 (1.0D0-EXP(-POL1(2))) DDP2(2) = 8.0D0*DP2(2)*EXP(-POL2(2))*DPOL2(2)*DX(2)/ 1 (1.0D0-EXP(-POL2(2))) DDP2(3) = 10.0D0*DP2(3)*EXP(-POL3(2))*DPOL3(2)*DX(2)/ 1 (1.0D0-EXP(-POL3(2))) C DDP3(1) = 6.0D0*DP3(1)*EXP(-POL1(3))*DPOL1(3)*DX(3)/ 1 (1.0D0-EXP(-POL1(3))) DDP3(2) = 8.0D0*DP3(2)*EXP(-POL2(3))*DPOL2(3)*DX(3)/ 1 (1.0D0-EXP(-POL2(3))) DDP3(3) = 10.0D0*DP3(3)*EXP(-POL3(3))*DPOL3(3)*DX(3)/ 1 (1.0D0-EXP(-POL3(3))) ENDIF C RETURN END C***** C SUBROUTINE CORR3_FHH_6SEC C============================================================================== C Compute the three-body dynamical energies and derivatives. C============================================================================== C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCM_FHH_6SEC/R(3), ENERGY, DEDR(3) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) COMMON /ATAT_FHH_6SEC/CHH(10),CHF(10) COMMON /DEDRCM_FHH_6SEC/DCORR2(3),DCORR3(3),DLDR(3),DE3C(3) COMMON /ENGYCM_FHH_6SEC/ECOR2B, ECOR3B, ELOND, E3C COMMON /DPC_FHH_6SEC/DP1(3),DP2(3),DP3(3),DDP1(3),DDP2(3),DDP3(3) COMMON /DIST_FHH_6SEC/RM(3),R0(3) COMMON /KKP_FHH_6SEC/CK1(10),CK2(10),CK3(10),CKP1(10),CKP2(10), $CKP3(10) COMMON /REF_FHH_6SEC/RO(3) COMMON /TRIAL_FHH_6SEC/ETA1(10),ETA2(10),ETA3(10), 1 ETAP1(10),ETAP2(10),ETAP3(10) COMMON /VTANH_FHH_6SEC/ RTANH(3,10),DRTANH(3,10) DIMENSION CO3(3),DC3DR1(3),DC3DR2(3),DC3DR3(3) C JJ=0 C DO 10 I=6,10,2 JJ = JJ+1 FI = DBLE(I) R1PI = R(1)**I R2PI = R(2)**I R3PI = R(3)**I C C Compute the auxiliary function gn(R) G1 = 1.0D0+CK1(I)*EXP(-CKP1(I)*(R(1)-RO(1))) G2 = 1.0D0+CK2(I)*EXP(-CKP2(I)*(R(2)-RO(2))) G3 = 1.0D0+CK3(I)*EXP(-CKP3(I)*(R(3)-RO(3))) C C Compute the auxiliary function hn(R) H1 = RTANH(1,I)**ETAP1(I) H2 = RTANH(2,I)**ETAP2(I) H3 = RTANH(3,I)**ETAP3(I) C T1 = CHF(I)*(1.0D0-0.5D0*(G2*H3+G3*H2)) 1 *DP1(JJ)/R1PI T2 = CHH(I)*(1.0D0-0.5D0*(G3*H1+G1*H3)) 1 *DP2(JJ)/R2PI T3 = CHF(I)*(1.0D0-0.5D0*(G1*H2+G2*H1)) 1 *DP3(JJ)/R3PI C CO3(JJ) = T1+T2+T3 C IF (NDER .EQ. 1) THEN C Compute the partial derivatives w.r.t. R(i) DG1 = -CKP1(I)*(G1-1.0D0) DG2 = -CKP2(I)*(G2-1.0D0) DG3 = -CKP3(I)*(G3-1.0D0) C DH1 = ETAP1(I)*(RTANH(1,I)**(ETAP1(I)-1))*DRTANH(1,I) DH2 = ETAP2(I)*(RTANH(2,I)**(ETAP2(I)-1))*DRTANH(2,I) DH3 = ETAP3(I)*(RTANH(3,I)**(ETAP3(I)-1))*DRTANH(3,I) C DT1DR1 = T1*(DDP1(JJ)/DP1(JJ)-FI/R(1)) DT1DR2 = -0.5D0*CHF(I)*DP1(JJ)*(DG2*H3+G3*DH2)/R1PI DT1DR3 = -0.5D0*CHF(I)*DP1(JJ)*(G2*DH3+DG3*H2)/R1PI C DT2DR1 = -0.5D0*CHH(I)*DP2(JJ)*(G3*DH1+DG1*H3)/R2PI DT2DR2 = T2*DDP2(JJ)/DP2(JJ)-T2*FI/R(2) DT2DR3 = -0.5D0*CHH(I)*DP2(JJ)*(DG3*H1+G1*DH3)/R2PI C DT3DR1 = -0.5D0*CHF(I)*DP3(JJ)*(DG1*H2+G2*DH1)/R3PI DT3DR2 = -0.5D0*CHF(I)*DP3(JJ)*(G1*DH2+DG2*H1)/R3PI DT3DR3 = T3*(DDP3(JJ)/DP3(JJ)-FI/R(3)) C DC3DR1(JJ) = DT1DR1+DT2DR1+DT3DR1 DC3DR2(JJ) = DT1DR2+DT2DR2+DT3DR2 DC3DR3(JJ) = DT1DR3+DT2DR3+DT3DR3 ENDIF 10 CONTINUE C C Compute the three-body dynamical correlation term by summing over all C C6, C8, and C10 terms. C ECOR3B = CO3(1)+CO3(2)+CO3(3) C IF (NDER .EQ. 1) THEN C Sum all the partial derivatives. DCORR3(1) = DC3DR1(1)+DC3DR1(2)+DC3DR1(3) DCORR3(2) = DC3DR2(1)+DC3DR2(2)+DC3DR2(3) DCORR3(3) = DC3DR3(1)+DC3DR3(2)+DC3DR3(3) ENDIF C RETURN END C***** C SUBROUTINE VLOND_FHH_6SEC C============================================================================== C Compute the energy expressed by the lower eignenvalue of the London eq. C============================================================================== C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCM_FHH_6SEC/R(3), ENERGY, DEDR(3) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) C COMMON /ATAT_FHH_6SEC/CHH(10),CHF(10) COMMON /CSI_FHH_6SEC/FCSI,FCSI1,FCSI2 COMMON /DAMPC_FHH_6SEC/AD1,AD2,AD3,BD1,BD2,BD3 COMMON /DEDRCM_FHH_6SEC/DCORR2(3),DCORR3(3),DLDR(3),DE3C(3) COMMON /DIAT_FHH_6SEC/D,A1,A2,A3,GAMMA COMMON /DIST_FHH_6SEC/RM,R0 $ COMMON /DPC_FHH_6SEC/DP1(3),DP2(3),DP3(3),DDP1(3),DDP2(3),DDP3(3) COMMON /ENGYCM_FHH_6SEC/ECOR2B, ECOR3B, ELOND, E3C COMMON /LOCAL_FHH_6SEC/C3C,ALF,ALFP,ALFT,P3C,Q3C,BETP COMMON /MINT_FHH_6SEC/RMT COMMON /PAR_FHH_6SEC/BHH(5),BHF(5) COMMON /SWPAR_FHH_6SEC/ DEC(3),RB(3),SW(3),DSW(3,3) COMMON /TPAR_FHH_6SEC/XHH(3),XHF(3),P(4) C DIMENSION RM(3),R0(3) DIMENSION D(3),A1(3),A2(3),A3(3),GAMMA(3) DIMENSION RMT(3) DIMENSION DCSI(3),DFCSI1(3),DFCSI2(3),EHF(3),DEHF(3) DIMENSION EHFT(3),DEHFT(3),DSUMQ(3),TI(3),DTI(3,3) DIMENSION ETRIP(3),DETRIP(3,3),DX(3),DRI(3),X(3) DIMENSION Q(3),DQ(3,3),EX(3),DEX(3,3) DIMENSION TSCALE(3), DTSCLE(3,3) C C Initialize the arrays that will be used to store the partial C derivatives w.r.t. R(i) DO 11 I = 1, 3 DO 12 J = 1, 3 DETRIP(I,J) = 0.0D0 DTSCLE(I,J) = 0.0D0 12 CONTINUE 11 CONTINUE C C Compute the pseudo-angular coordinate CSI_FHH_6SEC = (R(1)-R(3))/R(2) CSIP2 = CSI_FHH_6SEC**2 CSIP3 = CSI_FHH_6SEC**3 CSIP4 = CSI_FHH_6SEC**4 C C Compute the F1 and F2 terms FCSI1T = 1.0D0+P(1)*(1.0D0-CSIP2)+P(2)*(1.0D0-CSIP4) FCSI2T = 1.0D0+P(3)*(1.0D0-CSIP2)+P(4)*(1.0D0-CSIP4) C FCSI1 = FCSI1T**2 FCSI2 = FCSI2T**2 C IF (NDER .EQ. 1) THEN C Compute the derivatives w.r.t. R of the terms computed to this point. DCSI(1) = 1.0D0/R(2) DCSI(2) = -CSI_FHH_6SEC/R(2) DCSI(3) = -1.0D0/R(2) C TMP1 = 2.0D0*FCSI1T*(-2.0D0*P(1)*CSI_FHH_6SEC-4.0D0*P(2)*CSIP3 $) TMP2 = 2.0D0*FCSI2T*(-2.0D0*P(3)*CSI_FHH_6SEC-4.0D0*P(4)*CSIP3 $) C DO 10 I=1,3 DFCSI1(I) = TMP1*DCSI(I) DFCSI2(I) = TMP2*DCSI(I) 10 CONTINUE ENDIF C R1P2 = R(1)**2 R2P2 = R(2)**2 R2P3 = R(2)**3 R2P4 = R(2)**4 R3P2 = R(3)**2 C C Compute the extended-Hartree-Fock curves and the derivatives w.r.t. R(i) C for the singlet state of H2 and HF. C Ref: A. J. C. Varandas and J. D. Silva, J. Chem. Soc. Faraday Trans. II, C 82, 593 (1986). C DO 20 I=1,3 DR = R(I)-RM(I) DRP2 = DR**2 EHF(I) = -D(I)*(1.0D0+A1(I)*DR+A2(I)*DRP2+A3(I)*DRP2*DR) 1 *EXP(-GAMMA(I)*DR) IF (NDER .EQ. 1) 1 DEHF(I) = -D(I)*(A1(I) + 2.0D0*A2(I)*DR + 2 3.0D0*A3(I)*DRP2)*EXP(-GAMMA(I)*DR) - 3 GAMMA(I)*EHF(I) C 20 CONTINUE C C Compute the triplet state curve and the derivative of the triplet state C curve w.r.t. R(i) for the H2 diatomic C Ref.: A. J. C. Varandas and J. Brando C Mol. Phys. 45, 857 (1982) C SCALE = 1.0D0+XHH(1)*R(2)+XHH(2)*R2P2+XHH(3)*R2P3 C ARG = BHH(2)*R(2)+BHH(3)*R2P2+BHH(4)*R2P3+BHH(5)*R2P4 C EHFT(2) = BHH(1)*EXP(-ARG)/R(2) C ETRIP(2) = SCALE*EHFT(2) C IF (NDER .EQ. 1) THEN C Compute the derivatives of the H2 triplet curve w.r.t. R(i) DSCALE = XHH(1)+2.0D0*XHH(2)*R(2)+3.0D0*XHH(3)*R2P2 DARG = BHH(2)+2.0D0*BHH(3)*R(2)+3.0D0*BHH(4)*R2P2+ 1 4.0D0*BHH(5)*R2P3 DEHFT(2) = EHFT(2)*(-DARG-1.0D0/R(2)) C DETRIP(2,2) = DSCALE*EHFT(2)+SCALE*DEHFT(2) DETRIP(2,1) = 0.0D0 DETRIP(2,3) = 0.0D0 ENDIF C C Compute the triplet state curve and the derivatives of the triplet C state curve w.r.t. R(i) for the HF diatomic. C DO 30 I=1, 3, 2 ARG = BHF(2)*R(I)+BHF(3)*R(I)**2 EHFT(I) = BHF(1)*EXP(-ARG)/R(I) X(I) = EXP(-XHF(2)*R(I)) ETRIP(I) = XHF(1)*(FCSI1*X(I)*X(I)+FCSI2*XHF(3)*X(I))/R(I) 30 CONTINUE C IF (NDER .EQ. 1) THEN C Compute the derivatives of the HF triplet state curve w.r.t. R(i) DO 50 I = 1, 3, 2 DARG = BHF(2)+2.0D0*BHF(3)*R(I) DEHFT(I) = EHFT(I)*(-1.0D0/R(I)-DARG) DX(I) = -XHF(2)*X(I) DRI(I) = 1.0D0 DO 40 J = 1, 3 IF (J .NE. I) THEN DX(J) = 0.0D0 DRI(J) = 0.0D0 ENDIF DETRIP(I,J) = XHF(1) * (DFCSI1(J)*X(I)*X(I) + 1 2.0D0*FCSI1*X(I)*DX(J) + 2 DFCSI2(J)*XHF(3)*X(I) + 3 FCSI2*XHF(3)*DX(J))/R(I) - 4 ETRIP(I)*DRI(J)/R(I) 40 CONTINUE 50 CONTINUE ENDIF C C Compute the scaling factor for the triplet state curves C DO 51 I = 1, 3 TSCALE(I) = 1.0D0 51 CONTINUE ASC1 = 1.0D0 ASC2 = 0.103D0 TMP1 = 1.0D0/0.38D0 ASC3 = TMP1*TMP1*TMP1*TMP1 TMP1 = (R(2) - 2.D0) TMP1P2 = TMP1 * TMP1 TMP2 = EXP(-ASC3*TMP1P2*TMP1P2) TSCALE(2) = ASC1 + ASC2*TMP2 IF (NDER .EQ. 1) 1 DTSCLE(2,2) = ASC2*TMP2*(-ASC3*4.0D0*TMP1P2*TMP1) C C Compute the triplet state curves and combine the triplet and the C singlet state curves to determine the eigenvalue of the C London equation. C DO 60 I = 1, 3 C Compute the triplet state curves TI(I) = (1.0D0-SW(I))*ETRIP(I)+SW(I)*EHFT(I) C Scale the triplet state curves TI(I) = TI(I)*TSCALE(I) C Compute the coulomb integrals Q(I) = 0.5D0*(EHF(I)+TI(I)) C Compute the exchange integrals EX(I) = 0.5D0*(EHF(I)-TI(I)) 60 CONTINUE C Diagnositics VDUM(1) = TSCALE(2) VDUM(2) = TI(2) C FF1 = (EX(1) - EX(2)) ** 2 FF2 = (EX(2) - EX(3)) ** 2 FF3 = (EX(3) - EX(1)) ** 2 C EXCH = SQRT(0.5D0*(FF1+FF2+FF3)) C ELOND = Q(1) + Q(2) + Q(3) - EXCH C IF (NDER .EQ. 1) THEN C Compute the derivatives of the lowest eignenvalue of the London equation C w.r.t. R(i) DO 70 I = 1, 3 DO 71 J = 1, 3 DTI(I,J) = DSW(I,J)*(EHFT(I)-ETRIP(I)) + 1 DETRIP(I,J)*(1.0D0 - SW(I)) IF (J .EQ. I) DTI(I,J) = DTI(I,J) + SW(I)*DEHFT(I) DTI(I,J) = DTI(I,J)*TSCALE(I) + 1 TI(I)*DTSCLE(I,J)/TSCALE(I) 71 CONTINUE 70 CONTINUE C DO 80 I = 1, 3 DO 81 J = 1, 3 IF(J .EQ. I)THEN DQ(I,J) = 0.5D0*(DEHF(J)+DTI(I,J)) DEX(I,J) = 0.5D0*(DEHF(J)-DTI(I,J)) ELSE DQ(I,J) = 0.5D0*DTI(I,J) DEX(I,J) = -DQ(I,J) ENDIF 81 CONTINUE 80 CONTINUE C DSUMQ(1) = DQ(1,1)+DQ(2,1)+DQ(3,1) DSUMQ(2) = DQ(1,2)+DQ(2,2)+DQ(3,2) DSUMQ(3) = DQ(1,3)+DQ(2,3)+DQ(3,3) C XTERM1 = 2.0D0*EX(1)-EX(2)-EX(3) XTERM2 = 2.0D0*EX(2)-EX(1)-EX(3) XTERM3 = 2.0D0*EX(3)-EX(1)-EX(2) C DO 90 I = 1, 3 TEXCH = EXCH IF (TEXCH .EQ. 0.0D0)TEXCH = 1.0D0 XTERM = 0.5D0*(XTERM1*DEX(1,I) + XTERM2*DEX(2,I)+ 1 XTERM3*DEX(3,I))/TEXCH DLDR(I) = DSUMQ(I)-XTERM 90 CONTINUE ENDIF C RETURN END C**** C SUBROUTINE THCENT_FHH_6SEC C============================================================================== C Compute the localized three-body term and the derivatives w.r.t. R(i) C============================================================================== C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCM_FHH_6SEC/R(3), ENERGY, DEDR(3) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) COMMON /DEDRCM_FHH_6SEC/DCORR2(3),DCORR3(3),DLDR(3),DE3C(3) COMMON /ENGYCM_FHH_6SEC/ECOR2B, ECOR3B, ELOND, E3C COMMON /LOCAL_FHH_6SEC/C3C,ALF,ALFP,ALFT,P3C,Q3C,BETP C OMP3C = 1.D0 - P3C OMQ3C = 1.D0 - Q3C R12 = R(1) * R(1) R22 = R(2) * R(2) R32 = R(3) * R(3) RSUM = R(1) + R(3) RDIF = R(1) - R(3) RDIF2 = RDIF * RDIF T1 = -ALFP * RSUM EX1 = C3C * EXP(T1 * RSUM) T2 = -ALF * RDIF EX2 = OMP3C * EXP(T2 * RDIF) T3 = -ALFT * RDIF2 EX3 = P3C * EXP(T3 * RDIF2) R1I = 1.D0 / R(1) R3I = 1.D0 / R(3) T4 = R1I*R3I C COSTH IS THE ANGLE BETWEEN R1 AND R3 COSTH = 0.5D0 * (R12 + R32 - R22) * T4 T5 = OMQ3C * COSTH C SET MODIFICATION ... T = Q3C + T5 * COSTH C E3C CONTAINS THE THREE CENTER CORRECTION TO V E3C = (EX2 + EX3) * T * EX1 F3=EXP(-BETP*(R(1)+R(3)-R(2))**2) E3C=E3C*F3 IF (NDER .NE. 1) GO TO 280 C COMPUTE DERIVATIVE OF THE 3C TERM C FIRST, DERIVATIVE OF COSTH DCOS1 = R3I - COSTH*R1I DCOS2 = - R(2)*T4 DCOS3 = R1I - COSTH*R3I T4 = EX2 + EX3 T5 = T4 * T5 C NOW, DERIVATIVES OF E3C DE3C(1) = 2.D0*((T2 * EX2 + 2.D0 * T3 * RDIF * EX3 + T1 * T4) * * T + T5 * DCOS1) * EX1*F3+ 1 2.0D0*E3C*(-BETP*(R(1)+R(3)-R(2))) DE3C(2) = 2.D0 * T5 * DCOS2 * EX1*F3+ 1 2.0D0*E3C*(BETP*(R(1)+R(3)-R(2))) DE3C(3) = 2.D0*((-T2 * EX2 - 2.D0 * T3 * RDIF * EX3 + T1 * T4) * * T + T5 * DCOS3) * EX1*F3+ 1 2.0D0*E3C*(-BETP*(R(1)+R(3)-R(2))) 280 CONTINUE RETURN END C***** C SUBROUTINE XTANH_FHH_6SEC(I,A) C============================================================================== C Compute the auxiliary function, hn, and the derivatives of hn w.r.t. R(i) C============================================================================== C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCM_FHH_6SEC/R(3), ENERGY, DEDR(3) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) COMMON /VTANH_FHH_6SEC/ RTANH(3,10),DRTANH(3,10) DIMENSION A(10) C DO 10 J = 6, 10, 2 RVAL = R(I) * A(J) IF(RVAL .GT. 0.0D0) THEN EX = EXP( -2.0D0 * RVAL) SGN = 1.0D0 ELSE EX = EXP( 2.0D0 * RVAL) SGN = -1.0D0 ENDIF T = 1.0D0 + EX TH = 1.0D0/T IF (NDER .EQ. 1) DRTANH(I,J) = 4.0D0 * A(J) * EX * TH * TH RTANH(I,J) = SGN * TH * (1.0D0 - EX) 10 CONTINUE RETURN END C***** C SUBROUTINE SWITCH_FHH_6SEC C============================================================================== C Compute the switching function, S, and the derivatives of S w.r.t. R(i) C============================================================================== C IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCM_FHH_6SEC/R(3), ENERGY, DEDR(3) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /POTDCM_FHH_6SEC/ VDUM(10) COMMON /SWPAR_FHH_6SEC/ DEC(3),RB(3),SW(3),DSW(3,3) C C Initialize the array that will be used to store the derivatives of C the switching function w.r.t. R(i) DO 10 I = 1, 3 DO 10 J = 1, 3 DSW(I,J) = 0.0D0 10 CONTINUE C C Compute the switching function. DO 20 I=1,3 RMRB = R(I)-RB(I) RVAL = RMRB*DEC(I) IF (RVAL .GT. 0.0D0)THEN EX2U = EXP(-2.0D0*RVAL) EXU = EXP(-RVAL) SGN = 1.0D0 ELSE EX2U = EXP(2.0D0*RVAL) EXU = EXP(RVAL) SGN = -1.0D0 ENDIF TEMP1 = 1.0D0 + EX2U HYTAN = SGN*(1.0D0 - EX2U)/TEMP1 SW(I) = 0.5D0*(1.0D0 + HYTAN) 20 CONTINUE IF (NDER .NE. 1) GO TO 100 DO 30 I = 1, 3 RMRB = R(I)-RB(I) RVAL = RMRB*DEC(I) IF (RVAL .GT. 0.0D0)THEN EXU = EXP(-RVAL) SGN = 1.0D0 ELSE EXU = EXP(RVAL) SGN = -1.0D0 ENDIF TEMP2 = 1.0D0 + EXU*EXU HYSEC = SGN*2.0D0*EXU/TEMP2 DSW(I,I) = 0.5D0*DEC(I)*HYSEC*HYSEC 30 CONTINUE C 100 CONTINUE RETURN END C***** C============================================================================== BLOCK DATA FH2_FHH_6SEC C============================================================================== C INPUT DATA FOR FH2 C C============================================================================== IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /POTCCM_FHH_6SEC/ NSURF, NDER, NDUM(8) COMMON /DECOM_FHH_6SEC/ DISSE(3) COMMON /ATAT_FHH_6SEC/CHH(10),CHF(10) COMMON /DIAT_FHH_6SEC/D(3),A1(3),A2(3),A3(3),GAMMA(3) COMMON /DIST_FHH_6SEC/RM(3),R0(3) COMMON /DISPC_FHH_6SEC/ALPH0,ALPH1,BET0,BET1 $ COMMON /KKP_FHH_6SEC/CK1(10),CK2(10),CK3(10), 1 CKP1(10),CKP2(10),CKP3(10) COMMON /LOCAL_FHH_6SEC/C3C,ALF,ALFP,ALFT,P3C,Q3C,BETP COMMON /MINT_FHH_6SEC/RMT(3) COMMON /PAR_FHH_6SEC/BHH(5),BHF(5) COMMON /REF_FHH_6SEC/RO(3) COMMON /SWPAR_FHH_6SEC/ DEC(3),RB(3),SW(3),DSW(3,3) COMMON /TPAR_FHH_6SEC/XHH(3),XHF(3),P(4) COMMON /TRIAL_FHH_6SEC/ETA1(10),ETA2(10),ETA3(10), 1 ETAP1(10),ETAP2(10),ETAP3(10) C DATA NSURF /0/ DATA NDER /1/ DATA NDUM /0, 0, 0, 0, 0, 0, 0, 0/ DATA DISSE /0.224989335D0, 0.174472692D0, 0.224989355D0/ C DATA XHF /2.633449D0, 0.417523D0, -0.090289D0/ DATA XHH /-0.393828D0, 0.167810D0, -0.017081D0/ DATA P /-0.071547D0, -0.108550D0, 0.050461D0, -0.370255D0/ DATA C3C, ALFP /0.296668D0, 0.078606D0/ C DATA ALF,ALFT/0.18D0,2.14D0/ DATA P3C,Q3C,BETP/0.95D0,1.0D0,0.18D0/ DATA DEC/2.0D0,2.0D0,2.0D0/ DATA RB/6.80D0,5.00D0,6.80D0/ DATA BHH/0.448467D0,-0.056687D0,0.246831D0,-0.018419D0,0.000598D0/ DATA BHF/0.9149555D0,0.3222197D0,0.1273001D0,0.0D0,0.0D0/ DATA CHH(6),CHH(8),CHH(10)/6.499027D0,1.243991D2,3.2858D3/ DATA CHF(6),CHF(8),CHF(10)/6.68799D0,1.0289812D2,2.07391451D3/ DATA RM(1),RM(2),RM(3)/1.7329D0,1.4010D0,1.7329D0/ DATA R0(1),R0(2),R0(3)/5.9D0,6.9283D0,5.9D0/ DATA RO(1),RO(2),RO(3)/1.7329D0,1.449D0,1.7329D0/ DATA ALPH0,ALPH1,BET0,BET1/2.59528D1,1.1868D0,1.57381D1,9.729D-2/ DATA ETA1(6),ETA1(8),ETA1(10)/0.9438421608D0,0.9774440533D0, 1 0.9452240321D0/ DATA ETA2(6),ETA2(8),ETA2(10)/0.1085550150D1,0.1117269260D1, 1 0.1138536961D1/ DATA ETA3(6),ETA3(8),ETA3(10)/0.9438421608D0,0.9774440533D0, 1 0.9452240321D0/ DATA ETAP1(6),ETAP1(8),ETAP1(10)/6.0D0,6.0D0,6.0D0/ DATA ETAP2(6),ETAP2(8),ETAP2(10)/6.0D0,6.0D0,6.0D0/ DATA ETAP3(6),ETAP3(8),ETAP3(10)/6.0D0,6.0D0,6.0D0/ DATA CK1(6),CK1(8),CK1(10)/-0.2610767389D-1,-0.3428701964D-1, 1 -0.4858536634D-1/ DATA CK2(6),CK2(8),CK2(10)/-0.9709847270D-1,-0.1248186655D 0, 1 -0.1426680807D 0/ DATA CK3(6),CK3(8),CK3(10)/-0.2610767389D-1,-0.3428701964D-1, 1 -0.4858536634D-1/ DATA CKP1(6),CKP1(8),CKP1(10)/0.9438421608D 0,0.9774440533D 0, 1 0.9452240321D 0/ DATA CKP2(6),CKP2(8),CKP2(10)/0.1085550150D 1,0.1117269260D 1, 1 0.1138536961D 1/ DATA CKP3(6),CKP3(8),CKP3(10)/0.9438421608D 0,0.9774440533D 0, 1 0.9452240321D 0/ DATA D(1),A1(1),A2(1),A3(1),GAMMA(1)/0.19383609D 0,2.4822787D 0, 1 1.5435337D 0,0.83093855D 0,2.3992999D 0/ DATA D(2),A1(2),A2(2),A3(2),GAMMA(2)/0.15796326D0,2.1977034D0, 1 1.2932502D0,0.64375666D0,2.1835071D0/ DATA D(3),A1(3),A2(3),A3(3),GAMMA(3)/0.19383609D 0,2.4822787D 0, 1 1.5435337D 0,0.83093855D 0,2.3992999D 0/ DATA RMT/1.0D5,1.0D5,1.0D5/ END C==============================================================================