imod.util.RegridderWeightsCache#

class imod.util.RegridderWeightsCache(max_cache_size: int = 6)[source]#

This class stores any number of regridders that can regrid a single source grid to a single target grid. By storing the regridders, we make sure the regridders can be re-used for different arrays on the same grid. Regridders are stored based on their type (see these docs) and planar coordinates (x, y). This is important because computing the regridding weights is a costly affair.

Parameters:

max_cache_size (int) – The maximum number of regridders that can be stored in the cache. If the cache is full, the oldest regridder will be removed.

Examples

Different method, regridder weights are reused.

>>> cache = imod.util.RegridderWeightsCache()
>>> regridder1 = cache.get_regridder(source, target, RegridderType.OVERLAP, "mean")
>>> regridder2 = cache.get_regridder(source, target, RegridderType.OVERLAP, "mode")
>>> print(cache.weights_cache)

Different regridder type, different regridder weights.

>>> cache = imod.util.RegridderWeightsCache()
>>> regridder1 = cache.get_regridder(source, target, RegridderType.OVERLAP, "mean")
>>> regridder2 = cache.get_regridder(source, target, RegridderType.RELATIVEOVERLAP, "mean")
>>> print(cache.weights_cache)

Different source geometries, different regridder weights.

>>> cache = imod.util.RegridderWeightsCache()
>>> regridder1 = cache.get_regridder(source_xy1, target, RegridderType.OVERLAP, "mean")
>>> regridder2 = cache.get_regridder(source_xy2, target, RegridderType.OVERLAP, "mean")
>>> print(cache.weights_cache)

Different source grids with same geometry, regridder weights are reused.

>>> cache = imod.util.RegridderWeightsCache()
>>> source2 = xr.ones_like(source)
>>> regridder1 = cache.get_regridder(source, target, RegridderType.OVERLAP, "mean")
>>> regridder2 = cache.get_regridder(source2, target, RegridderType.OVERLAP, "mean")
>>> print(cache.weights_cache)
__init__(max_cache_size: int = 6) None[source]#

Methods

__init__([max_cache_size])

get_regridder(source_grid, target_grid, ...)

Returns a regridder of the specified type and with the specified method.