# Full spectrum optical constant interface to the Materials Project

J. J. Kas  F. D. Vila  C. D. Pemmaraju  M. P. Prange  K. A. Persson  R. X.
Yang  J. J. Rehr<EMAIL_ADDRESS>Department of Physics, University of Washington,
Seattle, WA 98195, USA  Stanford Institute for Materials and Energies
Sciences, SLAC National Accelerator Laboratory, Menlo Park, CA 94025, USA
Physical and Computational Sciences Directorate, Pacific Northwest National
Laboratory: Richland, WA 99352  Materials Science Division, Lawrence Berkeley
National Laboratory, Berkeley, CA 94720, USA

###### Abstract

Optical constants characterize the interaction of materials with light and are
important properties in material design. Here we present a Python-based Corvus
workflow for simulations of full spectrum optical constants from the UV-VIS to
hard x-ray wavelengths based on the real-space Green’s function code FEFF10
and structural data from the Materials Project (MP). The Corvus workflow
manager and its associated tools provide an interface to FEFF10 and the MP
database. The workflow parallelizes the FEFF computations of optical constants
over all absorption edges for each material in the MP database specified by a
unique MP-ID. The workflow tools determine the distribution of computational
resources needed for that case. Similarly, the optical constants for selected
sets of materials can be computed in a single-shot. To illustrate the
approach, we present results for nearly all elemental solids in the periodic
table, as well as a sample compound, and compared with experimental results.
As in x-ray absorption spectra, these results are interpreted in terms of an
atomic-like background and fine-structure contributions.

###### keywords:

Optical constants , Materials Project , FEFF , Corvus

††journal: Computational Materials Science

##  1 Introduction

Optical constants characterize the frequency dependent interaction between
light and matter in the long-wavelength limit. Thus they are often important
characteristics in materials design. These properties include the complex
dielectric constant and index of refraction, as well as the energy-loss
function, photoabsorption coefficient, and optical reflectivity.[1, 2, 3, 4]
Many other physical properties can be derived from the optical constants,
including electron energy loss spectra (EELS), inelastic mean-free paths, the
atomic scattering amplitudes, and Hamaker constants for the van der Waals
interaction. For these purposes, tabulations of experimentally determined
optical constants are widely used.[1, 2, 3, 4] For practical reasons, however,
such tabulations are limited to a relatively small number of well
characterized materials over limited spectral ranges and limited environmental
conditions. Thus here we focus on broad spectrum theoretical treatments for
the systems defined in the Materials Project(MP) database.

Significant progress has been made in the fundamental theory of optical
properties since the pioneering works of Nozieres and Pines,[5] Adler,[6] and
Wiser.[7] In particular modern first-principles calculations based on time-
dependent density functional theory (TDDFT) and the Bethe-SalpeterEquation
(BSE) are now highly quantitative.[8, 9, 10, 11, 12, 13, 14, 15, 16, 17] Also
limited tables of theoretical optical constants of materials have been
compiled over the optical range.[18, 19] However, such calculations involve
many-body calculations of optical response, and become computationally
intractable for many materials over broad spectral ranges. In contrast, the
real-space Green’s function (RSGF) approach in FEFF10 includes the key many-
body effects, is highly automated and has proved to be quite accurate for
general materials in the x-ray regime. Moreover the code can be semi-
quantitative in the UV-VIS to soft-x-ray regime.[20] Thus the code provides an
efficient platform for calculations of dielectric properties over a broad
spectral range. Consequently, theoretical calculations based on FEFF10 provide
an attractive alternative to available theoretical and experimental
tabulations of optical constants for many purposes. Nevertheless, selected
experimental measurements are important to validate the theory.

Recently K- and L-shell XAS calculations based on the FEFF code have been
added for a very large number of materials in the Materials Project (MP)
database.[21, 22] These data have been exploited, e.g., in machine-learning
models for the interpretation of XAS data.[21, 23] Our aim here is to
complement these properties with a more complete set of optical constants for
all edges from the UV-VIS to hard-x-ray energies. Consequently, the results
presented here provide significant extension, both in the variety of optical-
constant spectra, spectral range, and material properties. Our approach is
based on the the development of the Corvus [opcons] workflow, where Corvus is
the workflow engine,[24] and opcons is the target property. In particular, the
approach imports the structural and property data from the MP, and then
parallelizes and automates the calculations permitting high-throughput
calculations of optical constants for materials throughout the MP database.
Our procedure for theoretical calculations of optical constants over all edges
essentially follows that described in detail by Prange et al.,[20] but has
been updated for the FEFF10 code. In addition, refinements for including
vibrational disorder via the correlated Debye model using MP data have been
added and the calculations for the UV-VIS range have been simplified. To
illustrate the approach calculations have been carried out for nearly all
elemental solids throughout the periodic table and explicit examples are given
for Cu, Ag, and Au, together with comparisons to experimental data. In
addition we show results for a sample compound Al2O3 to validate our
approximation in the UV-VIS range.

Figure 1: Top: Calculated imaginary part of the dielectric function
$\epsilon_{2}$ for Cu (blue) along with the atomic background $\chi$ (see
text) (red). Bottom: Approximate optical fine structure of the imaginary
(blue) part of $\epsilon$ for Cu vs $k=\sqrt{2E}$, along with the same fine-
structure defined with energies $E$ relative to the K- and L-edges. Note the
similarities between the fine structure found in the optical and that of the
K-edge. Note also that the fine structure becomes negligible for large $k$
above any edges or outside the optical range.

The Corvus [opcons] workflow described here is applicable to any material
available in the MP database as defined by a given MP identificatoin label
(MP-ID), thus making possible routine calculations of optical constants for
over $10^{5}$ structures. By default, the calculations are carried out with
lattice vibration effects included at room temperature, while electronic
temperature and thermal expansion effects are neglected. However, corrections
for thermal expansion, finite temperature, and pressures other than 1 atm can
be added using subsequent calculations that reuse some of the previously
computed data. The workflow is naturally parallelized and, for typical
settings, requires as little as minutes of wall-clock time per material on
massively parallel systems.

##  2 Optical constants with Corvus and FEFF10

In general, the optical constants are related to the complex dielectric
constant $\epsilon(\omega)=\epsilon_{1}(\omega)+i\epsilon_{2}(\omega)$ in the
long wave-length limit, where $\omega$ is the frequency of the electro-
magnetic field. Since their real and imaginary parts are related by Kramers-
Kronig (KK) transformations, they can all be calculated from the imaginary
part $\epsilon_{2}(\omega)$ (e.g. Fig. 1). In this work the, the Corvus
[opcons] workflow yields the complex dielectric function $\epsilon(\omega)$,
energy loss function $L(\omega)$, complex index of refraction ${\bf
n}(\omega)$, absorption coefficient $\mu(\omega)$, and reflectivity
$R(\omega)$ defined as follows, in terms of $\epsilon_{2}(\omega)$,

$\displaystyle\epsilon_{1}(\omega)=1+\frac{2}{\pi}{\cal
P}\int_{0}^{\infty}d\omega^{\prime}\
\frac{\omega^{\prime}\epsilon_{2}(\omega^{\prime})}{\omega^{2}-\omega^{\prime
2}}$ (1) $\displaystyle L(\omega)=-{\rm
Im}[\epsilon^{-1}(\omega)]=\frac{\epsilon_{2}(\omega)}{\epsilon_{1}(\omega)^{2}+\epsilon_{2}(\omega)^{2}}$
(2) $\displaystyle{\bf
n}(\omega)=n(\omega)+i\kappa(\omega)=\epsilon(\omega)^{1/2}$ (3)
$\displaystyle\mu(\omega)=2\frac{\omega}{c}\kappa(\omega)$ (4) $\displaystyle
R(\omega)=\frac{[n(\omega)-1]^{2}+\kappa(\omega)^{2}}{[n(\omega)+1]^{2}+\kappa(\omega)^{2}},$
(5)

where $\cal P$ denotes the principal part of the integral. Note that at high
energies dielectric response is weak, and $\epsilon_{2}(\omega)\approx
L(\omega)\approx 2\kappa(\omega)\approx\mu(\omega)(c/\omega)$. Sum-rules for
the dielectric properties provide a qualitative check on the reliability of
the results.[25] Related properties, such as the local atomic polarizability
$\alpha(\omega)=(\epsilon(\omega)-1)/(4\pi n)$, the Rayleigh forward
scattering amplitudes $f(\omega)=\omega\alpha(\omega)/r_{0}c^{2}$ (where
$r_{0}=e^{2}/mc^{2}$ is the classical radius of the electron, $c$ is the speed
of light and $n=N/V$ is the atomic number density), electron energy loss
spectra (EELS), inelastic mean-free paths, Hamaker constants
$\epsilon(i\omega)$, etc., can also be determined, [20] but are not yet
implemented in the present Corvus [opcons] workflow. For simplicity here and
below we use atomic units $e=\hbar=m=1$ throughout this paper unless otherwise
needed for clarity.

The treatment of excitations from the core- and valence-levels generally
requires different considerations, so it is convenient to separate the
calculations as

$\epsilon_{2}=\epsilon_{2}^{\rm core}+\epsilon_{2}^{\rm val},$ (6)

where $\epsilon_{2}^{\rm core}$ includes the contribution from all levels
below a fixed core-valence separation energy $E_{cv}$, which in FEFF10 is set
to -40 eV. Although this separation is approximate due to many-body effects,
the contributions from deep core levels (and to a reasonable approximation,
semi-core states) respond nearly independently from the valence.

###  2.1 Core level contributions

In this paper calculations of the optical constants are carried out using the
real-space Green’s function code FEFF10 and an updated version of the approach
described by Prange et al. [20] FEFF uses the same real-space Green’s function
formalism to calculate a variety of spectroscopies and related quantities
including XAS, XES, RIXS, EELS, and Compton. Thus the calculations of the
optical constants use essentially the same ingredients as those for the well-
established calculations of XAS, greatly simplifying the workflow design.

Briefly, the RSGF approach in FEFF is used to calculate the contribution to
$\epsilon_{2}(\omega)$ from each occupied level $i$ (i.e., absorption edge) at
each unique site in the system $a$. For simplicity, the site index will be
usually suppressed below. The core level contribution to
$\epsilon_{2}(\omega)$ from a given site $a$ consists of a sum of
contributions from occupied core levels $|i\rangle$ [20] for
$\varepsilon_{i}<E_{cv}$ given by

$\epsilon_{2}^{\rm core}=\sum_{i}\frac{4\pi}{\omega}{\rm Im}\left[\langle
i|{\hat{d}}^{\dagger}G(\omega+\varepsilon_{i}){\hat{d}}|i\rangle\right]\theta(\omega-\varepsilon_{F}+\varepsilon_{i}),$
(7)

where $|i\rangle$ is the core-orbital of interest, $\varepsilon_{i}$ its
binding energy, $\hat{d}$ is the transition operator, which in most cases is
dipole dominated, and $G(\omega)$ is the one-electron Green’s function.
Finally, $\theta(\omega-\varepsilon_{F}+\varepsilon_{i})$ is a unit step
function that turns on when the photon energy $\omega$ is sufficient to excite
the core-electron above the Fermi energy $\varepsilon_{F}$. If the interaction
between the core- and photoelectron levels is ignored, this level of
approximation is equivalent to the RPA. However, in this work we use the
final-state rule approximation to the core hole interaction, in which the
photoelectron Green’s function is calculated in the presence of a self-
consistently screened core-hole.

One of the advantages of the RSGF approach is the separation of the propagator
$G(\omega)$ into contributions from the central absorber at a given site and
single or multiple-scattering contributions from neighboring atoms, i.e.,
$G(\omega)=G^{\rm abs}(\omega)+G^{\rm sc}(\omega)$. As a result the dielectric
properties exhibit fine structure analogous to that in XAFS, i.e.,

$\epsilon_{2}=\sum_{i}\epsilon_{2i}^{\rm atomic}[1+\chi_{i}(\omega)],$ (8)

which we dub “optical fine structure” (OFS). Typically $\chi_{i}(\omega)$ is
of order a few percent within a range of order 100 eV above each edge;
however, $\chi_{i}(\omega)$ can be large and of order unity in the near-edge
regime, within about 10 eV or so of a given edge. Thus the physical
interpretation of the OFS is similar to that for EXAFS and XANES, reflecting
the local geometrical structure in the vicinity of an absorbing atom. These
observations also explain why a local, atomic approximation that neglects the
fine structure from neighbor scattering can be a reasonable approximation,
accurate to within a few percent for the core contributions to the optical
constants, except close to an absorption edge. In order to show the fine
structure over the entire energy range of our calculations, it is convenient
to calculate the fine-structure defined as
$\chi_{2}=(\epsilon_{2}-\epsilon_{2}^{\rm atomic})/\epsilon_{2}^{\rm atomic}$,
which is shown for Cu in Fig. 1 (bottom), together with the full and atomic
approximation to $\epsilon_{2}$ (top). A corresponding approximation can also
be made for any of the other optical constants. When $\epsilon_{1}^{\rm
core}\approx 1$, the fine structure in the loss function $L(\omega)$,
absorption $\mu$ and imaginary part of the index of refraction $\kappa$ are
similar to that in $\epsilon_{2}$. The fine structure in $\epsilon_{1}$ is
similar, although phase shifted by 90∘.

Figure 2: Cu K-edge spectrum obtained using the stitching algorithm (black).
For comparison, the curves calculated using FMS (red) and MSP (blue) are also
shown, shifted above and below the stitched curve, respectively. The green
curve is the difference between the FMS and MSP calculated results, and the
shaded area shows the region where the stitching algorithm is applied.

In order to obtain optical constants over a broad energy range from the UV to
hard x-rays, two FEFF calculations must be performed for each edge (i.e. each
occupied atomic level $i$) and each unique atomic site $a$ in the presence of
the corresponding core-hole: 1) In the near edge regime within about 50 eV of
a given edge full-multiple-scattering (FMS) calculations must be performed,
and 2) at higher energies (the EXAFS regime), the multiple-scattering path
expansion (MSP) is used. Once these calculations are performed, the results
are interpolated onto a common energy grid and stitched together to yield the
spectrum $\epsilon_{2}^{i}(\omega)$ coming from the core-state $|i\rangle$.
The stitching algorithm used is:[20]

$\displaystyle\epsilon^{i}_{2}(k)=$ $\displaystyle\epsilon_{2}^{{\rm
FMS},i}(k);$ $\displaystyle k<k_{0},$ $\displaystyle=$
$\displaystyle\cos^{2}(\frac{k-k_{0}}{k_{1}-k_{0}})\epsilon_{2}^{{\rm
FMS},i}(k)$
$\displaystyle+\sin^{2}(\frac{k-k_{0}}{k_{1}-k_{0}})\epsilon_{2}^{{\rm
MSP},i}(k);$ $\displaystyle k_{0}\leq k\leq k_{1},$ $\displaystyle=$
$\displaystyle\epsilon_{2}^{{\rm MSP},i}(k);$ $\displaystyle k>k_{1}$ (9)

where $k_{0}=3~{}{\rm\AA}^{-1}$, $k_{1}=4~{}{\rm\AA}^{-1}$, and $k=[2(E-E_{\rm
edge})]^{1/2}$ is the photoelectron wave-number. This is illustrated in Fig. 2
for the K-edge spectrum of fcc Cu.

Figure 3: Comparison of the experimental[26] and calculated energy loss
function for Al2O3 (corundum) (top) and Au (gold) (bottom) with the local
approximation (see text).

###  2.2 Valence Contributions

The contribution from the valence levels is complicated by the extended range
and continuum nature of the valence wave functions and the large density of
states in the valence region. In the full RSGF approach this requires sums
over multiple sites as in Eq. (32) of Ref. [20]. Moreover, systems with strong
excitonic effects often require treatments beyond the RPA such as TDDFT or the
Bethe-Salpeter equation.[9] Several codes are available for these advanced
treatments,[10, 11, 13, 15] but they are computationally challenging for high
throughput calculations. Nevertheless, neglecting these effects is often a
reasonable approximation for semi-quantitative purposes. Consequently, in this
work we use a local approximation at the absorption site to calculate the
contribution from the valence electrons. In addition, we replace the valence
wavefunctions with the Dirac-Fock atomic eigenfunctions, which allows us to
write Eq. (32) of Ref. [20] as an integral over the local valence density of
states

$\epsilon_{2}^{\rm
val}(\omega)=\sum_{ia}\int_{E_{cv}}^{E_{F}}d\omega^{\prime}\tilde{\rho}_{ai}(\omega^{\prime})\epsilon_{2}^{ia}(\omega-\Delta-\omega^{\prime}),$
(10)

where $\epsilon_{2}^{ia}(\omega)$ is the local atomic spectrum at a given site
$a$ corresponding to atomic state $i$, and $\tilde{\rho}=\rho/N$ is the
normalized, angular momentum projected density of states (LDOS) with symmetry
equal to that of the state $i$, and $\Delta=E_{\rm top}-E_{\rm edge}$ is a
shift to properly position the valence spectra, where $E_{\rm top}$ is the
energy at the top of the gap, if one exists, and is equal to the Fermi energy
otherwise.

Figure 4: Comparison of the theoretical absorption $\mu$ of Ag with and
without the Drude contribution, along with experimental results [26].

As shown for the energy loss of Al2O3 (top) and Au (bottom) in Fig. 3, which
provide good tests for this procedure we find that the approximation is
reasonably accurate when excitonic effects are small. We have found that our
local approximation in Eq. (10) is significantly better than a pure atomic
approximation alone. One can also define an optical fine structure $\chi^{\rm
val}$ for the valence contributions $\epsilon_{2}^{\rm val}$, although its
magnitude is typically large and of order unity (see Fig. 1), as in core-level
XANES, over the optical energy range. For this reason, FMS and the local
projected densities of states are needed to evaluate Eq. (10). In addition,
the physical interpretation of $\epsilon_{2}^{\rm val}$ is akin to a sum of
terms proportional to the joint projected density of states.[20] Even so, the
valence fine structure for Cu is rather similar to the K-edge fine structure,
as shown in the lower panel of Fig. 1. This makes sense, since the $d$\- to
$p$-state transitions dominate in the optical region, and the DOS is dominated
by a single, relatively sharp occupied $d$-band.

Finally, the total $\epsilon_{2}(\omega)$ is obtained from a double sum over
edges $i$ and unique sites in the system,

$\epsilon_{2}(\omega)=\sum_{ia}n_{a}\epsilon_{2}^{ia}(\omega),$ (11)

where $a$ denotes a unique site in the unit cell, and $n_{a}=N_{a}/V$ is the
corresponding number density.

Figure 5: Comparison of the experimental[26] and theoretical
$\epsilon_{2}(\omega)$ sum rule $n_{\rm
eff}(\omega)=\int_{0}^{\omega}d\omega\,\epsilon_{2}(\omega)/\pi$ for Cu. The
horizontal dashed line indicates the ideal theoretical limit ($Z=29$).

###  2.3 Debye-Waller factors and Drude corrections

A number of other considerations are generally important in calculations of
optical spectra over broad energy ranges. For example, effects of thermal
vibrations are temperature dependent and strongly damp the fine-structure in
the EXAFS regime. For the systems treated here we have approximated the
multiple-scattering path dependent DW factors $\exp(-2\sigma^{2}k^{2})$ using
the default correlated Debye model in FEFF10. The Debye temperature parameter
can be estimated[27] from the bulk and shear elastic moduli data available in
the MP database.

Drude corrections in metals can be added phenomenologically by an additional
ad hoc contribution to the limiting low frequency behavior of
$\epsilon_{2}(\omega)$ given by

$\epsilon_{2}^{D}=\frac{4\pi\sigma}{\omega}=\frac{\omega_{p}^{2}\tau}{\omega}$
(12)

where $\sigma$ is the conductivity, $\omega_{p}^{2}=4\pi ne^{2}/m$, $n$ is the
mean conduction electron density, and $\tau$ the relaxation time, which is
typically of order $0.1-4.0$ femtosecond at room temperature.[28] Fig. 4 shows
a comparison of the absorption $\mu$ of Ag with and without the Drude
contribution, along with experiment.[26]

Thermal expansion can also be treated by calculating the expansion parameter
via DFT,[29] or using parameters from the literature. Additional broadening
due to electron-phonon interactions, impurities, and other mechanisms can also
be important. While neglected by default, these effects can be added ex post
facto by a Lorentzian broadening of the spectra.

Once $\epsilon_{2}(\omega)$ is obtained by summing both core and valence
contributions over all sites, the real part of the dielectric function is
formed via a KK-transform, as in Eq. (1). A check on the completeness of the
calculations is provided by the optical constant sum-rules,[25] as illustrated
in Fig. 5.

Figure 6: Schematic of the Corvus workflow for optical constants. User input
is shown in light green, while code blocks associated with Corvus are shown in
blue, and input/output/code associated with FEFF is shown in black. The output
is shown in light blue. Note that Corvus [opcons] requires minimal input from
the user (only the CIF file and a request for optical constants), although
many optional parameters are available.

###  2.4  Corvus [opcons] workflow

The Corvus [opcons] workflow is built on the concept of recursive workflow
generation, wherein Corvus generates and runs a workflow with the target
property opcons, and the optical constants workflow [opcons] in turn generates
and runs a [xanes] workflow for each required FEFF10 calculation. The workflow
tool is described in detail together with various examples in the Corvus
reference.[24] This approach determines the input files from the data in the
MP database, afterwhich all of the individual FEFF10 calculations are set up
and run through the Corvus workflow manager. The Corvus [opcons] workflow then
carries out the following steps: i) calculating the $\epsilon_{2}(\omega)$ for
a given edge; ii) applying the stitching algorithm to combine the near-edge
full multiple scattering (FMS) and multiple-scattering path (MSP)
calculations; iii) convolving with the density of states (Eq. 10); iv)
performing the KK-transform to obtain $\epsilon_{1}$; v) adding the Drude
contribution; and vi) calculating the other optical constants following the
relations in Eqs. (1). In order to facilitate automated calculations, Corvus
handles the creation of FEFF10 input files from minimal user input, executes
FEFF10, and translates the output. Additionally, the Corvus [opcons] workflow
is designed to optimize the calculations, for example re-using output from the
XANES results within the EXAFS calculations to bypass the self-consistency
loop. Figure 6 shows a schematic of the Corvus [opcons] workflow for producing
the optical constants.

⬇

Query found 16 systems

Keeping 3 systems after energy screening

Found systems:

# \-------------------------------- #

System: mp-1279742

Reduced Form.: FeO

Cell Comp.: Fe4 O4

Sym. Unique Comp.: Fe1 O1

Total num. of edges: 15

Estimated Debye T: 466.60 (Pred.)

# \-------------------------------- #

System: mp-715262

Reduced Form.: FeO

Cell Comp.: Fe2 O2

Sym. Unique Comp.: Fe1 O1

Total num. of edges: 15

Estimated Debye T: 416.52 (Calc.)

# \-------------------------------- #

System: mp-1178232

Reduced Form.: FeO

Cell Comp.: Fe4 O4

Sym. Unique Comp.: Fe1 O1

Total num. of edges: 15

Estimated Debye T: 465.00 (Pred.)

# \-------------------------------- #

Keeping 3 systems after symmetry and edge screening

Total number of edges to compute in set: 45

Figure 7: Typical output for the crv_mp_mk_set command showing that the MP
query returned 16 possible systems, of which only 3 are left after screening
for energy, symmetry, and total number of edges. Also shown are the estimated
Debye temperatures, which can be calculated (e.g., from DFT data), or
predicted (e.g., from machine learning data).

##  3 Materials Project interface tools

###  3.1 Global structure of Corvus [opcons] simulations

MP optical constants simulations are set up in two steps: 1) The crv_mp_mk_set
command reads the command line inputs, creates a request to the MP, downloads
all the structures available matching the query, generates a set of materials
to run and calculates the totl number of edges in the set. 2) The
crv_mp_run_set command runs all the calculations required for the set,
distributed in serial or parallel mode according to the resources provided. In
the following section we describe their usage in detail.

###  3.2 Usage: crv_mp_mk_set

The basic input of a typical Corvus [opcons] calculation is set up using the
crv_mp_mk_set command:

crv_mp_mk_set [OPTIONS] Set_Name

where “Set_Name” is a text label that will be used throughout to refer to the
set of materials. This label is used to name the directory where the
calculations will be done and the results stored. crv_mp_mk_set can be used to
query the MP database in three different ways (see options below): 1) Query an
n arbitrary class of materials selected by formula, 2) automatically query
some or all of the elemental solids, for which the tools have an internal
database of MP-IDs, and finally, 3) an individual material with a given MP-ID.
The full set of options can be obtained with “crv_mp_mk_set --h”. Here we
focus on some of the most computationally relevant ones.

⬇

target_list { opcons }

usehandlers { Feff }

opcons.usesaved{ True }

cif_input{CIF_symm.cif}

feff.scf{ 3.2350952042425325 0 30 0.1 0 }

feff.fms{ 5.075798356336175 0 0 0.0 0.0 40.0 }

feff.debye{ 298.0 416.52459701743817 0 }

# The lines below should set the parallel settings

...

Figure 8: Typical template Corvus [opcons] input generated by the
crv_mp_mk_set command. This input shows the selected Corvus target opcons, the
handlers that sould be used (only FEFF is required for these types of runs),
the location of the structure in CIF format, and the FEFF SCF and FMS radii.
The latter are automatically generated based on the number of shells requests
in the command line. Depending on the options used, the calculation can use a
Correlated Debye model to add thermal broadening, using a Debye temperature
parameter estimated from MP database values of the bulk and shear moduli.
Given that Corvus stores the MPI command, number of processors, etc in the
input, the actual input is generated at runtime by the crv_mp_run_set, where
the required parameters are added at the end of the template input shown here.

####  3.2.1 Required options

\--k APIKEY

API key used to interact with the MP REST interface

This option is required for the command to be able to interact with the MP
database. See section 3.4.4 for details.

####  3.2.2 System selection options

\--f FORMULA

Use chemical formula FORMULA to define a set of materials.

\--pt

Create a set for all the solid elements in the periodic table using the
structure for the most stable phase in standard conditions

\--ptel PT_ELEMS

Same as \--pt, but only for a list of specific elements

\--mpid MP-ID

Select the individual system with Materials Project identification label MP-ID
(Default: “mp-30”)

These options are mutually exclusive. If none of them are present the command
generates input for a test run on Cu, a traditional choice since FEFF was
first deployed.

####  3.2.3 Selection fine-tuning options

\--mxpt MXNAPT

Maximum atomic number to use while creating the periodic table with \--pt
(Default: 99)

\--enpct EN_PCT

Keep only EN_PCT% of lowest energy systems (Default: 100%)

\--nedg MXNEDGES

Keep only systems with fewer than MXNEDGES edges (Default: 250)

These options help trim the raw selection generated by the system selection
options.

####  3.2.4 Auxiliary options

\--nSCF NSCF

Number of neighbor shells to use in SCF (Default: 1)

\--nFMS NFMS

Number of neighbor shells to use in FMS (Default: 2)

\--symprec SYM_PREC

Symmetry precision (in Å) used by symmetrizer (Default: 0.01Å)

\--dw

Use the correlated Debye thermal broadening model in the optical constants
calculation

\--temp TEMPERATURE

Temperature (in K) used for correlated Debye thermal broadening (Default:
298K)

These options control the setup of the optical constants calculations by
defining how many shells to use in the SCF and FMS steps, as well as the
precision of the symmetrization procedure used to reduce the number of unique
sites. The shell selection is performed using the Jenks natural breaks
classification method[30] as implemented in the jenkspy Python module.[31]
Additionally, vibrational broadening can also be controlled by requesting that
a correlated Debye model[32] be used.

Figure 9: Comparison of the experimental[26] and theoretical $\epsilon_{2}$
for Cu as a function of FEFF Corvus (nSCF,nFMS) shells to explore convergence
(top) and (bottom) index of refraction for Au in the valence region (bottom).

####  3.2.5 Calculation control options

\--dr

Dry run, collect and display information without actually creating a set

\--v

Make the command output more verbose

Figure 10: Periodic table of FEFF optical constants currently available. The
index on the top-right corner of each element indicates the MP-ID of the
structure used in the calculations. A dynamic version of this table can be
found at http://feff.phys.washington.edu/optical-constants/,[33] including all
optical constants data as well as the input files used to generate it.

####  3.2.6 Examples

A typical invocation of crv_mp_mk_set is as follows

crv_mp_mk_set --k [APIKEY] --f "FeO" --enpct 20 --nedg 250 --nSCF 2 --nFMS 4
--v --dw --temp 298.0 IronOxides

creates a set of 3 systems (Figure 7) after screening for energy, symmetry and
total number of edges. The command also requests that the Debye temperature be
estimated, and that the calculation be done at room temperature. Inside the
set directory, the structures are organized by reduced formula and MP-ID. A
typical Corvus [opcons] directory created with crv_mp_mk_set contains, for
each material, a template Corvus [opcons] input (Fig. 8) and a few auxiliary
files with structural information. A set for the Li, Be and B elemental solids
can be generated using:

crv_mp_mk_set --k [APIKEY] --v --ptel ’Li,Be,B’ LiBeB

while a single compound (one of the forms of Mg3N, in this case) can be set up
with:

crv_mp_mk_set --k [APIKEY] --v --mpid mp-1185783

More examples can be found in Ref. [34].

###  3.3 Usage: crv_mp_run_set

After a set is created, the actual optical constants can be computed with the
crv_mp_run_set command:

crv_mp_run_set [OPTIONS] Set_Name

where “Set_Name” is again the label for the set to run. As for
“crv_mp_mk_set”, the full set of options can be obtained with “crv_mp_run_set
--h”, but here we focus on some of the most computationally relevant ones.

####  3.3.1 Options to control the number of processors

\--np NP_TOT

Total number of processors to be used in the run (Default: 1)

\--ppn PPN

Number of processors per node (Default: 1)

\--nn NNODES

Number of nodes with PPN processors per node to be used in the run (Default:
1)

If more than one of these options are specified, the command will choose
max(NP_TOT,PPN*NNODES) as the total number of processors to use.

####  3.3.2 Options to estimate computational cost

\--t

Estimate total runtime up to NP_TOT processors

\--sf SER_FRAC

Fraction of serial code to estimate parallel runtimes (Default: 0.5)

If the “\--t” runtime option is present, instead of running the set,
crv_mp_run_set prints out estimates of the cost of the calculation from 1 to
NP_TOT processors relative to the cost of a single edge calculations performed
in serial mode.

####  3.3.3 Auxiliary options

\--v

Generate verbose output (timings, etc)

\--dr

Dry run: Do everything but actually run

####  3.3.4 Examples

A typical instance of crv_mp_run_set to run the set IronOxides created in the
previous example (Fig. 7) is as follows:

crv_mp_run_set --ppn 64 -nn 45 --v IronOxides

or

crv_mp_run_set -np 2880 --v IronOxides

Given that the set contains 45 edges, for maximum efficiency we assign one
node with 64 processors to each edge, or a total of 2880 processors, thus
effectively running all materials simultaneously. FEFF10 then computes each
individual edge parallelizing over the energy grid with 64 processors.

###  3.4 Requirements

####  3.4.1 Code distribution

Both Corvus[35] and FEFF10[36] are open source and are available on GitHub.
Detailed installation instructions can be found in Ref. [34].

####  3.4.2 Corvus requirements

The Corvus workflow manager is implemented in Python 3. In addition, it
requires the Numpy[37] and Scipy[38] packages, as well as a few other packages
depending on the required functionality. The Corvus workflows that are
possible will be determined by the specific external software packages
installed on the system. In this case, the optical constants WF only requires
the appropriate version of FEFF10.

####  3.4.3 FEFF10 requirements

To run efficiently, a parallel execution is important. Thus, the FEFF code
requires a Fortran90 compiler with some flavor of MPI-2 for compilation. FEFF
has been tested with a wide variety of compilers and MPI-2 implementations.

####  3.4.4 Corvus [opcons] specific requirements

The crv_mp_mk_set and crv_mp_run_set tools are also implemented in Python 3
and, in addition to the Corvus requirements, they need the pymatgen
package.[39] In order to use the MPRester method in pymatgen to access the
Materials Project database directly, users need to have an MP account and a
valid API key. For the work presented in this paper, we used pymatgen
v2022.0.9, and MP v2019.05.

####  3.4.5 Performance Analysis

The CPU time for a given material scales linearly with the number of edges and
unique atom positions in a unit cell and, depending on the SCF and FMS
settings, typically takes between a few minutes and $1/2$ hr. Thus, when the
available number of processors is equal or greater than the total number of
edges, linear parallelization is simply achieved by assigning a processor or
more to each edge, up to about 32-64 processors. More processors per edge
becomes less efficient at the level of FEFF calculations. In other cases, and
for high-throughput runs for many different materials, the wall-clock time
depends on how the set is structured (e.g., how many edges per material in the
set) and how the calculations are distributed in the workflow. In that case,
there are no simple rules to determine the optimal parallel distribution. To
help with this issue, the crv_mp_run_set tool includes an option (“\--t”) to
estimate how well a given system of interest will parallelize for a certain
range of number of processors (“\--np”) relative to the fully serial
calculation.

Figure 11: Loss function for several Al2O3 oxides listed in the MP.

##  4 Example Applications

###  4.1 Optical constants of the elements

As an illustration, we have carried out calculations for the most stable
structure (at room temperature and nominally 1 atm) of each of the elemental
solids listed in the MP with data imported for a given MP-ID. Some of the most
important factors limiting the quality of the results are the SCF and FMS
radii used in the simulations. The results can be obtained online at
http://feff.phys.washington.edu/optical-constants/[33] Fig. 9 (top) shows a
comparison of the results using an increasing number of near-neighbor shells
for $\epsilon_{2}$ of copper. We find that 3 and 6 shells in the SCF and FMS
modules, respectively, produce converged results above 10-20 eV.

Overall, the results are in reasonable agreement with experimental
tabulations,[26] and illustrate that, except close to an edge or in the
optical region, $\epsilon_{2}$ can be approximated reasonably by the atomic
approximation, ignoring the fine structure. For example, Fig. 9 shows a
comparison to experiment[26] of Cu $\epsilon_{2}$ (top) and real index of
refraction Au (bottom) computed with converged SCF and FMS radii and including
the density of states convolution in Eq. 10. These results show that Eq. 10 is
only semi-quantitative in the visible range. Fig. 10 shows a periodic table of
the elements and associated MP-IDs that are currently available and can be
freely viewed and downloaded at http://feff.phys.washington.edu/optical-
constants/.[33]

###  4.2 Optical constants of the Al2O3 materials in the MP

In addition to the elemental solids, we have also computed several aluminum
oxides. For example, Fig. 3 shows a comparison to experiment[26] of the energy
loss for the full energy range for the corundum form of Al2O3. In order to
demonstrate the set capabilities of the Corvus [opcons] workflow, we
calculated results for a sub-set of those listed in the MP with formula Al2O3.
The results for the loss function up to the Al L-edges are shown in the main
panel of Fig. 11, while the inset highlights the O K-edge region. The
differences in the near edge structure, as well as those in the optical
reflect the different symmetries present in the system. For example, there is
a mixture of Al sites in octahedral and tetrahedral symmetry in the first two
materials, which are both monoclinic, while the last material is trigonal, and
contains only Al in octahedral symmetry. Similarly, the oxygen sites in the
first two systems are a mixture of sites in tetrahedral and trigonal symmetry.
These changes in symmetry lead to differences in electronic structure, which
are directly related to the features seen in the near edge spectra.

##  5 Conclusions

We have presented an optical constants (“opcons”) workflow built with the
Python-based Corvus workflow manager for high-throughput simulations of full
spectrum optical constants from the UV-VIS to hard x-ray wavelengths for
materials defined in the MP data-base. The calculations are based on the
efficient RSGF code FEFF10 and an approximate treatment of the valence
contributions using structural data from the MP database specified by a unique
MP materials ID. As for the XAS, the results can be represented in terms of an
atomic-like background and an optical fine-structure (OFS) analogous to EXAFS.
Except close to an edge where the fine-structure is substantial, the
background dominates and can be calculated efficiently over the full spectrum.
The fine-structure is edge-specific and as in EXAFS, reflects the structure of
the environment of a given absorber in the material. The calculations are set
up automatically using _Corvus_ auxiliary tools, and the workflow parallelizes
the FEFF computations over edges and sites with an optimal distribution of
computational resources. Representative results show that the workflow
produces accurate optical properties over a broad range of energies. Although
this algorithm includes mean-free paths and Debye-Waller factors, multiplet
splitting, excitonic effects, and long-range contributions to the valence
spectra are currently neglected. Consequently, the present results may only be
semi-quantitative in the UV-VIS regime.

##  6 Data availability

We have computed the optical properties for all elemental solids in the
periodic table for which structures are available in the Materials Project
database, using the approach in this work. The data, including input files and
structure, are freely available online at
http://feff.phys.washington.edu/optical-constants/. Complete installation and
testing instructions as well as examples for the Corvus [opcons] workflow, its
associated tools, and the FEFF10 code are available at
http://feff.phys.washington.edu/optical-constants/installation.html.

## Acknowledgments

We thank C. Draxl, S. Dwaraknath, L. Hung, L. Reining, and J. Vinson for
comments and suggestions. This work was supported primarily by the US
Department of Energy, Office of Basic Energy Sciences, Division of Materials
Sciences and Engineering, under Contract No. DE-AC02-76SF00515, specifically
through the Theory Institute for Materials and Energies Spectroscopies (TIMES)
program (JJR, JJK, FDV, and CDP), with computational support from NERSC, a DOE
Office of Science User Facility, under Contract No. DE-AC02-05CH11231. R. X.
Yang and K. A. Persson acknowledge support by the US Department of Energy,
Office of Science, Office of Basic Energy Sciences, Materials Sciences and
Engineering Division under Contract No. DE-AC02-05-CH11231 (Materials Project
program KC23MP).

## References

  * [1] E. D. Palik, Handbook of Optical Constants of Solids, Academic Press, Orlando, 1985\.
  * [2] S. Adachi, Handbook On Optical Constants Of Metals, The: In Tables And Figures, World Scientific, 2012.
  * [3] B. L. Henke, E. M. Gullikson, J. C. Davis, X-ray interactions: photoabsorption, scattering, transmission, and reflection at E=50–30000 eV, Z= 1–92, Atom. Data Nucl. Data Tables 54 (1993) 181.
  * [4] C. T. Chantler, Detailed tabulation of atomic form factors, photoelectric absorption and scattering cross section, and mass attenuation coefficients in the vicinity of absorption edges in the soft x-ray (Z=30–36, Z=60–89, E=0.1 keV–10 keV), addressing convergence issues of earlier work, J. Phys. Chem. Ref. Data 29 (2000) 597.
  * [5] P. Nozières, D. Pines, Electron interaction in solids. general formulation, Phys. Rev. 109 (3) (1958) 741–761.
  * [6] S. L. Adler, Quantum theory of the dielectric constant in real solids, Phys. Rev. 126 (2) (1962) 413–420.
  * [7] N. Wiser, Dielectric constant with local field effects included, Phys. Rev. 129 (1) (1963) 62–69.
  * [8] G. Onida, L. Reining, A. Rubio, Electronic excitations: density-functional versus many-body green’s-function approaches, Rev. Mod. Phys. 74 (2) (2002) 601–659.
  * [9] R. M. Martin, L. Reining, D. M. Ceperley, Interacting electrons, Cambridge University Press, 2016.
  * [10] H. M. Lawler, J. J. Rehr, F. Vila, S. D. Dalosto, E. L. Shirley, Z. H. Levine, Optical to UV spectra and birefringence of SiO2 and TiO2: First-principles calculations with excitonic effects, Phys. Rev. B 78 (20) (2008) 205108.
  * [11] J. Vinson, J. J. Rehr, J. J. Kas, E. L. Shirley, Bethe-Salpeter equation calculations of core excitation spectra, Phys. Rev. B 83 (2011) 115106\.
  * [12] The exc code, https://etsf.polytechnique.fr/exc/.
  * [13] A. Gulans, S. Kontur, C. Meisenbichler, D. Nabok, P. Pavone, S. Rigamonti, S. Sagmeister, U. Werner, C. Draxl, exciting: a full-potential all-electron package implementing density-functional theory and many-body perturbation theory, J. Phys. Condens. Matter 26 (2014) 363202.
  * [14] N. Tancogne-Dejean, M. J. T. Oliveira, X. Andrade, H. Appel, C. H. Borca, G. Le Breton, F. Buchholz, A. Castro, S. Corni, A. A. Correa, U. De Giovannini, A. Delgado, F. G. Eich, J. Flick, G. Gil, A. Gomez, N. Helbig, H. Hübener, R. Jestädt, J. Jornet-Somoza, A. H. Larsen, I. V. Lebedeva, M. Lüders, M. A. L. Marques, S. T. Ohlmann, S. Pipolo, M. Rampp, C. A. Rozzi, D. A. Strubbe, S. A. Sato, C. Schäfer, I. Theophilou, A. Welden, A. Rubio, Octopus, a computational framework for exploring light-driven phenomena and quantum dynamics in extended and finite systems, J. Chem. Phys. 152 (2020) 124119.
  * [15] Y. Takimoto, F. D. Vila, J. J. Rehr, Real-time time-dependent density functional theory approach for frequency-dependent nonlinear optical response in photonic molecules, J. Chem. Phys. 127 (2007) 154114.
  * [16] C. Ambrosch-Draxl, J. O. Sofo, Linear optical properties of solids within the full-potential linearized augmented planewave method, Comput. Phys. Commun. 175 (1) (2006) 1–14.
  * [17] A. Marini, C. Hogan, M. Grüning, D. Varsano, yambo: An ab initio tool for excited state calculations, Comput. Phys. Commun. 180 (2009) 1392–1403.
  * [18] W. S. M. Werner, K. Glantschnig, C. Ambrosch-Draxl, Optical constants and inelastic electron-scattering data for 17 elemental metals, J. Phys. Chem. Ref. Data 38 (2009) 1013–1092.
  * [19] E. G. Maksimov, I. I. Mazin, S. N. Rashkeev, Y. A. Uspenski, First-principles calculations of the optical properties of metals, J. Phys. F Met. Phys. 18 (1988) 833–849.
  * [20] M. P. Prange, J. J. Rehr, G. Rivas, J. J. Kas, J. W. Lawson, Real space calculation of optical constants from optical to x-ray frequencies, Phys. Rev. B 80 (2009) 155110.
  * [21] C. Zheng, K. Mathew, C. Chen, Y. Chen, H. Tang, A. Dozier, J. J. Kas, F. D. Vila, J. J. Rehr, L. F. Piper, et al., Automated generation and ensemble-learned matching of x-ray absorption spectra, Npj Comput. Mater. 4 (2018) 1–9.
  * [22] Y. Chen, C. Chen, C. Zheng, S. Dwarknath, M. K. Horton, J. Cabana, J. J. Rehr, J. Vinson, A. K. Dozier, J. J. Kas, K. A. Persson, S. P. Ong, Database of ab initio L-edge x-ray absorption near edge structure, Sci. Data, in press (2021).
  * [23] S. B. Torrisi, M. R. Carbone, B. A. Rohr, J. H. Montoya, Y. Ha, J. Yano, S. K. Suram, L. Hung, Random forest machine learning models for interpretable x-ray absorption near-edge structure spectrum-property relationships, npj Computational Materials 6 (1) (2020) 1–11.
  * [24] S. M. Story, F. D. Vila, J. J. Kas, K. B. Raniga, C. D. Pemmaraju, J. J. Rehr, Corvus: a framework for interfacing scientific software for spectroscopic and materials science applications, J Synchrotron Radiat 26 (2019) 1694–1704.
  * [25] M. Altarelli, D. L. Dexter, H. M. Nussenzveig, D. Y. Smith, Superconvergence and sum rules for the optical constants, Phys. Rev. B 6 (12) (1972) 4502–4509.
  * [26] H. Hageman, W. Gudat, C. Kunz, Optical constants from the far infrared to the x-ray region: Mg, Al, Cu, Ag, Au, Bi, C, and ${\rm Al}_{2}{\rm O}_{3}$, Tech. rep., DESY (1974).
  * [27] O. L. Anderson, A simplified method for calculating the Debye temperature from elastic constants, J. Phys. Chem. Solids 24 (7) (1963) 909–917.
  * [28] N. W. Ashcroft, N. D. Mermin, Solid State Physics, Harcourt Brace Jovanovich College Publishers, 1976.
  * [29] F. D. Vila, J. J. Rehr, H. H. Rossner, H. J. Krappe, Theoretical x-ray absorption Debye-Waller factors, Phys. Rev. B 76 (2007) 014301.
  * [30] G. F. Jenks, The data model concept in statistical mapping, International yearbook of cartography 7 (1967) 186–190.
  * [31] jenskpy Python module, https://pypi.org/project/jenkspy/.
  * [32] E. Sevillano, H. Meuth, J. Rehr, Extended x-ray absorption fine structure Debye-Waller factors. I. Monatomic crystals, Physical Review B 20 (12) (1979) 4908.
  * [33] Periodic table of optical constants for the elemental solids, http://feff.phys.washington.edu/optical-constants.
  * [34] Corvus [opcons] and FEFFF installation instructions, http://feff.phys.washington.edu/optical-constants/installation.html.
  * [35] Corvus [opcons] GitHub repository, https://github.com/times-software/Corvus/tree/convert-to-3.
  * [36] FEFF10 GitHub repository, https://github.com/times-software/feff10/tree/fullspectrum.
  * [37] Numpy Python module, https://numpy.org/.
  * [38] Scipy Python module, https://www.scipy.org/.
  * [39] A. Jain, S. P. Ong, G. Hautier, W. Chen, W. D. Richards, S. Dacek, S. Cholia, D. Gunter, D. Skinner, G. Ceder, K. A. Persson, Commentary: The materials project: A materials genome approach to accelerating materials innovation, APL Mater. 1 (2013) 011002.