diff --git a/plugins/Full_CI/H_apply.irp.f b/plugins/Full_CI/H_apply.irp.f index 79599065..014d0dbd 100644 --- a/plugins/Full_CI/H_apply.irp.f +++ b/plugins/Full_CI/H_apply.irp.f @@ -4,24 +4,13 @@ from generate_h_apply import * s = H_apply("FCI") s.set_selection_pt2("epstein_nesbet_2x2") -#s.unset_openmp() +s.unset_skip() print s s = H_apply("FCI_PT2") s.set_perturbation("epstein_nesbet_2x2") -s.unset_openmp() -print s - -s = H_apply("FCI_PT2_new") -s.set_perturbation("decontracted") -s.unset_openmp() -print s - - -s = H_apply("FCI_no_skip") -s.set_selection_pt2("epstein_nesbet_2x2") s.unset_skip() -#s.unset_openmp() +s.unset_openmp() print s s = H_apply("FCI_no_selection") @@ -31,6 +20,7 @@ print s s = H_apply("FCI_mono") s.set_selection_pt2("epstein_nesbet_2x2") +s.unset_skip() s.unset_double_excitations() s.unset_openmp() print s diff --git a/plugins/Full_CI/full_ci.irp.f b/plugins/Full_CI/full_ci.irp.f index 0d816f3e..5fd5732d 100644 --- a/plugins/Full_CI/full_ci.irp.f +++ b/plugins/Full_CI/full_ci.irp.f @@ -95,7 +95,7 @@ program full_ci N_det = min(N_det_max,N_det) touch N_det psi_det psi_coef call diagonalize_CI - if(do_pt2_end)then + if(do_pt2)then print*,'Last iteration only to compute the PT2' threshold_generators = threshold_generators_pt2 threshold_selectors = threshold_selectors_pt2 diff --git a/plugins/Full_CI/full_ci_no_skip.irp.f b/plugins/Full_CI/full_ci_no_skip.irp.f deleted file mode 100644 index 078334f7..00000000 --- a/plugins/Full_CI/full_ci_no_skip.irp.f +++ /dev/null @@ -1,94 +0,0 @@ -program full_ci - implicit none - integer :: i,k - - - double precision, allocatable :: pt2(:), norm_pert(:), H_pert_diag(:) - integer :: N_st, degree - N_st = N_states - allocate (pt2(N_st), norm_pert(N_st),H_pert_diag(N_st)) - character*(64) :: perturbation - - pt2 = 1.d0 - diag_algorithm = "Lapack" - if (N_det > N_det_max) then - call diagonalize_CI - call save_wavefunction - psi_det = psi_det_sorted - psi_coef = psi_coef_sorted - N_det = N_det_max - soft_touch N_det psi_det psi_coef - call diagonalize_CI - call save_wavefunction - print *, 'N_det = ', N_det - print *, 'N_states = ', N_states - print *, 'PT2 = ', pt2 - print *, 'E = ', CI_energy - print *, 'E+PT2 = ', CI_energy+pt2 - print *, '-----' - endif - double precision :: i_H_psi_array(N_states),diag_H_mat_elem,h,i_O1_psi_array(N_states) - double precision :: E_CI_before(N_states) - if(read_wf)then - call i_H_psi(psi_det(1,1,N_det),psi_det,psi_coef,N_int,N_det,psi_det_size,N_states,i_H_psi_array) - h = diag_H_mat_elem(psi_det(1,1,N_det),N_int) - selection_criterion = dabs(psi_coef(N_det,1) * (i_H_psi_array(1) - h * psi_coef(N_det,1))) * 0.1d0 - soft_touch selection_criterion - endif - - - integer :: n_det_before - print*,'Beginning the selection ...' - E_CI_before = CI_energy - do while (N_det < N_det_max.and.maxval(abs(pt2(1:N_st))) > pt2_max) - n_det_before = N_det - call H_apply_FCI_no_skip(pt2, norm_pert, H_pert_diag, N_st) - - PROVIDE psi_coef - PROVIDE psi_det - PROVIDE psi_det_sorted - - 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 - endif - call diagonalize_CI - call save_wavefunction - if(n_det_before == N_det)then - selection_criterion = selection_criterion * 0.5d0 - endif - print *, 'N_det = ', N_det - print *, 'N_states = ', N_states - print *, 'PT2 = ', pt2 - print *, 'E = ', CI_energy - print *, 'E+PT2 = ', E_CI_before+pt2 - print *, '-----' - E_CI_before = CI_energy - call ezfio_set_full_ci_energy(CI_energy) - enddo - N_det = min(N_det_max,N_det) - touch N_det psi_det psi_coef - call diagonalize_CI - if(do_pt2_end)then - print*,'Last iteration only to compute the PT2' - threshold_generators = threshold_generators_pt2 - threshold_selectors = threshold_selectors_pt2 - SOFT_TOUCH threshold_generators threshold_selectors - -! print*,'The thres' - call H_apply_FCI_PT2(pt2, norm_pert, H_pert_diag, N_st) - - print *, 'Final step' - print *, 'N_det = ', N_det - print *, 'N_states = ', N_states - print *, 'PT2 = ', pt2 - print *, 'E = ', CI_energy - print *, 'E+PT2 = ', CI_energy+pt2 - print *, '-----' - call ezfio_set_full_ci_energy_pt2(CI_energy+pt2) - endif - call save_wavefunction - deallocate(pt2,norm_pert) -end diff --git a/plugins/Full_CI_ZMQ/fci_zmq.irp.f b/plugins/Full_CI_ZMQ/fci_zmq.irp.f index 0d883cae..5bf9cee2 100644 --- a/plugins/Full_CI_ZMQ/fci_zmq.irp.f +++ b/plugins/Full_CI_ZMQ/fci_zmq.irp.f @@ -10,6 +10,9 @@ program fci_zmq double precision :: hf_energy_ref logical :: has + double precision :: relative_error + relative_error=1.d-3 + pt2 = -huge(1.d0) threshold_davidson_in = threshold_davidson threshold_davidson = threshold_davidson_in * 100.d0 @@ -42,16 +45,17 @@ program fci_zmq print *, '-----' enddo endif - double precision :: E_CI_before(N_states) print*,'Beginning the selection ...' - if (.True.) then ! Avoid pre-calculation of CI_energy - E_CI_before(1:N_states) = CI_energy(1:N_states) - endif n_det_before = 0 + character*(8) :: pt2_string double precision :: correlation_energy_ratio + double precision :: threshold_selectors_save, threshold_generators_save + threshold_selectors_save = threshold_selectors + threshold_generators_save = threshold_generators + correlation_energy_ratio = 0.d0 if (.True.) then ! Avoid pre-calculation of CI_energy @@ -61,8 +65,31 @@ program fci_zmq (correlation_energy_ratio <= correlation_energy_ratio_max) & ) + + if (do_pt2) then + pt2_string = ' ' + pt2 = 0.d0 + if (N_states == 1) then + threshold_selectors = 1.d0 + threshold_generators = 1d0 + SOFT_TOUCH threshold_selectors threshold_generators + call ZMQ_pt2(CI_energy, pt2,relative_error) ! Stochastic PT2 + threshold_selectors = threshold_selectors_save + threshold_generators = threshold_generators_save + SOFT_TOUCH threshold_selectors threshold_generators + else + threshold_selectors = max(threshold_selectors,threshold_selectors_pt2) + threshold_generators = max(threshold_generators,threshold_generators_pt2) + SOFT_TOUCH threshold_selectors threshold_generators + call ZMQ_selection(0, pt2) ! Deterministic PT2 + endif + else + pt2_string = '(approx)' + endif + + correlation_energy_ratio = (CI_energy(1) - hf_energy_ref) / & - (E_CI_before(1) + pt2(1) - hf_energy_ref) + (CI_energy(1) + pt2(1) - hf_energy_ref) correlation_energy_ratio = min(1.d0,correlation_energy_ratio) @@ -74,7 +101,7 @@ program fci_zmq print*,'State ',k print *, 'PT2 = ', pt2(k) print *, 'E = ', CI_energy(k) - print *, 'E(before)+PT2 = ', E_CI_before(k)+pt2(k) + print *, 'E+PT2'//pt2_string//' = ', CI_energy(k)+pt2(k) enddo print *, '-----' @@ -87,10 +114,9 @@ program fci_zmq if(N_states.gt.1)then print*,'Variational + perturbative Energy difference' do i = 2, N_states - print*,'Delta E = ',E_CI_before(i)+ pt2(i) - (E_CI_before(1) + pt2(1)) + print*,'Delta E = ',CI_energy(i)+ pt2(i) - (CI_energy(1) + pt2(1)) enddo endif - E_CI_before(1:N_states) = CI_energy(1:N_states) n_det_before = N_det to_select = N_det @@ -108,47 +134,37 @@ program fci_zmq call diagonalize_CI call save_wavefunction call ezfio_set_full_ci_zmq_energy(CI_energy(1)) + call ezfio_set_full_ci_zmq_energy_pt2(CI_energy(1)+pt2(1)) + enddo endif + if (do_pt2) then + pt2 = 0.d0 + if (N_states == 1) then + threshold_selectors = 1.d0 + threshold_generators = 1d0 + SOFT_TOUCH threshold_selectors threshold_generators + call ZMQ_pt2(CI_energy, pt2,relative_error) ! Stochastic PT2 + threshold_selectors = threshold_selectors_save + threshold_generators = threshold_generators_save + SOFT_TOUCH threshold_selectors threshold_generators + else + threshold_selectors = max(threshold_selectors,threshold_selectors_pt2) + threshold_generators = max(threshold_generators,threshold_generators_pt2) + SOFT_TOUCH threshold_selectors threshold_generators + call ZMQ_selection(0, pt2) ! Deterministic PT2 + endif + endif + if (N_det < N_det_max) then threshold_davidson = threshold_davidson_in call diagonalize_CI call save_wavefunction call ezfio_set_full_ci_zmq_energy(CI_energy(1)) + call ezfio_set_full_ci_zmq_energy_pt2(CI_energy(1)+pt2(1)) + endif - if(do_pt2_end)then - print*,'Last iteration only to compute the PT2' - E_CI_before(1:N_states) = CI_energy(1:N_states) - double precision :: relative_error - relative_error=1.d-3 - pt2 = 0.d0 - if (N_states == 1) then - threshold_selectors = 1.d0 - threshold_generators = 1d0 - SOFT_TOUCH threshold_selectors threshold_generators - print *, 'Stochastic PT2' - call ZMQ_pt2(E_CI_before(1), pt2,relative_error) ! Stochastic PT2 - else - threshold_selectors = max(threshold_selectors,threshold_selectors_pt2) - threshold_generators = max(threshold_generators,threshold_generators_pt2) - SOFT_TOUCH threshold_selectors threshold_generators - print *, 'Deterministic PT2' - call ZMQ_selection(0, pt2) ! Deterministic PT2 - endif - print *, 'Final step' - print *, 'N_det = ', N_det - print *, 'N_states = ', N_states - do k=1,N_states - print *, 'State', k - print *, 'PT2 = ', pt2(k) - print *, 'E = ', E_CI_before(k) - print *, 'E+PT2 = ', E_CI_before(k)+pt2(k) - print *, '-----' - enddo - call ezfio_set_full_ci_zmq_energy(E_CI_before(1)) - call ezfio_set_full_ci_zmq_energy_pt2(E_CI_before(1)+pt2(1)) - endif end diff --git a/plugins/Full_CI_ZMQ/fci_zmq_pt2.irp.f b/plugins/Full_CI_ZMQ/fci_zmq_pt2.irp.f deleted file mode 100644 index c8ac7c54..00000000 --- a/plugins/Full_CI_ZMQ/fci_zmq_pt2.irp.f +++ /dev/null @@ -1,146 +0,0 @@ -program fci_zmq - implicit none - integer :: i,j,k - double precision, allocatable :: pt2(:) - integer :: degree - integer :: n_det_before, to_select - double precision :: threshold_davidson_in - - allocate (pt2(N_states)) - - double precision :: hf_energy_ref - logical :: has - double precision :: relative_error - relative_error=1.d-3 - - pt2 = -huge(1.d0) - threshold_davidson_in = threshold_davidson - threshold_davidson = threshold_davidson_in * 100.d0 - SOFT_TOUCH threshold_davidson - - call diagonalize_CI - call save_wavefunction - - call ezfio_has_hartree_fock_energy(has) - if (has) then - call ezfio_get_hartree_fock_energy(hf_energy_ref) - else - hf_energy_ref = ref_bitmask_energy - endif - - 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 - call diagonalize_CI - call save_wavefunction - print *, 'N_det = ', N_det - print *, 'N_states = ', N_states - do k=1,N_states - print*,'State ',k - print *, 'PT2 = ', pt2(k) - print *, 'E = ', CI_energy(k) - print *, 'E+PT2 = ', CI_energy(k) + pt2(k) - print *, '-----' - enddo - endif - - - print*,'Beginning the selection ...' - n_det_before = 0 - - double precision :: correlation_energy_ratio - double precision :: threshold_selectors_save, threshold_generators_save - threshold_selectors_save = threshold_selectors - threshold_generators_save = threshold_generators - - correlation_energy_ratio = 0.d0 - - if (.True.) then ! Avoid pre-calculation of CI_energy - do while ( & - (N_det < N_det_max) .and. & - (maxval(abs(pt2(1:N_states))) > pt2_max) .and. & - (correlation_energy_ratio <= correlation_energy_ratio_max) & - ) - - - pt2 = 0.d0 - if (N_states == 1) then - threshold_selectors = 1.d0 - threshold_generators = 1d0 - SOFT_TOUCH threshold_selectors threshold_generators - call ZMQ_pt2(CI_energy, pt2,relative_error) ! Stochastic PT2 - threshold_selectors = threshold_selectors_save - threshold_generators = threshold_generators_save - SOFT_TOUCH threshold_selectors threshold_generators - else - threshold_selectors = max(threshold_selectors,threshold_selectors_pt2) - threshold_generators = max(threshold_generators,threshold_generators_pt2) - SOFT_TOUCH threshold_selectors threshold_generators - call ZMQ_selection(0, pt2) ! Deterministic PT2 - endif - - - correlation_energy_ratio = (CI_energy(1) - hf_energy_ref) / & - (CI_energy(1) + pt2(1) - hf_energy_ref) - correlation_energy_ratio = min(1.d0,correlation_energy_ratio) - - - print *, 'N_det = ', N_det - print *, 'N_states = ', N_states - print*, 'correlation_ratio = ', correlation_energy_ratio - - do k=1, N_states - print*,'State ',k - print *, 'PT2 = ', pt2(k) - print *, 'E = ', CI_energy(k) - print *, 'E+PT2 = ', CI_energy(k)+pt2(k) - enddo - - print *, '-----' - if(N_states.gt.1)then - print*,'Variational Energy difference' - do i = 2, N_states - print*,'Delta E = ',CI_energy(i) - CI_energy(1) - enddo - endif - if(N_states.gt.1)then - print*,'Variational + perturbative Energy difference' - do i = 2, N_states - print*,'Delta E = ',CI_energy(i)+ pt2(i) - (CI_energy(1) + pt2(1)) - enddo - endif - - n_det_before = N_det - to_select = N_det - to_select = max(N_det, to_select) - to_select = min(to_select, N_det_max-n_det_before) - call ZMQ_selection(to_select, pt2) - - PROVIDE psi_coef - PROVIDE psi_det - PROVIDE psi_det_sorted - - if (N_det >= N_det_max) then - threshold_davidson = threshold_davidson_in - end if - call diagonalize_CI - call save_wavefunction - call ezfio_set_full_ci_zmq_energy(CI_energy(1)) - call ezfio_set_full_ci_zmq_energy_pt2(CI_energy(1)+pt2(1)) - - enddo - endif - - if (N_det < N_det_max) then - threshold_davidson = threshold_davidson_in - call diagonalize_CI - call save_wavefunction - call ezfio_set_full_ci_zmq_energy(CI_energy(1)) - call ezfio_set_full_ci_zmq_energy_pt2(CI_energy(1)+pt2(1)) - - endif - - -end diff --git a/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f b/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f index afbf692c..afeb08fd 100644 --- a/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f +++ b/plugins/Full_CI_ZMQ/pt2_stoch_routines.irp.f @@ -9,96 +9,102 @@ subroutine ZMQ_pt2(E, pt2,relative_error) implicit none - character(len=64000) :: task + character(len=64000) :: task integer(ZMQ_PTR) :: zmq_to_qp_run_socket, zmq_to_qp_run_socket2 type(selection_buffer) :: b integer, external :: omp_get_thread_num double precision, intent(in) :: relative_error, E double precision, intent(out) :: pt2(N_states) - - double precision, allocatable :: pt2_detail(:,:), comb(:) - logical, allocatable :: computed(:) - integer, allocatable :: tbc(:) - integer :: i, j, k, Ncomb, generator_per_task, i_generator_end - integer, external :: pt2_find - double precision :: sumabove(comb_teeth), sum2above(comb_teeth), Nabove(comb_teeth) - double precision, external :: omp_get_wtime - double precision :: time - - allocate(pt2_detail(N_states, N_det_generators+1), comb(N_det_generators), computed(N_det_generators), tbc(0:size_tbc)) - sumabove = 0d0 - sum2above = 0d0 - Nabove = 0d0 - - provide nproc fragment_first fragment_count mo_bielec_integrals_in_map mo_mono_elec_integral pt2_weight psi_selectors - - computed = .false. - - tbc(0) = first_det_of_comb - 1 - do i=1, tbc(0) - tbc(i) = i - computed(i) = .true. - end do + double precision, allocatable :: pt2_detail(:,:), comb(:) + logical, allocatable :: computed(:) + integer, allocatable :: tbc(:) + integer :: i, j, k, Ncomb, generator_per_task, i_generator_end + integer, external :: pt2_find - pt2_detail = 0d0 - generator_per_task = 1 - print *, '========== ================= ================= =================' - print *, ' Samples Energy Stat. Error Seconds ' - print *, '========== ================= ================= =================' + double precision :: sumabove(comb_teeth), sum2above(comb_teeth), Nabove(comb_teeth) + double precision, external :: omp_get_wtime + double precision :: time + + if (N_det < 10) then + call ZMQ_selection(0, pt2) + return + else - call new_parallel_job(zmq_to_qp_run_socket,'pt2') - call zmq_put_psi(zmq_to_qp_run_socket,1,pt2_e0_denominator,size(pt2_e0_denominator)) - call create_selection_buffer(1, 1*2, b) - - Ncomb=size(comb) - call get_carlo_workbatch(computed, comb, Ncomb, tbc) - - integer(ZMQ_PTR), external :: new_zmq_to_qp_run_socket - integer :: ipos - ipos=1 - - do i=1,tbc(0) - if(tbc(i) > fragment_first) then - write(task(ipos:ipos+20),'(I9,1X,I9,''|'')') 0, tbc(i) - ipos += 20 - if (ipos > 63980) then - call add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) - ipos=1 - endif - else - do j=1,fragment_count - write(task(ipos:ipos+20),'(I9,1X,I9,''|'')') j, tbc(i) + allocate(pt2_detail(N_states, N_det_generators+1), comb(N_det_generators), computed(N_det_generators), tbc(0:size_tbc)) + sumabove = 0d0 + sum2above = 0d0 + Nabove = 0d0 + + provide nproc fragment_first fragment_count mo_bielec_integrals_in_map mo_mono_elec_integral pt2_weight psi_selectors + + computed = .false. + + tbc(0) = first_det_of_comb - 1 + do i=1, tbc(0) + tbc(i) = i + computed(i) = .true. + end do + + pt2_detail = 0d0 + generator_per_task = 1 + print *, '========== ================= ================= =================' + print *, ' Samples Energy Stat. Error Seconds ' + print *, '========== ================= ================= =================' + + call new_parallel_job(zmq_to_qp_run_socket,'pt2') + call zmq_put_psi(zmq_to_qp_run_socket,1,pt2_e0_denominator,size(pt2_e0_denominator)) + call create_selection_buffer(1, 1*2, b) + + Ncomb=size(comb) + call get_carlo_workbatch(computed, comb, Ncomb, tbc) + + integer(ZMQ_PTR), external :: new_zmq_to_qp_run_socket + integer :: ipos + ipos=1 + + do i=1,tbc(0) + if(tbc(i) > fragment_first) then + write(task(ipos:ipos+20),'(I9,1X,I9,''|'')') 0, tbc(i) ipos += 20 if (ipos > 63980) then call add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) ipos=1 endif - end do - end if - end do - if (ipos > 1) then - call add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) - endif - - call zmq_set_running(zmq_to_qp_run_socket) - - !$OMP PARALLEL DEFAULT(shared) NUM_THREADS(nproc+1) & - !$OMP PRIVATE(i) + else + do j=1,fragment_count + write(task(ipos:ipos+20),'(I9,1X,I9,''|'')') j, tbc(i) + ipos += 20 + if (ipos > 63980) then + call add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) + ipos=1 + endif + end do + end if + end do + if (ipos > 1) then + call add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) + endif + + call zmq_set_running(zmq_to_qp_run_socket) + + !$OMP PARALLEL DEFAULT(shared) NUM_THREADS(nproc+1) & + !$OMP PRIVATE(i) i = omp_get_thread_num() if (i==0) then call pt2_collector(E, b, tbc, comb, Ncomb, computed, pt2_detail, sumabove, sum2above, Nabove, relative_error, pt2) else call pt2_slave_inproc(i) endif - !$OMP END PARALLEL - call delete_selection_buffer(b) - call end_parallel_job(zmq_to_qp_run_socket, 'pt2') - - print *, '========== ================= ================= =================' - - deallocate(pt2_detail, comb, computed, tbc) + !$OMP END PARALLEL + call delete_selection_buffer(b) + call end_parallel_job(zmq_to_qp_run_socket, 'pt2') + + print *, '========== ================= ================= =================' + + deallocate(pt2_detail, comb, computed, tbc) + endif end subroutine @@ -279,7 +285,6 @@ subroutine pt2_collector(E, b, tbc, comb, Ncomb, computed, pt2_detail, sumabove, prop = prop * pt2_weight_inv(first_det_of_teeth(tooth)) E0 += pt2_detail(1,first_det_of_teeth(tooth)) * prop pt2(1) = E0 + (sumabove(tooth) / Nabove(tooth)) - eqt = sqrt(1d0 / (Nabove(tooth)-1) * abs(sum2above(tooth) / Nabove(tooth) - (sumabove(tooth)/Nabove(tooth))**2)) call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) call end_zmq_pull_socket(zmq_socket_pull) @@ -471,7 +476,7 @@ end subroutine end if norm_left -= pt2_weight(i) end do - first_det_of_comb = max(1,first_det_of_comb) + first_det_of_comb = max(2,first_det_of_comb) call write_int(6, first_det_of_comb-1, 'Size of deterministic set') comb_step = (1d0 - pt2_cweight(first_det_of_comb-1)) * comb_step diff --git a/plugins/mrcepa0/mrcc.irp.f b/plugins/mrcepa0/mrcc.irp.f index bb184761..e0ae3e21 100644 --- a/plugins/mrcepa0/mrcc.irp.f +++ b/plugins/mrcepa0/mrcc.irp.f @@ -19,7 +19,7 @@ program mrsc2sub SOFT_TOUCH psi_coef endif call run(N_states,energy) - if(do_pt2_end)then + if(do_pt2)then call run_pt2(N_states,energy) endif deallocate(energy) diff --git a/plugins/mrcepa0/mrcepa0.irp.f b/plugins/mrcepa0/mrcepa0.irp.f index aeacbb39..8f009739 100644 --- a/plugins/mrcepa0/mrcepa0.irp.f +++ b/plugins/mrcepa0/mrcepa0.irp.f @@ -21,7 +21,7 @@ program mrcepa0 call print_cas_coefs call run(N_states,energy) - if(do_pt2_end)then + if(do_pt2)then call run_pt2(N_states,energy) endif deallocate(energy) diff --git a/plugins/mrcepa0/mrsc2.irp.f b/plugins/mrcepa0/mrsc2.irp.f index 948b1b5c..4ef2b4a1 100644 --- a/plugins/mrcepa0/mrsc2.irp.f +++ b/plugins/mrcepa0/mrsc2.irp.f @@ -18,7 +18,7 @@ program mrsc2 TOUCH psi_coef endif call run(N_states,energy) - if(do_pt2_end)then + if(do_pt2)then call run_pt2(N_states,energy) endif deallocate(energy)