vibeqc.HirshfeldResult

class vibeqc.HirshfeldResult(charges, electron_population, promolecule_norm, molecule_norm, n_grid_points)[source]

Bases: object

Output of hirshfeld_charges().

Parameters:
charges

(n_atoms,) array of Hirshfeld atomic partial charges in electrons. Sums to molecule.charge to grid precision. Sign convention matches mulliken_charges() / loewdin_charges() (positive = electron-deficient).

Type:

np.ndarray

electron_population

(n_atoms,) array of ∫ w_A(r) ρ(r) dV — the Hirshfeld- partitioned electron count on each atom. Z_A this is charges[A].

Type:

np.ndarray

promolecule_norm

∫ ρ_pro dV evaluated on the grid; should ≈ n_electrons. Diagnostic: when this deviates by > 1e-3 from the integer electron count, the integration grid is too coarse or the SAD promolecule didn’t converge for some atom (very rare).

Type:

float

molecule_norm

∫ ρ_mol dV evaluated on the same grid; should also ≈ n_electrons. Comparing the two norms tells you whether grid error is in the molecular density or the promolecule.

Type:

float

n_grid_points

Total Becke-Lebedev-Treutler grid point count used. Scales with GridOptions.n_radial × angular order × n_atoms.

Type:

int

__init__(charges, electron_population, promolecule_norm, molecule_norm, n_grid_points)
Parameters:
Return type:

None

Methods

__init__(charges, electron_population, ...)

Attributes

charges: ndarray
electron_population: ndarray
promolecule_norm: float
molecule_norm: float
n_grid_points: int