Path: blob/main/examples/dgmulti_2d/elixir_euler_bilinear.jl
2055 views
using OrdinaryDiffEqLowStorageRK1using Trixi23dg = DGMulti(polydeg = 3, element_type = Quad(), approximation_type = SBP(),4surface_integral = SurfaceIntegralWeakForm(flux_hll),5volume_integral = VolumeIntegralFluxDifferencing(flux_ranocha))67equations = CompressibleEulerEquations2D(1.4)8initial_condition = initial_condition_convergence_test9source_terms = source_terms_convergence_test1011# example where we tag two separate boundary segments of the mesh12top_boundary(x, tol = 50 * eps()) = abs(x[2] - 1) < tol13rest_of_boundary(x, tol = 50 * eps()) = !top_boundary(x, tol)14is_on_boundary = Dict(:top => top_boundary, :rest => rest_of_boundary)1516function mapping(xi, eta)17x = xi + 0.1 * sin(pi * xi) * sin(pi * eta)18y = eta + 0.1 * sin(pi * xi) * sin(pi * eta)19return SVector(x, y)20end21cells_per_dimension = (16, 16)22vertex_coordinates, EToV = StartUpDG.uniform_mesh(dg.basis.element_type,23cells_per_dimension...)24for i in eachindex(vertex_coordinates[1])25vx, vy = getindex.(vertex_coordinates, i)26setindex!.(vertex_coordinates, mapping(vx, vy), i)27end2829mesh = DGMultiMesh(dg, vertex_coordinates, EToV, is_on_boundary = is_on_boundary)3031boundary_condition_convergence_test = BoundaryConditionDirichlet(initial_condition)32boundary_conditions = (; :top => boundary_condition_convergence_test,33:rest => boundary_condition_convergence_test)3435semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, dg,36source_terms = source_terms,37boundary_conditions = boundary_conditions)3839tspan = (0.0, 0.4)40ode = semidiscretize(semi, tspan)4142summary_callback = SummaryCallback()43alive_callback = AliveCallback(alive_interval = 10)44analysis_interval = 10045analysis_callback = AnalysisCallback(semi, interval = analysis_interval, uEltype = real(dg))46save_solution = SaveSolutionCallback(interval = analysis_interval,47solution_variables = cons2prim)48callbacks = CallbackSet(summary_callback, alive_callback, analysis_callback, save_solution)4950###############################################################################51# run the simulation5253sol = solve(ode, RDPK3SpFSAL49(); abstol = 1.0e-6, reltol = 1.0e-6,54ode_default_options()..., callback = callbacks);555657