Source code for pyuff_ustb.objects.probes.curvilinear_array
import numpy as np
from pyuff_ustb.objects.probes.probe import Probe
from pyuff_ustb.objects.uff import (
compulsory_property,
dependent_property,
optional_property,
)
from pyuff_ustb.readers import LazyScalar
[docs]class CurvilinearArray(Probe):
""":class:`Uff` class to define a curvilinear array probe geometry.
:class:`CurvilinearArray` defines a array of regularly space elements on an arc in
the azimuth dimensions. Optionally it can hold each element width and height,
assuming the elements are rectangular.
Original authors:
Alfonso Rodriguez-Molares (alfonsom@ntnu.no)
"""
# Compulsory properties
@compulsory_property
def N(self) -> int:
"Number of elements"
return LazyScalar(self._reader["N"])
@compulsory_property
def pitch(self) -> float:
"Distance between the elements in the azimuth direction [m]"
return LazyScalar(self._reader["pitch"])
@compulsory_property
def radius(self) -> float:
"Radius of the curvilinear array [m]"
return LazyScalar(self._reader["radius"])
# Optional properties
@optional_property
def element_width(self) -> float:
"Width of the elements in the azimuth direction [m]"
return LazyScalar(self._reader["element_width"])
@optional_property
def element_height(self) -> float:
"Height of the elements in the elevation direction [m]"
return LazyScalar(self._reader["element_height"])
# Dependent properties
@dependent_property
def maximum_angle(self) -> float:
"Angle of the outermost elements in the array"
return np.max(np.abs(self.theta))