Skip to content

tjira/acorn

Repository files navigation

Quantum Acorn


Quantum Acorn, a collection of electronic structure methods compiled into a dependency-free binary. If you are here for the educational scripts, you can find them in the education folder.

Features

Below are all the important features of Acorn divided into categories. If you are looking for the educational scripts, you can find them in the education folder.

Quantum Mechanical Methods

  • Numerically Exact 1D and 2D Adiabatic Quantum Dynamics
  • Numerically Exact 1D Nonadiabatic Quantum Dynamics
  • Hartree-Fock Method (RHF & UHF)
  • Møller–Plesset Perturbation Theory
  • Configuration Interaction (FCI, CISD, CID, CIS)

Additional Calculations

  • Analytical Gradient for RHF and Numerical for Everything Else
  • Numerical Hessians and Frequency Analysis for Every Method
  • Molecular Dynamics With Calculated or Provided Gradients
  • Mulliken Population Analysis for RHF

Compilation

The software requires the libint library. Before the compilation process, make sure you have eigen and boost installed. On debian-based distributions, you can do it with the following command.

sudo apt install libboost-dev libeigen3-dev

To compile the library execute ./script/libint.sh from the project root directory. This command creates the libint directory with the compiled library. Now, we export the necessary environment variables.

export CPLUS_INCLUDE_PATH="$PWD/libint/install/include:$CPLUS_INCLUDE_PATH"
export LIBRARY_PATH="$PWD/libint/install/lib:$LIBRARY_PATH"

After this, the project configuration should finish without errors.

cmake -B build -DCMAKE_BUILD_TYPE=Release

And we can build with the following command.

cmake --build build

After the compilation the bin folder will be created along with the executables.

Examples

All the example inputs are located in the example/input folder. They are meant to be kept there due to the relative paths to the molecules. If you are in the project root directory, you can run one of the examples with the following command.

./bin/acorn example/input/rhf.json

The calculation should finish without errors. Feel free to explore all the examples. Keep in mind that to execute the ORCA or BAGEL dynamics example you need the corresponding executable in your PATH variable.

Credits

  • argparse - Argument Parser for Modern C++.
  • exprtk - C++ Mathematical Expression Parsing and Evaluation Library.
  • fftw - C Subroutine Library for Computing the Discrete Fourier Transform .
  • glad - Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator Based on the Official Specs.
  • glfw - Multi-Platform Library for OpenGL, OpenGL ES, Vulkan, Window and Input.
  • glm - OpenGL Mathematics.
  • imgui - Bloat-free Graphical User Interface for C++ with Minimal Dependencies.
  • imguifiledialog - File Dialog for Dear ImGui.
  • json - JSON for Modern C++.
  • libint - High-Performance Library for Computing Gaussian Integrals in Quantum Mechanics.
  • stb - Single-File Public Domain Libraries for C/C++.