AngstromCube
AngstromCube is an experimental all-electron DFT application.
Using the Green functions formalism, near-sightedness allows
for linear-scaling and the projector augmented wave method (PAW),
in particular the revised PAW method, see Paul F. Baumeister and Shigeru Tsukamoto,
[proceedings of PASC19](https://dl.acm.org/doi/10.1145/3324989.3325717)
Name The name refers to a cube with edge length 1 Angstrom which is abbreviated \AA in TeX code. This is because always 4x4x4 real-space grid points are grouped for performance which corresponds to roughly one \AA^3
Principles The idea is to have a code that
- is highly parallel
- can make use of GPUs
- does not require more input than the atomic coordinates
- can scale linearly
Current Status
- These features are ready:
- MPI parallelization of parallel_potential and tfQMRgpu Green function solver
- total energy calculation
- complex wave functions, complex Green functions, k-points
- boundary conditions for Wfs: periodic and isolated, for Gf also repeat and vacuum
- non-magnetic potential generation
- MPI parallel Poisson solver for the electrostatics (no preconditioner)
- SHO-projector PAW with all-electron atoms (currently only non-magnetic)
- GPU acceleration (CUDA support)
- These features are planned but have so far not been addressed:
- different versions of LDA, GGA, meta-GGA (currently only LDA implemented)
- efficient eigensolver for the grid Hamiltonian (currently inefficient subspace rotation method)
- OpenMP parallelization (currently only in some places)
- forces (currently none)
- self-consistency convergence criteria (currently we set the number of iterations)
- magnetism, collinear and non-collinear (currently only non-magnetic)
- Some features are build in only for development purposes:
- a stable FFT Poisson solver for the electrostatic problem (serial only)
- plane wave basis set using a dense matrix eigensolver (LAPACK) or iterative (in development)
- dense eigensolver for the real-space grid Hamiltonian (expensive)
- These features are not intended to be implemented ever:
- strain calculation
- exact exchange
- phonons
Directories The root folder of this repository contains the following directories:
Directory | Purpose |
---|---|
src | source folder for C++ and CUDA C++ sources |
include | source folder for C and C++ header files |
doc | documentation folder including manual and theory notes |
data | matrix element files for SHO transforms between radial and Cartesian bases |
test | test scripts for certain modules |
external | put third party libraries here |
interfaces | examples for the libliveatom.so library in C, Fortran90, Julia and Python |
tools | experimental scripts in Julia and Rust (programming languages) |
ref | reference outputs of certain unit tests |
Abbreviations
Abbr. | Explanation |
---|---|
DFT | Density Functional Theory |
XC | Exchange-correlation |
LDA | Local Density Approximation |
GGA | Generalized Gradient Approximation |
PAW | Projector Augmented Wave |
CPU | Central Processing Unit |
GPU | Graphical Processing Unit |
SHO | Spherical Harmonic Oscillator |
MPI | Message Passing Interface |
FFT | Fast Fourier Transform |
OMP | OpenMP, Open Multi-Processing |
TeX | LaTeX typesetting |
Gf | Green function |
Wf | Wave function (eigenstate) |