#
# Copyright (c) 2013-2014, Scott J Maddox
#
# This file is part of openbandparams.
#
# openbandparams is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# openbandparams is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with openbandparams. If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from openbandparams.iii_v.ternary import Ternary1, Ternary2
from openbandparams.iii_v.zinc_blende.binary import (AlN, GaN, InN, AlP, GaP,
InP, AlAs, GaAs, InAs, AlSb, GaSb, InSb)
# Each ternary below is dynamically created as a new class or type.
# An instance of the class must be created, and the alloy fraction passed in,
# before it can be used. See `openbandparams.examples.ternaries` for examples.
# Nitrides
[docs]class AlGaN(Ternary1):
name = 'AlGaN'
elements = ('Al', 'Ga', 'N')
binaries = (AlN, GaN)
_bowing_Eg_Gamma = 0.76 # eV W.W. Lin and Y.K. Kuo, in Proc. SPIE (2002), pp. 236-247.
_bowing_Eg_X = 0.3 # eV W.W. Lin and Y.K. Kuo, in Proc. SPIE (2002), pp. 236-247.
[docs]class AlInN(Ternary1):
name = 'AlInN'
elements = ('Al', 'In', 'N')
binaries = (AlN, InN)
_bowing_Eg_Gamma = 2.73 # eV W.W. Lin and Y.K. Kuo, in Proc. SPIE (2002), pp. 236-247.
_bowing_Eg_X = 3.62 # eV W.W. Lin and Y.K. Kuo, in Proc. SPIE (2002), pp. 236-247.
[docs]class GaInN(Ternary1):
name = 'GaInN'
elements = ('Ga', 'In', 'N')
binaries = (GaN, InN)
_bowing_Eg_Gamma = 1.38 # eV W.W. Lin and Y.K. Kuo, in Proc. SPIE (2002), pp. 236-247.
_bowing_Eg_X = 1.67 # eV W.W. Lin and Y.K. Kuo, in Proc. SPIE (2002), pp. 236-247.
# Phosphides
[docs]class AlGaP(Ternary1):
name = 'AlGaP'
elements = ('Al', 'Ga', 'P')
binaries = (AlP, GaP)
_bowing_Eg_X = 0.13 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class AlInP(Ternary1):
name = 'AlInP'
elements = ('Al', 'In', 'P')
binaries = (AlP, InP)
_bowing_Eg_Gamma = -0.48 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.38 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = -0.19 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_e_Gamma = 0.22 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class GaInP(Ternary1):
name = 'GaInP'
elements = ('Ga', 'In', 'P')
binaries = (GaP, InP)
_bowing_Eg_Gamma = 0.65 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.2 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 1.03 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_e_Gamma = 0.051 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_F = 0.78 # I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
# Arsenides
[docs]class AlGaAs(Ternary1):
name = 'AlGaAs'
elements = ('Al', 'Ga', 'As')
binaries = (AlAs, GaAs)
_bowing_Eg_X = 0.055 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
@classmethod
def _bowing_Eg_Gamma(cls, x):
return 1.31 * x - 0.127 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class AlInAs(Ternary1):
name = 'AlInAs'
elements = ('Al', 'In', 'As')
binaries = (AlAs, InAs)
_bowing_Eg_Gamma = 0.7 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.15 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_e_Gamma = 0.049 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Ep = -4.81 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_F = -4.44 # I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_VBO = -0.64 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_a_c = -1.4 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class GaInAs(Ternary1):
name = 'GaInAs'
elements = ('Ga', 'In', 'As')
binaries = (GaAs, InAs)
_bowing_Eg_Gamma = 0.477 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 1.4 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 0.33 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.15 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_e_Gamma = 0.0091 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_HH_DOS = -0.145 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_LH_DOS = 0.0202 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Ep = -1.48 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_F = 1.77 # I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_VBO = -0.38 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_a_c = 2.61 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
# Antimonides
[docs]class AlGaSb(Ternary1):
name = 'AlGaSb'
elements = ('Al', 'Ga', 'Sb')
binaries = (AlSb, GaSb)
_bowing_Delta_SO = 0.3 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
@classmethod
def _bowing_Eg_Gamma(cls, x):
return 1.22 * x - 0.044 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class AlInSb(Ternary1):
name = 'AlInSb'
elements = ('Al', 'In', 'Sb')
binaries = (AlSb, InSb)
_bowing_Eg_Gamma = 0.43 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.25 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class GaInSb(Ternary1):
name = 'GaInSb'
elements = ('Ga', 'In', 'Sb')
binaries = (GaSb, InSb)
_bowing_Eg_Gamma = 0.415 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.33 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 0.4 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.1 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_e_Gamma = 0.0092 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_LH_DOS = 0.011 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_F = -6.84 # I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
# Nitride Phosphides
[docs]class AlNP(Ternary2):
name = 'AlNP'
elements = ('Al', 'N', 'P')
binaries = (AlN, AlP)
[docs]class GaNP(Ternary2):
name = 'GaNP'
elements = ('Ga', 'N', 'P')
binaries = (GaN, GaP)
_bowing_Eg_Gamma = 3.9 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 10 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class InNP(Ternary2):
name = 'InNP'
elements = ('In', 'N', 'P')
binaries = (InN, InP)
_bowing_Eg_Gamma = 15 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
# Nitride Arsenides
[docs]class AlNAs(Ternary2):
name = 'AlNAs'
elements = ('Al', 'N', 'As')
binaries = (AlN, AlAs)
[docs]class GaNAs(Ternary2):
name = 'GaNAs'
elements = ('Ga', 'N', 'As')
binaries = (GaN, GaAs)
@classmethod
def _bowing_Eg_Gamma(cls, x):
return 120.4 - 100 * x # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class InNAs(Ternary2):
name = 'InNAs'
elements = ('In', 'N', 'As')
binaries = (InN, InAs)
_bowing_Eg_Gamma = 4.22 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
# Phosphide Arsenides
[docs]class AlPAs(Ternary2):
name = 'AlPAs'
elements = ('Al', 'P', 'As')
binaries = (AlP, AlAs)
_bowing_Eg_Gamma = 0.22 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.22 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 0.22 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class GaPAs(Ternary2):
name = 'GaPAs'
elements = ('Ga', 'P', 'As')
binaries = (GaP, GaAs)
_bowing_Eg_Gamma = 0.19 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.24 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 0.16 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class InPAs(Ternary2):
name = 'InPAs'
elements = ('In', 'P', 'As')
binaries = (InP, InAs)
_bowing_Eg_Gamma = 0.1 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.27 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 0.27 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.16 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
# Phosphide Antimonides
[docs]class AlPSb(Ternary2):
name = 'AlPSb'
elements = ('Al', 'P', 'Sb')
binaries = (AlP, AlSb)
_bowing_Eg_Gamma = 2.7 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 2.7 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 2.7 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class GaPSb(Ternary2):
name = 'GaPSb'
elements = ('Ga', 'P', 'Sb')
binaries = (GaP, GaSb)
_bowing_Eg_Gamma = 2.7 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 2.7 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 2.7 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class InPSb(Ternary2):
name = 'InPSb'
elements = ('In', 'P', 'Sb')
binaries = (InP, InSb)
_bowing_Eg_Gamma = 1.9 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 1.9 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 1.9 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.75 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
# Arsenide Antimonides
[docs]class AlAsSb(Ternary2):
name = 'AlAsSb'
elements = ('Al', 'As', 'Sb')
binaries = (AlAs, AlSb)
_bowing_Eg_Gamma = 0.8 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.28 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 0.28 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.15 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
#_bowing_VBO = -1.71 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class GaAsSb(Ternary2):
name = 'GaAsSb'
elements = ('Ga', 'As', 'Sb')
binaries = (GaAs, GaSb)
_bowing_Eg_Gamma = 1.43 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 1.2 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 1.2 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 0.6 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_VBO = -1.06 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
[docs]class InAsSb(Ternary2):
name = 'InAsSb'
elements = ('In', 'As', 'Sb')
binaries = (InAs, InSb)
_bowing_Eg_Gamma = 0.67 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_X = 0.6 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Eg_L = 0.6 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_Delta_SO = 1.2 # eV I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_meff_e_Gamma = 0.035 # m_e I. Vurgaftman, et al., J. Appl. Phys. 89, 5815 (2001).
_bowing_VBO = -0.6 * 0.67 # eV P.C. Klipstein, et al., J. Elec. Materi. 43, 2984 (2014).
ternaries = [AlGaN, AlInN, GaInN,
AlGaP, AlInP, GaInP,
AlGaAs, AlInAs, GaInAs,
AlGaSb, AlInSb, GaInSb,
AlNP, GaNP, InNP,
AlNAs, GaNAs, InNAs,
AlPAs, GaPAs, InPAs,
AlPSb, GaPSb, InPSb,
AlAsSb, GaAsSb, InAsSb]
__all__ = ['ternaries']
__all__ += [ternary.name for ternary in ternaries]