Real part of g is larger than |g| and |g_sym| in DFPT calculation?

General discussion around the EPW software

Moderator: stiwari

Post Reply
jack
Posts: 17
Joined: Fri May 16, 2025 6:55 am
Affiliation: polaron

Real part of g is larger than |g| and |g_sym| in DFPT calculation?

Post by jack »

Dear developer,

I have observed that the real part of g is larger than |g|. The relevant input and output are listed below. After examining the elphon.f90 file, I noted that |g| is printed as ryd2mev * epc_unsym(ibnd, jbnd, nu) at line 1716, where epc_unsym(ibnd, jbnd, nu) equals to sqrt(gamma/(2*sqrt(omega)). Here, gamma is defined as the sum over mu and vu of REAL(CONJG(dyn(mu, nu)) * el_ph_sum(mu, vu) * dyn(vu, nu)) at line 1559.

Meanwhile, the real part of g, Real(g), is printed as ryd2mev * epc_real(ibnd, jbnd, nu), where epc_real(ibnd, jbnd, nu) is defined as REAL(gamma_cmplx) / (DSQRT(2.d0) * omega) at line 1577, where, gamma_cmplx equals to the sum over mu of CONJG(dyn(mu, nu)) * el_ph_sum_cmplx(mu, 1) at line 1564. In the elphon.f90 file, el_ph_sum(mu, vu) is defined as CONJG(el_ph_mat2(jbnd, ibnd, ik2, ipert)) * el_ph_mat2(jbnd, ibnd, ik2, jpert) at line 1541, and el_ph_sum_cmplx(mu, 1) is defined as el_ph_mat2(jbnd, ibnd, ik2, jpert) at line 1544. If I understand correctly, the gamma equals to Σ(conj(τ)×conj(<n,k|∂V/∂R|m,k'>)×(<n,k|∂V/∂R|m,k'>)×τ), and gamma_complx equals to Σ(conj(τ)×(<n,k|∂V/∂R|m,k'>)), here τ is polarization vector. It can be seen that |gamma| is not equal to |gamma_complx|^2. Thus, sqrt(|gamma|) is not equal to |gamma_complx|. Furthermore, the factor of |g| is sqrt(1/(2*sqrt(omega)) at line 1575 and 1576, while the factor of Real(g) is sqrt(1/(2*omega)) at line 1577.
The version of qe is 7.5.
The relevant code section is located approximately between lines 1534 and 1727 of elphon.f90.

If there is any error in my interpretation or in the code itself, I would appreciate your guidance.
*************************
&inputph
prefix = 'blac'
outdir = './'
ldisp = .true.
fildyn = 'blac.dyn.xml'
fildvscf = 'dvscf'
tr2_ph = 1.0d-19
q_in_band_form = .true.
qplot = .true.
!q_in_cryst_coord = .true.
electron_phonon = 'prt'
kx = 0.0
ky = 0.0
kz = 0.0
/
5
0.0 0.0 0.0 10
0.5 0.0 0.0 10
0.5 0.7002 0.0 10
0.0 0.7002 0.0 10
0.0 1.0 0.0 1
***********************
ibnd jbnd imode enk[eV] enk+q[eV] omega(q)[meV] |g_sym|[meV] |g|[meV] Re(g)[meV] Im(g)[meV]
------------------------------------------------------------------------------
1 1 1 -19.9698 -19.9698 -0.0378593392 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00
1 1 2 -19.9698 -19.9698 0.1277064162 0.0000000000E+00 0.0000000000E+00 -0.4965663961E-06 0.1797721380E-09
1 1 3 -19.9698 -19.9698 0.1752685446 0.1120048290E-01 0.1120048290E-01 0.3120651280E+01 -0.3736982390E-09
************************
Post Reply