Multi-dimensional model represents data in relation to the multiple dimensions:
Items
– attributes dimensionSpatialDomain
– spatial dimensionTemporalDomain
– time dimensionVerticalDomain
– vertical dimension (optional)
Multi dimensional model is represented as an enumerable of slices. Slice can be understood as a data column, this means an array of data measured for one attribute and one time step and one layer across the whole spatial domain. Therefore it can be also understood as column model.
Slice dimensions:
ItemIndex
– refers to index of item (attribute) inItems
collectionTimestepIndex
– refers to an index of a time step in storedTemporalDomain
objectLayer
– refers to an index of a layer stored inSpatialDomain.VerticalDomain
object-
- If item has no layers, then value is -1
Spatial domains¶
Equidistant grid¶
Distances between cells are equidistant. Defined by:
X0
- X coordinate of reference point.Nx
- number of cells in X directionDx
- size of the cell in X directionY0
- Y coordinate of reference point.Ny
- number of cells in Y directionDy
- size of the cell in Y direction
There a two main types differed by cell alignment and how the position of X0, Y0 coordinates is interpreted :
Non-equidistant grid¶
Grid is defined by the array of coordinates in X, Y direction. There are three main types differed by cell alignment and how the positions of coordinates are interpreted:
Mesh¶
MeshDomain
- is defined by the collection of mesh nodes and by collection of mesh elements.
MeshNode
- is defined by its x, y, z coordinates.
MeshElement
- is defined by the collection of NodeIndices
, each node index refers to the node in Nodes
collection.
3D Grid¶
3D grid defines its VerticalDomain
, which contains a vertical definition. Each VerticalDomain
has one IVerticalTransformation
, currently we support two type of transformations:
EquidistantTransformation
- layers are distributed at the same distance from another
NonEquidistantTransformation
- layers are not distributed at the same distance from another
3D Mesh – Static layers¶
3D grid defines its VerticalDomain
, which contains a vertical definition. Each VerticalDomain
has one IVerticalTransformation
, currently we support two type of transformations:
EquidistantTransformation
- layers are distributed at the same distance from another
NonEquidistantTransformation
- layers are not distributed at the same distance from another
3D Mesh – Dynamic layers¶
Definition of layers differ across the time steps. Layers are defined by ZLevelItem
and Z-coordinates across the time steps are stored in special Slice
:
- Layer index is always -1
- Data are not stored per element, but per nodes of 3D elements: [Z0, Z1,…, Zn]
- VerticalDomain.Transformation
is of type EmptyTransformation
There are two types of dynamic layers:
Sigma layers -Layer must be defined for each 2D element. Z-coordinates may differ across the elements.
Sigma-Z layers -Layer may not be defined for each 2D element.
3D Layered vs. Non-Layered model¶
3D models can be represented in two states. We differentiate between two state of models, based on whether the elements of a SpatialDomain
consist from 3D-elements or the spatial domain is just a vertical projection of 3D domain and therefore consist just from 2D-elements + VerticalDomain
. Both states of a domain are convertible between each other.
Non-Layered model¶
- Spatial domain has no vertical domain
- 3D models have DFS domain extensions:
-
- Dfs3DEqGrid
-
- Dfs3DMeshDomain
- Elements of Spatial domain are 3D elements Layer index in slices = -1
Layered model¶
- Spatial domain has vertical domain (
where TSpatialDomain : IVerticalSpatialDomain
) - Elements of Spatial domain are 2D elements
Examples¶