mirror of
https://gitlab.com/scemama/QCaml.git
synced 2024-11-19 04:22:21 +01:00
40 lines
1.1 KiB
OCaml
40 lines
1.1 KiB
OCaml
|
(** 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
|
||
|
|
||
|
*)
|
||
|
|
||
|
open Qcaml_common
|
||
|
open Qcaml_gaussian_basis
|
||
|
open Qcaml_linear_algebra
|
||
|
|
||
|
module type Two_ei_structure =
|
||
|
sig
|
||
|
val name : string
|
||
|
(** Name of the kind of integrals, for printing purposes. *)
|
||
|
|
||
|
val class_of_contracted_shell_pair_couple :
|
||
|
basis:Basis.t -> Contracted_shell_pair_couple.t -> float Zmap.t
|
||
|
(** Returns an integral class from a couple of contracted shells.
|
||
|
The results is stored in a Zmap.
|
||
|
*)
|
||
|
end
|
||
|
|
||
|
|
||
|
|
||
|
module Make : functor (T : Two_ei_structure) ->
|
||
|
sig
|
||
|
include module type of Four_idx_storage
|
||
|
|
||
|
val filter_contracted_shell_pairs :
|
||
|
?cutoff:float -> basis:Basis.t ->
|
||
|
Contracted_shell_pair.t list -> Contracted_shell_pair.t list
|
||
|
(** Uses Schwartz screening on contracted shell pairs. *)
|
||
|
|
||
|
val of_basis : Basis.t -> t
|
||
|
(** Compute all ERI's for a given {!Basis.t}. *)
|
||
|
|
||
|
end
|
||
|
|