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.

Get information about available codes

Download ETSF software packages

Try the online training resources

Submission form for software distribution by ETSF

ETSF Software Suite

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:

  • ground-state electronic density and total energy from density functional theory (DFT);
  • quasi-particle energy within the GW approximation and its extensions;
  • linear and non-linear response functions.

Through these physical quantities, a large variety of physical properties can be addressed:

  • structural and vibrational properties;
  • electronic properties;
  • optical and dielectric properties;
  • magnetic properties.

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:

  • Calculate total energy, charge density and electronic structure of a huge range of systems (molecules and clusters, wires and tubes, surfaces and periodic solids);
  • Optimize geometries according to the DFT forces and stresses, perform molecular dynamics simulations using these forces, or generate dynamical matrices, Born effective charges, and dielectric tensors;
  • Excited states can be computed within TDDFT or GW.


Demon2k (deMon = density of Montréal) is a software package for density functional theory (DFT)
calculations. It uses the linear combination of Gaussian-type orbital
(LCGTO) approach for the self-consistent solution of the Kohn-Sham (KS)
DFT equations. The calculation of the four-center electron repulsion
integrals is avoided by introducing an auxiliary function basis for the
variational fitting of the Coulomb potential.  The code is available free for academic use.

Main purposes:

  • General purpose DFT code for ground states with MD, relaxation, QM/MM etc...
  • Adaptive numerical integration for exchange-correlation functionals
  • Auxiliary density functional theory (ADFT) and TD-ADFT
  • Vibrational Spectroscopy


dp logo

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:

  • Calculate EELS (Electron Energy-Loss Spectroscopy)
  • IXSS (Inelastic X-ray Scattering Spectroscopy) at large transferred momentum Q
  • Optical properties



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

  • optical absorption, reflectivity, refraction index
  • EELS (Electron Energy-Loss Spectroscopy)
  • IXSS (Inelastic X-ray Scattering Spectroscopy)

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.

  • linear and nonlinear optical properties
  • Raman, IR and other vibrational spectroscopies
  • optical and magnetic dichroism
  • non-adiabatic electron-ion dynamics
  • QM/MM schemes for biophysical processes
  • quantum dots in 2D: magentic field effects
  • transport in 1D


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:

  • quasiparticle energies within the GW approximation
  • electron loss and optical absorption spectra of solids, and dynamical polarizability of molecules at different level of theory
    • Random Phase Approximation
    • Time Dependent Local Density Approximation
    • Bethe-Salpeter equation


exciting logo

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:

  • Optics
  • Energy loss spectroscopy
  • X-rays spectroscopy

elk logoELK


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:

  • Optics
  • Energy loss spectroscopy
  • Photo-emission spectroscopy
  • Vibrational spectroscopy
  • X-rays spectroscopy

ape logoAtomic Pseudopotential Engine

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:

  • Optics
  • Energy loss spectroscopy
  • Quantum transport
  • Time-resolved pectroscopy
  • Photo-emission spectroscopy
  • Vibrational spectroscopy
  • X-rays spectroscopy

Installation packages



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


Octopus is a 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. The package files below depend on Sparskit 2.18. Optimized for i686 and 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 packages on this page. 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.

  • (29/10/2010) release 4 iso with updated Abinit based on customized desktop Ubuntu 10.
  • (11/01/2010) release 3 iso uploaded with extra documentation and patches
  • (10/04/2009) included V-sim application reported to be broken with some graphic cards on release 2.
  • (27/01/2009) release 2 with Abinit updated to 5.6 due to license expiration.

View a ten-minute screencast to see how it works.

Installation procedure

  • 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.

Additional ETSF-relevant software

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.

Table of Contents 


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. Ask Hjorth Larsen (asklarsen [at] gmail [dot] com).


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:

  • Density functional theory (LDA, GGAs) for isolated molecules and periodic systems (solids, surfaces, etc.)
  • Preconstructed hierarchical basis sets across the periodic table (elements 1-102) - from fast qualitative up to meV-converged accuracy
  • Beyond LDA/GGA (currently non-periodic, for single-point geometries): Hartree-Fock, hybrid functionals (B3LYP, PBE0/PBEh, HSE), MP2, RPA, GW, with more under development
  • Structure optimization, ab initio molecular dynamics, infrastructure for vibrations and phonons, etc.
  • Seamlessly parallel, currently from one up to tens of thousands of CPUs

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. Ask Hjorth Larsen (asklarsen [at] gmail [dot] com).

Libraries and Tools

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.

The ETSF I/O library

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.

  • etsf_io_low_level (libetsf_io_low_level.a), this library is made of just one module. It contains a wrapper around NetCDF calls to be able to do in one call tasks which require several NetCDF calls, such as getting the id of a variable, checking its shape and dimensions, or defining and reading it. This module is not specific to the ETSF file format, and can be used as a stand-alone library to easily handle NetCDF files.
  • etsf_io (libetsf_io.a), is also made of a unique module, called etsf_io, containing routines specific to the ETSF file format. This module is the core of ETSF_IO. All variables from the specification have been gathered into structured groups. For each group, one can create a file which contains these variables, using methods with a name like etsf_io_<group_name>_def(). This will allocate the disk space required to store all the variables of the group. Then, to write data, methods called etsf_io_<group_name>_put() are available. For reading actions, the routines are suffixed with get instead of put. To access several groups at one time a high level routine has been created and is called etsf_io_data_<action>.
  • etsf_io_file & etsf_io_tools (libetsf_io_utils.a), contains two modules. etsf_io_file, which is dedicated to high-level actions on ETSF files (merge, check...) and etsf_io_tools, which implements some non-mandatory but convenient routines, which handle data from ETSF files (e.g. to get element names...).

The LibXC Exchange-Correlation Library

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)

The Libpspio library

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.

The pseudopotential converter pspconvert

IMPORTANT: the script you can download here is available only for reference. A library is currently being written to replace it. 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 crystal and molecule visualizer V_Sim

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:

  • v1.0.3 2010-04-08: update release with inclusion of the dielectric specifications introduced in the 3.3 version of the file format.
    [Download, tar.gz file, 443.5 Kb]
  • v1.0.2 2008-09-11: update release with small improvements in the building tools (correct support for open64 compilers).
    [Download, tar.gz file, 346.6 Kb]
  • v1.0.1 2008-04-04: update release with small improvements in the building tools (correct support for GFortran 4.1).
    [Download, tar.gz file, 343.1 Kb]
  • v1.0.0 2007-08-20: the initial stable release, including a full Fortran90 access to file conforming specification 2.2.
    [Download, tar.gz file, 344.4 Kb]
  • v0.9 2007-05-11: development version, for developers only.
    [Download, tar.gz file, 327.1 Kb]

Standardization Project

ETSF File Format


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.

ETSF specifications for Input/Output of wavefunctions and related data


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 :

  • Section 1 presents general considerations concerning the present file format specifications.
  • Section 2 presents general specifications concerning NQ NetCDF file formats.
  • Section 3 deals with files containing crystallographic data, and present a rather detailed NetCDF specification, ready for exchange of data among the NQ nodes. It also briefly presents other existing standardization of files containing crystalline structure and atomic geometries.
  • Section 4 deals with files containing density/potential, with the same level of detail.
  • Section 5 deals with files containing wavefunctions, with the same level of detail.
  • Section 6 deals with pseudopotentials / PAW (projector augmented waves) set up files. It presents the existing specifications, and summarizes the debates and conclusions reached during a mini-workshop in Louvain-la-Neuve.
  • Section 7 is an overview of the other contents relevant for NQ, and the status of the file format specification.

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.

Deprecated versions (only for reference)

ETSF Coding Standards


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.

Attached files

2009 ETSF Software Survey Results

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.

Download the full report of the 2009 ETSF Software Survey

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.