simudo.example.fourlayer package¶
Submodules¶
simudo.example.fourlayer.fourlayer module¶
Set up four layer FSF-p-IB-n calculations
Adapted from marti20002_customizable_nonradiative.py
The most important functions are:
multiplex_setup()
creates submit.yaml files corresponding to a combinatorial array of input parametersrun()
runs simudo with specified submit.yaml
run()
receives a yaml submitfile with a dict P
of parameters
and executes the Simudo run according to those parameters. It is
designed to treat a 1D layered device (though all Simudo runs are
technically 2D). Physically, this device has four layers with
contacts at left and right. Light is incident from the right. Layer
thicknesses are controlled by keys FSF_thickness
, p_thickness
,
IB_thickness
, n_thickness
, in um.
- Uniform properties
There is a uniform band gap throughout the device. Band edges in eV are in
VB_E
,CB_E
andIB_E
. VB and CB have effective DOS ofNV
,NC
in cm^-3Cell temperature is
T
and there is a uniform relative permittivityepsilon_r
.Electron and hole mobilities are uniform, set by
mu_n
,mu_p
in .- BC’s
Majority carriers have Ohmic BC’s at the contacts and minority carriers have 0 SRV at the contacts.
- FSF
Zero optical absorption and doping NFSF in cm^-3.
- p- and n- regions
alpha_cv
sets absorption coefficient in 1/cm. Constant for all E>Eg. The associated radiative recombination is the only recombination in those layers. Uniform doping is set byNA
,ND
in cm^-3- IB region
IB has a sharp energy
IB_E
withNI
states in cm^-3Optical absorption and Shockley-Read trapping processes, set by
sigma_opt_ci
,sigma_opt_iv
,sigma_th_ci
,sigma_th_iv
in cm^2.The thermal (SR) processes also depend on
vth_CB
andvth_VB
, in cm/s.There are two models for IB mobility.
simple_mobility_model=True
uses with constantmu_I
.simple_mobility_model=False
changesmu_I
with filling fractionf
in the IB, so mobility ismu_I
whenf=0
and0
whenf=1
.For details, see
IntermediateBand
insimudo/physics/poisson_drift_diffusion1.py1
- Optical absorption
Black body radiation with solar temperature
Ts
(K) withX
suns concentration in incident from the left.Absorptions are nonoverlapping, so each photon can only be absorbed by highest-energy transition (CV, CI, IV) consistent with conservation of energy.
IB absorption processes depend on IB filling, so optical problem is solved self-consistently.
- Numerical parameters
Meshes geometrically expand away from interfaces with initial mesh size
mesh_start
(um) and expansion factormesh_factor
. The maximum mesh spacing ismesh_max
(um)
Results are output in the dark (I=0) and at whatever specified X
(I=1) at the set of applied voltages V_exts
(V)
simudo.example.fourlayer.fourlayer_example module¶
Construct a FSF-p-IB-n layered structure as described in fourlayer.py
Functions:
simudo_multiplexer()
:Given params dict, set up yaml files suitable for calling
fourlayer.run()
Run all of the requested simulationsResults will be stored in the folder
experiment_folder
. If multiplexing is requested withmultiplex_keys
, results of each run are inexperiment_folder/n
for n=0,1,.. If optimizing over parameteroptimize_key
,scipy.fminbound()
is used to optimize efficiencyProduces short circuit band diagram and JV curve if
sc_band_diagrams
orjv_curve
areTrue
.If
multiprocess=True
, the various runs from the multiplexing will be sent to different processors
optimizer()
: Called by simudo_multiplexer to optimize efficiency over one parameter
efficiency_analysis()
: Find efficiency
shortcircuitbanddiagram()
:Make band diagram at short circuit and save as png
jv_curve()
: Make JV curve and save as png
Parameters described in source below and in fourlayer.py
simudo.example.fourlayer.sweep_extraction module¶
-
class
simudo.example.fourlayer.sweep_extraction.
SweepData
(folder, parameter_name='pd_V')[source]¶ Bases:
object
Extracts data from fourlayer simudo runs
- Parameters
folder (str) – Location of
plot_meta
files.parameter_name (str, optional) – Sweep parameter name, usually
pd_V
for a voltage sweep (but wasa parameter
at some point in history). (default:"pd_V"
)
Notes
The most important properties are:
jv
: Extract j, v, p as pandas dataframempp_row
: Determine which file contains data closest to max power pointvoc_row
: Determine which file contains data closest to open circuitv_row
: Determine which file contains data closest to specified voltageget_spatial_data
: Read in spatial data for plotting from specified fileIB_mask
: Mask suitable for plotting properties only in IB regionThe output of the
SweepData.jv()
can be given toIV_Analysis.IV_params()
to find the max power point and efficiencyExample
data = SweepData(filename) spatial = data.get_spatial_data(data.mpp_row) IB_mask = data.IB_mask(spatial) IB_band_diagram(spatial,IB_mask)
-
jv
¶ Create a dataframe with j, v, p and names of files that contain those data
-
mpp_row
¶
-
params
¶
-
voc_row
¶
simudo.example.fourlayer.IV_Analysis module¶
-
class
simudo.example.fourlayer.IV_Analysis.
IV_params
(i, v, powersign=1.0)[source]¶ Bases:
object
Takes arrays of current and voltage, and interpolates Voc, Isc, and Pmax.
voc
andisc
are linearly interpolated,pmax
is found with a spline fit.If v and i are in V and A respectively, then pmax is in W.
If the the power quadrant has negative I (as for Simudo), use optional argument
powersign=-1.0
.Example
p = iv_params(current_array, voltage_array) print(p.voc, p.isc, p.pmax, p.ff, p.mppv, p.mppi)