Molecular orbitals
Table of Contents
1 Summary
2 Frozen core
Defines how the core electrons are frozen, for each atom.
2.1 Type
type kind = | All_electron | Small | Large
type t
2.2 Creation
val make : kind -> Particles.Nuclei.t -> t val of_int_list : int list -> t val of_int_array : int array -> t
make |
Creates a Frozen_core.t with the same kind for all atoms |
of_int_array |
Creates a Frozen_core.t giving the number of frozen electrons per atom |
of_int_list |
Creates a Frozen_core.t giving the number of frozen electrons per atom |
let f = Frozen_core.(make Small nuclei) ;; val f : Frozen_core.t = [|0; 2; 2; 0|] let f = Frozen_core.(of_int_list [0; 2; 2; 0]) val f : Frozen_core.t = [|0; 2; 2; 0|]
2.3 Access
val num_elec : t -> int val num_mos : t -> int
num_elec |
Number of frozen electrons |
num_mos |
Number of frozen molecular orbitals |
Frozen_core.num_elec f ;; - : int = 4 Frozen_core.num_mos f ;; - : int = 2
2.4 Printers
val pp : Format.formatter -> t -> unit
3 Orbital localization
Molecular orbital localization function.
Boys:
Edmiston-Rudenberg:
3.1 Type
open Linear_algebra type localization_kind = | Edmiston | Boys type mo = Mo_dim.t type ao = Ao.Ao_dim.t type loc
type localization_data type t
3.2 Edmiston-Rudenberg
3.3 Boys
3.4 Access
val kind : t -> localization_kind val simulation : t -> Simulation.t val selected_mos : t -> int list val kappa : kind:localization_kind -> Basis.t -> ( ao,loc) Matrix.t -> (loc,loc) Matrix.t * float val make : kind:localization_kind -> ?max_iter:int -> ?convergence:float -> Basis.t -> int list -> t val to_basis : t -> Basis.t
kappa |
Returns the \(\kappa\) antisymmetric matrix used for the rotation matrix and the value of the localization function |
make |
Performs the orbital localization |
3.5 Printers
val pp : Format.formatter -> t -> unit