Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/examples/tree_1d_fdsbp/elixir_burgers_linear_stability.jl
5586 views
1
# !!! warning "Experimental implementation (upwind SBP)"
2
# This is an experimental feature and may change in future releases.
3
4
using OrdinaryDiffEqSSPRK
5
using Trixi
6
7
###############################################################################
8
# semidiscretization of the (inviscid) Burgers' equation
9
10
equations = InviscidBurgersEquation1D()
11
12
function initial_condition_linear_stability(x, t, equation::InviscidBurgersEquation1D)
13
k = 1
14
return 2 + sinpi(k * (x[1] - 0.7)) |> SVector
15
end
16
17
D_upw = upwind_operators(SummationByPartsOperators.Mattsson2017,
18
derivative_order = 1,
19
accuracy_order = 4,
20
xmin = -1.0, xmax = 1.0,
21
N = 16)
22
flux_splitting = splitting_lax_friedrichs
23
solver = FDSBP(D_upw,
24
surface_integral = SurfaceIntegralUpwind(flux_splitting),
25
volume_integral = VolumeIntegralUpwind(flux_splitting))
26
27
coordinates_min = -1.0
28
coordinates_max = 1.0
29
mesh = TreeMesh(coordinates_min, coordinates_max,
30
initial_refinement_level = 4,
31
n_cells_max = 10_000, periodicity = true)
32
33
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition_linear_stability,
34
solver;
35
boundary_conditions = boundary_condition_periodic)
36
37
###############################################################################
38
# ODE solvers, callbacks etc.
39
40
tspan = (0.0, 2.0)
41
ode = semidiscretize(semi, tspan)
42
43
summary_callback = SummaryCallback()
44
45
analysis_interval = 1000
46
analysis_callback = AnalysisCallback(semi, interval = analysis_interval,
47
extra_analysis_errors = (:l2_error_primitive,
48
:linf_error_primitive))
49
50
alive_callback = AliveCallback(analysis_interval = analysis_interval)
51
52
callbacks = CallbackSet(summary_callback,
53
analysis_callback, alive_callback)
54
55
###############################################################################
56
# run the simulation
57
58
sol = solve(ode, SSPRK43(); abstol = 1.0e-6, reltol = 1.0e-6,
59
ode_default_options()..., callback = callbacks);
60
61