10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-11-19 04:22:21 +01:00

Added ERI.mli

This commit is contained in:
Anthony Scemama 2018-03-26 16:47:08 +02:00
parent 0715f56eaf
commit 031408f5ab
4 changed files with 45 additions and 1 deletions

View File

@ -6,6 +6,16 @@ open Bigarray
type t = (float, float32_elt, fortran_layout) Bigarray.Genarray.t type t = (float, float32_elt, fortran_layout) Bigarray.Genarray.t
let get ~r1 ~r2 t =
let i,k = r1
and j,l = r2
in
t.{i,k,j,l}
let get_chem t i j k l = get ~r1:(i,j) ~r2:(k,l) t
let get_phys t i j k l = get ~r1:(i,k) ~r2:(j,l) t
module Am = AngularMomentum module Am = AngularMomentum
module As = AtomicShell module As = AtomicShell
module Asp = AtomicShellPair module Asp = AtomicShellPair

29
Basis/ERI.mli Normal file
View File

@ -0,0 +1,29 @@
type t
val get : r1:int * int -> r2:int * int -> t -> float
val get_chem : t -> int -> int -> int -> int -> float
val get_phys : t -> int -> int -> int -> int -> float
val zero_m : maxm:int -> expo_pq_inv:float -> norm_pq_sq:float -> float array
val contracted_class_shell_pairs :
?schwartz_p:float Zmap.t ->
?schwartz_q:float Zmap.t ->
ContractedShellPair.t ->
ContractedShellPair.t -> float Zmap.t
val contracted_class_shell_pairs_vec :
?schwartz_p:float Zmap.t ->
?schwartz_q:float Zmap.t ->
ContractedShellPair.t ->
ContractedShellPair.t -> float Zmap.t
val contracted_class_atomic_shell_pairs :
?schwartz_p:float Zmap.t ->
?schwartz_q:float Zmap.t ->
AtomicShellPair.t ->
AtomicShellPair.t -> float Zmap.t
val of_basis : Basis.t -> t
val to_file : filename:string -> t -> unit

View File

@ -69,3 +69,5 @@ let norm_scales t =
norm_coef_scale_p_list norm_coef_scale_p_list
|> Array.concat |> Array.concat

View File

@ -2,6 +2,8 @@ open Lacaml.D
open Simulation open Simulation
open Constants open Constants
type t = Mat.t type t = Mat.t
let make ~density simulation = let make ~density simulation =
@ -21,7 +23,8 @@ let make ~density simulation =
if abs_float p > epsilon then if abs_float p > epsilon then
for mu = 1 to nu do for mu = 1 to nu do
m_F.{mu,nu} <- m_F.{mu,nu} +. p *. m_F.{mu,nu} <- m_F.{mu,nu} +. p *.
(m_G.{mu,lambda,nu,sigma} -. 0.5 *. m_G.{mu,lambda,sigma,nu}) (ERI.get_chem m_G mu lambda nu sigma
-. 0.5 *. ERI.get_chem m_G mu lambda sigma nu)
done done
done done
done done