From 30f099b1d7b2115c21a1dc847e6e0a7ecc3e6ed8 Mon Sep 17 00:00:00 2001 From: v1j4y Date: Tue, 9 Feb 2021 00:35:14 +0100 Subject: [PATCH] Added psi_config_data for recording csf idxs. #143. --- .../configuration_CI_sigma_helpers.irp.f | 27 +++++++++++-------- .../configuration_CI_sigma_helpers.org | 27 +++++++++++-------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/determinants/configuration_CI_sigma_helpers.irp.f b/src/determinants/configuration_CI_sigma_helpers.irp.f index bc4826f8..a7cfaf2b 100644 --- a/src/determinants/configuration_CI_sigma_helpers.irp.f +++ b/src/determinants/configuration_CI_sigma_helpers.irp.f @@ -261,7 +261,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI integer*8 :: diffDOMO integer :: ndiffSOMO integer :: ndiffDOMO - integer :: i,j,k,l,p,q,nsomoJ,nsomoalpha + integer :: i,j,k,l,p,q,nsomoJ,nsomoalpha,starti,endi,extyp nconnectedI = 0 @@ -285,13 +285,11 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI !print *,"-I--i=",i,diffSOMO,diffDOMO!Isomo,Jsomo,ndiffSOMO,ndiffDOMO !print *,POPCNT(IEOR(diffSOMO,diffDOMO)), ndiffDOMO if(POPCNT(IEOR(diffSOMO,diffDOMO)) .LE. 1 .AND. ndiffDOMO .LT. 3) then - nconnectedI += 1 - connectedI(:,:,nconnectedI) = psi_configuration(:,:,i) select case(ndiffDOMO) case (0) ! SOMO -> VMO !print *,"obt SOMO -> VMO" - excitationTypes(nconnectedI) = 3 + extyp = 3 IJsomo = IEOR(Isomo, Jsomo) p = TRAILZ(AND(Isomo,IJsomo)) + 1 IJsomo = IBCLR(IJsomo,p-1) @@ -305,7 +303,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI if(nsomoJ .GT. nsomoalpha) then ! DOMO -> VMO !print *,"obt DOMO -> VMO" - excitationTypes(nconnectedI) = 2 + extyp = 2 p = TRAILZ(IEOR(Idomo,Jdomo)) + 1 Isomo = IEOR(Isomo, Jsomo) Isomo = IBCLR(Isomo,p-1) @@ -313,7 +311,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI else ! SOMO -> SOMO !print *,"obt SOMO -> SOMO" - excitationTypes(nconnectedI) = 1 + extyp = 1 q = TRAILZ(IEOR(Idomo,Jdomo)) + 1 Isomo = IEOR(Isomo, Jsomo) Isomo = IBCLR(Isomo,q-1) @@ -322,7 +320,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI case (2) ! DOMO -> SOMO !print *,"obt DOMO -> SOMO" - excitationTypes(nconnectedI) = 4 + extyp = 4 IJsomo = IEOR(Isomo, Jsomo) p = TRAILZ(AND(Jsomo,IJsomo)) + 1 IJsomo = IBCLR(IJsomo,p-1) @@ -330,10 +328,17 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI case default print *,"something went wront in get connectedI" end select - excitationIds(1,nconnectedI)=p - excitationIds(2,nconnectedI)=q - idxs_connectedI(nconnectedI)=i - !print *,"------ > output p,q in obt=",p,q + starti = psi_config_data(i,1) + endi = psi_config_data(i,2) +! do k=starti,endi + nconnectedI += 1 + connectedI(:,:,nconnectedI) = psi_configuration(:,:,i) + idxs_connectedI(nconnectedI)=starti + excitationIds(1,nconnectedI)=p + excitationIds(2,nconnectedI)=q + excitationTypes(nconnectedI) = extyp +! enddo + print *,"------ > output p,q in obt=",p,q endif end do diff --git a/src/determinants/configuration_CI_sigma_helpers.org b/src/determinants/configuration_CI_sigma_helpers.org index 133d3eee..180c5e14 100644 --- a/src/determinants/configuration_CI_sigma_helpers.org +++ b/src/determinants/configuration_CI_sigma_helpers.org @@ -286,7 +286,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI integer*8 :: diffDOMO integer :: ndiffSOMO integer :: ndiffDOMO - integer :: i,j,k,l,p,q,nsomoJ,nsomoalpha + integer :: i,j,k,l,p,q,nsomoJ,nsomoalpha,starti,endi,extyp nconnectedI = 0 @@ -310,13 +310,11 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI !print *,"-I--i=",i,diffSOMO,diffDOMO!Isomo,Jsomo,ndiffSOMO,ndiffDOMO !print *,POPCNT(IEOR(diffSOMO,diffDOMO)), ndiffDOMO if(POPCNT(IEOR(diffSOMO,diffDOMO)) .LE. 1 .AND. ndiffDOMO .LT. 3) then - nconnectedI += 1 - connectedI(:,:,nconnectedI) = psi_configuration(:,:,i) select case(ndiffDOMO) case (0) ! SOMO -> VMO !print *,"obt SOMO -> VMO" - excitationTypes(nconnectedI) = 3 + extyp = 3 IJsomo = IEOR(Isomo, Jsomo) p = TRAILZ(AND(Isomo,IJsomo)) + 1 IJsomo = IBCLR(IJsomo,p-1) @@ -330,7 +328,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI if(nsomoJ .GT. nsomoalpha) then ! DOMO -> VMO !print *,"obt DOMO -> VMO" - excitationTypes(nconnectedI) = 2 + extyp = 2 p = TRAILZ(IEOR(Idomo,Jdomo)) + 1 Isomo = IEOR(Isomo, Jsomo) Isomo = IBCLR(Isomo,p-1) @@ -338,7 +336,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI else ! SOMO -> SOMO !print *,"obt SOMO -> SOMO" - excitationTypes(nconnectedI) = 1 + extyp = 1 q = TRAILZ(IEOR(Idomo,Jdomo)) + 1 Isomo = IEOR(Isomo, Jsomo) Isomo = IBCLR(Isomo,q-1) @@ -347,7 +345,7 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI case (2) ! DOMO -> SOMO !print *,"obt DOMO -> SOMO" - excitationTypes(nconnectedI) = 4 + extyp = 4 IJsomo = IEOR(Isomo, Jsomo) p = TRAILZ(AND(Jsomo,IJsomo)) + 1 IJsomo = IBCLR(IJsomo,p-1) @@ -355,10 +353,17 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI case default print *,"something went wront in get connectedI" end select - excitationIds(1,nconnectedI)=p - excitationIds(2,nconnectedI)=q - idxs_connectedI(nconnectedI)=i - !print *,"------ > output p,q in obt=",p,q + starti = psi_config_data(i,1) + endi = psi_config_data(i,2) +! do k=starti,endi + nconnectedI += 1 + connectedI(:,:,nconnectedI) = psi_configuration(:,:,i) + idxs_connectedI(nconnectedI)=starti + excitationIds(1,nconnectedI)=p + excitationIds(2,nconnectedI)=q + excitationTypes(nconnectedI) = extyp +! enddo + print *,"------ > output p,q in obt=",p,q endif end do