Path: blob/main/examples/tree_3d_dgsem/elixir_euler_density_pulse.jl
5586 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_total = p / (equations.gamma - 1) + 1 / 2 * rho * (v1^2 + v2^2 + v3^2)24return SVector(rho, rho_v1, rho_v2, rho_v3, rho_e_total)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, periodicity = true)3738semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver;39boundary_conditions = boundary_condition_periodic)4041###############################################################################42# ODE solvers, callbacks etc.4344tspan = (0.0, 0.4)45ode = semidiscretize(semi, tspan)4647summary_callback = SummaryCallback()4849analysis_interval = 10050analysis_callback = AnalysisCallback(semi, interval = analysis_interval)5152alive_callback = AliveCallback(analysis_interval = analysis_interval)5354save_restart = SaveRestartCallback(interval = 100,55save_final_restart = true)5657save_solution = SaveSolutionCallback(interval = 100,58save_initial_solution = true,59save_final_solution = true,60solution_variables = cons2prim)6162stepsize_callback = StepsizeCallback(cfl = 1.1)6364callbacks = CallbackSet(summary_callback,65analysis_callback, alive_callback,66save_restart, save_solution,67stepsize_callback)6869###############################################################################70# run the simulation7172sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);73dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback74ode_default_options()..., callback = callbacks);757677