Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
18797ce
Implemented fluxes using normal_direction.
SimonCan Jun 18, 2025
a29b2e2
Added example using IdealGlmMhdMultiIonEquations2D equations on a str…
SimonCan Jun 20, 2025
31cc07d
Corrected projections for numerical fluxes using normal_direction.
SimonCan Jun 23, 2025
c1bab01
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jun 23, 2025
4b79219
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jun 23, 2025
d8d19aa
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jun 23, 2025
806122f
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jun 23, 2025
dd2c8b9
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jun 23, 2025
5e71d79
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jun 23, 2025
7681029
Compute normal component of velocites to save computaional time.
SimonCan Jun 23, 2025
c461f93
Merge branch 'sc/flux_ruedaramirez_etal_normal_direction' of https://…
SimonCan Jun 23, 2025
ac03104
Merge branch 'main' into sc/flux_ruedaramirez_etal_normal_direction
SimonCan Jun 23, 2025
02547aa
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jun 23, 2025
040451d
Applied the autoformatter.
SimonCan Jun 23, 2025
fb7cd6e
Merge branch 'main' into sc/flux_ruedaramirez_etal_normal_direction
SimonCan Jun 25, 2025
40b023e
Merge branch 'main' into sc/flux_ruedaramirez_etal_normal_direction
SimonCan Jul 2, 2025
90584e6
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jul 2, 2025
1f9ae00
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jul 2, 2025
7a35acc
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jul 2, 2025
e1c2464
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jul 2, 2025
e46d9ff
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jul 2, 2025
16015ab
Update src/equations/ideal_glm_mhd_multiion_2d.jl
SimonCan Jul 8, 2025
1b2f5e9
Corrections in flux_nonconservative_ruedaramirez_etal for general dir…
SimonCan Jul 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions examples/structured_2d_dgsem/elixir_mhdmultiion_ec.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
using OrdinaryDiffEqLowStorageRK
using Trixi

###############################################################################
# semidiscretization of the ideal multi-ion MHD equations
equations = IdealGlmMhdMultiIonEquations2D(gammas = (1.4, 1.667),
charge_to_mass = (1.0, 2.0))

initial_condition = initial_condition_weak_blast_wave

# Entropy conservative numerical fluxes
volume_flux = (flux_ruedaramirez_etal, flux_nonconservative_ruedaramirez_etal)
surface_flux = (flux_ruedaramirez_etal, flux_nonconservative_ruedaramirez_etal)
# For provably entropy-stable surface fluxes, use
# surface_flux = (FluxPlusDissipation(flux_ruedaramirez_etal, DissipationLaxFriedrichsEntropyVariables()),
# flux_nonconservative_ruedaramirez_etal)
# For a standard local Lax-Friedrichs surface flux, use
# surface_flux = (flux_lax_friedrichs, flux_nonconservative_central)

solver = DGSEM(polydeg = 3, surface_flux = surface_flux,
volume_integral = VolumeIntegralFluxDifferencing(volume_flux))

coordinates_min = (-2.0, -2.0)
coordinates_max = (2.0, 2.0)
cells_per_dimension = (100, 100)
mesh = StructuredMesh(cells_per_dimension, coordinates_min, coordinates_max)

# The multi-ion GLM-MHD equations require the inclusion of source_terms_lorentz
# whenever multiple ion species are present
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,
source_terms = source_terms_lorentz)

###############################################################################
# ODE solvers, callbacks etc.

tspan = (0.0, 0.4)
ode = semidiscretize(semi, tspan)

summary_callback = SummaryCallback()

analysis_interval = 10
analysis_callback = AnalysisCallback(semi, interval = analysis_interval)
alive_callback = AliveCallback(analysis_interval = analysis_interval)

save_solution = SaveSolutionCallback(dt = 0.1, # interval=100,
save_initial_solution = true,
save_final_solution = true,
solution_variables = cons2prim)

cfl = 0.5

stepsize_callback = StepsizeCallback(cfl = cfl)

glm_speed_callback = GlmSpeedCallback(glm_scale = 0.5, cfl = cfl)

callbacks = CallbackSet(summary_callback,
analysis_callback, alive_callback,
save_solution,
stepsize_callback,
glm_speed_callback)

###############################################################################
# run the simulation

sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);
dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback
ode_default_options()..., callback = callbacks);
Loading
Loading