Multidimensional 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 :
Nonequidistant 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 Zcoordinates 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. Zcoordinates may differ across the elements.
SigmaZ layers Layer may not be defined for each 2D element.
3D Layered vs. NonLayered 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 3Delements or the spatial domain is just a vertical projection of 3D domain and therefore consist just from 2Delements + VerticalDomain
. Both states of a domain are convertible between each other.
NonLayered 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¶