To make the most out of YAMBO, try to follow these guidelines:
 Read the theory, lectures, and code documentation
Before starting to use the code, you should study the fundamental physics and methodology behind YAMBO. On the Yambo Educational Wiki you will find pages about the theory, lectures by the Yambo team, and other resources.
On YouTube you can find lessons and talks given by the YAMBO team, as well as playlists collecting the lectures given at the various schools.
 Learn how to use the code correctly and efficiently
Get familiar with the multitude of configure options and external libraries in order to get the most out of the code. Learn how to use the code efficiently and effectively with our hands-on tutorials.
During the tutorials you may find useful to keep track of the link between the implemented equations and input variables: the cheatsheets are an excellent tool to do so.
 Run the code for your own system of interest
If you are having problems, check out the Forum for discussions about all aspects of the code.
 Publish your results, cite us, and start again!
Frequently Asked Questions
 Errors during execution
 External codes
- What’s with the name?
Don’t worry, it’s just a silly name. It doesn’t stand for anything like Yet Another Many-Body cOde, for instance. Unless you really want it to.
- How do I cite YAMBO?
Just click here and copy the citation format you need. We would appreciate it if you cited YAMBO in any publications you make using the code.
- Can I use YAMBO on MacOS?
Yes. Check the wiki page about installation or try with this procedure using
- What is the meaning of each variable in the input file for GW calculations?
Following the tutorials will provide you with the answers you are looking for. An explanation of each variable can be found at variables page in the wiki. The impatient can also find a short guide in this post of Dr. Attaccalite. The meaning of the variables linked to the implemented theory can be found in the cheatsheet.
- What is the meaning of each variable in the input file for BSE calculations?
As for GW calculations, you can check the variables wiki page, the cheatsheet or this post of Dr. Attaccalite.
- Which values of the parameters are suitable for a calculation with Yambo?
There is no general answer to this question. The parameters will strongly depend on your system and on the degrees of accuracy you want to reach. Our advice is to perform careful convergence tests before trusting your results. Strategies for the convergence tests are explained in the tutorials. Some useful advice can be also found in this post of Dr. Attaccalite.
- Can I calculate GW correction on an arbitrary point of the Brillouin zone with YAMBO?
Yes, as explained in details in this post by Dr. Attaccalite.
- Can YAMBO deal with self-consistent GW?
Partially, you can easily apply the so-called eigenvalue only self-consistent GW. In this post of Dr. Attaccalite you can find a short guide on how to do it.
- Can I use YAMBO on top of ground state calculated with hybrid functionals?
At the moment it is possible to perform GW and BSE calculation on top of B3LYP, PBE0, GAU-PBE and plain Hartree-Fock ground state. In order to have meaningful results, you must treat the divergences of the exchange part in QE and Yambo on the same footing (vcut_spherical or vcut_ws in exxdiv_treatment for QE and CUTGeo=”sphere or ws” respectively in YAMBO). Note that for gau-pbe exxdiv_treatment should be set to “none”. Moreover, it is strongly recommended to use the covariant algorithm for the calculations of the dipoles (DipApproach= “covariant”).
- The convergence of the dielectric function with respect to k-point sampling is very slow.
In Yambo there is implemented a double-grid technique that speeds up convergence versus k-points with a computational cost comparable to the standard calculations. In order to use it have a look at this post by Dr. Attaccalite.
- I’m doing calculations on low dimensional systems and I want to avoid replica interactions and speed up convergence with respect to the amount of vacuum in the supercell.
To speed up the calculations you can use truncated Coulomb potentials (see e.g. Phys. Rev. B 73, 205119 (2006). If you have n orthorhombic cell it is recommended to use a Wigner-Seitz shaped truncated potential (e.g. CUTGeo=”ws z” for a slab lying in the xy direction). Other shapes are available as a sphere for 0D systems, cylinder for 1D and a box-shaped that is valid for any dimensionality. In order to set correctly the parameters of your box, you may have a look to this thread.
- When calculating absorption spectra using the truncated coulomb cutoff, I notice very small number in the imaginary macroscopic dielectric function, and the static real part is one, is that a problem?
Actually it is not. You can read this thread to understand why it happens.
- Is it possible to interpolate GW band structures using Wannier-90?
Yes, you can have a look to example 23 of this tutorial and next to this thread for some relevant information in the ypp settings.
 Errors during execution
- My job crashed with a segmentation fault, what could be the reason?
It is hard to say, as there are many possible reasons. Common reasons are related to the fact your jobs went out-of-memory, or mathematical libraries were compiled with a different compiler. In the first case, it could be useful to recompile YAMBO using the flag –enable-memory-profile in the configure step. This will enable the monitor of the memory used by YAMBO in runtime by expecting the log files and gives you an idea of how much memory per core you need to execute your job. In the second case, it could be useful to recompile your code by using the flag –enable-int-linalg. In this way, YAMBO is forced to compile and use internal linear algebra libraries.
- My job crashed with a NETCDF error, what could be the reason?
Again, such an error can be driven by different reasons, you can have a look to this thread for possible workarounds and to have useful information on the source of the NETCDF error.
- I often experience memory issue in calculating GW corrections.
First, be sure your input is set to calculate only the quasiparticle corrections for the band you are really interested in, usually, you do not need to calculate it for all the bands: this is governed by the QPkrange variable. Next set properly the parallelization variable as documented here. Parallelizing over bands “b” allows distributing the memory load. Finally, if this does not solve your memory problem you can split the QP corrections in different runs, name the generated databases with different file names or save them in different directories and merge the obtained QP databases at the end using the ypp utility. You can have a look at this post for an how to.
- How can I use the yambopy modules as a library?
from yambopy import *(yambo utilities) and/or
from qepy import *(quantum espresso utilities) as you would do for any other python module. Make sure yambopy is installed on your system.
- I am a beginner in python: where can I find examples on how to use yambopy in my scripts?
Look in the tutorials folder inside the yambopy repository. Every python script that you find in that folder is an example of use and not part of the source code. Just take those scripts and start modifying them step by step to suite your needs.
- Executing yambopy or scripts using yambopy modules results in error messages.
First of all check that you have the latest version: do
git pullto download the latest changes of the yambopy code and rerun the setup. If the error persists, you may report it on the yambo forum.
 External codes
- Can YAMBO be interfaced with my favourite DFT code?
If your favourite DFT code works with a planewave/pseudopotential basis and 3D periodicity, then yes. If you would like to help to do this, get in touch.