10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-06-29 08:24:43 +02:00
This commit is contained in:
Anthony Scemama 2018-02-01 17:46:10 +01:00
parent ffc2138419
commit 938e9c18fb
2 changed files with 21 additions and 40 deletions

View File

@ -191,46 +191,28 @@ let hvrr_two_e (angMom_a, angMom_b, angMom_c, angMom_d)
v1.(0) +. f2 *. v2.(0) v1.(0) +. f2 *. v2.(0)
| _ -> | _ ->
(* let ap = [| angMom_a.(0) ; angMom_a.(1) ; angMom_a.(2) |]
let key = Zkey.of_int_tuple (Zkey.Nine ( and bm = [| angMom_b.(0) ; angMom_b.(1) ; angMom_b.(2) |]
(angMom_a.(0)+1, angMom_a.(1)+1, angMom_a.(2)+1), and xyz =
(angMom_b.(0)+1, angMom_b.(1)+1, angMom_b.(2)+1), match angMom_b with
(angMom_c.(0)+1, angMom_c.(1)+1, angMom_c.(2)+1)) ) | [|_;0;0|] -> 0
in | [|_;_;0|] -> 1
| _ -> 2
try (Zmap.find map key).(0) with in
| Not_found -> ap.(xyz) <- ap.(xyz) + 1;
let result = ( bm.(xyz) <- bm.(xyz) - 1;
*) if (bm.(xyz) < 0) then 0. else
let ap = [| angMom_a.(0) ; angMom_a.(1) ; angMom_a.(2) |] let h1 =
and bm = [| angMom_b.(0) ; angMom_b.(1) ; angMom_b.(2) |] hrr0 ap bm angMom_c (totAngMom_a+1) (totAngMom_b-1) totAngMom_c
and xyz = in
match angMom_b with let f2 =
| [|_;0;0|] -> 0 (Coordinate.coord center_ab xyz)
| [|_;_;0|] -> 1 in
| _ -> 2 if (abs_float f2 < cutoff) then h1 else
in let h2 =
ap.(xyz) <- ap.(xyz) + 1; hrr0 angMom_a bm angMom_c totAngMom_a (totAngMom_b-1) totAngMom_c
bm.(xyz) <- bm.(xyz) - 1;
if (bm.(xyz) < 0) then 0. else
let h1 =
hrr0 ap bm angMom_c (totAngMom_a+1) (totAngMom_b-1) totAngMom_c
in
let f2 =
(Coordinate.coord center_ab xyz)
in
if (abs_float f2 < cutoff) then h1 else
let h2 =
hrr0 angMom_a bm angMom_c totAngMom_a (totAngMom_b-1) totAngMom_c
in
h1 +. f2 *. h2
(*
)
in in
let result = [|result|] in h1 +. f2 *. h2
Zmap.add map key result;
result.(0)
*)
and hrr angMom_a angMom_b angMom_c angMom_d and hrr angMom_a angMom_b angMom_c angMom_d
totAngMom_a totAngMom_b totAngMom_c totAngMom_d = totAngMom_a totAngMom_b totAngMom_c totAngMom_d =

View File

@ -36,7 +36,6 @@ let hvrr_two_e_vector (angMom_a, angMom_b, angMom_c, angMom_d)
| 1 -> let i = if angMom_a.(0) = 1 then 0 else if angMom_a.(1) = 1 then 1 else 2 | 1 -> let i = if angMom_a.(0) = 1 then 0 else if angMom_a.(1) = 1 then 1 else 2
in in
let f = expo_b *. (Coordinate.coord center_ab i) in let f = expo_b *. (Coordinate.coord center_ab i) in
if (abs_float f < cutoff) then empty else
Array.mapi (fun k c -> c *. expo_inv_p *. Array.mapi (fun k c -> c *. expo_inv_p *.
( (Coordinate.coord center_pq.(k) i) *. zero_m_array.(k).(m+1) ( (Coordinate.coord center_pq.(k) i) *. zero_m_array.(k).(m+1)
-. f *. zero_m_array.(k).(m) ) ) coef_prod -. f *. zero_m_array.(k).(m) ) ) coef_prod