In this page, I summarize the codes to which I participated.

Ab-initio Toolkit

Run ab initio calculations without worrying about the cumbersome installation. The Ab-initio Toolkit package provides all the necessary tools to run easily efficient ab initio calculations. You worry about the physics, we worry about bringing you an optimized container which can run on Linux, Mac or Windows and from your desktop to powerful clusters passing by cloud platforms. The Linux shell is too old fashion for you? Don't worry, the package provides a modern Jupyter notebook. You just need to know a bit of Python.
Using Singularity we packed together Siesta, PySCF-NAO and ASE to create a friendly and powerful interface to the cumbersome ab initio calculations.


The mbpt lcao (Many Body Perturbation Theory with Linear Combinations of Atomic Orbital) is a code originally developed by Professor Dietrich Foerster (, Dr. Peter Koval ( and Olivier Coulaud ( at the university of Bordeaux.
And then at the Centro de Fisica de Materiales and Donostia International Physics Center in San-Sebastian with Mathias Ljungberg (, Federico Marchesin (, Daniel Sánchez-Portal ( and myself.

Without entering into the details (you can look to the project website and the corresponding papers on the program and the theory behind), this program was developed in order to provide an efficient method to calculate the optical and electronic properties of molecules under external excitation (electric field) using atomistic and ab-initio (Quantum Mechanics) theory. In most of the parts, the program need the data provided by the ground state code Siesta.
My participation to this program during my master and my PhD was relatively important, but my effort focused only on the Time Dependent Density Functional Theory (TDDFT) part of the code. The other theories were implemented by the other contributors
When I arrived in the group, the code was already functional, and we could produce results using the TDDFT part. Moreover, I implemented several extensions and improvements to the code that I list below.

  • My first work was to implement an extension of the code in order to calculate the spatial distribution of the density change, potential and electric field enhancement.
  • I implemented as well, into the TDDFT part, the Electron Energy Loss Spectroscopy (EELS) theory, that use a moving point charge instead of a constant external electric field as perturbation.
  • The main part of my PhD was concentrated into the implementation of a new method to perform the iterative part of the code that drastically reduced the memory consumption of the program. Thanks to this improvement, we were able to perform very large calculations (up to 5083 silver cluster) with modest computer power (32 threads and 500 GB).
  • I implemented the hdf5 support to the code.
  • I implemented as well GPU parallelization of the code.
One can access to some details of the code on assembla.
As a proof of the capacity of the code, here are some running times and memory consumption for a series of silver clusters with icosahedral geometies from 13 to 2057 atoms (we added as well a layer of ghost atoms to improve accuracy of the results, so up to 2869 atoms counting ghosts). This data have been obtained using only 12 CPUs at the atlas supercomputer of Donostia International Physics Center. The calculations have been done for 61 frequencies.

The imaginary part of the polarizability of the different clusters has been represented on the following figure, as well than the imaginary part of the density change distribution for the Ag1415 cluster (you can play around with the figures). For more details about the applications of the program, visit the publications page. You can download the input files that I used for this calculations with this link.


Since the beginning of 2017, my supervisor Peter Koval and myself are working on a fork of the pyscf code that include a python version of the mbpt_lcao program. The fortran version of mbpt_lcao has become very complex after years of development, and some routines could be much easier to write in python. Therefore, we hope to make the code much easier to work, allowing new contributors to participate to the code developement, particularly since this python version is open source.
To access to the nao code, you need to use the development branch of the repository. The program is fully working but still in heavy development.


The ScaLapack package lack of a good wrapper for python. Therefore, in order to be able to use ScaLapack for the pyscf-nao program we decided to write such wrapper and we started the PyScalapack package.


The Atomic Simulation Environment (ASE) is a set of tools and Python modules for setting up, manipulating, running, visualizing and analyzing atomistic simulations. It can perform numerous operations on molecules and periodic systems and can be used to set up environment in order to run different ab-initio code as GPAW, Siesta, VASP, and many others. I personally participated in the new version of the Siesta calculators mainly written by Mads Engelund, one of my colleague at the Centro de Fisica de Materiales. I added few routines to the code written by Mads and did some corrections. The main routines that I wrote are functions to read the Siesta output files, a mbpt_lcao calculator integrated into the Siesta one and a routine to perform non-resonant Raman calculations.

GPU profiler

A custom GPU profiler using the same philosophy than the memory_profiler program. Written in python and exploiting the nvidia-smi command. It can be use only with Nvidia GPUs.


ASE_MBPT_LCAO is a fork of ASE containing routines and utilities to plot and analyse data from mbpt_lcao.