Basic concepts and terminology#
The basic workflow in Eradiate is split into three phases:
Prepare a scene suitable for the targeted application.
Compute radiative transfer on the created scene using a Monte Carlo ray tracing method.
Collect, post-process and plot results yielded by the radiometric kernel.
In the following, Eradiate’s basic components are introduced in the framework of this workflow.
Eradiate’s low-level abstractions are handled by its radiometric kernel. This component consists of the Mitsuba 3 rendering system with custom extensions and it implements the Monte Carlo integration framework Eradiate uses to compute radiative transfer. The kernel takes as its input a kernel scene description specified as a Python dictionary and defining low-level representations of geometric shapes, radiative properties, but also radiation sensors and emitters and a Monte Carlo integration algorithm. When instructed to, the kernel loads the scene, performs the requested computation and yields its raw results.
Eradiate’s higher-level components are abstractions on top of the radiometric kernel and most users do not have to manipulate it directly.
Scene elements provide abstractions used to create input for the radiometric
kernel. They let users easily create scenes which would otherwise require
careful assembly. Scene elements combine kernel-level abstractions (shapes,
spectra, BSDFs, media, etc.) in a consistent way to describe physical items
used to populate a scene. For instance, a
Surface scene element combines a kernel shape
and a BSDF to describe the surface in a one-dimensional scene.
All scene element components derive from the
SceneElement abstract class and implement
methods which generates input data for the kernel.
Experiments are the highest-level component of the operational control chain in Eradiate. These are also the entry point for many users. Experiments interpret user-defined configuration and assemble scene elements so that the radiometric kernel can perform all necessary computations and yield the data requested by the user.
Experiments are also the most specialised component of Eradiate. The long-term goal is to allow users to create dedicated applications for highly specific purposes if their use case is not covered well by existing experiments. Eradiate ships experiments written as specialised classes meant to be used in a script or an interactive console. However, in a broader sense, an interactive Jupyter Lab session where a user would assemble their scene and execute a computation can also be seen as an experiment.
The one-dimensional experiment
simulates radiative transfer in pseudo-one-dimensional geometries.
Its configuration uses concepts with which Earth observation scientists
should be familiar. The underlying machinery then breaks down this
description into a set of kernel scene specifications, accounting for various
constraints to ensure that the produced results are correct. The kernel scene
dictionary is then passed to the radiometric kernel to perform Monte Carlo
ray tracing simulations, and the experiment object then collects the results
and post-processes them.
A top-of-atmosphere radiance-based measure (e.g. BRF) is specified to the
AtmosphereExperiment as a
MultiDistantMeasure. This measure object is
then translated into a mdistant kernel sensor
plugin specification. The experiment object then runs the Monte Carlo ray
tracing simulations and collects leaving radiance values. Radiance estimates
are then further post-processed to compute reflectance quantities (BRF and
- Data store#
A location from where Eradiate fetches its shipped data. Data stores can be offline (directories) or online.
A high-level description of a complete simulation including the scene, simulation parameters and post-processing routines.
A kernel-level component which defines how samples collected by a sensor are stored in memory during kernel runs. This terminology originates from the graphics community and is a reference to cameras.
A kernel-level component which implements a Monte Carlo ray tracing algorithm. Eradiate provides lightweight interface components to configure them.
- Kernel dictionary#
A dictionary describing the scene at the kernel level. Kernel dictionaries are created by combining kernel dict parts produced by the various scene elements in the scene and usually depend on contextual data.
A high-level interface to one or several sensors. Measures are associated to specific post-processing tasks managed by
- Operational mode#
A global configuration item for Eradiate defining how the spectral dimension of the radiometric computation is handled. Currently, Eradiate supports the line-by-line and correlated-k modes.
All kernel-level components required to perform a single radiative transfer simulation. This includes geometric shapes defining surfaces and volumes, radiative properties attached to them, emitters, sensors and an integrator.
A kernel component which records radiance samples and stores them to a film. Eradiate creates sensors from measures.