Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert parameter to elixir for 2D Euler tests #229

Merged
merged 19 commits into from
Oct 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
b9fd894
converted blob with fixed grid test
andrewwinters5000 Oct 15, 2020
a20bdeb
fixed mistake in the extended test portion
andrewwinters5000 Oct 15, 2020
5bd8bac
adapted blob with amr testcase
andrewwinters5000 Oct 15, 2020
623d9d7
fixed error in blob amr test
andrewwinters5000 Oct 15, 2020
3a298e5
elixir for the khi without amr
andrewwinters5000 Oct 15, 2020
902bf10
forgot to put khi into the extra testing block
andrewwinters5000 Oct 15, 2020
b4fae66
elixir for vortex + mortar
andrewwinters5000 Oct 15, 2020
7d5663c
attempted to fix weird amr + blob test issue
andrewwinters5000 Oct 15, 2020
19a6e0c
elixir for isentropic vortex + mortar + split
andrewwinters5000 Oct 15, 2020
82188f3
elixir for vortex + split form + shock capturing
andrewwinters5000 Oct 15, 2020
ec946dd
added additional tests of vortex + split to exercise more of the volu…
andrewwinters5000 Oct 15, 2020
510e343
elixir for euler vortex with mortar, split form and shock capturing
andrewwinters5000 Oct 15, 2020
25d6227
elixir for the euler weak blast wave with shock capturing
andrewwinters5000 Oct 15, 2020
be6a98c
fixed error in the test_examples_2d.jl to swap in different volume fl…
andrewwinters5000 Oct 15, 2020
94ee202
updated blob tests and renamed blob files
andrewwinters5000 Oct 16, 2020
34e2e78
Update elixir_euler_blob_split_shockcapturing_amr.jl
andrewwinters5000 Oct 16, 2020
3ca861a
fixed another dumb error in the blob elixir
andrewwinters5000 Oct 16, 2020
bc6898c
merge dev into convert_remaining_2d_euler
andrewwinters5000 Oct 21, 2020
a46e23b
updated elixir files names as discussed
andrewwinters5000 Oct 22, 2020
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
68 changes: 68 additions & 0 deletions examples/2d/elixir_euler_blob_mortar_shockcapturing.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@

using OrdinaryDiffEq
using Trixi

###############################################################################
# semidiscretization of the compressible Euler equations
gamma = 5/3
equations = CompressibleEulerEquations2D(gamma)

initial_conditions = initial_conditions_blob

surface_flux = flux_lax_friedrichs
volume_flux = flux_chandrashekar
basis = LobattoLegendreBasis(3)

indicator_sc = IndicatorHennemannGassner(equations, basis,
alpha_max=0.5,
alpha_min=0.0001,
alpha_smooth=true,
variable=pressure)

volume_integral = VolumeIntegralShockCapturingHG(indicator_sc;
volume_flux_dg=volume_flux,
volume_flux_fv=surface_flux)

solver = DGSEM(basis, surface_flux, volume_integral)

coordinates_min = (-32, -32)
coordinates_max = ( 32, 32)
refinement_patches = (
(type="box", coordinates_min=(-40, -5), coordinates_max=(40, 5)),
)
mesh = TreeMesh(coordinates_min, coordinates_max,
initial_refinement_level=4,
refinement_patches=refinement_patches,
n_cells_max=100_000,)

semi = SemidiscretizationHyperbolic(mesh, equations, initial_conditions, solver)


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

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

summary_callback = SummaryCallback()

stepsize_callback = StepsizeCallback(cfl=0.7)

save_solution = SaveSolutionCallback(interval=100,
save_initial_solution=true,
save_final_solution=true,
solution_variables=:primitive)

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

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


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

sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=stepsize_callback(ode),
save_everystep=false, callback=callbacks);
summary_callback() # print the timer summary
79 changes: 79 additions & 0 deletions examples/2d/elixir_euler_blob_shockcapturing_amr.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@

using OrdinaryDiffEq
using Trixi

###############################################################################
# semidiscretization of the compressible Euler equations
gamma = 5/3
equations = CompressibleEulerEquations2D(gamma)

initial_conditions = initial_conditions_blob

surface_flux = flux_lax_friedrichs
volume_flux = flux_chandrashekar
basis = LobattoLegendreBasis(4)

indicator_sc = IndicatorHennemannGassner(equations, basis,
alpha_max=0.4,
alpha_min=0.0001,
alpha_smooth=true,
variable=pressure)

volume_integral = VolumeIntegralShockCapturingHG(indicator_sc;
volume_flux_dg=volume_flux,
volume_flux_fv=surface_flux)

solver = DGSEM(basis, surface_flux, volume_integral)

coordinates_min = (-20, -20)
coordinates_max = ( 20, 20)

mesh = TreeMesh(coordinates_min, coordinates_max,
initial_refinement_level=6,
n_cells_max=100_000,)

semi = SemidiscretizationHyperbolic(mesh, equations, initial_conditions, solver)


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

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

summary_callback = SummaryCallback()

amr_indicator = IndicatorHennemannGassner(semi,
alpha_max=1.0,
alpha_min=0.0001,
alpha_smooth=true,
variable=pressure)
amr_controller = ControllerThreeLevel(semi, amr_indicator,
base_level=4,
med_level =7, med_threshold=0.003,
max_level =7, max_threshold=0.3)
amr_callback = AMRCallback(semi, amr_controller,
interval=1,
adapt_initial_conditions=true,
adapt_initial_conditions_only_refine=true)

stepsize_callback = StepsizeCallback(cfl=0.3)

save_solution = SaveSolutionCallback(interval=100,
save_initial_solution=true,
save_final_solution=true,
solution_variables=:primitive)

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

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


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

sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=stepsize_callback(ode),
save_everystep=false, callback=callbacks);
summary_callback() # print the timer summary
60 changes: 60 additions & 0 deletions examples/2d/elixir_euler_khi_shockcapturing.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@

using OrdinaryDiffEq
using Trixi

###############################################################################
# semidiscretization of the compressible Euler equations
gamma = 1.4
equations = CompressibleEulerEquations2D(gamma)

initial_conditions = initial_conditions_khi

surface_flux = flux_lax_friedrichs
volume_flux = flux_chandrashekar
polydeg = 3
basis = LobattoLegendreBasis(polydeg)
indicator_sc = IndicatorHennemannGassner(equations, basis,
alpha_max=0.002,
alpha_min=0.0001,
alpha_smooth=true,
variable=density_pressure)
volume_integral = VolumeIntegralShockCapturingHG(indicator_sc;
volume_flux_dg=volume_flux,
volume_flux_fv=surface_flux)
solver = DGSEM(basis, surface_flux, volume_integral)

coordinates_min = (-0.5, -0.5)
coordinates_max = ( 0.5, 0.5)
mesh = TreeMesh(coordinates_min, coordinates_max,
initial_refinement_level=5,
n_cells_max=100_000)
semi = SemidiscretizationHyperbolic(mesh, equations, initial_conditions, solver)

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

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

summary_callback = SummaryCallback()

stepsize_callback = StepsizeCallback(cfl=1.4)

save_solution = SaveSolutionCallback(interval=100,
save_initial_solution=true,
save_final_solution=true,
solution_variables=:primitive)

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

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


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

sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=stepsize_callback(ode),
save_everystep=false, callback=callbacks);
summary_callback() # print the timer summary
60 changes: 60 additions & 0 deletions examples/2d/elixir_euler_vortex_mortar.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@

using OrdinaryDiffEq
using Trixi

###############################################################################
# semidiscretization of the compressible Euler equations

equations = CompressibleEulerEquations2D(1.4)

initial_conditions = initial_conditions_isentropic_vortex

surface_flux = flux_lax_friedrichs
solver = DGSEM(3, surface_flux)

coordinates_min = (-10, -10)
coordinates_max = ( 10, 10)
refinement_patches = (
(type="box", coordinates_min=(0.0, -10.0), coordinates_max=(10.0, 10.0)),
)
mesh = TreeMesh(coordinates_min, coordinates_max,
initial_refinement_level=4,
refinement_patches=refinement_patches,
n_cells_max=10_000,)

semi = SemidiscretizationHyperbolic(mesh, equations, initial_conditions, solver)

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

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

summary_callback = SummaryCallback()

stepsize_callback = StepsizeCallback(cfl=1.4)

save_solution = SaveSolutionCallback(interval=100,
save_initial_solution=true,
save_final_solution=true,
solution_variables=:primitive)
# TODO: Taal, restart
# restart_interval = 100

analysis_interval = 100
alive_callback = AliveCallback(analysis_interval=analysis_interval)

analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true,
extra_analysis_errors=(:conservation_error,),
extra_analysis_integrals=(entropy, energy_total,
energy_kinetic, energy_internal))

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


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

sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=stepsize_callback(ode),
save_everystep=false, callback=callbacks);
summary_callback() # print the timer summary
71 changes: 71 additions & 0 deletions examples/2d/elixir_euler_vortex_mortar_shockcapturing.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

using OrdinaryDiffEq
using Trixi

###############################################################################
# semidiscretization of the compressible Euler equations

equations = CompressibleEulerEquations2D(1.4)

initial_conditions = initial_conditions_isentropic_vortex

surface_flux = flux_lax_friedrichs
volume_flux = flux_kennedy_gruber

basis = LobattoLegendreBasis(3)
indicator_sc = IndicatorHennemannGassner(equations, basis,
alpha_max=0.5,
alpha_min=0.001,
alpha_smooth=true,
variable=density_pressure)
volume_integral = VolumeIntegralShockCapturingHG(indicator_sc;
volume_flux_dg=volume_flux,
volume_flux_fv=surface_flux)
solver = DGSEM(basis, surface_flux, volume_integral)

coordinates_min = (-10, -10)
coordinates_max = ( 10, 10)
refinement_patches = (
(type="box", coordinates_min=(0.0, -10.0), coordinates_max=(10.0, 10.0)),
)
mesh = TreeMesh(coordinates_min, coordinates_max,
initial_refinement_level=4,
refinement_patches=refinement_patches,
n_cells_max=10_000,)

semi = SemidiscretizationHyperbolic(mesh, equations, initial_conditions, solver)

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

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

summary_callback = SummaryCallback()

stepsize_callback = StepsizeCallback(cfl=1.4)

save_solution = SaveSolutionCallback(interval=100,
save_initial_solution=true,
save_final_solution=true,
solution_variables=:primitive)
# TODO: Taal, restart
# restart_interval = 100

analysis_interval = 100
alive_callback = AliveCallback(analysis_interval=analysis_interval)

analysis_callback = AnalysisCallback(semi, interval=analysis_interval, save_analysis=true,
extra_analysis_errors=(:conservation_error,),
extra_analysis_integrals=(entropy, energy_total,
energy_kinetic, energy_internal))

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


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

sol = solve(ode, CarpenterKennedy2N54(williamson_condition=false), dt=stepsize_callback(ode),
save_everystep=false, callback=callbacks);
summary_callback() # print the timer summary
Loading