mirror of
https://gitlab.com/scemama/QCaml.git
synced 2024-10-04 23:36:08 +02:00
Fixed Overlap
This commit is contained in:
parent
666a4f4f69
commit
cccf8d40b0
@ -32,20 +32,6 @@ let contracted_class_shell_pair shell_p geometry: float Zmap.t =
|
|||||||
let cutoff2 = cutoff *. cutoff
|
let cutoff2 = cutoff *. cutoff
|
||||||
exception NullIntegral
|
exception NullIntegral
|
||||||
|
|
||||||
(*
|
|
||||||
(** Unique index for integral <ij|kl> *)
|
|
||||||
let index i j k l =
|
|
||||||
let f i k =
|
|
||||||
let (p,r) =
|
|
||||||
if i <= k then (i,k) else (k,i)
|
|
||||||
in p+ (r*r-r)/2
|
|
||||||
in
|
|
||||||
let p = f i k and q = f j l in
|
|
||||||
f p q
|
|
||||||
*)
|
|
||||||
|
|
||||||
|
|
||||||
(** Write all integrals to a file with the <ij|kl> convention *)
|
|
||||||
let to_file ~filename basis geometry =
|
let to_file ~filename basis geometry =
|
||||||
let to_int_tuple x =
|
let to_int_tuple x =
|
||||||
let open Zkey in
|
let open Zkey in
|
||||||
|
@ -31,7 +31,7 @@ let contracted_class shell_a shell_b : float Zmap.t =
|
|||||||
let center_ab =
|
let center_ab =
|
||||||
shell_p.(ab).Shell_pair.center_ab
|
shell_p.(ab).Shell_pair.center_ab
|
||||||
in
|
in
|
||||||
let center_a =
|
let center_pa =
|
||||||
shell_p.(ab).Shell_pair.center_a
|
shell_p.(ab).Shell_pair.center_a
|
||||||
in
|
in
|
||||||
let expo_inv =
|
let expo_inv =
|
||||||
@ -51,10 +51,9 @@ let contracted_class shell_a shell_b : float Zmap.t =
|
|||||||
Overlap_primitives.hvrr (angMomA.(k), angMomB.(k))
|
Overlap_primitives.hvrr (angMomA.(k), angMomB.(k))
|
||||||
expo_inv
|
expo_inv
|
||||||
(Coordinate.coord center_ab k,
|
(Coordinate.coord center_ab k,
|
||||||
Coordinate.coord center_a k)
|
Coordinate.coord center_pa k)
|
||||||
in
|
in
|
||||||
let norm = norm_coef_scale.(i) in
|
let norm = norm_coef_scale.(i) in
|
||||||
let coef_prod = coef_prod *. norm in
|
|
||||||
let integral = chop norm (fun () -> (f 0)*.(f 1)*.(f 2)) in
|
let integral = chop norm (fun () -> (f 0)*.(f 1)*.(f 2)) in
|
||||||
contracted_class.(i) <- contracted_class.(i) +. coef_prod *. integral
|
contracted_class.(i) <- contracted_class.(i) +. coef_prod *. integral
|
||||||
) class_indices
|
) class_indices
|
||||||
|
@ -11,8 +11,8 @@ let hvrr (angMom_a, angMom_b) (expo_inv_p) (center_ab, center_pa)
|
|||||||
if angMom_a < 0 then 0.
|
if angMom_a < 0 then 0.
|
||||||
else if angMom_a = 0 then 1.
|
else if angMom_a = 0 then 1.
|
||||||
else
|
else
|
||||||
chop center_pa (fun () -> vrr (angMom_a-1))
|
(chop center_pa (fun () -> vrr (angMom_a-1)))
|
||||||
+. chop (0.5 *. (float_of_int (angMom_a-1)) *. expo_inv_p)
|
+. chop (0.5 *. (float_of_int (angMom_a-1)) *. expo_inv_p)
|
||||||
(fun () -> vrr (angMom_a-2))
|
(fun () -> vrr (angMom_a-2))
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,15 +2,16 @@ open Util
|
|||||||
open Constants
|
open Constants
|
||||||
|
|
||||||
type t = {
|
type t = {
|
||||||
expo : float;
|
expo : float; (* alpha + beta *)
|
||||||
expo_inv : float;
|
expo_inv : float; (* 1/(alpha + beta) *)
|
||||||
center_ab: Coordinate.t;
|
center : Coordinate.t; (* P = (alpha * A + beta B)/(alpha+beta) *)
|
||||||
center_a : Coordinate.t;
|
center_a : Coordinate.t; (* P - A *)
|
||||||
center : Coordinate.t;
|
center_ab: Coordinate.t; (* A - B *)
|
||||||
norm_sq : float;
|
norm_sq : float; (* |A-B|^2 *)
|
||||||
norm_coef: float;
|
norm_coef: float; (* norm_coef_a * norm_coef_b *)
|
||||||
coef : float;
|
coef : float; (* norm_coef * coef_a * coef_b * g, with
|
||||||
norm_coef_scale : float array;
|
g = (pi/(alpha+beta))^(3/2) exp (-|A-B|^2 * alpha*beta/(alpha+beta)) *)
|
||||||
|
norm_coef_scale : float array; (* norm_coef.(i) / norm_coef.(0) *)
|
||||||
i : int;
|
i : int;
|
||||||
j : int;
|
j : int;
|
||||||
shell_a : Contracted_shell.t;
|
shell_a : Contracted_shell.t;
|
||||||
|
Loading…
Reference in New Issue
Block a user