Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/examples/tree_3d_dgsem/elixir_mhdmultiion_ec.jl
2055 views
1
2
using OrdinaryDiffEqLowStorageRK
3
using Trixi
4
5
###############################################################################
6
# semidiscretization of the ideal MHD equations
7
equations = IdealGlmMhdMultiIonEquations3D(gammas = (1.4, 1.667),
8
charge_to_mass = (1.0, 2.0))
9
10
initial_condition = initial_condition_weak_blast_wave
11
12
volume_flux = (flux_ruedaramirez_etal, flux_nonconservative_ruedaramirez_etal)
13
surface_flux = (flux_ruedaramirez_etal, flux_nonconservative_ruedaramirez_etal)
14
solver = DGSEM(polydeg = 3, surface_flux = surface_flux,
15
volume_integral = VolumeIntegralFluxDifferencing(volume_flux))
16
17
coordinates_min = (-2.0, -2.0, -2.0)
18
coordinates_max = (2.0, 2.0, 2.0)
19
mesh = TreeMesh(coordinates_min, coordinates_max,
20
initial_refinement_level = 4,
21
n_cells_max = 10_000)
22
23
# The multi-ion GLM-MHD equations require the inclusion of source_terms_lorentz
24
# whenever multiple ion species are present
25
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,
26
source_terms = source_terms_lorentz)
27
28
###############################################################################
29
# ODE solvers, callbacks etc.
30
31
tspan = (0.0, 0.4)
32
ode = semidiscretize(semi, tspan)
33
34
summary_callback = SummaryCallback()
35
36
analysis_interval = 10
37
analysis_callback = AnalysisCallback(semi, interval = analysis_interval)
38
alive_callback = AliveCallback(analysis_interval = analysis_interval)
39
40
save_solution = SaveSolutionCallback(dt = 0.1,
41
save_initial_solution = true,
42
save_final_solution = true,
43
solution_variables = cons2prim)
44
45
cfl = 0.5
46
47
stepsize_callback = StepsizeCallback(cfl = cfl)
48
49
glm_speed_callback = GlmSpeedCallback(glm_scale = 0.5, cfl = cfl)
50
51
callbacks = CallbackSet(summary_callback,
52
analysis_callback, alive_callback,
53
save_solution,
54
stepsize_callback,
55
glm_speed_callback)
56
57
###############################################################################
58
# run the simulation
59
60
sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);
61
dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback
62
ode_default_options()..., callback = callbacks);
63
64