# 3.12.5. horton.part.hirshfeld_i – Iterative Hirshfeld (HI) partitioning¶

class horton.part.hirshfeld_i.HirshfeldIWPart(coordinates, numbers, pseudo_numbers, grid, moldens, proatomdb, spindens=None, local=True, lmax=3, threshold=1e-06, maxiter=500, greedy=False)

Bases: horton.part.hirshfeld_i.HirshfeldIMixin, horton.part.hirshfeld.HirshfeldWPart

Arguments: (that are not defined in WPart)

proatomdb
In instance of ProAtomDB that contains all the reference atomic densities.

Optional arguments: (that are not defined in WPart)

threshold
The procedure is considered to be converged when the maximum change of the charges between two iterations drops below this threshold.
maxiter
The maximum number of iterations. If no convergence is reached in the end, no warning is given.
greedy
Reduce the CPU cost at the expense of more memory consumption.
clear()

Discard all cached results, e.g. because wfn changed

compute_change(propars1, propars2)

Compute the difference between an old and a new proatoms

compute_pseudo_population(index)
do_all()

Computes all properties and return a list of their keys.

do_charges(instance)
do_density_decomposition(instance)
do_dispersion(instance)
do_hartree_decomposition(instance)
do_moments(instance)
do_partitioning(instance)
do_populations(instance)
do_prosplines()
do_spin_charges(instance)
eval_proatom(index, output, grid=None)
eval_spline(index, spline, output, grid=None, label='noname')
fix_proatom_rho(index, rho, deriv)

Check if the radial density for the proatom is correct and fix as needed.

Arguments:

index
The atom for which this proatom rho is created.
rho
deriv
the derivative of the radial density or None.
get_grid(index=None)

Return an integration grid

Optional arguments:

index
The index of the atom. If not given, a grid for the entire system is returned. If self.local is False, a full system grid is always returned.
get_interpolation_info(i, charges=None)
get_isolated(index, charge, grid=None)
get_memory_estimates()
get_moldens(index=None, output=None)
get_proatom_rho(index, charges=None)
get_proatom_spline(index, *args, **kwargs)
get_rgrid(index)
get_somefn(index, spline, key, label, grid=None)
get_spindens(index=None, output=None)
get_wcor(index)
to_atomic_grid(index, data)
update_at_weights()
update_pro(index, proatdens, promoldens)
cache
coordinates
grid
linear = False
lmax
local
name = 'hi'
natom
numbers
options = ['lmax', 'threshold', 'maxiter', 'greedy']
proatomdb
pseudo_numbers
class horton.part.hirshfeld_i.HirshfeldICPart(coordinates, numbers, pseudo_numbers, grid, moldens, proatomdb, spindens=None, local=True, lmax=3, wcor_numbers=None, wcor_rcut_max=2.0, wcor_rcond=0.1, threshold=1e-06, maxiter=500, greedy=False)

Bases: horton.part.hirshfeld_i.HirshfeldIMixin, horton.part.hirshfeld.HirshfeldCPart

Arguments: (that are not defined in CPart)

proatomdb
In instance of ProAtomDB that contains all the reference atomic densities.

Optional arguments: (that are not defined in CPart)

threshold
The procedure is considered to be converged when the maximum change of the charges between two iterations drops below this threshold.
maxiter
The maximum number of iterations. If no convergence is reached in the end, no warning is given.
greedy
Reduce the CPU cost at the expense of more memory consumption.
clear()

Discard all cached results, e.g. because wfn changed

compute_change(propars1, propars2)

Compute the difference between an old and a new proatoms

compute_pseudo_population(index)
do_all()

Computes all properties and return a list of their keys.

do_charges(instance)
do_dispersion(instance)
do_moments(instance)
do_partitioning(instance)
do_populations(instance)
do_prosplines()
do_spin_charges(instance)
eval_proatom(index, output, grid=None)
eval_spline(index, spline, output, grid=None, label='noname')
fix_proatom_rho(index, rho, deriv)

Check if the radial density for the proatom is correct and fix as needed.

Arguments:

index
The atom for which this proatom rho is created.
rho
deriv
the derivative of the radial density or None.
get_cutoff_radius(index)

The radius at which the weight function goes to zero

get_grid(index=None)

Return an integration grid

Optional arguments:

index
The index of the atom. If not given, a grid for the entire system is returned. If self.local is False, a full system grid is always returned.
get_interpolation_info(i, charges=None)
get_isolated(index, charge, grid=None)
get_memory_estimates()
get_moldens(index=None, output=None)
get_proatom_rho(index, charges=None)
get_proatom_spline(index, *args, **kwargs)
get_rgrid(index)
get_somefn(index, spline, key, label, grid=None)
get_spindens(index=None, output=None)
get_wcor(index=None)
get_wcor_funcs(index)
to_atomic_grid(index, data)
to_sys_grid(index, data)
update_at_weights()
update_pro(index, proatdens, promoldens)
cache
coordinates
grid
linear = False
lmax
local
name = 'hi'
natom
numbers
options = ['lmax', 'threshold', 'maxiter', 'greedy']
proatomdb
pseudo_numbers
wcor_numbers