From 2938ed5966d2ec54fb6e96a651625b860fd87d70 Mon Sep 17 00:00:00 2001 From: Mauricio Rodriguez-Mayorga Date: Mon, 16 Feb 2026 10:17:44 +0100 Subject: [PATCH] Print E contirb HFB --- src/GWiw/scGWB_AO_itau_iw.f90 | 16 ++++++++++++++-- src/GWiw/scGW_AO_itau_iw.f90 | 22 ++++++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/GWiw/scGWB_AO_itau_iw.f90 b/src/GWiw/scGWB_AO_itau_iw.f90 index f324c64d..b87f5288 100644 --- a/src/GWiw/scGWB_AO_itau_iw.f90 +++ b/src/GWiw/scGWB_AO_itau_iw.f90 @@ -256,7 +256,6 @@ subroutine scGWB_AO_itau_iw(nBas,nOrb,nOrb_twice,maxSCF,maxDIIS,dolinGW,restart_ cHFB_gorkov=0d0 cHFB_gorkov(1:nBas ,1:nOrb ) = cHFB(1:nBas,1:nOrb) cHFB_gorkov(nBas+1:nBas_twice,nOrb+1:nOrb_twice) = cHFB(1:nBas,1:nOrb) -! eQP_old(:)=eQP_state(:) H_ao_hfb=0d0 H_ao_hfb(1:nBas,1:nBas)=Hc(1:nBas,1:nBas) Ehfbl=0d0 @@ -588,10 +587,12 @@ subroutine scGWB_AO_itau_iw(nBas,nOrb,nOrb_twice,maxSCF,maxDIIS,dolinGW,restart_ H_ao_hfb=0d0 H_ao_hfb(1:nBas,1:nBas)=Hc(1:nBas,1:nBas) Ehfbl=0d0 + Ecore=0d0; Eh=0d0; Ex=0d0; Epair=0d0; do ibas=1,nBas do jbas=1,nBas obas=nBas+1+(jbas-1) Ehfbl=Ehfbl+2d0*R_ao(ibas,jbas)*Hc(ibas,jbas) + Ecore=Ecore+2d0*R_ao(ibas,jbas)*Hc(ibas,jbas) do kbas=1,nBas do lbas=1,nBas qbas=nBas+1+(lbas-1) @@ -601,6 +602,9 @@ subroutine scGWB_AO_itau_iw(nBas,nOrb,nOrb_twice,maxSCF,maxDIIS,dolinGW,restart_ Ehfbl=Ehfbl+2d0*R_ao(kbas,lbas)*R_ao(ibas,jbas)*vMAT(1+(lbas-1)+(kbas-1)*nBas,1+(jbas-1)+(ibas-1)*nBas) & -R_ao(kbas,lbas)*R_ao(ibas,jbas)*vMAT(1+(jbas-1)+(kbas-1)*nBas,1+(lbas-1)+(ibas-1)*nBas) & +sigma*R_ao(kbas,qbas)*R_ao(ibas,obas)*vMAT(1+(ibas-1)+(kbas-1)*nBas,1+(jbas-1)+(lbas-1)*nBas) + Eh=Eh+2d0*R_ao(kbas,lbas)*R_ao(ibas,jbas)*vMAT(1+(lbas-1)+(kbas-1)*nBas,1+(jbas-1)+(ibas-1)*nBas) + Ex=Ex-R_ao(kbas,lbas)*R_ao(ibas,jbas)*vMAT(1+(jbas-1)+(kbas-1)*nBas,1+(lbas-1)+(ibas-1)*nBas) + Epair=Epair+sigma*R_ao(kbas,qbas)*R_ao(ibas,obas)*vMAT(1+(ibas-1)+(kbas-1)*nBas,1+(jbas-1)+(lbas-1)*nBas) enddo enddo enddo @@ -676,6 +680,10 @@ subroutine scGWB_AO_itau_iw(nBas,nOrb,nOrb_twice,maxSCF,maxDIIS,dolinGW,restart_ write(*,'(a,f15.8)') ' Change of R ',diff_Rao write(*,'(a,f15.8)') ' Chem. Pot. ',chem_pot write(*,'(a,f15.8)') ' Enuc ',ENuc + write(*,'(a,f15.8)') ' Ehcore ',Ecore + write(*,'(a,f15.8)') ' Hartree ',Eh + write(*,'(a,f15.8)') ' Exchange ',Ex + write(*,'(a,f15.8)') ' Epairing ',Epair write(*,'(a,f15.8)') ' Ehfbl ',Ehfbl write(*,'(a,f15.8)') ' EcGM ',EcGM write(*,'(a,f15.8)') ' Eelec ',Ehfbl+EcGM @@ -746,6 +754,10 @@ subroutine scGWB_AO_itau_iw(nBas,nOrb,nOrb_twice,maxSCF,maxDIIS,dolinGW,restart_ write(*,'(a,f15.8)') ' Chem. Pot. ',chem_pot write(*,'(a,f15.8)') ' N anomalus ',N_anom write(*,'(a,f15.8)') ' Enuc ',ENuc + write(*,'(a,f15.8)') ' Ehcore ',Ecore + write(*,'(a,f15.8)') ' Hartree ',Eh + write(*,'(a,f15.8)') ' Exchange ',Ex + write(*,'(a,f15.8)') ' Epairing ',Epair write(*,'(a,f15.8)') ' Ehfbl ',Ehfbl write(*,'(a,f15.8)') ' EcGM ',EcGM write(*,'(a,f15.8)') ' Eelec ',Ehfbl+EcGM @@ -822,7 +834,7 @@ subroutine scGWB_AO_itau_iw(nBas,nOrb,nOrb_twice,maxSCF,maxDIIS,dolinGW,restart_ R_ao_old(1:nBas,nBas+1:nBas_twice))) write(*,'(a,f15.8)') ' N anomalus ',N_anom write(*,'(a,f15.8)') ' Enuc ',ENuc - write(*,'(a,f15.8)') ' Hcore ',Ecore + write(*,'(a,f15.8)') ' Ehcore ',Ecore write(*,'(a,f15.8)') ' Hartree ',Eh write(*,'(a,f15.8)') ' Exchange ',Ex write(*,'(a,f15.8)') ' Epairing ',Epair diff --git a/src/GWiw/scGW_AO_itau_iw.f90 b/src/GWiw/scGW_AO_itau_iw.f90 index e3244385..0e46c4b6 100644 --- a/src/GWiw/scGW_AO_itau_iw.f90 +++ b/src/GWiw/scGW_AO_itau_iw.f90 @@ -50,7 +50,7 @@ subroutine scGW_AO_itau_iw(nBas,nOrb,nO,maxSCF,maxDIIS,dolinGW,restart_scGW,verb double precision :: rcond double precision :: rcondP double precision :: alpha_mixing - double precision :: Ehfl,EcGM + double precision :: Ehfl,EcGM,Ehcore,Ehartree,Ex double precision :: eta,diff_Pao double precision :: nElectrons double precision :: err_EcGM @@ -459,16 +459,22 @@ subroutine scGW_AO_itau_iw(nBas,nOrb,nO,maxSCF,maxDIIS,dolinGW,restart_scGW,verb ! Build F iter_fock=iter_fock+1 F_ao=Hc + Ehcore=0d0 Ehfl=0d0 + Ehartree=0d0 + Ex=0d0 do ibas=1,nBas do jbas=1,nBas Ehfl=Ehfl+P_ao(ibas,jbas)*Hc(ibas,jbas) + Ehcore=Ehcore+P_ao(ibas,jbas)*Hc(ibas,jbas) do kbas=1,nBas do lbas=1,nBas F_ao(ibas,jbas)=F_ao(ibas,jbas)+P_ao(kbas,lbas)*vMAT(1+(lbas-1)+(kbas-1)*nBas,1+(jbas-1)+(ibas-1)*nBas) & -0.5d0*P_ao(kbas,lbas)*vMAT(1+(jbas-1)+(kbas-1)*nBas,1+(lbas-1)+(ibas-1)*nBas) Ehfl=Ehfl+0.5d0*P_ao(kbas,lbas)*P_ao(ibas,jbas)*vMAT(1+(lbas-1)+(kbas-1)*nBas,1+(jbas-1)+(ibas-1)*nBas) & -0.25d0*P_ao(kbas,lbas)*P_ao(ibas,jbas)*vMAT(1+(jbas-1)+(kbas-1)*nBas,1+(lbas-1)+(ibas-1)*nBas) + Ehartree=Ehartree+0.5d0*P_ao(kbas,lbas)*P_ao(ibas,jbas)*vMAT(1+(lbas-1)+(kbas-1)*nBas,1+(jbas-1)+(ibas-1)*nBas) + Ex=Ex-0.25d0*P_ao(kbas,lbas)*P_ao(ibas,jbas)*vMAT(1+(jbas-1)+(kbas-1)*nBas,1+(lbas-1)+(ibas-1)*nBas) enddo enddo enddo @@ -542,6 +548,9 @@ subroutine scGW_AO_itau_iw(nBas,nOrb,nO,maxSCF,maxDIIS,dolinGW,restart_scGW,verb write(*,'(a,f15.8)') ' Change of P ',diff_Pao write(*,'(a,f15.8)') ' Chem. Pot. ',chem_pot write(*,'(a,f15.8)') ' Enuc ',ENuc + write(*,'(a,f15.8)') ' Ehcore ',Ehcore + write(*,'(a,f15.8)') ' Hartree ',Ehartree + write(*,'(a,f15.8)') ' Exchange ',Ex write(*,'(a,f15.8)') ' Ehfl ',Ehfl write(*,'(a,f15.8)') ' EcGM ',EcGM write(*,'(a,f15.8)') ' Eelec ',Ehfl+EcGM @@ -609,6 +618,9 @@ subroutine scGW_AO_itau_iw(nBas,nOrb,nO,maxSCF,maxDIIS,dolinGW,restart_scGW,verb write(*,'(a,f15.8)') ' Change of P ',diff_Pao write(*,'(a,f15.8)') ' Chem. Pot. ',chem_pot write(*,'(a,f15.8)') ' Enuc ',ENuc + write(*,'(a,f15.8)') ' Ehcore ',Ehcore + write(*,'(a,f15.8)') ' Hartree ',Ehartree + write(*,'(a,f15.8)') ' Exchange ',Ex write(*,'(a,f15.8)') ' Ehfl ',Ehfl write(*,'(a,f15.8)') ' EcGM ',EcGM write(*,'(a,f15.8)') ' Eelec ',Ehfl+EcGM @@ -663,14 +675,17 @@ subroutine scGW_AO_itau_iw(nBas,nOrb,nO,maxSCF,maxDIIS,dolinGW,restart_scGW,verb trace_1_rdm=trace_1_rdm+P_ao_old(ibas,jbas)*S(ibas,jbas) enddo enddo - Ehfl=0d0 + Ehfl=0d0;Ehartree=0d0;Ex=0d0;Ehcore=0d0; do ibas=1,nBas do jbas=1,nBas Ehfl=Ehfl+P_ao_old(ibas,jbas)*Hc(ibas,jbas) + Ehcore=Ehcore+P_ao_old(ibas,jbas)*Hc(ibas,jbas) do kbas=1,nBas do lbas=1,nBas Ehfl=Ehfl+0.5d0*P_ao_old(kbas,lbas)*P_ao_old(ibas,jbas)*vMAT(1+(lbas-1)+(kbas-1)*nBas,1+(jbas-1)+(ibas-1)*nBas) & -0.25d0*P_ao_old(kbas,lbas)*P_ao_old(ibas,jbas)*vMAT(1+(jbas-1)+(kbas-1)*nBas,1+(lbas-1)+(ibas-1)*nBas) + Ehartree=Ehartree+0.5d0*P_ao(kbas,lbas)*P_ao(ibas,jbas)*vMAT(1+(lbas-1)+(kbas-1)*nBas,1+(jbas-1)+(ibas-1)*nBas) + Ex=Ex-0.25d0*P_ao(kbas,lbas)*P_ao(ibas,jbas)*vMAT(1+(jbas-1)+(kbas-1)*nBas,1+(lbas-1)+(ibas-1)*nBas) enddo enddo enddo @@ -680,6 +695,9 @@ subroutine scGW_AO_itau_iw(nBas,nOrb,nO,maxSCF,maxDIIS,dolinGW,restart_scGW,verb Occ=-Occ cNO=matmul(cHF,U_mo) write(*,'(a,f15.8)') ' Enuc ',ENuc + write(*,'(a,f15.8)') ' Ehcore ',Ehcore + write(*,'(a,f15.8)') ' Ehartree ',Ehartree + write(*,'(a,f15.8)') ' Ex ',Ex write(*,'(a,f15.8)') ' Ehfl ',Ehfl write(*,'(a,f15.8)') ' EcGM ',EcGM write(*,'(a,f15.8)') ' Eelec ',Ehfl+EcGM