The ESCL so far contains classes related to setting up the crystal lattice with a basis, symmetry check, and some classes that make file handling and input processing a little more convenient. It's only a start and far from complete. If you think that sounds interesting just download the source and have a look. It shouldn't be too difficult to compile the library, although it doesn't come with a configure script yet, so you might have to edit the makefile. The sources are quite well documented and there's also a documentation generated by doxygen. Future plans include adding classes for atoms and electronic states, k-point meshes, setting up Hamiltonians and overlap matrices, and everything else that might be needed in an electronic structure code.
The ESCL is released under the GNU General Public License. I would appreciate if you send me an email if you find the ESCL useful, or if you have any thoughts, comments, or suggestions. The library comes with a tool, called checklattice, to illustrate its usage. checklattice reads a lattice and a basis from an input file and looks for symmetries. Here is an example of an input file and the output that checklattice yields:
Input:
!BRAVAIS stet 1 1.3 !BASIS 0.0 0.0 0.0 Fe 0.5 0.5 0.5 Pt
Output:
checklattice, linked with ESCL 0.1.0
Bravais lattice:
----------------
Lattice type: simple tetragonal
Length scale: 1
Unit cell volume: 1.3
Lattice vectors /length_scale (in rows):
1.0000000000000 0.0000000000000 0.0000000000000
0.0000000000000 1.0000000000000 0.0000000000000
0.0000000000000 0.0000000000000 1.3000000000000
Reciprocal lattice vectors *length_scale/(2*pi) (in rows):
1.0000000000000 0.0000000000000 0.0000000000000
0.0000000000000 1.0000000000000 0.0000000000000
0.0000000000000 0.0000000000000 0.7692307692308
Basis:
------
Number of species: 2
Species: Fe Pt
Number of sites: 2
1: Fe, 1 sites
0.0000000000000 0.0000000000000 0.0000000000000
2: Pt, 1 sites
0.5000000000000 0.5000000000000 0.5000000000000
Symmetry: --------- Number of symmetries: 16 Number of Bravais lattice symmetries: 16 Inversion symmetry is included. Tried 55 symmetry centers (mode: between three sites).
Types:
------
Number of types: 2
1: Fe, 1 sites, 16 symmetries
0.0000000000000 0.0000000000000 0.0000000000000
2: Pt, 1 sites, 16 symmetries
0.5000000000000 0.5000000000000 0.5000000000000
Done.Also, some short programs that test certain aspects of the library can be found in the directory called test.
make. This will compile the library, some tests, and some tools that are based on the library. To install the library and the header files in $PREFIX/lib and $PREFIX/include/escl, respectively, simply type make install. $PREFIX is set to $HOME but can easily easily be overwritten by typing make install PREFIX=installdir.escl.h in your code:
#include "escl/escl.h"
The namespace is called 'escl'. To link the library add -lescl to your linker command. If the compiler/linker do not find the corresponding files use -I and -L, respectively.