[Q-e-developers] Recent changes to XSpectra

Matteo Calandra matteo.calandra at impmc.jussieu.fr
Wed Oct 14 22:11:22 CEST 2015


 >Dear Developers,
 >
 >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.
 >

Dear Kane,

   thank you for your email and fixing. It is true that omitting 
trim(adjustl()) on many compilers becomes too
permissive.

 >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 
testing now.
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 
continue
to use and develop the XSpectra code.

Matteo
 >Best regards,

 >Kane


-- 
* * * *
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
http://www.impmc.jussieu.fr/~calandra




More information about the developers mailing list