diff --git a/configure b/configure index 63a041fa..391f5384 100755 --- a/configure +++ b/configure @@ -319,8 +319,8 @@ EOF rm ${QP_ROOT}/external/opam_installer.sh # source ${OPAMROOT}/opam-init/init.sh > /dev/null 2> /dev/null || true # -# opam switch create ocaml-base-compiler.4.10.0 - opam init --verbose --yes --compiler=4.10.0 --disable-sandboxing +# opam switch create ocaml-base-compiler.4.11.1 + opam init --verbose --yes --compiler=4.11.1 --disable-sandboxing eval $(opam env) opam install -y ${OCAML_PACKAGES} || exit 1 @@ -339,9 +339,9 @@ EOF EOF rm ${QP_ROOT}/external/opam_installer.sh # source ${OPAMROOT}/opam-init/init.sh > /dev/null 2> /dev/null || true -# opam switch create ocaml-base-compiler.4.10.0 || exit 1 +# opam switch create ocaml-base-compiler.4.11.1 || exit 1 - opam init --verbose --yes --compiler=4.10.0 --disable-sandboxing + opam init --verbose --yes --compiler=4.11.1 --disable-sandboxing eval $(opam env) execute << EOF opam install -y \${OCAML_PACKAGES} || exit 1 diff --git a/src/cipsi/pt2_stoch_routines.irp.f b/src/cipsi/pt2_stoch_routines.irp.f index 428285c2..489ffaaf 100644 --- a/src/cipsi/pt2_stoch_routines.irp.f +++ b/src/cipsi/pt2_stoch_routines.irp.f @@ -352,9 +352,9 @@ subroutine ZMQ_pt2(E, pt2_data, pt2_data_err, relative_error, N_in) state_average_weight(:) = state_average_weight_save(:) TOUCH state_average_weight + call update_pt2_and_variance_weights(pt2_data, N_states) endif - call update_pt2_and_variance_weights(pt2_data, N_states) end subroutine diff --git a/src/cipsi/selection.irp.f b/src/cipsi/selection.irp.f index 1bbaffc4..5e6fd7f9 100644 --- a/src/cipsi/selection.irp.f +++ b/src/cipsi/selection.irp.f @@ -653,7 +653,7 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d do_cycle = .True. do k=1,N_dominant_dets_of_cfgs call get_excitation_degree(dominant_dets_of_cfgs(1,1,k),det(1,1),degree,N_int) - do_cycle = do_cycle .and. (degree > excitation_alpha_max) + do_cycle = do_cycle .and. (degree > excitation_alpha_max) enddo if (do_cycle) cycle endif @@ -663,7 +663,7 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d do_cycle = .True. do k=1,N_dominant_dets_of_cfgs call get_excitation_degree(dominant_dets_of_cfgs(1,1,k),det(1,1),degree,N_int) - do_cycle = do_cycle .and. (degree > excitation_beta_max) + do_cycle = do_cycle .and. (degree > excitation_beta_max) enddo if (do_cycle) cycle endif diff --git a/src/cipsi/selection_weight.irp.f b/src/cipsi/selection_weight.irp.f index 24e2ace0..fb05263a 100644 --- a/src/cipsi/selection_weight.irp.f +++ b/src/cipsi/selection_weight.irp.f @@ -33,43 +33,27 @@ subroutine update_pt2_and_variance_weights(pt2_data, N_st) double precision :: avg, element, dt, x integer :: k - integer, save :: i_iter=0 - integer, parameter :: i_itermax = 1 - double precision, allocatable, save :: memo_variance(:,:), memo_pt2(:,:) - pt2(:) = pt2_data % pt2(:) variance(:) = pt2_data % variance(:) - if (i_iter == 0) then - allocate(memo_variance(N_st,i_itermax), memo_pt2(N_st,i_itermax)) - memo_pt2(:,:) = 1.d0 - memo_variance(:,:) = 1.d0 - endif + avg = sum(pt2(1:N_st)) / dble(N_st) + 1.d-32 ! Avoid future division by zero - i_iter = i_iter+1 - if (i_iter > i_itermax) then - i_iter = 1 - endif - - dt = 2.0d0 - - avg = sum(pt2(1:N_st)) / dble(N_st) - 1.d-32 ! Avoid future division by zero + dt = 2.d0 !* selection_factor do k=1,N_st - element = exp(dt*(pt2(k)/avg -1.d0)) + element = exp(dt*(pt2(k)/avg - 1.d0)) element = min(2.0d0 , element) element = max(0.5d0 , element) - memo_pt2(k,i_iter) = element - pt2_match_weight(k) *= product(memo_pt2(k,:)) + pt2_match_weight(k) *= element enddo avg = sum(variance(1:N_st)) / dble(N_st) + 1.d-32 ! Avoid future division by zero + do k=1,N_st element = exp(dt*(variance(k)/avg -1.d0)) element = min(2.0d0 , element) element = max(0.5d0 , element) - memo_variance(k,i_iter) = element - variance_match_weight(k) *= product(memo_variance(k,:)) + variance_match_weight(k) *= element enddo if (N_det < 100) then diff --git a/src/cipsi/slave_cipsi.irp.f b/src/cipsi/slave_cipsi.irp.f index 4c5d8fca..b2abe356 100644 --- a/src/cipsi/slave_cipsi.irp.f +++ b/src/cipsi/slave_cipsi.irp.f @@ -4,7 +4,7 @@ subroutine run_slave_cipsi ! Helper program for distributed parallelism END_DOC - call omp_set_nested(.false.) + call omp_set_max_active_levels(1) distributed_davidson = .False. read_wf = .False. SOFT_TOUCH read_wf distributed_davidson @@ -171,9 +171,9 @@ subroutine run_slave_main call write_double(6,(t1-t0),'Broadcast time') !--- - call omp_set_nested(.True.) + call omp_set_max_active_levels(8) call davidson_slave_tcp(0) - call omp_set_nested(.False.) + call omp_set_max_active_levels(1) print *, mpi_rank, ': Davidson done' !--- diff --git a/src/csf/configurations.irp.f b/src/csf/configurations.irp.f index 4e25cc13..8e2a513c 100644 --- a/src/csf/configurations.irp.f +++ b/src/csf/configurations.irp.f @@ -699,9 +699,14 @@ BEGIN_PROVIDER [ integer, dominant_cfg, (N_states) ] ! Configuration of the determinants with the largest weight, for each state END_DOC integer :: k - do k=1,N_states - dominant_cfg(k) = det_to_configuration(dominant_det(k)) - enddo + dominant_cfg(1) = det_to_configuration(dominant_det(1)) + if (N_det < N_states) then + dominant_cfg(:) = dominant_cfg(1) + else + do k=1,N_states + dominant_cfg(k) = det_to_configuration(dominant_det(k)) + enddo + endif END_PROVIDER