eradiate.scenes.spectra.SolarIrradianceSpectrum#
- class eradiate.scenes.spectra.SolarIrradianceSpectrum(id=None, dataset='coddington_2021-1_nm', scale=1.0, datetime=None)[source]#
Bases:
Spectrum
Solar irradiance spectrum [
solar_irradiance
].This scene element produces the scene dictionary required to instantiate a kernel plugin using the Sun irradiance spectrum. The data set used by this element is controlled by the
dataset
field.- Parameters:
id (
str
, optional) – Identifier of the current scene element.dataset (
Dataset
orstr
or path-like, optional, default:"coddington_2021-1_nm"
) – Solar irradiance spectrum dataset. If a xarray.Dataset is passed, the dataset is used as is (refer to the data guide for the format requirements of this dataset).If a path is passed, the converter tries to open the corresponding file on the hard drive; should that fail, it queries the Eradiate datastore with that path.If a string is passed, it is interpreted as a Solar irradiance spectrum identifier (see Solar irradiance spectra for the list);scale (
float
ordatetime
orstr
, default:1.0
) – Arbitrary scaling factor. This scaling factor is applied in addition to the datetime-based scaling controlled by the datetime parameter.datetime (
datetime
orstr
, optional) – Date for which the spectrum is to be evaluated. An ISO string can be passed and will be interpreted bydateutil.parser.parse()
. This parameter scales the irradiance spectrum to account for the seasonal variation of the Earth-Sun distance. This scaling is applied in addition to the arbitrary scaling controlled by the scale parameter.
- Fields:
See also
Notes
The spectral range of the data sets shipped can vary and an attempt for use outside the supported spectral range will raise a
ValueError
upon callingkernel_dict()
.When the
datetime
field is set, the spectrum is automatically scaled to account for the seasonal variations of the Earth-Sun distance using the ephemeris ofastropy.coordinates.get_sun()
. The dataset is assumed to be normalized to an Earth-Sun distance of 1 AU. This will trigger the import ofastropy.coordinates
and consume a significant amount of memory (150 MiB with astropy v5.1).The
scale
field can be used to apply additional arbitrary scaling. It is mostly used for debugging purposes. It can also be used to rescale user-defined spectra normalized at an Earth-Sun distance different from 1 AU.The evaluation method depends on the active mode:
in
mono_*
modes, the spectrum is evaluated at the spectral context wavelength;in
ckd_*
modes, the spectrum is evaluated as the average value over the spectral context bin (the integral is computed using a trapezoid rule).
The produced kernel dictionary automatically adjusts its irradiance units depending on the selected kernel default units.
- eval(si)#
Evaluate spectrum at a given spectral index.
- Parameters:
si (
SpectralIndex
) – Spectral index.- Returns:
value (
quantity
) – Evaluated spectrum.
Notes
This method dispatches evaluation to specialized methods depending on the spectral index type.
- eval_ckd(w, g)[source]#
Evaluate spectrum in CKD modes.
- Parameters:
- Returns:
value (
quantity
) – Evaluated spectrum as an array with shapew
.
Notes
It is assumed that
w
andg
have the same shape. In CKD mode, it is assumed that all spectra—except that of the absorption coefficient—are uniform over the spectral bin. These spectra are evaluated at the spectral bin center wavelength.
- integral(wmin, wmax)[source]#
Compute the integral of the spectrum on a given interval.
- Parameters:
- Returns:
value (
quantity
orndarray
) – Computed integral value, in units consistent with the specified quantity.
Warning
If the
quantity
field is unset (i.e. left to its default valueNone
), the output of this method will inherit the units of value fields (the actual policy depends on the implementation, and unitless values are intepreted as dimnesionless). Note that leaving thequantity
field unset is discouraged.
- traverse(callback)#
Traverse this scene element and collect kernel dictionary template and parameter update map contributions.
- Parameters:
callback (
SceneTraversal
) – Callback data structure storing the collected data.
- update()#
Enforce internal state consistency. This method should be called when fields are modified. It is automatically called as a post-init step.
- property objects#
Map of child objects associated with this scene element.
- Returns:
dict
– A dictionary mapping object names to a corresponding object to be inserted in the Eradiate scene graph.
- property params#
- Returns:
dict[str
,UpdateParameter
] orNone
– A dictionary mapping parameter paths, consisting of dot-separated strings, to a corresponding update protocol.
See also
- property template#
Kernel dictionary template contents associated with this scene element.
- Returns:
dict
– A flat dictionary mapping dot-separated strings describing the path of an item in the nested scene dictionary to values. Values may be objects which can be directly used by themitsuba.load_dict()
function, orInitParameter
instances which must be rendered.
See also