**Table of Contents**

- Introduction
- The ATK-DFT package
- The ATK-SE Package
- The NEGF formalism in ATK
- Python in ATK
- NanoLanguage Reference Manual
- The ATK-Classical package
- Appendix
- Appendix: Atomic data
- Bibliography
- Core NanoLanguage elements
- MoleculeConfiguration — Class for representing an isolated structure, i.e a molecule.
- BulkConfiguration — Class for representing a periodic structure, i.e bulk configuration
- DeviceConfiguration — Class for representing a structure coupled with semi-infinite bulk, i.e. one-probe, two-probe, etc.
- NanoSheet — Function for generating a nano sheet.
- NanoTube — Function for generating a nano tube.
- NanoRibbon — Function for generating a nano ribbon.
- BoxRegion — Class for representing an orthorhombic region, i.e. a rectangular box of metallic or dielectric material.
- AtomicShift — Represents a potential shift of the orbitals on individual atoms.
- AtomicCompensationCharge — Represents a change in the ion charge of individual atoms, resulting in a different ion electrostatic potential.
- NudgedElasticBand — Class for representing a Nudged Elastic Band as a series of configurations.
- HuckelCalculator — Class for representing calculations using the extended Huckel model for configurations of the type MoleculeConfiguration and BulkConfiguration.
- DeviceHuckelCalculator — Class for representing calculations using the extended Huckel Model for DeviceConfigurations.
- LCAOCalculator — Class for representing calculations using the ATK-DFT numerical orbital model for configurations of the type MoleculeConfiguration and BulkConfiguration.
- DeviceLCAOCalculator — Class for representing calculations using the ATK-DFT LCAO model for DeviceConfigurations.
- EMTCalculator — Class for representing an EMT calculator. It can be used for a MoleculeConfiguration and a BulkConfiguration.
- BrennerCalculator — Class for representing a Brenner Potential 2002 calculator.
- SlaterKosterCalculator — Class for representing calculations using a Slater-Koster tightbinding model for configurations of the type MoleculeConfiguration and BulkConfiguration.
- DeviceSlaterKosterCalculator — Class for representing calculations using the SlaterKoster Model for DeviceConfigurations.
- AbinitCalculator — Class for representing calculations using the Abinit planewave DFT code.
- FHIaimsCalculator — Class for representing calculations using the FHI-aims all electron code.
- counterpoiseCorrected — Create a new class extended with a Basis Set Superposition Error (counterpoise) corrector.
- TremoloXCalculator — Class for representing a TremoloX Potential calculator, based upon Class for representing a Brenner Potential 2002 calculator.
- DeltaTest — Class that implements the Delta Test (https://molmod.ugent.be/deltacodesdft).
- calculateHamiltonianAndOverlap — Calculate the Fourier transformed Hamiltonian (H) and the overlap (S) matrices and return them as numpy arrays.
- calculateSelfEnergy — Calculate the self energy as a numpy array.
- calculateDensityMatrix — Calculate the the Fourier component of the Density Matrix as numpy array.
- orbitalInfo — Calculate quantumnumbers of the orbitals
- calculateRetardedGreenFunction — Calculate the Retarded Green Function as a numpy array.
- calculateGreenFunctionComponent — Calculate the Green Function component, G gamma G^\dagger, as a numpy array.
- calculateDynamicalMatrixAndOverlap — Calculate the Dynamical (D) and the overlap (S) matrices as numpy arrays.
- calculatePhononSelfEnergy — Calculate the Phonon Self Energy as a numpy array.
- calculatePhononRetardedGreenFunction — Calculate the Phonons Retarded Green Function as a numpy array.
- calculatePhononGreenFunctionComponent — Calculate the Phonons Green Function Component, G gamma G^\dagger, as a numpy array.
- calculateVelocity — Calculates the Bloch-state velocity 1/hbar dE/dk using first order perturbation theory.
- calculateEffectiveMassTensor — Calculates the effective mass tensor d2E/dki dkj at a given kpoint, spin, and bands.
- AnalyticalSplit — Class for representing the analytical split of a confined or polarization orbital.
- ATK_U — Class for representing the ATK_U database.
- ATK_W — Class for representing the ATK_W database.
- BasisSet — Class for representing the basis set for given element in DFT.
- VirtualCrystalBasisSet — Provides the Virtual Crystal Approximation Basis Set.
- CheckpointHandler — Class for representing the parameters used for saving the configuration and calculator at regular intervals during self-consistent iterations.
- ConfinedOrbital — Class for representing a confined atomic orbital.
- DFTBDirectory — Class for representing a DFTB parameter file directory.
- DoubleContourIntegralParameters — Class for representing the contour parameters when using a double contour.
- ExchangeCorrelation — Class for representing Exchange Correlation types
- GrimmeDFTD2 — Class for determining the Grimme DFT-D2 dispersion correction of the energy, forces, and stress.
- GrimmeDFTD3 — Class for determining the Grimme DFT-D3 dispersion correction of the energy, forces, and stress.
- GridSampling — Class for representing the grid sampling for real space grids.
- HotbitDirectory — Class for representing a Hotbit parameter file directory.
- HuckelBasisParameters — Class for representing the parameters that determine the properties of a Huckel basis.
- InitialSpin — Class for representing an initial spin configuration.
- FixedSpin — Class for representing a fixed spin configuration.
- IterationControlParameters — Class for representing the parameters relevant for SCF iteration control within self-consistent electronic structure models.
- PulayMixer — Class for representing a Pulay mixer.
- ParallelPulayMixer — Class for representing a Parallel Pulay mixer.
- NormConservingPseudoPotential — Class for representing the norm-conserving pseudopotential
- NumericalAccuracyParameters — Class for representing the parameters for setting the numerical accuracy of a calculation.
- optimizeBasisSet — Function for optimize N tier'ed basis set
- PolarizationOrbital — Class for representing the polarization of a confined orbital.
- RandomSpin — Class for representing a random initial spin configuration.
- SingleContourIntegralParameters — Class for representing the contour parameters when using a single contour.
- SlaterKosterTable — Class for representing the parameters that determine the parameters of a slater koster basis.
- SlaterOrbital — Class for representing a Slater orbital.
- GreensFunction — The block tridiagonal inversion method used to calculate the Green's function and lesser Green's function.
- SparseGreensFunction — The direct sparse inversion method used to calculate the Green's function and lesser Green's function.
- ScatteringStates — The scattering states method used to calculate the Green's function.
- EquivalentBulk — Class for representing an Equivalent Bulk initial Density Matrix for Device simulations.
- NeutralAtom — Class for representing a neutral atom initial density matrix for Device simulations.
- ElectrodeConstraint.DensityMatrix — Class for representing a Density Matrix Constraint for Device simulations
- AlgorithmParameters — Class for representing the parameters for setting solver parameters.
- DeviceAlgorithmParameters — Class for representing algorithm parameters relevant for the device calculation.
- Poisson Solvers
- MultigridSolver — Class for representing a multigrid-based Poisson solver.
- DirectSolver — Class for representing a direct Poisson solver.
- FastFourierSolver — The FFT-based Poisson solver.
- FastFourier2DSolver — The Hybrid FFT2D + Finite-Difference-1D Poisson solver.
- SelfEnergyCalculators
- DirectSelfEnergy — Class for representing a self energy calculation using direct diagonalization.
- RecursionSelfEnergy — Class for representing a self energy calculation using the recursion method.
- KrylovSelfEnergy — Class for representing a self energy calculation using the iterative Krylov scheme.
- SparseRecursionSelfEnergy — Class for representing a self energy calculation using the sparse recursion method.
- Preconditioners
- Kerker — Class for representing Kerker style preconditioner
- FeastSolver — Class that represents a method to calculate the density matrix using the feast algorithm.
- ChebyshevExpansionSolver — Class that represents a method to calculate the density matrix using the Chebyshev expansion method.
- DiagonalizationSolver — Class that represents a method to calculate the density matrix by direct diagonalization.
- SlaterKosterOnsiteParameters — Class for representing the parameters that determine the onsite parameters of a slater koster basis.
- PairPotential — Class for input of a repulsive pairpotential
- GridValues — Generic base object for all grids.
- gridValues — Routine to convert a grid of values contained in a numpy array to a GridValues object that can be stored in a NetCDF file and opened in VNL. The grid data values can be given either as a physical quantity array or as a plain values (no unit) numpy array.
- HTSTEvent — Class for calculating the reaction rates using harmonic transition state theory (HTST).
- MolecularEnergySpectrum — Class for calculating the molecular energy spectrum for a configuration.
- ElectronDifferenceDensity — Class for calculating a difference density
- ElectronDensity — Class for calculating the electron density
- Bader — Class for performing a Bader charge analysis
- ExchangeCorrelationPotential — Class for calculating the exchange-correlation potential
- ElectronLocalizationFunction — Class for calculating the electron localization function (ELF)
- ElectrostaticDifferencePotential — Class for calculating the Hartree potential corresponding to a difference density.
- EffectiveMass — Class for calculating the effective mass for a BulkConfiguration.
- EffectivePotential — Class for calculating the effective potential
- ExternalPotential — Class for calculating the external potential due to the electrodes and gates in the system
- TransmissionSpectrum — Class for representing the transmission spectrum for a given configuration and calculator.
- PhononTransmissionSpectrum — Class for representing the phonon transmission spectrum for a given configuration and calculator.
- TransmissionPathways — Class for representing the Transmission Pathways for a given configuration and calculator.
- TransmissionEigenvalues — Class for representing the transmission eigenvalues for a given configuration and calculator.
- TransmissionEigenstate — Class for representing the transmission eigenstate for a given configuration and calculator.
- IVCurve — Class for representing an IV-Curve.
- InelasticTransmissionSpectrum — Class for calculating the inelastic transmission spectrum of a device configuration using the eXtended Lowest Order Expanssion (XLOE) method or Lowest Order Expanssion (LOE) method.
- DynamicalMatrix — Class for calculating the dynamical matrix of an atomic configuration.
- HamiltonianDerivatives — Class for calculating the hamiltonian derivatives of a configuration.
- ElectronPhononCoupling — Class for calculating the electron-phonon coupling matrix for a BulkConfiguration.
- Mobility — Class for calculating the Mobility for a BulkConfiguration.
- DeformationPotential — Class for calculating the electron-phonon coupling deformation potential for a BulkConfiguration.
- Bandstructure — Class for calculating the bandstructure for a BulkConfiguration.
- LocalBandstructure — Class for representing the local properties of the bandstructure for specified k-point, bands, and directions.
- EffectiveBandstructure — Class for representing the effective band structure for a given configuration and calculator.
- PhononBandstructure — Class for calculating the phonon bandstructure for a BulkConfiguration.
- ComplexBandstructure — Class for representing the complex band structure for a given configuration and calculator.
- TotalEnergy — Class for calculating the total energy
- Forces — Class for calculating the forces on the atomic configuration.
- Stress — Class for calculating the stress of a configuration.
- Eigenstate — Class for calculating an eigenstate
- BlochState — Class for calculating a Bloch state
- MullikenPopulation — Class for calculating the Mulliken population for a configuration.
- ProjectionList — Class for representing a list of orbitals. Results of several analysis objects can be projected onto this limited set of orbitals.
- DensityOfStates — Class for calculating the density of states for a configuration.
- PhononDensityOfStates — Class for calculating the phonon density of states for a MoleculeConfiguration or BulkConfiguration.
- DeviceDensityOfStates — Class for representing the Device Density of States for a given configuration and calculator.
- LocalDeviceDensityOfStates — Class for representing the Local Device Density of States for a given configuration and calculator.
- MakeTrajectory — Construct a trajectory sequence of configurations, from a given Nudged Elastic Band configuration, or a list of configurations.
- OpticalSpectrum — Class for representing the optical spectrum for a configuraiton with an attached calculator.
- PartialCharges — Class for calculating the partial charges of a configuration with an attached classical calculator.
- CurrentDensity — Class for representing the current density for a given configuration and calculator.
- ChemicalPotential — Class for calculating the chemical potential.
- Polarization — Class for calculating the polarization of a configuration.
- PiezoelectricTensor — Class for calculating the piezoelectric tensor of a configuration.
- VibrationalMode — Class for calculating the vibrational modes.
- LocalStress — Class for calculating the local stress.
- LocalStructure — Class for calculating the local structure parameters.
- ElasticConstants — Class to calculate the elastic constants of a bulk material. Uses finite strain and calculates the elastic constants from the linear stress response.
- SpinTransferTorque — Class for representing the spin transfer torque for a given device configuration and calculator.
- ProjectedLocalDensityOfStates — Class for representing the projected local density of states.
- STM — Class for calculating STM images from the tip and sample configurations.
- MolecularDynamics — Function for performing a molecular dynamics simulation.
- OptimizeGeometry — Function for optimizing the geometry of the given configuration.
- Trajectory — Class for representing the trajectory of a relaxation
- FixStrain — The constraint of the strain on the unit-cell
- NVEVelocityVerlet — The MD method implementing NVE Velocity Verlet dynamics.
- NVTBerendsen — The MD method implementing Berendsen NVT dynamics.
- NPTBerendsen — The MD method implementing Berendsen NPT dynamics.
- NPTMelchionna — The MD method implementing NPT Melchionna dynamics.
- NVTNoseHoover — The MD method implementing NVTNoseHoover dynamics.
- NVTNoseHooverChain — An MD method which implements one or more Nose-Hoover chained thermostats.
- NonEquilibriumMomentumExchange — A class that implements a heat flow by non-equilibrium momentum exchange (reverse non-equilibrium MD (RNEMD)) technique via a hook function.
- Langevin — The MD method implementing Langevin dynamics.
- MDTrajectory — Class implementing an MD Trajectory container object.
- MaxwellBoltzmannDistribution — The class that implements the Maxwell-Boltzmann distribution of velocities for MD simulation.
- OptimizeNudgedElasticBand — Function for performing a NEB optimization. The number of processes used to calculate the energy and forces on each image is determined by the ParallelParameters object that has been set on the attached calculator. By default, the update is parallelized over images and then over the per-image calculation. The output from the calculation will be logged to a separate file for each image whose name is the specified log_filename_prefix with the image number appended to it. If the log files already exist they will be appended to. If preoptimization is selected and there are enough MPI processes for at least two images to be calculated in parallel, then the preoptimization will be performed in parallel and its output will be logged to files starting with the log_filename_prefix followed by "_preoptimization".
- RigidBody — Class for implementing constraints to treat a group of atoms as a rigid body with only translational motions.
- QuasiNewton — Quasi-Newton Optimization
- FIRE — Interface to the ase FIRE Optimizer.
- ConfigurationVelocities — Utility for using the velocities saved on a configuration as start value in an MD simulation.
- ZeroVelocities — Utility for using zero velocities as start value in an MD simulation.
- AngularDistribution — Class for calculating the angular distribution from an MD simulation.
- CoordinationNumber — Class for calculating the coordination number for an MD simulation.
- DensityProfile — Class for calculating the mass density profile of an MD simulation.
- KineticEnergyDistribution — Class for calculating the kinetic energy distribution of an MD simulation.
- MeanSquareDisplacement — Class for calculating the mean-square-displacement from an MD trajectory.
- NearestNeighbor — Class for calculating the nearest neighbor distribution of an MD simulation.
- NeutronScattering — Class for calculating the total neutron scattering structure factor from na MD simulation.
- PartialStructureFactor — Class to calculate the partial structure function between two elements.
- RadialDistribution — Class for calculating the radial distribution from an MDTrajectory.
- TemperatureProfile — Class for calculating the spatial temperature profile of an MD simulation.
- VelocityAutocorrelation — Class for calculating the velocity auto-correlation function or the vibrational density of states of an MD simulation.
- VelocityDistribution — Class for calculating the velocity distribution of an MD simulation.
- TremoloXPotentialSet — Class that stores a set of potentials as well as particle definitions
- ParticleType — Class that describes a type of particle. Particles are described by properties like their name, mass, charge, ...
- CoulombSPME — SPME (smooth particle mesh Ewald) method for systems with periodic boundary conditions.
- CoulombDSF — DSF method. Reference: "Is the ewald summation still necessary? Pairwise alternatives to the accepted standard for long-range electrostatics." Christopher J. Fennell and J. Daniel Gezelter The Journal of Chemical Physics, 2006.
- CoulombDebye — The documentation for this method is still missing.
- CoulombN2 — Simple pairwise evaluation of the coulomb potential
- CoulombN2Spline — Simple pairwise evaluation of the coulomb potential. This method smoothes the cutoff by fitting a spline between the potential value at the inner cutoff and zero at the outer cutoff.
- CoulombOption — Class to set the permittivity for all Coulomb potentials
- LennardJonesPotential — Classical Lennard-Jones potential
- LennardJonesSplinePotential — Lennard-Jones potential that uses a spline to smooth the potential near the cutoff. The spline is applied if the distance is >= a specified inner cutoff radius
- LennardJonesMNPotential — Lennard-Jones potential with variable exponents U(r_ij) = A_ij / r_ij^m - B_ij / r_ij^n
- Repulsive12Potential — A simple repulsive potential of the form U(r_ij) = c_ij / r_ij^12
- RSL2Potential — RSL2 potential
- CoulombERFCPotential — Coulomb ERFC potential
- CoulombQTaperPotential — Coulomb-QTaper potential
- GaussPotential — Gauss potential
- Stiwe2Potential — Stillinger-Weber two body potential
- Stiwe3Potential — Three body Stillinger-Weber potential
- SuttonChenPotential — Sutton-Chen two body potential
- MorsePotential — Morse potential which is smoothed by a spline
- TosiFumiPotential — TosiFumi potential which is smoothed by a spline
- BuckinghamPotential — Buckingham potential which is smoothed by a spline
- DampedDispersionPotential — Damped dispersion potential which is smoothed by a spline
- General1Potential — A simple spline-smoothed potential of the form U(r_ij) = A_ij / r_ij * exp(-r_ij / rho_ij)
- General2Potential — A simple spline-smoothed potential of the form U(r_ij) = A_ij / r_ij^2 * exp(-r_ij / rho_ij) - C_ij / r_ij
- General3Potential — A simple spline-smoothed potential of the form U(r_ij) = A_ij * exp(B_ij * (sigma_ij -r_ij))
- VessalPotential — Vessal potential which is smoothed by a spline
- ReaxFFPotential — ReaxFF potential
- EAMfssetflPotential — The documentation for this method is still missing.
- EAMsetflPotential — The documentation for this method is still missing.
- TersoffSingleTypePotential — Tersoff potential which acts between particles of the same particle type
- TersoffMixitPotential — Tersoff potential which uses data from the TersoffSingleTypePotential
- TersoffDiagPotential — Tersoff potential which uses some data from the TersoffSingleTypePotential
- TersoffDiag2Potential — The documentation for this method is still missing.
- TersoffTriplePotential — Tersoff three body potential which uses data from the TersoffSingleTypePotential
- TersoffZBLPotential — Tersoff potential for high energetic simulations. The repulsive Ziegler-Biersack-Littmark repulsive potential is used.
- MaddenDispersivePotential — Potential for the dispersive interactions in the Madden framework.
- MaddenEwaldOption — Class to set global parameters for the Ewald summation in the Madden potential
- MaddenParticle — This potential defines the Madden properties of a given particle type. The properties include dipole/quadrupole polarizability and deformability
- MaddenPolarizationDampingPotential — Potential that damps the electrostatic interactions in the Madden potential
- MaddenRepulsivePotential — Potential for the repulsive interactions between particles in the Madden potential
- ConstantPotential — Constant potential
- UserDefinedTabulatedPotential — A user defined tabulated potential using splines
- COMBSingleTypePotential — First generation COMB potential which acts between particles of the same particle type
- COMBPairPotential — First generation COMB potential which defines interactions between particles of different types
- COMBMixitPotential — First generation COMB potential which uses data from the COMBSingleTypePotential
- COMBTriplePotential — Bond bending term of the COMB potential
- COMBSelfEnergyCorrection — Self-energy correction term for the second generation COMB potential
- COMBSelfEnergyCorrectionShan — Self-energy correction term for the second generation COMB potential using the formulation from the "Second-generation charge-optimized many-body potential for SiO-SiO2 and amorphous silica" paper by Shan et al.
- COMBCoulomb — Damped Coulomb potential for the first generation COMB potential, uses discrete charges
- COMBSMCoulomb — Coulomb potential for the second + third generation COMB potentials, uses Streitz-Mintmire approach to the electrostatic interactions
- COMBOverCoordinationCorrection — Over-coordination correction term for the second generation COMB potential
- CoreShellHarmonicPotential — Potential which adds harmonic bonds between cores and shells and will insert the shells
- CoreShellMorsePotential — Potential which adds morse bonds between cores and shells and will insert the shells
- Angle1Potential — Threebody term used in some core-shell potentials. Taken from "Shell-model molecular dynamics calculations of modified silicate glasses" by Tilocca et al.
- BravaisLattice — The 14 Bravais lattices used to describe crystal structures.
- allElements — Method for obtaining a list of all the elements.
- nlread — Function for reading configurations and results from files. The following file types are supported: NetCDF (only from ATK 10.8 and later), GPAW, ASE, XYZ, Python scripts (also from ATK 2008.10 and earlier), CAR and TRAJ (ASE trajectories).
- nlsave — Function for saving the given object to a NetCDF file.
- nlprint — Print an ASCII representation of the object to the stream pointed to by stream. A typical usage is to store the data as an ASCII file and then use a third party application for generating a visualization of the data.
- PeriodicTable — A class for representing elements from the periodic table.
- Physical quantities and units
- Spin — Class for representing spin in ATK.
- SplineInterpolation1D — Class for performing spline interpolations between data points from a one-dimensional data set.
- MonkhorstPackGrid — Class for calculating a symmetry reduced MonkhorstPackGrid grid
- AdaptiveGrid — Class for representing an adaptive k-point grid.
- processIsMaster —
Query function for parallel computation. Returns
`True`

, if the process is the master process in the parallel computation or the only process in a serial computation. Returns`False`

, if the process is a client process in a parallel calculation. - ParallelMapConfigurations — Applies a function on a list of configurations in parallel.
- ParallelEnergyAndForces — Evaluates the energy and forces for a list of configurations in parallel.
- checkNumberOfRepetitions — Method for automatic detection of the number of repetitions.

- Index