# {py:mod}`simvx.graphics.renderer.ocean_fft` ```{py:module} simvx.graphics.renderer.ocean_fft ``` ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`OceanCascade ` - ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade :summary: ``` * - {py:obj}`OceanFFT ` - ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`cascade_patch_lengths ` - ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.cascade_patch_lengths :summary: ``` * - {py:obj}`stockham_ifft2 ` - ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.stockham_ifft2 :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.__all__ :summary: ``` * - {py:obj}`GRAVITY ` - ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.GRAVITY :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.graphics.renderer.ocean_fft.__all__ :value: > ['GRAVITY', 'OceanCascade', 'OceanFFT', 'cascade_patch_lengths', 'stockham_ifft2'] ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.__all__ ``` ```` ````{py:data} GRAVITY :canonical: simvx.graphics.renderer.ocean_fft.GRAVITY :value: > 9.81 ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.GRAVITY ``` ```` ````{py:function} cascade_patch_lengths(cascades: int) -> tuple[float, ...] :canonical: simvx.graphics.renderer.ocean_fft.cascade_patch_lengths ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.cascade_patch_lengths ``` ```` ````{py:function} stockham_ifft2(spec: numpy.ndarray) -> numpy.ndarray :canonical: simvx.graphics.renderer.ocean_fft.stockham_ifft2 ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.stockham_ifft2 ``` ```` `````{py:class} OceanCascade :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade ``` ````{py:attribute} size :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.size :type: int :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.size ``` ```` ````{py:attribute} patch_length :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.patch_length :type: float :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.patch_length ``` ```` ````{py:attribute} weight :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.weight :type: float :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.weight ``` ```` ````{py:attribute} kx :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.kx :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.kx ``` ```` ````{py:attribute} kz :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.kz :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.kz ``` ```` ````{py:attribute} kmag :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.kmag :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.kmag ``` ```` ````{py:attribute} kx_unit :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.kx_unit :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.kx_unit ``` ```` ````{py:attribute} kz_unit :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.kz_unit :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.kz_unit ``` ```` ````{py:attribute} omega :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.omega :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.omega ``` ```` ````{py:attribute} h0 :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.h0 :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.h0 ``` ```` ````{py:attribute} h0_mk_conj :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.h0_mk_conj :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.h0_mk_conj ``` ```` ````{py:attribute} gain :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.gain :type: float :value: > 1.0 ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.gain ``` ```` ````{py:attribute} foam :canonical: simvx.graphics.renderer.ocean_fft.OceanCascade.foam :type: numpy.ndarray :value: > 'field(...)' ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanCascade.foam ``` ```` ````` `````{py:class} OceanFFT(size: int, cascades: int, *, seed: int = 1337) :canonical: simvx.graphics.renderer.ocean_fft.OceanFFT ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT.__init__ ``` ````{py:method} configure(*, wind_dir: tuple[float, float], wind_speed: float, amplitude: float, direction_spread: float = 1.0) -> None :canonical: simvx.graphics.renderer.ocean_fft.OceanFFT.configure ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT.configure ``` ```` ````{py:method} evaluate(time: float, *, choppiness: float = 1.0, foam_threshold: float = 0.6, foam_decay: float = 0.92) -> tuple[numpy.ndarray, numpy.ndarray] :canonical: simvx.graphics.renderer.ocean_fft.OceanFFT.evaluate ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT.evaluate ``` ```` ````{py:property} patch_lengths :canonical: simvx.graphics.renderer.ocean_fft.OceanFFT.patch_lengths :type: tuple[float, ...] ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT.patch_lengths ``` ```` ````{py:method} gpu_static_spectrum() -> numpy.ndarray :canonical: simvx.graphics.renderer.ocean_fft.OceanFFT.gpu_static_spectrum ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT.gpu_static_spectrum ``` ```` ````{py:method} gpu_reference(time: float, *, choppiness: float = 1.0, foam_threshold: float = 0.6, foam_decay: float = 0.92) -> tuple[numpy.ndarray, numpy.ndarray] :canonical: simvx.graphics.renderer.ocean_fft.OceanFFT.gpu_reference ```{autodoc2-docstring} simvx.graphics.renderer.ocean_fft.OceanFFT.gpu_reference ``` ```` `````