5.2. sesame.builder – High-level construction of systems

class sesame.builder.Scaling(input_length='cm', T=300)[source]

An object defining the scalings of the drift-diffusion-Poisson equation. The temperature of the system and the reference unit for lengths are specified when an instance is created. The default unit for length is cm, and the default temperature is 300 K.

Parameters:

input_length: string :

Reference unit for lengths. Acceptable entries are ‘cm’ for centimeters and ‘m’ for meters.

T: float :

Temperature for the simulation.

Attributes

denisty: float Density scale taken equal to 1019 cm-3.
energy: float Energy scale.
mobility: float Mobility scale taken equal to 1 cm2/(V.s).
time: float Time scale.
length: float Length scale.
generation: float Scale of generation and recombination rates.
velocity: float Velocity scale.
current: float Electrical current density scale.
class sesame.builder.Builder(xpts, ypts=array([0.]), input_length='cm', T=300, periodic=True)[source]

A system discretized on a mesh.

This type discretizes a system on a mesh provided by the user, and takes care of all normalizations. The temperature of the system is specified when an instance is created. The default is 300 K.

Parameters:

xpts, ypts, zpts: numpy arrays of floats :

Mesh with original dimensions.

input_length: string :

Reference unit for lengths. Acceptable entries are ‘cm’ for centimeters and ‘m’ for meters.

T: float :

Temperature for the simulation.

Attributes

xpts, ypts, zpts: numpy arrays of floats Mesh with original dimensions.
dx, dy, dz: numpy arrays of floats Dimensionless lattice constants in the x, y, z directions.
nx, ny: integers Number of lattice nodes in the x, y directions.
Nc, Nv: numpy arrays of floats Dimensionless effective densities of states of the conduction and valence bands.
Eg: numpy array of floats Dimensionless band gap.
ni: numpy array of floats Dimensionless intrinsic density.
mu_e, mu_h: numpy arrays of floats Dimensionless mobilities of electron and holes.
tau_e, tau_h: numpy arrays of floats Dimensionless bulk lifetime for electrons and holes.
n1, p1: numpy arrays of floats Dimensionless equilibrium densities of electrons and holes at the bulk trap state.
bl: numpy array of floats Electron affinity.
g: numpy array of floats Dimensionless generation for each site of the system. This is defined only if a generation profile was provided when building the system.
gtot: float Dimensionless integral of the generation rate.
defects_list: list of named tuples List of named tuples containing the characteristics of the defects in the order they were added to the system. The field names are sites, location, dos, energy, sigma_e, sigma_h, transition, perp_dl.
add_acceptor(density, location=<function <lambda>>)[source]

Add acceptor dopants to the system.

Parameters:

density: float :

Doping density [cm-3].

location: Boolean function :

Definition of the region containing the doping. This function must take a tuple of real world coordinates (e.g. (x, y)) as parameters, and return True (False) if the lattice node is inside (outside) the region.

add_defects(location, N, sigma_e, sigma_h=None, E=None, transition=(1, -1))[source]

Add additional charges (for a grain boundary for instance) to the total charge of the system. These charges are distributed on a line.

Parameters:

location: float or list of two array_like coordinates [(x1, y1), (x2, y2)] :

Coordinate(s) in [cm] of a point defect or the two end points of a line defect.

N: float or function :

Defect density of states [cm-2 ]. Provide a float when the defect density of states is a delta function, or a function returning a float for a continuum. This function should take a single energy argument in [eV].

sigma_e: float :

Electron capture cross section [cm2].

sigma_h: float (optional) :

Hole capture cross section [cm2]. If not given, the same value as the electron capture cross section will be used.

E: float :

Energy level of a single state defined with respect to the intrinsic Fermi level [eV]. Set to None for a continuum of states (default).

transition: tuple :

Charge transition occurring at the energy level E. The tuple (p, q) represents a defect with transition p/q (level empty to level occupied). Default is (1,-1).

add_donor(density, location=<function <lambda>>)[source]

Add donor dopants to the system.

Parameters:

density: float :

Doping density [cm-3].

location: Boolean function :

Definition of the region containing the doping. This function must take a tuple of real world coordinates (e.g. (x, y)) as parameters, and return True (False) if the lattice node is inside (outside) the region.

add_material(mat, location=<function <lambda>>)[source]

Add a material to the system.

Parameters:

mat: dictionary :

Contains the material parameters Keys are Nc (Nv): conduction (valence) effective densities of states [cm-3], Eg: band gap [\mathrm{eV}], epsilon: material’s permitivitty, mu_e (mu_h): electron (hole) mobility [m2/(V s)], tau_e (tau_h): electron (hole) bulk lifetime [s], Et: energy level of the bulk recombination centers [eV], affinity: electron affinity [eV], B: radiation recombination constant [cm3/s], Cn (Cp): Auger recombination constant for electrons (holes) [cm6/s], mass_e (mass_h): effective mass of electrons (holes). All parameters can be scalars or callable functions similar to the location argument.

location: Boolean function :

Definition of the region containing the material. This function must take a tuple of real world coordinates (e.g. (x, y)) as parameter, and return True (False) if the lattice node is inside (outside) the region.

contact_S(Scn_left, Scp_left, Scn_right, Scp_right)[source]

Create the lists of recombination velocities that define the charge collection at the contacts out of equilibrium.

Parameters:

Scn_left: float :

Surface recombination velocity for electrons at the left contact [cm/s].

Scp_left: float :

Surface recombination velocity for holes at the left contact [cm/s].

Scn_right: float :

Surface recombination velocity for electrons at the right contact [cm/s].

Scn_right: float :

Surface recombination velocity for electrons at the right contact [cm/s].

contact_type(left_contact, right_contact, left_wf=None, right_wf=None)[source]

Define the boundary conditions for the contacts at thermal equilibrium. ‘Ohmic’ or ‘Schottky’ impose a value of the electrostatic potential, ‘Neutral’ imposes a zero potential derivative.

Parameters:

left_contact: string :

Boundary conditions for the contact at x=0.

right_contact: string :

Boundary conditions for the contact at x=L.

left_wf: float :

Work function for a Schottky contact at x=0.

right_wf: float :

Work function for a Schottky contact at x=L.

Notes

Schottky contacts require work functions. If no values are given, an error will be raised.

generation(f, args=[])[source]

Distribution of generated carriers.

Parameters:

f: function :

Generation rate [cm-3].

args: tuple :

Additional arguments to be passed to the function.