Path: blob/main/examples/tree_3d_fdsbp/elixir_advection_extended.jl
2055 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, 0.5)10equations = LinearScalarAdvectionEquation3D(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 = 10)17solver = FDSBP(D_SBP,18surface_integral = SurfaceIntegralStrongForm(flux_lax_friedrichs),19volume_integral = VolumeIntegralStrongForm())2021coordinates_min = (-1.0, -1.0, -1.0)22coordinates_max = (1.0, 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)2930###############################################################################31# ODE solvers, callbacks etc.3233tspan = (0.0, 1.0)34ode = semidiscretize(semi, tspan)3536summary_callback = SummaryCallback()3738analysis_interval = 10039analysis_callback = AnalysisCallback(semi, interval = analysis_interval,40extra_analysis_integrals = (energy_total,))4142alive_callback = AliveCallback(analysis_interval = analysis_interval)4344callbacks = CallbackSet(summary_callback,45analysis_callback,46alive_callback)4748###############################################################################49# run the simulation5051sol = solve(ode, RDPK3SpFSAL49(); abstol = 1.0e-9, reltol = 1.0e-9,52ode_default_options()..., callback = callbacks)535455