Source code for openbandparams.iii_v.zinc_blende.quaternary

#
#   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.quaternary import (Quaternary1, Quaternary2,
    Quaternary3)
from openbandparams.iii_v.zinc_blende.binary import (AlN, AlP, AlAs, AlSb,
    GaN, GaP, GaAs, GaSb, InN, InP, InAs, InSb)
from openbandparams.iii_v.zinc_blende.ternary import (AlNP, AlNAs, AlPAs,
    AlPSb, AlAsSb, GaNP, GaNAs, GaPAs, GaPSb, GaAsSb, InNP, InNAs, InPAs,
    InPSb, InAsSb, AlGaN, AlInN, GaInN, AlGaP, AlInP, GaInP, AlGaAs, AlInAs,
    GaInAs, AlGaSb, AlInSb, GaInSb)


# Type 1: AB_{x}C_{y}D_{1-x-y}
# binaryies = (AB, AC, AD)
# ternaries = (ABC, ABD ,ACD)

[docs]class AlNPAs(Quaternary1): name = 'AlNPAs' elements = ('Al', 'N', 'P', 'As') binaries = (AlN, AlP, AlAs) ternaries = (AlNP, AlNAs, AlPAs) # class AlNPSb(Quaternary1): # name = 'AlNPSb' # elements = ('Al', 'N', 'P', 'Sb') # binaries = (AlN, AlP, AlSb) # ternaries = (AlNP, AlNSb, AlPSb) # class AlNAsSb(Quaternary1): # name = 'AlNAsSb' # elements = ('Al', 'N', 'As', 'Sb') # binaries = (AlN, AlAs, AlSb) # ternaries = (AlNAs, AlNSb, AlAsSb)
[docs]class AlPAsSb(Quaternary1): name = 'AlPAsSb' elements = ('Al', 'P', 'As', 'Sb') binaries = (AlP, AlAs, AlSb) ternaries = (AlPAs, AlPSb, AlAsSb)
[docs]class GaNPAs(Quaternary1): name = 'GaNPAs' elements = ('Ga', 'N', 'P', 'As') binaries = (GaN, GaP, GaAs) ternaries = (GaNP, GaNAs, GaPAs) # class GaNPSb(Quaternary1): # name = 'GaNPSb' # elements = ('Ga', 'N', 'P', 'Sb') # binaries = (GaN, GaP, GaSb) # ternaries = (GaNP, GaNSb, GaPSb) # class GaNAsSb(Quaternary1): # name = 'GaNAsSb' # elements = ('Ga', 'N', 'As', 'Sb') # binaries = (GaN, GaAs, GaSb) # ternaries = (GaNAs, GaNSb, GaAsSb)
[docs]class GaPAsSb(Quaternary1): name = 'GaPAsSb' elements = ('Ga', 'P', 'As', 'Sb') binaries = (GaP, GaAs, GaSb) ternaries = (GaPAs, GaPSb, GaAsSb)
[docs]class InNPAs(Quaternary1): name = 'InNPAs' elements = ('In', 'N', 'P', 'As') binaries = (InN, InP, InAs) ternaries = (InNP, InNAs, InPAs) # class InNPSb(Quaternary1): # name = 'InNPSb' # elements = ('In', 'N', 'P', 'Sb') # binaries = (InN, InP, InSb) # ternaries = (InNP, InNSb, InPSb) # class InNAsSb(Quaternary1): # name = 'InNAsSb' # elements = ('In', 'N', 'As', 'Sb') # binaries = (InN, InAs, InSb) # ternaries = (InNAs, InNSb, InAsSb)
[docs]class InPAsSb(Quaternary1): name = 'InPAsSb' elements = ('In', 'P', 'As', 'Sb') binaries = (InP, InAs, InSb) ternaries = (InPAs, InPSb, InAsSb) # Type 2: A_{x}B_{y}C_{1-x-y}D # binaries = (AD, BD, CD) # ternaries = (ABD, ACD, BCD)
[docs]class AlGaInN(Quaternary2): name = 'AlGaInN' elements = ('Al', 'Ga', 'In', 'N') binaries = (AlN, GaN, InN) ternaries = (AlGaN, AlInN, GaInN)
[docs]class AlGaInP(Quaternary2): name = 'AlGaInP' elements = ('Al', 'Ga', 'In', 'P') binaries = (AlP, GaP, InP) ternaries = (AlGaP, AlInP, GaInP)
[docs]class AlGaInAs(Quaternary2): name = 'AlGaInAs' elements = ('Al', 'Ga', 'In', 'As') binaries = (AlAs, GaAs, InAs) ternaries = (AlGaAs, AlInAs, GaInAs)
[docs]class AlGaInSb(Quaternary2): name = 'AlGaInSb' elements = ('Al', 'Ga', 'In', 'Sb') binaries = (AlSb, GaSb, InSb) ternaries = (AlGaSb, AlInSb, GaInSb) # Type 3: A_{x}B_{1-x}C_{y}D_{1-y} # binaries = (AC, AD, BC, BD) # ternaries = (ABC, ABD, ACD, BCD)
[docs]class AlGaNP(Quaternary3): name = 'AlGaNP' elements = ('Al', 'Ga', 'N', 'P') binaries = (AlN, AlP, GaN, GaP) ternaries = (AlGaN, AlGaP, AlNP, GaNP)
[docs]class AlGaNAs(Quaternary3): name = 'AlGaNAs' elements = ('Al', 'Ga', 'N', 'As') binaries = (AlN, AlAs, GaN, GaAs) ternaries = (AlGaN, AlGaAs, AlNAs, GaNAs) # class AlGaNSb(Quaternary3): # name = 'AlGaNSb' # elements = ('Al', 'Ga', 'N', 'Sb') # binaries = (AlN, AlSb, GaN, GaSb) # ternaries = (AlGaN, AlGaSb, AlNSb, GaNSb)
[docs]class AlGaPAs(Quaternary3): name = 'AlGaPAs' elements = ('Al', 'Ga', 'P', 'As') binaries = (AlP, AlAs, GaP, GaAs) ternaries = (AlGaP, AlGaAs, AlPAs, GaPAs)
[docs]class AlGaPSb(Quaternary3): name = 'AlGaPSb' elements = ('Al', 'Ga', 'P', 'Sb') binaries = (AlP, AlSb, GaP, GaSb) ternaries = (AlGaP, AlGaSb, AlPSb, GaPSb)
[docs]class AlGaAsSb(Quaternary3): name = 'AlGaAsSb' elements = ('Al', 'Ga', 'As', 'Sb') binaries = (AlAs, AlSb, GaAs, GaSb) ternaries = (AlGaAs, AlGaSb, AlAsSb, GaAsSb)
[docs]class AlInNP(Quaternary3): name = 'AlInNP' elements = ('Al', 'In', 'N', 'P') binaries = (AlN, AlP, InN, InP) ternaries = (AlInN, AlInP, AlNP, InNP)
[docs]class AlInNAs(Quaternary3): name = 'AlInNAs' elements = ('Al', 'In', 'N', 'As') binaries = (AlN, AlAs, InN, InAs) ternaries = (AlInN, AlInAs, AlNAs, InNAs) # class AlInNSb(Quaternary3): # name = 'AlInNSb' # elements = ('Al', 'In', 'N', 'Sb') # binaries = (AlN, AlSb, InN, InSb) # ternaries = (AlInN, AlInSb, AlNSb, InNSb)
[docs]class AlInPAs(Quaternary3): name = 'AlInPAs' elements = ('Al', 'In', 'P', 'As') binaries = (AlP, AlAs, InP, InAs) ternaries = (AlInP, AlInAs, AlPAs, InPAs)
[docs]class AlInPSb(Quaternary3): name = 'AlInPSb' elements = ('Al', 'In', 'P', 'Sb') binaries = (AlP, AlSb, InP, InSb) ternaries = (AlInP, AlInSb, AlPSb, InPSb)
[docs]class AlInAsSb(Quaternary3): name = 'AlInAsSb' elements = ('Al', 'In', 'As', 'Sb') binaries = (AlAs, AlSb, InAs, InSb) ternaries = (AlInAs, AlInSb, AlAsSb, InAsSb)
[docs]class GaInNP(Quaternary3): name = 'GaInNP' elements = ('Ga', 'In', 'N', 'P') binaries = (GaN, GaP, InN, InP) ternaries = (GaInN, GaInP, GaNP, InNP)
[docs]class GaInNAs(Quaternary3): name = 'GaInNAs' elements = ('Ga', 'In', 'N', 'As') binaries = (GaN, GaAs, InN, InAs) ternaries = (GaInN, GaInAs, GaNAs, InNAs) # class GaInNSb(Quaternary3): # name = 'GaInNSb' # elements = ('Ga', 'In', 'N', 'Sb') # binaries = (GaN, GaSb, InN, InSb) # ternaries = (GaInN, GaInSb, GaNSb, InNSb)
[docs]class GaInPAs(Quaternary3): name = 'GaInPAs' elements = ('Ga', 'In', 'P', 'As') binaries = (GaP, GaAs, InP, InAs) ternaries = (GaInP, GaInAs, GaPAs, InPAs)
[docs]class GaInPSb(Quaternary3): name = 'GaInPSb' elements = ('Ga', 'In', 'P', 'Sb') binaries = (GaP, GaSb, InP, InSb) ternaries = (GaInP, GaInSb, GaPSb, InPSb)
[docs]class GaInAsSb(Quaternary3): name = 'GaInAsSb' elements = ('Ga', 'In', 'As', 'Sb') binaries = (GaAs, GaSb, InAs, InSb) ternaries = (GaInAs, GaInSb, GaAsSb, InAsSb)
quaternaries = [ # Type 1: AB_{x}C_{y}D_{1-x-y} AlNPAs, # AlNPSb, AlNAsSb, AlPAsSb, GaNPAs, # GaNPSb, GaNAsSb, GaPAsSb, InNPAs, # InNPSb, InNAsSb, InPAsSb, # Type 2: B_{x}C_{y}D_{1-x-y}A AlGaInN, AlGaInP, AlGaInAs, AlGaInSb, # Type 3: A_{x}B_{1-x}C_{y}D_{1-y} AlGaNP, AlInNP, GaInNP, AlGaNAs, AlInNAs, GaInNAs, AlGaPAs, AlInPAs, GaInPAs, AlGaPSb, AlInPSb, GaInPSb, AlGaAsSb, AlInAsSb, GaInAsSb] __all__ = ['quaternaries'] __all__ += [quaternary.name for quaternary in quaternaries]