The ETSF provides, collects, and archives different tools and data to assist future research. Within the network, different Software is developed. All codes are released under Free Software licenses. They are tested using our Test Farm. We are making a concerted effort to facilitate their use by unifying input/output files and by using the same standards. We are builing an E-library containing input files of our calculations to allow other users of our software to reproduce and verify our published results. Last but not least, we are archiving all Publications resulting from the user projects as well as all other research within the ETSF groups.
Highly efficient computational software plays a crucial role in bridging the gap between theoretical methods and real applications. In the past decade, scientists in our community have developed a great variety of efficient computational programs aiming at first principles modeling of real materials. See our codes page for a more detailed explanation.
An important component of the ETSF is the integration of code development, as each node has complementary theoretical capabilities and software tools. Steps have been taken in the direction of standardization of files, including a file format for pseudo-potentials and a file format for electronic structure I/O.
A further direction being followed by the ETSF concerning software is to propose libraries and tools to handle ETSF files and to develop ETSF-compliant software. These tools include for instance a library to read and write electronic structure files (ETSF I/O), as well as a tool to convert pseudopotential files into different formats of interest for the ETSF codes (pspconvert).
The repository of available binaries for ETSF software can be found following the link below. This document (updated 06/2011) details the status of availability of ETSF software.
Ab initio codes developed within the ETSF cover a wide field of application ranging from molecules and nano-scale clusters to 1D, 2D and 3D extended systems. The physical quantities provided by these programs include:
Through these physical quantities, a large variety of physical properties can be addressed:
Clicking on the logos will bring you to the (external) websites of the codes.
ABINIT is an ab initio computational package based on pseudopotentials and using a plane-wave basis set. It is an implementation of density-functional theory (DFT) and density-functional perturbation theory (DFPT), but also of time-dependent density functional theory (TDDFT) in the Casida approach, and
many-body perturbation theory in the GW approximation.
Main purposes:
The DP code is an ab initio linear response TDDFT code implemented on a plane-wave basis set and NC pseudopotentials. It works in the frequency domain calculating in real space the basic quantities (the Kohn-Sham polarizability and the exchange-correlation kernel) and solving the fundamental TDDFT equations in reciprocal space. The approximations range from the most used RPA and TDLDA, to non-local (and/or non-adiabatic) kernels. Bulk systems are particularly well suited, but the code can be applied also to surfaces, 1D (tubes, wires) and 0D (clusters, molecules) systems.
Main purposes:
EXC is an ab initio Bethe-Salpeter Equation code working in reciprocal space, in the frequency domain, and using a plane-wave basis set. Its purpose is to calculate dielectric and optical properties, like
It can be used on a large variety of systems, ranging from bulk systems, surfaces, to clusters or atoms (using the supercell method). Full coupling (beyond Tamm-Dancoff approximation) calculations are possible, as well as the possibility to speed up using the Haydock iterative scheme.
The Octopus code solves the TDKS equation in a non-perturbative way. Its central part is the propagation of the TDKS orbitals in real time and real space. It is therefore particularly geared to the calculation of nonlinear (and of course also linear) optical properties.
It also allows for the classical motion of ions and it includes (low-order) relativistic effects. The code currently works for finite systems (including biomolecules in QM/MM). The implementation for systems periodic in one dimension and finite in the two other dimensions (i.e. polymers) is nearly completed. The implementation for 3D periodic solids and the calculation of transport properties are currently the main code development activities.
TOSCA is a package for computing optical spectra of solids in the IP-RPA approximation. The full power of TOSCA is revealed when studying complex systems like surfaces or clusters.
The kernel of TOSCA is formed by a set of Fortran routines that allow an ab initio non-SCF calculation by diagonalizing the Kohn-Sham hamiltonian using one of the following methods: full or partial diagonalization, diagonalization using the method of Lanczos, and Arnoldi diagonalization.
Once the eigenvalues and eigenvectors have been computed the following quantities can be computed by TOSCA:
Yambo is a code for performing many-body calculations in solid state and molecular physics. Yambo relies on the Kohn-Sham wavefunctions generated by two DFT public codes (abinit and PWscf), but can also utilize data written in the ETSF file format.
With the GPL version of Yambo you can calculate:
exciting is a full-potential all-electron density-functional-theory (DFT) package based on the linearized augmented plane-wave (LAPW) method. It can be applied to all kinds of materials, irrespective of the atomic species involved, and also allows for the investigation of the atomic-core region. We particularly focus on excited state properties, within the framework of time-dependent DFT (TDDFT) as well as within many-body perturbation theory (MBPT).
Emphasis has been placed on simplicity so that new DFT methods can be implemented easily. Features of the code include non-collinear magnetism, spin-spirals, relativistic corrections, forces, structural optimization, phonons, electron-phonon coupling, LDA+U, linear optics, electron loss near-edge spectroscopy (ELNES), magneto-optical Kerr effect (MOKE), Hartree-Fock, and the optimised effective potential (OEP) method. Most features work together in combination. The code is freely available under the GNU General Public License (GPL).
Relevant activities:
Elk is an all-electron full-potential linearised augmented-plane wave (FP-LAPW) code with many advanced features. The code is designed to be as simple as possible so that new developments in the field of density functional theory (DFT) can be added quickly and reliably. The code is freely available under the GNU General Public License.
Relevant activities:
APE (Atomic Pseudopotential Engine) is a tool for generating atomic pseudopotentials within the Density-Functional Theory framework. The program can create pseudopotential files suitable for the most widely used ab-initio packages, and, besides the standard non-relativistic Hamann and Troullier–Martins potentials, it can generate pseudopotentials using the relativistic and semi-core extensions to the Troullier–Martins scheme.
Relevant activities:
ABINIT is a package whose main program allows one to find the total energy, charge density and electronic structure of systems made of electrons and nuclei (molecules and periodic solids) within Density Functional Theory (DFT), using pseudopotentials and a planewave basis. Production version. Built for ia32/x86_64 Linux, x86_64 OSX and 32bit Windows
DP is a linear response time-dependent density functional theory code in frequency reciprocal space on a plane waves basis set to calculate dielectric and optical properties. New development release, optimized for i686 or x86_64
EXC is an exciton code working in reciprocal space, frequency domain and using plane waves basis to calculate dielectric and optical properties. Optimized for i686 or x86_64
Tosca is a package for computing optical spectra of solids in the IP-RPA approximation able to study complex systems like surfaces or clusters, compiled for i386.
Octopus is package aimed at the simulation of the electron-ion dynamics of finite systems under the influence of time-dependent electromagnetic fields. It has used to calculate linear and non-linear absorption spectra, harmonic spectra, laser induced fragmentation. Requires Sparskit 2.18. Optimized for i686 and x86_64
fhi98PP generates norm-conserving pseudopotentials of the Hammann and Troullier-Martins types, employing common parameterizations of the local-density approximation and generalized gradient approximations for exchange and correlation. Compiled for x86_64
PSPConvert is a conversion tool between fhi, cpi and ncpp pseudopotential file formats written in Python 2.4. Requires pygsl-0.9.3.
Yambo performs Many-Body calculations in solid state and molecular physics, relying on the Kohn-Sham wavefunctions generated by two DFT (Abinit and PWscf) packages. Compiled for i386 and x86_64.
V_Sim visualizes atomic structures such as crystals, grain boundaries, ... either in .d3 or in plain text format. Built on CentOS 5 and Ubuntu 8.04 for i386
Exciting is a FP-LAPW package for investigation of excited state properties, within the framework of time-dependent DFT (TDDFT) as well as within many-body perturbation theory (MBPT). Built for x86_64 Linux
Elk is an all-electron full-potential linearised augmented-plane wave (FP-LAPW) code with many advanced features. Built for x86_64 Linux
APE is a tool for generating atomic pseudopotentials within the DFT framework i.e. standard non-relativistic Hamann and Troullier–Martins potentials but also using the relativistic and semi-core extensions to these schemes. Built for x86_64 Linux
Sparskit is a basic toolkit for sparse matrix computations by Yousef Saad. Required by Octopus. Built on CentOS 5 (32 bit)
PyGSL provides a python interface for the GNU scientific library GSL. Required by PSPConvert. Built on CentOS 5 (32 bit)
ETSF software distribution packaged as a bootable live CD. Comes with documentation and tutorials. Requires an Intel or AMD 64bit cpu class computer with at least 512 MB memory.
View a ten-minute screencast to see how it works.
For the individually installable files – minimum requirements: an Intel/AMD Pentium4 class computer with 256 MB RAM and 100 MB free hard disk space / a recent Debian or Redhat Linux operating system.
Most Linux variants come with some sort of installation management software namely dpkg for Debian (Knoppix, Ubuntu, …) and rpm for Redhat style distributions (Fedora, OpenSUSE, ...). From a terminal window, the packagename.rpm can be installed to a subdirectory in the /opt tree by invoking sudo rpm ‑ivh packagename.rpm. Running the yum utility may solve dependencies errors. Similarly, the packagename.deb will be installed by sudo dpkg ‑I packagename.deb and missing dependencies solved with apt‑get. Tar files contain relocatable binaries; uncompress with gzip or bzip2 utilities and install with tar.
For the ISO files – minimum requirements: an Intel/AMD amd64 class computer with at least 512 MB RAM and fast graphic display.
They contain a binary image of bootable Linux operating system with the ETSF software preinstalled in the /usr directory tree. After burning the .iso file to a CD(R or RW), the disk is inserted to cold boot the computer and is designed to automatically detect hardware components and to operate from RAM without installing anything on the user hard disk.
The software mentioned on this page is relevant for ETSF activities (i.e. used and/or developed by ETSF members), but is not part of the ETSF software suite (for instance, due to licencing issues).
If you would like your software advertised by the ETSF, you may submit your request via the page "Submission form for software distribution". On this page you will also find guidelines for the acceptance of software for advertisement by the ETSF.
The ETSF makes no warranties about the usability, accuracy, suitability for any particular purpose of the provided information. ETSF shall be under no liability by reason of use of that information.
ASE is an Atomistic Simulation Environment written in the Python programming language with the aim of setting up, steering, and analyzing atomistic simulations. ASE is part of CAMPOS, the CAMP Open Source project.
ASE contains Python interfaces to several different electronic structure codes including Abinit, Asap, Dacapo, Elk, GPAW and SIESTA. This software is free to use and distribute.
For further details, see the project web page.
ETSF contact: Dr. Yann Pouillon (yann [dot] pouillon [at] ehu [dot] es).
FHI-aims (the Fritz Haber Institute ab initio molecular simulations package) is an accurate all-electron, full-potential electronic structure code package for computational materials science based on numeric atom-centered basis functions, offering:
This software is distributed under commercial license (restricted diffusion). For further details, see the project web.
ETSF contact: Dr. Patrick Rinke (rinke [at] fhi-berlin [dot] mpg [dot] de).
GPAW is a density-functional theory (DFT) Python code based on the projector-augmented wave (PAW) method. It uses real-space uniform grids and multigrid methods or atom-centered basis-functions. This software is free to use and distribute.
For further details, see the project web page.
ETSF contact: Dr. Yann Pouillon (yann [dot] pouillon [at] ehu [dot] es).
To allow the adoption of its recommendations about standardization, the ETSF proposes different libraries and tools implementing or using these specifications, as well as widely usable pieces of software.
A library of F90 routines to read/write the ETSF file format has been written. It is called ETSF_IO and available under LGPL. The tar file contains full documentation (see the doc/www directory of the package), several tutorials (compilable and highly documented programs) and a complete self-test suite. The code history records patches and updates.
The ETSF_IO package has been described in a publication in Computer Physics Communication. When using this library, please cite the following paper:
"Sharing electronic structure and crystallographic data with ETSF_IO", D. Caliste, Y. Pouillon, M.J. Verstraete, V. Olevano, X. Gonze, Comp. Phys. Com. 179, 748-758 (2008).
ETSF_IO is shipped with several libraries. These libraries provide low- to high-level access routines for ETSF files. Each library contains one or several modules, as described below.
Libxc is the library of exchange-correlation functionals written by M.A.L. Marques, and adopted by the ETSF. Its aim is to provide a portable, well tested and reliable set of exchange and correlation functionals, that can be used by all the ETSF codes and also other codes.
In libxc you can find different types of functionals: LDA, GGA, hybrids, mGGA and LCA. It can calculate the functional itself and its derivative. For some functionals, higher order derivatives are available.
Libxc is written in C and has Fortran bindings. It is released under the LGPL license (v. 3.0)
Libpspio is a library able to read and write pseudopotentials in various formats, allowing for conversion in some cases. It is currently under heavy development and testing. A release will be available from this page once the library has been sufficiently debugged.
IMPORTANT: the script you can download here is available only for reference. A library is currently being written to replace it.
pspconvert.py is a command-line pseudopotential conversion program. The code addresses several needs of the electronic structure and theoretical spectroscopy communities, such as allowing the use of old datasets with newer codes and facilitate dataset exchange between researchers. Futhermore pspconvert will be a very useful tool to help in the process of uniformization of pseudopotential file formats, helping everyone to migrate to the newer format.
The visualization tool V_Sim is also able to read the crystallographic data from the ETSF file format since release 3.3. It has the capability to render atomic structures and to load density files and draw iso-surfaces.
This page records the publication history of the ETSF_IO package, with patches and updates, following the ETSF file format specification:
One of the central features of the ETSF electronic-structure and simulation programs is their interoperability. It is essential that the output of one code (typically to calculate the ground state properties of a system) be readable in an automatic way by other codes, which will use it to calculate other derived properties (typically optical, or transport properties). This is more involved than sharing simple physical quantities (atomic positions, energy) because of the sheer volume of data which must be handed over. In simple cases with a few atoms, the wavefunctions and related quantities will occupy several megabytes of disk space. In more extended or complex calculations this can quickly reach gigabytes. The efficient passing of data implies that it must be in a binary format, but it must also be platform-independent.
The ETSF has developed standard file formats to allow better integration and better interoperability between codes; both those developed internally in the ETSF and any others: the format and a suite of libraries for file access are completely open source. The standardization philosophy is based as much as possible on existing file formats, such as XML or NetCDF. We focus on the capability to read or write these formats on a wide variety of platforms and using different programming languages (in particular Fortran 90, C, and Python). Backward compatibility is also a strong concern.
In order to allow software to inter-operate efficiently and exchange data, file format specifications are mandatory. Widely used file format specifications are still lacking in the field of first-principles calculations of material properties. One of the objectives of the ETSF is precisely to specify such file formats, for content that is relevant to our scientific activity in theoretical spectroscopy (wavefunctions, crystallographic data, densities and potentials, etc...).
The ETSF I/O specifications include the detailed NetCDF description of the fields and content of a valid ETSF-IO file. These specifications have been first devised during the Nanoquanta Network Of Excellence, and continuously enhanced, to reach now version 3.3.
The specifications are presented as a PDF document, which is organized in sections :
The ETSF File Format has been implemented as the ETSF I/O Library. Please see our Libraries and Tools page for more details and download instructions.
While portability has always been an issue in the field of simulation, interoperability in scientific software development is only a recent concern, triggered both by the individual efforts reaching a level of
complexity where collaboration becomes a necessity, and also by the appealing networking capabilities now offered by modern intranets and the internet. Just like for living cells which long ago started to join and create multicellular organisms, evolutionary pressure drives us now towards ``multicode simulations'', promising greater horizons, greater achievements, and greater challenges as well.
The turning point has been passed when technological applications have reached the nanoscale, i.e. the scale at which the properties of the systems start to vary with their size. In other words, when adding or removing just one atom causes important variations in their properties, thus invalidating their description by any statistical approach. The number of atoms involved was still however way too large for the systems to be tractable for an atomic-scale description. To address this issue, a huge effort aiming at enhancing considerably the available computational power has been undertaken.
Another aspect is the context in which these efforts are conducted. In the world of academic research, most of the software developments are performed by post-docs and PhD students, who are now in a much more precarious situation than in the past decades. The turnover is very high, and regularly new students have to be trained before being fully operational, which is very demanding. It also makes long-term projects — such as scientific software — more difficult to carry out, since these non-permanent people usually participate to the project for a few years only and may leave it very abruptly at any time. It is thus critical to devise a strategy for preserving maintainability over time.
This document provides a set of generic rules to follow in order to develop good-quality scientific software for the ETSF. It was formerly known under the title Guidelines for code development and code documentation and used as a reference within the Nanoquanta Network of Excellence, the main objective was the creation of the ETSF. The content of the current document is a typo-fixed release of the version 3 of these guidelines, published on February 2nd 2008 by the Nanoquanta Integration Team 9 “Integration of theory and code developments”.
Instead of restarting from scratch at the beginning of the ETSF, we have decided to consider the guidelines written during the lifetime of Nanoquanta as the major version 1 of the coding standards, each release of the guidelines constituting a minor version. This means that we start at version 1.3 and can improve on it while preparing a major version 2 of the coding standards.
The IT5 members would like to express gratitude to everyone for their past participation in the survey.
The survey has ended as of December 2009 after one month of operation. It has provided valuable information about the users of this project, their perception of the qualities or the weaknesses of the resources and useful ratings of project advancements. Thanks again for those of you who left comments and remarks; they will be taken into account for improving the ETSF offer.
The survey has been announced on 14th October 2009; it has returned a total of 193 usable replies.
The distribution of the ETSF community shows that 85% of the users are affiliated with academic institutions, 12% with governmental entities and 3% with industry. 16% of the respondents are members of the ETSF network. 79% of the respondents described themselves as qualified users and the ETSF suite is the only software tool useful for 32% of all users.


Abinit is the most favored code among the suite with 91% of the participants reporting to use it - an enviable position probably due to the fact that several other componnents are dependent on this appliction output.

A large majority of the users (96%) is satisfied with the ETSF software suite. Almost all of them (99%) affirm that these applications have improved the quality of their work.

The efficient sharing and dissemination of research data is clearly a necessity for the maintenance of a strong and tight community and therefore for success of the ETSF.
Normally, the exchange of data is achieved through the publication of scientific articles where the results of a research project are summarised and analysed in a series of plots and tables. This is clearly insufficient for the field of theoretical spectroscopy, and indeed for any computational science.
More recently, with the appearance of electronic “attachments” to articles the situation has somehow improved, but the information is nevertheless scarce and widely distributed over different sources. We plan to create an electronic platform for the exchange of data relevant for the field of electronic spectroscopy. In particular, we will create an electronic library, with a simple but sophisticated scheme for the indexing of not only computer code, modular subroutines, and libraries (to be reused by software developers), but also of input and output specifications, geometries, pseudopotentials, etc. In this way scientists will be able to easily repeat calculations performed by other groups, and also to integrate that information into their own research.
This electronic library will also contain a set of well-established, crosschecked spectroscopic experimental results to provide the ETSF users reliable references for their simulations. This will create a functional and easy-to-use tool to interpret, refine, and choose the technique or approximation to use. Tools to help the analysis will be developed.
In order to ensure efficient development and dissemination of quality software tools, a farm of platforms is made available for debugging and testing purposes.
This facility is open to all developers within ETSF.
ETSF software offer consists of several large-scale products. Their development involves frequent updates by teams of programmers. In order to ensure that high levels of quality are attained, the portability and reliability of the applications are regularly checked on a diversity of environments by means of standardized procedures. They are performed on a farm of platforms running software builders detailed hereunder.
Users interested by the concepts behind a test farm may download this document presented during the CECAM tutorial in Zaragoza
The setup consists of several computers selected for their diverse characteristics controlled by a client/server software environment named Buildbot.
Buildbot is a system designed to automate the configure - compile - test routine commonly exercised by software development projects in order to validate code changes as described on this utility homepage. It relies on a client/server paradigm:

Buildbot operations rely on several computers hosted at ETSF central node (Louvain-la-Neuve, Belgium). The build slaves offer a wide variety of configurations - a mixture of little endian and big endian (multi)processors systems representative of both desktop computers and large scale computing facilities.
A diversity of open source and proprietary operating systems, compilers and parallel processing libraries is provided. The following table summarizes the available hardware and its characteristics - number of CPU's, on board memory, software environment and build slave capacity for parallel processing. This facility is properly scaled in order to sustain a daily testing round from the different applications developed within ETSF.
| Builder | Brand | CPU | Procs | RAM | OS | bots |
|---|---|---|---|---|---|---|
| testf | Bull R423-E2 | Intel Xeon | 2x Quad | 12GB | CentOS 5.3 | 2 |
| chum | Sun X4200M2 | AMD Opteron | 2x Dual | 32GB | CentOS 5.3 | 1 |
| green-bb | Dell PowerEdge | Intel Xeon | 2x Quad | 16GB | SLinux 5.3 | 2 |
| bigmac | Apple Mac Pro | Intel Xeon | 2x Quad | 6GB | OSX 10.5 | 2 |
| chpit | HP rx4640 | Intel Itanium2 | 4 | 8GB | Debian 5.0.1 | 1 | buda | Transtec | Intel Xeon + GPUs | 2x Quad | 12GB | CentOS 5.5 | 2 |
| inca | HP DC7900 | Intel Core2 | 1x Quad | 4GB | CentOS 5.5 | 1 |
| shiva | HP Z400 | Intel Xeon | 1x Hexa | 12GB | CentOS 5.5 | 1 |
| fock | IBM OpenPower 720 | IBM Power5 | 2x Dual | 32GB | Suse 9.1 | 1 |
| ibm6 | IBM OpenPower 510 | IBM Power6 | 2x Dual | 8GB | AIX 6.1 | 1 | max | Apple XServe | IBM PowerPC G5 | 18x Dual | 18x 4GB | OSX 10.4 | 1 |
| coba2 | HP Z400 | Intel Xeon | 1x Quad | 3GB | CentOS 5.3 | 1 |
| littlebuda | Asus P55 | Intel Core2 + GPU | 1x Quad | 4GB | CentOS 5.5 | 1 |
| woopy | HP DC8100 | Intel Corei7 | 1x Quad | 4GB | Windows XP64 | 1 |
| ktulu | HP DC8000 | Intel Corei7 | 1x Quad | 8GB | Ubuntu 10.04 | 1 |
| toum | HP Z400 | Intel Core2 | 1x Quad | 8GB | Scientific Linux 6.0 | 1 |
The following table displays the configured compilers and libraries on each slave. Considering that the ETSF software distribution mainly consists of applications written in Fortran 90/95 language, this family of compiler is reported hereunder.
The philosophy behind the diversity of compiler environments is
| Builder | g95 | Gfortran | ifort | Open64 | PGI | PathScale | SunStudio | XLF | MPI |
|---|---|---|---|---|---|---|---|---|---|
| testf | 4.4 | 11.1 | openMPI 1.3, 1.4 | ||||||
| chum | 0.9 | 4.2, 4.3 | 9.1, 10.1 | 7.3 | 3.2 | 12 | openMPI 1.2, 1.3 | ||
| green-bb | 0.9 | 4.2 | 10.1 | openMPI 1.3 | |||||
| bigmac | 4.3, 4.4 | openMPI 1.3, 1.4 | |||||||
| chpit | 4.4 | 11.1 | openMPI 1.3 | ||||||
| buda | 4.3, 4.4 | 11.1 | openMPI 1.3 | ||||||
| inca | 4.4 | mpich2 1.2.1 | |||||||
| shiva | 4.4, 4.5 | openMPI 1.4 | |||||||
| fock | 9.1 | mpich2 1.0.8 | |||||||
| ibm6 | 12.1 | POE | |||||||
| max | 0.9 | openMPI 1.3 | |||||||
| coba2 | 4.4 | 11.1 | openMPI 1.4 | ||||||
| littlebuda | 4.5 | mpich2 1.3.1 | |||||||
| woopy | x86_64_mingw32 | mpich2 1.3.1 | |||||||
| ktulu | 4.4 | openMPI 1.4 | |||||||
| toum | 4.4, 4.6 | openMPI 1.4 |
In order to run efficiently on this automatic build facility, candidate applications are expected to follow several design rules
During the build cycles, relevant status information is saved by the slaves and forwarded to the build master. The latter dynamically feeds a webpage.
The results are sorted through build slaves, revision numbers and contributor names. Color codes allows to pinpoint offending build steps and to locate the corresponding code revision and slave. Links from the status grid provide statistics and further information for debugging

The test farm facility and its management software are accessible to contributors to all ETSF funded applications. Interested parties are invited to use this form to request details and assistance. A support is provided to adapt the system to specific requirements.
Login accounts for users who wish to interactively use the development tools can be arranged on most of the platforms.