cfdm.DomainTopology¶
-
class
cfdm.
DomainTopology
(cell=None, properties=None, data=None, source=None, copy=True, _use_data=True)[source]¶ Bases:
cfdm.mixin.netcdf.NetCDFVariable
,cfdm.mixin.topology.Topology
,cfdm.mixin.propertiesdata.PropertiesData
,cfdm.mixin.files.Files
,cfdm.core.domaintopology.DomainTopology
A domain topology construct of the CF data model.
A domain topology construct defines the geospatial topology of cells arranged in two or three dimensions in real space but indexed by a single (discrete) domain axis construct, and at most one domain topology construct may be associated with any such domain axis. The topology describes topological relationships between the cells - spatial relationships which do not depend on the cell locations - and is represented by an undirected graph, i.e. a mesh in which pairs of nodes are connected by links. Each node has a unique arbitrary identity that is independent of its spatial location, and different nodes may be spatially co-located.
The topology may only describe cells that have a common spatial dimensionality, one of:
Point: A point is zero-dimensional and has no boundary vertices.
- Edge: An edge is one-dimensional and corresponds to a line
connecting two boundary vertices.
- Face: A face is two-dimensional and corresponds to a surface
enclosed by a set of edges.
Each type of cell implies a restricted topology for which only some kinds of mesh are allowed. For point cells, every node corresponds to exactly one cell; and two cells have a topological relationship if and only if their nodes are connected by a mesh link. For edge and face cells, every node corresponds to a boundary vertex of a cell; the same node can represent vertices in multiple cells; every link in the mesh connects two cell boundary vertices; and two cells have a topological relationship if and only if they share at least one node.
A domain topology construct contains an array defining the mesh, and properties to describe it. There must be a property indicating the spatial dimensionality of the cells. The array values comprise the node identities, and all array elements that refer to the same node must contain the same value, which must differ from any other value in the array. The array spans the domain axis construct and also has a ragged dimension, whose function depends on the spatial dimensionality of the cells.
For each point cell, the first element along the ragged dimension contains the node identity of the cell, and the following elements contain in arbitrary order the identities of all the cells to which it is connected by a mesh link.
For each edge or face cell, the elements along the ragged dimension contain the node identities of the boundary vertices of the cell, in the same order that the boundary vertices are stored by the auxiliary coordinate constructs. Each boundary vertex except the last is connected by a mesh link to the next vertex along the ragged dimension, and the last vertex is connected to the first.
When a domain topology construct is present it is considered to be definitive and must be used in preference to the topology implied by inspection of any other constructs, which is not guaranteed to be the same.
In CF-netCDF a domain topology construct can only be provided for a UGRID mesh topology variable. The information in the construct array is supplied by the UGRID “edge_nodes_connectivity” variable (for edge cells) or “face_nodes_connectivity” variable (for face cells). The topology for node cells may be provided by any of these three UGRID variables. The integer indices contained in the UGRID variable may be used as the mesh node identities, although the CF data model attaches no significance to the values other than the fact that some values are the same as others. The spatial dimensionality property is provided by the “location” attribute of a variable that references the UGRID mesh topology variable, i.e. a data variable or a UGRID location index set variable.
A single UGRID mesh topology defines multiple domain constructs and defines how they relate to each other. For instance, when “face_node_connectivity” and “edge_node_connectivity” variables are both present there are three implied domain constructs - one each for face, edge and point cells - all of which have the same mesh and so are explicitly linked (e.g. it is known which edge cells define each face cell). The CF data model has no mechanism for explicitly recording such relationships between multiple domain constructs, however whether or not two domains have the same mesh may be reliably determined by inspection, thereby allowing the creation of netCDF datasets containing UGRID mesh topology variables.
The restrictions on the type of mesh that may be used with a given cell spatial dimensionality excludes some meshes which can be described by an undirected graph, but is consistent with UGRID encoding within CF-netCDF. UGRID also describes meshes for three-dimensional volume cells that correspond to a volume enclosed by a set of faces, but how the nodes relate to volume boundary vertices is undefined and so volume cells are currently omitted from the CF data model.
See CF Appendix I “The CF Data Model”.
NetCDF interface
The netCDF variable name of the UGRID mesh topology variable may be accessed with the
nc_set_variable
,nc_get_variable
,nc_del_variable
, andnc_has_variable
methods.The netCDF4 HDF5 chunks may be accessed with the
nc_hdf5_chunksizes
,nc_set_hdf5_chunksizes
, andnc_clear_hdf5_chunksizes
methods.New in version (cfdm): 1.11.0.0
Initialisation
- Parameters
- cell:
str
, optional The cell type that indicates the spatial dimensionality of the cells, one of
'point'
(a 0-d point with no boundary vertices),'edge'
(a 1-d line connecting two boundary vertices), or'face'
(a 2-d surface enclosed by a set of edges).- properties:
dict
, optional Set descriptive properties. The dictionary keys are property names, with corresponding values.
Properties may also be set after initialisation with the
set_properties
andset_property
methods.- Parameter example:
properties={'long_name': 'face to node mapping'}
- data: data_like, optional
Set the data.
A data_like object is any object that can be converted to a
Data
object, i.e.numpy
array_like objects,Data
objects, and cfdm instances that containData
objects.The data also may be set after initialisation with the
set_data
method.- source: optional
Convert source, which can be any type of object, to a
DomainTopology
instance.All other parameters, apart from copy, are ignored and their values are instead inferred from source by assuming that it has the
DomainTopology
API. Any parameters that can not be retrieved from source in this way are assumed to have their default value.Note that if
x
is also aDomainTopology
instance thencfdm.DomainTopology(source=x)
is equivalent tox.copy()
.- copy:
bool
, optional If True (the default) then deep copy the input parameters prior to initialisation. By default the parameters are not deep copied.
- cell:
Inspection¶
Methods
A full description of the domain topology construct. |
|
Return the canonical identity. |
|
Return all possible identities. |
Attributes
Return a description of the construct type. |
Properties¶
Methods
Remove a property. |
|
Return a property. |
|
Whether a property has been set. |
|
Set a property. |
|
Return all properties. |
|
Remove all properties. |
|
Remove properties. |
|
Set properties. |
Topology¶
Methods
Remove the cell type. |
|
Return the cell type. |
|
Whether the cell type has been set. |
|
Set the cell type. |
|
Normalise the data values. |
Data¶
Methods
Apply masking as defined by the CF conventions. |
|
Remove the data. |
|
Return the data. |
|
Whether or not the construct has data. |
|
Set the data. |
|
Expand the shape of the data array. |
|
Persist data into memory. |
|
Remove size one axes from the data array. |
|
Permute the axes of the data array. |
Attributes
A numpy array deep copy of the data. |
|
The data. |
|
An independent numpy array of date-time objects. |
|
Data-type of the data elements. |
|
The number of data dimensions. |
|
A tuple of the data array’s dimension sizes. |
|
The number elements in the data. |
Bounds¶
Methods
Whether or not there are cell bounds. |
Miscellaneous¶
Methods
Return a deep copy. |
|
Join a together sequence of |
|
Returns the commands to create the domain topology construct. |
|
Whether two instances are the same. |
|
Uncompress the construct. |
|
Return the name of the file or files containing the data. |
|
The names of files containing the original data and metadata. |
|
Bring data on disk into memory. |
Aggregation¶
Methods
The directories of files containing parts of the data. |
|
Replace a file directory in-place. |
NetCDF¶
Methods
Remove the netCDF variable name. |
|
Return the netCDF variable name. |
|
Whether the netCDF variable name has been set. |
|
Set the netCDF variable name. |
Groups¶
Methods
Return the netCDF variable group hierarchy. |
|
Remove the netCDF variable group hierarchy. |
|
Set the netCDF variable group hierarchy. |
HDF5 chunks¶
Methods
Get the HDF5 chunking strategy for the data. |
|
Set the HDF5 chunking strategy. |
|
Clear the HDF5 chunking strategy for the data. |
Special¶
Methods
Called by the |
|
Return a subspace defined by indices. |
|
Called by the |
|
Called by the |
Docstring substitutions¶
Methods
Return the special docstring substitutions. |
|
Returns the substitutions that apply to methods of the class. |
|
Returns the class {{package}} substitutions package depth. |
|
Returns method names excluded in the class substitutions. |