10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-25 13:53:49 +01:00

Better fragmentation

This commit is contained in:
Anthony Scemama 2018-09-30 19:33:48 +02:00
parent 554664f8bb
commit 189eb27cec
3 changed files with 19 additions and 9 deletions

View File

@ -17,7 +17,7 @@ END_PROVIDER
e = elec_num - n_core_orb * 2 e = elec_num - n_core_orb * 2
pt2_n_tasks_max = 1+min((e*(e-1))/2, int(dsqrt(dble(N_det_selectors)))/10) pt2_n_tasks_max = 1+min((e*(e-1))/2, int(dsqrt(dble(N_det_selectors)))/10)
do i=1,N_det_generators do i=1,N_det_generators
if (maxval(dabs(psi_coef_sorted_gen(i,1:N_states))) > 0.001d0) then if (maxval(dabs(psi_coef_sorted_gen(i,1:N_states))) > 0.01d0) then
pt2_F(i) = pt2_n_tasks_max pt2_F(i) = pt2_n_tasks_max
else else
pt2_F(i) = 1 pt2_F(i) = 1

View File

@ -540,11 +540,13 @@ subroutine dress_collector(zmq_socket_pull, E, relative_error, delta, delta_s2,
error = sqrt(eqt / (dble(c)-1.5d0)) error = sqrt(eqt / (dble(c)-1.5d0))
time = omp_get_wtime() time = omp_get_wtime()
print '(G10.3, 2X, F16.10, 2X, G16.3, 2X, F16.4, A20)', c, avg+E(istate), error, time-time0, '' print '(G10.3, 2X, F16.10, 2X, G16.3, 2X, F16.4, A20)', c, avg+E(istate), error, time-time0, ''
else if ( m==dress_N_cp ) then
error = 0.d0
else else
error =1.d0 error =1.d0
endif endif
if ( m>=dress_N_cp ) then
m = dress_N_cp
error = 0.d0
endif
m += 1 m += 1
if(do_exit .and. (dabs(error) / (1.d-20 + dabs(avg) ) <= relative_error)) then if(do_exit .and. (dabs(error) / (1.d-20 + dabs(avg) ) <= relative_error)) then
integer, external :: zmq_put_dvector integer, external :: zmq_put_dvector

View File

@ -222,16 +222,24 @@ subroutine run_dress_slave(thread,iproce,energy)
will_send = ending will_send = ending
breve_delta_m = 0d0 breve_delta_m = 0d0
double precision :: fu
fu = 1.d0/dble(dress_M_m(will_send))
do l=will_send, 1,-1 do l=will_send, 1,-1
breve_delta_m(:,:,1) += cp(:,:,l,1) do j=1,N_det
breve_delta_m(:,:,2) += cp(:,:,l,2) do i=1,N_states
breve_delta_m(i,j,1) = breve_delta_m(i,j,1) + cp(i,j,l,1)*fu
breve_delta_m(i,j,2) = breve_delta_m(i,j,2) + cp(i,j,l,2)*fu
end do
end do
end do end do
breve_delta_m(:,:,:) = breve_delta_m(:,:,:) / dress_M_m(will_send)
do t=dress_dot_t(will_send)-1,0,-1 do t=dress_dot_t(will_send)-1,0,-1
breve_delta_m(:,:,1) = breve_delta_m(:,:,1) + delta_det(:,:,t,1) do j=1,N_det
breve_delta_m(:,:,2) = breve_delta_m(:,:,2) + delta_det(:,:,t,2) do i=1,N_states
breve_delta_m(i,j,1) = breve_delta_m(i,j,1) + delta_det(i,j,t,1)
breve_delta_m(i,j,2) = breve_delta_m(i,j,2) + delta_det(i,j,t,2)
end do
end do
end do end do
sum_f = 0 sum_f = 0