Atomic Simulation Environment

From ESL
(Redirected from ASE)
Jump to navigation Jump to search
{{#if: ASE development team |

Source authors:
ASE development team

}}{{#if: LGPL |

License: LGPL

}}{{#if: Project page |

Download: Project page

}}{{#if: |

Documentation: {{{documentation}}}

}}{{#if:
  • Structure generation
  • Structure optimization
  • Molecular dynamics
  • |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    |{{#if: |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    |}}}}}}}}}}}}{{#if:
  • Structure generation
  • Structure optimization
  • Molecular dynamics
  • |

    Functionalities:

    }}{{#if: |

    Algorithms:

      {{{algorithms}}}

    }}{{#if: |

    Generic interfaces:

      {{{generic interfaces}}}

    }}{{#if: |

    APIs:

      {{{apis}}}

    }}{{#if: |

    Data standards:

      {{{data standards}}}

    }}{{#if: |

    Software:

      {{{software}}}

    }}

    The Atomic Simulation Environment or ASE is a Python library for atomistic simulations. It provides algorithms for structure optimization, molecular dynamics and other common operations. While ASE does not implement any electronic structure method, it contains interfaces that can be used to call a large range of different codes. It contains methods to generate, read, write and visualize structures.

    Prerequisites

    In order to use the ASE interface with a particular code, that code has to be installed separately.

    Example

    ASE is typically used by writing a Python script. In the below example, the BFGS optimizer is used to calculate the structure of a water molecule from a hand-written initial guess for the atomic positions.

    from ase import Atoms
    from ase.optimize import BFGS
    from gpaw import GPAW # Requires GPAW calculator to be installed
    from ase.io import write
    
    system = Atoms('H2O', positions=[[-1, 0, 0], [1, 0, 0], [0, 0, 1]])
    system.center(vacuum=3.0)
    
    calc = GPAW(xc='PBE', h=0.18, txt='gpaw.txt')
    
    system.set_calculator(calc)
    
    opt = BFGS(system, trajectory='opt.traj', logfile='opt.log')
    opt.run(fmax=0.05) # tolerance 0.05 eV/Ang
    
    write('output.xyz', system)
    

    The final structure is written in the xyz format while the intermediate geometries are saved in ASE's own traj format. The graphical interace for ASE, ase-gui, can be used to visualize these geometries, including animations of the optimization procedure. The above example uses the GPAW calculator. This can be replaced by any other code that implements the ASE calculator interface.

    Calculators

    ASE relies on external "calculators" to implement the calculation of energies, forces and other quantities. ASE contains interfaces to many different calculators. Any calculator appropriately implementing the Python ASE interface can be used together with ASE and thus benefit from the implemented algorithms described below.

    Functionality

    Structure generation

    The structure module of ASE contains the G2 molecule database plus simple interfaces to generate bulk structures, nanotubes and nanoribbons. Advanced modules to set up lattices, surfaces and space groups are also available.

    Structure optimization

    A number of structure optimization algorithms are available for local (BFGS, MDMin etc.) as well as global structure optimization (basin hopping, minima hopping). The optimization can be subject to constraints.

    Molecular dynamics

    ASE implements NVE, NVT, and NPT molecular dynamics for use with any force calculator implementing the ASE interface.