pyxtal.interface.dftb module

class pyxtal.interface.dftb.DFTB(struc, skf_dir, disp='D3', kresol=0.1, folder='tmp', label='test', prefix='geo_final', use_omp=False, scc_error=1e-06, scc_iter=500)[source]

Bases: object

Modified DFTB calculator

Parameters:
  • struc – ase atoms object

  • disp – dispersion (D3, D30, TS, MBD))

  • step – optimization steps (int)

  • kresol – kpoint resolution (float)

  • folder – (str)

  • label – (str)

  • use_omp – True/False

get_calculator(mode, step=500, ftol=0.001, FixAngles=False, eVperA=True, md_params=None)[source]

get the ase style calculator

Parameters:
  • mode – [‘single’, ‘relax’, ‘vc_relax’] (str)

  • step – relaxation steps (int)

  • ftol – force tolerance (float)

  • FixAngles – Fix angles between lattice vectors

  • eVperA – unit in eV/A

Returns:

ase calculator

run(mode, step=500, ftol=0.001, FixAngles=False, md_params=None)[source]

execute the actual calculation

pyxtal.interface.dftb.DFTB_SCF(struc, skf_dir, kresol=0.1, folder='tmp', disp=None, filename=None)[source]

DFTB SCF to get band structure

Parameters:
  • struc – ase atoms object

  • skf_dir

  • kresol

  • filename – band structure output

pyxtal.interface.dftb.DFTB_relax(struc, skf_dir, opt_cell=False, step=500, fmax=0.1, kresol=0.1, folder='tmp', disp='D3', mask=None, symmetrize=True, logfile=None, scc_error=1e-06, scc_iter=500, use_omp=False)[source]

DFTB optimizer based on ASE

Parameters:
  • struc – ase atoms object

  • mode – [single, relax, vc_relax] (str)

  • step – optimization steps (int)

  • mask – apply constraints on strain

class pyxtal.interface.dftb.Dftb(restart=None, ignore_bad_restart_file=<object object>, label='dftb', atoms=None, kpts=None, slako_dir=None, **kwargs)[source]

Bases: FileIOCalculator

This module defines a FileIOCalculator for DFTB+

http://www.dftbplus.org/ http://www.dftb.org/

Initial development: markus.kaukonen@iki.fi Modified by QZ to avoid the I/O load

check_state(atoms)[source]

Check for any system changes since last calculation.

command = 'dftb+ > PREFIX.out'
discard_results_on_any_change = True

Whether we purge the results following any change in the set() method.

implemented_properties: List[str] = ['energy', 'forces', 'stress']

Properties calculator can handle (energy, forces, …)

read_eigenvalues()[source]

Read Eigenvalues from dftb output file (results.tag). Unfortunately, the order seems to be scrambled.

read_electrons()[source]

read number o electrons

read_energy()[source]

If SCC is not converged, read the last step energy from test.out

read_fermi_levels()[source]

Read Fermi level(s) from dftb output file (results.tag).

read_forces()[source]

Read Forces from dftb output file (results.tag).

read_results()[source]

all results are read from results.tag file It will be destroyed after it is read to avoid reading it once again after some runtime error

write_dftb_in(outfile)[source]

Write the innput file for the dftb+ calculation. Geometry is taken always from the file ‘geo_end.gen’.

write_input(atoms, properties=None, system_changes=None)[source]

Write input file(s).

Call this method first in subclasses so that directories are created automatically.

pyxtal.interface.dftb.make_Hamiltonian(skf_dir, atom_types, disp, kpts, scc_error=1e-06, scc_iter=500, write_band=False, use_omp=False)[source]

Generate the DFTB Hamiltonian for DFTB+