Commit ad1a6aed authored by Marie bernadette Lepetit's avatar Marie bernadette Lepetit
Browse files

Merge branch 'dev/prop' of https://code.ill.fr/relaxse/relaxse-code into dev/prop

parents 403f611f 897edfb6
Pipeline #10480 failed with stage
in 56 minutes and 13 seconds
...@@ -550,13 +550,15 @@ contains ...@@ -550,13 +550,15 @@ contains
tmp2(:) = 0 tmp2(:) = 0
iter1 = 0 iter1 = 0
iter2 = 0 iter2 = 0
!Iterate over the active det of list dlb
!Count the number of detb which connects with 1 or 2 differences
do idetb = 1, dlb%ndetcas do idetb = 1, dlb%ndetcas
ndiff = count_diff(dla%elms(ideta),dlb%elms(idetb), o_info%nact) ndiff = count_diff(dla%elms(ideta),dlb%elms(idetb), o_info%nact)
if ((ndiff + deltaNel) .eq. 2) then if ((ndiff + deltaNel) .eq. 2) then !CM1
iter1 = iter1 + 1 iter1 = iter1 + 1
tmp1(iter1) = idetb tmp1(iter1) = idetb
else if ((ndiff + deltaNel) .eq. 4) then else if ((ndiff + deltaNel) .eq. 4) then !CM2
iter2 = iter2 + 1 iter2 = iter2 + 1
tmp2(iter2) = idetb tmp2(iter2) = idetb
endif endif
...@@ -564,8 +566,10 @@ contains ...@@ -564,8 +566,10 @@ contains
call vec_init(dla%connect1(idlb), ideta, iter1) call vec_init(dla%connect1(idlb), ideta, iter1)
call vec_init(dla%connect1orb(idlb), ideta, iter1) call vec_init(dla%connect1orb(idlb), ideta, iter1)
!Store the list of detb connecting with 1 diff CM1(deta)
if (iter1 .ne. 0) then if (iter1 .ne. 0) then
dla%connect1(idlb)%vl(ideta)%p%elms = tmp1(1:iter1) dla%connect1(idlb)%vl(ideta)%p%elms = tmp1(1:iter1)
!For each determinant connecting to deta, store the orbitals connecting in a type(connect) vec_storage.F90
do idet = 1, iter1 do idet = 1, iter1
idetb = tmp1(idet) idetb = tmp1(idet)
call fill_connect(dla%connect1orb(idlb)%vl(ideta)%p%elms(idet)%p, & call fill_connect(dla%connect1orb(idlb)%vl(ideta)%p%elms(idet)%p, &
...@@ -575,10 +579,12 @@ contains ...@@ -575,10 +579,12 @@ contains
call vec_init(dla%connect2(idlb), ideta, iter2) call vec_init(dla%connect2(idlb), ideta, iter2)
call vec_init(dla%connect2orb(idlb), ideta, iter2) call vec_init(dla%connect2orb(idlb), ideta, iter2)
!Store the list of detb connecting with 2 diff CM2(deta)
if (iter2 .ne. 0) then if (iter2 .ne. 0) then
dla%connect2(idlb)%vl(ideta)%p%elms = tmp2(1:iter2) dla%connect2(idlb)%vl(ideta)%p%elms = tmp2(1:iter2)
do idet = 1, iter2 do idet = 1, iter2
idetb = tmp2(idet) idetb = tmp2(idet)
!For each determinant connecting to deta, store the orbitals connecting in a type(connect) vec_storage.F90
call fill_connect(dla%connect2orb(idlb)%vl(ideta)%p%elms(idet)%p, & call fill_connect(dla%connect2orb(idlb)%vl(ideta)%p%elms(idet)%p, &
dla%elms(ideta), dlb%elms(idetb), no, nact) dla%elms(ideta), dlb%elms(idetb), no, nact)
enddo enddo
...@@ -605,6 +611,9 @@ contains ...@@ -605,6 +611,9 @@ contains
!> @param[in] nact Nb of active orbitals !> @param[in] nact Nb of active orbitals
!> @param[out] nCM1 Nb of connecting detact !> @param[out] nCM1 Nb of connecting detact
!> @param[out] detCM1 Indices of the connecting detact in rj !> @param[out] detCM1 Indices of the connecting detact in rj
!> @param[out] detCM1orb (optional) Array of connection information for each CM1
!! which contains diffi, diffj, spindiffi, spindiffj, sign_act, Ndiffact_I, Ndiffact_J, nandIJ,
!! andIJ(:), spinandIJ(:)
!$================================================================== !$==================================================================
subroutine CM1_spindetact_list(ri, rj, idet, nact, nCM1, detCM1, detCM1orb) subroutine CM1_spindetact_list(ri, rj, idet, nact, nCM1, detCM1, detCM1orb)
type(spindetact_list), intent(in) :: ri, rj type(spindetact_list), intent(in) :: ri, rj
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment