1. What is it?
  2. Installation
  3. Usage
  4. Working Flow
  5. Issues and Comments
  6. License

What is it?

EliashMEM is a program to extract the Eliashberg function directly from the photoemission data.  Basically, it takes input from the high resolution photoemission measurement, and unfolds the Eliashberg function for the electron-phonon (or other bosonic modes) coupling by fitting to the quasi-particle dispersion.  The Maximum Entropy Method (MEM) is employed to overcome the numerical instability for a direct inversion.

This work is a collaborative effort involving researchers from a number of institutions: Junren Shi (Oak Ridge National Lab),  S.-J. Tang (University of Tennessee), Biao Wu (University of Texas at Austin and ORNL), P.T. Sprunger (Louisiana State University), W. L. Yang,  V. Brouet (Stanford University and Advanced Light Source  of LNBL),  X. J. Zhou (Stanford University),  Z. Hussain (Advanced Light Source), Z.-X. Shen (Stanford University), Zhenyu Zhang  and E. W. Plummer (University of Tennessee and ORNL).

The details of the technique can be found in Phys. Rev. Lett. 92, 186401 (2004).  These slides provide an overview to the technique.

The related paper:

"Identification of Multiple Fine Structures in Electron Self-Energy of La2-xSrxCuO4,''  X. J. Zhou, Junren Shi, T. Yoshida, T. Cuk, W.L. Yang, V. Brouet, J. Nakamura, N. Mannella, S. Komiya, Y. Ando, F. Zhou, W. X. Ti, J. W. Xiong, Z. X. Zhao, T. Sasagawa, T. Kakeshita, H. Eisaki, S. Uchida, A. Fujimori, Zhenyu Zhang, E. W. Plummer, R. B. Laughlin, Z. Hussain, and Z.-X. Shen, submitted to Phys. Rev. Lett.



The source can be downloaded here.

To compile, it needs a Fortran 77 compiler as well as two numerical libraries: Lapack and Blas.

To install, first unpack the package:

tar xvzf MEM.tgz

then edit Makefile to accommodate the settings of your system, and type

to build.  The executable is called MEM3.

examples directory includes a sample data set (dispersion.txt), which happens to be the data presented in the PRL paper,  and the corresponding configuration file (CONF3.INI).  To analysis the data, run the command in the examples


The program reads input from a couple of input files  and generate results to a number of output files. 


The program reads two input files.  First is the dispersion data file from the experimental measurement.  It is in simple text format with two columns: first column is the initial state energy in the unit of eV; the second column is the momentum in arbitrary unit.   Note that the program only utilizes the data with energy below the Fermi energy.

The second input file is CONF3.INI.  It contains various parameters controlling the behavior of the program (the essential parameters are denoted by red row numbers):


Row Field name Explanation
1 Data File Name The filename of the input dispersion data
2 Model File Name The program may be supplied with a constraint function.  The file is in simple text format  with first column being the photon energy (s) in meV and second column being the constraint function m(s).  The total number of rows should be NA.  If it is set to "NONE", the program uses the simple constraint function described in the paper.
3 Output Prefix The prefix for the output files.  For instance, setting the field to "Be1010", the output files will be "Be1010_SPT.dat", "Be1010_DAT.dat" ...
4 NDRAW The total number of rows of the input dispersion data file
5 NA The total number of  interpolation points for the output Eliashberg function.  If the constraint function is provided, it should be  the total number of rows of that file. 
6 Ecutoff The high energy tail of the dispersion data is usually too noisy.  This parameter supplies a cutoff energy (in eV) and only the data points below this energy are utilized in the MEM fitting.
7 KT Temperature in Kelvin
8 FITBPD Currently not used.  Always set it to zero.
9 A1 The bare particle dispersion is modeled as: `0(k)=A1(k-kF)+A2(k-kF)2.   This is the first parameter.
10 A2 Another parameter for the bare particle dispersion.
11 EF The position of the Fermi energy (in eV).
12 KF The position of the Fermi wave vector, in arbitrary unit.
13 ERRB0 Controlling how the error bars of the real part of self-energy data (mi) are determined:
  • ERRB0>0:  the error bars for the real part of self energy data (determined from the dispersion) are calculated by ERRB0+ERRB1*(E-EF);
  • ERRB0<0: the error bars are determined automatically from the data noise and each data point may have different error bar;
  • ERRB0=0: same as ERRB0<0 except the resulting error bars are averaged and all data points are assigned with the same averaged error bar.
14 ERRB1 Another parameter for the error bar determination
15 Method Selecting the MEM algorithm:
  1. historic method
  2. classic method (recommended)
  3. Bryan's method
  4. given multiplier a with no optimization

See this comprehensive review by M. Jarrell for the  details of the various algorithms.

16 Iternum The maximum iteration number for the MEM fitting.  1000 is usually sufficient.  In rare cases when the fitting is not converging, set it to a larger number.  (A non-converging MEM fitting will give rise a Eliashberg with lot of artifacts).
17 Alpha Depending on the setting of Method parameter:
  1. not referred
  2. not referred
  3. the maximum value of the multiplier a from which the iteration starts -- set it to a large number
  4. the value of the multiplier a
18 DAlpha Only referred when using the Bryan's method (Method=3):  step length for the iteration of a.
19 XCHI Referred only when using the historic method (Method=1): the target q2
20 OmegaD The parameter for the constraint function (See Eq. 6 of the paper): sD
21 OmegaM Another parameter for the constraint function: sm.  It also set the maximum photon frequency above which the Eliashberg function vanishes.
22 M0 Another parameter for the constraint function: m0
23 Beta The exponent for calculating the average <s]>
24 NBin This divides the s-axis to a NBin bins and the program calculates <s]> for each bin.
It is followed by NBin+1 numbers that specify start and end points of each bin.



The screen output:
  • ND:  the number of data points utilized in the MEM fitting
  • SIGMABAR:  the average error bar of the real part of self-energy
  • CHI^2:   the mean deviation of the final fitting: q2
  • ALPHA: final value of a.
  • LAMBDA: the mass enhancement factor calculated
  • DLAMBDA: error bar of the determined mass enhancement factor
  • OMEGALOG: the average phonon frequency that  appears in Eliashberg's Tc formula.
Output Files:

All output files start with [Output Prefix] that is supplied in CONF3.INI file:

  • [Output Prefix].LOG: includes various information for the fitting.
  • [Output Prefix]_SPT.dat: the Eliashberg function: column 1: s (meV); 2: Eliashberg function; 3: constraint function
  • [Output Prefix]_DAT.dat: Self energy data and fitting. column 1: initial state energy (meV); 2: real part of self energy data (meV); 3: error bars (meV); 4: fitting to the real part of self-energy (meV); 5: calculated imaginary part of self-energy (meV).
  • [Output_Prefix]_DSP.dat: Dispersion data and fitting: column 1: initial state energy data (eV); 2: momentum data; 3: fitting to the momentum data; 4: calculated imaginary part of self-energy (eV); 5: calculated photoemission peak width (FWHM).

Working Flow

Unfortunately, the program is not fully automated.  It still needs inputs of human being to get proper settings of parameters.  The most important parameters are A0 and A1, which determine the bare particle dispersion through `0(k)=A1(k-kF)+A2(k-kF)2.  Fortunately, it is not too difficult to get a reasonable  set of values for them by following the proper working procedure.  It is  hopeful the procedure will be automated in the future.

The working environment  should include a easy-to use plotting software, e.g.  gnuplot for Linux or Unix-like  systems, so that the fitting quality can be constantly monitored.


 Working flowchart

Issues and Comments

Please contact me (junrenshi@gmail.com) for questions, comments and suggestions.


This program is released in hopes that it will be useful for other researchers.  We can not be responsible for any consequence incurred by this program, neither will we claim credit for the results obtained from this program.

It is distributed under the terms of the GNU General Public License (GPL).