9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-25 13:03:28 +01:00

Optimized obtain_I_foralpha.

This commit is contained in:
vijay gopal chilkuri 2021-03-12 11:28:56 +01:00
parent dd5b945c2a
commit cf50f11f73
2 changed files with 13 additions and 10 deletions

View File

@ -49,8 +49,9 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI
Isomo = Ialpha(1,1) Isomo = Ialpha(1,1)
Idomo = Ialpha(1,2) Idomo = Ialpha(1,2)
Nsomo_alpha = POPCNT(Isomo) Nsomo_alpha = POPCNT(Isomo)
end_index = min(N_configuration,cfg_seniority_index(min(elec_num,Nsomo_alpha+4))-1) end_index = min(N_configuration,cfg_seniority_index(Nsomo_alpha+4)-1)
end_index = N_configuration if(end_index .LT. 0) end_index= N_configuration
!end_index = N_configuration
p = 0 p = 0
@ -67,7 +68,9 @@ subroutine obtain_connected_I_foralpha(idxI, Ialpha, connectedI, idxs_connectedI
!call debug_spindet(Jdomo,1) !call debug_spindet(Jdomo,1)
diffSOMO = IEOR(Isomo,Jsomo) diffSOMO = IEOR(Isomo,Jsomo)
ndiffSOMO = POPCNT(diffSOMO) ndiffSOMO = POPCNT(diffSOMO)
if(ndiffSOMO .NE. 2 .AND. ndiffSOMO .NE. 0) cycle if(ndiffSOMO .NE. 2 .AND. ndiffSOMO .NE. 0) then
cycle
endif
diffDOMO = IEOR(Idomo,Jdomo) diffDOMO = IEOR(Idomo,Jdomo)
xordiffSOMODOMO = IEOR(diffSOMO,diffDOMO) xordiffSOMODOMO = IEOR(diffSOMO,diffDOMO)
ndiffDOMO = POPCNT(diffDOMO) ndiffDOMO = POPCNT(diffDOMO)

View File

@ -306,15 +306,15 @@ subroutine davidson_diag_csf_hjj(dets_in,u_in,H_jj,energies,dim_in,sze,sze_csf,N
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
if ((sze > 100000).and.distributed_davidson) then if ((sze > 100000).and.distributed_davidson) then
! call convertWFfromCSFtoDET(N_st_diag,U_csf(1,shift+1),U) !call convertWFfromCSFtoDET(N_st_diag,U_csf(1,shift+1),U)
! call convertWFfromCSFtoDET(N_st_diag,W_csf(1,shift+1),W) !call convertWFfromCSFtoDET(N_st_diag,W_csf(1,shift+1),W)
! call H_u_0_nstates_zmq (W,U,N_st_diag,sze) !call H_u_0_nstates_zmq (W,U,N_st_diag,sze)
! call convertWFfromDETtoCSF(N_st_diag,U,U_csf(1,shift+1)) !call convertWFfromDETtoCSF(N_st_diag,U,U_csf(1,shift+1))
! call convertWFfromDETtoCSF(N_st_diag,W,W_csf(1,shift+1)) !call convertWFfromDETtoCSF(N_st_diag,W,W_csf(1,shift+1))
! call calculate_sigma_vector_cfg_nst(W_csf(1,shift+1),U_csf(1,shift+1),N_st_diag,sze_csf,1,sze_csf,0,1) ! call calculate_sigma_vector_cfg_nst(W_csf(1,shift+1),U_csf(1,shift+1),N_st_diag,sze_csf,1,sze_csf,0,1)
! ! TODO : psi_det_size ? for psi_det ! ! TODO : psi_det_size ? for psi_det
do kk=1,N_st_diag do kk=1,N_st_diag
call calculate_sigma_vector_cfg_nst(W_csf(1,shift+kk),U_csf(1,shift+kk),1,sze_csf,1,sze_csf,0,1) call calculate_sigma_vector_cfg_nst_naive_store(W_csf(1,shift+kk),U_csf(1,shift+kk),1,sze_csf,1,sze_csf,0,1)
enddo enddo
else else
!call convertWFfromCSFtoDET(N_st_diag,U_csf(1,shift+1),U) !call convertWFfromCSFtoDET(N_st_diag,U_csf(1,shift+1),U)
@ -324,7 +324,7 @@ subroutine davidson_diag_csf_hjj(dets_in,u_in,H_jj,energies,dim_in,sze,sze_csf,N
!call convertWFfromDETtoCSF(N_st_diag,W,W_csf(1,shift+1)) !call convertWFfromDETtoCSF(N_st_diag,W,W_csf(1,shift+1))
! call calculate_sigma_vector_cfg_nst(W_csf(1,shift+1),U_csf(1,shift+1),N_st_diag,sze_csf,1,sze_csf,0,1) ! call calculate_sigma_vector_cfg_nst(W_csf(1,shift+1),U_csf(1,shift+1),N_st_diag,sze_csf,1,sze_csf,0,1)
do kk=1,N_st_diag do kk=1,N_st_diag
call calculate_sigma_vector_cfg_nst(W_csf(1,shift+kk),U_csf(1,shift+kk),1,sze_csf,1,sze_csf,0,1) call calculate_sigma_vector_cfg_nst_naive_store(W_csf(1,shift+kk),U_csf(1,shift+kk),1,sze_csf,1,sze_csf,0,1)
enddo enddo
endif endif
else else