diff --git a/Basis/ERI.ml b/Basis/ERI.ml index 93a1cb6..a063491 100644 --- a/Basis/ERI.ml +++ b/Basis/ERI.ml @@ -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 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 (* diff --git a/Basis/TwoElectronRR.ml b/Basis/TwoElectronRR.ml index 1338ba4..5124026 100644 --- a/Basis/TwoElectronRR.ml +++ b/Basis/TwoElectronRR.ml @@ -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