Skip to content

E5: Dynamic EEQ Charge Model

Module: sci_form::experimental::eeqFeature flag: experimental-eeq


Overview

Implements geometry-dependent Electronegativity Equalization (EEQ) charges, capturing polarization effects that static charge models like Gasteiger-Marsili miss. Charges depend on the 3D molecular geometry through fractional coordination numbers, making them suitable for conformer-dependent property prediction and as input to dispersion and solvation models.


Theory

Electronegativity Equalization

At equilibrium, all atoms share a common electrochemical potential μ:

μ=χi+ηiqi+jiγ(rij)qj

This yields an (N+1)×(N+1) linear system (including charge neutrality constraint qi=Qtotal).

Fractional Coordination Number

Geometry dependence enters through the coordination number:

CNi=ji11+exp(16(rcov,ijrij1))

The Fermi-function damping provides smooth, differentiable CN values.

Damped Coulomb Interaction

The pairwise interaction kernel uses improved Gaussian damping with a 13-power blending:

γ(rij)=erf(2rij/σij)rij

where σij is derived from atomic charge radii. The damping exponent was improved from a naive linear kernel to 13-power Gaussian blending, which yields better charge neutrality conservation across a wider range of molecular sizes and more physical short-range behavior for closely-spaced atoms.


API

rust
use sci_form::experimental::eeq::*;

// Compute EEQ charges
let result = compute_eeq_charges(&elements, &positions, total_charge);
// result.charges: Vec<f64>
// result.coordination_numbers: Vec<f64>

// Fractional coordination numbers
let cn = fractional_coordination(&elements, &positions);

// EEQ electrostatic energy
let energy_result = compute_eeq_energy(&elements, &positions, total_charge);
// energy_result.energy_kcal_mol: f64
// energy_result.charges: Vec<f64>

// Numerical gradient
let gradient = compute_eeq_gradient(&elements, &positions, total_charge, 0.001);

Supported Elements

Full coverage for Z=1–86: H through Rn, including all 3d/4d/5d transition metals (Ti–Au), lanthanides (La–Lu), and period-6 main-group elements.


Comparison with Gasteiger

PropertyGasteigerEEQ
Geometry-dependentNoYes
Coordination effectsNoYes (CN)
Charge neutralityIterativeExact (constraint)
Transition metalsNoYes
GradientsNoYes (numerical)

Tests

bash
cargo test --features experimental-eeq --test regression -- test_eeq

8 integration tests covering: charge neutrality, coordination numbers, energy computation, gradient accuracy, element coverage, and comparison with Gasteiger charges.

Released under the MIT License.