mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-21 19:13:29 +01:00
renamed two rdm
This commit is contained in:
parent
6b282c042c
commit
570a710de5
@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
BEGIN_PROVIDER [double precision, act_two_rdm_ab_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, act_2_rdm_ab_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! act_two_rdm_ab_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/beta electrons
|
! act_2_rdm_ab_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
||||||
!
|
!
|
||||||
@ -10,7 +10,7 @@
|
|||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is alpha, electron 2 is beta
|
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is alpha, electron 2 is beta
|
||||||
!
|
!
|
||||||
! act_two_rdm_ab_mo(i,j,k,l,istate) = i:alpha, j:beta, j:alpha, l:beta
|
! act_2_rdm_ab_mo(i,j,k,l,istate) = i:alpha, j:beta, j:alpha, l:beta
|
||||||
!
|
!
|
||||||
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
||||||
END_DOC
|
END_DOC
|
||||||
@ -20,22 +20,22 @@
|
|||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,'Providing act_two_rdm_ab_mo '
|
print*,'Providing act_2_rdm_ab_mo '
|
||||||
ispin = 3
|
ispin = 3
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
act_two_rdm_ab_mo = 0.d0
|
act_2_rdm_ab_mo = 0.d0
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
call orb_range_two_rdm_openmp(act_two_rdm_ab_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_openmp(act_2_rdm_ab_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
|
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Wall time to provide act_two_rdm_ab_mo',wall_2 - wall_1
|
print*,'Wall time to provide act_2_rdm_ab_mo',wall_2 - wall_1
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, act_two_rdm_aa_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, act_2_rdm_aa_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! act_two_rdm_aa_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/beta electrons
|
! act_2_rdm_aa_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
||||||
!
|
!
|
||||||
@ -43,7 +43,7 @@
|
|||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is alpha, electron 2 is beta
|
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is alpha, electron 2 is beta
|
||||||
!
|
!
|
||||||
! act_two_rdm_aa_mo(i,j,k,l,istate) = i:alpha, j:beta, j:alpha, l:beta
|
! act_2_rdm_aa_mo(i,j,k,l,istate) = i:alpha, j:beta, j:alpha, l:beta
|
||||||
!
|
!
|
||||||
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
||||||
END_DOC
|
END_DOC
|
||||||
@ -53,22 +53,22 @@
|
|||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,'Providing act_two_rdm_aa_mo '
|
print*,'Providing act_2_rdm_aa_mo '
|
||||||
ispin = 1
|
ispin = 1
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
act_two_rdm_aa_mo = 0.d0
|
act_2_rdm_aa_mo = 0.d0
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
call orb_range_two_rdm_openmp(act_two_rdm_aa_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_openmp(act_2_rdm_aa_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
|
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Wall time to provide act_two_rdm_aa_mo',wall_2 - wall_1
|
print*,'Wall time to provide act_2_rdm_aa_mo',wall_2 - wall_1
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, act_two_rdm_bb_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, act_2_rdm_bb_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! act_two_rdm_bb_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
! act_2_rdm_bb_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
||||||
!
|
!
|
||||||
@ -76,7 +76,7 @@
|
|||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is beta, electron 2 is beta
|
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is beta, electron 2 is beta
|
||||||
!
|
!
|
||||||
! act_two_rdm_bb_mo(i,j,k,l,istate) = i:beta, j:beta, j:beta, l:beta
|
! act_2_rdm_bb_mo(i,j,k,l,istate) = i:beta, j:beta, j:beta, l:beta
|
||||||
!
|
!
|
||||||
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
||||||
END_DOC
|
END_DOC
|
||||||
@ -86,21 +86,21 @@
|
|||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,'Providing act_two_rdm_bb_mo '
|
print*,'Providing act_2_rdm_bb_mo '
|
||||||
ispin = 2
|
ispin = 2
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
act_two_rdm_bb_mo = 0.d0
|
act_2_rdm_bb_mo = 0.d0
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
call orb_range_two_rdm_openmp(act_two_rdm_bb_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_openmp(act_2_rdm_bb_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
|
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Wall time to provide act_two_rdm_bb_mo',wall_2 - wall_1
|
print*,'Wall time to provide act_2_rdm_bb_mo',wall_2 - wall_1
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, act_two_rdm_spin_trace_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, act_2_rdm_spin_trace_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! act_two_rdm_spin_trace_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
! act_2_rdm_spin_trace_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
||||||
!
|
!
|
||||||
@ -108,7 +108,7 @@
|
|||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is beta, electron 2 is beta
|
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is beta, electron 2 is beta
|
||||||
!
|
!
|
||||||
! act_two_rdm_spin_trace_mo(i,j,k,l,istate) = i:beta, j:beta, j:beta, l:beta
|
! act_2_rdm_spin_trace_mo(i,j,k,l,istate) = i:beta, j:beta, j:beta, l:beta
|
||||||
!
|
!
|
||||||
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
! Therefore you don't necessayr have symmetry between electron 1 and 2
|
||||||
END_DOC
|
END_DOC
|
||||||
@ -118,13 +118,13 @@
|
|||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,'Providing act_two_rdm_spin_trace_mo '
|
print*,'Providing act_2_rdm_spin_trace_mo '
|
||||||
ispin = 4
|
ispin = 4
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
act_two_rdm_spin_trace_mo = 0.d0
|
act_2_rdm_spin_trace_mo = 0.d0
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
call orb_range_two_rdm_openmp(act_two_rdm_spin_trace_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_openmp(act_2_rdm_spin_trace_mo,n_act_orb,n_act_orb,list_act,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
|
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Wall time to provide act_two_rdm_spin_trace_mo',wall_2 - wall_1
|
print*,'Wall time to provide act_2_rdm_spin_trace_mo',wall_2 - wall_1
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
@ -35,9 +35,9 @@ subroutine routine_active_only
|
|||||||
korb = 1
|
korb = 1
|
||||||
lorb = 1
|
lorb = 1
|
||||||
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
||||||
provide act_two_rdm_ab_mo act_two_rdm_aa_mo act_two_rdm_bb_mo act_two_rdm_spin_trace_mo
|
provide act_2_rdm_ab_mo act_2_rdm_aa_mo act_2_rdm_bb_mo act_2_rdm_spin_trace_mo
|
||||||
provide state_av_act_two_rdm_ab_mo state_av_act_two_rdm_aa_mo
|
provide state_av_act_2_rdm_ab_mo state_av_act_2_rdm_aa_mo
|
||||||
provide state_av_act_two_rdm_bb_mo state_av_act_two_rdm_spin_trace_mo
|
provide state_av_act_2_rdm_bb_mo state_av_act_2_rdm_spin_trace_mo
|
||||||
print*,'**************************'
|
print*,'**************************'
|
||||||
print*,'**************************'
|
print*,'**************************'
|
||||||
do istate = 1, N_states
|
do istate = 1, N_states
|
||||||
@ -55,10 +55,10 @@ subroutine routine_active_only
|
|||||||
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
||||||
|
|
||||||
|
|
||||||
rdmab = act_two_rdm_ab_mo(l,k,j,i,istate)
|
rdmab = act_2_rdm_ab_mo(l,k,j,i,istate)
|
||||||
rdmaa = act_two_rdm_aa_mo(l,k,j,i,istate)
|
rdmaa = act_2_rdm_aa_mo(l,k,j,i,istate)
|
||||||
rdmbb = act_two_rdm_bb_mo(l,k,j,i,istate)
|
rdmbb = act_2_rdm_bb_mo(l,k,j,i,istate)
|
||||||
rdmtot = act_two_rdm_spin_trace_mo(l,k,j,i,istate)
|
rdmtot = act_2_rdm_spin_trace_mo(l,k,j,i,istate)
|
||||||
|
|
||||||
|
|
||||||
wee_ab(istate) += vijkl * rdmab
|
wee_ab(istate) += vijkl * rdmab
|
||||||
@ -103,10 +103,10 @@ subroutine routine_active_only
|
|||||||
|
|
||||||
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
||||||
|
|
||||||
rdm_aa_st_av = state_av_act_two_rdm_aa_mo(l,k,j,i)
|
rdm_aa_st_av = state_av_act_2_rdm_aa_mo(l,k,j,i)
|
||||||
rdm_bb_st_av = state_av_act_two_rdm_bb_mo(l,k,j,i)
|
rdm_bb_st_av = state_av_act_2_rdm_bb_mo(l,k,j,i)
|
||||||
rdm_ab_st_av = state_av_act_two_rdm_ab_mo(l,k,j,i)
|
rdm_ab_st_av = state_av_act_2_rdm_ab_mo(l,k,j,i)
|
||||||
rdm_tot_st_av = state_av_act_two_rdm_spin_trace_mo(l,k,j,i)
|
rdm_tot_st_av = state_av_act_2_rdm_spin_trace_mo(l,k,j,i)
|
||||||
|
|
||||||
wee_aa_st_av += vijkl * rdm_aa_st_av
|
wee_aa_st_av += vijkl * rdm_aa_st_av
|
||||||
wee_bb_st_av += vijkl * rdm_bb_st_av
|
wee_bb_st_av += vijkl * rdm_bb_st_av
|
||||||
@ -169,7 +169,7 @@ subroutine routine_full_mos
|
|||||||
korb = 1
|
korb = 1
|
||||||
lorb = 1
|
lorb = 1
|
||||||
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
||||||
provide full_occ_two_rdm_ab_mo full_occ_two_rdm_aa_mo full_occ_two_rdm_bb_mo full_occ_two_rdm_spin_trace_mo
|
provide full_occ_2_rdm_ab_mo full_occ_2_rdm_aa_mo full_occ_2_rdm_bb_mo full_occ_2_rdm_spin_trace_mo
|
||||||
print*,'**************************'
|
print*,'**************************'
|
||||||
print*,'**************************'
|
print*,'**************************'
|
||||||
do istate = 1, N_states
|
do istate = 1, N_states
|
||||||
@ -183,10 +183,10 @@ subroutine routine_full_mos
|
|||||||
lorb = list_core_inact_act(l)
|
lorb = list_core_inact_act(l)
|
||||||
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
||||||
|
|
||||||
rdmaa = full_occ_two_rdm_aa_mo(l,k,j,i,istate)
|
rdmaa = full_occ_2_rdm_aa_mo(l,k,j,i,istate)
|
||||||
rdmab = full_occ_two_rdm_ab_mo(l,k,j,i,istate)
|
rdmab = full_occ_2_rdm_ab_mo(l,k,j,i,istate)
|
||||||
rdmbb = full_occ_two_rdm_bb_mo(l,k,j,i,istate)
|
rdmbb = full_occ_2_rdm_bb_mo(l,k,j,i,istate)
|
||||||
rdmtot = full_occ_two_rdm_spin_trace_mo(l,k,j,i,istate)
|
rdmtot = full_occ_2_rdm_spin_trace_mo(l,k,j,i,istate)
|
||||||
|
|
||||||
wee_ab(istate) += vijkl * rdmab
|
wee_ab(istate) += vijkl * rdmab
|
||||||
wee_aa(istate) += vijkl * rdmaa
|
wee_aa(istate) += vijkl * rdmaa
|
||||||
@ -227,10 +227,10 @@ subroutine routine_full_mos
|
|||||||
lorb = list_core_inact_act(l)
|
lorb = list_core_inact_act(l)
|
||||||
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
vijkl = get_two_e_integral(lorb,korb,jorb,iorb,mo_integrals_map)
|
||||||
|
|
||||||
rdm_aa_st_av = state_av_full_occ_two_rdm_aa_mo(l,k,j,i)
|
rdm_aa_st_av = state_av_full_occ_2_rdm_aa_mo(l,k,j,i)
|
||||||
rdm_bb_st_av = state_av_full_occ_two_rdm_bb_mo(l,k,j,i)
|
rdm_bb_st_av = state_av_full_occ_2_rdm_bb_mo(l,k,j,i)
|
||||||
rdm_ab_st_av = state_av_full_occ_two_rdm_ab_mo(l,k,j,i)
|
rdm_ab_st_av = state_av_full_occ_2_rdm_ab_mo(l,k,j,i)
|
||||||
rdm_tot_st_av = state_av_full_occ_two_rdm_spin_trace_mo(l,k,j,i)
|
rdm_tot_st_av = state_av_full_occ_2_rdm_spin_trace_mo(l,k,j,i)
|
||||||
|
|
||||||
wee_aa_st_av += vijkl * rdm_aa_st_av
|
wee_aa_st_av += vijkl * rdm_aa_st_av
|
||||||
wee_bb_st_av += vijkl * rdm_bb_st_av
|
wee_bb_st_av += vijkl * rdm_bb_st_av
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
BEGIN_PROVIDER [double precision, full_occ_two_rdm_ab_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, full_occ_2_rdm_ab_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
full_occ_two_rdm_ab_mo = 0.d0
|
full_occ_2_rdm_ab_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! full_occ_two_rdm_ab_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/beta electrons
|
! full_occ_2_rdm_ab_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
||||||
!
|
!
|
||||||
@ -14,13 +14,13 @@
|
|||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is ALPHA, electron 2 is BETA
|
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is ALPHA, electron 2 is BETA
|
||||||
!
|
!
|
||||||
! act_two_rdm_ab_mo(i,j,k,l,istate) = i:alpha, j:beta, j:alpha, l:beta
|
! act_2_rdm_ab_mo(i,j,k,l,istate) = i:alpha, j:beta, j:alpha, l:beta
|
||||||
!
|
!
|
||||||
! Therefore you don't necessary have symmetry between electron 1 and 2
|
! Therefore you don't necessary have symmetry between electron 1 and 2
|
||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! IF "no_core_density" then all elements involving at least one CORE MO is set to zero
|
! !!!!! WARNING !!!!! IF "no_core_density" then all elements involving at least one CORE MO is set to zero
|
||||||
END_DOC
|
END_DOC
|
||||||
full_occ_two_rdm_ab_mo = 0.d0
|
full_occ_2_rdm_ab_mo = 0.d0
|
||||||
do istate = 1, N_states
|
do istate = 1, N_states
|
||||||
!! PURE ACTIVE PART ALPHA-BETA
|
!! PURE ACTIVE PART ALPHA-BETA
|
||||||
!!
|
!!
|
||||||
@ -33,8 +33,8 @@
|
|||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_ab_mo(lorb,korb,jorb,iorb,istate) = &
|
full_occ_2_rdm_ab_mo(lorb,korb,jorb,iorb,istate) = &
|
||||||
act_two_rdm_ab_mo(l,k,j,i,istate)
|
act_2_rdm_ab_mo(l,k,j,i,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -48,7 +48,7 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_ab_mo(korb,jorb,korb,iorb,istate) = one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_ab_mo(korb,jorb,korb,iorb,istate) = one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -62,7 +62,7 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_ab_mo(jorb,korb,iorb,korb,istate) = one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_ab_mo(jorb,korb,iorb,korb,istate) = one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -74,7 +74,7 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_ab_mo(korb,jorb,korb,jorb,istate) = 1.D0
|
full_occ_2_rdm_ab_mo(korb,jorb,korb,jorb,istate) = 1.D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -91,7 +91,7 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_ab_mo(korb,jorb,korb,iorb,istate) = one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_ab_mo(korb,jorb,korb,iorb,istate) = one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -105,7 +105,7 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_ab_mo(jorb,korb,iorb,korb,istate) = one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_ab_mo(jorb,korb,iorb,korb,istate) = one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -117,7 +117,7 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_ab_mo(korb,jorb,korb,jorb,istate) = 1.D0
|
full_occ_2_rdm_ab_mo(korb,jorb,korb,jorb,istate) = 1.D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -126,12 +126,12 @@
|
|||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, full_occ_two_rdm_aa_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, full_occ_2_rdm_aa_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
full_occ_two_rdm_aa_mo = 0.d0
|
full_occ_2_rdm_aa_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! full_occ_two_rdm_aa_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/alpha electrons
|
! full_occ_2_rdm_aa_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of alpha/alpha electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \alpha} a_{l \alpha} a_{k \alpha} |Psi>
|
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \alpha} a_{l \alpha} a_{k \alpha} |Psi>
|
||||||
!
|
!
|
||||||
@ -153,8 +153,8 @@
|
|||||||
korb = list_act(k)
|
korb = list_act(k)
|
||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
full_occ_two_rdm_aa_mo(lorb,korb,jorb,iorb,istate) = &
|
full_occ_2_rdm_aa_mo(lorb,korb,jorb,iorb,istate) = &
|
||||||
act_two_rdm_aa_mo(l,k,j,i,istate)
|
act_2_rdm_aa_mo(l,k,j,i,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -168,11 +168,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_aa_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_aa_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -182,8 +182,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_aa_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_aa_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -199,11 +199,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_aa_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_aa_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_aa_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -213,8 +213,8 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_aa_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_aa_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_aa_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -222,12 +222,12 @@
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, full_occ_two_rdm_bb_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, full_occ_2_rdm_bb_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
full_occ_two_rdm_bb_mo = 0.d0
|
full_occ_2_rdm_bb_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! full_occ_two_rdm_bb_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
! full_occ_2_rdm_bb_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
||||||
!
|
!
|
||||||
@ -249,8 +249,8 @@
|
|||||||
korb = list_act(k)
|
korb = list_act(k)
|
||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
full_occ_two_rdm_bb_mo(lorb,korb,jorb,iorb,istate) = &
|
full_occ_2_rdm_bb_mo(lorb,korb,jorb,iorb,istate) = &
|
||||||
act_two_rdm_bb_mo(l,k,j,i,istate)
|
act_2_rdm_bb_mo(l,k,j,i,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -264,11 +264,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_bb_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_bb_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -278,8 +278,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_bb_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_bb_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -295,11 +295,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_bb_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_bb_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_bb_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -309,8 +309,8 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_bb_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_bb_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_bb_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -318,12 +318,12 @@
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, full_occ_two_rdm_spin_trace_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
BEGIN_PROVIDER [double precision, full_occ_2_rdm_spin_trace_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,N_states)]
|
||||||
implicit none
|
implicit none
|
||||||
full_occ_two_rdm_spin_trace_mo = 0.d0
|
full_occ_2_rdm_spin_trace_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
integer :: i,j,k,l,iorb,jorb,korb,lorb,istate
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! full_occ_two_rdm_bb_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
! full_occ_2_rdm_bb_mo(i,j,k,l,istate) = STATE SPECIFIC physicist notation for 2RDM of beta/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
||||||
!
|
!
|
||||||
@ -346,8 +346,8 @@
|
|||||||
korb = list_act(k)
|
korb = list_act(k)
|
||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
full_occ_two_rdm_spin_trace_mo(lorb,korb,jorb,iorb,istate) += &
|
full_occ_2_rdm_spin_trace_mo(lorb,korb,jorb,iorb,istate) += &
|
||||||
act_two_rdm_spin_trace_mo(l,k,j,i,istate)
|
act_2_rdm_spin_trace_mo(l,k,j,i,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -364,11 +364,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -377,8 +377,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
if (.not.no_core_density)then
|
if (.not.no_core_density)then
|
||||||
@ -390,11 +390,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -403,8 +403,8 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -420,11 +420,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -433,8 +433,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
if (.not.no_core_density)then
|
if (.not.no_core_density)then
|
||||||
@ -446,11 +446,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb,istate) += -0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -459,8 +459,8 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5d0
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb,istate) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -476,14 +476,14 @@
|
|||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! ALPHA INACTIVE - BETA ACTIVE
|
! ALPHA INACTIVE - BETA ACTIVE
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
! beta alph beta alph
|
! beta alph beta alph
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
! BETA INACTIVE - ALPHA ACTIVE
|
! BETA INACTIVE - ALPHA ACTIVE
|
||||||
! beta alph beta alpha
|
! beta alph beta alpha
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5d0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -493,8 +493,8 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5D0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5D0
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,jorb,korb,istate) += 0.5D0
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,jorb,korb,istate) += 0.5D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -510,14 +510,14 @@
|
|||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
!! BETA ACTIVE - ALPHA CORE
|
!! BETA ACTIVE - ALPHA CORE
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5D0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5D0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
! beta alph beta alph
|
! beta alph beta alph
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5D0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5D0 * one_e_dm_mo_beta(jorb,iorb,istate)
|
||||||
!! ALPHA ACTIVE - BETA CORE
|
!! ALPHA ACTIVE - BETA CORE
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5D0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb,istate) += 0.5D0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
! beta alph beta alph
|
! beta alph beta alph
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5D0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb,istate) += 0.5D0 * one_e_dm_mo_alpha(jorb,iorb,istate)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -527,8 +527,8 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5D0
|
full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb,istate) += 0.5D0
|
||||||
full_occ_two_rdm_spin_trace_mo(jorb,korb,jorb,korb,istate) += 0.5D0
|
full_occ_2_rdm_spin_trace_mo(jorb,korb,jorb,korb,istate) += 0.5D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_act_two_rdm_aa_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_act_2_rdm_aa_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
double precision, allocatable :: state_weights(:)
|
double precision, allocatable :: state_weights(:)
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_act_two_rdm_aa_mo(i,j,k,l) = state average physicist two-body rdm restricted to the ACTIVE indices for alpha-alpha electron pairs
|
! state_av_act_2_rdm_aa_mo(i,j,k,l) = state average physicist two-body rdm restricted to the ACTIVE indices for alpha-alpha electron pairs
|
||||||
! = <Psi| a^{\dagger}_i a^{\dagger}_j a_l a_k |Psi>
|
! = <Psi| a^{\dagger}_i a^{\dagger}_j a_l a_k |Psi>
|
||||||
END_DOC
|
END_DOC
|
||||||
allocate(state_weights(N_states))
|
allocate(state_weights(N_states))
|
||||||
@ -11,20 +11,20 @@
|
|||||||
integer :: ispin
|
integer :: ispin
|
||||||
! condition for alpha/beta spin
|
! condition for alpha/beta spin
|
||||||
ispin = 1
|
ispin = 1
|
||||||
state_av_act_two_rdm_aa_mo = 0.D0
|
state_av_act_2_rdm_aa_mo = 0.D0
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
double precision :: wall_1, wall_2
|
double precision :: wall_1, wall_2
|
||||||
call orb_range_two_rdm_state_av_openmp(state_av_act_two_rdm_aa_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_state_av_openmp(state_av_act_2_rdm_aa_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Wall time to provide state_av_act_two_rdm_aa_mo',wall_2 - wall_1
|
print*,'Wall time to provide state_av_act_2_rdm_aa_mo',wall_2 - wall_1
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_act_two_rdm_bb_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_act_2_rdm_bb_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
double precision, allocatable :: state_weights(:)
|
double precision, allocatable :: state_weights(:)
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_act_two_rdm_bb_mo(i,j,k,l) = state average physicist two-body rdm restricted to the ACTIVE indices for beta-beta electron pairs
|
! state_av_act_2_rdm_bb_mo(i,j,k,l) = state average physicist two-body rdm restricted to the ACTIVE indices for beta-beta electron pairs
|
||||||
! = <Psi| a^{\dagger}_i a^{\dagger}_j a_l a_k |Psi>
|
! = <Psi| a^{\dagger}_i a^{\dagger}_j a_l a_k |Psi>
|
||||||
END_DOC
|
END_DOC
|
||||||
allocate(state_weights(N_states))
|
allocate(state_weights(N_states))
|
||||||
@ -32,20 +32,20 @@
|
|||||||
integer :: ispin
|
integer :: ispin
|
||||||
! condition for alpha/beta spin
|
! condition for alpha/beta spin
|
||||||
ispin = 2
|
ispin = 2
|
||||||
state_av_act_two_rdm_bb_mo = 0.d0
|
state_av_act_2_rdm_bb_mo = 0.d0
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
double precision :: wall_1, wall_2
|
double precision :: wall_1, wall_2
|
||||||
call orb_range_two_rdm_state_av_openmp(state_av_act_two_rdm_bb_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_state_av_openmp(state_av_act_2_rdm_bb_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Wall time to provide state_av_act_two_rdm_bb_mo',wall_2 - wall_1
|
print*,'Wall time to provide state_av_act_2_rdm_bb_mo',wall_2 - wall_1
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_act_two_rdm_ab_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_act_2_rdm_ab_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
double precision, allocatable :: state_weights(:)
|
double precision, allocatable :: state_weights(:)
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_act_two_rdm_ab_mo(i,j,k,l) = state average physicist two-body rdm restricted to the ACTIVE indices for alpha-beta electron pairs
|
! state_av_act_2_rdm_ab_mo(i,j,k,l) = state average physicist two-body rdm restricted to the ACTIVE indices for alpha-beta electron pairs
|
||||||
! = <Psi| a^{\dagger}_{i,alpha} a^{\dagger}_{j,beta} a_{l,beta} a_{k,alpha} |Psi>
|
! = <Psi| a^{\dagger}_{i,alpha} a^{\dagger}_{j,beta} a_{l,beta} a_{k,alpha} |Psi>
|
||||||
END_DOC
|
END_DOC
|
||||||
allocate(state_weights(N_states))
|
allocate(state_weights(N_states))
|
||||||
@ -55,26 +55,26 @@
|
|||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,''
|
print*,''
|
||||||
print*,'providint state_av_act_two_rdm_ab_mo '
|
print*,'providint state_av_act_2_rdm_ab_mo '
|
||||||
ispin = 3
|
ispin = 3
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
state_av_act_two_rdm_ab_mo = 0.d0
|
state_av_act_2_rdm_ab_mo = 0.d0
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
double precision :: wall_1, wall_2
|
double precision :: wall_1, wall_2
|
||||||
call orb_range_two_rdm_state_av_openmp(state_av_act_two_rdm_ab_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_state_av_openmp(state_av_act_2_rdm_ab_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Wall time to provide state_av_act_two_rdm_ab_mo',wall_2 - wall_1
|
print*,'Wall time to provide state_av_act_2_rdm_ab_mo',wall_2 - wall_1
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_act_two_rdm_spin_trace_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_act_2_rdm_spin_trace_mo, (n_act_orb,n_act_orb,n_act_orb,n_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_act_two_rdm_spin_trace_mo(i,j,k,l) = state average physicist spin trace two-body rdm restricted to the ACTIVE indices
|
! state_av_act_2_rdm_spin_trace_mo(i,j,k,l) = state average physicist spin trace two-body rdm restricted to the ACTIVE indices
|
||||||
! The active part of the two-electron energy can be computed as:
|
! The active part of the two-electron energy can be computed as:
|
||||||
!
|
!
|
||||||
! \sum_{i,j,k,l = 1, n_act_orb} state_av_act_two_rdm_spin_trace_mo(i,j,k,l) * < ii jj | kk ll >
|
! \sum_{i,j,k,l = 1, n_act_orb} state_av_act_2_rdm_spin_trace_mo(i,j,k,l) * < ii jj | kk ll >
|
||||||
!
|
!
|
||||||
! with ii = list_act(i), jj = list_act(j), kk = list_act(k), ll = list_act(l)
|
! with ii = list_act(i), jj = list_act(j), kk = list_act(k), ll = list_act(l)
|
||||||
END_DOC
|
END_DOC
|
||||||
@ -84,14 +84,14 @@
|
|||||||
integer :: ispin
|
integer :: ispin
|
||||||
! condition for alpha/beta spin
|
! condition for alpha/beta spin
|
||||||
ispin = 4
|
ispin = 4
|
||||||
state_av_act_two_rdm_spin_trace_mo = 0.d0
|
state_av_act_2_rdm_spin_trace_mo = 0.d0
|
||||||
integer :: i
|
integer :: i
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
double precision :: wall_1, wall_2
|
double precision :: wall_1, wall_2
|
||||||
print*,'providing state_av_act_two_rdm_spin_trace_mo '
|
print*,'providing state_av_act_2_rdm_spin_trace_mo '
|
||||||
call orb_range_two_rdm_state_av_openmp(state_av_act_two_rdm_spin_trace_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
call orb_range_2_rdm_state_av_openmp(state_av_act_2_rdm_spin_trace_mo,n_act_orb,n_act_orb,list_act,state_weights,ispin,psi_coef,size(psi_coef,2),size(psi_coef,1))
|
||||||
|
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
print*,'Time to provide state_av_act_two_rdm_spin_trace_mo',wall_2 - wall_1
|
print*,'Time to provide state_av_act_2_rdm_spin_trace_mo',wall_2 - wall_1
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_full_occ_two_rdm_ab_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_full_occ_2_rdm_ab_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
state_av_full_occ_two_rdm_ab_mo = 0.d0
|
state_av_full_occ_2_rdm_ab_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_full_occ_two_rdm_ab_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of alpha/beta electrons
|
! state_av_full_occ_2_rdm_ab_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of alpha/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \beta} a_{l \beta} a_{k \alpha} |Psi>
|
||||||
!
|
!
|
||||||
@ -14,13 +14,13 @@
|
|||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is ALPHA, electron 2 is BETA
|
! !!!!! WARNING !!!!! For efficiency reasons, electron 1 is ALPHA, electron 2 is BETA
|
||||||
!
|
!
|
||||||
! state_av_full_occ_two_rdm_ab_mo(i,j,k,l) = i:alpha, j:beta, j:alpha, l:beta
|
! state_av_full_occ_2_rdm_ab_mo(i,j,k,l) = i:alpha, j:beta, j:alpha, l:beta
|
||||||
!
|
!
|
||||||
! Therefore you don't necessary have symmetry between electron 1 and 2
|
! Therefore you don't necessary have symmetry between electron 1 and 2
|
||||||
!
|
!
|
||||||
! !!!!! WARNING !!!!! IF "no_core_density" then all elements involving at least one CORE MO is set to zero
|
! !!!!! WARNING !!!!! IF "no_core_density" then all elements involving at least one CORE MO is set to zero
|
||||||
END_DOC
|
END_DOC
|
||||||
state_av_full_occ_two_rdm_ab_mo = 0.d0
|
state_av_full_occ_2_rdm_ab_mo = 0.d0
|
||||||
do i = 1, n_act_orb
|
do i = 1, n_act_orb
|
||||||
iorb = list_act(i)
|
iorb = list_act(i)
|
||||||
do j = 1, n_act_orb
|
do j = 1, n_act_orb
|
||||||
@ -30,8 +30,8 @@
|
|||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_ab_mo(lorb,korb,jorb,iorb) = &
|
state_av_full_occ_2_rdm_ab_mo(lorb,korb,jorb,iorb) = &
|
||||||
state_av_act_two_rdm_ab_mo(l,k,j,i)
|
state_av_act_2_rdm_ab_mo(l,k,j,i)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -45,7 +45,7 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_ab_mo(korb,jorb,korb,iorb) = one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_ab_mo(korb,jorb,korb,iorb) = one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -59,7 +59,7 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_ab_mo(jorb,korb,iorb,korb) = one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_ab_mo(jorb,korb,iorb,korb) = one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -71,7 +71,7 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_ab_mo(korb,jorb,korb,jorb) = 1.D0
|
state_av_full_occ_2_rdm_ab_mo(korb,jorb,korb,jorb) = 1.D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -88,7 +88,7 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_ab_mo(korb,jorb,korb,iorb) = one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_ab_mo(korb,jorb,korb,iorb) = one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -102,7 +102,7 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_ab_mo(jorb,korb,iorb,korb) = one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_ab_mo(jorb,korb,iorb,korb) = one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -114,7 +114,7 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_ab_mo(korb,jorb,korb,jorb) = 1.D0
|
state_av_full_occ_2_rdm_ab_mo(korb,jorb,korb,jorb) = 1.D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -122,12 +122,12 @@
|
|||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_full_occ_two_rdm_aa_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_full_occ_2_rdm_aa_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
state_av_full_occ_two_rdm_aa_mo = 0.d0
|
state_av_full_occ_2_rdm_aa_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_full_occ_two_rdm_aa_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of alpha/alpha electrons
|
! state_av_full_occ_2_rdm_aa_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of alpha/alpha electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \alpha} a_{l \alpha} a_{k \alpha} |Psi>
|
! <Psi| a^{\dagger}_{i \alpha} a^{\dagger}_{j \alpha} a_{l \alpha} a_{k \alpha} |Psi>
|
||||||
!
|
!
|
||||||
@ -148,8 +148,8 @@
|
|||||||
korb = list_act(k)
|
korb = list_act(k)
|
||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
state_av_full_occ_two_rdm_aa_mo(lorb,korb,jorb,iorb) = &
|
state_av_full_occ_2_rdm_aa_mo(lorb,korb,jorb,iorb) = &
|
||||||
state_av_act_two_rdm_aa_mo(l,k,j,i)
|
state_av_act_2_rdm_aa_mo(l,k,j,i)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -163,11 +163,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_aa_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_aa_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -177,8 +177,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -194,11 +194,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_aa_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_aa_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -208,20 +208,20 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_aa_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_aa_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_full_occ_two_rdm_bb_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_full_occ_2_rdm_bb_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
state_av_full_occ_two_rdm_bb_mo = 0.d0
|
state_av_full_occ_2_rdm_bb_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_full_occ_two_rdm_bb_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of beta/beta electrons
|
! state_av_full_occ_2_rdm_bb_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of beta/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
||||||
!
|
!
|
||||||
@ -242,8 +242,8 @@
|
|||||||
korb = list_act(k)
|
korb = list_act(k)
|
||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
state_av_full_occ_two_rdm_bb_mo(lorb,korb,jorb,iorb) = &
|
state_av_full_occ_2_rdm_bb_mo(lorb,korb,jorb,iorb) = &
|
||||||
state_av_act_two_rdm_bb_mo(l,k,j,i)
|
state_av_act_2_rdm_bb_mo(l,k,j,i)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -257,11 +257,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_bb_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_bb_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -271,8 +271,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -288,11 +288,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_bb_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_bb_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -302,20 +302,20 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_bb_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_bb_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, state_av_full_occ_two_rdm_spin_trace_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
BEGIN_PROVIDER [double precision, state_av_full_occ_2_rdm_spin_trace_mo, (n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb,n_core_inact_act_orb)]
|
||||||
implicit none
|
implicit none
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo = 0.d0
|
state_av_full_occ_2_rdm_spin_trace_mo = 0.d0
|
||||||
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
integer :: i,j,k,l,iorb,jorb,korb,lorb
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! state_av_full_occ_two_rdm_bb_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of beta/beta electrons
|
! state_av_full_occ_2_rdm_bb_mo(i,j,k,l) = STATE AVERAGE physicist notation for 2RDM of beta/beta electrons
|
||||||
!
|
!
|
||||||
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
! <Psi| a^{\dagger}_{i \beta} a^{\dagger}_{j \beta} a_{l \beta} a_{k \beta} |Psi>
|
||||||
!
|
!
|
||||||
@ -337,8 +337,8 @@
|
|||||||
korb = list_act(k)
|
korb = list_act(k)
|
||||||
do l = 1, n_act_orb
|
do l = 1, n_act_orb
|
||||||
lorb = list_act(l)
|
lorb = list_act(l)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(lorb,korb,jorb,iorb) += &
|
state_av_full_occ_2_rdm_spin_trace_mo(lorb,korb,jorb,iorb) += &
|
||||||
state_av_act_two_rdm_spin_trace_mo(l,k,j,i)
|
state_av_act_2_rdm_spin_trace_mo(l,k,j,i)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -355,11 +355,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -368,8 +368,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
if (.not.no_core_density)then
|
if (.not.no_core_density)then
|
||||||
@ -381,11 +381,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -394,8 +394,8 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -411,11 +411,11 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -424,8 +424,8 @@
|
|||||||
jorb = list_inact(j)
|
jorb = list_inact(j)
|
||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
if (.not.no_core_density)then
|
if (.not.no_core_density)then
|
||||||
@ -437,11 +437,11 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! 1 2 1 2 : DIRECT TERM
|
! 1 2 1 2 : DIRECT TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
! 1 2 1 2 : EXCHANGE TERM
|
! 1 2 1 2 : EXCHANGE TERM
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,korb,iorb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,iorb,korb) += -0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -450,8 +450,8 @@
|
|||||||
jorb = list_core(j)
|
jorb = list_core(j)
|
||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5d0
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,jorb,korb) -= 0.5d0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -467,14 +467,14 @@
|
|||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! ALPHA INACTIVE - BETA ACTIVE
|
! ALPHA INACTIVE - BETA ACTIVE
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
! beta alph beta alph
|
! beta alph beta alph
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
! BETA INACTIVE - ALPHA ACTIVE
|
! BETA INACTIVE - ALPHA ACTIVE
|
||||||
! beta alph beta alpha
|
! beta alph beta alpha
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5d0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -484,8 +484,8 @@
|
|||||||
do k = 1, n_inact_orb
|
do k = 1, n_inact_orb
|
||||||
korb = list_inact(k)
|
korb = list_inact(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5D0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5D0
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,jorb,korb) += 0.5D0
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,jorb,korb) += 0.5D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -501,14 +501,14 @@
|
|||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
!! BETA ACTIVE - ALPHA CORE
|
!! BETA ACTIVE - ALPHA CORE
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5D0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5D0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
! beta alph beta alph
|
! beta alph beta alph
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5D0 * one_e_dm_mo_beta_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5D0 * one_e_dm_mo_beta_average(jorb,iorb)
|
||||||
!! ALPHA ACTIVE - BETA CORE
|
!! ALPHA ACTIVE - BETA CORE
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5D0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,iorb,korb) += 0.5D0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
! beta alph beta alph
|
! beta alph beta alph
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5D0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,iorb) += 0.5D0 * one_e_dm_mo_alpha_average(jorb,iorb)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -518,8 +518,8 @@
|
|||||||
do k = 1, n_core_orb
|
do k = 1, n_core_orb
|
||||||
korb = list_core(k)
|
korb = list_core(k)
|
||||||
! alph beta alph beta
|
! alph beta alph beta
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5D0
|
state_av_full_occ_2_rdm_spin_trace_mo(korb,jorb,korb,jorb) += 0.5D0
|
||||||
state_av_full_occ_two_rdm_spin_trace_mo(jorb,korb,jorb,korb) += 0.5D0
|
state_av_full_occ_2_rdm_spin_trace_mo(jorb,korb,jorb,korb) += 0.5D0
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine orb_range_all_states_two_rdm(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_0,N_st,sze)
|
subroutine orb_range_all_states_2_rdm(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_0,N_st,sze)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -31,7 +31,7 @@ subroutine orb_range_all_states_two_rdm(big_array,dim1,norb,list_orb,list_orb_re
|
|||||||
size(u_t, 1), &
|
size(u_t, 1), &
|
||||||
N_det, N_st)
|
N_det, N_st)
|
||||||
|
|
||||||
call orb_range_all_states_two_rdm_work(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,1,N_det,0,1)
|
call orb_range_all_states_2_rdm_work(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,1,N_det,0,1)
|
||||||
deallocate(u_t)
|
deallocate(u_t)
|
||||||
|
|
||||||
do k=1,N_st
|
do k=1,N_st
|
||||||
@ -40,7 +40,7 @@ subroutine orb_range_all_states_two_rdm(big_array,dim1,norb,list_orb,list_orb_re
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_all_states_two_rdm_work(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
subroutine orb_range_all_states_2_rdm_work(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -60,15 +60,15 @@ subroutine orb_range_all_states_two_rdm_work(big_array,dim1,norb,list_orb,list_o
|
|||||||
|
|
||||||
select case (N_int)
|
select case (N_int)
|
||||||
case (1)
|
case (1)
|
||||||
call orb_range_all_states_two_rdm_work_1(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_all_states_2_rdm_work_1(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (2)
|
case (2)
|
||||||
call orb_range_all_states_two_rdm_work_2(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_all_states_2_rdm_work_2(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (3)
|
case (3)
|
||||||
call orb_range_all_states_two_rdm_work_3(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_all_states_2_rdm_work_3(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (4)
|
case (4)
|
||||||
call orb_range_all_states_two_rdm_work_4(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_all_states_2_rdm_work_4(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case default
|
case default
|
||||||
call orb_range_all_states_two_rdm_work_N_int(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_all_states_2_rdm_work_N_int(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
end select
|
end select
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
BEGIN_TEMPLATE
|
BEGIN_TEMPLATE
|
||||||
subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
subroutine orb_range_all_states_2_rdm_work_$N_int(big_array,dim1,norb,list_orb,list_orb_reverse,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -129,7 +129,7 @@ subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb
|
|||||||
else if(ispin == 4)then
|
else if(ispin == 4)then
|
||||||
spin_trace = .True.
|
spin_trace = .True.
|
||||||
else
|
else
|
||||||
print*,'Wrong parameter for ispin in general_two_rdm_dm_nstates_work'
|
print*,'Wrong parameter for ispin in general_2_rdm_dm_nstates_work'
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
stop
|
stop
|
||||||
endif
|
endif
|
||||||
@ -249,7 +249,7 @@ subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb
|
|||||||
c_2(l) = u_t(l,k_a)
|
c_2(l) = u_t(l,k_a)
|
||||||
c_contrib(l) = c_1(l) * c_2(l)
|
c_contrib(l) = c_1(l) * c_2(l)
|
||||||
enddo
|
enddo
|
||||||
call orb_range_off_diagonal_double_to_two_rdm_ab_dm_all_states(tmp_det,tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_off_diagonal_double_to_2_rdm_ab_dm_all_states(tmp_det,tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -326,9 +326,9 @@ subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb
|
|||||||
enddo
|
enddo
|
||||||
if(alpha_beta.or.spin_trace.or.alpha_alpha)then
|
if(alpha_beta.or.spin_trace.or.alpha_alpha)then
|
||||||
! increment the alpha/beta part for single excitations
|
! increment the alpha/beta part for single excitations
|
||||||
call orb_range_off_diagonal_single_to_two_rdm_ab_dm_all_states(tmp_det, tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_off_diagonal_single_to_2_rdm_ab_dm_all_states(tmp_det, tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
! increment the alpha/alpha part for single excitations
|
! increment the alpha/alpha part for single excitations
|
||||||
call orb_range_off_diagonal_single_to_two_rdm_aa_dm_all_states(tmp_det,tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_off_diagonal_single_to_2_rdm_aa_dm_all_states(tmp_det,tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
@ -351,7 +351,7 @@ subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb
|
|||||||
c_2(l) = u_t(l,k_a)
|
c_2(l) = u_t(l,k_a)
|
||||||
c_contrib(l) += c_1(l) * c_2(l)
|
c_contrib(l) += c_1(l) * c_2(l)
|
||||||
enddo
|
enddo
|
||||||
call orb_range_off_diagonal_double_to_two_rdm_aa_dm_all_states(tmp_det(1,1),psi_det_alpha_unique(1, lrow),c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_off_diagonal_double_to_2_rdm_aa_dm_all_states(tmp_det(1,1),psi_det_alpha_unique(1, lrow),c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -418,9 +418,9 @@ subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb
|
|||||||
enddo
|
enddo
|
||||||
if(alpha_beta.or.spin_trace.or.beta_beta)then
|
if(alpha_beta.or.spin_trace.or.beta_beta)then
|
||||||
! increment the alpha/beta part for single excitations
|
! increment the alpha/beta part for single excitations
|
||||||
call orb_range_off_diagonal_single_to_two_rdm_ab_dm_all_states(tmp_det, tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_off_diagonal_single_to_2_rdm_ab_dm_all_states(tmp_det, tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
! increment the beta /beta part for single excitations
|
! increment the beta /beta part for single excitations
|
||||||
call orb_range_off_diagonal_single_to_two_rdm_bb_dm_all_states(tmp_det, tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_off_diagonal_single_to_2_rdm_bb_dm_all_states(tmp_det, tmp_det2,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -442,7 +442,7 @@ subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb
|
|||||||
c_2(l) = u_t(l,k_a)
|
c_2(l) = u_t(l,k_a)
|
||||||
c_contrib(l) = c_1(l) * c_2(l)
|
c_contrib(l) = c_1(l) * c_2(l)
|
||||||
enddo
|
enddo
|
||||||
call orb_range_off_diagonal_double_to_two_rdm_bb_dm_all_states(tmp_det(1,2),psi_det_beta_unique(1, lcol),c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_off_diagonal_double_to_2_rdm_bb_dm_all_states(tmp_det(1,2),psi_det_beta_unique(1, lcol),c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
ASSERT (l_a <= N_det)
|
ASSERT (l_a <= N_det)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
@ -475,7 +475,7 @@ subroutine orb_range_all_states_two_rdm_work_$N_int(big_array,dim1,norb,list_orb
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
|
||||||
call orb_range_diagonal_contrib_to_all_two_rdm_dm_all_states(tmp_det,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
call orb_range_diagonal_contrib_to_all_2_rdm_dm_all_states(tmp_det,c_contrib,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
|
|
||||||
end do
|
end do
|
||||||
!!$OMP END DO
|
!!$OMP END DO
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine orb_range_two_rdm_openmp(big_array,dim1,norb,list_orb,ispin,u_0,N_st,sze)
|
subroutine orb_range_2_rdm_openmp(big_array,dim1,norb,list_orb,ispin,u_0,N_st,sze)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -30,7 +30,7 @@ subroutine orb_range_two_rdm_openmp(big_array,dim1,norb,list_orb,ispin,u_0,N_st,
|
|||||||
size(u_t, 1), &
|
size(u_t, 1), &
|
||||||
N_det, N_st)
|
N_det, N_st)
|
||||||
|
|
||||||
call orb_range_two_rdm_openmp_work(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,1,N_det,0,1)
|
call orb_range_2_rdm_openmp_work(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,1,N_det,0,1)
|
||||||
deallocate(u_t)
|
deallocate(u_t)
|
||||||
|
|
||||||
do k=1,N_st
|
do k=1,N_st
|
||||||
@ -39,7 +39,7 @@ subroutine orb_range_two_rdm_openmp(big_array,dim1,norb,list_orb,ispin,u_0,N_st,
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_two_rdm_openmp_work(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
subroutine orb_range_2_rdm_openmp_work(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -58,15 +58,15 @@ subroutine orb_range_two_rdm_openmp_work(big_array,dim1,norb,list_orb,ispin,u_t,
|
|||||||
|
|
||||||
select case (N_int)
|
select case (N_int)
|
||||||
case (1)
|
case (1)
|
||||||
call orb_range_two_rdm_openmp_work_1(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_openmp_work_1(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (2)
|
case (2)
|
||||||
call orb_range_two_rdm_openmp_work_2(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_openmp_work_2(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (3)
|
case (3)
|
||||||
call orb_range_two_rdm_openmp_work_3(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_openmp_work_3(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (4)
|
case (4)
|
||||||
call orb_range_two_rdm_openmp_work_4(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_openmp_work_4(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case default
|
case default
|
||||||
call orb_range_two_rdm_openmp_work_N_int(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_openmp_work_N_int(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
end select
|
end select
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
BEGIN_TEMPLATE
|
BEGIN_TEMPLATE
|
||||||
subroutine orb_range_two_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
subroutine orb_range_2_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
use omp_lib
|
use omp_lib
|
||||||
implicit none
|
implicit none
|
||||||
@ -128,7 +128,7 @@ subroutine orb_range_two_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,isp
|
|||||||
else if(ispin == 4)then
|
else if(ispin == 4)then
|
||||||
spin_trace = .True.
|
spin_trace = .True.
|
||||||
else
|
else
|
||||||
print*,'Wrong parameter for ispin in general_two_rdm_state_av_openmp_work'
|
print*,'Wrong parameter for ispin in general_2_rdm_state_av_openmp_work'
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
stop
|
stop
|
||||||
endif
|
endif
|
||||||
@ -353,9 +353,9 @@ subroutine orb_range_two_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,isp
|
|||||||
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
! call orb_range_off_diag_single_to_two_rdm_aa_dm_buffer(tmp_det,tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
! call orb_range_off_diag_single_to_2_rdm_aa_dm_buffer(tmp_det,tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
call orb_range_off_diag_single_to_all_states_aa_dm_buffer(tmp_det,tmp_det2,c_1,N_st,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_single_to_all_states_aa_dm_buffer(tmp_det,tmp_det2,c_1,N_st,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! print*,'to do orb_range_off_diag_single_to_two_rdm_aa_dm_buffer'
|
! print*,'to do orb_range_off_diag_single_to_2_rdm_aa_dm_buffer'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
@ -382,7 +382,7 @@ subroutine orb_range_two_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,isp
|
|||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_double_to_all_states_aa_dm_buffer(tmp_det(1,1),psi_det_alpha_unique(1, lrow),c_1,N_st,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_double_to_all_states_aa_dm_buffer(tmp_det(1,1),psi_det_alpha_unique(1, lrow),c_1,N_st,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! print*,'to do orb_range_off_diag_double_to_two_rdm_aa_dm_buffer'
|
! print*,'to do orb_range_off_diag_double_to_2_rdm_aa_dm_buffer'
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
||||||
@ -453,7 +453,7 @@ subroutine orb_range_two_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,isp
|
|||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_single_to_all_states_ab_dm_buffer(tmp_det, tmp_det2,c_1,N_st,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_single_to_all_states_ab_dm_buffer(tmp_det, tmp_det2,c_1,N_st,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! print*,'to do orb_range_off_diag_single_to_two_rdm_ab_dm_buffer'
|
! print*,'to do orb_range_off_diag_single_to_2_rdm_ab_dm_buffer'
|
||||||
! increment the beta /beta part for single excitations
|
! increment the beta /beta part for single excitations
|
||||||
if (nkeys+4 * elec_alpha_num .ge. sze_buff) then
|
if (nkeys+4 * elec_alpha_num .ge. sze_buff) then
|
||||||
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
||||||
@ -485,7 +485,7 @@ subroutine orb_range_two_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,isp
|
|||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_double_to_all_states_bb_dm_buffer(tmp_det(1,2),psi_det_beta_unique(1, lcol),c_1,N_st,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_double_to_all_states_bb_dm_buffer(tmp_det(1,2),psi_det_beta_unique(1, lcol),c_1,N_st,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! print*,'to do orb_range_off_diag_double_to_two_rdm_bb_dm_buffer'
|
! print*,'to do orb_range_off_diag_double_to_2_rdm_bb_dm_buffer'
|
||||||
ASSERT (l_a <= N_det)
|
ASSERT (l_a <= N_det)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
@ -519,7 +519,7 @@ subroutine orb_range_two_rdm_openmp_work_$N_int(big_array,dim1,norb,list_orb,isp
|
|||||||
|
|
||||||
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
call orb_range_diag_to_all_states_two_rdm_dm_buffer(tmp_det,c_1,N_states,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_diag_to_all_states_2_rdm_dm_buffer(tmp_det,c_1,N_states,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
call update_keys_values_n_states(keys,values,nkeys,dim1,n_st,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine orb_range_diagonal_contrib_to_all_two_rdm_dm_all_states(det_1,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
subroutine orb_range_diagonal_contrib_to_all_2_rdm_dm_all_states(det_1,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the DIAGONAL PART of the two body rdms in a specific range of orbitals for a given determinant det_1
|
! routine that update the DIAGONAL PART of the two body rdms in a specific range of orbitals for a given determinant det_1
|
||||||
@ -127,7 +127,7 @@
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
subroutine orb_range_off_diagonal_double_to_two_rdm_ab_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
subroutine orb_range_off_diagonal_double_to_2_rdm_ab_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -197,7 +197,7 @@
|
|||||||
enddo
|
enddo
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diagonal_single_to_two_rdm_ab_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
subroutine orb_range_off_diagonal_single_to_2_rdm_ab_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -322,7 +322,7 @@
|
|||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diagonal_single_to_two_rdm_aa_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
subroutine orb_range_off_diagonal_single_to_2_rdm_aa_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
!
|
!
|
||||||
@ -403,7 +403,7 @@
|
|||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diagonal_single_to_two_rdm_bb_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
subroutine orb_range_off_diagonal_single_to_2_rdm_bb_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -486,7 +486,7 @@
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
subroutine orb_range_off_diagonal_double_to_two_rdm_aa_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
subroutine orb_range_off_diagonal_double_to_2_rdm_aa_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -559,7 +559,7 @@
|
|||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diagonal_double_to_two_rdm_bb_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
subroutine orb_range_off_diagonal_double_to_2_rdm_bb_dm_all_states(det_1,det_2,c_1,N_st,big_array,dim1,orb_bitmask,list_orb_reverse,ispin)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine orb_range_diag_to_all_states_two_rdm_dm_buffer(det_1,c_1,N_st,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_diag_to_all_states_2_rdm_dm_buffer(det_1,c_1,N_st,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the DIAGONAL PART of the two body rdms in a specific range of orbitals for a given determinant det_1
|
! routine that update the DIAGONAL PART of the two body rdms in a specific range of orbitals for a given determinant det_1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine orb_range_two_rdm_state_av_openmp(big_array,dim1,norb,list_orb,state_weights,ispin,u_0,N_st,sze)
|
subroutine orb_range_2_rdm_state_av_openmp(big_array,dim1,norb,list_orb,state_weights,ispin,u_0,N_st,sze)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -30,7 +30,7 @@ subroutine orb_range_two_rdm_state_av_openmp(big_array,dim1,norb,list_orb,state_
|
|||||||
size(u_t, 1), &
|
size(u_t, 1), &
|
||||||
N_det, N_st)
|
N_det, N_st)
|
||||||
|
|
||||||
call orb_range_two_rdm_state_av_openmp_work(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,1,N_det,0,1)
|
call orb_range_2_rdm_state_av_openmp_work(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,1,N_det,0,1)
|
||||||
deallocate(u_t)
|
deallocate(u_t)
|
||||||
|
|
||||||
do k=1,N_st
|
do k=1,N_st
|
||||||
@ -39,7 +39,7 @@ subroutine orb_range_two_rdm_state_av_openmp(big_array,dim1,norb,list_orb,state_
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_two_rdm_state_av_openmp_work(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
subroutine orb_range_2_rdm_state_av_openmp_work(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -58,15 +58,15 @@ subroutine orb_range_two_rdm_state_av_openmp_work(big_array,dim1,norb,list_orb,s
|
|||||||
|
|
||||||
select case (N_int)
|
select case (N_int)
|
||||||
case (1)
|
case (1)
|
||||||
call orb_range_two_rdm_state_av_openmp_work_1(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_state_av_openmp_work_1(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (2)
|
case (2)
|
||||||
call orb_range_two_rdm_state_av_openmp_work_2(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_state_av_openmp_work_2(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (3)
|
case (3)
|
||||||
call orb_range_two_rdm_state_av_openmp_work_3(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_state_av_openmp_work_3(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case (4)
|
case (4)
|
||||||
call orb_range_two_rdm_state_av_openmp_work_4(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_state_av_openmp_work_4(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
case default
|
case default
|
||||||
call orb_range_two_rdm_state_av_openmp_work_N_int(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
call orb_range_2_rdm_state_av_openmp_work_N_int(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
end select
|
end select
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
BEGIN_TEMPLATE
|
BEGIN_TEMPLATE
|
||||||
subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
subroutine orb_range_2_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,list_orb,state_weights,ispin,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
use omp_lib
|
use omp_lib
|
||||||
implicit none
|
implicit none
|
||||||
@ -130,7 +130,7 @@ subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,lis
|
|||||||
else if(ispin == 4)then
|
else if(ispin == 4)then
|
||||||
spin_trace = .True.
|
spin_trace = .True.
|
||||||
else
|
else
|
||||||
print*,'Wrong parameter for ispin in general_two_rdm_state_av_openmp_work'
|
print*,'Wrong parameter for ispin in general_2_rdm_state_av_openmp_work'
|
||||||
print*,'ispin = ',ispin
|
print*,'ispin = ',ispin
|
||||||
stop
|
stop
|
||||||
endif
|
endif
|
||||||
@ -270,8 +270,8 @@ subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,lis
|
|||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_double_to_two_rdm_ab_dm_buffer(tmp_det,tmp_det2,c_average,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_double_to_2_rdm_ab_dm_buffer(tmp_det,tmp_det2,c_average,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! print*,'todo orb_range_off_diag_double_to_two_rdm_ab_dm_buffer'
|
! print*,'todo orb_range_off_diag_double_to_2_rdm_ab_dm_buffer'
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
@ -353,13 +353,13 @@ subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,lis
|
|||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_single_to_two_rdm_ab_dm_buffer(tmp_det, tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_single_to_2_rdm_ab_dm_buffer(tmp_det, tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! increment the alpha/alpha part for single excitations
|
! increment the alpha/alpha part for single excitations
|
||||||
if (nkeys+4 * elec_alpha_num .ge. sze_buff ) then
|
if (nkeys+4 * elec_alpha_num .ge. sze_buff ) then
|
||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_single_to_two_rdm_aa_dm_buffer(tmp_det,tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_single_to_2_rdm_aa_dm_buffer(tmp_det,tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
@ -386,7 +386,7 @@ subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,lis
|
|||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_double_to_two_rdm_aa_dm_buffer(tmp_det(1,1),psi_det_alpha_unique(1, lrow),c_average,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_double_to_2_rdm_aa_dm_buffer(tmp_det(1,1),psi_det_alpha_unique(1, lrow),c_average,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -457,13 +457,13 @@ subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,lis
|
|||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_single_to_two_rdm_ab_dm_buffer(tmp_det, tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_single_to_2_rdm_ab_dm_buffer(tmp_det, tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! increment the beta /beta part for single excitations
|
! increment the beta /beta part for single excitations
|
||||||
if (nkeys+4 * elec_alpha_num .ge. sze_buff) then
|
if (nkeys+4 * elec_alpha_num .ge. sze_buff) then
|
||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_single_to_two_rdm_bb_dm_buffer(tmp_det, tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_single_to_2_rdm_bb_dm_buffer(tmp_det, tmp_det2,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -489,8 +489,8 @@ subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,lis
|
|||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
endif
|
endif
|
||||||
call orb_range_off_diag_double_to_two_rdm_bb_dm_buffer(tmp_det(1,2),psi_det_beta_unique(1, lcol),c_average,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_off_diag_double_to_2_rdm_bb_dm_buffer(tmp_det(1,2),psi_det_beta_unique(1, lcol),c_average,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
! print*,'to do orb_range_off_diag_double_to_two_rdm_bb_dm_buffer'
|
! print*,'to do orb_range_off_diag_double_to_2_rdm_bb_dm_buffer'
|
||||||
ASSERT (l_a <= N_det)
|
ASSERT (l_a <= N_det)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
@ -524,7 +524,7 @@ subroutine orb_range_two_rdm_state_av_openmp_work_$N_int(big_array,dim1,norb,lis
|
|||||||
|
|
||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
call orb_range_diag_to_all_two_rdm_dm_buffer(tmp_det,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
call orb_range_diag_to_all_2_rdm_dm_buffer(tmp_det,c_average,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
call update_keys_values(keys,values,nkeys,dim1,big_array,lock_2rdm)
|
||||||
nkeys = 0
|
nkeys = 0
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine orb_range_diag_to_all_two_rdm_dm_buffer(det_1,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_diag_to_all_2_rdm_dm_buffer(det_1,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the DIAGONAL PART of the two body rdms in a specific range of orbitals for a given determinant det_1
|
! routine that update the DIAGONAL PART of the two body rdms in a specific range of orbitals for a given determinant det_1
|
||||||
@ -175,7 +175,7 @@
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
subroutine orb_range_off_diag_double_to_two_rdm_ab_dm_buffer(det_1,det_2,c_1,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_off_diag_double_to_2_rdm_ab_dm_buffer(det_1,det_2,c_1,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -257,7 +257,7 @@
|
|||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diag_single_to_two_rdm_ab_dm_buffer(det_1,det_2,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_off_diag_single_to_2_rdm_ab_dm_buffer(det_1,det_2,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -408,7 +408,7 @@
|
|||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diag_single_to_two_rdm_aa_dm_buffer(det_1,det_2,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_off_diag_single_to_2_rdm_aa_dm_buffer(det_1,det_2,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
!
|
!
|
||||||
@ -512,7 +512,7 @@
|
|||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diag_single_to_two_rdm_bb_dm_buffer(det_1,det_2,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_off_diag_single_to_2_rdm_bb_dm_buffer(det_1,det_2,c_1,orb_bitmask,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -616,7 +616,7 @@
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
subroutine orb_range_off_diag_double_to_two_rdm_aa_dm_buffer(det_1,det_2,c_1,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_off_diag_double_to_2_rdm_aa_dm_buffer(det_1,det_2,c_1,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
@ -711,7 +711,7 @@
|
|||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine orb_range_off_diag_double_to_two_rdm_bb_dm_buffer(det_1,det_2,c_1,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
subroutine orb_range_off_diag_double_to_2_rdm_bb_dm_buffer(det_1,det_2,c_1,list_orb_reverse,ispin,sze_buff,nkeys,keys,values)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
! routine that update the OFF DIAGONAL PART of the two body rdms in a specific range of orbitals for
|
||||||
|
Loading…
Reference in New Issue
Block a user