diff --git a/examples/molecule.BF b/examples/molecule.BF index e832fd5..b3b23e0 100644 --- a/examples/molecule.BF +++ b/examples/molecule.BF @@ -2,4 +2,4 @@ 2 7 7 0 0 # Znuc x y z B 0. 0. 0. - F 0. 0. 2.385 + F 0. 0. 3.2 diff --git a/examples/molecule.F2 b/examples/molecule.F2 index 8f011d0..9c99be9 100644 --- a/examples/molecule.F2 +++ b/examples/molecule.F2 @@ -2,4 +2,4 @@ 2 9 9 0 0 # Znuc x y z F 0. 0. 0. - F 0. 0. 2.640 + F 0. 0. 2 diff --git a/examples/molecule.HCl b/examples/molecule.HCl index c764a9a..4bb2d3a 100644 --- a/examples/molecule.HCl +++ b/examples/molecule.HCl @@ -2,4 +2,4 @@ 2 9 9 0 0 # Znuc x y z H 0. 0. 0. - Cl 0. 0. 2.399 + Cl 0. 0. 3.2 diff --git a/examples/molecule.LiF b/examples/molecule.LiF index 381ba52..07213b0 100644 --- a/examples/molecule.LiF +++ b/examples/molecule.LiF @@ -2,4 +2,4 @@ 2 6 6 0 0 # Znuc x y z Li 0. 0. 0. - F 0. 0. 2.965 + F 0. 0. 3.5 diff --git a/examples/molecule.LiH b/examples/molecule.LiH index 635c08d..7b1b846 100644 --- a/examples/molecule.LiH +++ b/examples/molecule.LiH @@ -2,4 +2,4 @@ 2 2 2 0 0 # Znuc x y z Li 0. 0. 0. - H 0. 0. 3.017 + H 0. 0. 3.5 diff --git a/examples/molecule.N2 b/examples/molecule.N2 index a1fb338..82d524d 100644 --- a/examples/molecule.N2 +++ b/examples/molecule.N2 @@ -2,4 +2,4 @@ 2 7 7 0 0 # Znuc x y z N 0. 0. 0. - N 0. 0. 2.065 + N 0. 0. 2.5 diff --git a/input/basis b/input/basis index 76e69dd..80e2a23 100644 --- a/input/basis +++ b/input/basis @@ -1,98 +1,74 @@ -1 15 -S 9 - 1 6601.0000000 0.0001170 - 2 989.7000000 0.0009110 - 3 225.7000000 0.0047280 - 4 64.2900000 0.0191970 - 5 21.1800000 0.0630470 - 6 7.7240000 0.1632080 - 7 3.0030000 0.3148270 - 8 1.2120000 0.3939360 - 9 0.4930000 0.1969180 -S 9 - 1 6601.0000000 -0.0000180 - 2 989.7000000 -0.0001420 - 3 225.7000000 -0.0007410 - 4 64.2900000 -0.0030200 - 5 21.1800000 -0.0101230 - 6 7.7240000 -0.0270940 - 7 3.0030000 -0.0573590 - 8 1.2120000 -0.0938950 - 9 0.4930000 -0.1210910 +1 10 +S 8 + 1 19500.0000000 0.0005070 + 2 2923.0000000 0.0039230 + 3 664.5000000 0.0202000 + 4 187.5000000 0.0790100 + 5 60.6200000 0.2304390 + 6 21.4200000 0.4328720 + 7 7.9500000 0.3499640 + 8 0.8815000 -0.0078920 +S 8 + 1 19500.0000000 -0.0001170 + 2 2923.0000000 -0.0009120 + 3 664.5000000 -0.0047170 + 4 187.5000000 -0.0190860 + 5 60.6200000 -0.0596550 + 6 21.4200000 -0.1400100 + 7 7.9500000 -0.1767820 + 8 0.8815000 0.6050430 S 1 - 1 0.0951500 1.0000000 + 1 2.2570000 1.0000000 S 1 - 1 0.0479100 1.0000000 -S 1 - 1 0.0222000 1.0000000 + 1 0.3041000 1.0000000 P 3 - 1 6.2500000 0.0033880 - 2 1.3700000 0.0193160 - 3 0.3672000 0.0791040 + 1 43.8800000 0.0166650 + 2 9.9260000 0.1044720 + 3 2.9300000 0.3172600 P 1 - 1 0.1192000 1.0000000 + 1 0.9132000 1.0000000 P 1 - 1 0.0447400 1.0000000 -P 1 - 1 0.0179500 1.0000000 + 1 0.2672000 1.0000000 D 1 - 1 0.3440000 1.0000000 + 1 3.1070000 1.0000000 D 1 - 1 0.1530000 1.0000000 -D 1 - 1 0.0680000 1.0000000 + 1 0.8550000 1.0000000 F 1 - 1 0.2460000 1.0000000 -F 1 - 1 0.1292000 1.0000000 -G 1 - 1 0.2380000 1.0000000 -2 15 -S 9 - 1 74530.0000000 0.0000950 - 2 11170.0000000 0.0007380 - 3 2543.0000000 0.0038580 - 4 721.0000000 0.0159260 - 5 235.9000000 0.0542890 - 6 85.6000000 0.1495130 - 7 33.5500000 0.3082520 - 8 13.9300000 0.3948530 - 9 5.9150000 0.2110310 -S 9 - 1 74530.0000000 -0.0000220 - 2 11170.0000000 -0.0001720 - 3 2543.0000000 -0.0008910 - 4 721.0000000 -0.0037480 - 5 235.9000000 -0.0128620 - 6 85.6000000 -0.0380610 - 7 33.5500000 -0.0862390 - 8 13.9300000 -0.1558650 - 9 5.9150000 -0.1109140 + 1 1.9170000 1.0000000 +2 10 +S 8 + 1 19500.0000000 0.0005070 + 2 2923.0000000 0.0039230 + 3 664.5000000 0.0202000 + 4 187.5000000 0.0790100 + 5 60.6200000 0.2304390 + 6 21.4200000 0.4328720 + 7 7.9500000 0.3499640 + 8 0.8815000 -0.0078920 +S 8 + 1 19500.0000000 -0.0001170 + 2 2923.0000000 -0.0009120 + 3 664.5000000 -0.0047170 + 4 187.5000000 -0.0190860 + 5 60.6200000 -0.0596550 + 6 21.4200000 -0.1400100 + 7 7.9500000 -0.1767820 + 8 0.8815000 0.6050430 S 1 - 1 1.8430000 1.0000000 + 1 2.2570000 1.0000000 S 1 - 1 0.7124000 1.0000000 -S 1 - 1 0.2637000 1.0000000 + 1 0.3041000 1.0000000 P 3 - 1 80.3900000 0.0063470 - 2 18.6300000 0.0442040 - 3 5.6940000 0.1685140 + 1 43.8800000 0.0166650 + 2 9.9260000 0.1044720 + 3 2.9300000 0.3172600 P 1 - 1 1.9530000 1.0000000 + 1 0.9132000 1.0000000 P 1 - 1 0.6702000 1.0000000 -P 1 - 1 0.2166000 1.0000000 + 1 0.2672000 1.0000000 D 1 - 1 5.0140000 1.0000000 + 1 3.1070000 1.0000000 D 1 - 1 1.7250000 1.0000000 -D 1 - 1 0.5860000 1.0000000 + 1 0.8550000 1.0000000 F 1 - 1 3.5620000 1.0000000 -F 1 - 1 1.1480000 1.0000000 -G 1 - 1 2.3760000 1.0000000 + 1 1.9170000 1.0000000 diff --git a/input/methods b/input/methods index 5ee8f11..2077c1d 100644 --- a/input/methods +++ b/input/methods @@ -1,16 +1,16 @@ # RHF UHF MOM T F F # MP2 MP3 MP2-F12 - F F F + T F F # CCD CCSD CCSD(T) ringCCD ladderCCD F F F F F # CIS RPA RPAx ppRPA ADC - F F F F F + T T T F F # G0F2 evGF2 G0F3 evGF3 F F F F # G0W0 evGW qsGW - F F F -# G0T0 evGT qsGT T F F +# G0T0 evGT qsGT + F F F # MCMP2 F diff --git a/input/molecule b/input/molecule index 381ba52..9c99be9 100644 --- a/input/molecule +++ b/input/molecule @@ -1,5 +1,5 @@ # nAt nEla nElb nCore nRyd - 2 6 6 0 0 + 2 9 9 0 0 # Znuc x y z - Li 0. 0. 0. - F 0. 0. 2.965 + F 0. 0. 0. + F 0. 0. 2 diff --git a/input/molecule.xyz b/input/molecule.xyz index 87babf0..f5dba60 100644 --- a/input/molecule.xyz +++ b/input/molecule.xyz @@ -1,4 +1,4 @@ 2 - Li 0.0000000000 0.0000000000 0.0000000000 - F 0.0000000000 0.0000000000 1.5690105433 + F 0.0000000000 0.0000000000 0.0000000000 + F 0.0000000000 0.0000000000 1.0583544980 diff --git a/input/weight b/input/weight index 76e69dd..80e2a23 100644 --- a/input/weight +++ b/input/weight @@ -1,98 +1,74 @@ -1 15 -S 9 - 1 6601.0000000 0.0001170 - 2 989.7000000 0.0009110 - 3 225.7000000 0.0047280 - 4 64.2900000 0.0191970 - 5 21.1800000 0.0630470 - 6 7.7240000 0.1632080 - 7 3.0030000 0.3148270 - 8 1.2120000 0.3939360 - 9 0.4930000 0.1969180 -S 9 - 1 6601.0000000 -0.0000180 - 2 989.7000000 -0.0001420 - 3 225.7000000 -0.0007410 - 4 64.2900000 -0.0030200 - 5 21.1800000 -0.0101230 - 6 7.7240000 -0.0270940 - 7 3.0030000 -0.0573590 - 8 1.2120000 -0.0938950 - 9 0.4930000 -0.1210910 +1 10 +S 8 + 1 19500.0000000 0.0005070 + 2 2923.0000000 0.0039230 + 3 664.5000000 0.0202000 + 4 187.5000000 0.0790100 + 5 60.6200000 0.2304390 + 6 21.4200000 0.4328720 + 7 7.9500000 0.3499640 + 8 0.8815000 -0.0078920 +S 8 + 1 19500.0000000 -0.0001170 + 2 2923.0000000 -0.0009120 + 3 664.5000000 -0.0047170 + 4 187.5000000 -0.0190860 + 5 60.6200000 -0.0596550 + 6 21.4200000 -0.1400100 + 7 7.9500000 -0.1767820 + 8 0.8815000 0.6050430 S 1 - 1 0.0951500 1.0000000 + 1 2.2570000 1.0000000 S 1 - 1 0.0479100 1.0000000 -S 1 - 1 0.0222000 1.0000000 + 1 0.3041000 1.0000000 P 3 - 1 6.2500000 0.0033880 - 2 1.3700000 0.0193160 - 3 0.3672000 0.0791040 + 1 43.8800000 0.0166650 + 2 9.9260000 0.1044720 + 3 2.9300000 0.3172600 P 1 - 1 0.1192000 1.0000000 + 1 0.9132000 1.0000000 P 1 - 1 0.0447400 1.0000000 -P 1 - 1 0.0179500 1.0000000 + 1 0.2672000 1.0000000 D 1 - 1 0.3440000 1.0000000 + 1 3.1070000 1.0000000 D 1 - 1 0.1530000 1.0000000 -D 1 - 1 0.0680000 1.0000000 + 1 0.8550000 1.0000000 F 1 - 1 0.2460000 1.0000000 -F 1 - 1 0.1292000 1.0000000 -G 1 - 1 0.2380000 1.0000000 -2 15 -S 9 - 1 74530.0000000 0.0000950 - 2 11170.0000000 0.0007380 - 3 2543.0000000 0.0038580 - 4 721.0000000 0.0159260 - 5 235.9000000 0.0542890 - 6 85.6000000 0.1495130 - 7 33.5500000 0.3082520 - 8 13.9300000 0.3948530 - 9 5.9150000 0.2110310 -S 9 - 1 74530.0000000 -0.0000220 - 2 11170.0000000 -0.0001720 - 3 2543.0000000 -0.0008910 - 4 721.0000000 -0.0037480 - 5 235.9000000 -0.0128620 - 6 85.6000000 -0.0380610 - 7 33.5500000 -0.0862390 - 8 13.9300000 -0.1558650 - 9 5.9150000 -0.1109140 + 1 1.9170000 1.0000000 +2 10 +S 8 + 1 19500.0000000 0.0005070 + 2 2923.0000000 0.0039230 + 3 664.5000000 0.0202000 + 4 187.5000000 0.0790100 + 5 60.6200000 0.2304390 + 6 21.4200000 0.4328720 + 7 7.9500000 0.3499640 + 8 0.8815000 -0.0078920 +S 8 + 1 19500.0000000 -0.0001170 + 2 2923.0000000 -0.0009120 + 3 664.5000000 -0.0047170 + 4 187.5000000 -0.0190860 + 5 60.6200000 -0.0596550 + 6 21.4200000 -0.1400100 + 7 7.9500000 -0.1767820 + 8 0.8815000 0.6050430 S 1 - 1 1.8430000 1.0000000 + 1 2.2570000 1.0000000 S 1 - 1 0.7124000 1.0000000 -S 1 - 1 0.2637000 1.0000000 + 1 0.3041000 1.0000000 P 3 - 1 80.3900000 0.0063470 - 2 18.6300000 0.0442040 - 3 5.6940000 0.1685140 + 1 43.8800000 0.0166650 + 2 9.9260000 0.1044720 + 3 2.9300000 0.3172600 P 1 - 1 1.9530000 1.0000000 + 1 0.9132000 1.0000000 P 1 - 1 0.6702000 1.0000000 -P 1 - 1 0.2166000 1.0000000 + 1 0.2672000 1.0000000 D 1 - 1 5.0140000 1.0000000 + 1 3.1070000 1.0000000 D 1 - 1 1.7250000 1.0000000 -D 1 - 1 0.5860000 1.0000000 + 1 0.8550000 1.0000000 F 1 - 1 3.5620000 1.0000000 -F 1 - 1 1.1480000 1.0000000 -G 1 - 1 2.3760000 1.0000000 + 1 1.9170000 1.0000000 diff --git a/scan_N2.sh b/scan_N2.sh index 05e6af6..bae5207 100755 --- a/scan_N2.sh +++ b/scan_N2.sh @@ -1,10 +1,10 @@ #! /bin/bash MOL="N2" -BASIS="cc-pvqz" -R_START=2.071 -R_END=2.080 -DR=0.001 +BASIS="cc-pvdz" +R_START=1.7 +R_END=2.6 +DR=0.1 for R in $(seq $R_START $DR $R_END) do diff --git a/src/QuAcK/G0T0.f90 b/src/QuAcK/G0T0.f90 index b6f5caa..bbeed71 100644 --- a/src/QuAcK/G0T0.f90 +++ b/src/QuAcK/G0T0.f90 @@ -1,4 +1,5 @@ -subroutine G0T0(eta,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,eHF) +subroutine G0T0(doACFDT,exchange_kernel,doXBS,BSE,TDA,singlet_manifold,triplet_manifold, & + linearize,eta,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,eHF) ! Perform one-shot calculation with a T-matrix self-energy (G0T0) @@ -7,9 +8,22 @@ subroutine G0T0(eta,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,eHF) ! Input variables + logical,intent(in) :: doACFDT + logical,intent(in) :: exchange_kernel + logical,intent(in) :: doXBS + logical,intent(in) :: BSE + logical,intent(in) :: TDA + logical,intent(in) :: singlet_manifold + logical,intent(in) :: triplet_manifold + logical,intent(in) :: linearize double precision,intent(in) :: eta - integer,intent(in) :: nBas,nC,nO,nV,nR + integer,intent(in) :: nBas + integer,intent(in) :: nC + integer,intent(in) :: nO + integer,intent(in) :: nV + integer,intent(in) :: nR + integer,intent(in) :: nS double precision,intent(in) :: ENuc double precision,intent(in) :: ERHF double precision,intent(in) :: eHF(nBas) @@ -22,6 +36,7 @@ subroutine G0T0(eta,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,eHF) integer :: nVVs,nVVt double precision :: EcRPA(nspin) double precision :: EcBSE(nspin) + double precision :: EcAC(nspin) double precision,allocatable :: Omega1s(:),Omega1t(:) double precision,allocatable :: X1s(:,:),X1t(:,:) double precision,allocatable :: Y1s(:,:),Y1t(:,:) @@ -35,6 +50,11 @@ subroutine G0T0(eta,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,eHF) double precision,allocatable :: eG0T0(:) + double precision,allocatable :: Omega(:,:) + double precision,allocatable :: XpY(:,:,:) + double precision,allocatable :: XmY(:,:,:) + double precision,allocatable :: rho(:,:,:,:) + ! Output variables ! Hello world @@ -113,9 +133,6 @@ subroutine G0T0(eta,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,eHF) X1t(:,:),Y1t(:,:),rho1t(:,:,:), & X2t(:,:),Y2t(:,:),rho2t(:,:,:)) - rho2s(:,:,:) = 0d0 - rho2t(:,:,:) = 0d0 - !---------------------------------------------- ! Compute T-matrix version of the self-energy !---------------------------------------------- @@ -136,8 +153,15 @@ subroutine G0T0(eta,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,eHF) ! Solve the quasi-particle equation !---------------------------------------------- - eG0T0(:) = eHF(:) + SigT(:) -! eG0T0(:) = eHF(:) + Z(:)*SigT(:) + if(linearize) then + + eG0T0(:) = eHF(:) + Z(:)*SigT(:) + + else + + eG0T0(:) = eHF(:) + SigT(:) + + end if !---------------------------------------------- ! Dump results @@ -145,4 +169,70 @@ subroutine G0T0(eta,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,eHF) call print_G0T0(nBas,nO,eHF(:),ENuc,ERHF,SigT(:),Z(:),eG0T0(:),EcRPA(:)) +! Perform BSE calculation + + if(BSE) then + + allocate(Omega(nS,nspin),XpY(nS,nS,nspin),XmY(nS,nS,nspin),rho(nBas,nBas,nS,nspin)) + + call Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold,eta, & + nBas,nC,nO,nV,nR,nS,ERI,eHF,eG0T0,Omega,XpY,XmY,rho,EcRPA,EcBSE) + + if(exchange_kernel) then + + EcRPA(1) = 0.5d0*EcRPA(1) + EcRPA(2) = 1.5d0*EcRPA(1) + + end if + + write(*,*) + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0T0 correlation energy (singlet) =',EcBSE(1) + write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0T0 correlation energy (triplet) =',EcBSE(2) + write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0T0 correlation energy =',EcBSE(1) + EcBSE(2) + write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0T0 total energy =',ENuc + ERHF + EcBSE(1) + EcBSE(2) + write(*,*)'-------------------------------------------------------------------------------' + write(*,*) + +! Compute the BSE correlation energy via the adiabatic connection + +! Compute the BSE correlation energy via the adiabatic connection + + if(doACFDT) then + + write(*,*) '------------------------------------------------------' + write(*,*) 'Adiabatic connection version of BSE correlation energy' + write(*,*) '------------------------------------------------------' + write(*,*) + + if(doXBS) then + + write(*,*) '*** scaled screening version (XBS) ***' + write(*,*) + + end if + + call ACFDT(exchange_kernel,doXBS,.true.,TDA,BSE,singlet_manifold,triplet_manifold,eta, & + nBas,nC,nO,nV,nR,nS,ERI,eHF,eG0T0,Omega,XpY,XmY,rho,EcAC) + + if(exchange_kernel) then + + EcAC(1) = 0.5d0*EcAC(1) + EcAC(2) = 1.5d0*EcAC(1) + + end if + + write(*,*) + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A50,F20.10)') 'AC@BSE@G0T0 correlation energy (singlet) =',EcAC(1) + write(*,'(2X,A50,F20.10)') 'AC@BSE@G0T0 correlation energy (triplet) =',EcAC(2) + write(*,'(2X,A50,F20.10)') 'AC@BSE@G0T0 correlation energy =',EcAC(1) + EcAC(2) + write(*,'(2X,A50,F20.10)') 'AC@BSE@G0T0 total energy =',ENuc + ERHF + EcAC(1) + EcAC(2) + write(*,*)'-------------------------------------------------------------------------------' + write(*,*) + + end if + + end if + end subroutine G0T0 diff --git a/src/QuAcK/QuAcK.f90 b/src/QuAcK/QuAcK.f90 index a10d588..6f0ae8f 100644 --- a/src/QuAcK/QuAcK.f90 +++ b/src/QuAcK/QuAcK.f90 @@ -635,7 +635,9 @@ program QuAcK if(doG0T0) then call cpu_time(start_G0T0) - call G0T0(eta,nBas,nC(1),nO(1),nV(1),nR(1),ENuc,ERHF,ERI_MO_basis,eHF) + call G0T0(doACFDT,exchange_kernel,doXBS,BSE,TDA, & + singlet_manifold,triplet_manifold,linGW,eta, & + nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,ERI_MO_basis,eHF) call soG0T0(eta,nBas,nC(1),nO(1),nV(1),nR(1),ENuc,ERHF,ERI_MO_basis,eHF) call cpu_time(end_G0T0)