Path: blob/main/examples/dgmulti_3d/elixir_advection_tensor_wedge.jl
2055 views
using OrdinaryDiffEqLowStorageRK1using Trixi2using LinearAlgebra34###############################################################################5equations = LinearScalarAdvectionEquation3D(1.0, 1.0, 1.0)67initial_condition = initial_condition_convergence_test89# Define the polynomial degrees for the polynoms of the triangular base and the line10# of the tensor-prism11tensor_polydeg = (3, 4)1213dg = DGMulti(element_type = Wedge(),14approximation_type = Polynomial(),15surface_flux = flux_lax_friedrichs,16polydeg = tensor_polydeg)1718cells_per_dimension = (8, 8, 8)19mesh = DGMultiMesh(dg,20cells_per_dimension,21coordinates_min = (-1.0, -1.0, -1.0),22coordinates_max = (1.0, 1.0, 1.0),23periodicity = true)2425semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, dg,26boundary_conditions = boundary_condition_periodic)2728###############################################################################29# ODE solvers, callbacks etc.3031tspan = (0.0, 5.0)32ode = semidiscretize(semi, tspan)3334summary_callback = SummaryCallback()3536analysis_interval = 10037analysis_callback = AnalysisCallback(semi, interval = analysis_interval, uEltype = real(dg))3839alive_callback = AliveCallback(analysis_interval = analysis_interval)4041# The StepsizeCallback handles the re-calculation of the maximum Δt after each time step42stepsize_callback = StepsizeCallback(cfl = 1.0)4344save_solution = SaveSolutionCallback(interval = analysis_interval,45solution_variables = cons2prim)4647callbacks = CallbackSet(summary_callback, analysis_callback, alive_callback,48stepsize_callback, save_solution)4950###############################################################################51# run the simulation5253sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false), dt = 1.0;54ode_default_options()..., callback = callbacks);555657