DispersiveShallowWater.jl provides six different dispersive shallow water equation systems for modeling water waves. Each equation system offers different levels of physical accuracy, computational complexity, and supports various boundary conditions and bathymetry types.
The following table provides an overview of all available equation systems and their supported features:
| Equation | Variables | [Periodic boundary conditions](@ref boundary_condition_periodic) | [Reflecting boundary conditions](@ref boundary_condition_reflecting) | [Flat Bathymetry](@ref bathymetry_flat) | [Mild-slope Bathymetry](@ref bathymetry_mild_slope) | [Variable Bathymetry](@ref bathymetry_variable) | Relaxation | Source Terms |
|---|---|---|---|---|---|---|---|---|
[KdV](@ref KdVEquation1D) |
(\eta) |
✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ |
[BBM](@ref BBMEquation1D) |
(\eta) |
✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ |
[BBM-BBM](@ref BBMBBMEquations1D) |
(\eta, v, D) |
✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
[Svärd-Kalisch](@ref SvaerdKalischEquations1D) |
(\eta, v, D) |
✅ | ✅ᵃ | ❌ | ❌ | ✅ | ✅ | ✅ |
[Serre-Green-Naghdi](@ref SerreGreenNaghdiEquations1D) |
(\eta, v, D) |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
[Hyperbolic SGN](@ref HyperbolicSerreGreenNaghdiEquations1D) |
(\eta, v, D, w, H) |
✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
ᵃReflecting boundary conditions for Svärd-Kalisch equations require alpha = gamma = 0
\eta: Total water heightv: Velocity in horizontal directionD: Still-water depthw: Auxiliary variable in hyperbolic approximation (\approx -h v_x)H: Auxiliary variable in hyperbolic approximation (\approx h)
Several equation systems in DispersiveShallowWater.jl (BBMBBMEquations1D, SvaerdKalischEquations1D, SerreGreenNaghdiEquations1D, and HyperbolicSerreGreenNaghdiEquations1D) are subtypes of AbstractShallowWaterEquations. This design reflects that these systems all contain the classical shallow water equations as a subsystem, extended with additional dispersive terms.
The common interface provides shared functionality like waterheight, velocity, energy_total, and entropy. This enables consistent analysis and visualization across different dispersive models while maintaining the underlying shallow water physics.
!!! warning "Entropy vs. Energy"
DispersiveShallowWater.jl
is written by mathematicians with a background in numerical methods for
hyperbolic balance laws. Therefore, the term entropy is often used
in the sense of a mathematical entropy function, i.e., typically a
convex function that is conserved by smooth solutions and whose dissipation
provides useful bounds and estimates. For the classical shallow water
equations, the mathematical entropy is the same as the physical energy
(see energy_total and entropy). However, some dispersive
models like the SerreGreenNaghdiEquations1D do not conserve
the energy_total but a modified form energy_total_modified.
Some equations are hyperbolic approximations of other systems (e.g., HyperbolicSerreGreenNaghdiEquations1D approximates SerreGreenNaghdiEquations1D). These systems support two approaches for initial conditions:
- Full variables: Specify all primitive variables including auxiliary variables
(\eta, v, D, w, H) - Physical variables: Specify only the physical variables
(\eta, v, D)from the limit system. The auxiliary variables are automatically initialized using appropriate approximations.
This flexibility allows using the same initial conditions for both the original and hyperbolic systems, simplifying comparisons and testing.
Each equation system below includes its complete mathematical formulation, physical background, implementation details, conservation properties, and relevant literature references.
DispersiveShallowWater.KdVEquation1D
DispersiveShallowWater.BBMEquation1D
DispersiveShallowWater.BBMBBMEquations1D
DispersiveShallowWater.SvaerdKalischEquations1D
DispersiveShallowWater.SvärdKalischEquations1D
DispersiveShallowWater.SerreGreenNaghdiEquations1D
DispersiveShallowWater.HyperbolicSerreGreenNaghdiEquations1D
