DispersiveShallowWater.jl

A Julia library of structure-preserving numerical methods for dispersive wave equations.
https://github.com/numericalmathematics/dispersiveshallowwater.jl

Category: Hydrosphere
Sub Category: Waves and Currents

Keywords

dispersion-model julia numerical-simulation-framework shallow-water-equations simulation summation-by-parts

Keywords from Contributors

optimizers transform measurements composibility control standardization report interpreter crop animal

Last synced: about 17 hours ago
JSON representation

Repository metadata

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

README.md

DispersiveShallowWater.jl

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

DispersiveShallowWater.jl is a Julia package that implements structure-preserving numerical methods for one-dimensional dispersive shallow water models.
To date, it provides provably conservative, entropy-conserving, and well-balanced numerical schemes for the following 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> 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> Pkg.add("SummationByPartsOperators")

Usage

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

julia> using DispersiveShallowWater

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

julia> include(default_example());

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

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

@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.

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}
}

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 3 days ago

Total Commits: 348
Total Committers: 6
Avg Commits per committer: 58.0
Development Distribution Score (DDS): 0.267

Commits in past year: 138
Committers in past year: 6
Avg Commits per committer in past year: 23.0
Development Distribution Score (DDS) in past year: 0.37

Name Email Commits
Joshua Lampert 5****t 255
dependabot[bot] 4****] 42
Hendrik Ranocha r****a 26
Collin Wittenstein 1****s 15
github-actions[bot] 4****] 9
Pierre Navaro p****o@m****r 1

Committer domains:


Issue and Pull Request metadata

Last synced: 7 days ago

Total issues: 10
Total pull requests: 145
Average time to close issues: 3 months
Average time to close pull requests: 4 days
Total issue authors: 5
Total pull request authors: 5
Average comments per issue: 7.5
Average comments per pull request: 4.09
Merged pull request: 126
Bot issues: 0
Bot pull requests: 35

Past year issues: 8
Past year pull requests: 81
Past year average time to close issues: 5 days
Past year average time to close pull requests: 7 days
Past year issue authors: 4
Past year pull request authors: 5
Past year average comments per issue: 4.0
Past year average comments per pull request: 4.91
Past year merged pull request: 62
Past year bot issues: 0
Past year bot pull requests: 24

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/numericalmathematics/dispersiveshallowwater.jl

Top Issue Authors

  • ranocha (4)
  • cwittens (3)
  • Alexander-Barth (1)
  • JoshuaLampert (1)
  • JuliaTagBot (1)

Top Pull Request Authors

  • JoshuaLampert (76)
  • dependabot[bot] (24)
  • cwittens (18)
  • ranocha (16)
  • github-actions[bot] (11)

Top Issue Labels

  • performance (2)
  • documentation (2)
  • breaking (1)
  • bug (1)
  • visualization (1)

Top Pull Request Labels

  • dependencies (26)
  • enhancement (18)
  • documentation (11)
  • github_actions (11)
  • testing (10)
  • performance (8)
  • breaking (7)
  • refactoring (5)
  • visualization (5)
  • bug (2)
  • consistency (2)

Score: 5.42934562895444