Skip to main content

A Python implementation of nonlinear regular wave theories (Stokes 2nd to 5th order and Fenton stream function waves).

Project description

Raschii is a Python library for constructing non-linear regular waves and is named after Thysanoessa raschii, the Arctic Krill.

Supported wave models are currently:

  • Stream function waves (M. M. Rienecker and J. D. Fenton, 1981)

  • Stokes second- through fifth-order waves (based on J. D. Fenton, 1985)

  • Airy waves, the standard linar wave theory

Raschii includes a command line program to plot regular waves from the supported wave models and C++ code generation for using the results in other programs, such as in FEniCS expressions for initial and boundary conditions in a FEM solver. There is also a limited Dart port which is used in the online demo.

A comparison of Stokes and Fenton waves of fifth order

A comparison of fifth-order Stokes waves and fifth-order Fenton stream function waves. Deep water, wave heigh 12 m, wave length 100 m.

As of version 1.0.3, Raschii can output waves on the SWD (spectral wave data) standard file format for use as the incomming incident waves in flow analysis programs such as boundary element and CFD (Euler and Navier-Stokes equation solvers). The SWD export functionality is in use in the Maritime and Offshore industries for 3D-flow analyses of floating and fixed structures subjected to ocean surface waves.

Installation and running

Raschii can be installed by running:

python -m pip install raschii

Substitute python with python3 as appropriate to your installation. The command will also install any dependencies (numpy).

Using Raschii from Python

An example of using Raschii from Python:

import raschii

fwave = raschii.FentonWave(height=0.25, depth=0.5, length=2.0, N=20)
print(fwave.surface_elevation(x=0))
print(fwave.surface_elevation(x=[0, 0.1, 0.2, 0.3]))
print(fwave.velocity(x=0, z=0.2))

This will output:

[0.67352456]
[0.67352456 0.61795882 0.57230232 0.53352878]
[[0.27263788 0.        ]]

Using Raschii from the command line

You can also use Raschii from the command line. You can plot the wave elevation and particle velocities, and also write swd files. See the help for the command line programs to get detailed usage info:

python -m raschii.cmd.plot -h
python -m raschii.cmd.swd -h

Substitute python with python3 as appropriate to your installation. You must install the matplotlib Python package to be able to use the plot command.

An example of using Rascii from the command line:

# Plot a 0.2 m high wave that is 2 meters long in 1.5 meters water depth
# Some information abot the wave is also shown
python -m raschii.cmd.plot -N 5 Fenton 0.2 1.5 2

# Save the same stream function wave to a SWD file
python -m raschii.cmd.swd -N 5 fenton.swd Fenton 0.2 1.5 2

The plot tool allows comparing multiple waves, the SWD file writer only supports a single wave at a time and does currently not support Airy waves.

Documentation

The documentation can be found on Raschii’s Read-the-Docs pages.

Development

Raschii is developed in Python on Bitbucket by use of the Git version control system. If you are reading this on github, please be aware that you are seeing a mirror that could potentially be months out of date. All pull requests and issues should go to the Bitbucket repository.

Raschii is automatically tested on CircleCI and the current CI build status is circleci_status.

Releases

Version 1.0.7 - Sep 30. 2024

  • Support for numpy 2.1

  • Drop support for Python 3.9 and older (following numpy)

  • Added testing with latest Python avaliable via uv (currently CPython 3.12)

Version 1.0.6 - Jun 28. 2024

  • Support for numpy 2.0

  • Add type annotations

  • Add API docs for public API functions

Version 1.0.5 - Jan 25. 2024

  • Update the documentation

  • Unbreak the read-the-docs builder

  • Switch to pyproject.toml from setup.py (replace setuptools with hatchling)

  • No new code or functionality added or removed, just housekeeping

Version 1.0.4 - Aug 28. 2020

  • Add the raschii.cmd.plot and raschii.cmd.swd command line programs

Version 1.0.3 - Aug 28. 2020

  • Fix missing time dependency in Stokes surface surface elevation

  • Ensure all wave models implement T and omega attributes

  • Test that the surface elevation has the correct period for all wave models

  • Include SWD file format support for writing generated waves to files for interchange with other tools.

Version 1.0.2 - Jun 4. 2018

Some more work on air-phase / water phase velocity blending

  • Change the air blending zone to be horizontal at the top (still follows the wave profile at the bottom). The air phase blanding still has no influenece on the wave profile or water-phase velocities, but the transition from blended to pure air-phase velocities is now a bit smoother for steep waves and the divergence of the resulting field is lower when projected into a FEM function space (analytically the divergence is always zero).

Version 1.0.1 - May 31. 2018

Small bugfix release

  • Fix bug related to sign of x component of FentonAir C++ velocity

  • Improve unit testing suite

  • Improve FEM interpolation demo

Version 1.0.0 - May 29. 2018

The initial release of Raschii

  • Support for Fenton stream functions (Rienecker and Fenton, 1981)

  • Support for Stokes 1st - 5th order waves (Fenton, 1985)

  • Support for Airy waves

  • Support for C++ code generation (for FEniCS expressions etc)

  • Command line program for plotting waves

  • Command line demo for converting fields to FEniCS

  • Unit tests for most things

  • Documentation and (currently non-complete online demo)

  • Support for computing a combined wave and air velocity field which is continuous across the free surface and divergence free (currently only works with the Fenton stream function wave model).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raschii-1.0.7.tar.gz (166.5 kB view details)

Uploaded Source

Built Distribution

raschii-1.0.7-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file raschii-1.0.7.tar.gz.

File metadata

  • Download URL: raschii-1.0.7.tar.gz
  • Upload date:
  • Size: 166.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.17

File hashes

Hashes for raschii-1.0.7.tar.gz
Algorithm Hash digest
SHA256 1f39e6112c158d7b9f91d2a40dd9d11c28fb87e8384ed022f52f3497ec56769a
MD5 da5db47eb4523fb9e35265236dba188f
BLAKE2b-256 2925d5f7bae082a3416343847dccf928fcd36d872312c294793ab476e3cb9da6

See more details on using hashes here.

File details

Details for the file raschii-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: raschii-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.17

File hashes

Hashes for raschii-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 03c2c55b32dace627f6471679e4351e881abb299fe9f568878d77b67394abd22
MD5 691870508886756a9c096b9300dcc034
BLAKE2b-256 9bd2041df6aa62c89e20164268426caf0634483185177eae8a088032df4e3585

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page