UP | HOME

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

3.6 Tests

Author: Anthony Scemama

Created: 2023-06-26 Mon 15:36

Validate