construct_array_relative_beamvector

HSTB.kluster.modules.beampointingvector.construct_array_relative_beamvector(maintx, mainrx, tx_angle, rx_angle)

Given the orientation vectors representing the transmitter/receiver at time of ping/receive (maintx, mainrx) and the TX/RX steering angles (tx_angle, rx_angle), determine new 3d beam vector components at the midpoint between the TX and RX. This would be the ‘actual’ array relative beam vector.

This is a simplification of the actual scenario, adding error in the xyz due to the difference in path length/ direction of the actual ray from tx-seafloor and seafloor-rx and this co-located assumption (tx-seafloor and rx-seafloor are the same is the assumption)

x = +FORWARD, y=+STARBOARD, z=+DOWN

Returns:

3d beam vector in co-located array ref frame. Of shape (xyz, time, beam), with 10 times and 200 beams, beamvecs shape would be (3, 10, 200)

<xarray.DataArray ‘tiltangle’ (xyz: 3, time: 10, beam: 200)>
dask.array<concatenate, shape=(3, 10, 200), dtype=float64, chunksize=(1, 10, 200), chunktype=numpy.ndarray>
Coordinates:
* time (time) float64 1.496e+09 1.496e+09 …
* beam (beam) int32 0 1 2 3 4 5 6 7 8 … 194 195 196 197 198 199 200
* xyz (xyz) object ‘x’ ‘y’ ‘z’
Parameters
  • maintx (DataArray) – orientation vector for transmitter at time of transmit, 2dim of shape (time, xyz)

  • mainrx (DataArray) – orientation vector for receiver at time of receive, 2dim of shape (time, xyz)

  • tx_angle (DataArray) – transmitter tiltangle for each ping time

  • rx_angle (DataArray) – receiver beam pointing angle for each ping time

Returns

3d beam vector in co-located array ref frame

Return type

xr.DataArray