Ground calculator#

class fireballpy.BaseFireball(*, atomsystem, fdatafiles, kpoints, verbose=False, total_charge=0, correction=None, charges_method=None, dipole_method='improved', initial_charges=None, mixer_kws=None)[source]#

Base Fireball class to be interfaced with any high-level package such as ASE.

Parameters:
atomsystemAtomSystem

Class with all the information of species, atomic numbers, positions and cell of the system.

fdatafilesFDataFiles

Class with all the information on the location of the basis functions.

kpointsKPoints

Class with all the information of the coordinates of the k-points as well as their associated weights.

verbosebool, optional

If True information of the convergence of the SCF loop will be printed on screen. Default is False.

total_chargeint, optional

Total charge of the system in elementary charge units (1 extra electron would be total_charge = -1). By default this is 0.

correctiondict | bool | None, optional

By default (None) will apply DFT3 correction for the selected FData if optimized parameters are available (see available_fdatas()). Also, it may be a dictionary with the parameters for DFTD3 correction The dictionary must contain the keys 'kind' (right now it can only be 'dftd3'), 'damping' and either 'method' or 'params_tweaks'. It may be forcefully shut down by providing False. For more information, see Simple DFT-D3 documentation.

charges_methodstr | None, optional

How the autoconsistency in the charges will be performed. By default depends on the FData (None). If a custom FData is selected, then this parameter must be specified. For more information see here.

dipole_methodstr, optional

Whether to use (dipole='improved') or not (dipole='legacy') the improved dipole description. By default 'improved' except for periodic systems as it is not yet implemented and thus it will be ignored.

initial_chargesArrayLike[float], optional

A (natoms, nshells) array with the charges of each of the atom shells (0 if no shell for that atom is defined).

mixer_kwsdict, optional

Dictionary with the mixer parameters. More information here.

Methods

run_scf(fix_charges=False)

Run the SCF loop and store energy and charge related quantities.

calc_forces(fix_charges=False)

Compute the forces and store them.

update_coords(positions)

Update the coordinates in the Fortran module.

Notes

If you use this code in a publication please cite us [Lewis2011].

[Lewis2011]

James. P. Lewis, et al., “Advances and applications in the FIREBALL ab initio tight-binding molecular-dynamics formalism”, Phys. Status Solidi B, 248(9):1989-2007, 2011. DOI: 10.1002/pssb.201147259

calc_forces(fix_charges=False)[source]#

Check if SCF is computed, execute the loop if not, then compute and store forces.

Parameters:
fix_chargesbool

If True then only one SCF loop iteration will be performed. If False (default) then it will perform the usual computation. In general it is useful to fix the charges when making postprocessing.

run_scf(fix_charges=False)[source]#

Check if SCF is computed, execute the loop if not, then store energy, fermi_level, partial charges, shell charges and eigenvalues.

Parameters:
fix_chargesbool

If True then only one SCF loop iteration will be performed. If False (default) then it will perform the usual computation. In general it is useful to fix the charges when making postprocessing.

update_coords(positions)[source]#

Update the coordinates in the module.

Parameters:
positionsArrayLike[float]

A natoms x 3 array with the new positions in angstroms.