Path: blob/main/examples/structured_2d_dgsem/elixir_eulerpolytropic_wave.jl
2055 views
using OrdinaryDiffEqLowStorageRK1using Trixi23###############################################################################4# semidiscretization of the polytropic Euler equations56gamma() = 2.0 # Adiabatic monatomic gas in 2d.7kappa() = 0.5 # Scaling factor for the pressure.8equations = PolytropicEulerEquations2D(gamma(), kappa())910# Linear pressure wave in the negative x-direction.11function initial_condition_wave(x, t, equations::PolytropicEulerEquations2D)12rho = 1.013v1 = 0.014if x[1] > 0.015rho = ((1.0 + 0.01 * sin(x[1] * 2 * pi)) / equations.kappa)^(1 / equations.gamma)16v1 = ((0.01 * sin((x[1] - 1 / 2) * 2 * pi)) / equations.kappa)17end18v2 = 0.01920return prim2cons(SVector(rho, v1, v2), equations)21end22initial_condition = initial_condition_wave2324volume_flux = flux_winters_etal25solver = DGSEM(polydeg = 2, surface_flux = flux_hll,26volume_integral = VolumeIntegralFluxDifferencing(volume_flux))2728coordinates_min = (-2.0, -1.0)29coordinates_max = (2.0, 1.0)3031cells_per_dimension = (64, 32)3233boundary_conditions = (x_neg = boundary_condition_periodic,34x_pos = boundary_condition_periodic,35y_neg = boundary_condition_periodic,36y_pos = boundary_condition_periodic)3738mesh = StructuredMesh(cells_per_dimension,39coordinates_min,40coordinates_max)4142semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,43boundary_conditions = boundary_conditions)4445###############################################################################46# ODE solvers, callbacks etc.4748tspan = (0.0, 1.0)49ode = semidiscretize(semi, tspan)5051summary_callback = SummaryCallback()5253analysis_interval = 20054analysis_callback = AnalysisCallback(semi, interval = analysis_interval)5556alive_callback = AliveCallback(analysis_interval = analysis_interval)5758save_solution = SaveSolutionCallback(interval = 50,59save_initial_solution = true,60save_final_solution = true,61solution_variables = cons2prim)6263stepsize_callback = StepsizeCallback(cfl = 1.7)6465callbacks = CallbackSet(summary_callback,66analysis_callback, alive_callback,67save_solution,68stepsize_callback)6970###############################################################################71# run the simulation7273sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);74dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback75ode_default_options()..., callback = callbacks);767778