Added AOBasis.values

This commit is contained in:
Anthony Scemama 2020-04-19 16:54:26 +02:00
parent 0b1c375fe0
commit eb2cd547fa
2 changed files with 21 additions and 2 deletions

View File

@ -28,6 +28,19 @@ let f12_ints t = Lazy.force t.f12_ints
let f12_over_r12_ints t = Lazy.force t.f12_over_r12_ints let f12_over_r12_ints t = Lazy.force t.f12_over_r12_ints
let cartesian t = t.cartesian let cartesian t = t.cartesian
module Am = AngularMomentum
module Cs = ContractedShell
let values t point =
let result = Vec.create (Basis.size t.basis) in
Array.iter (fun shell ->
Cs.values shell point
|> Array.iteri
(fun i_c value ->
let i = Cs.index shell + i_c + 1 in
result.{i} <- value)
) (Basis.contracted_shells t.basis);
result
let make ~cartesian ~basis ?f12 nuclei = let make ~cartesian ~basis ?f12 nuclei =
@ -78,13 +91,13 @@ let test_case name t =
let check_matrix title a r = let check_matrix title a r =
let a = Mat.to_array a in let a = Mat.to_array a in
Mat.to_array r Mat.to_array r
|> Array.iteri (fun i x -> |> Array.iteri (fun i x ->
let message = let message =
Printf.sprintf "%s line %d" title i Printf.sprintf "%s line %d" title i
in in
Alcotest.(check (array (float 1.e-10))) message a.(i) x Alcotest.(check (array (float 1.e-10))) message a.(i) x
) )
in in
let check_eri title a r = let check_eri title a r =

View File

@ -1,5 +1,7 @@
(** Data structure for Atomic Orbitals. *) (** Data structure for Atomic Orbitals. *)
open Lacaml.D
type t type t
(** {1 Accessors} *) (** {1 Accessors} *)
@ -34,6 +36,10 @@ val kin_ints : t -> KinInt.t
val cartesian : t -> bool val cartesian : t -> bool
(** If true, use cartesian Gaussians (6d, 10f, ...) *) (** If true, use cartesian Gaussians (6d, 10f, ...) *)
val values : t -> Coordinate.t -> Vec.t
(** Values of the AOs evaluated at a given point *)
(** {1 Creators} *) (** {1 Creators} *)