bandstructure module

This module, bandstructure.py contains the setup and calculation of bandstructure related properties. This also include for instance the calculation of the density of states.

Contains routines to set up the bandstructure.

class bandstructure.Bandstructure(lattice, param, location=None, filename=None)

Bases: object

Handles the read in, generation and storrage of the bandstructure and its relevant parameters.

Parameters
latticeobject

A Lattice() object.

paramobject

A Param() object.

filenamestring, optional

Filename and relative path for the input file that is to be read.

Notes

The YAML general and bandstructure configuration (param.yml and bandparams.yml, respectively by default) files are read and the setup of the bandstructure is determined from these files.

If an external band structure is supplied, i.e. from VASP (vasprun.xml is sufficient) the bandparams file is still needed as it contains parameters used to set up the scattering properties etc. at a later stage.

Presently the following combination is possible:

  • Parametrized bands (parabolic, non-parabolic, Kane and a k^4 model)

  • VASP input from the VASP XML file (only this file is needed)

  • Numpy input files

A combination of parametrized and tight binding bands is possible.

If another code is to be used to provide the bandstructure parameters, please consult interface and use that as a base to write a new bandstructure_yourcode function in that module and include a call to this function in the initializer below.

Todo

Add the posibility to add parameterized bands to the e.g. VASP bandstructure. Usefull for instance to investigate defects etc. that was not included in the calculation.

Todo

Add interfaces to other first principle codes.

apply_scissor_operator(self, energies=None)

Apply scissor operator to blue or redshift the conduction band energies.

Parameters
energiesndarray, optional
Dimension: (N,M)

The energy dispersion for N bands at M k-points. Defaults to the energies stored in the current Bandstructure() object.

Returns
None

Notes

Warning

Please beware that this is a rather brutal (but usefull) operation. Make sure that the valence band maximum and conduction band minimum is fetched correctly. One way to check that this works is to plot the energies along a representative direction before and after the scissor operator have been executed.

calc_density_of_states(self, return_data=False, num_samples=None, auto_scale=False, transport=False, integral_method=None, interpol_method=None, interpol_type=None)

Calculate the density of states.

Parameters
return_databoolean, optional

If True, return the density of states data instead of storing it in the current Bandstructure() object. If False, set dos_energies, dos_partial and dos_total in the current Bandstructure() object.

num_samplesintegers, optional

Number of energy samples. Necessary if auto_scale is set. Otherwise the dos_num_samples in the parameter file is used.

auto_scaleboolean, optional

If True, auto scale the energy axis to cover the supplied band structure. Otherwise the dos_e_min and dos_e_max from the parameter file is used to set up the energy range unless transport is set which overrides this.

transportbool, optional

Set to True if the density of states calculated are to be used in transport calculations (i.e. to set up the scattering). This ensures that the energy range covers the requested range of chemical potential pluss / minus ‘transport_energycutband’ and is then padded with zeros for the remaining values down and up to the minimum and maximum values present in the energies entry of the Bandstructure() object. Using this option make it possible to calculate the density of states on a fine grid in the relevant transport region.

integral_methodstring, optional

The integration method used to calculate the DOS:

“trapz” trapeziodal integration, uses scipy.integrate.trapz()
“simps” simpson integration, uses scipy.integrate.simps()
“romb” romberb integration, uses scipy.integrate.romb()
“tetra” tetrahedron method, uses the linear tetrahedron method implemented in Spglib (up to version 1.7.4) by A. Togo.

If not supplied, set according to dos_integrating_method in the general configuration file.

Returns
dos_energiesndarray
Dimension: (N)

Array containing the density of states energies, where N is num_samples or set by the sampling determined in the general configuration file if auto_scale is set to False.

dos_totalndarray
Dimension: (N)

Array containing the total density of states per volume unit (units 1 / eV / AA ^ 3) at N sampled energy points, where N is determined from dos_energies.

dos_partialndarray
Dimension: (M, N)

Array containing the partial (for each band index M) density of states per volume unit (1 / eV / AA ^ 3) at N sampled energy points, where N is determined from dos_energies.

calc_effective_mass(self)

Calculates the effective mass tensor. Currently the effective mass tensor is not diagonalized.

Parameters
None
Returns
None

Notes

Upon complettion the effective mass is stored in the current Bandstructure() object.

Also, the velocities have to be precalculated before calling this routine.

calc_velocities(self, velocities=None, store=True)

Calculate the electron group velocities from the electron energy dispersion

Parameters
velocitiesndarray, optional
Dimension: (N, M)

Contains the group velocity along a specific direction for N bands and M k-points. If supplied the velocities of the velocities are calculated, or more specifically the inverse effective mass tensor (without prefactor)

storeboolean, optional

If True, store the calculated velocities in the active Bandstructure() object, else return the velocity array. Defaults to True.

Returns
velocitiesndarray, optional
Dimension: (N, 3, M)

The velocities of the velocity. Only returned if store is set to False.

Notes

Does not call any interpolation routines such that the velocities can be extracted directly from the electron energy dispersion by numerical differentiation. Uses the gradient() from NumPy.

Overwrites any entry of exising velocities in bs and sets gen_velocities to False if velocities is not supplied.

check_dos_energy_range(self, remin, remax)

Check that the energy grid of the density of states covers the range of the supplied paramters.

Parameters
reminfloat

The energy in eV for the lowest requested energy.

remaxfloat

The energy in eV for the highest requested energy.

Returns
withinboolean

True if the endpoints are within the energy range of the stored density of states, False ortherwise.

check_energyshifts(self)

Check the energy shift parameters in the parameter file for consistency.

Parameters
None
Returns
None
check_velocities(self, cutoff=None)

Check that there exists realistic values for the band velocities.

Parameters
cutofffloat, optional

Cutoff value for the test in eVAA units. Defaults to 0.01.

Returns
boolean

True if values are above cutoff, False otherwise.

fetch_dos_energies(self, e_min=None, e_max=None, num_samples=None, auto_scale=False)

Set up the energy array for density of states calculations.

Parameters
e_minfloat

The mininum energy in eV.

e_maxfloat

The maximum energy in eV.

num_samplesinteger

The N number of samples between e_min and e_max.

auto_scaleboolean

If True, set the energy scale from the supplied band structure, otherwise set the scale according to e_min and e_max.

Returns
ndarray
Dimension: (N)

The N energies in eV where density of states calculations are to be performed.

fetch_energies_along_line(self, kstart, kend, samplings=None, itype=None, itype_sub=None)

Calculate the energy dispersions along specific k - points.

Parameters
kstartndarray
Dimension: (3)

Direct k - point coordinate of the start point of line extraction.

kendndarray
Dimension: (3)

Direct k - point coordinate of the end point of line extraction.

samplingsint, optional

The number of N samples along the line. If not specified the variable is set to the the num_kpoints_along_line parameter in params.yml

itypestring, optional
Can be any of:
{“linearnd”, “interpn”, “rbf”, “wildmagic”, “skw”}

The type of interpolate method to use. If not set, the parameter dispersion_interpolate_method in the general configuration file sets this.

itype_substring, optional
Can be any of:
{“nearest”, “linear”}, when itype is set to interpn.
{“multiquadric”, “inverse_multiquadric”, “gaussian”, “linear”,
“cubic”, “quintic”, “thin_plate”}, when itype is set to rbf
and when the Scipy variety is used.
{“trilinear, tricubic_exact, tricubic_bspline, akima”},
when itype is set to wildmagic.

The subtype of the interpolation method.

Returns
energiesndarray
Dimension: (N, M)

The energy dispersions in eV along a line for N bands and M k - points, defined by the num_kpoints_along_line in the general configuration file.

kptsndarray
Dimension: (N, 3)

The k - point mesh for the line extraction in cartesian coordinates.

See also

interpolate

Notes

The routine interpolate() is used to perform the interpolation of the data along the line.

fetch_energies_at_kpoints(self, kpoint_mesh, itype=None, itype_sub=None)

Calculate the energy dispersions at specific k - points by interpolation.

Parameters
kpoint_meshndarray
Dimension: (N, 3)

The N k - point coordinates in cartesian coordinates.

itypestring, optional
Can be any of:
{“linearnd”, “interpn”, “rbf”, “wildmagic”, “skw”}

The type of interpolate method to use. If not set, the parameter dispersion_interpolate_method in the general configuration file sets this.

itype_substring, optional
Can be any of:
{“nearest”, “linear”}, when itype is set to interpn.
{“multiquadric”, “inverse_multiquadric”, “gaussian”, “linear”,
“cubic”, “quintic”, “thin_plate”}, when itype is set to rbf
and when the Scipy variety is used.
{“trilinear, tricubic_exact, tricubic_bspline, akima”},
when itype is set to wildmagic.

The subtype of the interpolation method.

Returns
energiesndarray
Dimension: (N, M)

The energies in eV for each of the N bands and M k - points.

See also

interpolate

Notes

The routine interpolate() is used to perform the interpolation.

fetch_min_max_energy(self)

Returns the min and max of the energy in the current Bandstructure() object.

Parameters
None
Returns
eminfloat

The minimum energy in eV located in the current Bandstructure() object.

emaxfloat

The maximum energy in eV located in the current Bandstructure() object.

fetch_velocities_along_line(self, kstart, kend, itype=None, itype_sub=None)

Calculate the velocity dispersion along a line in reciprocal space.

Parameters
kstartndarray, optional
Dimension: (3)

The start k - point in cartesian coordinates.

kendndarray
Dimension: (3)

The end k - point in cartesian coordinates.

itypestring, optional
Can be any of:
{“linearnd”, “interpn”, “rbf”, “wildmagic”, “skw”}

The type of interpolate method to use. If not set, the parameter dispersion_interpolate_method in the general configuration file sets this.

itype_substring, optional
Can be any of:
{“nearest”, “linear”}, when itype is set to interpn.
{“multiquadric”, “inverse_multiquadric”, “gaussian”, “linear”,
“cubic”, “quintic”, “thin_plate”}, when itype is set to rbf
and when the Scipy variety is used.
{“trilinear, tricubic_exact, tricubic_bspline, akima”},
when itype is set to wildmagic.

The subtype of the interpolation method.

Returns
velocitiesndarray
Dimension: (N, 3, M)

The group velocity in units of eVAA along a line for N bands and M k - points, defined by the num_kpoints_along_line in the general configuration file.

kptsndarray
Dimension: (M, 3)

The kpoints where the group velocity was calculated.

See also

interpolate

Notes

The interpolate() is used to perform the interpolation of the data along the line.

Warning

The factor \\hbar^{-1} is not returned and need to be included externally.

fetch_velocities_at_kpoints(self, kpoint_mesh, itype=None, itype_sub=None)

Calculate the velocity dispersions at specific k - points.

Parameters
kpoint_meshndarray
Dimension: (N, 3)

The k - point mesh for extraction in cartesian coordinates.

itypestring, optional
Can be any of:
{“linearnd”, “interpn”, “rbf”, “wildmagic”, “skw”}

The type of interpolate method to use. If not set, the parameter dispersion_interpolate_method in the general configuration file sets this.

itype_substring, optional
Can be any of:
{“nearest”, “linear”}, when itype is set to interpn.
{“multiquadric”, “inverse_multiquadric”, “gaussian”, “linear”,
“cubic”, “quintic”, “thin_plate”}, when itype is set to rbf
and when the Scipy variety is used.
{“trilinear, tricubic_exact, tricubic_bspline, akima”},
when itype is set to wildmagic.

The subtype of the interpolation method.

Returns
velocitiesndarray
Dimension: (N, 3, M)

The group velocity in units of eVAA at the N bands for M k - points.

See also

interpolate

Notes

The interpolate() is used to perform the interpolation.

Warning

The factor \\hbar^{-1} is not returned and need to be included externally.

gen_analytic_band(self, band)

Generate an analytical energy and velocity dispersion.

Parameters
bandint

The band index used to fetch band parameters in bandparams.yml.

Returns
energyndarray
Dimension: (M)

The energy dispersion in eV at M k-points.

velocityndarray
Dimension: (M,3)

The group velocity in eVAA of the energy dispersion (without the \\hbar^{-1} factor).

gen_bands(self)

Generates the set of energy and velocity dispersions.

Parameters
None
Returns
energiesndarray
Dimension: (N,M)

Contains the energy dispersions in eV for N bands at M k-points.

velocitiesndarray
Dimension: (N,M,3)

Contains the group velocities in eVAA of the energy dispersions (without the \\hbar^{-1} factor).

tb_bandndarray
Dimension: (N)

Contains boolean values of True for band indexes that are tight binding bands, False otherwise.

gen_dos(self)

Generates the density of states for the analytic models

Parameters
None
Returns
dosndarray
Dimension: (N, M)

Contains the density of states for N bands at M dos_num_samples from dos_e_min to dos_e_max. The number of samplings and their range is set it general configuration file. Units are per volume unit, 1/eV/AA^3.

dos_energiesndarray
Dimension: (M)

Contains the energy samplings of which dos was calculated in units of eV.

Notes

Currently only the parabolic models are implemented.

Todo

Also implement the non-parabolic alpha models

interpolate(self, iksampling=None, ienergies=True, ivelocities=False, itype=None, itype_sub=None, kpoint_mesh=None, store_inter=False, energies=None)

Interpolates the energies and velocity dispersion.

Parameters
iksamplingndarray, optional
Dimension: (3)

Contains the interpolated k - point mesh sampling values. Does not have to be set if line extraction performed (full grid is instead supplied in line_mesh).

ienergiesboolean

If True, interpolate the energies, if not, do not.

ivelocitiesboolean

If True, interpolate the velocities, if not, do not

itypestring, optional

Can be any of: {“linearnd”, “interpn”, “rbf”, “wildmagic”, “skw”} The type of interpolate method to use. If not set, the parameter dispersion_interpolate_method in the general configuration file sets this.

itype_substring, optional
Can be any of:
{“nearest”, “linear”}, when itype is set to interpn.
{“multiquadric”, “inverse_multiquadric”, “gaussian”, “linear”,
“cubic”, “quintic”, “thin_plate”}, when itype is set to rbf
and when the Scipy variety is used.
{“trilinear, tricubic_exact, tricubic_bspline, akima”},
when itype is set to wildmagic.

The subtype of the interpolation method.

kpoint_meshndarray, optional
Dimension: (M, 3)

Supplied k - point grid for extraction as an alternative to iksampling. Should be supplied in cartesian coordinates and should not extend the border of the original grid. Usefull for line extraction etc.

store_interboolean, optional

Store the new interpolated energies and velocities in the supplied object. Also modifies the current Lattice() object with the new grid etc. if that has been modified. Defaults to False.

energiesndarray, optional
Dimension: (N,J)

An input array containing the energies (or some other) quantity that can fly through with the same structure, e.g. the velocities along a certain direction for N bands and J k-points.

Returns
ien, ivelndarray, ndarray
Dimension: (N,M), (N,3,M)

The energy dispersions in eV, and group velocities in eVAA along indexes each axis of the reciprocal basis are returned for N bands and M new k - points if velocities is supplied, or if the gen_velocities tag is set to True in the current Bandstructure() object.

ien, False, False, Falsendarray, boolean, boolean, boolean
Dimension: (N,M)

The energy dispersions in eV for N bands and M new k-points if velocities is not supplied or gen_velocities is set to False.

See also

linearnd
interpn
rbf

Notes

Todo

DOCUMENT THE DIFFERENT INTERPOLATION SCHEMES, OR AT LEAST ADD PROPER REFERENCES.

locate_band_gap(self)

Calculate the band gap.

Parameters
None
Returns
float

The band gap in eV

locate_bandgap(self, energies=None, occ=None)

Locate the band gap.

Parameters
energiesndarray, optional
Dimension: (N,M)

The energy dispersion in eV for N bands at M k-points. Defaults to the energies stored in the current Bandstructure() object.

occndarray, optional
Dimension: (N,M)

The occupancy for N bands at M k-points. Defaults to the occ stored in the current Bandstructure() object.

Returns
vbm_energyfloat

The valence band maximum in eV.

bandgapfloat

The band gap in eV.

locate_cbm(self, energies, occ)

Locate the conduction band minimum.

Parameters
energiesndarray
Dimension: (N,M)

The energy dispersion in eV for N bands at M k-points.

occndarray
Dimension: (N,M)

The occupancy for N bands at M k-points.

Returns
energyfloat

The conduction band minimum in eV.

bandint

The band index of the conduction band minimum.

kpointint

The kpoint index of the conduction band minimum.

locate_vbm(self, energies, occ)

Locate the valence band maximum.

Parameters
energiesndarray
Dimension: (N,M)

The energy dispersion in eV for N bands at M k-points.

occndarray
Dimension: (N,M)

The occupancy for N bands at M k-points.

Returns
energyfloat

The valence band maximum in eV

bandint

The band index of the valence band maximum.

kpointint

The kpoint index of the valence band maximum.

bandstructure.gaussian(energy, energy_ref, smearing)

Returns the value of a Gaussian function.

Parameters
energyfloat

The energy in eV.

energy_reffloat

The reference energy in eV.

smearingfloat

The smearing factor in eV.

Returns
float

The value in eV.

bandstructure.non_parabolic_energy_1(k, effmass, a, scale, e0=0.0, kshift=None)

Calculates a energy dispersion, both parabolic and non-parabolic.

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point coordinates (cartesian) where the dispersion is to be evaluated.

effmassndarray
Dimension: (3)

Contains the effective mass along the three k-point directions. Only the diagonal components of the effective mass tensor is used. In units of the free electron mass.

andarray
Dimension: (3)

The non parabolic coefficients in front of each k^2 direction which translates to a^2k^4 in the one dimensional case.

scalefloat

The scale factor in front of the non-parabolic correction

e0float, optional

Shift of the energy scale in eV.

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
ndarray
Dimension: (N)

Contains the energy dispersion in eV at each N k-points.

Notes

This routines calculates the energy dispersion according to

System Message: WARNING/2 (E=\\frac{\\hbar^2 k^2}{2m}+ak^4. )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} ! Missing { inserted. <inserted text> { l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} ! Missing } inserted. <inserted text> } l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} ! Missing { inserted. <inserted text> { l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 444 bytes). Transcript written on math.log.

Setting a to zero yields a parabolic dispersion.

bandstructure.non_parabolic_energy_2(k, effmass, a)

Calculates a non-parabolic energy dispersion.

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point cartesian coordinates where the dispersion is to be evaluated.

effmassfloat

The effective mass in units of the free electron mass.

afloat

The \\alpha factor.

Returns
ndarray
Dimension: (N)

Contains the energy in eV at each N k-points for each direction defined by the direction of the k-point unit axis.

Notes

This routine calculates the energy dispersion according to

System Message: WARNING/2 (E(1+\\alpha E)=\\frac{\\hbar^2k^2}{2m}, )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...pha E)=\\frac{\\hbar^2k^2}{2m},\end{split} ! Missing { inserted. <inserted text> { l.14 ...pha E)=\\frac{\\hbar^2k^2}{2m},\end{split} ! Missing } inserted. <inserted text> } l.14 ...pha E)=\\frac{\\hbar^2k^2}{2m},\end{split} ! Missing { inserted. <inserted text> { l.14 ...pha E)=\\frac{\\hbar^2k^2}{2m},\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 456 bytes). Transcript written on math.log.

where \\alpha is a parameter that adjust the non-parabolicity

Note that if m is negative (valence bands), the square root is undefined for k^2>=m/(2\\alpha \\hbar), which is a rather limited k-space volume. Consider (either m or \\alpha negative).

m=m_e, \\alpha=1.0 (E_g=1.0 \\mathrm{eV})
\\rightarrow |\\vec{k}| \\geq 0.26 \\mathrm{AA^{-1}}

m=0.1m_e, \\alpha=1.0 \\rightarrow |\\vec{k}|
\\geq 0.081 \\mathrm{AA^{-1}}

m=10m_e, \\alpha=1.0 \\rightarrow |\\vec{k}|
\\geq 0.81 \\mathrm{AA^{-1}}

m=m_e, \\alpha=10.0 (E_g=0.1 \\mathrm{eV})
\\rightarrow |\\vec{k}| \\geq 0.81 \\mathrm{AA^{-1}}

m=m_e, \\alpha=0.1 (E_g=10 \\mathrm{eV})
\\rightarrow |\\vec{k}| \\geq 0.081 \\mathrm{AA^{-1}}

For a simple cell of 10 \\mathrm{AA}, the BZ border is typically at 0.31 \\mathrm{AA^{-1}} and for a smaller cell, e.g. 3.1 \\mathrm{AA}, the BZ border is here at 1.0 \\mathrm{AA^{-1}}.

Warning

In order to be able to use all values of a, we return a linear E(\\vec{k}) in the undefined region (the last defined value of E(\\vec{k}) is used). This is highly unphysical, so we print a warning to notice the user

bandstructure.non_parabolic_energy_3(k, effmass, a, scale, e0=0.0, kshift=None)

Calculates a k^2 + k^6 energy dispersion.

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point coordinates (cartesian) where the dispersion is to be evaluated.

effmassndarray
Dimension: (3)

Contains the effective mass along the three k-point directions. Only the diagonal components of the effective mass tensor is used. In units of the free electron mass.

andarray
Dimension: (3)

The non parabolic coefficients in front of each k^2 direction which translates to a^4k^8 in the one dimensional case.

scalefloat

The scale factor in front of the non-parabolic correction

e0float, optional

Shift of the energy scale in eV.

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
ndarray
Dimension: (N)

Contains the energy dispersion in eV at each N k-points.

Notes

This routines calculates the energy dispersion according to

System Message: WARNING/2 (E=\\frac{\\hbar^2 k^2}{2m}+a^3k^6. )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 460 bytes). Transcript written on math.log.

Setting a to zero yields a parabolic dispersion.

bandstructure.non_parabolic_energy_4(k, effmass, a, scale, e0=0.0, kshift=None)

Calculates a k^2 + k^8 energy dispersion.

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point coordinates (cartesian) where the dispersion is to be evaluated.

effmassndarray
Dimension: (3)

Contains the effective mass along the three k-point directions. Only the diagonal components of the effective mass tensor is used. In units of the free electron mass.

andarray
Dimension: (3)

The non parabolic coefficients in front of each k^2 direction which translates to a^4k^8 in the one dimensional case.

scalefloat

The scale factor in front of the non-parabolic correction

e0float, optional

Shift of the energy scale in eV.

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
ndarray
Dimension: (N)

Contains the energy dispersion in eV at each N k-points.

Notes

This routines calculates the energy dispersion according to

System Message: WARNING/2 (E=\\frac{\\hbar^2 k^2}{2m}+a^4k^8. )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 460 bytes). Transcript written on math.log.

Setting a to zero yields a parabolic dispersion.

bandstructure.non_parabolic_energy_5(k, _, a, scale, e0=0.0, kshift=None)

Calculates a linear energy dispersion.

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point coordinates (cartesian) where the dispersion is to be evaluated.

_A dummy.
andarray
Dimension: (3)

The coefficients in front of each k^2 direction which translates to \\sqrt(a)k in the one dimensional case.

scalefloat

The scale factor in front of the linear expression.

e0float, optional

Shift of the energy scale in eV.

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
ndarray
Dimension: (N)

Contains the energy dispersion in eV at each N k-points.

Notes

This routines calculates the energy dispersion according to (in one dimension)

E=a\\sqrt(k^2).

Multiplied by the scale factor in front of this.

bandstructure.non_parabolic_velocity_1(k, effmass, a, scale, kshift=None)

Calculates the group velocity for the energy dispersion generated in non_parabolic_energy_1().

For both parabolic and non-parabolic bands.

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point in cartesian coordinates where the dispersion is to be evaluated.

effmassndarray
Dimension: (3)

Contains the effective mass along the three k-point directions. Only the diagonal components of the effective mass tensor is used. In units of the free electron mass.

andarray
Dimension: (3)

The non parabolic coefficients in front of each k^2 direction which translates to a^2k^4 in the one dimensional case.

scalefloat

The scale factor in front of the non-parabolic correction

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
vx, vy, vzndarray, ndarray, ndarray
Dimension: (N),(N),(N)

Contains the group velocity at each N k-points for each direction defined by the direction of the k-point unit axis. Units of eVAA.

Notes

This routines calculates the group velocity according to

System Message: WARNING/2 (v=\\frac{\\partial E}{\\partial \\vec{k}}, )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 388 bytes). Transcript written on math.log.

where

System Message: WARNING/2 (E=\\frac{\\hbar^2 k^2}{2m}+ak^4. )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} ! Missing { inserted. <inserted text> { l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} ! Missing } inserted. <inserted text> } l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} ! Missing { inserted. <inserted text> { l.14 ...=\\frac{\\hbar^2 k^2}{2m}+ak^4.\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 444 bytes). Transcript written on math.log.

Setting a to zero yields a parabolic dispersion and thus its group velocity.

Warning

The factor \\hbar^{-1} is not returned and need to be included externally.

bandstructure.non_parabolic_velocity_2(k, effmass, a)

Calculates the group velocity for the energy dispersion generated in non_parabolic_energy_2().

For both parabolic and non-parabolic.

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point in cartesian coordinates where the dispersion is to be evaluated.

effmassfloat

The effective mass in units of the free electron mass.

andarray
Dimension: (3)

The \\alpha factor.

Returns
vx, vy, vzndarray, ndarray, ndarray
Dimension: (N), (N), (N)

The group velocity along each axis in the reciprocal unit cell. In units of eVAA.

Notes

Consult comments in non_parabolic_energy_1()

Warning

The factor \\hbar^{-1} is not returned and need to be included externally.

bandstructure.non_parabolic_velocity_3(k, effmass, a, scale, kshift=None)

Calculates the group velocity for the energy dispersion generated in non_parabolic_energy_3().

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point in cartesian coordinates where the dispersion is to be evaluated.

effmassndarray
Dimension: (3)

Contains the effective mass along the three k-point directions. Only the diagonal components of the effective mass tensor is used. In units of the free electron mass.

andarray
Dimension: (3)

The non parabolic coefficients in front of each k^2 direction which translates to a^4k^8 in the one dimensional case.

scalefloat

The scale factor in front of the non-parabolic correction

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
vx, vy, vzndarray, ndarray, ndarray
Dimension: (N),(N),(N)

Contains the group velocity at each N k-points for each direction defined by the direction of the k-point unit axis. Units of eVAA.

Notes

This routines calculates the group velocity according to

System Message: WARNING/2 (v=\\frac{\\partial E}{\\partial \\vec{k}}, )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 388 bytes). Transcript written on math.log.

where

System Message: WARNING/2 (E=\\frac{\\hbar^2 k^2}{2m}+a^3k^6. )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^3k^6.\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 460 bytes). Transcript written on math.log.

Setting a to zero yields a parabolic dispersion and thus its group velocity.

Warning

The factor \\hbar^{-1} is not returned and need to be included externally.

bandstructure.non_parabolic_velocity_4(k, effmass, a, scale, kshift=None)

Calculates the group velocity for the energy dispersion generated in non_parabolic_energy_4().

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point in cartesian coordinates where the dispersion is to be evaluated.

effmassndarray
Dimension: (3)

Contains the effective mass along the three k-point directions. Only the diagonal components of the effective mass tensor is used. In units of the free electron mass.

andarray
Dimension: (3)

The non parabolic coefficients in front of each k^2 direction which translates to a^4k^8 in the one dimensional case.

scalefloat

The scale factor in front of the non-parabolic correction

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
vx, vy, vzndarray, ndarray, ndarray
Dimension: (N),(N),(N)

Contains the group velocity at each N k-points for each direction defined by the direction of the k-point unit axis. Units of eVAA.

Notes

This routines calculates the group velocity according to

System Message: WARNING/2 (v=\\frac{\\partial E}{\\partial \\vec{k}}, )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 388 bytes). Transcript written on math.log.

where

System Message: WARNING/2 (E=\\frac{\\hbar^2 k^2}{2m}+a^4k^8. )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} ! Missing } inserted. <inserted text> } l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} ! Missing { inserted. <inserted text> { l.14 ...\frac{\\hbar^2 k^2}{2m}+a^4k^8.\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 460 bytes). Transcript written on math.log.

Setting a to zero yields a parabolic dispersion and thus its group velocity.

Warning

The factor \\hbar^{-1} is not returned and need to be included externally.

bandstructure.non_parabolic_velocity_5(k, _, a, scale, kshift=None)

Calculates the group velocity for the energy dispersion generated in non_parabolic_energy_5().

Parameters
kndarray
Dimension: (N,3)

Contains the N k-point in cartesian coordinates where the dispersion is to be evaluated.

_A dummy.
andarray
Dimension: (3)

The coefficients in front of each k^2 direction which translates to \\sqrt(a)k in the one dimensional case.

scalefloat

The scale factor in front of the linear expression.

kshiftndarray, optional
Dimension: (3)

The shift along the respective k-point vectors in cartesian coordinates.

Returns
vx, vy, vzndarray, ndarray, ndarray
Dimension: (N),(N),(N)

Contains the group velocity at each N k-points for each direction defined by the direction of the k-point unit axis. Units of eVAA.

Notes

This routines calculates the group velocity according to

System Message: WARNING/2 (v=\\frac{\\partial E}{\\partial \\vec{k}}, )

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2017-04-15> Babel <3.15> and hyphenation patterns for 84 language(s) loaded. (/home/efl/opt/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/home/efl/opt/texlive/texmf-dist/tex/latex/base/size12.clo)) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/inputenc.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/base/utf8.def (/home/efl/opt/texlive/texmf-dist/tex/latex/base/t1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/ot1enc.dfu) (/home/efl/opt/texlive/texmf-dist/tex/latex/base/omsenc.dfu))) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/home/efl/opt/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/home/efl/opt/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/home/efl/opt/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing } inserted. <inserted text> } l.14 ...partial E}{\\partial \\vec{k}},\end{split} ! Missing { inserted. <inserted text> { l.14 ...partial E}{\\partial \\vec{k}},\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 388 bytes). Transcript written on math.log.

where

E=a\\sqrt(k^2).

Multiplied by the scale factor in front of this.

Warning

The factor \\hbar^{-1} is not returned and need to be included externally.

bandstructure.parabolic_effective_mass(effmass_t)

Checks if the supplied effective mass array is parabolic.

Parameters
effmass_tndarray

The effective mass tensor in units of the free electron mass.

Returns
boolean

True if parabolic tensors, False otherwise.