Asymmetric Fermi window

That is a copy of issue on github https://github.com/abinit/abinit/issues/58

Hello,

I’m currently studying electron-phonon coupling in highly nonequilibrium regime, when T_e>>T_a. I calculate electron-energy-dependent Eliashberg function in a quite broad window an order of several electron-volts. I found out that the number of electron energy steps for Eliashberg function calculation is hardcoded and is 100. For small windows that value is enough; however, for larger windows it leads to rather low resolution in electron energies. I tried to increase the number of steps. It yields huge increase in calculation time.

I’ve thought that another approach could be the possibility to set an asymmetric energy window by setting two values [emin, emax] counted from Fermi level. In that case, instead of infinitely long calculation at fine energy grid one could set up several small calculations for different small windows in parallel.

When I tried to (rather naively) change the variable eph_fsewin to array with two values in 44_abitypes_defs/m_dtset.f90 file, I encountered such an error in 61_occeig/m_fstab.f90 during compilation:

…/…/…/src/61_occeig/m_fstab.F90:349:29:

349 | ABI_CHECK((dtset%eph_fsewin(2)-dtset%eph_fsewin(1)) >= 0, “dtset%eph_fsewin negative”)
| 1
Error: Expected a right parenthesis in expression at (1)
…/…/…/src/61_occeig/m_fstab.F90:454:30:

454 | deltaene = (dtset%eph_fsewin(2) - dtset%eph_fsewin(1)) / dble(nene-1)
| 1
Error: Expected a right parenthesis in expression at (1)
…/…/…/src/61_occeig/m_fstab.F90:348:18:

348 | ABI_CHECK(maxval(dtset%eph_fsewin) > tol12, “dtset%eph_fsewin < tol12”)
| 1
Error: ‘array’ argument of ‘maxval’ intrinsic at (1) must be an array

From these errors it seems that it is declared somewhere that dtset%eph_fsewin assumed to be scalar value. Can you recommend how to overcome this assumption or maybe suggest more elegant way to solve the problem?

One more note: if I just increase the number of energy steps, it causes some kind of memory leakage. For example, I set nene = 480 in 61_occeig/m_fstab.f90, and calculation was crashing with out-of-memory error independently on how much memory I used (I was increasing it up until 6 Tb per simulation).