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.