Path: blob/main/examples/tree_3d_dgsem/elixir_euler_density_pulse.jl
2055 views
using OrdinaryDiffEqLowStorageRK1using Trixi23###############################################################################4# semidiscretization of the compressible Euler equations56equations = CompressibleEulerEquations3D(1.4)78"""9initial_condition_density_pulse(x, t, equations::CompressibleEulerEquations3D)1011A Gaussian pulse in the density with constant velocity and pressure; reduces the12compressible Euler equations to the linear advection equations.13"""14function initial_condition_density_pulse(x, t, equations::CompressibleEulerEquations3D)15rho = 1 + exp(-(x[1]^2 + x[2]^2 + x[3]^2)) / 216v1 = 117v2 = 118v3 = 119rho_v1 = rho * v120rho_v2 = rho * v221rho_v3 = rho * v322p = 123rho_e = p / (equations.gamma - 1) + 1 / 2 * rho * (v1^2 + v2^2 + v3^2)24return SVector(rho, rho_v1, rho_v2, rho_v3, rho_e)25end26initial_condition = initial_condition_density_pulse2728volume_flux = flux_ranocha29solver = DGSEM(polydeg = 3, surface_flux = flux_ranocha,30volume_integral = VolumeIntegralFluxDifferencing(volume_flux))3132coordinates_min = (-2.0, -2.0, -2.0)33coordinates_max = (2.0, 2.0, 2.0)34mesh = TreeMesh(coordinates_min, coordinates_max,35initial_refinement_level = 3,36n_cells_max = 100_000)3738semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver)3940###############################################################################41# ODE solvers, callbacks etc.4243tspan = (0.0, 0.4)44ode = semidiscretize(semi, tspan)4546summary_callback = SummaryCallback()4748analysis_interval = 10049analysis_callback = AnalysisCallback(semi, interval = analysis_interval)5051alive_callback = AliveCallback(analysis_interval = analysis_interval)5253save_restart = SaveRestartCallback(interval = 100,54save_final_restart = true)5556save_solution = SaveSolutionCallback(interval = 100,57save_initial_solution = true,58save_final_solution = true,59solution_variables = cons2prim)6061stepsize_callback = StepsizeCallback(cfl = 1.1)6263callbacks = CallbackSet(summary_callback,64analysis_callback, alive_callback,65save_restart, save_solution,66stepsize_callback)6768###############################################################################69# run the simulation7071sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);72dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback73ode_default_options()..., callback = callbacks);747576