10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-07-25 12:17:25 +02:00

Transposed 0m

This commit is contained in:
Anthony Scemama 2018-02-02 18:51:17 +01:00
parent e9c25e7fe4
commit 9a8f440f7a

View File

@ -43,10 +43,10 @@ let hvrr_two_e_vector (angMom_a, angMom_b, angMom_c, angMom_d)
in
let f = expo_b *. (Coordinate.coord center_ab xyz) in
Array.mapi (fun k c -> c *. expo_inv_p *.
( (Coordinate.coord center_pq.(k) xyz) *. zero_m_array.(k).(m+1)
-. f *. zero_m_array.(k).(m) ) ) coef_prod
( (Coordinate.coord center_pq.(k) xyz) *. zero_m_array.(m+1).(k)
-. f *. zero_m_array.(m).(k) ) ) coef_prod
| 0 -> Array.mapi (fun k c -> c *. zero_m_array.(k).(m)) coef_prod
| 0 -> Array.mapi (fun k c -> c *. zero_m_array.(m).(k)) coef_prod
| totAngMom_a ->
let key = Zkey.of_int_tuple (Zkey.Three angMom_a)
in
@ -93,8 +93,7 @@ let hvrr_two_e_vector (angMom_a, angMom_b, angMom_c, angMom_d)
| (i,0) -> if (i>0) then
vrr0_v m angMom_a totAngMom_a
else
(* TODO : TRANSPOSE zero_m_array *)
Array.mapi (fun k c -> c *. zero_m_array.(k).(m)) coef_prod
Array.mapi (fun k c -> c *. zero_m_array.(m).(k)) coef_prod
| (_,_) ->
let key = Zkey.of_int_tuple (Zkey.Six (angMom_a, angMom_c))
@ -196,7 +195,7 @@ let hvrr_two_e_vector (angMom_a, angMom_b, angMom_c, angMom_d)
| 0 ->
begin
match (totAngMom_a, totAngMom_c) with
| (0,0) -> Array.mapi (fun k c -> c *. zero_m_array.(k).(0)) coef_prod
| (0,0) -> Array.mapi (fun k c -> c *. zero_m_array.(0).(k)) coef_prod
| (_,0) -> vrr0_v 0 angMom_a totAngMom_a
| (_,_) -> vrr_v 0 angMom_a angMom_c totAngMom_a totAngMom_c
end
@ -336,7 +335,7 @@ let contracted_class_shell_pairs ~zero_m ?schwartz_p ?schwartz_q shell_p shell_q
in
let zero_m_array =
zero_m ~maxm ~expo_pq_inv ~norm_pq_sq
zero_m ~maxm:0 ~expo_pq_inv ~norm_pq_sq
in
accu +. coef_prod *. zero_m_array.(0)
@ -391,6 +390,20 @@ let contracted_class_shell_pairs ~zero_m ?schwartz_p ?schwartz_q shell_p shell_q
and coef_prod = Array.map (fun (zero_m_array, expo_inv, d, center_cd,
center_pq,coef_prod) -> coef_prod) common
in
(* Transpose zero_m_array
*)
let zero_m_array =
let result = Array.init (maxm+1) (fun _ ->
Array.make (Array.length coef_prod) 0.)
in
for m=0 to maxm do
for k=0 to (Array.length coef_prod-1) do
result.(m).(k) <- zero_m_array.(k).(m)
done;
done;
result
in
(* Compute the integral class from the primitive shell quartet *)
let map_1d = Array.init maxm (fun _ -> Zmap.create (4*maxm)) in
let map_2d = Array.init maxm (fun _ -> Zmap.create (Array.length class_indices)) in