Extended Hückel Theory (EHT)
sci-form implements a full Extended Hückel Theory (EHT) pipeline for semiempirical electronic-structure calculations. EHT calculates molecular orbital (MO) energies, coefficients, and volumetric orbital densities from a 3D geometry without self-consistent field iteration.
Overview
EHT was introduced by Hoffmann (1963) as an extension of Hückel theory to all valence electrons (not just π electrons). It requires only:
- The molecular geometry (Cartesian coordinates)
- A set of Valence State Ionization Potentials (VSIP) per element
- Slater-type orbital exponents per element
The pipeline has five phases:
| Phase | Description |
|---|---|
| B1 | Build atomic orbital basis from element parameters |
| B2 | Compute overlap matrix S and Hamiltonian H |
| B3 | Solve generalized eigenproblem HC = SCE |
| B4 | Evaluate MO densities on 3D volumetric grid |
| B5 | Extract isosurfaces via Marching Cubes |
Phase B1: Atomic Basis Set
Each atom contributes one or two valence orbitals (s and p) described as Slater-type orbitals (STOs) expanded in a minimal STO-3G Gaussian basis.
Slater-Type Orbitals
A Slater orbital of principal quantum number
where
STO-3G Expansion
Each Slater orbital is approximated by 3 Gaussian primitives fitted to reproduce the STO shape:
where
VSIP Parameter Table
The following Hoffmann parameters are used as diagonal Hamiltonian elements:
| Element | Orbital | VSIP (eV) | Slater |
|---|---|---|---|
| H | 1s | −13.6 | 1.300 |
| C | 2s | −21.4 | 1.625 |
| C | 2p | −11.4 | 1.625 |
| N | 2s | −26.0 | 1.950 |
| N | 2p | −13.4 | 1.950 |
| O | 2s | −32.3 | 2.275 |
| O | 2p | −14.8 | 2.275 |
| F | 2s | −40.0 | 2.425 |
| F | 2p | −18.1 | 2.425 |
| Cl | 3s | −26.3 | 2.183 |
| Cl | 3p | −14.2 | 1.733 |
| Br | 4s | −22.07 | 2.588 |
| Br | 4p | −13.1 | 2.131 |
| I | 5s | −18.0 | 2.679 |
| I | 5p | −12.7 | 2.322 |
Phase B2: Overlap Matrix and Hamiltonian
Overlap Matrix
Computed analytically using the Gaussian product theorem: the product of two Gaussians centered at
where
This allows exact analytical evaluation of all
Hamiltonian Matrix
Diagonal elements (Hückel approximation):
Off-diagonal elements (Wolfsberg-Helmholtz approximation):
where
Phase B3: Generalized Eigenproblem
The EHT secular equation is the generalized eigenproblem:
where
Step 1: Diagonalize S
Step 2: Compute
Eigenvalues smaller than
Step 3: Transform to Standard Form
Step 4: Diagonalize
Step 5: Back-Transform Coefficients
Eigenvalues are sorted in ascending order. The HOMO and LUMO indices are identified from the number of valence electrons (filled two electrons per orbital).
Output: EhtResult
pub struct EhtResult {
pub energies: Vec<f64>, // MO energies (eV), ascending
pub coefficients: Vec<Vec<f64>>, // C matrix: coefficients[ao][mo]
pub n_electrons: usize, // total valence electrons
pub homo_index: usize, // HOMO (0-based)
pub lumo_index: usize, // LUMO (0-based)
pub homo_energy: f64, // eV
pub lumo_energy: f64, // eV
pub gap: f64, // HOMO-LUMO gap (eV)
}Phase B4: Orbital Grid Evaluation
Once the MO coefficients are known, any orbital
The orbital density (for visualization) is:
The grid is parallelized over chunks using Rayon, evaluating all AO basis functions at each grid point.
Grid Parameters
pub struct VolumetricGrid {
pub origin: [f64; 3], // lower-left corner (Å)
pub spacing: f64, // grid spacing (Å), default 0.15
pub dims: [usize; 3], // (Nx, Ny, Nz)
pub values: Vec<f32>, // scalar field (f32 for compact transfer)
}Phase B5: Marching Cubes Isosurface
Isosurfaces of MO density are extracted using the Marching Cubes algorithm (Lorensen & Cline 1987):
- For each voxel cube in the grid, determine which vertices are inside/outside the isovalue threshold
- Use the 256-case lookup table to identify the edge intersections
- Interpolate vertex positions on crossed edges
- Return a triangle mesh
The isosurface mesh is returned as:
pub struct IsosurfaceMesh {
pub vertices: Vec<[f32; 3]>, // xyz positions
pub normals: Vec<[f32; 3]>, // per-vertex normals
pub indices: Vec<u32>, // triangle indices
}API
Rust
use sci_form::{eht_calculate, eht_orbital_mesh};
// Run EHT calculation
let result = eht_calculate("C6H6", None)?; // benzene
println!("HOMO: {:.2} eV", result.homo_energy);
println!("LUMO: {:.2} eV", result.lumo_energy);
println!("Gap: {:.2} eV", result.gap);
// Get orbital isosurface as JSON mesh
let mesh_json = eht_orbital_mesh("C6H6", result.homo_index, 0.05, 0.15, None)?;Python
import sci_form
result = sci_form.eht_calculate("c1ccccc1") # benzene (aromatic SMILES)
print(f"HOMO = {result.homo_energy:.2f} eV")
print(f"LUMO = {result.lumo_energy:.2f} eV")
print(f"Gap = {result.gap:.2f} eV")
print(f"Coefficients shape: {len(result.coefficients)} x {len(result.coefficients[0])}")
# Get orbital grid for visualization
grid = sci_form.eht_orbital_mesh("c1ccccc1", result.homo_index, 0.05, 0.15)TypeScript / WASM
import init, { eht_calculate, eht_orbital_grid_typed } from 'sci-form-wasm';
await init();
const result = JSON.parse(eht_calculate("c1ccccc1"));
console.log(`HOMO = ${result.homo_energy.toFixed(2)} eV`);
console.log(`Gap = ${result.gap.toFixed(2)} eV`);
// Get orbital volume as a flat Float32Array (Nx × Ny × Nz)
const gridInfo = JSON.parse(compute_esp_grid_info("c1ccccc1", ...));
const orbital = eht_orbital_grid_typed("c1ccccc1", result.homo_index, 0.05, 0.15);
// orbital: Float32Array — ready for Three.js Data3DTextureCapabilities and Limitations
| Property | Value |
|---|---|
| Supported elements | H, C, N, O, F, Si, P, S, Cl, Br, I |
| Basis set | STO-3G (minimal, 1–2 orbitals per atom) |
| Correlation | None (single-determinant) |
| Relativistic effects | No |
| Self-consistency | No (one-shot diagonalization) |
| Cost |
EHT is appropriate for qualitative visualization of frontier orbitals (HOMO/LUMO), rough HOMO-LUMO gap estimates, and as a fast electronic descriptor. For quantitative accuracy, DFT or post-Hartree-Fock methods are required.
References
- Hoffmann, R. An Extended Hückel Theory. I. Hydrocarbons. J. Chem. Phys. 1963, 39, 1397–1412.
- Wolfsberg, M.; Helmholtz, L. The Spectra and Electronic Structure of the Tetrahedral Ions MnO₄⁻, CrO₄²⁻, and ClO₄⁻. J. Chem. Phys. 1952, 20, 837–843.
- Löwdin, P.-O. On the Non-Orthogonality Problem Connected with the Use of Atomic Wave Functions in the Theory of Molecules and Crystals. J. Chem. Phys. 1950, 18, 365–375.
- Lorensen, W. E.; Cline, H. E. Marching Cubes: A High Resolution 3D Surface Construction Algorithm. SIGGRAPH 1987, 21, 163–169.