PLaSK library
Loading...
Searching...
No Matches
plask::Material Struct Referenceabstract

Represent material, its physical properties. More...

#include <plask/material/material.hpp>

Inheritance diagram for plask::Material:
[legend]

Classes

struct  Parameters
 Parameters of material, information about: name, label, composition and dopant. More...
 
struct  StringBuilder
 Helper class for easy constructing string representations of complex materials. More...
 

Public Types

enum  Kind : unsigned {
  GENERIC = (1<<0) , EMPTY = (1<<1) , SEMICONDUCTOR = (1<<2) , OXIDE = (1<<3) ,
  DIELECTRIC = (1<<4) , METAL = (1<<5) , LIQUID_CRYSTAL = (1<<6) , MIXED = (1<<7)
}
 Material kind. More...
 
enum  ConductivityType {
  CONDUCTIVITY_N , CONDUCTIVITY_I , CONDUCTIVITY_P , CONDUCTIVITY_OTHER ,
  CONDUCTIVITY_UNDETERMINED
}
 Material conductivity type. More...
 
typedef std::map< std::string, doubleComposition
 Type for material composition.
 

Public Member Functions

virtual OmpLockGuard lock () const
 Create OpenMP lock guard.
 
virtual ~Material ()
 Do nothing.
 
virtual std::string name () const =0
 Get short (without composition and doping amounts) name of material.
 
std::string dopant () const
 Get dopant material name (part of name after ':', possibly empty).
 
std::string nameWithoutDopant () const
 Get material name without dopant (without ':' and part of name after it).
 
virtual std::string str () const
 Get full (with composition and doping amounts) name of material.
 
bool isAlloy () const
 Check if this material is alloy.
 
virtual Composition composition () const
 If this material is alloy return its composition.
 
virtual double doping () const
 Doping concentration.
 
virtual Kind kind () const =0
 
virtual double lattC (double T, char x) const
 Get lattice constant (Å).
 
virtual double Eg (double T, double e=0., char point=' *') const
 Get energy gap Eg (eV)
 
virtual double CB (double T, double e=0., char point=' *') const
 Get conduction band level CB (eV).
 
virtual double VB (double T, double e=0., char point=' *', char hole='H') const
 Get valence band level VB(eV).
 
virtual double Dso (double T, double e=0.) const
 Get split-off energy Dso (eV).
 
virtual double Mso (double T, double e=0.) const
 Get split-off mass Mso [ $m_0$].
 
virtual Tensor2< doubleMe (double T, double e=0., char point=' *') const
 Get electron effective mass Me in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].
 
virtual Tensor2< doubleMhh (double T, double e=0.) const
 Get heavy hole effective mass Mhh in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].
 
virtual Tensor2< doubleMlh (double T, double e=0.) const
 Get light hole effective mass Mlh in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].
 
virtual Tensor2< doubleMh (double T, double e=0.) const
 Get hole effective mass Mh in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].
 
virtual double y1 () const
 Get Luttinger parameter γ1 (-).
 
virtual double y2 () const
 Get Luttinger parameter γ2 (-).
 
virtual double y3 () const
 Get Luttinger parameter γ3 (-).
 
virtual double ac (double T) const
 Get hydrostatic deformation potential for the conduction band ac (eV).
 
virtual double av (double T) const
 Get hydrostatic deformation potential for the valence band av (eV).
 
virtual double b (double T) const
 Get shear deformation potential b (eV).
 
virtual double d (double T) const
 Get shear deformation potential d (eV).
 
virtual double c11 (double T) const
 Get elastic constant c11 (GPa).
 
virtual double c12 (double T) const
 Get elastic constant c12 (GPa).
 
virtual double c44 (double T) const
 Get elastic constant c44 (GPa).
 
virtual double eps (double T) const
 Get dielectric constant EpsR (-).
 
virtual Tensor3< dcomplex > Eps (double lam, double T, double n=0) const
 Get Hermitian permittivity tensor ε (-).
 
virtual double chi (double T, double e=0., char point=' *') const
 Get electron affinity Chi(eV).
 
virtual double Ni (double T) const
 Get intrinsic carrier concentration Ni [cm^(-3)].
 
virtual double Nf (double T) const
 Get free carrier concentration N [cm^(-3)].
 
virtual double EactD (double T) const
 Get donor ionisation energy EactD (eV).
 
virtual double EactA (double T) const
 Get acceptor ionisation energy EactA (eV).
 
virtual Tensor2< doublemob (double T) const
 Get mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].
 
virtual Tensor2< doublecond (double T) const
 Get electrical conductivity sigma in-plane (lateral) and cross-plane (vertical) direction [S/m].
 
virtual ConductivityType condtype () const
 Get electrical conductivity type.
 
virtual double A (double T) const
 Get monomolecular recombination coefficient A (1/s).
 
virtual double B (double T) const
 Get radiative recombination coefficient B (cm^3/s).
 
virtual double C (double T) const
 Get Auger recombination coefficient C (cm^6/s).
 
virtual double D (double T) const
 Get ambipolar diffusion coefficient D (cm^2/s).
 
virtual Tensor2< doublethermk (double T, double h=INFINITY) const
 Get thermal conductivity in in-plane (lateral) and cross-plane (vertical) direction k [W/(m*K)].
 
virtual double dens (double T) const
 Get density (kg/m^3).
 
virtual double cp (double T) const
 Get specific heat at constant pressure [J/(kg*K)].
 
virtual double nr (double lam, double T, double n=0) const
 Get refractive index Nr (-).
 
virtual double absp (double lam, double T) const
 Get absorption coefficient alpha [cm^(-1)].
 
virtual dcomplex Nr (double lam, double T, double n=0) const
 Get refractive index Nr (-).
 
virtual Tensor2< doublemobe (double T) const
 Get electron mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].
 
virtual Tensor2< doublemobh (double T) const
 Get hole mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].
 
virtual double taue (double T) const
 Get monomolecular electrons lifetime (ns).
 
virtual double tauh (double T) const
 Get monomolecular holes lifetime (ns).
 
virtual double Ce (double T) const
 Get Auger recombination coefficient C for electrons (cm^6/s).
 
virtual double Ch (double T) const
 Get Auger recombination coefficient C for holes (cm^6/s).
 
virtual double e13 (double T) const
 Get piezoelectric constant e13 (C/m^2)
 
virtual double e15 (double T) const
 Get piezoelectric constant e13 (C/m^2)
 
virtual double e33 (double T) const
 Get piezoelectric constant e33 (C/m^2)
 
virtual double c13 (double T) const
 Get elastic constant c13 (GPa).
 
virtual double c33 (double T) const
 Get elastic constant c33 (GPa).
 
virtual double Psp (double T) const
 Get spontaneous polarization (C/m^2)
 
virtual double Na () const
 Get acceptor concentration Na [cm^(-3)].
 
virtual double Nd () const
 Get donor concentration Nd [cm^(-3)].
 
bool operator== (const Material &other) const
 Check if this material is equal to other (checks type and uses isEqual).
 
bool operator== (shared_ptr< const Material > other) const
 Check if this material is equal to other (checks type and uses isEqual).
 
bool operator!= (const Material &other) const
 Check if this material is different from other (checks type and uses isEqual).
 
bool operator!= (shared_ptr< const Material > other) const
 Check if this material is different from other (checks type and uses isEqual).
 

Static Public Member Functions

static bool isNameWithDopant (const std::string &material_name)
 Check if dopant is included in material_name.
 
static bool isSimpleMaterialName (const std::string &material_name)
 Check if material_name is name of simple material.
 
static std::pair< std::string, doublefirstCompositionObject (const char *&begin, const char *end, const char *fullname)
 Parse composition object from [begin, end) string.
 
static Composition completeComposition (const Composition &composition)
 Change NaN-s in material composition to calculated amounts.
 
static Composition minimalComposition (const Composition &composition)
 Change material composition to minimal set.
 
static Composition parseComposition (const char *begin, const char *end, const char *fullname=nullptr)
 Parse composition from string, or string fragment.
 
static Composition parseComposition (const std::string &composition_str, const std::string &fullname="")
 Parse composition from string.
 
static void parseDopant (const char *begin, const char *end, std::string &dopant_elem_name, double &doping, bool allow_dopant_without_amount, const char *fullname)
 Parse information about dopant from string.
 
static void parseDopant (const std::string &dopant, std::string &dopant_elem_name, double &doping, bool allow_dopant_without_amount, const std::string &fullname)
 Parse information about dopant from string.
 
static std::vector< std::string > parseObjectsNames (const char *begin, const char *end)
 Split object name to objects.
 
static std::vector< std::string > parseObjectsNames (const std::string &allNames)
 Split object name to objects.
 

Protected Member Functions

virtual bool isEqual (const Material &other) const
 Check if this material is equal to other.
 
void throwNotImplemented (const std::string &method_name) const
 Throw exception with information that method with name method_name is not implemented for this material.
 

Friends

struct MaterialsDB
 

Detailed Description

Represent material, its physical properties.

Definition at line 60 of file material.hpp.

Member Typedef Documentation

◆ Composition

Type for material composition.

Definition at line 86 of file material.hpp.

Member Enumeration Documentation

◆ ConductivityType

Material conductivity type.

Enumerator
CONDUCTIVITY_N 

n-type semiconductor

CONDUCTIVITY_I 

i-type semiconductor

CONDUCTIVITY_P 

p-type semiconductor

CONDUCTIVITY_OTHER 

other conductivity

CONDUCTIVITY_UNDETERMINED 

undetermined conductivity (e.g. a mixed material)

Definition at line 75 of file material.hpp.

◆ Kind

Material kind.

Enumerator
GENERIC 

generic material

EMPTY 

no material or air

SEMICONDUCTOR 

semiconductor

OXIDE 

oxide

DIELECTRIC 

other dielectric

METAL 

metal

LIQUID_CRYSTAL 

liquid crystal

MIXED 

artificial mix of several materials with averaged properties

Definition at line 63 of file material.hpp.

Constructor & Destructor Documentation

◆ ~Material()

virtual plask::Material::~Material ( )
inlinevirtual

Do nothing.

Definition at line 383 of file material.hpp.

Member Function Documentation

◆ A()

double plask::Material::A ( double  T) const
virtual

Get monomolecular recombination coefficient A (1/s).

Parameters
Ttemperature (K)
Returns
monomolecular recombination coefficient A (1/s)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 150 of file material.cpp.

◆ absp()

double plask::Material::absp ( double  lam,
double  T 
) const
virtual

Get absorption coefficient alpha [cm^(-1)].

Parameters
lamWavelength (nm)
Ttemperature (K)
ninjected carriers concentration (1/cm)
Returns
absorption coefficient alpha cm^(-1)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 152 of file material.cpp.

◆ ac()

double plask::Material::ac ( double  T) const
virtual

Get hydrostatic deformation potential for the conduction band ac (eV).

Parameters
Ttemperature (K)
Returns
hydrostatic deformation potential for the conduction band ac (eV)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 201 of file material.cpp.

◆ av()

double plask::Material::av ( double  T) const
virtual

Get hydrostatic deformation potential for the valence band av (eV).

Parameters
Ttemperature (K)
Returns
hydrostatic deformation potential for the valence band av (eV)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 202 of file material.cpp.

◆ b()

double plask::Material::b ( double  T) const
virtual

Get shear deformation potential b (eV).

Parameters
Ttemperature (K)
Returns
shear deformation potential b (eV)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 203 of file material.cpp.

◆ B()

double plask::Material::B ( double  T) const
virtual

Get radiative recombination coefficient B (cm^3/s).

Parameters
Ttemperature (K)
Returns
radiative recombination coefficient B (cm^3/s)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 154 of file material.cpp.

◆ C()

double plask::Material::C ( double  T) const
virtual

Get Auger recombination coefficient C (cm^6/s).

Parameters
Ttemperature (K)
Returns
Auger recombination coefficient C (cm^6/s)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 156 of file material.cpp.

◆ c11()

double plask::Material::c11 ( double  T) const
virtual

Get elastic constant c11 (GPa).

Parameters
Ttemperature (K)
Returns
elastic constant c11 (GPa)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 205 of file material.cpp.

◆ c12()

double plask::Material::c12 ( double  T) const
virtual

Get elastic constant c12 (GPa).

Parameters
Ttemperature (K)
Returns
elastic constant c12 (GPa)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 206 of file material.cpp.

◆ c13()

double plask::Material::c13 ( double  T) const
virtual

Get elastic constant c13 (GPa).

Parameters
Ttemperature (K)
Returns
elastic constant c13 (GPa)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 255 of file material.cpp.

◆ c33()

double plask::Material::c33 ( double  T) const
virtual

Get elastic constant c33 (GPa).

Parameters
Ttemperature (K)
Returns
elastic constant c33 (GPa)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 257 of file material.cpp.

◆ c44()

double plask::Material::c44 ( double  T) const
virtual

Get elastic constant c44 (GPa).

Parameters
Ttemperature (K)
Returns
elastic constant c44 (GPa)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 207 of file material.cpp.

◆ CB()

double plask::Material::CB ( double  T,
double  e = 0.,
char  point = '*' 
) const
virtual

Get conduction band level CB (eV).

Parameters
Ttemperature (K)
elateral strain (-)
pointpoint in the Brillouin zone (-)
Returns
conduction band level CB (eV)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 158 of file material.cpp.

◆ Ce()

double plask::Material::Ce ( double  T) const
virtual

Get Auger recombination coefficient C for electrons (cm^6/s).

Parameters
Ttemperature (K)
Returns
Auger recombination coefficient C (cm^6/s)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 245 of file material.cpp.

◆ Ch()

double plask::Material::Ch ( double  T) const
virtual

Get Auger recombination coefficient C for holes (cm^6/s).

Parameters
Ttemperature (K)
Returns
Auger recombination coefficient C (cm^6/s)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 247 of file material.cpp.

◆ chi()

double plask::Material::chi ( double  T,
double  e = 0.,
char  point = '*' 
) const
virtual

Get electron affinity Chi(eV).

Parameters
Ttemperature (K)
elateral strain (-)
pointpoint in Brillouin zone (-)
Returns
electron affinity Chi (eV)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 165 of file material.cpp.

◆ completeComposition()

Material::Composition plask::Material::completeComposition ( const Composition composition)
static

Change NaN-s in material composition to calculated amounts.

Throw exception if it is impossible to complete given composition.

Parameters
compositionamounts of objects composition with NaN on position for which amounts has not been taken
Returns
complete composition, for example for ("Al", 0.7), ("Ga", NaN), ("N", NaN) result is ("Al", 0.7), ("Ga", 0.3), ("N", 1.0)

Definition at line 274 of file material.cpp.

◆ composition()

Material::Composition plask::Material::composition ( ) const
virtual

If this material is alloy return its composition.

Returns
material composition

Definition at line 142 of file material.cpp.

◆ cond()

Tensor2< double > plask::Material::cond ( double  T) const
virtual

Get electrical conductivity sigma in-plane (lateral) and cross-plane (vertical) direction [S/m].

Parameters
Ttemperature (K)
Returns
electrical conductivity sigma [S/m]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 167 of file material.cpp.

◆ condtype()

Material::ConductivityType plask::Material::condtype ( ) const
virtual

Get electrical conductivity type.

In semiconductors this indicates what type of carriers Nf refers to.

Returns
electrical conductivity type of material

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 169 of file material.cpp.

◆ cp()

double plask::Material::cp ( double  T) const
virtual

Get specific heat at constant pressure [J/(kg*K)].

Parameters
Ttemperature (K)
Returns
specific heat at constant pressure [J/(kg*K)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 230 of file material.cpp.

◆ d()

double plask::Material::d ( double  T) const
virtual

Get shear deformation potential d (eV).

Parameters
Ttemperature (K)
Returns
shear deformation potential d (eV)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 204 of file material.cpp.

◆ D()

double plask::Material::D ( double  T) const
virtual

Get ambipolar diffusion coefficient D (cm^2/s).

Parameters
Ttemperature (K)
Returns
ambipolar diffusion coefficient D (cm^2/s)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 171 of file material.cpp.

◆ dens()

double plask::Material::dens ( double  T) const
virtual

Get density (kg/m^3).

Parameters
Ttemperature (K)
Returns
density (kg/m^3)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 179 of file material.cpp.

◆ dopant()

std::string plask::Material::dopant ( ) const

Get dopant material name (part of name after ':', possibly empty).

Returns
dopant material name

Definition at line 413 of file material.cpp.

◆ doping()

double plask::Material::doping ( ) const
virtual

Doping concentration.

Definition at line 146 of file material.cpp.

◆ Dso()

double plask::Material::Dso ( double  T,
double  e = 0. 
) const
virtual

Get split-off energy Dso (eV).

Parameters
Ttemperature (K)
elateral strain (-)
Returns
split-off energy Dso (eV)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 181 of file material.cpp.

◆ e13()

double plask::Material::e13 ( double  T) const
virtual

Get piezoelectric constant e13 (C/m^2)

Parameters
Ttemperature (K)
Returns
piezoelectric constant e13 (C/m^2)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 249 of file material.cpp.

◆ e15()

double plask::Material::e15 ( double  T) const
virtual

Get piezoelectric constant e13 (C/m^2)

Parameters
Ttemperature (K)
Returns
piezoelectric constant e13 (C/m^2)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 251 of file material.cpp.

◆ e33()

double plask::Material::e33 ( double  T) const
virtual

Get piezoelectric constant e33 (C/m^2)

Parameters
Ttemperature (K)
Returns
piezoelectric constant e33 (C/m^2)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 253 of file material.cpp.

◆ EactA()

double plask::Material::EactA ( double  T) const
virtual

Get acceptor ionisation energy EactA (eV).

Parameters
Ttemperature (K)
Returns
acceptor ionisation energy EactA (eV)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 183 of file material.cpp.

◆ EactD()

double plask::Material::EactD ( double  T) const
virtual

Get donor ionisation energy EactD (eV).

Parameters
Ttemperature (K)
Returns
donor ionisation energy EactD (eV)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 184 of file material.cpp.

◆ Eg()

double plask::Material::Eg ( double  T,
double  e = 0.,
char  point = '*' 
) const
virtual

Get energy gap Eg (eV)

Parameters
Ttemperature (K)
elateral strain (-)
pointpoint in the Brillouin zone (-)
Returns
energy gap Eg (eV)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 186 of file material.cpp.

◆ Eps()

Tensor3< dcomplex > plask::Material::Eps ( double  lam,
double  T,
double  n = 0 
) const
virtual

Get Hermitian permittivity tensor ε (-).

Parameters
lamWavelength (nm)
Ttemperature (K)
ninjected carriers concentration (1/cm)
Returns
permittivity index tensor Eps(-)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 221 of file material.cpp.

◆ eps()

double plask::Material::eps ( double  T) const
virtual

Get dielectric constant EpsR (-).

Parameters
Ttemperature (K)
Returns
dielectric constant EpsR (-)

Reimplemented in plask::materials::Air, plask::ConstMaterial, plask::Metal, and plask::MixedMaterial.

Definition at line 188 of file material.cpp.

◆ firstCompositionObject()

std::pair< std::string, double > plask::Material::firstCompositionObject ( const char *&  begin,
const char end,
const char fullname 
)
static

Parse composition object from [begin, end) string.

Parameters
beginbegin of string, will be increased to point to potential next composition object or end (if parsed composition object was last one)
endpoints just after last charcter of string, must be: begin < end
fullnamefull name of material, used for error messages
Returns
parsed object name and ammount (NaN if there was no information about ammount)

Definition at line 325 of file material.cpp.

◆ isAlloy()

bool plask::Material::isAlloy ( ) const

Check if this material is alloy.

Returns
true only if this material is alloy

Definition at line 138 of file material.cpp.

◆ isEqual()

bool plask::Material::isEqual ( const Material other) const
protectedvirtual

Check if this material is equal to other.

Default implementation compares string representation of this and other. For simple materials (without parameters) this should just returns true.

Parameters
otherother material witch has the same type as this (in implementation you can safty static_cast it to type of this)
Returns
true only if this is equal to other

Reimplemented in plask::GenericMaterial, plask::materials::Air, and plask::ConstMaterial.

Definition at line 264 of file mixed.cpp.

◆ isNameWithDopant()

static bool plask::Material::isNameWithDopant ( const std::string &  material_name)
inlinestatic

Check if dopant is included in material_name.

Parameters
material_namefull material name
Returns
true only if dopant is included in material_name.

Definition at line 116 of file material.hpp.

◆ isSimpleMaterialName()

static bool plask::Material::isSimpleMaterialName ( const std::string &  material_name)
inlinestatic

Check if material_name is name of simple material.

Parameters
material_namefull material name or name without dopant (only part before ':')
Returns
true only if material_name is name of simple material (does not have composition).

Definition at line 125 of file material.hpp.

◆ kind()

◆ lattC()

double plask::Material::lattC ( double  T,
char  x 
) const
virtual

Get lattice constant (Å).

Parameters
Ttemperature (K)
xlattice parameter (-)
Returns
lattice constant (Å)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 190 of file material.cpp.

◆ lock()

virtual OmpLockGuard plask::Material::lock ( ) const
inlinevirtual

Create OpenMP lock guard.

Definition at line 378 of file material.hpp.

◆ Me()

Tensor2< double > plask::Material::Me ( double  T,
double  e = 0.,
char  point = '*' 
) const
virtual

Get electron effective mass Me in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].

Parameters
Ttemperature (K)
elateral strain (-)
pointpoint in Brillouin zone (-)
Returns
electron effective mass Me [ $m_0$]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 192 of file material.cpp.

◆ Mh()

Tensor2< double > plask::Material::Mh ( double  T,
double  e = 0. 
) const
virtual

Get hole effective mass Mh in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].

Parameters
Ttemperature (K)
elateral strain (-)
Returns
hole effective mass Mh [ $m_0$]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 193 of file material.cpp.

◆ Mhh()

Tensor2< double > plask::Material::Mhh ( double  T,
double  e = 0. 
) const
virtual

Get heavy hole effective mass Mhh in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].

Parameters
Ttemperature (K)
elateral strain (-)
Returns
heavy hole effective mass Mhh [ $m_0$]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 194 of file material.cpp.

◆ minimalComposition()

Material::Composition plask::Material::minimalComposition ( const Composition composition)
static

Change material composition to minimal set.

Throw exception if it is impossible to complete given composition.

Parameters
compositionamounts of objects composition with NaN on position for which amounts has not been taken
Returns
minimal composition, for example for ("Al", 0.7), ("Ga", 0.3), ("N", 1.0) result is ("Al", 0.7), ("Ga", NaN), ("N", NaN)

Definition at line 289 of file material.cpp.

◆ Mlh()

Tensor2< double > plask::Material::Mlh ( double  T,
double  e = 0. 
) const
virtual

Get light hole effective mass Mlh in in-plane (lateral) and cross-plane (vertical) direction [ $m_0$].

Parameters
Ttemperature (K)
elateral strain (-)
Returns
light hole effective mass Mlh [ $m_0$]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 195 of file material.cpp.

◆ mob()

Tensor2< double > plask::Material::mob ( double  T) const
virtual

Get mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].

Parameters
Ttemperature (K)
Returns
mobility [cm^2/(V*s)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 209 of file material.cpp.

◆ mobe()

Tensor2< double > plask::Material::mobe ( double  T) const
virtual

Get electron mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].

Parameters
Ttemperature (K)
Returns
mobility [cm^2/(V*s)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 237 of file material.cpp.

◆ mobh()

Tensor2< double > plask::Material::mobh ( double  T) const
virtual

Get hole mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].

Parameters
Ttemperature (K)
Returns
mobility [cm^2/(V*s)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 239 of file material.cpp.

◆ Mso()

double plask::Material::Mso ( double  T,
double  e = 0. 
) const
virtual

Get split-off mass Mso [ $m_0$].

Parameters
Ttemperature (K)
elateral strain (-)
Returns
split-off mass Mso [ $m_0$]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 211 of file material.cpp.

◆ Na()

double plask::Material::Na ( ) const
virtual

Get acceptor concentration Na [cm^(-3)].

Returns
acceptor concentration Na [cm^(-3)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 261 of file material.cpp.

◆ name()

virtual std::string plask::Material::name ( ) const
pure virtual

Get short (without composition and doping amounts) name of material.

Returns
material name

Implemented in plask::materials::Air, plask::ConstMaterial, plask::DummyMaterial, plask::Semiconductor, plask::Metal, plask::Oxide, plask::Dielectric, plask::LiquidCrystal, plask::GenericMaterial, and plask::MixedMaterial.

◆ nameWithoutDopant()

std::string plask::Material::nameWithoutDopant ( ) const

Get material name without dopant (without ':' and part of name after it).

Returns
material name without dopant

Definition at line 418 of file material.cpp.

◆ Nd()

double plask::Material::Nd ( ) const
virtual

Get donor concentration Nd [cm^(-3)].

Returns
donor concentration Nd [cm^(-3)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 263 of file material.cpp.

◆ Nf()

double plask::Material::Nf ( double  T) const
virtual

Get free carrier concentration N [cm^(-3)].

Parameters
Ttemperature (K)
Returns
free carrier concentration N [cm^(-3)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 213 of file material.cpp.

◆ Ni()

double plask::Material::Ni ( double  T) const
virtual

Get intrinsic carrier concentration Ni [cm^(-3)].

Parameters
Ttemperature (K)
Returns
intrinsic carrier concentration Ni [cm^(-3)]

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 215 of file material.cpp.

◆ nr()

double plask::Material::nr ( double  lam,
double  T,
double  n = 0 
) const
virtual

Get refractive index Nr (-).

Parameters
lamWavelength (nm)
Ttemperature (K)
ninjected carriers concentration (1/cm)
Returns
refractive index Nr (-)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 217 of file material.cpp.

◆ Nr()

dcomplex plask::Material::Nr ( double  lam,
double  T,
double  n = 0 
) const
virtual

Get refractive index Nr (-).

Parameters
lamWavelength (nm)
Ttemperature (K)
Returns
refractive index Nr(-)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 219 of file material.cpp.

◆ operator!=() [1/2]

bool plask::Material::operator!= ( const Material other) const
inline

Check if this material is different from other (checks type and uses isEqual).

Parameters
otherother material
Returns
true only if this is not equal to other

Definition at line 852 of file material.hpp.

◆ operator!=() [2/2]

bool plask::Material::operator!= ( shared_ptr< const Material other) const
inline

Check if this material is different from other (checks type and uses isEqual).

Parameters
otherother material
Returns
true only if this is not equal to other, true in case of other is nullptr

Definition at line 859 of file material.hpp.

◆ operator==() [1/2]

bool plask::Material::operator== ( const Material other) const

Check if this material is equal to other (checks type and uses isEqual).

Parameters
otherother material
Returns
true only if this is equal to other

Definition at line 226 of file material.cpp.

◆ operator==() [2/2]

bool plask::Material::operator== ( shared_ptr< const Material other) const
inline

Check if this material is equal to other (checks type and uses isEqual).

Parameters
otherother material
Returns
true only if this is equal to other, false in case of other is nullptr

Definition at line 843 of file material.hpp.

◆ parseComposition() [1/2]

Material::Composition plask::Material::parseComposition ( const char begin,
const char end,
const char fullname = nullptr 
)
static

Parse composition from string, or string fragment.

Throws exception in case of parsing errors.

Parameters
begin,end[begin, end) string or range in string, for example "Al(0.7)GaN"
Returns
parsed composition, can be not complete, for "Al(0.7)GaN" result is ("Al", 0.7), ("Ga", NaN), ("N", NaN)
See also
completeComposition

Definition at line 345 of file material.cpp.

◆ parseComposition() [2/2]

Material::Composition plask::Material::parseComposition ( const std::string &  composition_str,
const std::string &  fullname = "" 
)
static

Parse composition from string.

Throws exception in case of parsing errors.

Parameters
composition_strcomposition string, objects and amounts, for example "Al(0.7)GaN"
Returns
parsed composition, can be not complate, for "Al(0.7)GaN" result is ("Al", 0.7), ("Ga", NaN), ("N", NaN)
See also
completeComposition

Definition at line 363 of file material.cpp.

◆ parseDopant() [1/2]

void plask::Material::parseDopant ( const char begin,
const char end,
std::string &  dopant_elem_name,
double doping,
bool  allow_dopant_without_amount,
const char fullname 
)
static

Parse information about dopant from string.

Throws exception in case of parsing errors.

Parameters
[in]begin,end[begin, end) string or range in string
[out]dopant_elem_name,dopingparsed values
[in]allow_dopant_without_amountif true, dopant without ammount is allowed (in such case, dopant_elem_name is filled, but doping_type is set to NO_DOPING and doping to 0.0)
[in]fullnamefull name of material, used for error messages

Definition at line 371 of file material.cpp.

◆ parseDopant() [2/2]

void plask::Material::parseDopant ( const std::string &  dopant,
std::string &  dopant_elem_name,
double doping,
bool  allow_dopant_without_amount,
const std::string &  fullname 
)
static

Parse information about dopant from string.

Throws exception in case of parsing errors.

Parameters
[in]dopantstring to parse
[out]dopant_elem_name,dopingparsed values
[in]allow_dopant_without_amountif true, dopant without ammount is allowed (in such case, dopant_elem_name is filled, but doping_type is set to NO_DOPING and doping to 0.0)
[in]fullnamefull name of material, used for error messages

Definition at line 391 of file material.cpp.

◆ parseObjectsNames() [1/2]

std::vector< std::string > plask::Material::parseObjectsNames ( const char begin,
const char end 
)
static

Split object name to objects.

Parameters
begin,end[begin, end) string or range in string, for example "AlGaN"
Returns
vector of parsed objects (for "AlGaN" result is ["Al", "Ga", "N"])
Exceptions
MaterialParseExceptionwhen name is ill-formatted

Definition at line 396 of file material.cpp.

◆ parseObjectsNames() [2/2]

std::vector< std::string > plask::Material::parseObjectsNames ( const std::string &  allNames)
static

Split object name to objects.

Parameters
allNamesall objects names, for example "AlGaN"
Returns
vector of parsed objects (for "AlGaN" result is ["Al", "Ga", "N"])
Exceptions
MaterialParseExceptionwhen name is ill-formated

Definition at line 408 of file material.cpp.

◆ Psp()

double plask::Material::Psp ( double  T) const
virtual

Get spontaneous polarization (C/m^2)

Parameters
Ttemperature (K)
Returns
spontaneous polarization (C/m^2)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 259 of file material.cpp.

◆ str()

std::string plask::Material::str ( ) const
virtual

Get full (with composition and doping amounts) name of material.

Default implementation returns name, which is fine only for simple materials.

Returns
material name with information about composition and doping
See also
NameBuilder

Reimplemented in plask::ConstMaterial.

Definition at line 134 of file material.cpp.

◆ taue()

double plask::Material::taue ( double  T) const
virtual

Get monomolecular electrons lifetime (ns).

Parameters
Ttemperature (K)
Returns
monomolecular electrons lifetime (ns)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 241 of file material.cpp.

◆ tauh()

double plask::Material::tauh ( double  T) const
virtual

Get monomolecular holes lifetime (ns).

Parameters
Ttemperature (K)
Returns
monomolecular holes lifetime (ns)

Reimplemented in plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 243 of file material.cpp.

◆ thermk()

Tensor2< double > plask::Material::thermk ( double  T,
double  h = INFINITY 
) const
virtual

Get thermal conductivity in in-plane (lateral) and cross-plane (vertical) direction k [W/(m*K)].

Parameters
Ttemperature (K)
hlayer thickness (µm)
Returns
thermal conductivity k [W/(m*K)]

Reimplemented in plask::materials::Air, plask::MixedMaterial, and plask::ConstMaterial.

Definition at line 232 of file material.cpp.

◆ throwNotImplemented()

void plask::Material::throwNotImplemented ( const std::string &  method_name) const
protected

Throw exception with information that method with name method_name is not implemented for this material.

Parameters
method_namename of method which is not implemented

Definition at line 270 of file material.cpp.

◆ VB()

double plask::Material::VB ( double  T,
double  e = 0.,
char  point = '*',
char  hole = 'H' 
) const
virtual

Get valence band level VB(eV).

Parameters
Ttemperature (K)
elateral strain (-)
pointpoint in Brillouin zone (-)
holehole type ('H'eavy or 'L'ight) (-)
Returns
valence band level VB(eV)

Reimplemented in plask::materials::Air, plask::ConstMaterial, and plask::MixedMaterial.

Definition at line 234 of file material.cpp.

◆ y1()

double plask::Material::y1 ( ) const
virtual

Get Luttinger parameter γ1 (-).

Returns
Luttinger parameter y1 (-)

Reimplemented in plask::ConstMaterial.

Definition at line 197 of file material.cpp.

◆ y2()

double plask::Material::y2 ( ) const
virtual

Get Luttinger parameter γ2 (-).

Returns
Luttinger parameter y2 (-)

Reimplemented in plask::ConstMaterial.

Definition at line 198 of file material.cpp.

◆ y3()

double plask::Material::y3 ( ) const
virtual

Get Luttinger parameter γ3 (-).

Returns
Luttinger parameter y3 (-)

Reimplemented in plask::ConstMaterial.

Definition at line 199 of file material.cpp.

Friends And Related Symbol Documentation

◆ MaterialsDB

Definition at line 107 of file material.hpp.


The documentation for this struct was generated from the following files: