diff --git a/input/methods b/input/methods index 5f36a66..4d84f78 100644 --- a/input/methods +++ b/input/methods @@ -13,7 +13,7 @@ # G0F2* evGF2* qsGF2* G0F3 evGF3 F F F F F # G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW - F T F F F F + T F F F F F # G0T0pp* evGTpp* qsGTpp* G0T0eh evGTeh qsGTeh F F F F F F # * unrestricted version available diff --git a/src/AOtoMO/AOtoMO_integral_transform.f90 b/src/AOtoMO/AOtoMO_integral_transform.f90 index 4b2f4e9..8a77b3f 100644 --- a/src/AOtoMO/AOtoMO_integral_transform.f90 +++ b/src/AOtoMO/AOtoMO_integral_transform.f90 @@ -1,7 +1,7 @@ subroutine AOtoMO_integral_transform(bra1,bra2,ket1,ket2,nBas,c,ERI_AO,ERI_MO) ! AO to MO transformation of two-electron integrals via the semi-direct O(N^5) algorithm -! bra and ket are the spin of (bra1 bra2|ket1 ket2) +! bra and ket are the spin of (bra1 bra2|ket1 ket2) = implicit none include 'parameters.h' @@ -28,12 +28,12 @@ subroutine AOtoMO_integral_transform(bra1,bra2,ket1,ket2,nBas,c,ERI_AO,ERI_MO) ! Four-index transform via semi-direct O(N^5) algorithm - call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, ERI_AO, nBas, c(1,1,bra2), size(c,1), 0d0, scr, nBas**3) + call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, ERI_AO, nBas, c(1,1,ket2), size(c,1), 0d0, scr, nBas**3) - call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, scr, nBas, c(1,1,ket1), size(c,1), 0d0, ERI_MO, nBas**3) + call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, scr, nBas, c(1,1,bra2), size(c,1), 0d0, ERI_MO, nBas**3) - call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, ERI_MO, nBas, c(1,1,bra1), size(c,1), 0d0, scr, nBas**3) + call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, ERI_MO, nBas, c(1,1,ket1), size(c,1), 0d0, scr, nBas**3) - call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, scr, nBas, c(1,1,ket2), size(c,1), 0d0, ERI_MO, nBas**3) + call dgemm ('T', 'N', nBas**3, nBas, nBas, 1d0, scr, nBas, c(1,1,bra1), size(c,1), 0d0, ERI_MO, nBas**3) end subroutine diff --git a/src/GF/print_UG0F2.f90 b/src/GF/print_UG0F2.f90 index 1dde74a..7a3b2aa 100644 --- a/src/GF/print_UG0F2.f90 +++ b/src/GF/print_UG0F2.f90 @@ -38,16 +38,16 @@ subroutine print_UG0F2(nBas,nO,eHF,ENuc,EUHF,SigC,Z,eGF2,Ec) ! Dump results write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,*)' Unrestricted one-shot G0F2 calculation (eV)' - write(*,*)'-------------------------------------------------------------------------------'& - '-------------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------& + ------------------------------------------------' write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') & '|',' ','|','e_HF ','|','Sig_c ','|','Z ','|','e_QP ','|' write(*,'(A1,A3,A1,2A15,A1,2A15,A1,2A15,A1,2A15,A1)') & '|','#','|','up ','dw ','|','up ','dw ','|','up ','dw ','|','up ','dw ','|' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' do p=1,nBas write(*,'(A1,I3,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1)') & @@ -56,16 +56,16 @@ subroutine print_UG0F2(nBas,nO,eHF,ENuc,EUHF,SigC,Z,eGF2,Ec) enddo write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A30,F15.6,A3)') 'UG0F2 HOMO energy:',maxval(HOMO(:))*HaToeV,' eV' write(*,'(2X,A30,F15.6,A3)') 'UG0F2 LUMO energy:',minval(LUMO(:))*HaToeV,' eV' write(*,'(2X,A30,F15.6,A3)') 'UG0F2 HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A30,F15.6,A3)') ' UG0F2 total energy :',ENuc + EUHF + sum(Ec(:)),' au' write(*,'(2X,A30,F15.6,A3)') ' UG0F2 correlation energy:',sum(Ec(:)),' au' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,*) end subroutine diff --git a/src/GW/print_UG0W0.f90 b/src/GW/print_UG0W0.f90 index abcb592..036450d 100644 --- a/src/GW/print_UG0W0.f90 +++ b/src/GW/print_UG0W0.f90 @@ -39,16 +39,16 @@ subroutine print_UG0W0(nBas,nO,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM) ! Dump results write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,*)' Unrestricted one-shot G0W0 calculation (eV)' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') & '|',' ','|','e_HF ','|','Sig_c ','|','Z ','|','e_QP ','|' write(*,'(A1,A3,A1,2A15,A1,2A15,A1,2A15,A1,2A15,A1)') & '|','#','|','up ','dw ','|','up ','dw ','|','up ','dw ','|','up ','dw ','|' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' do p=1,nBas write(*,'(A1,I3,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1)') & @@ -57,18 +57,18 @@ subroutine print_UG0W0(nBas,nO,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM) enddo write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A50,F15.6,A3)') 'UG0W0 HOMO energy:',maxval(HOMO(:))*HaToeV,' eV' write(*,'(2X,A50,F15.6,A3)') 'UG0W0 LUMO energy:',minval(LUMO(:))*HaToeV,' eV' write(*,'(2X,A50,F15.6,A3)') 'UG0W0 HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A50,F15.6,A3)') 'phRPA@UG0W0 total energy :',ENuc + EUHF + EcRPA,' au' write(*,'(2X,A50,F15.6,A3)') 'phRPA@UG0W0 correlation energy:',EcRPA,' au' write(*,'(2X,A50,F15.6,A3)') ' GM@UG0W0 total energy :',ENuc + EUHF + sum(EcGM(:)),' au' write(*,'(2X,A50,F15.6,A3)') ' GM@UG0W0 correlation energy:',sum(EcGM(:)),' au' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,*) end subroutine diff --git a/src/GW/print_evUGW.f90 b/src/GW/print_evUGW.f90 index 2f08564..faf374a 100644 --- a/src/GW/print_evUGW.f90 +++ b/src/GW/print_evUGW.f90 @@ -41,20 +41,20 @@ subroutine print_evUGW(nBas,nO,nSCF,Conv,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM) ! Dump results write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' if(nSCF < 10) then write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent evG',nSCF,'W',nSCF,' calculation' else write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent evG',nSCF,'W',nSCF,' calculation' endif write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') & '|',' ','|','e_HF ','|','Sig_c ','|','Z ','|','e_QP ','|' write(*,'(A1,A3,A1,2A15,A1,2A15,A1,2A15,A1,2A15,A1)') & '|','#','|','up ','dw ','|','up ','dw ','|','up ','dw ','|','up ','dw ','|' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' do p=1,nBas write(*,'(A1,I3,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1)') & @@ -63,7 +63,7 @@ subroutine print_evUGW(nBas,nO,nSCF,Conv,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM) enddo write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------& @@ -72,7 +72,7 @@ subroutine print_evUGW(nBas,nO,nSCF,Conv,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM) write(*,'(2X,A30,F15.6,A3)') 'evGW LUMO energy:',minval(LUMO(:))*HaToeV,' eV' write(*,'(2X,A30,F15.6,A3)') 'evGW HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW total energy :',ENuc + EUHF + EcRPA,' au' write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW correlation energy:',EcRPA,' au' write(*,'(2X,A30,F15.6,A3)') ' GM@evGW total energy :',ENuc + EUHF + sum(EcGM(:)),' au' diff --git a/src/GW/print_qsUGW.f90 b/src/GW/print_qsUGW.f90 index c1a70aa..1e65b2b 100644 --- a/src/GW/print_qsUGW.f90 +++ b/src/GW/print_qsUGW.f90 @@ -63,20 +63,20 @@ subroutine print_qsUGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,cGW,Ov, & ! Dump results write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' if(nSCF < 10) then write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation' else write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation' endif write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') & '|',' ','|','e_HF ','|','Sig_c ','|','Z ','|','e_QP ','|' write(*,'(A1,A3,A1,2A15,A1,2A15,A1,2A15,A1,2A15,A1)') & '|','#','|','up ','dw ','|','up ','dw ','|','up ','dw ','|','up ','dw ','|' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' do p=1,nBas write(*,'(A1,I3,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1,2F15.6,A1)') & @@ -85,22 +85,22 @@ subroutine print_qsUGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,cGW,Ov, & enddo write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A30,F15.6,A3)') 'qsUGW HOMO energy:',maxval(HOMO(:))*HaToeV,' eV' write(*,'(2X,A30,F15.6,A3)') 'qsUGW LUMO energy:',minval(LUMO(:))*HaToeV,' eV' write(*,'(2X,A30,F15.6,A3)') 'qsUGW HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,'(2X,A30,F15.6,A3)') ' qsUGW total energy:',ENuc + EqsGW,' au' write(*,'(2X,A30,F15.6,A3)') ' qsUGW exchange energy:',sum(Ex(:)),' au' write(*,'(2X,A30,F15.6,A3)') ' GM@qsUGW correlation energy:',sum(EcGM(:)),' au' write(*,'(2X,A30,F15.6,A3)') 'RPA@qsUGW correlation energy:',EcRPA,' au' write(*,*)'-------------------------------------------------------------------------------& - -------------------------------------------------' + ------------------------------------------------' write(*,*) ! Dump results for final iteration