Simple 1D Wave Attenuation Model for Coastal Vegetation
Project description
wave-attenuation-1d: Simple 1D Wave Attenuation Model for Coastal Vegetation
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
- Theo R. E. B. N. Ndruru
- Rusmawan Suwarman
- Dasapta E. Irawan
License
MIT License - see LICENSE file for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wave_attenuation_1d-0.1.1.tar.gz.
File metadata
- Download URL: wave_attenuation_1d-0.1.1.tar.gz
- Upload date:
- Size: 12.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d3f269c72a12a98a611c738c65888e9457e0503004fa6e23ab7ffbe23885828
|
|
| MD5 |
935c947761403c313b0ab0c838930e8c
|
|
| BLAKE2b-256 |
be583af4fc1026bc22f17e138ff2eefafbd6d1b5f90ccb148ae7d9a6ec5c28ee
|
File details
Details for the file wave_attenuation_1d-0.1.1-py3-none-any.whl.
File metadata
- Download URL: wave_attenuation_1d-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.2 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
815382d828aca6980e1fd94f2993bc5d5f6fd92d5f875fc2b8107d1e3482cf72
|
|
| MD5 |
c2077e5df044f69269ae0a17969e17d3
|
|
| BLAKE2b-256 |
0acc5195c40f1928ebcf42cf6aa4cd490b315547f0b7a8c7375af003ce91aa6a
|