Path: blob/main/examples/tree_1d_fdsbp/elixir_advection_upwind_periodic.jl
5586 views
# !!! warning "Experimental implementation (upwind SBP)"1# This is an experimental feature and may change in future releases.23using OrdinaryDiffEqLowStorageRK4using Trixi56###############################################################################7# semidiscretization of the linear scalar advection equation89equations = LinearScalarAdvectionEquation1D(1.0)1011function initial_condition_sin(x, t, equation::LinearScalarAdvectionEquation1D)12return SVector(sinpi(x[1] - equations.advection_velocity[1] * t))13end1415D_upw = upwind_operators(SummationByPartsOperators.periodic_derivative_operator,16accuracy_order = 4,17xmin = -1.0, xmax = 1.0,18N = 64)19flux_splitting = splitting_lax_friedrichs20solver = FDSBP(D_upw,21surface_integral = SurfaceIntegralUpwind(flux_splitting),22volume_integral = VolumeIntegralUpwind(flux_splitting))2324coordinates_min = -1.025coordinates_max = 1.026mesh = TreeMesh(coordinates_min, coordinates_max,27initial_refinement_level = 0,28n_cells_max = 10_000,29periodicity = true)3031semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition_sin, solver;32boundary_conditions = boundary_condition_periodic)3334###############################################################################35# ODE solvers, callbacks etc.3637tspan = (0.0, 2.0)38ode = semidiscretize(semi, tspan)3940summary_callback = SummaryCallback()4142analysis_interval = 100043analysis_callback = AnalysisCallback(semi, interval = analysis_interval)4445alive_callback = AliveCallback(analysis_interval = analysis_interval)4647callbacks = CallbackSet(summary_callback,48analysis_callback, alive_callback)4950###############################################################################51# run the simulation5253sol = solve(ode, RDPK3SpFSAL49(); abstol = 1.0e-6, reltol = 1.0e-6,54ode_default_options()..., callback = callbacks);555657