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 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, 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, diff --git a/test/test_unit.jl b/test/test_unit.jl index 5d7abe9a5..92f9bbbfa 100644 --- a/test/test_unit.jl +++ b/test/test_unit.jl @@ -88,31 +88,37 @@ 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_periodic) @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