Path: blob/main/examples/tree_2d_fdsbp/elixir_advection_extended.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 advection equation89advection_velocity = (0.2, -0.7)10equations = LinearScalarAdvectionEquation2D(advection_velocity)1112initial_condition = initial_condition_convergence_test1314D_SBP = derivative_operator(SummationByPartsOperators.MattssonNordström2004(),15derivative_order = 1, accuracy_order = 4,16xmin = 0.0, xmax = 1.0, N = 100)17solver = FDSBP(D_SBP,18surface_integral = SurfaceIntegralStrongForm(flux_lax_friedrichs),19volume_integral = VolumeIntegralStrongForm())2021coordinates_min = (-1.0, -1.0)22coordinates_max = (1.0, 1.0)23mesh = TreeMesh(coordinates_min, coordinates_max,24initial_refinement_level = 1,25n_cells_max = 30_000,26periodicity = true)2728semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver;29boundary_conditions = boundary_condition_periodic)3031###############################################################################32# ODE solvers, callbacks etc.3334tspan = (0.0, 1.0)35ode = semidiscretize(semi, tspan)3637summary_callback = SummaryCallback()3839analysis_interval = 10040analysis_callback = AnalysisCallback(semi, interval = analysis_interval,41extra_analysis_integrals = (energy_total,))4243alive_callback = AliveCallback(analysis_interval = analysis_interval)4445callbacks = CallbackSet(summary_callback,46analysis_callback,47alive_callback)4849###############################################################################50# run the simulation5152sol = solve(ode, RDPK3SpFSAL49(); abstol = 1.0e-9, reltol = 1.0e-9,53ode_default_options()..., callback = callbacks)545556