Path: blob/main/examples/tree_1d_fdsbp/elixir_burgers_linear_stability.jl
5586 views
# !!! warning "Experimental implementation (upwind SBP)"1# This is an experimental feature and may change in future releases.23using OrdinaryDiffEqSSPRK4using Trixi56###############################################################################7# semidiscretization of the (inviscid) Burgers' equation89equations = InviscidBurgersEquation1D()1011function initial_condition_linear_stability(x, t, equation::InviscidBurgersEquation1D)12k = 113return 2 + sinpi(k * (x[1] - 0.7)) |> SVector14end1516D_upw = upwind_operators(SummationByPartsOperators.Mattsson2017,17derivative_order = 1,18accuracy_order = 4,19xmin = -1.0, xmax = 1.0,20N = 16)21flux_splitting = splitting_lax_friedrichs22solver = FDSBP(D_upw,23surface_integral = SurfaceIntegralUpwind(flux_splitting),24volume_integral = VolumeIntegralUpwind(flux_splitting))2526coordinates_min = -1.027coordinates_max = 1.028mesh = TreeMesh(coordinates_min, coordinates_max,29initial_refinement_level = 4,30n_cells_max = 10_000, periodicity = true)3132semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition_linear_stability,33solver;34boundary_conditions = boundary_condition_periodic)3536###############################################################################37# ODE solvers, callbacks etc.3839tspan = (0.0, 2.0)40ode = semidiscretize(semi, tspan)4142summary_callback = SummaryCallback()4344analysis_interval = 100045analysis_callback = AnalysisCallback(semi, interval = analysis_interval,46extra_analysis_errors = (:l2_error_primitive,47:linf_error_primitive))4849alive_callback = AliveCallback(analysis_interval = analysis_interval)5051callbacks = CallbackSet(summary_callback,52analysis_callback, alive_callback)5354###############################################################################55# run the simulation5657sol = solve(ode, SSPRK43(); abstol = 1.0e-6, reltol = 1.0e-6,58ode_default_options()..., callback = callbacks);596061