General
*******

This manual describes the interface between the AMS Driver and VASP.
The AMS Driver can obtain information from VASP to update atomic
positions in

* geometry optimizations,

* lattice optimizations,

* molecular dynamics,

* nudged elastic band,

* PES Scans

or any of the other AMS Driver tasks. The output is given in the
normal AMS format which means it can natively be used with PLAMS and
ParAMS.

VASP itself is not developed by SCM, and is not included in the
Amsterdam Modeling Suite. **You need to obtain VASP and
pseudopotential files separately**. See vasp.at.

The VASP engine received a major technical overhaul in AMS2026. If
you're having issues, do not hesitate to submit a support ticket and
include all the input and output files and directories.

See also:

  * Tutorials for VASP with the graphical user interface

  * VASP scripting examples.


Supported operating systems
===========================

* Linux: The VASP engine has been tested.

* Mac: The VASP engine has not been tested but should in theory work.

* Windows: You can set up a calculation in AMSinput on Windows and
  submit jobs to a remote (Linux) compute cluster.


Supported VASP versions
=======================

The AMS interface to VASP supports VASP versions 5.4, 6.3, and 6.4.

Features supported:

+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+
| Example task | Coordinates  | Lattice      | Composition  | VASP 4       | VASP 5.4     | VASP 6.3     | VASP 6.4     |
|==============|==============|==============|==============|==============|==============|==============|==============|
| Single-point | Fixed        | Fixed        | Fixed        | No           | Yes          | Yes          | Yes          |
+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+
| Geometry     | Variable     | Fixed        | Fixed        | No           | Yes          | Yes          | Yes          |
| optimization |              |              |              |              |              |              |              |
+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+
| Lattice      | Variable     | Variable     | Fixed        | No           | Yes*         | Yes*         | Yes          |
| optimization |              |              |              |              |              |              |              |
+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+
| Molecule gun | Variable     | Fixed        | Variable     | No           | Yes*         | Yes*         | Yes**        |
| MD           |              |              |              |              |              |              |              |
+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+
| GCMC μ-PT    | Variable     | Variable     | Variable     | No           | Yes*         | Yes*         | Yes**        |
+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+

   * The engine is automatically restarted if the lattice/chemical composition changes.
   ** The engine is automatically restarted if the chemical composition changes.


VASP executable and number of processes (parallelization)
=========================================================

There needs to be a working VASP installation on the machine where the
calculation is run. Specify the exact command you would like to
execute to run VASP as the **Command to execute VASP** on the main
VASP page in AMSinput.  For example, set it to "mpirun -n 4 vasp", if
you use mpirun to launch VASP and would like to parallelize over 4
processes.

Note:

  The environment variable "SCM_DISABLE_MPI" must be set to "1". This
  is automatically done by AMSinput.

Tip:

  On some systems VASP may require specific environment variables
  which are overriden by AMS. If you are having problems running AMS
  via VASP, consider writing a shell script that wraps your VASP
  command within a new environment.Open a terminal and run VASP the
  way you would normally run it. For example, you might use this
  command:

     mpirun -np 4 vasp

  If that is how you run VASP, then you can generate the "command to
  run VASP" using this command:

     sh $AMSHOME/scripting/scm/external_engines/backends/_vasp/generate_run_vasp_script.sh mpirun -np 4 vasp

  If successful, that will create a file called "run_vasp.sh" that
  sets the PATH, LD_LIBARY_PATH, an DYLD_LIBRARY_PATH environment
  variables to their current values.Then specify the **Command to run
  VASP** as "sh /path/to/run_vasp.sh" (use the full absolute
  path).Feel free to modify run_vasp.sh, for example to change the
  number of processors, or to set additional environment variables.


What's new?
===========


Release AMS2026.1
-----------------

* VASP is now a normal AMS engine (rather than "external"), which
  makes it easier to run outside the GUI. It is now also compatible
  with Simple Active Learning.

* The new engine makes use of VASP's interactive mode, meaning that,
  under most cases, the engine is not required to be restarted when
  receiving new positions/lattice from the AMS driver.


Release AMS2019.3
-----------------

* Added as an external engine.


Support
=======

As the VASP code has not been developed by SCM, we cannot give support
for VASP issues other than use via our GUI or PLAMS.
