Path: blob/main/examples/dgmulti_3d/elixir_euler_shockcapturing.jl
5586 views
using OrdinaryDiffEqLowStorageRK1using Trixi23###############################################################################4# semidiscretization of the compressible Euler equations56equations = CompressibleEulerEquations3D(1.4)78initial_condition = initial_condition_weak_blast_wave9surface_flux = flux_lax_friedrichs10volume_flux = flux_ranocha1112polydeg = 313basis = DGMultiBasis(Hex(), polydeg, approximation_type = GaussSBP())1415indicator_sc = IndicatorHennemannGassner(equations, basis,16alpha_max = 0.5,17alpha_min = 0.001,18alpha_smooth = true,19variable = density_pressure)20volume_integral = VolumeIntegralShockCapturingHG(indicator_sc;21volume_flux_dg = volume_flux,22volume_flux_fv = surface_flux)23dg = DGMulti(basis,24surface_integral = SurfaceIntegralWeakForm(surface_flux),25volume_integral = volume_integral)2627cells_per_dimension = (4, 4, 4)28mesh = DGMultiMesh(dg, cells_per_dimension;29coordinates_min = (-2.0, -2.0, -2.0),30coordinates_max = (2.0, 2.0, 2.0),31periodicity = true)3233semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, dg;34boundary_conditions = boundary_condition_periodic)3536tspan = (0.0, 0.4)37ode = semidiscretize(semi, tspan)3839summary_callback = SummaryCallback()40alive_callback = AliveCallback(alive_interval = 10)41analysis_interval = 10042analysis_callback = AnalysisCallback(semi, interval = analysis_interval, uEltype = real(dg))43save_solution = SaveSolutionCallback(interval = analysis_interval,44solution_variables = cons2prim)45callbacks = CallbackSet(summary_callback, alive_callback, analysis_callback, save_solution)4647###############################################################################48# run the simulation4950sol = solve(ode, RDPK3SpFSAL49(); abstol = 1.0e-6, reltol = 1.0e-6,51ode_default_options()..., callback = callbacks);525354