Return thermal radiation as lambda

This commit is contained in:
Lukas Klass 2020-04-14 19:58:23 +02:00
parent 5f0af43b79
commit b809951fc7

View File

@ -3,7 +3,8 @@ from esbo_etc.classes.ITransmissive import ITransmissive
from esbo_etc.classes.SpectralQty import SpectralQty
from abc import abstractmethod
import astropy.units as u
from astropy.modeling.models import BlackBody
from esbo_etc.lib.helpers import gb_factory
from typing import Union, Callable
class AHotOpticalComponent(AOpticalComponent):
@ -12,7 +13,7 @@ class AHotOpticalComponent(AOpticalComponent):
"""
@abstractmethod
@u.quantity_input(wl_bins='length', temp=[u.Kelvin, u.Celsius])
def __init__(self, parent: ITransmissive, emissivity: SpectralQty, wl_bins: u.Quantity, temp: u.Quantity):
def __init__(self, parent: ITransmissive, emissivity: SpectralQty, temp: u.Quantity):
"""
Initialize a new optical component with thermal emission
@ -22,8 +23,6 @@ class AHotOpticalComponent(AOpticalComponent):
The parent element of the optical component from which the electromagnetic radiation is received.
emissivity : SpectralQty
The spectral emissivity coefficient for the optical surface.
wl_bins : Quantity
Wavelengths used for binning
temp: Quantity in Kelvin / Celsius
Temperature of the optical component
"""
@ -31,18 +30,22 @@ class AHotOpticalComponent(AOpticalComponent):
super().__init__(parent)
if temp > 0 * u.K:
# Create noise from black body model
bb = BlackBody(temperature=temp, scale=1. * u.W / (u.m ** 2 * u.nm * u.sr))
self._noise = SpectralQty(wl_bins, bb(wl_bins)) * emissivity
if isinstance(emissivity, SpectralQty):
bb = gb_factory(temp)
self._noise = SpectralQty(emissivity.wl, bb(emissivity.wl)) * emissivity
else:
bb = gb_factory(temp, emissivity)
self._noise = bb
else:
self._noise = 0
def ownNoise(self) -> SpectralQty:
def ownNoise(self) -> Union[SpectralQty, Callable, int, float]:
"""
Calculate the noise created by the optical component
Returns
-------
noise : SpectralQty
noise : Union[SpectralQty, Callable, int, float]
The noise created by the optical component
"""
return self._noise