dispersiveshallowwater.jl

A Julia library of structure-preserving numerical methods for dispersive wave equations

https://github.com/numericalmathematics/dispersiveshallowwater.jl

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 8 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, iop.org, zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary

Keywords

dispersion-model julia numerical-simulation-framework shallow-water-equations simulation summation-by-parts
Last synced: 4 months ago · JSON representation ·

Repository

A Julia library of structure-preserving numerical methods for dispersive wave equations

Basic Info
Statistics
  • Stars: 17
  • Watchers: 3
  • Forks: 4
  • Open Issues: 17
  • Releases: 0
Topics
dispersion-model julia numerical-simulation-framework shallow-water-equations simulation summation-by-parts
Created over 2 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Security Zenodo

README.md

DispersiveShallowWater.jl

Docs-stable Docs-dev Build Status codecov Coveralls Aqua QA License: MIT DOI

logo

DispersiveShallowWater.jl is a Julia package that implements structure-preserving numerical methods for dispersive shallow water models. To date, it provides provably conservative, entropy-conserving and well-balanced numerical schemes for some dispersive shallow water models:

The semidiscretizations are based on summation-by-parts (SBP) operators, which are implemented in SummationByPartsOperators.jl. To obtain fully discrete schemes, the time integration methods from OrdinaryDiffEq.jl are used to solve the resulting ordinary differential equations. Fully discrete entropy-conservative methods can be obtained by using the relaxation method provided by DispersiveShallowWater.jl. A more detailed documentation can be found online.

Installation

If you have not yet installed Julia, then you first need to download Julia. Please follow the instructions for your operating system. DispersiveShallowWater.jl works with Julia v1.10 and newer. DispersiveShallowWater.jl is a registered Julia package. Therefore, you can install it by executing the following commands from the Julia REPL

```julia julia> using Pkg

julia> Pkg.add(["DispersiveShallowWater", "OrdinaryDiffEqTsit5", "Plots"]) ```

In addition, this installs the packages OrdinaryDiffEqTsit5.jl from OrdinaryDiffEq.jl used for time-integration and Plots.jl to visualize the results. If you want to use other time integration methods than Tsit5, you can install the respective subpackage or OrdinaryDiffEq.jl, which will install every available solver. If you want to use other SBP operators than the default operators that DispersiveShallowWater.jl uses, then you also need SummationByPartsOperators.jl, which can be installed running

julia julia> Pkg.add("SummationByPartsOperators")

Usage

In the Julia REPL, first load the package DispersiveShallowWater.jl

julia julia> using DispersiveShallowWater

You can run a basic simulation that solves the BBM-BBM equations by executing

julia julia> include(default_example());

The result can be visualized by using the package Plots.jl

julia julia> using Plots julia> plot(semi => sol)

The command plot expects a Pair consisting of a Semidiscretization and an ODESolution. The visualization can also be customized, see the documentation for more details. Other examples can be found in the subdirectory examples/. A list of all examples is returned by running get_examples(). You can pass the filename of one of the examples or your own simulation file to include in order to run it, e.g., include(joinpath(examples_dir(), "svaerd_kalisch_1d", "svaerd_kalisch_1d_dingemans_relaxation.jl")).

Referencing

You can directly refer to DispersiveShallowWater.jl as

bibtex @misc{lampert2025dispersive, title={{D}ispersive{S}hallow{W}ater.jl: {S}tructure-preserving numerical methods for dispersive shallow water models}, author={Lampert, Joshua and Wittenstein, Collin and Ranocha, Hendrik}, year={2025}, howpublished={\url{https://github.com/NumericalMathematics/DispersiveShallowWater.jl}}, doi={10.5281/zenodo.10034636} }

Authors

The package is mainly developed and maintained by Joshua Lampert (University of Hamburg) with contributions from Hendrik Ranocha (Johannes Gutenberg University Mainz) and Collin Wittenstein (Johannes Gutenberg University Mainz). Some parts of this repository are based on parts of Dispersive-wave-schemes-notebooks. A Broad Class of Conservative Numerical Methods for Dispersive Wave Equations by Hendrik Ranocha, Dimitrios Mitsotakis and David Ketcheson. The code structure is inspired by Trixi.jl.

License and contributing

DispersiveShallowWater.jl is published under the MIT license (see License). We are pleased to accept contributions from everyone, preferably in the form of a PR.

Owner

  • Name: NumericalMathematics
  • Login: NumericalMathematics
  • Kind: organization

JOSS Publication

DispersiveShallowWater.jl: A Julia library of structure-preserving numerical methods for dispersive wave equations
Published
December 15, 2025
Volume 10, Issue 116, Page 9361
Authors
Joshua Lampert ORCID
Department of Mathematics, University of Hamburg, Germany
Collin Wittenstein ORCID
Institute of Mathematics, Johannes Gutenberg University Mainz, Germany
Hendrik Ranocha ORCID
Institute of Mathematics, Johannes Gutenberg University Mainz, Germany
Editor
Jack Atkinson ORCID
Tags
numerical analysis differential equations dispersive wave equations summation-by-parts

Citation (CITATION.bib)

@misc{lampert2025dispersive,
  title={{D}ispersive{S}hallow{W}ater.jl: {S}tructure-preserving numerical
         methods for dispersive shallow water models},
  author={Lampert, Joshua and Wittenstein, Collin and Ranocha, Hendrik},
  year={2025},
  howpublished={\url{https://github.com/NumericalMathematics/DispersiveShallowWater.jl}},
  doi={10.5281/zenodo.10034636}
}

GitHub Events

Total
  • Create event: 38
  • Commit comment event: 24
  • Release event: 8
  • Issues event: 13
  • Delete event: 27
  • Issue comment event: 280
  • Push event: 294
  • Pull request review comment event: 209
  • Pull request review event: 209
  • Pull request event: 81
Last Year
  • Create event: 38
  • Commit comment event: 24
  • Release event: 8
  • Issues event: 13
  • Delete event: 27
  • Issue comment event: 280
  • Push event: 294
  • Pull request review comment event: 209
  • Pull request review event: 209
  • Pull request event: 81

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 8
  • Total pull requests: 127
  • Average time to close issues: 3 months
  • Average time to close pull requests: 2 days
  • Total issue authors: 3
  • Total pull request authors: 5
  • Average comments per issue: 5.88
  • Average comments per pull request: 3.87
  • Merged pull requests: 114
  • Bot issues: 0
  • Bot pull requests: 29
Past Year
  • Issues: 6
  • Pull requests: 79
  • Average time to close issues: 1 day
  • Average time to close pull requests: 3 days
  • Issue authors: 2
  • Pull request authors: 5
  • Average comments per issue: 3.83
  • Average comments per pull request: 4.52
  • Merged pull requests: 66
  • Bot issues: 0
  • Bot pull requests: 21
Top Authors
Issue Authors
  • ranocha (4)
  • cwittens (3)
  • JuliaTagBot (1)
Pull Request Authors
  • JoshuaLampert (67)
  • dependabot[bot] (20)
  • cwittens (17)
  • ranocha (14)
  • github-actions[bot] (9)
Top Labels
Issue Labels
performance (2) documentation (2) bug (1) visualization (1)
Pull Request Labels
dependencies (20) enhancement (17) documentation (10) performance (8) testing (8) github_actions (7) breaking (7) refactoring (5) visualization (5) bug (2) consistency (2)