Eradiate Release: v1.2.0
We just released Eradiate v1.2.0! This version updates our aerosol data format and our radiometric kernel. Let’s break things down.
New aerosol data format #
The major change in this update is the introduction and adoption of a new aerosol format. Several reasons motivated this update:
- The old format used two dimensions
iandjto store phase matrix coefficients. That was not storage efficient because many coefficients are equal to 0. - The old format used a shared cos θ grid for the angular dimension across the entire spectrum. However, the angular features of phase matrix coefficients depend on the wavelength, making optimizing a cos θ grid for a specific wavelength impossible. In such conditions, one would opt for a grid fine enough to resolve the angular features of all coefficients at all wavelengths, which increases the overall size of the dataset.
- The old format could not carry information of the Legendre polynomial expansion of the phase matrix, which is required to implement a DISORT backend.
To address these limitations, we designed the new Aer-Core v2 format. The specification is derived from libRadtran’s aerosol data format, with a few small differences. The aforementioned limitations are addressed as follows:
- Phase matrix coefficient indexing uses a single
phamatdimension, which uses a string coordinate (p11,p22, etc.). The size of that dimension is used to infer the shape of the aerosols. This storage layout does not waste space, and lookup performance remains unchanged. - The scattering angle is a non-dimension coordinate indexed against the wavelength and the scattering angle dimension. This means in practice that the scattering angle grid can change depending on the wavelength, which allows moving samples to match phase matrix features.
- An additional
pmomvariable is introduced to store Legendre coefficients.
Additional conveniences, such as conventional NaN padding of unused data ranges, are kept from libRadtran’s format. A notable difference is that the angular grid is common to all phase matrix coefficients for a given wavelength. This does not increase storage size in practice — the grid, although potentially refined to resolve all angular features, only needs to be stored once, instead of once per phase matrix coefficient. Lookup and interpolation performance is also not expected to suffer from this change, since any indexing inferred for one coefficient can be used without a new search to look up the others.
The old format is retroactively named Aer v1. Converters allow migrating Aer v1
and libRadtran data to Aer-Core v2. Shipped data is already converted and can
be installed as usual using the eradiate data CLI.
Similar to what we did for molecular absorption data, we decided to pack data
handling components into a data interface. The main motivation for this is that
it makes more sense to abstract out the data handling to a specific component,
which can then be composed with high-level components (such as ParticleLayer).
This replaces a plain xarray dataset and gives us the freedom to implement
custom, optimized interpolation and lookup logic.
This whole upgrade was undertaken to support the release of our DISORT backend: be sure to check our next blog post!
Kernel update to v0.5.0 #
This release includes some substantial updates to our radiometric kernel,
released as v0.5.0. It includes a new, experimental eovolpath integrator,
which supports:
- Local majorants (and, more generally, extrema) to improve the efficiency of null-collision methods in heterogeneous media such as clouds. This drastically reduces the amount of time spent on distance sampling in the atmosphere. We plan to support efficient, high-resolution data structures in the future to further optimize distance sampling performance.
- Variance reduction methods for clouds, the first of which is DDIS
(Detector Directional Importance Sampling). The other components of the
VROOM
variance reduction methods are being worked on, and will be added to
eovolpathas soon as they are validated.
These features are still experimental, and the eovolpath integrator remains
opt-in in this release.
Additionally, a new stokes_moment integrator fuses the stokes and moment
integrators and supports the calculation of the second moment of a Monte Carlo
sample for all Stokes vector components. This possibility has been removed in
Mitsuba 3.6, and we can now safely introduce it back. This effectively gives us
access to the Monte Carlo variance of all Stokes vector components.
Infrastructure upgrades #
Finally, we spent some time on improving our tooling and documentation. We notably released a dedicated kernel documentation website, linked to the main documentation. There, we will provide entry points useful when working with the expert interface. We also transferred there the plugin reference.
We hope you enjoy this new release! For more information, see the full release notes. If you have questions or find issues, please reach out on our Discussions page!