diff --git a/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f b/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f index 0b3808bf..e37af485 100644 --- a/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f +++ b/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f @@ -17,7 +17,7 @@ END_PROVIDER e = elec_num - n_core_orb * 2 pt2_n_tasks_max = 1+min((e*(e-1))/2, int(dsqrt(dble(N_det_selectors)))/10) 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 else pt2_F(i) = 1 diff --git a/plugins/dress_zmq/dress_stoch_routines.irp.f b/plugins/dress_zmq/dress_stoch_routines.irp.f index 2f7eb58e..cf1f567b 100644 --- a/plugins/dress_zmq/dress_stoch_routines.irp.f +++ b/plugins/dress_zmq/dress_stoch_routines.irp.f @@ -540,11 +540,13 @@ subroutine dress_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, error = sqrt(eqt / (dble(c)-1.5d0)) time = omp_get_wtime() 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 error =1.d0 endif + if ( m>=dress_N_cp ) then + m = dress_N_cp + error = 0.d0 + endif m += 1 if(do_exit .and. (dabs(error) / (1.d-20 + dabs(avg) ) <= relative_error)) then integer, external :: zmq_put_dvector diff --git a/plugins/dress_zmq/run_dress_slave.irp.f b/plugins/dress_zmq/run_dress_slave.irp.f index 0ca9a30f..1e351368 100644 --- a/plugins/dress_zmq/run_dress_slave.irp.f +++ b/plugins/dress_zmq/run_dress_slave.irp.f @@ -222,16 +222,24 @@ subroutine run_dress_slave(thread,iproce,energy) will_send = ending breve_delta_m = 0d0 + double precision :: fu + fu = 1.d0/dble(dress_M_m(will_send)) do l=will_send, 1,-1 - breve_delta_m(:,:,1) += cp(:,:,l,1) - breve_delta_m(:,:,2) += cp(:,:,l,2) + do j=1,N_det + 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 - breve_delta_m(:,:,:) = breve_delta_m(:,:,:) / dress_M_m(will_send) - do t=dress_dot_t(will_send)-1,0,-1 - breve_delta_m(:,:,1) = breve_delta_m(:,:,1) + delta_det(:,:,t,1) - breve_delta_m(:,:,2) = breve_delta_m(:,:,2) + delta_det(:,:,t,2) + do j=1,N_det + 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 sum_f = 0