Working on ERI

This commit is contained in:
Anthony Scemama 2018-01-24 02:14:37 +01:00
parent fdf6b02043
commit e9c0a8d0db
2 changed files with 25 additions and 22 deletions

View File

@ -30,7 +30,10 @@ let contracted_class_shell_pairs ?schwartz_p ?schwartz_q shell_p shell_q : float
TwoElectronRR.contracted_class_shell_pairs ~zero_m ?schwartz_p ?schwartz_q shell_p shell_q
let cutoff2 = cutoff *. cutoff
(*
type n_cls = { n : int ; cls : Z.t array }
*)
exception NullIntegral
(** Write all integrals to a file with the <ij|kl> convention *)
@ -60,6 +63,8 @@ let to_file ~filename basis =
) pair_array ) shell_pairs
in
let inn = ref 0 and out = ref 0 in
for i=0 to (Array.length basis) - 1 do
print_int basis.(i).Contracted_shell.indice ; print_newline ();
for j=0 to i do
@ -73,7 +78,7 @@ let to_file ~filename basis =
for l=0 to k do
let schwartz_q, schwartz_q_max = schwartz.(k).(l) in
try
if schwartz_p_max *. schwartz_q_max < cutoff *. cutoff then
if schwartz_p_max *. schwartz_q_max < cutoff2 then
raise NullIntegral;
let
shell_q = shell_pairs.(k).(l)
@ -103,18 +108,23 @@ let to_file ~filename basis =
Zmap.find cls key
in
if (abs_float value > cutoff) then
(inn := !inn + 1;
Printf.fprintf oc "%4d %4d %4d %4d %20.12e\n"
i_c k_c j_c l_c value
)
else
out := !out + 1;
) basis.(l).Contracted_shell.powers
) basis.(k).Contracted_shell.powers
) basis.(j).Contracted_shell.powers
) basis.(i).Contracted_shell.powers;
with NullIntegral -> print_endline "Schwartz"; ()
with NullIntegral -> ()
done;
done;
with NullIntegral -> print_endline "Big Schwartz"; ()
with NullIntegral -> ()
done;
done;
Printf.printf "In: %d Out:%d\n" !inn !out ;
close_out oc
(*

View File

@ -27,8 +27,8 @@ let hvrr_two_e m (angMom_a, angMom_b, angMom_c, angMom_d)
| (0,0) -> zero_m_array.(m)
| (_,0) ->
let key = [| angMom_a.(0)+1; angMom_a.(1)+1; angMom_a.(2)+1; |]
|> Zkey.(of_int_array ~kind:Kind_3)
let key = Zkey.of_int_tuple (Zkey.Three
(angMom_a.(0)+1, angMom_a.(1)+1, angMom_a.(2)+1) )
in
let (found, result) =
@ -61,9 +61,10 @@ let hvrr_two_e m (angMom_a, angMom_b, angMom_c, angMom_d)
| (_,_) ->
let key = [| angMom_a.(0)+1; angMom_a.(1)+1; angMom_a.(2)+1;
angMom_c.(0)+1; angMom_c.(1)+1; angMom_c.(2)+1; |]
|> Zkey.(of_int_array ~kind:Kind_6)
let key = Zkey.of_int_tuple (Zkey.Six
((angMom_a.(0)+1, angMom_a.(1)+1, angMom_a.(2)+1),
(angMom_c.(0)+1, angMom_c.(1)+1, angMom_c.(2)+1)) )
in
let (found, result) =
@ -110,11 +111,12 @@ let hvrr_two_e m (angMom_a, angMom_b, angMom_c, angMom_d)
| (0,0) -> vrr m angMom_a angMom_c totAngMom_a totAngMom_c
| (_,_) ->
let key = [| angMom_a.(0)+1; angMom_a.(1)+1; angMom_a.(2)+1;
angMom_b.(0)+1; angMom_b.(1)+1; angMom_b.(2)+1;
angMom_c.(0)+1; angMom_c.(1)+1; angMom_c.(2)+1;
angMom_d.(0)+1; angMom_d.(1)+1; angMom_d.(2)+1; |]
|> Zkey.(of_int_array ~kind:Kind_12)
let key = Zkey.of_int_tuple (Zkey.Twelve
(( angMom_a.(0)+1, angMom_a.(1)+1, angMom_a.(2)+1),
( angMom_b.(0)+1, angMom_b.(1)+1, angMom_b.(2)+1),
( angMom_c.(0)+1, angMom_c.(1)+1, angMom_c.(2)+1),
( angMom_d.(0)+1, angMom_d.(1)+1, angMom_d.(2)+1)) )
in
let (found, result) =
@ -189,15 +191,6 @@ let contracted_class_shell_pairs ~zero_m ?schwartz_p ?schwartz_q shell_p shell_q
totAngMom shell_c, totAngMom shell_d))
in
(*
(* Precomputation of overlaps *)
let overlaps_p =
Overlap.contracted_class shell_a shell_b
and overlaps_q =
Overlap.contracted_class shell_c shell_d
in
*)
let contracted_class =
Array.make (Array.length class_indices) 0.;
in