Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/examples/dgmulti_1d/elixir_euler_quasi_1d.jl
2055 views
1
using OrdinaryDiffEqLowStorageRK
2
using Trixi
3
4
###############################################################################
5
# Semidiscretization of the quasi 1d compressible Euler equations
6
# See Chan et al. https://doi.org/10.48550/arXiv.2307.12089 for details
7
8
equations = CompressibleEulerEquationsQuasi1D(1.4)
9
10
initial_condition = initial_condition_convergence_test
11
12
surface_flux = (flux_chan_etal, flux_nonconservative_chan_etal)
13
volume_flux = surface_flux
14
dg = DGMulti(polydeg = 4, element_type = Line(), approximation_type = SBP(),
15
surface_integral = SurfaceIntegralWeakForm(surface_flux),
16
volume_integral = VolumeIntegralFluxDifferencing(volume_flux))
17
18
cells_per_dimension = (8,)
19
mesh = DGMultiMesh(dg, cells_per_dimension,
20
coordinates_min = (-1.0,), coordinates_max = (1.0,), periodicity = true)
21
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, dg;
22
source_terms = source_terms_convergence_test)
23
24
###############################################################################
25
# ODE solvers, callbacks etc.
26
27
tspan = (0.0, 2.0)
28
ode = semidiscretize(semi, tspan)
29
30
summary_callback = SummaryCallback()
31
32
analysis_interval = 100
33
analysis_callback = AnalysisCallback(semi, interval = analysis_interval, uEltype = real(dg))
34
35
alive_callback = AliveCallback(analysis_interval = analysis_interval)
36
save_solution = SaveSolutionCallback(interval = analysis_interval,
37
solution_variables = cons2prim)
38
stepsize_callback = StepsizeCallback(cfl = 0.8)
39
40
callbacks = CallbackSet(summary_callback,
41
analysis_callback,
42
alive_callback,
43
save_solution,
44
stepsize_callback)
45
46
###############################################################################
47
# run the simulation
48
49
sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);
50
dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback
51
ode_default_options()..., callback = callbacks);
52
53