PLaSK library

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
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, double > | Composition
| 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 [ ].
virtual Tensor2< double > | Me (double T, double e=0., char point=' *') const
| Get electron effective mass Me in in-plane (lateral) and cross-plane (vertical) direction [ ].
virtual Tensor2< double > | Mhh (double T, double e=0.) const
| Get heavy hole effective mass Mhh in in-plane (lateral) and cross-plane (vertical) direction [ ].
virtual Tensor2< double > | Mlh (double T, double e=0.) const
| Get light hole effective mass Mlh in in-plane (lateral) and cross-plane (vertical) direction [ ].
virtual Tensor2< double > | Mh (double T, double e=0.) const
| Get hole effective mass Mh in in-plane (lateral) and cross-plane (vertical) direction [ ].
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< double > | mob (double T) const
| Get mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].
virtual Tensor2< double > | cond (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< double > | thermk (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< double > | mobe (double T) const
| Get electron mobility in-plane (lateral) and cross-plane (vertical) direction [cm^2/(V*s)].
virtual Tensor2< double > | mobh (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, double > | firstCompositionObject (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

typedef std::map<std::string, double> plask::Material::Composition

Type for material composition.

Definition at line 86 of file material.hpp.

## Member Enumeration Documentation

## ◆ ConductivityType

enum plask::Material::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

enum plask::Material::Kind : unsigned

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 | ( |  | ) |
| inline virtual

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

  T | temperature (K)

Returns
  monomolecular recombination coefficient A (1/s)

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

Definition at line 136 of file material.cpp.

## ◆ absp()

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

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

Parameters

  lam | Wavelength (nm)
  T | temperature (K)
  n | injected carriers concentration (1/cm)

Returns
  absorption coefficient alpha cm^(-1)]

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

Definition at line 138 of file material.cpp.

## ◆ ac()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 194 of file material.cpp.

## ◆ av()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 195 of file material.cpp.

## ◆ b()

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

Get shear deformation potential b (eV).

Parameters

  T | temperature (K)

Returns
  shear deformation potential b (eV)

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

Definition at line 196 of file material.cpp.

## ◆ B()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 140 of file material.cpp.

## ◆ C()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 142 of file material.cpp.

## ◆ c11()

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

Get elastic constant c11 (GPa).

Parameters

  T | temperature (K)

Returns
  elastic constant c11 (GPa)

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

Definition at line 198 of file material.cpp.

## ◆ c12()

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

Get elastic constant c12 (GPa).

Parameters

  T | temperature (K)

Returns
  elastic constant c12 (GPa)

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

Definition at line 199 of file material.cpp.

## ◆ c13()

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

Get elastic constant c13 (GPa).

Parameters

  T | temperature (K)

Returns
  elastic constant c13 (GPa)

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

Definition at line 249 of file material.cpp.

## ◆ c33()

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

Get elastic constant c33 (GPa).

Parameters

  T | temperature (K)

Returns
  elastic constant c33 (GPa)

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

Definition at line 251 of file material.cpp.

## ◆ c44()

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

Get elastic constant c44 (GPa).

Parameters

  T | temperature (K)

Returns
  elastic constant c44 (GPa)

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

Definition at line 200 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

  T | temperature (K)
  e | lateral strain (-)
  point | point in the Brillouin zone (-)

Returns
  conduction band level CB (eV)

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

Definition at line 144 of file material.cpp.

## ◆ Ce()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 239 of file material.cpp.

## ◆ Ch()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 241 of file material.cpp.

## ◆ chi()

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

Get electron affinity Chi(eV).

Parameters

  T | temperature (K)
  e | lateral strain (-)
  point | point in Brillouin zone (-)

Returns
  electron affinity Chi (eV)

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

Definition at line 151 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

  composition | amounts 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 263 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 132 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

  T | temperature (K)

Returns
  electrical conductivity sigma [S/m]

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

Definition at line 155 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 157 of file material.cpp.

## ◆ cp()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 223 of file material.cpp.

## ◆ d()

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

Get shear deformation potential d (eV).

Parameters

  T | temperature (K)

Returns
  shear deformation potential d (eV)

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

Definition at line 197 of file material.cpp.

## ◆ D()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 159 of file material.cpp.

## ◆ dens()

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

Get density (kg/m^3).

Parameters

  T | temperature (K)

Returns
  density (kg/m^3)

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

Definition at line 170 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 414 of file material.cpp.

## ◆ doping()

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

Doping concentration.

Definition at line 134 of file material.cpp.

## ◆ Dso()

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

Get split-off energy Dso (eV).

Parameters

  T | temperature (K)
  e | lateral strain (-)

Returns
  split-off energy Dso (eV)

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

Definition at line 172 of file material.cpp.

## ◆ e13()

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

Get piezoelectric constant e13 (C/m^2)

Parameters

  T | temperature (K)

Returns
  piezoelectric constant e13 (C/m^2)

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

Definition at line 243 of file material.cpp.

## ◆ e15()

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

Get piezoelectric constant e13 (C/m^2)

Parameters

  T | temperature (K)

Returns
  piezoelectric constant e13 (C/m^2)

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

Definition at line 245 of file material.cpp.

## ◆ e33()

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

Get piezoelectric constant e33 (C/m^2)

Parameters

  T | temperature (K)

Returns
  piezoelectric constant e33 (C/m^2)

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

Definition at line 247 of file material.cpp.

## ◆ EactA()

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

Get acceptor ionisation energy EactA (eV).

Parameters

  T | temperature (K)

Returns
  acceptor ionisation energy EactA (eV)

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

Definition at line 174 of file material.cpp.

## ◆ EactD()

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

Get donor ionisation energy EactD (eV).

Parameters

  T | temperature (K)

Returns
  donor ionisation energy EactD (eV)

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

Definition at line 175 of file material.cpp.

## ◆ Eg()

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

Get energy gap Eg (eV)

Parameters

  T | temperature (K)
  e | lateral strain (-)
  point | point in the Brillouin zone (-)

Returns
  energy gap Eg (eV)

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

Definition at line 177 of file material.cpp.

## ◆ Eps()

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

Get Hermitian permittivity tensor ε (-).

Parameters

  lam | Wavelength (nm)
  T | temperature (K)
  n | injected carriers concentration (1/cm)

Returns
  permittivity index tensor Eps(-)

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

Definition at line 216 of file material.cpp.

## ◆ eps()

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

Get dielectric constant EpsR (-).

Parameters

  T | temperature (K)

Returns
  dielectric constant EpsR (-)

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

Definition at line 179 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

  begin | begin of string, will be increased to point to potential next composition object or end (if parsed composition object was last one)
  end | points just after last charcter of string, must be: begin < end
  fullname | full name of material, used for error messages

Returns
  parsed object name and ammount (NaN if there was no information about ammount)

Definition at line 318 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 130 of file material.cpp.

## ◆ isEqual()

bool plask::Material::isEqual | ( | const Material & | other | ) | const
| protected virtual

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

  other | other 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 | ) |
| inline static

Check if dopant is included in `material_name`.

Parameters

  material_name | full 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 | ) |
| inline static

Check if `material_name` is name of simple material.

Parameters

  material_name | full 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()

virtual Kind plask::Material::kind | ( |  | ) | const
| pure virtual

Returns
  material kind

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

## ◆ lattC()

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

Get lattice constant (Å).

Parameters

  T | temperature (K)
  x | lattice parameter (-)

Returns
  lattice constant (Å)

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

Definition at line 181 of file material.cpp.

## ◆ lock()

virtual OmpLockGuard plask::Material::lock | ( |  | ) | const
| inline virtual

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 [ ].

Parameters

  T | temperature (K)
  e | lateral strain (-)
  point | point in Brillouin zone (-)

Returns
  electron effective mass Me [ ]

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

Definition at line 183 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 [ ].

Parameters

  T | temperature (K)
  e | lateral strain (-)

Returns
  hole effective mass Mh [ ]

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

Definition at line 186 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 [ ].

Parameters

  T | temperature (K)
  e | lateral strain (-)

Returns
  heavy hole effective mass Mhh [ ]

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

Definition at line 187 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

  composition | amounts 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 278 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 [ ].

Parameters

  T | temperature (K)
  e | lateral strain (-)

Returns
  light hole effective mass Mlh [ ]

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

Definition at line 188 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

  T | temperature (K)

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

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

Definition at line 202 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

  T | temperature (K)

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

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

Definition at line 231 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

  T | temperature (K)

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

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

Definition at line 233 of file material.cpp.

## ◆ Mso()

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

Get split-off mass Mso [ ].

Parameters

  T | temperature (K)
  e | lateral strain (-)

Returns
  split-off mass Mso [ ]

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

Definition at line 204 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, plask::MaterialWithBase, and plask::MixedMaterial.

Definition at line 255 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 419 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, plask::MaterialWithBase, and plask::MixedMaterial.

Definition at line 257 of file material.cpp.

## ◆ Nf()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 206 of file material.cpp.

## ◆ Ni()

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

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

Parameters

  T | temperature (K)

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

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

Definition at line 208 of file material.cpp.

## ◆ nr()

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

Get refractive index Nr (-).

Parameters

  lam | Wavelength (nm)
  T | temperature (K)
  n | injected carriers concentration (1/cm)

Returns
  refractive index Nr (-)

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

Definition at line 210 of file material.cpp.

## ◆ Nr()

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

Get refractive index Nr (-).

Parameters

  lam | Wavelength (nm)
  T | temperature (K)

Returns
  refractive index Nr(-)

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

Definition at line 212 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

  other | other 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

  other | other 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

  other | other material

Returns
  `true` only if this is equal to `other`

Definition at line 221 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

  other | other 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 338 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_str | composition 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 355 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,doping | parsed values
  [in] | allow_dopant_without_amount | if 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] | fullname | full name of material, used for error messages

Definition at line 363 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] | dopant | string to parse
  [out] | dopant_elem_name,doping | parsed values
  [in] | allow_dopant_without_amount | if 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] | fullname | full name of material, used for error messages

Definition at line 388 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

  MaterialParseException | when name is ill-formatted

Definition at line 397 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

  allNames | all objects names, for example "AlGaN"

Returns
  vector of parsed objects (for "AlGaN" result is ["Al", "Ga", "N"])

Exceptions

  MaterialParseException | when name is ill-formated

Definition at line 409 of file material.cpp.

## ◆ Psp()

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

Get spontaneous polarization (C/m^2)

Parameters

  T | temperature (K)

Returns
  spontaneous polarization (C/m^2)

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

Definition at line 253 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 128 of file material.cpp.

## ◆ taue()

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

Get monomolecular electrons lifetime (ns).

Parameters

  T | temperature (K)

Returns
  monomolecular electrons lifetime (ns)

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

Definition at line 235 of file material.cpp.

## ◆ tauh()

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

Get monomolecular holes lifetime (ns).

Parameters

  T | temperature (K)

Returns
  monomolecular holes lifetime (ns)

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

Definition at line 237 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

  T | temperature (K)
  h | layer thickness (µm)

Returns
  thermal conductivity k [W/(m*K)]

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

Definition at line 225 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_name | name of method which is not implemented

Definition at line 259 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

  T | temperature (K)
  e | lateral strain (-)
  point | point in Brillouin zone (-)
  hole | hole type ('H'eavy or 'L'ight) (-)

Returns
  valence band level VB(eV)

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

Definition at line 227 of file material.cpp.

## ◆ y1()

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

Get Luttinger parameter γ1 (-).

Returns
  Luttinger parameter y1 (-)

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

Definition at line 190 of file material.cpp.

## ◆ y2()

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

Get Luttinger parameter γ2 (-).

Returns
  Luttinger parameter y2 (-)

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

Definition at line 191 of file material.cpp.

## ◆ y3()

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

Get Luttinger parameter γ3 (-).

Returns
  Luttinger parameter y3 (-)

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

Definition at line 192 of file material.cpp.

## Friends And Related Symbol Documentation

## ◆ MaterialsDB

friend struct MaterialsDB
| friend

Definition at line 107 of file material.hpp.

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

- plask/material/material.hpp
- plask/material/material.cpp
- plask/material/mixed.cpp