Data Class¶
- class plask.Data¶
Data returned by field providers.
This class is returned by field providers and receivers and contains the values of the computed field at specified mesh points. It can be passed to the field plotting and saving functions or even fed to some receivers. Also, if the mesh is a rectangular one, the data can be converted into an multi-dimensional numpy array.
You may access the data by indexing the
Data
object, where the index always corresponds to the index of the mesh point where the particular value is specified. Hence, you may also iterateData
objects as normal Python sequences.You may construct the data object manually from a numpy array and a mesh. The constructor always take two argumentsa as specified below:
- Parameters:
array – The array with a custom data. It must be either a one dimensional array with sequential data of the desired type corresponding to the sequential mesh points or (for the rectangular meshes) an array with the same shape as returned by the
array
attribute.mesh – The mesh specifying where the data points are located. The size of the mesh must be equal to the size of the provided array. Furthermore, when constructing the data from the structured array, the mesh ordering must match the data stride, so it is possible to avoid data copying (defaults for both are fine).
- Returns:
Data based on the specified mesh and array.
- Return type:
plask._Data
Examples
To create the data from the flat sequential array:
>>> msh = plask.mesh.Rectangular2D([1, 2, 3], [10, 20]) >>> Data(array([1., 2., 3., 4., 5., 6.]), msh) <plask.Data at 0x4698938>
As the
msh
is a rectangular mesh, the data can be created from a structured array with the shape (3, 2), as the first and second mesh dimensions are 3 and 2, respectively:>>> dat = Data(array([[1., 2.], [3., 4.], [5., 6.]]), msh) >>> dat[0] 1.0
By adding one more dimension, you can create an array of vectors:
>>> d = Data(array([[[1.,0.], [2.,0.]], [[3.,0.], [4.,1.]], ... [[5.,1.], [6.,1.]]]), msh) >>> d.dtype plask.vec >>> d[1] plask.vec(2, 0) >>> d.array[:,:,0] # retrieve first components of all the vectors array([[1., 2.], [3., 4.], [5., 6.]])
Construction of the data objects is efficient i.e. no data is copied in the memory from the provided array.
Methods¶
|
Interpolate data to a different mesh. |
Attributes¶
Array formatted by the mesh. |
|
The mesh at which the data was obtained. |
Static Attributes¶
Value type. |
Descriptions¶
Method Details¶
- Data.interpolate(mesh, interpolation, geometry=None)¶
Interpolate data to a different mesh.
This method interpolated data into a different mesh using specified interpolation method. This is exactly the same interpolation that is usually done by solvers in their providers.
- Parameters:
mesh – Mesh to interpolate into.
interpolation – Requested interpolation method.
geometry – Optional geometry, over which the interpolation is performed.
- Returns:
Interpolated data.
- Return type:
plask._Data
Attribute Details¶
- Data.array = <property object>¶
Array formatted by the mesh.
This attribute is available only if the :attr:~plask.Data.mesh` is a rectangular one. It contains the held data reshaped to match the shape of the mesh (i.e. the first dimension is equal the size of the first mesh axis and so on). If the data type is
plask.vec
then the array has one additional dimension equal to 2 for 2D vectors and 3 for 3D vectors. The vector components are stored in this dimension.Example
>>> msh = plask.mesh.Rectangular2D(plask.mesh.Rectilinear([1, 2]), ... plask.mesh.Rectilinear([10, 20])) >>> dat = Data(array([[[1., 0.], [2., 0.]], [[3., 1.], [4., 1.]]]), msh) >>> dat.array[:,:,0] array([[1., 2.], [3., 4.]])
Accessing this field is efficient, as only the numpy array view is created and no data is copied in the memory.
- Data.mesh = <property object>¶
The mesh at which the data was obtained.
The sequential points of this mesh always correspond to the sequential points of the data. This implies that
len(data.mesh) == len(data)
is always True.
Static Attribute Details¶
- plask.Data.dtype¶
Value type.
This attribute is the type of a single element in this vector.