deMon-Nano#
deMon-Nano is a density-functional based tight-binding (DFTB) code using atom centered orbitals. This interface makes it possible to use deMon-Nano as a calculator in ASE. You need Slater-Koster files for the combination of atom types of your system. These can be obtained at dftb.org.
Environment variables#
Set environment variables in your configuration file (what is the directory for the Slater-Koster files and what is the name of the executable):
bash:
$ DEMONNANO_BASIS_PATH="/path/to/basis/" (an example) $ ASE_DEMONNANO_COMMAND="/path/to/bin/deMon.username.x (an example)
deMon-Nano Calculator (a FileIOCalculator)#
- class ase.calculators.demonnano.DemonNano(**kwargs)[source]#
Calculator interface to the deMon-nano code.
ASE interface to the deMon-nano code.
The deMon-nano code can be obtained from http://demon-nano.ups-tlse.fr/
The ASE_DEMONNANO_COMMAND environment variable must be set to run the executable, in bash it would be set along the lines of export ASE_DEMONNANO_COMMAND=”pathway-to-deMon-binary/deMon.username.x”
Parameters:
- labelstr
relative path to the run directory
- atomsAtoms object
the atoms object
- commandstr
Command to run deMon. If not present, the environment variable ASE_DEMONNANO_COMMAND is used
- basis_pathstr
Relative path to the directory containing DFTB-SCC or DFTB-0 parameters If not present, the environment variable DEMONNANO_BASIS_PATH is used
- restart_pathstr
Relative path to the deMon restart dir
- titlestr
Title in the deMon input file.
- forcesbool
If True a force calculation is enforced
- print_outstr | list
Options for the printing in deMon
- input_argumentsdict
Explicitly given input arguments. The key is the input keyword and the value is either a str, a list of str (will be written on the same line as the keyword), or a list of lists of str (first list is written on the first line, the others on following lines.)
Example: Geometry Optimization with ASE#
import numpy as np
from ase import Atoms
from ase.calculators.demonnano import DemonNano
from ase.io import write
from ase.optimize import BFGS
d = 0.9775
t = np.pi / 180 * 110.51
mol = Atoms(
'H2O', positions=[(d, 0, 0), (d * np.cos(t), d * np.sin(t), 0), (0, 0, 0)]
)
input_arguments = {'DFTB': 'SCC', 'CHARGE': '0.0', 'PARAM': 'PTYPE=BIO'}
calc = DemonNano(label='rundir/', input_arguments=input_arguments)
mol.calc = calc
# optimize geometry
dyn = BFGS(mol, trajectory='test.traj')
dyn.run(fmax=0.01)
write('h2o_optimized.xyz', mol)