mirror of
https://gitlab.com/scemama/QCaml.git
synced 2024-12-22 04:13:33 +01:00
Introducing unique shell pairs
This commit is contained in:
parent
5b4d49773d
commit
d7c3c9f6b7
@ -1,17 +1,5 @@
|
|||||||
type t
|
type t
|
||||||
(*
|
|
||||||
type t = {
|
|
||||||
expo : float array;
|
|
||||||
coef : float array;
|
|
||||||
center : Coordinate.t;
|
|
||||||
totAngMom : Angular_momentum.t;
|
|
||||||
size : int;
|
|
||||||
norm_coef : float array;
|
|
||||||
norm_coef_scale : float array;
|
|
||||||
indice : int;
|
|
||||||
powers : Zkey.t array;
|
|
||||||
}
|
|
||||||
*)
|
|
||||||
|
|
||||||
(** Returns the number of contracted Gaussians *)
|
(** Returns the number of contracted Gaussians *)
|
||||||
val size : t -> int
|
val size : t -> int
|
||||||
|
11
Basis/ERI.ml
11
Basis/ERI.ml
@ -72,11 +72,7 @@ let to_file ~filename basis =
|
|||||||
|
|
||||||
(* Pre-compute all shell pairs *)
|
(* Pre-compute all shell pairs *)
|
||||||
let shell_pairs =
|
let shell_pairs =
|
||||||
Array.mapi (fun i shell_a -> Array.map (fun shell_b ->
|
Shell_pair.shell_pairs basis
|
||||||
(*
|
|
||||||
Shell_pair.create_array shell_a shell_b) (Array.sub basis 0 (i+1)) ) basis
|
|
||||||
*)
|
|
||||||
Shell_pair.create_array shell_a shell_b) (basis) ) basis
|
|
||||||
in
|
in
|
||||||
Printf.printf "%d shells\n" (Array.length basis);
|
Printf.printf "%d shells\n" (Array.length basis);
|
||||||
|
|
||||||
@ -128,6 +124,11 @@ let to_file ~filename basis =
|
|||||||
let
|
let
|
||||||
shell_p = shell_pairs.(i).(j)
|
shell_p = shell_pairs.(i).(j)
|
||||||
in
|
in
|
||||||
|
(*
|
||||||
|
Printf.printf "%d %d : " i j;
|
||||||
|
Array.iter (fun i -> Printf.printf "%d " (Shell_pair.hash i)) shell_p;
|
||||||
|
print_newline ();
|
||||||
|
*)
|
||||||
|
|
||||||
for k=0 to i do
|
for k=0 to i do
|
||||||
for l=0 to k do
|
for l=0 to k do
|
||||||
|
@ -103,5 +103,26 @@ let create_array ?cutoff p_a p_b =
|
|||||||
|> List.map (function Some x -> x | None -> assert false)
|
|> List.map (function Some x -> x | None -> assert false)
|
||||||
|> Array.of_list
|
|> Array.of_list
|
||||||
|
|
||||||
open Util
|
|
||||||
|
let hash a =
|
||||||
|
Hashtbl.hash (a.expo, a.center_a, a.center_ab, a.coef)
|
||||||
|
|
||||||
|
let cmp a b =
|
||||||
|
hash a - hash b
|
||||||
|
|
||||||
|
|
||||||
|
let shell_pairs basis =
|
||||||
|
Array.mapi (fun i shell_a -> Array.map (fun shell_b ->
|
||||||
|
create_array shell_a shell_b) (Array.sub basis 0 (i+1)) ) basis
|
||||||
|
|
||||||
|
|
||||||
|
let unique_shell_pairs basis =
|
||||||
|
let map =
|
||||||
|
Hashtbl.create 129
|
||||||
|
in
|
||||||
|
Array.iter (fun spa ->
|
||||||
|
Array.iter (fun value ->
|
||||||
|
let key = hash value in
|
||||||
|
Hashtbl.add map key value) spa) basis;
|
||||||
|
map
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user