mirror of
https://github.com/LCPQ/quantum_package
synced 2024-08-25 05:51:46 +02:00
Fixed overlap in Ocaml
This commit is contained in:
parent
7f0f90b442
commit
873112cb84
@ -1,6 +1,12 @@
|
|||||||
|
(**
|
||||||
|
* Computes the overlap <Psi_0 | Psi_1> where both Psi_0 and Psi_1 are truncated in the set
|
||||||
|
* of common determinants and normalized
|
||||||
|
*)
|
||||||
|
|
||||||
open Input_determinants_by_hand
|
open Input_determinants_by_hand
|
||||||
open Qptypes
|
open Qptypes
|
||||||
|
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
let ezfio, ezfio' =
|
let ezfio, ezfio' =
|
||||||
try
|
try
|
||||||
@ -40,26 +46,16 @@ let () =
|
|||||||
in
|
in
|
||||||
|
|
||||||
let overlap wf wf' =
|
let overlap wf wf' =
|
||||||
let norm =
|
let result, norm, norm' =
|
||||||
Hashtbl.fold (fun k c norm ->
|
Hashtbl.fold (fun k c (accu,norm,norm') ->
|
||||||
norm +. c *. c ) wf 0.
|
let (c',c) =
|
||||||
and norm' =
|
try (Hashtbl.find wf' k, c)
|
||||||
Hashtbl.fold (fun k c norm ->
|
with Not_found -> (0.,0.)
|
||||||
norm +. c *. c ) wf' 0.
|
|
||||||
in
|
|
||||||
let get_result wf wf' =
|
|
||||||
Hashtbl.fold (fun k c accu ->
|
|
||||||
let c' =
|
|
||||||
try Hashtbl.find wf' k
|
|
||||||
with Not_found -> 0.
|
|
||||||
in
|
in
|
||||||
accu +. c *. c' ) wf 0.
|
(accu +. c *. c' ,
|
||||||
in
|
norm +. c *. c ,
|
||||||
let result =
|
norm'+. c'*. c' )
|
||||||
if Hashtbl.length wf < Hashtbl.length wf' then
|
) wf (0.,0.,0.)
|
||||||
get_result wf wf'
|
|
||||||
else
|
|
||||||
get_result wf' wf
|
|
||||||
in
|
in
|
||||||
result /. (sqrt (norm *. norm'))
|
result /. (sqrt (norm *. norm'))
|
||||||
in
|
in
|
||||||
@ -72,6 +68,6 @@ let () =
|
|||||||
let o =
|
let o =
|
||||||
overlap wf wf'
|
overlap wf wf'
|
||||||
in
|
in
|
||||||
print_float (abs_float o);
|
print_float (abs_float o) ;
|
||||||
print_newline ()
|
print_newline ()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user