[Q-e-developers] Recent changes to XSpectra
matteo.calandra at impmc.jussieu.fr
Wed Oct 14 22:11:22 CEST 2015
>The recent update to Spectra permitting the calculation of L edges has
reintroduced an old character read bug, at >least when using the
gfortran compiler. The reintroduction has occurred because mygetK.f90
functionality has >been replaced by the rough equivalent in
gaunt_mod.f90. The latter is much less cautious about string
>comparison, and therefore one gets the good old "Could not find the
element X in the table of edge energies!” >error. This is easily fixed
using the legacy solution in mygetK, as diff’d below.
thank you for your email and fixing. It is true that omitting
trim(adjustl()) on many compilers becomes too
>This has been tested on a 4-core darwin i5 (gfortran 5.2), and a
35000-odd core Cray XC40 with PrgEnv-gnu. I >can’t check whether this
is a problem for ifort because XSpectra doesn’t run properly when
compiled with ifort on >our Cray (a separate issue!).
Unfortunately I am unable to check your compiler problem on Cray + ifort
as I do not have access to this machine
>As an aside, if it was up to me I’d completely cut the edge-energy
code. Speaking as someone who does both >experiments and theory in this
area, the database transitions are essentially useless. Users really
should be >computing transition energies directly to take into account
relevant chemical shifts between inequivalent absorber >sites.
You are surely right for what concerns the K-edge where the edge energy
is just an overall shift in the spectrum.
In this case the edge energy is purely "esthetical". You are also right
in saying that the chemical shift is
urgently needed. Indeed a method to calculate the chemical shift between
inequivalent absorbers has been developed this summer and is under
I will include it as soon as I have more time. Remember however that the
chemical shift can be also
calculated as a total energy difference. Thus in the meanwhile you can
use this alternative technique.
For the L edges, the situation is a bit more complicate, as for
delocalized edges the distance
between the L2 and the L3 is important because the two edges can overlap
in energy one with the
other. So the separation between the two is needed. This can either be
calcolated from an all electron
atomic code or taken from experiments. The two choices are strictily
equivalent as the energy of
2p1/2 and 2p3/2 are very precise in an all electron atomic calculations.
Thank you again for suggestions and improvements, and I hope you will
to use and develop the XSpectra code.
* * * *
Matteo Calandra, Directeur de Recherche (DR2)
Institut de Minéralogie et de Physique des Milieux Condensés de Paris
Université Pierre et Marie Curie, tour 23, 3eme etage, case 115
4 Place Jussieu, 75252 Paris Cedex 05 France
Tel: +33-1-44 27 52 16 Fax: +33-1-44 27 37 85
More information about the developers