IMPORTANT
The information provided on this page is valid for Abinit 8.1 and future versions only.
The intrinsic capabilities of Abinit can be greatly enhanced by the use of optional external packages. The corresponding options of configure all follow the same scheme:
In each of the previous items, package will be replaced by the names in the first column from the table below. Please note that the use of with_package is incompatible with the other with_* options, since it defines the values specified by these options in a possibly conflicting way. If you try to use both schemes, configure will fail and ask you to choose only one of them.
If you use the with_package option without an argument, the build system will look for the corresponding package using the built-in defaults of Abinit. Otherwise, the with_package option expects a directory as an argument. For example, if you specify:
with_libxc="/path/to/libxc"
the configure script will look for:
/path/to/libxc/bin/
;/path/to/libxc/include/
;/path/to/libxc/lib/
and /path/to/libxc/lib64/
.The following table summarizes the available optional features of Abinit. To enable them, you will have to make sure that the corresponding optional packages are correctly installed on your system before configuring Abinit.
Package | Name | Status | Description |
---|---|---|---|
bigdft | BigDFT | Development | Wavelets for low-dimensional systems |
etsf_io | ETSF_IO | Mature | Platform-independent data exchange |
gsl | GSL | Mature | Standard mathematical functions |
libpspio | Libpspio | Experimental | Reading of atomic data in many formats |
libxc | LibXC | Mature | More than 300 exchange-correlation functionals |
netcdf | NetCDF | Mature | Platform-independent I/O |
papi | PAPI | Mature | Performance Application Programming Interface |
psml | PSML | Mature | PSeudopotential Markup Language |
triqs | TRIQS | Experimental | Toolbox for Research on Interacting Quantum Systems |
wannier90 | Wannier90 | Mature | Maximally-Localized Wannier Functions (MLWFs) |
yaml | LibYAML | Experimental | YAML Ain't Markup Language I/O |
All the individual options can be overridden by with_optpkgs, which tells the configure script that all external dependencies have been installed in the same place. In this case, the build system will assume that each package has been installed in its own <package>-<version>
subdirectory and will enable all those it finds in the specified top directory. This means that you can install as many versions of each package as you want within the same directory tree, while keeping full compatibility with different Abinit versions.
Important note
If you use this option, you can then only use the other with_package options without arguments, to fine-tune which optional packages will actually be enabled. All other combinations will make configure fail with an error.
As an example, let us now suppose that you have installed optional packages for Abinit under the /path/to/my/packages/
directory. Your directory tree will look like the following:
/path/to/my_packages
│
├── etsf_io-1.0.4
│ ├── bin
│ ├── include
│ ├── lib
│ └── share
│ └── doc
├── libpspio-bzr
│ ├── include
│ └── lib
├── libxc-2.0.3
│ ├── include
│ └── lib
│ └── pkgconfig
├── libxc-2.2.1
│ ├── bin
│ ├── include
│ └── lib
│ └── pkgconfig
├── triqs-1.2
│ ├── bin
│ ├── include
│ │ ├── pytriqs
│ │ └── triqs
│ ├── lib
│ │ └── python2.7
│ └── share
│ └── triqs
└── wannier90-1.2.0.4
│ ├── bin
│ ├── lib
│ │ └── pkgconfig
│ └── share
│ └── doc
└── wannier90-2.0.1.1
├── bin
├── lib
│ └── pkgconfig
└── share
└── doc
As you can see, this directory tree includes two different versions of LibXC and Wannier90. Depending on which version of Abinit you are building, the correct version of each package will automatically be selected by the build system.