SHGYield is a python program for calculating the surface second-harmonic generation (SSHG) yield (in reflectance) for semiconductor surfaces.
SSHG is an effective, nondestructive, and noninvasive probe for studying surface and interface properties, and even for characterizing buried interfaces and nanostructures. The high surface sensitivity of SSHG spectroscopy is due to the fact that within the dipole approximation, the bulk SHG response in centrosymmetric materials is identically zero. The SHG process can occur only at the surface where the inversion symmetry is broken.
This program has several potential applications and uses:
- determining and analyzing the physical origin of SSHG spectra
- predicting and characterizing the radiated SSHG for interesting new materials
- characterizing thin films based on measured SH spectra
- allowing the experimenter to calculate and analyze the SSHG yield to optimize experiments
For example, the figure below is an overview of the angular dependence of the reflected SHG Yield from the Si(111)(1x1)H surface. Experimentalists will find this very useful, as they can plan the experiment accordingly in order to optimize the output signal strength and polarization.
The complete theory is derived step-by-step in Phys. Rev. B 94, 115314 (2016). This software has been developed and used in the following publications:
- Front. Mater. 4:12 (2017)
- Phys. Rev. B 94, 115314 (2016)
- Phys. Rev. B 93, 235304 (2016)
- Phys. Rev. B 91, 075302 (2015)
- arXiv:1604.07722 (2016)
- Theoretical Optical Second-Harmonic Calculations for Surfaces (2016)
SHGYield has been tested with Python 2 and 3, and Anaconda Python 4+ on both macOS and Linux. It should work on any system (including Windows) with the required Python packages installed.
Python requirements:
sys
, yaml
, numpy
, scipy
Usage:
python shgyield.py <input.yml>
You can find a very complete input file inside the example
directory.
An example case using the Si(111)(1x1):H surface is included in the example
directory. It includes a very complete input file, all the components of the susceptibility tensor, and some reference data with relevant plots.
Also included is a Jupyter notebook with a brief but thorough tutorial that explains some the of the theory and how the equations are coded. This tutorial walks the user through the battery of calculations required for the SSHG yield for this surface.
A test script is included in the tests
directory, and can be run automatically with pytests
. Read the README.md
file in that directory for details.
SHGYield.py produces the SHG radiation (in reflectance) produced from a semiconductor surface. It requires the susceptibility tensors that can be calculated as explained below. The theory is developed considering a reflectance model with three distinct regions that allows the user to readily simulate the SHG response of thin-films over bulk substrates, or of any crystalline surface with any symmetry considerations.
In order to calculate the SHG yield, you must first calculate the linear and nonlinear susceptibility tensor (χ(−2ω; ω, ω), χ for short) for the material of interest. The theory surrounding this problem is still being developed, and there are many ways to go about it. We leave it to the reader to find the best method for their particular problem. As an example, we use ABINIT to calculate the electron density/wavefunction/energies and then TINIBA to calculate the relevant matrix elements and the χ tensor components. The exact method that we use is derived in full detail in Phys. Rev. B 91, 075302 (2015). The program does NOT care how you have produced the susceptibility tensors; you can use different frameworks (such as MBPT, DFT-LDA, TDDFT, etc.) for producing the linear and nonlinear susceptibility tensors.
χ determines the nonlinear polarizability of a material and is responsible for second-harmonic generation. This relationship is expressed as
where a, b, and c are crystallographic directions that depend on how you orient your crystalline structure. We can see that a material can produce a polarization response in direction a from two incident fields (E) in directions b and c, by means of χabc.
χ is a third-rank tensor, and thus has 27 possible components (unique combinations of a, b, and c; for instance, aaa, aab, and so on.). Second-harmonic generation implies that the incoming fields are identical (two photons of equal energy in, one photon of double-energy out) so it is also implied that
for this particular phenomenon. This reduces 9 of the possible combinations, reducing to 18 unique components. It is very convenient to express the crystallographic directions in terms of x, y, and z; therefore, we can express χ with all 18 components as
Symmetry relations are very important for determining χ. A given crystal symmetry can greatly reduce the complexity of the problem by eliminating many of the components. For instance, for the (001) face of cubic crystals, we have that
which has only 3 independent components. There are many articles and books with tables and extensive discussion that describe the form that this tensor should have for a given symmetry.
The case for χab(ω) is considerable simpler. χab(ω) is directly related to the dielectric function of the material
which is directly related to the index of refraction as
The χab(ω) spectra should obviously have non-zero regions; otherwise, the problem is not very interesting.
In general, there are several ab initio formalisms that can be used to obtain the electron density/wavefunction/energies of crystalline semiconductor materials. The most common are:
- all-electron methods (older, declining in popularity)
- density functional theory with the local-density approximation (DFT-LDA) (solid workhorse with known problems)
- time-dependent density functional theory (TDDFT) (good for optical responses, but hard to implement)
- many-body perturbation theory (MBPT) (state-of-the-art, but extreme computational expense)
Each of these has their pros and cons that mainly relate to accuracy vs. difficulty of the theory vs. computer resources. There are many free and open-source codes available for download that are under active development by thousands of researchers and groups.
Once the initial electronic properties of the material are determined, we can then proceed to calculate the optical properties that include the linear and nonlinear responses. In general, nonlinear optics is now pretty well understood within the DFT-LDA (see references within Phys. Rev. B 91, 075302 (2015)) and the TDDFT frameworks. MBPT is currently (AFAIK) still at the linear optics level, but has the highest level of accuracy available. Of course, you can combine different methods to exploit the strengths that each has to offer.
The code that we use is called TINIBA; however, we have not yet created an official release for production use. That said, we are an active research group that uses this software every day to produce high-quality scientific work, and are constantly improving and adding features to it. Publishing TINIBA is definitely a long-term goal that we have.
There are, however, some codes available, such as RT-SIESTA which works with TDDFT, and even ABINIT has built-in utilities for calculating the susceptibility tensors.
Copyright 2017 Sean M. Anderson and Bernardo S. Mendoza.
SHGYield is free software made available under the BSD-3-Clause License. For details please see the LICENSE file.