wecopttool.WEC.from_impedance

static WEC.from_impedance(freqs, impedance, exc_coeff, hydrostatic_stiffness, f_add=None, constraints=None, min_damping=1e-06, uniform_shift=False)[source]

Create a WEC object from the intrinsic impedance and excitation coefficients.

The intrinsic (mechanical) impedance \(Z(ω)\) linearly relates excitation forces \(F(ω)\) to WEC velocity \(U(ω)\) as \(ZU=F\). Using linear hydrodynamic coefficients, e.g. from a BEM code like Capytaine, the impedance is given as \(Z(ω) = (m+A(ω))*iω + B(ω) + B_f + K/(iω)\). The impedance can also be obtained experimentally. Note that the impedance is not defined at \(ω=0\).

Parameters:
  • freqs (ArrayLike) – Frequency vector [\(Hz\)] not including the zero frequency, freqs = [f1, 2*f1, ..., nfreq*f1].

  • impedance (DataArray) – Complex impedance of size (nfreq, ndof, ndof).

  • exc_coeff (DataArray) – Complex excitation transfer function of size (ndof, nfreq).

  • hydrostatic_stiffness (ndarray) – Linear hydrostatic restoring coefficient of size (ndof, ndof).

  • f_add (Mapping[str, StateFunction] | None) – Dictionary with entries {'force_name': fun}, where fun has a signature def fun(wec, x_wec, x_opt, waves):, and returns forces in the time-domain of size (2*nfreq, ndof).

  • constraints (Iterable[Mapping] | None) – List of constraints, see documentation for scipy.optimize.minimize() for description and options of constraints dictionaries. If None: empty list [].

  • min_damping (float | None) – Minimum damping level to ensure a stable system. See wecopttool.check_impedance() for more details.

  • uniform_shift (bool | None) – Boolean determining whether damping corrections shifts the damping values uniformly for all frequencies or only for frequencies below min_damping. See wecopttool.check_radiation_damping() for more details.

Raises:

ValueError – If impedance does not have the correct size: (ndof, ndof, nfreq).

Return type:

WEC