3.51 Atomic Simulation Environment (ASI) API

ASI is a native C-style API that allows the user to define functions for exporting and importing data structures commonly used in electronic structure codes. The interface allows for the registration of C-based callbacks which expose given data structures to an external calling code via C-pointers. Presently, ASI supports the export of overlap, density, and Hamiltonian matrices, as well as the import of density and Hamiltonian matrices. Additionally, the Hamiltonian may be modified by an externally-defined matrix.

For details regarding the full capabilities of the ASI API, please refer to the documentation for the interface (https://pvst.gitlab.io/asi/), or the support Stishenko et al. publication.[285]

3.51.1 Installation and Usage Requirements

To enable ASI support, FHI-aims must be built as a shared library and called through an external calling program. To compile FHI-aims as a shared library, add the following configuration variable to the CMake cache file:

set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)

To enable the import and export of density matrices, the keyword density_update_method density_matrix must be supplied.

A Pythonic interface for calling FHI-aims with ASI support is provided by the asi4py package. asi4py is available for installation from the the PyPI package repository as:

pip install asi4py

Practical examples for launching calculations through asi4py are available at https://gitlab.com/pvst/asi/-/tree/main/examples?ref_type=heads.

Alternatively, ASI may invoke FHI-aims through a C++ program. Practical examples for achieving this may be found at https://gitlab.com/pvst/asi/-/tree/main/tests/src?ref_type=heads.