Atomic Simulation Environment¶
The Atomic Simulation Environment (ASE) is a set of tools and Python modules for setting up, manipulating, running, visualizing and analyzing atomistic simulations. The code is freely available under the GNU LGPL license.
ASE provides interfaces to different codes through Calculators
which are used together with the central
Atoms
object and the many available algorithms in
ASE.
>>> # Example: structure optimization of hydrogen molecule
>>> from ase import Atoms
>>> from ase.optimize import BFGS
>>> from ase.calculators.nwchem import NWChem
>>> from ase.io import write
>>> h2 = Atoms('H2',
... positions=[[0, 0, 0],
... [0, 0, 0.7]])
>>> h2.calc = NWChem(xc='PBE')
>>> opt = BFGS(h2)
>>> opt.run(fmax=0.02)
BFGS: 0 19:10:49 -31.435229 2.2691
BFGS: 1 19:10:50 -31.490773 0.3740
BFGS: 2 19:10:50 -31.492791 0.0630
BFGS: 3 19:10:51 -31.492848 0.0023
>>> write('H2.xyz', h2)
>>> h2.get_potential_energy()
-31.492847800329216
Supported Calculators
¶
ACE-Molecule
amber
DMol³
Gaussian
Grimme DFT-D3
gulp
Mopac
qmmm
tip3p
~deMon-Nano
News¶
ASE version 3.22.1 released (1 December 2021).
ASE version 3.22.0 released (24 June 2021).
ASE version 3.21.1 released (24 January 2021).
ASE version 3.21.0 released (18 January 2021).
ASE version 3.20.0 released (8 August 2020).
ASE version 3.19.2 released (22 July 2020).
ASE version 3.19.1 released (4 April 2020).
ASE version 3.19.0 released (16 December 2019).
ASE version 3.18.2 released (15 December 2019).
First ASE Workshop held at Chalmers University of Technology, Gothenburg, Sweden, November 19-22, 2019 (15 December 2019).
ASE version 3.18.1 released (20 September 2019).
ASE version 3.18.0 released (19 July 2019).
ASE version 3.17.0 released (12 November 2018).
ASE version 3.16.2 released (5 June 2018).
ASE version 3.16.0 released (21 March 2018).
ASE version 3.15.0 released (28 September 2017).
Bugfix release: ASE version 3.14.1 (28 June 2017).
ASE version 3.14.0 released (20 June 2017).
Reference paper in J. Phys. Condens. Matter: The Atomic Simulation Environment | A Python library for working with atoms (7 June 2017).
ASE version 3.13.0 released (7 February 2017).
Psi-k Scientific Highlight Of The Month: The Atomic Simulation Environment | A Python library for working with atoms (20 January 2017).
ASE version 3.12.0 released (24 October 2016).
ASE version 3.11.0 released (10 May 2016).
ASE version 3.10.0 released (17 March 2016).
Web-page now uses the Read the Docs Sphinx Theme (20 February 2016).
The source code is now on https://gitlab.com/ase/ase (18 September 2015).
ASE version 3.9.1 released (21 Juli 2015).
ASE version 3.9.0 released (28 May 2015).
ASE version 3.8.0 released (22 October 2013).
ASE version 3.7.0 released (13 May 2013).
ASE version 3.6.0 released (24 February 2012).
Bugfix release: ASE version 3.5.1 (24 May 2011).
ASE version 3.5.0 released (13 April 2011).
ASE version 3.4.1 released (11 August 2010).
ASE version 3.4 released (23 April 2010).
ASE version 3.3 released (11 January 2010).
ASE version 3.2 released (4 September 2009).
ASE has reached revision 1000 (16 July 2009).
ASE version 3.1.0 released (27 March 2009).
Improved
ase.vibrations
module: More accurate and possibility to calculate Infrared intensities (13 March 2009).ASE version 3.0.0 released (13 November 2008).
Asap version 3.0.2 released (15 October 2008).
An experimental abinit interface released (9 June 2008).
Thursday April 24 will be ASE documentation-day. Ten people from CAMd/Cinf will do a “doc-sprint” from 9 to 16. (17 Apr 2008)
The new ASE-3.0 Sphinx page is now up and running! (2 Apr 2008)
A beta version of the new ASE-3.0 will be used for the electronic structure course at CAMd. (10 Jan 2008)
Contents¶
- About
- Installation
- Getting started
- Tutorials
- Python
- ASE
- Basic property calculations
- Surface adsorption
- Global optimization
- Calculating diffusion/dissociation properties
- Surface diffusion energy barriers using the Nudged Elastic Band (NEB) method
- Surface diffusion energy barriers using ASE constraints
- Dissociation of a molecule using the NEB method
- Image Dependent Pair Potential for improved interpolation of NEB initial guess
- Self-diffusion on the Al(110) surface using the NEB and Dimer method
- ASE database
- Surface adsorption
- Molecular Dynamics
- Uncategorized
- Further reading
- Videos
- Python
- Modules
- The Atoms object
- Working with the array methods of Atoms objects
- Unit cell and boundary conditions
- Special attributes
- Adding a calculator
- List-methods
- Other methods
- List of all Methods
Atoms
Atoms.append()
Atoms.calc
Atoms.cell
Atoms.center()
Atoms.constraints
Atoms.copy()
Atoms.edit()
Atoms.euler_rotate()
Atoms.extend()
Atoms.fromdict()
Atoms.get_all_distances()
Atoms.get_angle()
Atoms.get_angles()
Atoms.get_angular_momentum()
Atoms.get_array()
Atoms.get_atomic_numbers()
Atoms.get_calculator()
Atoms.get_cell()
Atoms.get_cell_lengths_and_angles()
Atoms.get_celldisp()
Atoms.get_center_of_mass()
Atoms.get_charges()
Atoms.get_chemical_formula()
Atoms.get_chemical_symbols()
Atoms.get_dihedral()
Atoms.get_dihedrals()
Atoms.get_dipole_moment()
Atoms.get_distance()
Atoms.get_distances()
Atoms.get_forces()
Atoms.get_global_number_of_atoms()
Atoms.get_initial_charges()
Atoms.get_initial_magnetic_moments()
Atoms.get_kinetic_energy()
Atoms.get_magnetic_moment()
Atoms.get_magnetic_moments()
Atoms.get_masses()
Atoms.get_momenta()
Atoms.get_moments_of_inertia()
Atoms.get_number_of_atoms()
Atoms.get_pbc()
Atoms.get_positions()
Atoms.get_potential_energies()
Atoms.get_potential_energy()
Atoms.get_properties()
Atoms.get_reciprocal_cell()
Atoms.get_scaled_positions()
Atoms.get_stress()
Atoms.get_stresses()
Atoms.get_tags()
Atoms.get_temperature()
Atoms.get_total_energy()
Atoms.get_velocities()
Atoms.get_volume()
Atoms.has()
Atoms.new_array()
Atoms.number_of_lattice_vectors
Atoms.numbers
Atoms.pbc
Atoms.pop()
Atoms.positions
Atoms.rattle()
Atoms.repeat()
Atoms.rotate()
Atoms.rotate_dihedral()
Atoms.set_angle()
Atoms.set_array()
Atoms.set_atomic_numbers()
Atoms.set_calculator()
Atoms.set_cell()
Atoms.set_celldisp()
Atoms.set_center_of_mass()
Atoms.set_chemical_symbols()
Atoms.set_constraint()
Atoms.set_dihedral()
Atoms.set_distance()
Atoms.set_initial_charges()
Atoms.set_initial_magnetic_moments()
Atoms.set_masses()
Atoms.set_momenta()
Atoms.set_pbc()
Atoms.set_positions()
Atoms.set_scaled_positions()
Atoms.set_tags()
Atoms.set_velocities()
Atoms.symbols
Atoms.todict()
Atoms.translate()
Atoms.wrap()
Atoms.write()
- The Cell object
Cell
Cell.angles()
Cell.ascell()
Cell.bandpath()
Cell.cartesian_positions()
Cell.cellpar()
Cell.complete()
Cell.copy()
Cell.fromcellpar()
Cell.get_bravais_lattice()
Cell.handedness
Cell.lengths()
Cell.minkowski_reduce()
Cell.new()
Cell.niggli_reduce()
Cell.orthorhombic
Cell.permute_axes()
Cell.rank
Cell.reciprocal()
Cell.scaled_positions()
Cell.standard_form()
Cell.uncomplete()
Cell.volume
- Units
- File input and output
- Building things
- Equation of state
- Chemical formula type
- Chemical symbols
- Collections
- The data module
- Structure optimization
- Molecular dynamics
- Choosing the time step
- File output
- Logging
- Constant NVE simulations (the microcanonical ensemble)
- Constant NVT simulations (the canonical ensemble)
- Constant NPT simulations (the isothermal-isobaric ensemble)
- Velocity distributions
- Post-simulation Analysis
- Constraints
- The FixAtoms class
- The FixBondLength class
- The FixBondLengths class
- The FixLinearTriatomic class
- The FixedLine class
- The FixedPlane class
- The FixedMode class
- The FixCom class
- The Hookean class
- The ExternalForce class
- The FixInternals class
- Combining constraints
- Making your own constraint class
- The Filter class
- The UnitCellFilter class
- The StrainFilter class
- The ExpCellFilter class
- The FixSymmetry class
- Using the spacegroup subpackage
- Building neighbor-lists
- Geometry tools
Cell
Cell.angles()
Cell.ascell()
Cell.bandpath()
Cell.cartesian_positions()
Cell.cellpar()
Cell.complete()
Cell.copy()
Cell.fromcellpar()
Cell.get_bravais_lattice()
Cell.handedness
Cell.lengths()
Cell.minkowski_reduce()
Cell.new()
Cell.niggli_reduce()
Cell.orthorhombic
Cell.permute_axes()
Cell.rank
Cell.reciprocal()
Cell.scaled_positions()
Cell.standard_form()
Cell.uncomplete()
Cell.volume
cell_to_cellpar()
cellpar_to_cell()
complete_cell()
conditional_find_mic()
distance()
find_mic()
get_angles()
get_angles_derivatives()
get_dihedrals()
get_dihedrals_derivatives()
get_distances()
get_distances_derivatives()
get_duplicate_atoms()
get_layers()
is_minkowski_reduced()
is_orthorhombic()
minkowski_reduce()
orthorhombic()
permute_axes()
wrap_positions()
- Analysis tools
Analysis
Analysis.adjacency_matrix
Analysis.all_angles
Analysis.all_bonds
Analysis.all_dihedrals
Analysis.clear_cache()
Analysis.distance_matrix
Analysis.get_angle_value()
Analysis.get_angles()
Analysis.get_bond_value()
Analysis.get_bonds()
Analysis.get_dihedral_value()
Analysis.get_dihedrals()
Analysis.get_rdf()
Analysis.get_values()
Analysis.images
Analysis.nImages
Analysis.nl
Analysis.unique_angles
Analysis.unique_bonds
Analysis.unique_dihedrals
- A database for atoms
- What’s in the database?
- ase db
- Integration with other parts of ASE
- Browse database with your web-browser
- Python Interface
- Running a PostgreSQL server
- Running a MySQL server
- Nudged elastic band
- Genetic Algorithm
- ASE’s GUI
- Bravais lattices
BravaisLattice
BravaisLattice.bandpath()
BravaisLattice.cellpar()
BravaisLattice.conventional()
BravaisLattice.description()
BravaisLattice.get_special_points()
BravaisLattice.get_special_points_array()
BravaisLattice.plot_bz()
BravaisLattice.special_path
BravaisLattice.special_point_names
BravaisLattice.tocell()
BravaisLattice.type_description()
BravaisLattice.variant
BravaisLattice.vars()
- General crystal structures and surfaces
- Nanoparticles and clusters
- Visualization
- Calculators
- Supported calculators
- Calculator keywords
set()
- EAM
- Pure Python EMT calculator
- ABINIT
- Amber
- CASTEP
- CP2K
- CRYSTAL14
- Demon
- deMon-Nano
- DFTB+
- DMol3
- Espresso
- exciting
- FHI-aims
- FLEUR
- GAMESS-US
- Gaussian
- Gromacs
- GULP
- Communication with calculators over sockets
- Jacapo - ASE python interface for Dacapo
- KIM
- LAMMPS Calculators
- LAMMPSrun
- Mopac
- NWChem
- Octopus
- ONETEP
- OpenMX
- ORCA
- psi4
- Q-Chem
- SIESTA
- Introduction
- Environment variables
- SIESTA Calculator
- Extra FDF parameters
- Example
- Defining Custom Species
- Pseudopotentials
- Restarting from an old Calculation
- Choosing the coordinate format
- Siesta Calculator Class
- Excited states calculations
- Raman Calculations with SIESTA and PyNAO
- Further Examples
- Siesta lrtddft Class
- Siesta RamanCalculatorInterface Calculator Class
- TURBOMOLE
- VASP
- QMMM
- Checkpointing
- Mixing Calculators
- Logging Calculator
- DFT-D3
- Other built-in calculators
- Stuff for testing things
- ACE-Molecule
- Calculator interface
- Electronic structure calculators
DFTCalculator
DFTCalculator.get_bz_k_points()
DFTCalculator.get_effective_potential()
DFTCalculator.get_eigenvalues()
DFTCalculator.get_fermi_level()
DFTCalculator.get_ibz_k_points()
DFTCalculator.get_k_point_weights()
DFTCalculator.get_magnetic_moment()
DFTCalculator.get_number_of_bands()
DFTCalculator.get_number_of_grid_points()
DFTCalculator.get_number_of_spins()
DFTCalculator.get_occupation_numbers()
DFTCalculator.get_pseudo_density()
DFTCalculator.get_pseudo_wave_function()
DFTCalculator.get_spin_polarized()
DFTCalculator.get_wannier_localization_matrix()
DFTCalculator.get_xc_functional()
DFTCalculator.initial_wannier()
- Density Functional Theory
- Brillouin zone sampling
- Maximally localized Wannier functions
- Introduction
- The Wannier class
Wannier
Wannier.distances()
Wannier.get_centers()
Wannier.get_function()
Wannier.get_functional_value()
Wannier.get_hamiltonian()
Wannier.get_hamiltonian_kpoint()
Wannier.get_hopping()
Wannier.get_pdos()
Wannier.get_radii()
Wannier.initialize()
Wannier.localize()
Wannier.save()
Wannier.translate()
Wannier.translate_all_to_cell()
Wannier.translate_to_cell()
Wannier.write_cube()
- Density of states
- Band gap
- STM images
- Bader Analysis
- Vibration analysis
- Vibrational modes
Vibrations
Vibrations.clean()
Vibrations.combine()
Vibrations.fold()
Vibrations.get_energies()
Vibrations.get_frequencies()
Vibrations.get_mode()
Vibrations.get_vibrations()
Vibrations.iterdisplace()
Vibrations.iterimages()
Vibrations.run()
Vibrations.split()
Vibrations.write_dos()
Vibrations.write_jmol()
Vibrations.write_mode()
- Old calculations
- Infrared intensities
- Resonant and non-resonant Raman spectra
- Evaluation of Franck-Condon factors
- Vibrational modes
- Phonon calculations
- Phase diagrams and Pourbaix diagrams
- Spectrum tools
- Thermochemistry
- Utillity functions and classes
- Parallel calculations
- Dimer method
- The Atom object
- Electron transport
- QMMM
- Legacy functionality
- The Atoms object
- Command line tool
- Tips and tricks
- Gallery
- Release notes
- Git master branch
- Version 3.22.1
- Version 3.22.0
- Version 3.21.1
- Version 3.21.0
- Version 3.20.1
- Version 3.19.3
- Version 3.20.0
- Version 3.19.2
- Version 3.19.1
- Version 3.19.0
- Version 3.18.2
- Version 3.18.1
- Version 3.18.0
- Version 3.17.0
- Version 3.16.2
- Version 3.16.0
- Version 3.15.0
- Version 3.14.1
- Version 3.14.0
- Version 3.13.0
- Version 3.12.0
- Version 3.11.0
- Version 3.10.0
- Version 3.9.1
- Version 3.9.0
- Version 3.8.0
- Version 3.7.0
- Version 3.6.0
- Version 3.5.1
- Version 3.5.0
- Version 3.4.1
- Contact
- ASE ecosystem
- Development
- How to contribute
- Coding Conventions
- Writing documentation
- Adding new calculators
- Description of base-classes
- The Calculator base-class
Calculator
Calculator.implemented_properties
Calculator.default_parameters
Calculator.ignored_changes
Calculator.discard_results_on_any_change
Calculator.set_label()
Calculator.reset()
Calculator.read()
Calculator.set()
Calculator.check_state()
Calculator.get_property()
Calculator.calculate()
Calculator.calculate_numerical_forces()
Calculator.calculate_numerical_stress()
Calculator.band_structure()
Calculator.calculate_properties()
- The FileIOCalculator class
- The Calculator base-class
- Description of base-classes
- Making movies
- New release
- Testing the code
- Bugs!
- License
- Translate ASE
- ASE enhancement proposals
- Frequently Asked Questions
- ASE Workshop 2019