UP | HOME

# Molecular orbitals

## Table of Contents

- 1. Summary
- 2. Frozen core
  - 2.1. Type
  - 2.2. Creation
  - 2.3. Access
  - 2.4. Printers
- 3. Orbital localization
  - 3.1. Type
  - 3.2. Edmiston-Rudenberg
  - 3.3. Boys
  - 3.4. Access
  - 3.5. Printers
  - 3.6. Tests

## 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