Skip to main content

wave-attenuation-1d: Simple 1D Wave Attenuation Model for Coastal Vegetation

Python PyPI version License: MIT DOI Code style: black

A fast numerical solver for simulating wave attenuation through coastal vegetation, solving the linearized shallow water equations with vegetation-induced drag.

Overview

This package models how coastal vegetation (e.g., mangroves, salt marshes) reduces wave energy, providing a nature-based solution for coastal protection. The model uses high-order numerical methods with Numba acceleration for efficient computation.

Mathematical Model

The solver implements the 1D linearized shallow water equations with vegetation drag:

$\frac{\partial \eta}{\partial t} + h\frac{\partial u}{\partial x} = 0$

$\frac{\partial u}{\partial t} + g\frac{\partial \eta}{\partial x} = -c_D \chi_{\text{veg}}(x) u$

where:

  • $\eta(x,t)$ - free surface elevation [m]
  • $u(x,t)$ - depth-averaged velocity [m/s]
  • $h$ - water depth [m]
  • $g$ - gravitational acceleration (9.81 m/s²)
  • $c_D$ - linearized drag coefficient [1/s]
  • $\chi_{\text{veg}}(x)$ - vegetation indicator function

Installation

pip install wave-attenuation-1d

Requirements

  • Python ≥ 3.8
  • NumPy ≥ 1.20.0
  • Numba ≥ 0.54.0
  • netCDF4 ≥ 1.5.0
  • tqdm ≥ 4.62.0

Quick Start

# Run with example configuration
wave-attenuation-1d configs/sparse_config.txt

# Run with custom config
wave-attenuation-1d my_config.txt

# Check version
wave-attenuation-1d --version

Features

  • 4th-order Runge-Kutta time integration with implicit drag treatment
  • Numba JIT compilation for ~100x speedup over pure Python
  • NetCDF output with CF-1.8 compliant metadata
  • Automatic transmission coefficient calculation
  • Configurable vegetation patches with varying drag coefficients

Configuration

Create a text configuration file:

[DOMAIN]
L = 200.0      # Domain length [m]
d = 2.0        # Water depth [m]
dx = 0.5       # Grid spacing [m]
T = 500.0      # Simulation time [s]

[WAVE]
A = 0.3        # Wave amplitude [m]
omega = 0.628  # Angular frequency [rad/s]

[VEGETATION]
start = 80.0   # Vegetation start [m]
end = 120.0    # Vegetation end [m]
cD = 0.14      # Drag coefficient [1/s]

[NUMERICAL]
cfl_target = 0.4    # Target CFL number
output_dt = 1.0     # Output interval [s]

Output Format

Results are saved as NetCDF files containing:

  • Time series of surface elevation and velocity
  • Wave envelope and RMS velocity
  • Metadata including all parameters and transmission coefficients

Numerical Methods

  • Spatial discretization: 2nd-order centered differences
  • Time integration: 4th-order Runge-Kutta (RK4)
  • Drag treatment: Implicit scheme for unconditional stability
  • Boundary conditions:
    • Left: Sinusoidal wave generation
    • Right: Sommerfeld radiation condition

Citation

If you use this model in your research, please cite:

@software{herho2025wave,
  author = {Herho, Sandy H. S. and Anwar, Iwan P. and Ndruru, Theo R. E. B. N. 
            and Suwarman, Rusmawan and Irawan, Dasapta E.},
  title = {{wave-attenuation-1d: Simple 1D Wave Attenuation Model for Coastal Vegetation}},
  year = {2025},
  url = {https://github.com/sandyherho/wave_attenuation_1d}
}

Authors

  • Sandy H. S. Herho (sandy.herho@email.ucr.edu)
  • Iwan P. Anwar
  • Faruq Khadami
  • Theo R. E. B. N. Ndruru
  • Rusmawan Suwarman
  • Dasapta E. Irawan

License

MIT License - see LICENSE file for details.

Download files

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

Source Distribution

wave_attenuation_1d-0.1.5.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wave_attenuation_1d-0.1.5-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file wave_attenuation_1d-0.1.5.tar.gz.

File metadata

  • Download URL: wave_attenuation_1d-0.1.5.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.2 Linux/6.11.9-100.fc39.x86_64

File hashes

Hashes for wave_attenuation_1d-0.1.5.tar.gz
Algorithm Hash digest
SHA256 7a741c0b64012f7fc605572fb5a1ca567d33238abb948f72da705b6537d4afb4
MD5 8a851b206016cea5fbc6313a5f88ca57
BLAKE2b-256 ec887210c85bb6bbf4b7f9f2cd6a83baa8e4abf41f9f6ad824251f0dccaeab19

See more details on using hashes here.

File details

Details for the file wave_attenuation_1d-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: wave_attenuation_1d-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.2 Linux/6.11.9-100.fc39.x86_64

File hashes

Hashes for wave_attenuation_1d-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a47c294ffe0a03c312fc6d672478b64cd756988f44b7af492fbc191212c1e8e2
MD5 c0355b7260763b053737afa6a7e25afd
BLAKE2b-256 ccb751b736dbcaf174e32fff71579fd4f525dd259c3c4a28c186117aa3654b8f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page