Path: blob/main/examples/dgmulti_2d/elixir_advection_diffusion_periodic.jl
2055 views
using OrdinaryDiffEqLowStorageRK1using Trixi23dg = DGMulti(polydeg = 1, element_type = Tri(), approximation_type = Polynomial(),4surface_integral = SurfaceIntegralWeakForm(flux_lax_friedrichs),5volume_integral = VolumeIntegralWeakForm())67equations = LinearScalarAdvectionEquation2D(0.0, 0.0)8equations_parabolic = LaplaceDiffusion2D(5.0e-1, equations)910function initial_condition_sharp_gaussian(x, t, equations::LinearScalarAdvectionEquation2D)11return SVector(exp(-100 * (x[1]^2 + x[2]^2)))12end13initial_condition = initial_condition_sharp_gaussian1415cells_per_dimension = (16, 16)16mesh = DGMultiMesh(dg, cells_per_dimension, periodicity = true)17semi = SemidiscretizationHyperbolicParabolic(mesh, (equations, equations_parabolic),18initial_condition, dg)1920tspan = (0.0, 0.1)21ode = semidiscretize(semi, tspan)2223summary_callback = SummaryCallback()24alive_callback = AliveCallback(alive_interval = 10)25analysis_interval = 10026analysis_callback = AnalysisCallback(semi, interval = analysis_interval, uEltype = real(dg))27save_solution = SaveSolutionCallback(interval = analysis_interval,28solution_variables = cons2prim)29callbacks = CallbackSet(summary_callback, alive_callback, analysis_callback, save_solution)3031###############################################################################32# run the simulation3334time_int_tol = 1e-635sol = solve(ode, RDPK3SpFSAL49(); abstol = time_int_tol, reltol = time_int_tol,36dt = time_int_tol, ode_default_options()..., callback = callbacks)373839