# Overview of Nexus¶

## What Nexus is¶

Nexus is a collection of tools, written in Python, to perform complex electronic structure calculations and analyze the results. The main focus is currently on performing arbitrary Quantum Monte Carlo (QMC) calculations with QMCPACK; however, VASP, Quantum Espresso, and GAMESS are also supported. A single QMC calculation typically requires several previous calculations with other codes to produce a starting guess for the many-body wavefunction and convert it into a form that QMCPACK understands. Managing the resulting array of calculations, and the flow of information between them, quickly becomes unwieldy to the researcher, demands a great deal of human time, and increases the potential for human error. Nexus reduces both the human time required and potential for error by automating the total simulation process.

## What Nexus can do¶

The capabilities of Nexus currently include crystal structure generation, standalone Density Functional Theory (DFT) calculations with PWSCF (Quantum Espresso) or VASP, quantum chemical calculations with GAMESS, Hartree-Fock (HF) calculations of atoms with the SQD code (packaged with QMCPACK), complete QMC calculations with QMCPACK (including wavefunction optimization, Variational Monte Carlo (VMC), and Diffusion Monte Carlo (DMC) in periodic or open boundary conditions), automated job management on workstations (by acting as a virtual queue) and clusters/supercomputers including handling of dependencies between calculations and job bundling, and extraction of results from completed calculations for analysis. The integration of these capabilities permits the user to focus on the high-level tasks of problem formulation and interpretation of the results without (in principle) becoming too involved in the time-consuming, lower level details.

## How Nexus is used¶

Use of Nexus currently involves writing a short Python script
describing the calculations to be performed. This small script formed by the
user closely resembles an input file for electronic structure codes. A key
difference is that this “input file” represents executable code, and so
variables are easily defined for use in expressions and more complicated
simulation workflows (*e.g.* an equation of state) can be constructed
with if/else logic and for loops. Knowledge of the Python programming language
is helpful to perform complex calculations, but not essential for use of
Nexus. Starting from working “input files” such as those covered
on the Complete Examples page is a good way to proceed.