QCaml/Basis/TwoElectronIntegrals.mli

39 lines
1.1 KiB
OCaml
Raw Permalink Normal View History

(** Two-electron integrals with an arbitrary operator, with a functorial interface
parameterized by the fundamental two-electron integrals.
{% $(00|00)^m = \int \int \phi_p(r1) \hat{O} \phi_q(r2) dr_1 dr_2 $ %} : Fundamental two-electron integral
*)
2019-10-24 11:25:49 +02:00
module type TwoEI_structure =
sig
val name : string
(** Name of the kind of integrals, for printing purposes. *)
2020-05-08 01:12:31 +02:00
val class_of_contracted_shell_pair_couple :
basis:Basis.t -> ContractedShellPairCouple.t -> float Zmap.t
2019-10-24 11:25:49 +02:00
(** Returns an integral class from a couple of contracted shells.
The results is stored in a Zmap.
*)
end
2019-10-24 11:25:49 +02:00
module Make : functor (T : TwoEI_structure) ->
sig
include module type of FourIdxStorage
2020-09-25 16:00:20 +02:00
(*
val filter_contracted_shell_pairs :
2020-05-08 01:12:31 +02:00
?cutoff:float -> basis:Basis.t ->
ContractedShellPair.t list -> ContractedShellPair.t list
(** Uses Schwartz screening on contracted shell pairs. *)
2020-09-25 16:00:20 +02:00
*)
val of_basis : Basis.t -> t
(** Compute all ERI's for a given {!Basis.t}. *)
end