Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/examples/unstructured_2d_dgsem/elixir_euler_ec.jl
5586 views
1
using OrdinaryDiffEqLowStorageRK
2
using Trixi
3
4
###############################################################################
5
# semidiscretization of the compressible Euler equations
6
7
equations = CompressibleEulerEquations2D(5 / 3)
8
9
initial_condition = initial_condition_weak_blast_wave
10
11
###############################################################################
12
# Get the DG approximation space
13
14
volume_flux = flux_ranocha
15
solver = DGSEM(polydeg = 6, surface_flux = flux_ranocha,
16
volume_integral = VolumeIntegralFluxDifferencing(volume_flux))
17
18
###############################################################################
19
# Get the curved quad mesh from a file
20
mesh_file = Trixi.download("https://gist.githubusercontent.com/andrewwinters5000/12ce661d7c354c3d94c74b964b0f1c96/raw/8275b9a60c6e7ebbdea5fc4b4f091c47af3d5273/mesh_periodic_square_with_twist.mesh",
21
joinpath(@__DIR__, "mesh_periodic_square_with_twist.mesh"))
22
23
mesh = UnstructuredMesh2D(mesh_file, periodicity = true)
24
25
###############################################################################
26
# create the semi discretization object
27
28
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver;
29
boundary_conditions = boundary_condition_periodic)
30
31
###############################################################################
32
# ODE solvers, callbacks etc.
33
34
tspan = (0.0, 2.0)
35
ode = semidiscretize(semi, tspan)
36
37
summary_callback = SummaryCallback()
38
39
analysis_interval = 100
40
analysis_callback = AnalysisCallback(semi, interval = analysis_interval)
41
42
alive_callback = AliveCallback(analysis_interval = analysis_interval)
43
44
save_solution = SaveSolutionCallback(interval = 100,
45
save_initial_solution = true,
46
save_final_solution = true)
47
48
stepsize_callback = StepsizeCallback(cfl = 1.0)
49
50
callbacks = CallbackSet(summary_callback,
51
analysis_callback,
52
alive_callback,
53
save_solution,
54
stepsize_callback)
55
56
###############################################################################
57
# run the simulation
58
59
sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);
60
dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback
61
ode_default_options()..., callback = callbacks);
62
63