quantum-espresso/XSpectra/Doc/INPUT_MOLECULARNEXAFS

157 lines
6.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2013-2016 Guido Fratesi
MOLECULARNEXAFS
This code combines the output of different codes (pw.x, projwfc.x,
and mainly xspectra.x) to evaluate the NEXAFS spectrum of a molecule
containing inequivalent atoms belonging to the same species.
The theoretical framework adopted is explained in the following
publication, which should be cited in papers using this tool
(additionally to relevant papers for the NEXAFS calculation):
* Azimuthal Dichroism in Near-Edge X-ray Absorption Fine Structure
Spectra of Planar Molecules
Guido Fratesi, Valeria Lanzilotto, Luca Floreano, and Gian Paolo Brivio
J. Phys. Chem. C 2013, 117, 66326638
http://dx.doi.org/10.1021/jp312569q
Further examples are also described in:
Phys. Chem. Chem. Phys., 2014, 16, 14834
http://dx.doi.org/10.1039/c4cp01625d
The spectrum for each inequivalent atom of the same species sums up
into a total spectrum, where the contributions from each atom (as
evaluated by xspectra.x) have to be properly aligned before the
summation. For example, a molecule like pyridine contains C atoms in
three different sites, C1, C2, and C3. This example is adopted below.
For each inequivalent atom in the molecule, the code requires:
1) A full-core-hole (FCH) calculation of the total energy by pw.x
(by a FCH pseudopotential at C_i). The code will return the
core-level shifts (CLS) as a by-product.
2) Half-core-hole (HCH) calculations of the NEXAFS spectrum by
xspectra.x for the three directions X-Y-Z. Those will be read as
prefix(iat)//suffix(idir)
3) Since xspectra.x energy scales may not refer to the vacuum level
(more commonly the Fermi level or the middle of the HOMO-LUMO gap
may have been used), one also need to input the reference energy
level of the HCH xspectra.x calculation, and the corresponding
vacuum level.
The vacuum level might be estimated by the Makov-Payne correction
directly in the HCH pw.x SCF calculation if the unit cell is
cubic, or by running additional calculations accessing the vacuum
level, then by evaluating the vacuum-to-HOMO energy difference in
this case, summed to the HOMO of the original calculation.
For adsorbed molecules, one should refer to the Fermi level both
for NEXAFS and the XPS, as is generally done in the experiments.
So we should set both evacuum=0 and efermi=0, and the new zero
will be the average core level binding energy with respect to the
Fermi level.
4) Eventually, energies from xspectra.x output files will be shifted
(E->E+eshift) so that the new zero of energy is the weighted
average of core-level binding energies:
eshift(iat)= -(evacuum(iat)-efermi(iat)) + dcorebe(iat)
where the first term sets the vacuum level at zero and the second
one adds to the transition energy the core level shift.
Recall that by the pseudopotential approach binding energies are
defined only up to a constant.
5) Optionally, the PDOS of p symmetry can be taken as an approximation
to the spectrum for a K edge: the comparison is useful for checking
the results.
=======================================================================
NAMELIST / CONTROL /
-----------------------------------------------------------------------
syslabel character(len=80) DEFAULT='MOLECULE'
System label for output files
doxps logical DEFAULT=.TRUE.
Plot XPS spectrum
donexafs logical DEFAULT=.TRUE.
Compute and plot NEXAFS spectrum
nat integer DEFAULT=0
The number of inequivalent atoms in the molecule
atweight(1:nat) real(DP) DEFAULT=1, 1, . . .
The multiplicities of the inequivalent atoms in the molecule
-----------------------------------------------------------------------
NAMELIST / XPS /
-----------------------------------------------------------------------
erangexps(1:2) real(DP) DEFAULT=(-5:5)
Energy range for plotting
nptxps integer DEFAULT=501
Number of points for plotting
delorentz, degauss, lorentzratio real(DP) DEFAULT=0.2, 0.2, 0.5
Pseudovoigt parameters.
The spectrum is plotted as:
lorentzratio * lorentzian + (1-lorentzratio)*gaussian
delorentz=HWHM of the Lorentzian
degauss=STDDEV of the Gaussian
etotfch(1:nat) real(DP) DEFAULT=0
Total energy (Ry) with a FCH in that given atom
-----------------------------------------------------------------------
NAMELIST / NEXAFS /
-----------------------------------------------------------------------
dosingleatoms logical DEFAULT=.TRUE.
Set to true to also output the results of each atom in a separate file
dopdosp logical DEFAULT=.FALSE.
Set to true to also read and sum the PDOS (p) of each atom, with
analogous procedure as for the NEXAFS spectrum.
erangenexafs(1:2) real(DP) DEFAULT=(-10:20)
Energy range for plotting
nptnexafs integer DEFAULT=3001
Number of points for plotting
efermi(1:nat) real(DP) DEFAULT=0
Reference energy level of the HCH xspectra.x calculation. Should
be left to zero in case of molecules adsorbed on metals (assuming
the Fermi level was taken as a reference for xspectra.x).
evacuum(1:nat) real(DP) DEFAULT=0
Vacuum level of the HCH calculation. Should be left to zero in
case of molecules adsorbed on metals.
prefix(1:nat) character(len=80) DEFAULT='xanes.dat.001', 'xanes.dat.002', . . .
The files containing the spectrum computed by xspectra.x should
follow this naming convention:
prefix(iat)//suffix(nu), where
Iat=1,nat identifies the inequivalent atom
nu=1,2,3 the three directions x,y,z
suffix(1:3) character(len=80) DEFAULT='.xspectraX.dat', '.xspectraY.dat', '.xspectraZ.dat'
Direction-dependent suffix of xspectra.x spectrum file
atlabel(0:nat) character(len=80) DEFAULT='SUM', '001', '002', . . .
Atomic labels (the 0-th element is for the summed spectrum).
pdospfile(1:nat) character(len=80) DEFAULT='pdosp.dat.001', 'pdosp.dat.002', . . .
The files containing the p-pdos from projwfc.x.
=======================================================================