diff --git a/CI/CI.ml b/CI/CI.ml index 9133690..f8f6ec4 100644 --- a/CI/CI.ml +++ b/CI/CI.ml @@ -410,14 +410,13 @@ let make ?(n_states=1) det_space = let second_order_sum { det_space ; m_H ; m_S2 ; eigensystem ; n_states } - list_holes list_particles i_o1_alfa alfa_o2_i w_alfa = + list_holes list_particles i_o1_alfa alfa_o2_i w_alfa psi0 = let list_holes = Array.of_list list_holes and list_particles = Array.of_list list_particles in let psi0 = - let psi0, _ = Parallel.broadcast eigensystem in let stream = Ds.determinant_stream det_space @@ -600,7 +599,7 @@ let second_order_sum { det_space ; m_H ; m_S2 ; eigensystem ; n_states } let pt2_en ci = let mo_basis = Ds.mo_basis ci.det_space in - let _psi0, e0 = Parallel.broadcast ci.eigensystem in + let psi0, e0 = Parallel.broadcast ci.eigensystem in let i_o1_alfa = h_ij mo_basis in @@ -658,7 +657,7 @@ let pt2_en ci = in second_order_sum ci list_holes list_particles - i_o1_alfa i_o1_alfa w_alfa + i_o1_alfa i_o1_alfa w_alfa psi0 |> List.fold_left (+.) 0. @@ -688,8 +687,9 @@ let pt2_mp ci = [ MOClass.active_mos mo_class ; MOClass.virtual_mos mo_class ] in + let psi0, _ = Parallel.broadcast ci.eigensystem in second_order_sum ci list_holes list_particles - i_o1_alfa i_o1_alfa w_alfa + i_o1_alfa i_o1_alfa w_alfa psi0 |> List.fold_left (+.) 0. @@ -708,8 +708,9 @@ let variance ci = [ MOClass.active_mos mo_class ; MOClass.virtual_mos mo_class ] in + let psi0, _ = Parallel.broadcast ci.eigensystem in second_order_sum ci list_holes list_particles - i_o1_alfa i_o1_alfa w_alfa + i_o1_alfa i_o1_alfa w_alfa psi0 |> List.fold_left (+.) 0. diff --git a/CI/F12CI.ml b/CI/F12CI.ml index b2240b4..e27cd82 100644 --- a/CI/F12CI.ml +++ b/CI/F12CI.ml @@ -47,7 +47,7 @@ let f_ij mo_basis ki kj = |> List.hd -let dressing_vector ci = +let dressing_vector ci f12_amplitudes = let mo_basis = DeterminantSpace.mo_basis ci.CI.det_space in @@ -58,28 +58,13 @@ let dressing_vector ci = let mo_class = CI.mo_class ci in - let internal_term = - let list_holes = List.concat - [ MOClass.inactive_mos mo_class ; MOClass.active_mos mo_class ] - and list_particles = List.concat - [ MOClass.active_mos mo_class ; MOClass.virtual_mos mo_class ] - in - CI.second_order_sum ci list_holes list_particles - i_o1_alfa alfa_o2_i w_alfa - |> Vec.of_list + let list_holes = List.concat + [ MOClass.inactive_mos mo_class ; MOClass.active_mos mo_class ] + and list_particles = MOClass.auxiliary_mos mo_class in - - let external_term = - let list_holes = List.concat - [ MOClass.inactive_mos mo_class ; MOClass.active_mos mo_class ] - and list_particles = MOClass.auxiliary_mos mo_class - in - CI.second_order_sum ci list_holes list_particles - i_o1_alfa alfa_o2_i w_alfa - |> Vec.of_list - in - - Vec.sub external_term internal_term + CI.second_order_sum ci list_holes list_particles + i_o1_alfa alfa_o2_i w_alfa f12_amplitudes + |> Vec.of_list diff --git a/Utils/Matrix.ml b/Utils/Matrix.ml index 2b8b620..96c0164 100644 --- a/Utils/Matrix.ml +++ b/Utils/Matrix.ml @@ -576,19 +576,19 @@ let test_case () = let a = m1 and b = m2 in let x = ax_eq_b a b in - Alcotest.(check (float 1.e-10)) "dense dense 1" 0. (norm_diff (mm a x) b); + Alcotest.(check (float 1.e-10)) "dense dense 1" 0. (norm_diff (mm a x) b); let a = m1 and b = m2_s in let x = ax_eq_b a b in - Alcotest.(check (float 1.e-10)) "dense dense 2" 0. (norm_diff (mm a x) b); + Alcotest.(check (float 1.e-10)) "dense sparse 2" 0. (norm_diff (mm a x) b); let a = m1_s and b = m2 in let x = ax_eq_b a b in - Alcotest.(check (float 1.e-10)) "dense dense 2" 0. (norm_diff (mm a x) b); + Alcotest.(check (float 1.e-10)) "sparse dense 3" 0. (norm_diff (mm a x) b); let a = m1_s and b = m2_s in let x = ax_eq_b a b in - Alcotest.(check (float 1.e-10)) "dense dense 2" 0. (norm_diff (mm a x) b); + Alcotest.(check (float 1.e-10)) "sparse sparse 4" 0. (norm_diff (mm a x) b); in [