Module: photocurrent

This module provide some useful functions related to photocurrent of solar cells.

Methods in this module

Copyright 2017 Kan-Hua Lee, Toyota Technological Institute

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

pypvcell.photocurrent.calc_jsc(input_illumination, qe)[source]

Calculate Jsc from given QE and illumination

Parameters:
  • input_illumination (Illumination) – illumination spectrum
  • qe (Spectrum) – QE
Returns:

value of Jsc (A/m^2)

pypvcell.photocurrent.calc_jsc_from_eg(input_illumination, eg)[source]

Calculate the Jsc by assuming 100% above-band-gap EQE

Parameters:
  • input_illumination (Illumination) – illumination (class)
  • eg – Band gap of the material (in eV)
Returns:

value of Jsc (A/m^2)

pypvcell.photocurrent.conv_abs_to_qe(absorption, layer_thickness)[source]

Calculate the QE (absorptivity) from absorption coefficient and layer_thickness Note that the unit of the absorption should match the layer thickness. For example, if the unit of absorption is 1/meter, the layer_thickness should be meter.

Parameters:
  • absorption (Spectrum) – Spectrum class instance, the unit of absorption: 1/m
  • layer_thickness (float) – layer thickness, unit: m
Returns:

QE, a Spectrum class instance

Return type:

Spectrum

pypvcell.photocurrent.eqe_to_iqe(eqe, reflectivity)[source]

calculate internal quantum efficiency from external quantum efficiency

Parameters:eqe

:type Spectrum :param reflectivity: :type Spectrum :return: IQE :type Spectrum

pypvcell.photocurrent.gen_step_qe(bandEdge_in_eV, qe_in_ratio, qe_below_edge=1e-06, wl_bound=(0.0001, 5))[source]

Generate a staircase QE array. Same as gen_square_qe_array() except that it generates a Spectrum class object. EQE(E)= qe if E >= Eg EQE(E)= z (z~0) if E<Eg

Parameters:
  • bandEdge_in_eV (float) – set Eg
  • qe_in_ratio (float) – set qe value (qe) above Eg
  • qe_below_edge – set qe value (z) below Eg
  • wl_bound (Tuple[float,float]) – tuple: (minE, maxE), The minimum and maximum of photon energy of this array
Returns:

A Spectrum object

Return type:

Spectrum

pypvcell.photocurrent.gen_step_qe_array(bandEdge_in_eV, qe_in_ratio, qe_below_edge=0.001, wl_bound=(0.01, 5))[source]

Generate a staircase QE array : EQE(E)= qe if E >= Eg EQE(E)= z (z~0) if E<Eg

Parameters:
  • bandEdge_in_eV (float) – set Eg
  • qe_in_ratio (float) – set qe value (qe) above Eg
  • qe_below_edge – set qe value (z) below Eg
  • wl_bound (Tuple[float,float]) – tuple: (minE, maxE), The minimum and maximum of photon energy of this array
Returns:

A 4x2 array, the first column is photon energy (in eV) and the second column is the qe

Return type:

np.ndarray

pypvcell.photocurrent.lambert_abs(absorption: typing.List[pypvcell.spectrum.Spectrum], layer_thicknesses: typing.List[float])[source]

Calculate transmission of stacked layers using Beer-Lambert’s law

Parameters:
  • absorption – an array absorption class, the unit of absorption should be 1/m
  • layer_thicknesses – an array of layer thickness
Returns:

transmission