wecopttool.WEC.from_bem
- static WEC.from_bem(bem_data, friction=None, f_add=None, constraints=None, min_damping=1e-06, uniform_shift=False, dof_names=None)[source]
Create a WEC object from linear hydrodynamic coefficients obtained using the boundary element method (BEM) code Capytaine.
The
bem_datacan be a dataset or the name of a NetCDF file containing the dataset.The returned
wecopttool.WECobject contains the inertia and the default linear forces: radiation, diffraction, and Froude-Krylov. Additional forces can be specified throughf_add.Note that because Capytaine uses a different sign convention, the direct results from capytaine must be modified using
wecopttool.change_bem_convention()before calling this initialization function. Instead, the recommended approach is to usewecopttool.run_bem(), rather than running Capytaine directly, which outputs the results in the correct convention. The results can be saved usingwecopttool.write_netcdf().wecopttool.run_bem()also computes the inertia and hydrostatic stiffness which should be included in bem_data.- Parameters:
bem_data (Dataset | str | Path) – Linear hydrodynamic coefficients obtained using the boundary element method (BEM) code Capytaine, with sign convention corrected. Also includes inertia and hydrostatic stiffness.
friction (ndarray | None) – Linear friction, in addition to radiation damping, of size
(ndof, ndof).Noneif included inbem_dataor to set to zero.f_add (Mapping[str, StateFunction] | None) – Dictionary with entries
{'force_name': fun}, wherefunhas a signaturedef fun(wec, x_wec, x_opt, wave):, and returns forces in the time-domain of size(2*nfreq+1, ndof).constraints (Iterable[Mapping] | None) – List of constraints, see documentation for
scipy.optimize.minimize()for description and options of constraints dictionaries. IfNone: empty list[].min_damping (float | None) – Minimum damping level to ensure a stable system. See
wecopttool.check_radiation_damping()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. Seewecopttool.check_radiation_damping()for more details.dof_names (Iterable[str] | None) – Names of the different degrees of freedom (e.g.
'Heave'). IfNonethe names['DOF_0', ..., 'DOF_N']are used.
- Return type: