Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/examples/dgmulti_2d/elixir_advection_diffusion_periodic.jl
2055 views
1
using OrdinaryDiffEqLowStorageRK
2
using Trixi
3
4
dg = DGMulti(polydeg = 1, element_type = Tri(), approximation_type = Polynomial(),
5
surface_integral = SurfaceIntegralWeakForm(flux_lax_friedrichs),
6
volume_integral = VolumeIntegralWeakForm())
7
8
equations = LinearScalarAdvectionEquation2D(0.0, 0.0)
9
equations_parabolic = LaplaceDiffusion2D(5.0e-1, equations)
10
11
function initial_condition_sharp_gaussian(x, t, equations::LinearScalarAdvectionEquation2D)
12
return SVector(exp(-100 * (x[1]^2 + x[2]^2)))
13
end
14
initial_condition = initial_condition_sharp_gaussian
15
16
cells_per_dimension = (16, 16)
17
mesh = DGMultiMesh(dg, cells_per_dimension, periodicity = true)
18
semi = SemidiscretizationHyperbolicParabolic(mesh, (equations, equations_parabolic),
19
initial_condition, dg)
20
21
tspan = (0.0, 0.1)
22
ode = semidiscretize(semi, tspan)
23
24
summary_callback = SummaryCallback()
25
alive_callback = AliveCallback(alive_interval = 10)
26
analysis_interval = 100
27
analysis_callback = AnalysisCallback(semi, interval = analysis_interval, uEltype = real(dg))
28
save_solution = SaveSolutionCallback(interval = analysis_interval,
29
solution_variables = cons2prim)
30
callbacks = CallbackSet(summary_callback, alive_callback, analysis_callback, save_solution)
31
32
###############################################################################
33
# run the simulation
34
35
time_int_tol = 1e-6
36
sol = solve(ode, RDPK3SpFSAL49(); abstol = time_int_tol, reltol = time_int_tol,
37
dt = time_int_tol, ode_default_options()..., callback = callbacks)
38
39