diff --git a/ocaml/myocamlbuild.ml b/ocaml/myocamlbuild.ml new file mode 100644 index 00000000..2980af57 --- /dev/null +++ b/ocaml/myocamlbuild.ml @@ -0,0 +1,13 @@ +open Ocamlbuild_plugin;; +open Command;; + +dispatch begin function + | Before_rules -> + begin + end + | After_rules -> + begin + flag ["ocaml";"compile";"native";"gprof"] (S [ A "-p"]); + end + | _ -> () +end diff --git a/plugins/Full_CI_ZMQ/energy.irp.f b/plugins/Full_CI_ZMQ/energy.irp.f index 281f8eea..a8361b2d 100644 --- a/plugins/Full_CI_ZMQ/energy.irp.f +++ b/plugins/Full_CI_ZMQ/energy.irp.f @@ -12,14 +12,15 @@ BEGIN_PROVIDER [ double precision, pt2_E0_denominator, (N_states) ] ! E0 in the denominator of the PT2 END_DOC if (initialize_pt2_E0_denominator) then - pt2_E0_denominator(1:N_states) = psi_energy(1:N_states) + pt2_E0_denominator(1:N_states) = psi_energy(1:N_states) ! call ezfio_get_full_ci_zmq_energy(pt2_E0_denominator(1)) ! pt2_E0_denominator(1) -= nuclear_repulsion ! pt2_E0_denominator(1:N_states) = HF_energy - nuclear_repulsion -! pt2_E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states) +! pt2_E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states) call write_double(6,pt2_E0_denominator(1)+nuclear_repulsion, 'PT2 Energy denominator') else pt2_E0_denominator = -huge(1.d0) endif END_PROVIDER + diff --git a/plugins/shiftedbk/shifted_bk_routines.irp.f b/plugins/shiftedbk/shifted_bk_routines.irp.f index 498e6e42..aae25315 100644 --- a/plugins/shiftedbk/shifted_bk_routines.irp.f +++ b/plugins/shiftedbk/shifted_bk_routines.irp.f @@ -84,9 +84,9 @@ BEGIN_PROVIDER [ double precision, E0_denominator, (N_states) ] if (initialize_E0_denominator) then E0_denominator(1:N_states) = psi_energy(1:N_states) ! call ezfio_get_full_ci_zmq_energy(pt2_E0_denominator(1)) - ! pt2_E0_denominator(1) -= nuclear_repulsion - ! pt2_E0_denominator(1:N_states) = HF_energy - nuclear_repulsion - ! pt2_E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states) + ! E0_denominator(1) -= nuclear_repulsion + ! E0_denominator(1:N_states) = HF_energy - nuclear_repulsion + ! E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states) else E0_denominator = -huge(1.d0) endif diff --git a/src/Determinants/energy.irp.f b/src/Determinants/energy.irp.f new file mode 100644 index 00000000..5a49afc2 --- /dev/null +++ b/src/Determinants/energy.irp.f @@ -0,0 +1,31 @@ +BEGIN_PROVIDER [ double precision, diagonal_H_matrix_on_psi_det, (N_det) ] + implicit none + BEGIN_DOC + ! Diagonal of the Hamiltonian ordered as psi_det + END_DOC + double precision, external :: diag_h_mat_elem + integer :: i + + do i=1,N_det + diagonal_H_matrix_on_psi_det(i) = diag_h_mat_elem(psi_det(1,1,i),N_int) + enddo + +END_PROVIDER + +BEGIN_PROVIDER [ double precision, barycentric_electronic_energy, (N_states) ] + implicit none + BEGIN_DOC + ! TODO : ASCII Elephant + END_DOC + integer :: istate,i + + barycentric_electronic_energy(:) = 0.d0 + + do istate=1,N_states + do i=1,N_det + barycentric_electronic_energy(istate) += psi_coef(i,istate)*psi_coef(i,istate)*diagonal_H_matrix_on_psi_det(i) + enddo + enddo + +END_PROVIDER +