diff --git a/src/cipsi/energy.irp.f b/src/cipsi/energy.irp.f index 0ae5ad79..4a9dc2e8 100644 --- a/src/cipsi/energy.irp.f +++ b/src/cipsi/energy.irp.f @@ -17,7 +17,11 @@ BEGIN_PROVIDER [ double precision, pt2_E0_denominator, (N_states) ] pt2_E0_denominator(1:N_states) = psi_energy(1:N_states) else if (h0_type == "HF") then do i=1,N_states - j = maxloc(abs(psi_coef(:,i)),1) + if (is_complex) then + j = maxloc(cdabs(psi_coef_complex(:,i)),1) + else + j = maxloc(abs(psi_coef(:,i)),1) + endif pt2_E0_denominator(i) = psi_det_hii(j) enddo else if (h0_type == "Barycentric") then diff --git a/src/cipsi/pt2_stoch_routines.irp.f b/src/cipsi/pt2_stoch_routines.irp.f index 281b0c5d..78fcf568 100644 --- a/src/cipsi/pt2_stoch_routines.irp.f +++ b/src/cipsi/pt2_stoch_routines.irp.f @@ -140,7 +140,7 @@ subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm, N_in) pt2=0.d0 variance=0.d0 norm=0.d0 - call ZMQ_selection(N_in, pt2, variance, norm) + call zmq_selection(N_in, pt2, variance, norm) error(:) = 0.d0 else diff --git a/src/cipsi/stochastic_cipsi.irp.f b/src/cipsi/stochastic_cipsi.irp.f index b8bf6a1d..854703b5 100644 --- a/src/cipsi/stochastic_cipsi.irp.f +++ b/src/cipsi/stochastic_cipsi.irp.f @@ -36,7 +36,7 @@ subroutine run_stochastic_cipsi if (s2_eig) then call make_s2_eigenfunction endif - call diagonalize_CI + call diagonalize_ci call save_wavefunction call ezfio_has_hartree_fock_energy(has) @@ -48,9 +48,15 @@ subroutine run_stochastic_cipsi if (N_det > N_det_max) then psi_det = psi_det_sorted - psi_coef = psi_coef_sorted - N_det = N_det_max - soft_touch N_det psi_det psi_coef + if (is_complex) then + psi_coef_complex = psi_coef_sorted_complex + N_det = N_det_max + soft_touch N_det psi_det psi_coef_complex + else + psi_coef = psi_coef_sorted + N_det = N_det_max + soft_touch N_det psi_det psi_coef + endif if (s2_eig) then call make_s2_eigenfunction endif @@ -78,7 +84,7 @@ subroutine run_stochastic_cipsi pt2 = 0.d0 variance = 0.d0 norm = 0.d0 - call ZMQ_pt2(psi_energy_with_nucl_rep,pt2,relative_error,error, variance, & + call zmq_pt2(psi_energy_with_nucl_rep,pt2,relative_error,error, variance, & norm, to_select) ! Stochastic PT2 and selection do k=1,N_states diff --git a/src/fci/fci.irp.f b/src/fci/fci.irp.f index 5c747081..b92257d4 100644 --- a/src/fci/fci.irp.f +++ b/src/fci/fci.irp.f @@ -37,7 +37,11 @@ program fci END_DOC if (.not.is_zmq_slave) then - PROVIDE psi_det psi_coef mo_two_e_integrals_in_map + if (is_complex) then + PROVIDE psi_det psi_coef_complex mo_two_e_integrals_in_map + else + PROVIDE psi_det psi_coef mo_two_e_integrals_in_map + endif if (do_pt2) then call run_stochastic_cipsi diff --git a/src/selectors_full/selectors.irp.f b/src/selectors_full/selectors.irp.f index 0531f731..20edb6b2 100644 --- a/src/selectors_full/selectors.irp.f +++ b/src/selectors_full/selectors.irp.f @@ -30,8 +30,7 @@ BEGIN_PROVIDER [ integer, N_det_selectors] call write_int(6,N_det_selectors,'Number of selectors') END_PROVIDER - BEGIN_PROVIDER [ integer(bit_kind), psi_selectors, (N_int,2,psi_selectors_size) ] -&BEGIN_PROVIDER [ double precision, psi_selectors_coef, (psi_selectors_size,N_states) ] +BEGIN_PROVIDER [ integer(bit_kind), psi_selectors, (N_int,2,psi_selectors_size) ] implicit none BEGIN_DOC ! Determinants on which we apply for perturbation. @@ -44,6 +43,16 @@ END_PROVIDER psi_selectors(k,2,i) = psi_det_sorted(k,2,i) enddo enddo + +END_PROVIDER + +BEGIN_PROVIDER [ double precision, psi_selectors_coef, (psi_selectors_size,N_states) ] + implicit none + BEGIN_DOC + ! Determinants on which we apply for perturbation. + END_DOC + integer :: i,k + do k=1,N_states do i=1,N_det_selectors psi_selectors_coef(i,k) = psi_coef_sorted(i,k) @@ -52,4 +61,19 @@ END_PROVIDER END_PROVIDER +BEGIN_PROVIDER [ complex*16, psi_selectors_coef_complex, (psi_selectors_size,N_states) ] + implicit none + BEGIN_DOC + ! Determinants on which we apply for perturbation. + END_DOC + integer :: i,k + + do k=1,N_states + do i=1,N_det_selectors + psi_selectors_coef_complex(i,k) = psi_coef_sorted_complex(i,k) + enddo + enddo + +END_PROVIDER + diff --git a/src/selectors_utils/selectors.irp.f b/src/selectors_utils/selectors.irp.f index 92366d1d..4460979c 100644 --- a/src/selectors_utils/selectors.irp.f +++ b/src/selectors_utils/selectors.irp.f @@ -32,3 +32,17 @@ BEGIN_PROVIDER [ double precision, psi_selectors_diag_h_mat, (psi_selectors_size END_PROVIDER +BEGIN_PROVIDER [ complex*16, psi_selectors_coef_transp_complex, (N_states,psi_selectors_size) ] + implicit none + BEGIN_DOC + ! Transposed psi_selectors + END_DOC + integer :: i,k + + do i=1,N_det_selectors + do k=1,N_states + psi_selectors_coef_transp_complex(k,i) = psi_selectors_coef_complex(i,k) + enddo + enddo +END_PROVIDER +