harmonica.DatasetAccessorPrismLayer#

class harmonica.DatasetAccessorPrismLayer(xarray_obj)[source]#

Defines dataset accessor for layer of prisms

Warning

This class is not intended to be initialized. Use the prism_layer accessor for accessing the methods and attributes of this class.

Attributes:
boundaries

Boundaries of the layer

dims

Return the dims tuple of the prism layer

shape

Return the number of prisms on each direction

size

Return the total number of prisms on the layer

spacing

Spacing between center of prisms

Methods

get_prism(indices)

Return the boundaries of the chosen prism

gravity(coordinates, field[, progressbar, ...])

Computes the gravity generated by the layer of prisms

to_pyvista([drop_null_prisms])

Return a pyvista UnstructuredGrid to plot the PrismLayer

update_top_bottom(surface, reference)

Update top and bottom boundaries of the layer

DatasetAccessorPrismLayer.get_prism(indices)[source]#

Return the boundaries of the chosen prism

Parameters:
indicestuple

Indices of the desired prism of the layer in the following order: (index_northing, index_easting).

Returns:
prismtuple

Boundaries of the prisms in the following order: west, east, south, north, bottom, top.

DatasetAccessorPrismLayer.gravity(coordinates, field, progressbar=False, density_name='density', thickness_threshold=None, **kwargs)[source]#

Computes the gravity generated by the layer of prisms

Uses harmonica.prism_gravity for computing the gravity field generated by the prisms of the layer. The density of the prisms will be assigned from the data_var chosen through the density_name argument. Ignores the prisms which top or bottom boundaries are np.nan``s. Prisms thinner than a given threshold can be optionally ignored through the ``thickness_threshold argument. All kwargs will be passed to harmonica.prism_gravity.

Parameters:
coordinateslist of arrays

List of arrays containing the easting, northing and upward coordinates of the computation points defined on a Cartesian coordinate system. All coordinates should be in meters.

fieldstr

Gravitational field that wants to be computed. The available fields are: - Gravitational potential: potential - Eastward acceleration: g_e - Northward acceleration: g_n - Downward acceleration: g_z - Diagonal tensor components: g_ee, g_nn, g_zz - Non-diagonal tensor components: g_en, g_ez, g_nz

progressbarbool (optional)

If True, a progress bar of the computation will be printed to standard error (stderr). Requires numba_progress to be installed. Default to False.

density_namestr (optional)

Name of the property layer (or data_var of the xarray.Dataset) that will be used for the density of each prism in the layer. Default to "density"

thickness_thresholdfloat or None

Prisms thinner than this threshold will be ignored in the forward gravity calculation. If None, every prism with non-zero volume will be considered. Default to None.

Returns:
resultarray

Gravitational potential is returned in :math:` ext{J}/ ext{kg}`, acceleration components in mGal, and tensor components in Eotvos.

DatasetAccessorPrismLayer.to_pyvista(drop_null_prisms=True)[source]#

Return a pyvista UnstructuredGrid to plot the PrismLayer

Parameters:
drop_null_prismsbool (optional)

If True, prisms with zero volume or with any numpy.nan as their top or bottom boundaries won’t be included in the pyvista.UnstructuredGrid. If False, every prism in the layer will be included. Default True.

Returns:
pv_gridpyvista.UnstructuredGrid

pyvista.UnstructuredGrid containing each prism of the layer as a hexahedron along with their properties.

DatasetAccessorPrismLayer.update_top_bottom(surface, reference)[source]#

Update top and bottom boundaries of the layer

Change the values of the top and bottom coordinates based on the passed surface and reference. The top and bottom boundaries of every prism will be equal to the corresponding surface and reference values, respectively, if surface is above the reference on that point. Otherwise the top and bottom boundaries of the prism will be equal to its corresponding reference and surface, respectively.

Parameters:
surface2d-array

Array used to create the uppermost boundary of the prisms layer. All heights should be in meters. On every point where surface is below reference, the surface value will be used to set the bottom boundary of that prism, while the reference value will be used to set the top boundary of the prism.

referencefloat or 2d-array

Reference surface used to create the lowermost boundary of the prisms layer. It can be either a plane or an irregular surface passed as 2d array. Height(s) must be in meters.


Examples using harmonica.DatasetAccessorPrismLayer#

Layer of prisms

Layer of prisms

Plot a prism layer in 3D

Plot a prism layer in 3D