Question About Isotropic Constants Value in EPH Calculations

Hi,

I followed this tutorial to calculate the isotropic Eliashberg function using optdriver = 7 and eph_task = 1. After completing the tutorial, I encountered three questions:


1.In the tutorial, Ξ» is defined as:

λ = \int^\ \frac{α^2F(𝝎)}{𝝎}\ d𝝎\,

However, in Phys. Rev. B 6, 2577–2579 (1972), equation (5) defines Ξ» as:

λ = 2\int^\ \frac{α^2F(𝝎)}{𝝎}\ d𝝎\,

Why is there a factor of two difference between the two equations?


2.There are three input variables in EPH: ddb_ngqpt, eph_ngqpt_fine and ph_ngqpt.The output file _NOINTP_A2FW uses the eph_ngqpt_fine q-mesh, and _A2FW uses the ph_ngqpt q-mesh.
My question is, why does _NOINTP_A2FW not use the ddb_ngqptq-mesh, and why does _A2FW not use the eph_ngqpt_fine q-mesh?
What is the difference between eph_ngqpt_fine and ph_ngqpt?
Additionally, my _A2FW file often contains negative α^2F(𝝎) values. How can I resolve this issue?


3.When I use eph_task = 1, the log output provides two different values for Ξ» and four different πŽπ’π’π’ˆ.
When I analyze the _A2F.nc file using Abipy, it only gives me two values for Ξ» and πŽπ’π’π’ˆ. I understand that one set is from the coarse grid, and the other set is from the fine grid.
Why are there four different πŽπ’π’π’ˆ values in log file?


Below is from log file:

 a2fw_init, q-setup: , wall:  0.00 [s] , cpu:  0.00 [s] <<< TIME
 a2fw_init%tetra , wall:  0.00 [s] , cpu:  0.00 [s] <<< TIME
 Allocating tetra%ibz%indexes with memory: 0.1  [Mb] <<< MEM
 a2fw_init, a2f_eval: , wall:  0.01 [s] , cpu:  0.01 [s] <<< TIME
 isotropic new_lambda =     3.832022E-01
 new_omegalog  =     2.384671E-03 (Ha)     7.530185E+02 (Kelvin) 
 MacMillan Tc =     4.327783E-06 (Ha)     1.366604E+00 (Kelvin) 
 Superconductivity: isotropic evaluation of parameters from electron-phonon coupling (coarse grid).
 isotropic lambda =     3.832022E-01
 omegalog  =     5.686654E-06 (Ha)     1.795701E+00 (Kelvin) 
 MacMillan Tc =     1.032034E-08 (Ha)     3.258901E-03 (Kelvin) 
    positive moments of alpha2F:
 lambda <omega^2> =     2.392245E-06
 lambda <omega^3> =     6.267588E-09
 lambda <omega^4> =     1.679091E-11
 lambda <omega^5> =     4.588390E-14
 a2fw_init, q-setup: , wall:  0.01 [s] , cpu:  0.01 [s] <<< TIME
 a2fw_init%tetra , wall:  0.01 [s] , cpu:  0.01 [s] <<< TIME
 Allocating tetra%ibz%indexes with memory: 0.3  [Mb] <<< MEM
 a2fw_init, a2f_eval: , wall:  0.02 [s] , cpu:  0.02 [s] <<< TIME
 isotropic new_lambda =     6.198311E-01
 new_omegalog  =     1.808989E-03 (Ha)     5.712329E+02 (Kelvin) 
 MacMillan Tc =     3.679088E-05 (Ha)     1.161763E+01 (Kelvin) 
 Superconductivity: isotropic evaluation of parameters from electron-phonon coupling (interpolated).
 isotropic lambda =     6.198311E-01
 omegalog  =     3.272441E-06 (Ha)     1.033354E+00 (Kelvin) 
 MacMillan Tc =     6.655430E-08 (Ha)     2.101616E-02 (Kelvin) 
    positive moments of alpha2F:
 lambda <omega^2> =     3.122442E-06
 lambda <omega^3> =     7.912706E-09
 lambda <omega^4> =     2.053287E-11
 lambda <omega^5> =     5.398147E-14
 dataset: 1 , wall:  4.06 [s] , cpu:  3.53 [s] <<< TIME



Below is from Abipy:

============================== E-PH calculation ==============================
K-mesh for electrons:
mpdivs: [12 12 12] with shifts [[0. 0. 0.]] and kptopt: 1

a2f(w) on the [12 12 12] q-mesh (ddb_ngqpt|eph_ngqpt)
Isotropic lambda: 0.38, omega_log: 0.065 (eV), 752.400 (K)
Tc[mu=0.1]: 2.4504527860423733 (K)
Tc[mu=0.16]: 0.2652779934413205 (K)

a2f(w) Fourier interpolated on the [20 20 20] q-mesh (ph_ngqpt)
Isotropic lambda: 0.62, omega_log: 0.049 (eV), 571.772 (K)
Tc[mu=0.1]: 14.395607170946752 (K)
Tc[mu=0.16]: 6.939494768109583 (K)

calc.in (1.9 KB)
calc.abo (123.6 KB)
calc.log (183.2 KB)
odat_NOINTP_A2FW.txt (76.4 KB)
odat_A2FW.txt (76.4 KB)
Abipy.log (1.8 KB)

Hello,

pertinent questions

  1. is easy, there is a spin degeneracy factor in Allen, who presumes a non spin polarized system. The a2F function is defined per spin channel (both in Allen and abinit), so for nsppol 2 there are 2 separate functions, which can be summed. For nspinor 2 there is a single a2F, with 2x more bands. For the non spin polarized case you calculate a single a2F, but need to multiply by 2 in the end to get the total one. Note that there is an ongoing discussion with a few collaborating groups and codes, about the spin polarized case, which could be adapted from Allen’s definition to normalize with 1/N_{tot} (E_F) instead of 1/N_{spin}(E_F). That would enable the lambda and a2F to be summed more simply.

  2. The grids are indeed a bit complex - there are several different things which can be interpolated: all of this is in the tutorials, so please read all of the eph related ones in detail for a working procedure.

  • the perturbed potential is interpolated from the input DDB/DFPT grid (ddb_ngqpt) onto the ngkpt grid, where you have the WFK, and the matrix elements are calculated
  • if eph_ngqpt_fine is finer than ngkpt, then an additional Fourier Transform interpolation is done between the two, for the final integrations of the self energies and transport quantities. This additional FT is not recommended unless you really know what you are doing and need it. It can give oscillatory gkk matrix elements and unphysical negative contributions to a2F. This is your problem above. If your ngkpt grid is fine enough, it can be made to go away, but there is really no advantage except maybe lower memory cost wrt the full interpolation described in the tutorials.
  • ph_ngqpt is used for purely phononic quanties, so the DOS and in some cases the a2F (which has first been summed over the k points with eph_ngqpt_fine)
  1. The two different \lambda you understand, fine. For the \omega_{log} I had to go check. There was a bug in some conditions for the calculation (a factor of 2 in or out of the integral for \omega_{log}). I believe the _new values are correct. The other differences you understand as being related to the grid difference.

M.