libOMM¶
Purpose of Module¶
libOMM solves the Kohn-Sham equation as a generalized eigenvalue problem for a fixed Hamiltonian. It implements the orbital minimization method (OMM), which works within a density matrix formalism. The basic strategy of the OMM is to find the set of Wannier functions (WFs) describing the occupied subspace by direct unconstrained minimization of an appropriately-constructed functional. The density matrix can then be calculated from the WFs. The solver is usually employed within an outer self-consistency (SCF) cycle. Therefore, the WFs resulting from one SCF iteration can be saved and then re-used as the initial guess for the next iteration.
Background Information¶
libOMM is a software library to be used within a calling code. It is built on top of the MatrixSwitch library for dealing with matrix storage and operations. Both libraries are developed within the same repository project (see Source Code), but are self-contained within separate directories.
Software Technical Information¶
- License
- Simplified BSD
- Language
- Fortran 2008
- Documentation Tool
- Source code documentation in progress.
- Application Documentation
- The ESL wiki
- Relevant Training Material
- See usage examples in the
examples
directory of the source code.
Installation¶
The source code of the LibOMM module is bundled in the git repository of
the omm-bundle
software which you can obtain using git
:
git clone https://gitlab.e-cam2020.eu/ESL/omm.git
The source code of the LibOMM module itself is contained in a
subdirectory with the same name, LibOMM
.
Note
The information contained in the Installation and Testing sections are likely to work with the latest version of the source code from the repository. If this is not the case you can revert to the commit where the information is guaranteed to work:
git checkout 7eda3275
- Enter the
src
directory. - Copy
make.inc.example
tomake.inc
and modify it to suit your needs.MSLIBPATH
should point to the MatrixSwitch directory (default inmake.inc.example
is for the version included in the distribution). LibOMM should be compiled with the-DCONV
flag. Some available options forFPPFLAGS
are:-DHAVE_MPI
: enable MPI parallel routines-DHAVE_LAPACK
: enable LAPACK routines (currently necessary for preconditioning/Cholesky factorization)-DHAVE_SCALAPACK
: enable ScaLAPACK routines (requires-DMPI
)-DNORAND
: fixed seed for the random number generator. Enable for testing purposes.-DCBIND
: use ISO_C_BINDING for LOGICAL inputs in the wrapper interfaces. Enable for linking to C.
- Type
make -f Makefile.manual
. - Type
make -f Makefile.manual install
.
Note
We provide also the possibility to build modules with Autotools. You can find the related documentation in the following files:omm-bundle and LibOMM/doc
Testing¶
The examples
directory contains a number of small programs that make use of
libOMM with MatrixSwitch. These can be useful both for testing the installation
and for learning how to use the library. To compile them:
- Enter the
examples
directory. - Copy
make.inc.example
tomake.inc
and modify it to suit your needs. Be aware thatmake.inc
in thesrc
directory will also be used. - Type
make -f Makefile.manual
.
Each example contains a header explaining what the program does and providing sample output to compare against.
Source Code¶
The source code is available from the E-CAM Gitlab under the omm-bundle project. The libOMM directory can be found here.