OpticalSpectrum — Class for representing the optical spectrum for a configuraiton with an attached calculator.
Constructructor for the OpticalSpectrum object.
The configuration with an attached calculator.
Type: Bulkconfiguration
Default:
None
The k-points for which the transitions should be calculated.
Type: MonkhorstPackGrid
Default:
MonkhorstPackGrid(nx,ny,nz), where nx, ny, nz is the sampling used for the selfconsistent calculation.
The energies for which the polarizability should be calculated.
Type: List containing elements of the type PhysicalQuantity of energy unit.
Default:
numpy.linspace(0, 4, 101)*eV
The broadening parameter used for the polarizability.
Type: PhysicalQuantity with unit energy.
Default:
0.1 eV
The maxinum number of valence band states to include at each k-point.
Type: integer > 0
Default:
4
The maximum number of conduction band states to include at each k-point.
Type: integer > 0
Default:
4
A OpticalSpectrum object provides the following methods:
broadening(): Query function for the broadening.
energies(): Query function for the energies.
evaluateDielectricConstant(spin): Function for evaluating the real part of the dielectric constant
using the Kubo-Greenwood formalism.
evaluateImaginaryDielectricConstant(spin): Function for evaluating the imaginary part of the dielectric constant
using the Kubo-Greenwood formalism.
evaluateImaginaryPolarizability(spin): Function for evaluating the imaginary part of the polarizability
using the Kubo-Greenwood formalism.
evaluatePolarizability(spin): Function for evaluating the real part of the polarizability
using the Kubo-Greenwood formalism.
maxConductionStates(): Query function for the maximum number of conduction states to include.
maxValenceStates(): Query function for the maximum nunmber of valence states to include.
nlprint(stream): Print a string containing an ASCII table useful for plotting the optical spectrum.
Calculate the opticalspectrum of silicon and save it to a file. Print out the Dielectric Tensor.
# Set up silicon crystal
bulk_configuration = BulkConfiguration(
bravais_lattice=FaceCenteredCubic(5.4306*Angstrom),
elements=[Silicon, Silicon],
cartesian_coordinates=[[ 0. , 0. , 0. ],
[ 1.35765, 1.35765, 1.35765]]*Angstrom
)
#setup calculator
numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=(6, 6, 6),
)
# setup DFT calculator using Meta-GGA
calculator = LCAOCalculator(
basis_set=LDABasis.DoubleZetaDoublePolarized,
exchange_correlation=MGGA.TB09LDA,
numerical_accuracy_parameters=numerical_accuracy_parameters,
)
bulk_configuration.setCalculator(calculator)
bulk_configuration.update()
# Optical spectrum
optical_spectrum = OpticalSpectrum(
configuration=bulk_configuration,
kpoints=MonkhorstPackGrid(15,15,15),
energies=numpy.linspace(0,5,101)*eV,
broadening=0.1*eV,
max_valence=4,
max_conduction=4,
)
nlsave('si_optical.nc', optical_spectrum)
# Print out the dielectric constant (Experimental value is 11.9)
print 'Dielectric Tensor'
print optical_spectrum.evaluateDielectricConstant(energies=[0.0]*eV)[:,:,0]
We use the Kubo-Greenwood formula to calculate the susceptibility tensor [38]
where
is the
-component of the dipole matrix element
between state
and
,
the volume,
the broadening, and
the Fermi function.
The response coefficients, the dielectric constant
,
polarizability
, and optical conductivity
, are related to the susceptibility as
The derivation of the last relation can be found in Ref. [36].
The refractive index,
, is related to the complex dielectric constant through
here
is the extinction coefficient.
In terms of the real (
) and complex parts (
) of the
dielectric constant
The optical absorption coefficient is related to the extinction coefficient through [37]
The reflectivity is given by [35]
Thus from the dielectric constant a number of other optical properties are easily obtained.
For further background information on optical spectra see the section called “Optical response functions”.