Path: blob/main/examples/p4est_2d_dgsem/elixir_advection_diffusion_rotated.jl
5586 views
using OrdinaryDiffEqLowStorageRK1using Trixi23###############################################################################4# semidiscretization of the linear advection-diffusion equation56diffusivity() = 1.0e-27advection_velocity = (-1.0, 1.0)8equations = LinearScalarAdvectionEquation2D(advection_velocity)9equations_parabolic = LaplaceDiffusion2D(diffusivity(), equations)1011function initial_condition_gauss_damped(x, t, equations)12damping_factor = 1 + 4 * diffusivity() * t13return SVector(exp(-(x[1]^2 + x[2]^2) / damping_factor) / damping_factor)14end15initial_condition = initial_condition_gauss_damped1617solver = DGSEM(polydeg = 3, surface_flux = flux_lax_friedrichs)1819# This maps the domain [-1, 1]^2 to a 45-degree rotated increased square20square_size() = 5.021function mapping(xi, eta)22x = square_size() * xi23y = square_size() * eta24return SVector((x - y) / sqrt(2), (x + y) / sqrt(2))25end2627trees_per_dimension = (23, 23)28mesh = P4estMesh(trees_per_dimension,29polydeg = 3, initial_refinement_level = 0,30mapping = mapping, periodicity = true)3132semi = SemidiscretizationHyperbolicParabolic(mesh, (equations, equations_parabolic),33initial_condition, solver;34solver_parabolic = ParabolicFormulationLocalDG(),35boundary_conditions = (boundary_condition_periodic,36boundary_condition_periodic))3738###############################################################################39# ODE solvers, callbacks etc.4041n_passes = 242tspan = (0.0, n_passes * square_size() * sqrt(2))43ode = semidiscretize(semi, tspan)4445summary_callback = SummaryCallback()4647analysis_interval = 10048analysis_callback = AnalysisCallback(semi, interval = analysis_interval)4950alive_callback = AliveCallback(analysis_interval = analysis_interval)5152callbacks = CallbackSet(summary_callback, analysis_callback, alive_callback)5354###############################################################################55# run the simulation5657time_int_tol = 1.0e-658sol = solve(ode, RDPK3SpFSAL49(); abstol = time_int_tol, reltol = time_int_tol,59ode_default_options()..., callback = callbacks)606162