9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-22 03:23:29 +01:00

trying to do stuffs in multi state rdms

This commit is contained in:
Emmanuel Giner LCT 2019-07-01 18:30:23 +02:00
parent 39da8cad5b
commit 7df2c2a20c
3 changed files with 10 additions and 8 deletions

View File

@ -27,7 +27,7 @@ subroutine routine
do ii = 1, n_act_orb do ii = 1, n_act_orb
i = list_act(ii) i = list_act(ii)
integral = get_two_e_integral(i,j,k,l,mo_integrals_map) integral = get_two_e_integral(i,j,k,l,mo_integrals_map)
accu(1) += act_two_rdm_spin_trace_mo(ii,jj,kk,ll) * integral accu(1) += state_av_act_two_rdm_spin_trace_mo(ii,jj,kk,ll) * integral
enddo enddo
enddo enddo
enddo enddo

View File

@ -14,7 +14,7 @@
! condition for alpha/beta spin ! condition for alpha/beta spin
ispin = 1 ispin = 1
all_states_act_two_rdm_alpha_alpha_mo = 0.D0 all_states_act_two_rdm_alpha_alpha_mo = 0.D0
call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_alpha_alpha_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1)) call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_alpha_alpha_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
END_PROVIDER END_PROVIDER
@ -31,7 +31,7 @@
! condition for alpha/beta spin ! condition for alpha/beta spin
ispin = 2 ispin = 2
all_states_act_two_rdm_beta_beta_mo = 0.d0 all_states_act_two_rdm_beta_beta_mo = 0.d0
call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_beta_beta_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1)) call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_beta_beta_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
END_PROVIDER END_PROVIDER
@ -53,7 +53,7 @@
ispin = 3 ispin = 3
print*,'ispin = ',ispin print*,'ispin = ',ispin
all_states_act_two_rdm_alpha_beta_mo = 0.d0 all_states_act_two_rdm_alpha_beta_mo = 0.d0
call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_alpha_beta_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1)) call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_alpha_beta_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
END_PROVIDER END_PROVIDER
@ -77,7 +77,7 @@
all_states_act_two_rdm_spin_trace_mo = 0.d0 all_states_act_two_rdm_spin_trace_mo = 0.d0
integer :: i integer :: i
call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_spin_trace_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1)) call orb_range_all_states_two_rdm_openmp(all_states_act_two_rdm_spin_trace_mo,n_act_orb,n_act_orb,list_act,list_act_reverse,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
END_PROVIDER END_PROVIDER

View File

@ -5,7 +5,7 @@
! routine that update the DIAGONAL PART of the alpha/beta two body rdm in a specific range of orbitals ! routine that update the DIAGONAL PART of the alpha/beta two body rdm in a specific range of orbitals
END_DOC END_DOC
implicit none implicit none
integer, intent(in) :: dim1 integer, intent(in) :: dim1,N_st
double precision, intent(inout) :: big_array(dim1,dim1,dim1,dim1,N_st) double precision, intent(inout) :: big_array(dim1,dim1,dim1,dim1,N_st)
integer(bit_kind), intent(in) :: det_1(N_int,2) integer(bit_kind), intent(in) :: det_1(N_int,2)
integer(bit_kind), intent(in) :: orb_bitmask(N_int) integer(bit_kind), intent(in) :: orb_bitmask(N_int)
@ -123,8 +123,8 @@
i2 = occ(j,2) i2 = occ(j,2)
h1 = list_orb_reverse(i1) h1 = list_orb_reverse(i1)
h2 = list_orb_reverse(i2) h2 = list_orb_reverse(i2)
big_array(h1,h2,h1,h2,istate) += 0.5d0 * (c_1 ) big_array(h1,h2,h1,h2,istate) += 0.5d0 * c_1(istate)
big_array(h2,h1,h2,h1,istate) += 0.5d0 * (c_1 ) big_array(h2,h1,h2,h1,istate) += 0.5d0 * c_1(istate)
enddo enddo
enddo enddo
do i = 1, n_occ_ab(1) do i = 1, n_occ_ab(1)
@ -334,6 +334,7 @@
p1 = exc(1,2,2) p1 = exc(1,2,2)
if(.not.is_integer_in_string(p1,orb_bitmask,N_int))return if(.not.is_integer_in_string(p1,orb_bitmask,N_int))return
p1 = list_orb_reverse(p1) p1 = list_orb_reverse(p1)
do istate = 1, N_st
do i = 1, n_occ_ab(1) do i = 1, n_occ_ab(1)
h2 = occ(i,1) h2 = occ(i,1)
if(.not.is_integer_in_string(h2,orb_bitmask,N_int))cycle if(.not.is_integer_in_string(h2,orb_bitmask,N_int))cycle
@ -341,6 +342,7 @@
big_array(h1,h2,p1,h2,istate) += 0.5d0 * c_1(istate) * phase big_array(h1,h2,p1,h2,istate) += 0.5d0 * c_1(istate) * phase
big_array(h2,h1,h2,p1,istate) += 0.5d0 * c_1(istate) * phase big_array(h2,h1,h2,p1,istate) += 0.5d0 * c_1(istate) * phase
enddo enddo
enddo
endif endif
endif endif
end end