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 or str 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 or datetime or str, 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 or str, optional) – Date for which the spectrum is to be evaluated. An ISO string can be passed and will be interpreted by dateutil.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:
  • id (str or None) – Identifier of the current scene element.

  • dataset (Dataset) – Solar irradiance spectrum dataset.

  • scale (float or datetime) – Arbitrary scaling factor.

  • datetime (datetime or None) – Date for which the spectrum is to be evaluated.

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 calling kernel_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 of astropy.coordinates.get_sun(). The dataset is assumed to be normalized to an Earth-Sun distance of 1 AU. This will trigger the import of astropy.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:
  • w (quantity) – Spectral bin center wavelength.

  • g (float) – Absorption coefficient cumulative probability.

Returns:

value (quantity) – Evaluated spectrum as an array with shape w.

Notes

It is assumed that w and g 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.

eval_mono(w)[source]#

Evaluate spectrum in monochromatic modes.

Parameters:

w (quantity) – Wavelength.

Returns:

value (quantity) – Evaluated spectrum as an array with the same shape as w.

integral(wmin, wmax)[source]#

Compute the integral of the spectrum on a given interval.

Parameters:
  • wmin (quantity) – Integration interval’s lower bound.

  • wmax (quantity) – Integration interval’s upper bound.

Returns:

value (quantity or ndarray) – Computed integral value, in units consistent with the specified quantity.

Warning

If the quantity field is unset (i.e. left to its default value None), 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 the quantity 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] or None – A dictionary mapping parameter paths, consisting of dot-separated strings, to a corresponding update protocol.

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 the mitsuba.load_dict() function, or InitParameter instances which must be rendered.