Other optical methods¶
Finally, the optical properties of the solar cell can be defined with a simple BeerLambert formalism and also provided externally by the user. These section describe the methods that are called internally by the solar cell solver in these two cases.
BeerLambert law¶

solcore.optics.beer_lambert.
solve_beer_lambert
(solar_cell: solcore.solar_cell.SolarCell, wavelength: numpy.ndarray[Any, numpy.dtype[ScalarType]], **kwargs) → None[source]¶ Calculates RAT of a solar cell object using the BeerLambert law.
Reflection is not really calculated and needs to be provided externally, otherwise it is assumed to be zero.
 Args:
 solar_cell: A solar_cell object
 wavelength: Array of wavelegth at which the optics are calculated.
 Return:
 None
External optics¶

solcore.optics.external_optics.
solve_external_optics
(solar_cell: solcore.solar_cell.SolarCell, wavelength: numpy.ndarray[Any, numpy.dtype[ScalarType]], position: numpy.ndarray[Any, numpy.dtype[ScalarType]], **kwargs) → None[source]¶ Calculates RAT of a solar cell from external data
It also prepares the structure for further calculations. The external data that must be provided in the solar cell definition is:
 external_reflected: a function that provides the fraction of reflected light at the specified wavelengths (in m).
 external_absorbed: a function that provides an array with the differential absorption at a depth Z (in m) at the specified wavelengths.
Note that both are functions of a single variable  wavelength in the first case and position in the second  and that the latter provides as output an array at the wavelengths indicated in the options.
 Args:
 solar_cell: A solar_cell object
 wavelength: Array of wavelegth at which the optics are calculated.
 position: Array of positions in the z direction to calculate the absorption vs depth.
 Return:
 None