From 4dd2dd4f269bdd77edb7a866e58d914b4d0e959a Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 13:11:05 +0100 Subject: [PATCH 1/8] no default boundary conditions --- src/semidiscretization.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/semidiscretization.jl b/src/semidiscretization.jl index c8f56f342..7a4a99053 100644 --- a/src/semidiscretization.jl +++ b/src/semidiscretization.jl @@ -43,7 +43,7 @@ end """ Semidiscretization(mesh, equations, initial_condition, solver; source_terms=nothing, - boundary_conditions=boundary_condition_periodic, + boundary_conditions, RealT=real(solver), uEltype=RealT, initial_cache = (tmp1 = Array{RealT}(undef, nnodes(mesh)), @@ -53,7 +53,7 @@ Construct a semidiscretization of a PDE. """ function Semidiscretization(mesh, equations, initial_condition, solver; source_terms = nothing, - boundary_conditions = boundary_condition_periodic, + boundary_conditions, # `RealT` is used as real type for node locations etc. # while `uEltype` is used as element type of solutions etc. RealT = real(solver), uEltype = RealT, From fd00d49c5cb710a3b1a5b3216625ec0962b96a2a Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 13:12:47 +0100 Subject: [PATCH 2/8] NEWS entry --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index 9ba4584e4..82f42d439 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,8 @@ for human readability. #### Changed +- There are no default boundary conditions anymore in `Semidiscretization`. + Users now have to explicitly provide boundary conditions via the `boundary_conditions` keyword argument, which were periodic by default before ([#286]). - `convergence_test` now returns the complete convergence orders. To obtain the mean convergence rates, use `DispersiveShallowWater.calc_mean_convergence` on the convergence orders ([#285]). ## Changes when updating to v0.9 from v0.8.x From 403bd71e5940559b3c62af0b9ac6c9b331831cb1 Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 13:26:29 +0100 Subject: [PATCH 3/8] fix unit tests --- test/test_unit.jl | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/test/test_unit.jl b/test/test_unit.jl index 5d7abe9a5..a016b5c9a 100644 --- a/test/test_unit.jl +++ b/test/test_unit.jl @@ -88,31 +88,33 @@ end initial_condition = initial_condition_dingemans mesh = Mesh1D(-138, 46, 10) solver = Solver(mesh, 4) - semi_flat = Semidiscretization(mesh, equations_flat, initial_condition, solver) + semi_flat = Semidiscretization(mesh, equations_flat, initial_condition, solver; + boundary_conditions = boundary_condition) @test_throws ArgumentError semidiscretize(semi_flat, (0.0, 1.0)) end @testitem "Solver consistency" setup=[Setup, AdditionalImports] begin mesh = Mesh1D(-1.0, 1.0, 10) initial_condition = initial_condition_convergence_test + boundary_conditions = boundary_condition_periodic D1 = periodic_derivative_operator(1, 4, mesh.xmin, mesh.xmax, mesh.N) solver = Solver(D1) equations = KdVEquation1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver) + solver; boundary_conditions = boundary_conditions) equations = BBMEquation1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver) + solver; boundary_conditions = boundary_conditions) equations = BBMBBMEquations1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver) + solver; boundary_conditions = boundary_conditions) equations = SvaerdKalischEquations1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver) + solver; boundary_conditions = boundary_conditions) end @testitem "Boundary conditions" setup=[Setup] begin From d9b9fc3500185f9983a5e68b90656a1dbccd678b Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 13:26:59 +0100 Subject: [PATCH 4/8] format --- test/test_unit.jl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/test/test_unit.jl b/test/test_unit.jl index a016b5c9a..73596ed1f 100644 --- a/test/test_unit.jl +++ b/test/test_unit.jl @@ -102,19 +102,23 @@ end equations = KdVEquation1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver; boundary_conditions = boundary_conditions) + solver; + boundary_conditions = boundary_conditions) equations = BBMEquation1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver; boundary_conditions = boundary_conditions) + solver; + boundary_conditions = boundary_conditions) equations = BBMBBMEquations1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver; boundary_conditions = boundary_conditions) + solver; + boundary_conditions = boundary_conditions) equations = SvaerdKalischEquations1D(gravity = 1.0) @test_throws ArgumentError Semidiscretization(mesh, equations, initial_condition, - solver; boundary_conditions = boundary_conditions) + solver; + boundary_conditions = boundary_conditions) end @testitem "Boundary conditions" setup=[Setup] begin From 3e0c41b5a2b28eda2be99d8bb38bae869c8bd65c Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 13:40:43 +0100 Subject: [PATCH 5/8] fix typo --- test/test_unit.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_unit.jl b/test/test_unit.jl index 73596ed1f..54c5ac110 100644 --- a/test/test_unit.jl +++ b/test/test_unit.jl @@ -89,7 +89,7 @@ end mesh = Mesh1D(-138, 46, 10) solver = Solver(mesh, 4) semi_flat = Semidiscretization(mesh, equations_flat, initial_condition, solver; - boundary_conditions = boundary_condition) + boundary_conditions = boundary_conditions) @test_throws ArgumentError semidiscretize(semi_flat, (0.0, 1.0)) end From b88d5f1a0590e364abb1bc129446a2d29110f9ae Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 14:13:14 +0100 Subject: [PATCH 6/8] fix --- test/test_unit.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_unit.jl b/test/test_unit.jl index 54c5ac110..4ed5cd6df 100644 --- a/test/test_unit.jl +++ b/test/test_unit.jl @@ -89,7 +89,7 @@ end mesh = Mesh1D(-138, 46, 10) solver = Solver(mesh, 4) semi_flat = Semidiscretization(mesh, equations_flat, initial_condition, solver; - boundary_conditions = boundary_conditions) + boundary_conditions = boundary_conditions_periodic) @test_throws ArgumentError semidiscretize(semi_flat, (0.0, 1.0)) end From b9ecbb689e47f1ed52b12bdc6e1808fec86affde Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 14:28:53 +0100 Subject: [PATCH 7/8] another typo --- test/test_unit.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_unit.jl b/test/test_unit.jl index 4ed5cd6df..92f9bbbfa 100644 --- a/test/test_unit.jl +++ b/test/test_unit.jl @@ -89,7 +89,7 @@ end mesh = Mesh1D(-138, 46, 10) solver = Solver(mesh, 4) semi_flat = Semidiscretization(mesh, equations_flat, initial_condition, solver; - boundary_conditions = boundary_conditions_periodic) + boundary_conditions = boundary_condition_periodic) @test_throws ArgumentError semidiscretize(semi_flat, (0.0, 1.0)) end From 6f306b55b46953d536b13ab0d1e99b324658b166 Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Sat, 28 Feb 2026 14:46:09 +0100 Subject: [PATCH 8/8] increase interval of AnalysisCallback for some examples --- examples/bbm_bbm_1d/bbm_bbm_1d_basic.jl | 2 +- examples/bbm_bbm_1d/bbm_bbm_1d_fourier.jl | 2 +- examples/bbm_bbm_1d/bbm_bbm_1d_relaxation.jl | 2 +- examples/bbm_bbm_1d/bbm_bbm_1d_upwind_relaxation.jl | 2 +- .../hyperbolic_serre_green_naghdi_conservation.jl | 2 +- examples/kdv_1d/kdv_1d_fourier.jl | 4 ++-- examples/kdv_1d/kdv_1d_manufactured.jl | 4 ++-- examples/kdv_1d/kdv_1d_non_dim.jl | 2 +- .../serre_green_naghdi_1d/serre_green_naghdi_conservation.jl | 2 +- .../serre_green_naghdi_1d/serre_green_naghdi_manufactured.jl | 4 ++-- examples/svaerd_kalisch_1d/svaerd_kalisch_1d_manufactured.jl | 2 +- examples/svaerd_kalisch_1d/svaerd_kalisch_1d_well_balanced.jl | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) diff --git a/examples/bbm_bbm_1d/bbm_bbm_1d_basic.jl b/examples/bbm_bbm_1d/bbm_bbm_1d_basic.jl index 666832968..de30f77a5 100644 --- a/examples/bbm_bbm_1d/bbm_bbm_1d_basic.jl +++ b/examples/bbm_bbm_1d/bbm_bbm_1d_basic.jl @@ -30,7 +30,7 @@ semi = Semidiscretization(mesh, equations, initial_condition, solver, tspan = (0.0, 30.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 10, +analysis_callback = AnalysisCallback(semi; interval = 50, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, velocity, entropy)) diff --git a/examples/bbm_bbm_1d/bbm_bbm_1d_fourier.jl b/examples/bbm_bbm_1d/bbm_bbm_1d_fourier.jl index c57ecf862..2f58a6a15 100644 --- a/examples/bbm_bbm_1d/bbm_bbm_1d_fourier.jl +++ b/examples/bbm_bbm_1d/bbm_bbm_1d_fourier.jl @@ -32,7 +32,7 @@ semi = Semidiscretization(mesh, equations, initial_condition, solver, tspan = (0.0, 30.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 10, +analysis_callback = AnalysisCallback(semi; interval = 50, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, velocity, entropy)) diff --git a/examples/bbm_bbm_1d/bbm_bbm_1d_relaxation.jl b/examples/bbm_bbm_1d/bbm_bbm_1d_relaxation.jl index 15d676384..661b0ab4f 100644 --- a/examples/bbm_bbm_1d/bbm_bbm_1d_relaxation.jl +++ b/examples/bbm_bbm_1d/bbm_bbm_1d_relaxation.jl @@ -30,7 +30,7 @@ semi = Semidiscretization(mesh, equations, initial_condition, solver, tspan = (0.0, 30.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 10, +analysis_callback = AnalysisCallback(semi; interval = 50, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, velocity, entropy)) diff --git a/examples/bbm_bbm_1d/bbm_bbm_1d_upwind_relaxation.jl b/examples/bbm_bbm_1d/bbm_bbm_1d_upwind_relaxation.jl index 5c69ea8c9..d705b6b22 100644 --- a/examples/bbm_bbm_1d/bbm_bbm_1d_upwind_relaxation.jl +++ b/examples/bbm_bbm_1d/bbm_bbm_1d_upwind_relaxation.jl @@ -36,7 +36,7 @@ semi = Semidiscretization(mesh, equations, initial_condition, solver, tspan = (0.0, 30.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 10, +analysis_callback = AnalysisCallback(semi; interval = 50, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, velocity, entropy)) diff --git a/examples/hyperbolic_serre_green_naghdi_1d/hyperbolic_serre_green_naghdi_conservation.jl b/examples/hyperbolic_serre_green_naghdi_1d/hyperbolic_serre_green_naghdi_conservation.jl index 365d6ff9f..683cc8cd6 100644 --- a/examples/hyperbolic_serre_green_naghdi_1d/hyperbolic_serre_green_naghdi_conservation.jl +++ b/examples/hyperbolic_serre_green_naghdi_1d/hyperbolic_serre_green_naghdi_conservation.jl @@ -58,7 +58,7 @@ ode = semidiscretize(semi, tspan) # terminal. io = stdout summary_callback = SummaryCallback(io) -analysis_callback = AnalysisCallback(semi; interval = 10, io, +analysis_callback = AnalysisCallback(semi; interval = 100, io, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, momentum, diff --git a/examples/kdv_1d/kdv_1d_fourier.jl b/examples/kdv_1d/kdv_1d_fourier.jl index f18857f0a..1f249b70d 100644 --- a/examples/kdv_1d/kdv_1d_fourier.jl +++ b/examples/kdv_1d/kdv_1d_fourier.jl @@ -3,7 +3,7 @@ using DispersiveShallowWater using SummationByPartsOperators: fourier_derivative_operator ############################################################################### -# Semidiscretization of the KdV equation +# Semidiscretization of the KdV equation equations = KdVEquation1D(gravity = 9.81, D = 1.0) initial_condition = initial_condition_convergence_test @@ -28,7 +28,7 @@ tspan = (0.0, 5.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 100, +analysis_callback = AnalysisCallback(semi; interval = 1000, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, waterheight, entropy)) diff --git a/examples/kdv_1d/kdv_1d_manufactured.jl b/examples/kdv_1d/kdv_1d_manufactured.jl index fa4689bc2..0954e7f5f 100644 --- a/examples/kdv_1d/kdv_1d_manufactured.jl +++ b/examples/kdv_1d/kdv_1d_manufactured.jl @@ -3,7 +3,7 @@ using DispersiveShallowWater using SummationByPartsOperators: upwind_operators, periodic_derivative_operator ############################################################################### -# Semidiscretization of the KdV equation +# Semidiscretization of the KdV equation equations = KdVEquation1D(gravity = 9.81, D = 1.0) @@ -35,7 +35,7 @@ tspan = (0.0, 1.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 100, +analysis_callback = AnalysisCallback(semi; interval = 500, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, waterheight, entropy)) diff --git a/examples/kdv_1d/kdv_1d_non_dim.jl b/examples/kdv_1d/kdv_1d_non_dim.jl index 4b678c736..889a92c4d 100644 --- a/examples/kdv_1d/kdv_1d_non_dim.jl +++ b/examples/kdv_1d/kdv_1d_non_dim.jl @@ -45,7 +45,7 @@ tspan = (0.0, 50.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 100, +analysis_callback = AnalysisCallback(semi; interval = 2000, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, waterheight, entropy)) diff --git a/examples/serre_green_naghdi_1d/serre_green_naghdi_conservation.jl b/examples/serre_green_naghdi_1d/serre_green_naghdi_conservation.jl index 4e9fcb9ff..8400c704e 100644 --- a/examples/serre_green_naghdi_1d/serre_green_naghdi_conservation.jl +++ b/examples/serre_green_naghdi_1d/serre_green_naghdi_conservation.jl @@ -55,7 +55,7 @@ ode = semidiscretize(semi, tspan) # terminal. io = stdout summary_callback = SummaryCallback(io) -analysis_callback = AnalysisCallback(semi; interval = 10, io, +analysis_callback = AnalysisCallback(semi; interval = 50, io, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, momentum, diff --git a/examples/serre_green_naghdi_1d/serre_green_naghdi_manufactured.jl b/examples/serre_green_naghdi_1d/serre_green_naghdi_manufactured.jl index c249acf53..dc9f8c282 100644 --- a/examples/serre_green_naghdi_1d/serre_green_naghdi_manufactured.jl +++ b/examples/serre_green_naghdi_1d/serre_green_naghdi_manufactured.jl @@ -25,7 +25,7 @@ D1 = upwind_operators(periodic_derivative_operator; derivative_order = 1, accuracy_order = 4, xmin = xmin(mesh), xmax = xmax(mesh), N = nnodes(mesh)) -solver = Solver(D1) +solver = Solver(D1) =# # for testing central operators use: @@ -43,7 +43,7 @@ semi = Semidiscretization(mesh, equations, initial_condition, solver, tspan = (0.0, 1.2) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 10, +analysis_callback = AnalysisCallback(semi; interval = 100, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, entropy_modified)) diff --git a/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_manufactured.jl b/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_manufactured.jl index 31e7659d2..0eebd5602 100644 --- a/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_manufactured.jl +++ b/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_manufactured.jl @@ -33,7 +33,7 @@ semi = Semidiscretization(mesh, equations, initial_condition, solver, tspan = (0.0, 1.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 1000, +analysis_callback = AnalysisCallback(semi; interval = 5000, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, velocity, entropy)) diff --git a/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_well_balanced.jl b/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_well_balanced.jl index 951fb8859..ccc9931f9 100644 --- a/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_well_balanced.jl +++ b/examples/svaerd_kalisch_1d/svaerd_kalisch_1d_well_balanced.jl @@ -31,7 +31,7 @@ semi = Semidiscretization(mesh, equations, initial_condition, solver, tspan = (0.0, 10.0) ode = semidiscretize(semi, tspan) summary_callback = SummaryCallback() -analysis_callback = AnalysisCallback(semi; interval = 100, +analysis_callback = AnalysisCallback(semi; interval = 1000, extra_analysis_errors = (:conservation_error,), extra_analysis_integrals = (waterheight_total, momentum, entropy,