Last updated on Aug 22, 2025.

netsse.analys.dsa.trans_2Dmat_DSA#

netsse.analys.dsa.trans_2Dmat_DSA(freq_in, beta, U, freq_out=None, unit_freq='rad/s', unit_beta='deg', conv='from', max_freq=None, nu23=1 + 2**1 / 2 / 2, transform='abs2enc', weighting='uniform', highfreq_matching=True)#

Computes the transformation matrices for applying the Doppler shift approximation (DSA) at the given forward speed and for the given frequency and direction discretizations.

Note

This implementation uses the derivations presented in Mounet et al. (2025a,b).

Parameters:
  • freq_in (array_like of shape (NfreqIN,)) – Input frequencies.

  • beta (array_like of shape (Nbeta,)) – Relative wave heading angles.

  • U (float) – Forward speed of the observer [m/s].

  • freq_out (array_like of shape (NfreqOUT), optional) – Output frequencies. If None, it is set to freq_in.

  • unit_freq ({'rad/s','Hz'}, optional) –

    Unit of the frequencies:

    • ’rad/s’ :

      The variables freq_in and freq_out denote the angular frequencies in radians per second. The default is ‘rad/s’.

    • ’Hz’ :

      Frequencies are in Hertz.

  • unit_beta ({'deg','rad'}, optional) – Unit of the relative wave heading angles beta (‘deg’ or ‘rad’). Default is ‘deg’.

  • conv ({'from','to'}, optional) –

    The convention that is used to express the direction beta of wave spectrum:

    • ’from’ :

      The naval architecture convention, indicating where the waves are COMING FROM.

    • ’to’ :

      The oceanographic convention, indicating where the waves are GOING TO. The default is “from” direction.

  • max_freq (float, optional) – Cut-off frequency. If None, it is set to the maximum of freq_in.

  • nu23 (float, optional) – Threshold parameter for the DSA. Default is \((1+\sqrt{2})/2\).

  • transform (str, optional) – Type of transformation (‘abs2enc’ or ‘enc2abs’). Default is ‘abs2enc’.

  • weighting ({'uniform','tripvalpb','lowfreq'}, optional) –

    Weighting method to use:

    • ’uniform’ :

      Equal weight is given to all frequencies in the range [0,om0m] in the cost function. This is the default option. It is introduced in Mounet et al. (2025a).

    • ’tripvalpb’ :

      Same as 'uniform' weighting, but the om0m is set to a value of \((1+\sqrt{2})/(2\tau)\) when \(\nu>\nu_{23}\). This ensures the DSA features an optimal accuracy in the range of frequencies where the triple-value problem occurs. This idea is introduced in Mounet et al. (2025b).

    • ’lowfreq’ :

      A decreasing (affine) weighting function is applied to frequencies in the range [0,om0m], such that low frequencies are given more importance in the cost function. This option is not recommended for general use.

  • highfreq_matching (bool, optional) – If True, the convex form of the DSA is overriden to become exact beyond the point where the DSA and the exact Doppler shift intersect each other in Region III of the mapping. If False, the DSA is kept unchanged otherwise. Default is True.

Returns:

  • Omega_in_fromout (ndarray of shape (NfreqOUT,Nbeta)) – Approximated input frequencies as a function of the target frequencies and wave directions.

  • C (ndarray of shape (NfreqOUT*Nbeta,NfreqIN*Nbeta)) – Linear interpolation matrix.

  • D_wave (ndarray of shape (NfreqOUT*Nbeta,NfreqOUT*Nbeta)) – 2D-to-2D transformation matrix for wave spectra.

  • S (ndarray of shape (NfreqOUT,NfreqOUT*Nbeta)) – 2D-to-1D summation matrix.

See also

polynom_DSA

Computes the polynomial approximation of the Doppler Shift.

References

  1. Mounet, R.E.G., Nielsen, U.D., and Takami, T. (2025a). “Doppler Shift Approximation in Seakeeping Problems: A New Formulation for Ships Advancing at Any Forward Speed.” In: Proceedings of the 16th International Symposium on Practical Design of Ships and Other Floating Structures (PRADS 2025), Ann Arbor, MI, USA. (Accepted).

  2. Mounet, R.E.G., Nielsen, U.D., and Takami, T. (2025b). “Approximating the Doppler Shift in Sea-Wave Spectra Observed from an Advancing Floating Platform.” Applied Mathematical Modelling. (Submitted).

Example

>>> _, C, D, S = trans_2Dmat_DSA(
...     freq_in, beta, U, freq_out, unit_freq='Hz', unit_beta='deg', conv='from', max_freq=0.3,
...     nu23=2, transform='abs2enc', weighting="uniform", highfreq_matching=True)