esmf_regrid.esmf_regridder module#
Provides ESMF representations of grids/UGRID meshes and a modified regridder.
- class esmf_regrid.esmf_regridder.GridInfo(lons, lats, lonbounds, latbounds, crs=None, circular=False, areas=None, mask=None, center=False)[source]#
Bases:
SDOClass for handling structured grids.
This class holds information about lat-lon type grids. That is, grids defined by lists of latitude and longitude values for points/bounds (with respect to some coordinate reference system i.e. rotated pole). It contains methods for translating this information into
esmpyobjects. In particular, there are methods for representing as aesmpy.api.grid.Gridand as aesmpy.api.field.Fieldcontaining thatGrid. This esmpyFieldis designed to contain enough information for area weighted regridding and may be inappropriate for otheresmpyregridding schemes.Create a
GridInfoobject describing the grid.- Parameters:
lons (
ArrayLike) – A 1D or 2D array or list describing the longitudes of the grid points.lats (
ArrayLike) – A 1D or 2D array or list describing the latitudes of the grid points.lonbounds (
ArrayLike) – A 1D or 2D array or list describing the longitude bounds of the grid. Should have length one greater thanlons.latbounds (
ArrayLike) – A 1D or 2D array or list describing the latitude bounds of the grid. Should have length one greater thanlats.crs (
cartopy.crs.CRS, optional) – Describes how to interpret the above arguments. IfNone, defaults toGeodetic.circular (bool, default=False) – Describes if the final longitude bounds should be considered contiguous with the first.
areas (
ArrayLike, optional) – Array describing the areas associated with each face. IfNone, thenesmpywill use its own calculated areas.mask (
ArrayLike, optional) – Array describing which elementsesmpywill ignore.center (bool, default=False) – Describes if the center points of the grid cells are used in regridding calculations.
- class esmf_regrid.esmf_regridder.RefinedGridInfo(lonbounds, latbounds, resolution=3, crs=None, mask=None)[source]#
Bases:
GridInfoClass for handling structured grids represented in
esmpyin higher resolution.A specialised version of
GridInfo. Designed to provide higher accuracy conservative regridding for rectilinear grids, especially those with particularly large cells which may not be well represented byesmpy. This class differs fromGridInfoprimarily in the way it represents itself as aFieldinesmpy. ThisFieldis designed to be a higher resolution version of the given grid and should contain enough information for area weighted regridding but may be inappropriate for otheresmpyregridding schemes.Create a
RefinedGridInfoobject describing the grid.- Parameters:
lonbounds (
ArrayLike) – A 1D array or list describing the longitude bounds of the grid. Must be strictly increasing (for example, if a bound goes from 170 to -170 consider transposing -170 to 190).latbounds (
ArrayLike) – A 1D array or list describing the latitude bounds of the grid. Must be strictly increasing.resolution (int, default=400) – A number describing how many latitude slices each cell should be divided into when passing a higher resolution grid to ESMF.
crs (
cartopy.crs.CRS, optional) – Describes how to interpret the above arguments. IfNone, defaults toGeodetic.
- class esmf_regrid.esmf_regridder.Regridder(src, tgt, method=Method.CONSERVATIVE, precomputed_weights=None, esmf_args=None)[source]#
Bases:
objectRegridder for directly interfacing with
esmpy.Create a regridder from descriptions of horizontal grids/meshes.
Weights will be calculated using
esmpyand stored as ascipy.sparse.csr_matrixfor use in regridding. If precomputed weights are provided, these will be used instead of calculating viaesmpy.- Parameters:
src (
MeshInfoorGridInfo) – Describes the source mesh/grid. Data supplied to this regridder should be in anumpy.ndarraywhose shape is compatible withsrc.tgt (
MeshInfoorGridInfo) – Describes the target mesh/grid. Data output by this regridder will be anumpy.ndarraywhose shape is compatible withtgt.method (
Constants.Method) – The method to be used to calculate weights.precomputed_weights (
scipy.sparse.spmatrix, optional) – IfNone,esmpywill be used to calculate regridding weights. Otherwise,esmpywill be bypassed andprecomputed_weightswill be used as the regridding weights.esmf_args (dict, optional) – A dictionary of arguments to pass to ESMF.
- regrid(src_array, norm_type=NormType.FRACAREA, mdtol=1)[source]#
Perform regridding on an array of data.
- Parameters:
src_array (
ArrayLike) – Array whose shape is compatible withself.src.norm_type (
Constants.NormType) – EitherConstants.NormType.FRACAREAorConstants.NormType.DSTAREA. Determines the type of normalisation applied to the weights.mdtol (float, default=1) – A number between 0 and 1 describing the missing data tolerance. Depending on the value of
mdtol, if a cell in the target grid is not sufficiently covered by unmasked cells of the source grid, then it will be masked.mdtol=1means that only target cells which are not covered at all will be masked,mdtol=0means that all target cells that are not entirely covered will be masked, andmdtol=0.5means that all target cells that are less than half covered will be masked.
- Returns:
An array whose shape is compatible with
self.tgt.- Return type: