Skip to content

Molecular Orbitals

Molecular orbital files contain the coefficients that define how molecular orbitals (MOs) are constructed as linear combinations of atomic orbitals (AOs). These files specify the LCAO (Linear Combination of Atomic Orbitals) coefficients that transform the atomic basis into molecular orbitals used to build the Slater determinant wavefunction.

Overview

In quantum Monte Carlo, the trial wavefunction is constructed from molecular orbitals:

\[\phi_i(\mathbf{r}) = \sum_{j=1}^{N_{\text{AO}}} C_{ji} \chi_j(\mathbf{r})\]

where: - \(\phi_i(\mathbf{r})\) is the i-th molecular orbital - \(\chi_j(\mathbf{r})\) are atomic orbitals - \(C_{ji}\) are the LCAO coefficients stored in the orbital file - \(N_{\text{AO}}\) is the total number of atomic orbitals

Key Concepts

  • LCAO coefficients: Matrix elements defining MO construction from AOs
  • Occupation: Which MOs are filled in the reference configuration
  • Ordering convention: Atomic orbitals follow TREXIO alphabetical ordering
  • Spin-unrestricted: Separate orbital sets for up and down spins (if applicable)

File Format

Molecular orbital files (.lcao or .orb extension) are stored in the pool/ directory and are automatically generated by the trex2champ converter.

Basic Structure

lcao  226 200  1
 -5.234567e-01  4.123456e-02  1.987654e-03  ... (226 coefficients for MO 1)
  3.456789e-02 -2.345678e-01  5.678901e-02  ... (226 coefficients for MO 2)
  ... (remaining 198 rows of coefficients)
end

Format Specification

Header line: Dimensions and type

lcao  226 200  1

Format: lcao num_ao num_mo motype

  • lcao = keyword identifying this as an LCAO coefficient file
  • num_ao = 226: Number of atomic orbitals (basis functions)
  • num_mo = 200: Number of molecular orbitals
  • motype = 1

Coefficient matrix: One row per molecular orbital

Each row contains num_ao coefficients:

C(1,1)  C(2,1)  C(3,1)  ...  C(num_ao,1)
C(1,2)  C(2,2)  C(3,2)  ...  C(num_ao,2)
...
C(1,num_mo)  C(2,num_mo)  ...  C(num_ao,num_mo)

where C(j,i) is the coefficient of the j-th AO in the i-th MO.

Matrix dimensions: [num_mo × num_ao]

  • Rows = molecular orbitals
  • Columns = atomic orbitals
  • For a molecule with N AOs and M occupied/virtual MOs

Final line:

end

Atomic Orbital Ordering

The atomic orbitals follow the TREXIO convention with alphabetical ordering of Cartesian components.

Ordering by Angular Momentum

s-orbitals (l=0):

S
Single component (spherically symmetric).

p-orbitals (l=1):

X  Y  Z
Alphabetical order: px, py, pz

d-orbitals (l=2):

XX  XY  XZ  YY  YZ  ZZ
Alphabetical order of Cartesian products: d(x²), d(xy), d(xz), d(y²), d(yz), d(z²)

f-orbitals (l=3):

XXX  XXY  XXZ  XYY  XYZ  XZZ  YYY  YYZ  YZZ  ZZZ
Ten Cartesian f-functions in alphabetical order.

Multi-shell Example

For a basis with multiple shells of the same type:

Four p-type shells:

X₁ Y₁ Z₁   X₂ Y₂ Z₂   X₃ Y₃ Z₃   X₄ Y₄ Z₄
Each shell contributes three p-orbitals in X, Y, Z order.

Two d-type shells:

XX₁ XY₁ XZ₁ YY₁ YZ₁ ZZ₁   XX₂ XY₂ XZ₂ YY₂ YZ₂ ZZ₂
Each shell contributes six d-orbitals in alphabetical Cartesian order.

Full Atom Example

Carbon atom with basis: 3s, 2p, 1d shells

AO ordering (15 functions total):

S₁  S₂  S₃  X₁ Y₁ Z₁  X₂ Y₂ Z₂  XX YY XY XZ YZ ZZ

Position breakdown:

  • AOs 1-3: s-orbitals (3 shells)
  • AOs 4-9: p-orbitals (2 shells × 3 components)
  • AOs 10-15: d-orbitals (1 shell × 6 components)

Examples

Example 1: Water Molecule (Simple)

System: H₂O with minimal basis

  • O: 3s, 2p shells → 9 AOs
  • H: 2s shells → 2 AOs each
  • Total: 9 + 2 + 2 = 13 AOs
  • Molecular orbitals: 10 (5 occupied, 5 virtual)

Orbital file (water.lcao):

lcao  13 10  1
 -9.876543e-01  1.234567e-01  3.456789e-02  0.000000e+00  0.000000e+00  5.678901e-03  0.000000e+00  0.000000e+00  2.345678e-03  1.987654e-03
  2.345678e-02 -8.765432e-01  4.567890e-02  0.000000e+00  0.000000e+00  6.789012e-03  0.000000e+00  0.000000e+00  3.456789e-03  2.876543e-03
  3.456789e-03  5.678901e-02 -7.654321e-01  0.000000e+00  0.000000e+00  7.890123e-02  0.000000e+00  0.000000e+00  4.567890e-02  3.765432e-03
  0.000000e+00  0.000000e+00  0.000000e+00 -6.543210e-01  4.321098e-02  0.000000e+00  5.432109e-01  3.210987e-02  0.000000e+00  0.000000e+00
  0.000000e+00  0.000000e+00  0.000000e+00  4.321098e-02 -6.543210e-01  0.000000e+00  3.210987e-02  5.432109e-01  0.000000e+00  0.000000e+00
  0.000000e+00  0.000000e+00  0.000000e+00  5.432109e-02  0.000000e+00 -7.654321e-01  6.543210e-02  0.000000e+00  6.789012e-01  0.000000e+00
  1.234567e-03  2.345678e-03  3.456789e-03  0.000000e+00  0.000000e+00  8.901234e-02  0.000000e+00  0.000000e+00  5.678901e-02  4.654321e-03
  1.234567e-03  2.345678e-03  3.456789e-03  0.000000e+00  0.000000e+00  8.901234e-02  0.000000e+00  0.000000e+00  5.678901e-02  4.654321e-03
  2.345678e-03  3.456789e-03  4.567890e-03  0.000000e+00  0.000000e+00  9.012345e-02  0.000000e+00  0.000000e+00  6.789012e-02  5.543210e-03
  0.000000e+00  0.000000e+00  1.234567e-02  3.210987e-01  0.000000e+00  0.000000e+00  4.321098e-01  0.000000e+00  0.000000e+00  0.000000e+00
  0.000000e+00  0.000000e+00  1.234567e-02  0.000000e+00  3.210987e-01  0.000000e+00  0.000000e+00  4.321098e-01  0.000000e+00  0.000000e+00
  0.000000e+00  0.000000e+00  0.000000e+00  2.109876e-01  0.000000e+00  0.000000e+00 -3.210987e-01  0.000000e+00  0.000000e+00  0.000000e+00
  0.000000e+00  0.000000e+00  0.000000e+00  2.109876e-01  0.000000e+00  0.000000e+00 -3.210987e-01  0.000000e+00  0.000000e+00  0.000000e+00
end

Explanation:

  • 13 columns (AOs): 9 for O (3s + 6p), 4 for H atoms (2s each)
  • 10 rows (MOs): typically 5 doubly-occupied orbitals
  • First MO (row 1): core oxygen orbital (large coefficient on O 1s)
  • Symmetry reflected in zero coefficients for certain combinations

Example 2: Carbon Dioxide (Linear Molecule)

System: CO₂ (linear)

  • C: 4s, 3p, 2d shells → 22 AOs
  • O: 4s, 3p, 2d shells → 22 AOs each
  • Total: 22 + 22 + 22 = 66 AOs
  • Molecular orbitals: 50 (22 occupied, 28 virtual)

Orbital file (CO2.lcao):

lcao  66 50  1
 -9.123456e-01  2.345678e-01 ... (66 coefficients for MO 1)
  1.234567e-02 -8.234567e-01 ... (66 coefficients for MO 2)
  ... (48 more rows)
end

Loading Molecular Orbitals in CHAMP

From TREXIO File

The standard approach loads orbitals from the TREXIO file:

%module general
    title  'VMC calculation'
    pool   './pool/'
%endmodule

load trexio   $pool/molecule.hdf5
load jastrow  jastrow.jas

%module electrons
    nup    5
    nelec  10
%endmodule

The load trexio command extracts orbital coefficients automatically.

Explicit Orbital Loading

For separate orbital files:

load orbitals orbitals.lcao

Alternative Format (.orb)

CHAMP also supports .orb format (identical structure):

load orbitals orbitals.orb

The formats are interchangeable.

Generating Orbital Files

From TREXIO file

CHAMP can directly read the orbitals from the TREXIO file using the load trexio command. This is the recommended approach.

From Quantum Chemistry Codes

The trex2champ converter extracts orbitals frßm the TREXIO file:

#!/bin/bash
python trex2champ.py \
            --trex molecule.hdf5 \
            --basis_prefix "cc-VDZ" \
            --geom \
            --basis \
            --lcao

This creates: - Orbital files for each state - Properly ordered according to TREXIO convention - Consistent with basis set and geometry

Typical workflow:

  1. Run quantum chemistry calculation

    • Hartree-Fock or DFT for single determinant
    • MCSCF/CASSCF for multideterminant
    • CCSD for correlated orbitals
  2. Export to TREXIO format

    • Many codes now support TREXIO
    • Handles basis set and orbital transformation
  3. Convert to CHAMP format

    • Use the trex2champ converter.

Manual Verification

Check orbital file validity:

import numpy as np

# Read orbital file
# Read orbital file (rows=MOs, cols=AOs)
data = np.loadtxt('molecule.lcao', skiprows=1, max_rows=-1)
num_mo, num_ao = data.shape

print(f"Number of AOs: {num_ao}")
print(f"Number of MOs: {num_mo}")
print(f"Orbital 1 norm: {np.linalg.norm(data[0, :])}")

Orbital Properties

Normalization

Molecular orbitals are normalized with respect to the atomic orbital overlap matrix S:

\[\mathbf{C}^T \mathbf{S} \mathbf{C} = \mathbf{I}\]

where: - \(\mathbf{C}\) is the coefficient matrix - \(\mathbf{S}\) is the AO overlap matrix - \(\mathbf{I}\) is the identity matrix

Orthogonality

MOs are orthogonal in the AO basis metric:

\[\langle \phi_i | \phi_j \rangle = \sum_{k,l} C_{ki} S_{kl} C_{lj} = \delta_{ij}\]

Advanced Topics

Natural Orbitals

For multideterminant wavefunctions:

  • Natural orbitals diagonalize the one-particle density matrix
  • Occupation numbers between 0 and 2
  • Provide optimal single-particle representation
  • Generated by MCSCF or CASSCF calculations

Localized Orbitals

Alternative representations:

  • Boys localization: Maximize spatial separation
  • Pipek-Mezey: Maximize orbital charges on atoms
  • Foster-Boys: Minimize overlap between orbitals

Useful for:

  • Chemical interpretation
  • Reduced correlation effects
  • Fragment-based methods

Best Practices

File Organization

  • Store orbital files in current working directory
  • Use descriptive names indicating method/basis

Quality Checks

  • Dimension verification: Ensure num_ao matches basis set
  • Orbital count: Verify num_mo ≥ num_electrons/2
  • Coefficient ranges: Typical values |C| < 1.0 (not required but common)
  • Symmetry: Check expected zero coefficients for symmetric molecules
  • Consistency: Verify with quantum chemistry code output

Getting Help

  • Verify dimensions match basis set exactly
  • Check atomic orbital ordering follows TREXIO convention
  • Consult Troubleshooting Guide for orbital-related errors

TREXIO Convention

The atomic orbitals in CHAMP orbital files follow the TREXIO alphabetical ordering convention for Cartesian components. This differs from some quantum chemistry codes, but trexio and trex2champ handle all necessary conversions automatically.

Orbital Completeness

Ensure the orbital file contains enough molecular orbitals for your calculation. For correlation methods, include virtual orbitals beyond the occupied set. A good rule of thumb: include at least 2× the number of occupied orbitals.