Path: blob/main/test/test_paper_self_gravitating_gas_dynamics.jl
5582 views
module TestPaperSelfgravitatingGasDynamics12using Test3using Trixi45include("test_trixi.jl")67# Start with a clean environment: remove Trixi.jl output directory if it exists8outdir = "out"9isdir(outdir) && rm(outdir, recursive = true)1011EXAMPLES_DIR = joinpath(examples_dir(), "paper_self_gravitating_gas_dynamics")1213# Numerical examples from the Euler-gravity paper14@testset "paper_self_gravitating_gas_dynamics" begin15#! format: noindent1617@trixi_testset "elixir_euler_convergence.jl" begin18@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_convergence.jl"),19l2=[200.0001740977055972079,210.0003369355182519592,220.0003369355182518708,230.000609917122033498924],25linf=[260.001079347149189669,270.0018836938381321389,280.001883693838132583,290.00397157537671821730])31# Ensure that we do not have excessive memory allocations32# (e.g., from type instabilities)33@test_allocations(Trixi.rhs!, semi, sol, 1000)34end3536@trixi_testset "elixir_euler_convergence.jl with polydeg=4" begin37@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_convergence.jl"),38l2=[391.7187201161597772e-5,402.678065111772951e-5,412.678065111783027e-5,424.952504160091526e-543],44linf=[450.0001501749544159381,460.00016549482504535362,470.00016549482504601976,480.000437296029143219349],50polydeg=4)51# Ensure that we do not have excessive memory allocations52# (e.g., from type instabilities)53@test_allocations(Trixi.rhs!, semi, sol, 1000)54end5556@trixi_testset "elixir_hypdiff_convergence.jl" begin57@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_hypdiff_convergence.jl"),58l2=[590.003154024896093942,600.012394432074951856,610.0218597382379472562],63linf=[640.01731850928579215,650.07843510773347553,660.1124230017634920167])68# Ensure that we do not have excessive memory allocations69# (e.g., from type instabilities)70@test_allocations(Trixi.rhs!, semi, sol, 1000)71end7273@trixi_testset "elixir_hypdiff_convergence.jl with polydeg=4" begin74@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_hypdiff_convergence.jl"),75l2=[760.0002511283012128458,770.0008808243846610255,780.001631334322856700579],80linf=[810.0017290715087938668,820.003129184465704738,830.0100072884931670184],85polydeg=4)86# Ensure that we do not have excessive memory allocations87# (e.g., from type instabilities)88@test_allocations(Trixi.rhs!, semi, sol, 1000)89end9091@trixi_testset "elixir_eulergravity_convergence.jl" begin92@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulergravity_convergence.jl"),93l2=[940.00024871265138964204,950.0003370077102132591,960.0003370077102131964,970.000723152551379369798],99linf=[1000.0015813032944647087,1010.0020494288423820173,1020.0020494288423824614,1030.004793821195083758104],105tspan=(0.0, 0.1))106# Ensure that we do not have excessive memory allocations107# (e.g., from type instabilities)108@test_allocations(Trixi.rhs!, semi, sol, 1000)109end110111@trixi_testset "elixir_eulergravity_convergence.jl with polydeg=4" begin112@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulergravity_convergence.jl"),113l2=[1141.9537712148648045e-5,1152.7564396197947587e-5,1162.7564396197967635e-5,1175.688838772067586e-5118],119linf=[1200.00012335710672761735,1210.00020086268350816283,1220.00020086268350727465,1230.0004962155455632278124],125tspan=(0.0, 0.1), polydeg=4)126# Ensure that we do not have excessive memory allocations127# (e.g., from type instabilities)128@test_allocations(Trixi.rhs!, semi, sol, 1000)129end130131@trixi_testset "elixir_eulergravity_convergence.jl with 1st order RK3S*" begin132@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulergravity_convergence.jl"),133l2=[1340.00024871265138959434,1350.000337007710281087,1360.0003370077102811394,1370.0007231525515231289138],139linf=[1400.0015813032941613958,1410.002049428843978518,1420.0020494288439798503,1430.004793821198143977144],145tspan=(0.0, 0.1),146timestep_gravity=Trixi.timestep_gravity_erk51_3Sstar!)147# Ensure that we do not have excessive memory allocations148# (e.g., from type instabilities)149@test_allocations(Trixi.rhs!, semi, sol, 1000)150end151152@trixi_testset "elixir_eulergravity_convergence.jl with 3rd order RK3S*" begin153@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_eulergravity_convergence.jl"),154l2=[1550.0002487126513894034,1560.00033700771023049785,1570.00033700771023048245,1580.0007231525514158737159],160linf=[1610.0015813032943847727,1620.002049428842844314,1630.0020494288428452023,1640.004793821195971937165],166tspan=(0.0, 0.1),167timestep_gravity=Trixi.timestep_gravity_erk53_3Sstar!)168# Ensure that we do not have excessive memory allocations169# (e.g., from type instabilities)170@test_allocations(Trixi.rhs!, semi, sol, 1000)171end172173@trixi_testset "elixir_eulergravity_jeans_instability.jl" begin174@test_trixi_include(joinpath(EXAMPLES_DIR,175"elixir_eulergravity_jeans_instability.jl"),176l2=[17710733.28239179182,17813356.0533511341,1791.6722844879795038e-6,18026833.19833691448181],182linf=[18315193.794080890715,18418880.45819785685,1856.809726988008751e-6,18637971.74113135785187],188tspan=(0.0, 0.1),189atol=4.0e-6)190# Ensure that we do not have excessive memory allocations191# (e.g., from type instabilities)192@test_allocations(Trixi.rhs!, semi, sol, 1000)193end194195@trixi_testset "elixir_eulergravity_jeans_instability.jl with RK3S*" begin196@test_trixi_include(joinpath(EXAMPLES_DIR,197"elixir_eulergravity_jeans_instability.jl"),198l2=[19910734.653995035567,20013357.709699808021,2011.911011743371934e-6,20226836.62734552835203],204linf=[20515195.73481107317,20618882.799120551972,2077.867948710816926e-6,20837976.592992473394209],210tspan=(0.0, 0.1),211atol=4.0e-6, # the background field is reatively large, so this corresponds to our usual atol212parameters=ParametersEulerGravity(background_density = 1.5e7,213gravitational_constant = 6.674e-8,214cfl = 2.4,215resid_tol = 1.0e-4,216n_iterations_max = 1000,217timestep_gravity = timestep_gravity_erk52_3Sstar!))218# Ensure that we do not have excessive memory allocations219# (e.g., from type instabilities)220@test_allocations(Trixi.rhs!, semi, sol, 1000)221end222223@trixi_testset "Printing" begin224@test_trixi_include(joinpath(EXAMPLES_DIR,225"elixir_eulergravity_jeans_instability.jl"),226tspan=(0.0, 1.0e-5),227parameters=ParametersEulerGravity(background_density = 1.5e7,228gravitational_constant = 6.674e-8,229cfl = 2.4,230resid_tol = 1.0e-4,231n_iterations_max = 1000,232timestep_gravity = timestep_gravity_erk52_3Sstar!))233234show(stdout, parameters)235show(stdout, semi)236show(stdout, semi_euler.boundary_conditions)237show(stdout, TrivialCallback())238show(stdout, equations_euler)239# Ensure that we do not have excessive memory allocations240# (e.g., from type instabilities)241@test_allocations(Trixi.rhs!, semi, sol, 1000)242end243244@trixi_testset "elixir_eulergravity_sedov_blast_wave.jl" begin245@test_trixi_include(joinpath(EXAMPLES_DIR,246"elixir_eulergravity_sedov_blast_wave.jl"),247l2=[2480.046315994852653024,2490.0650818006233669,2500.06508180062336677,2510.4896707211656037252],253linf=[2542.3874843337593776,2554.07876384374792,2564.07876384374792,25716.23914384809855258],259tspan=(0.0, 0.05))260# Ensure that we do not have excessive memory allocations261# (e.g., from type instabilities)262@test_allocations(Trixi.rhs!, semi, sol, 1000)263end264265@trixi_testset "elixir_eulergravity_sedov_blast_wave.jl with ref-level=8 and no AMR" begin266@test_trixi_include(joinpath(EXAMPLES_DIR,267"elixir_eulergravity_sedov_blast_wave.jl"),268l2=[2690.00289222135995042,2700.013724813590853825,2710.013724813590853832,2720.05822904710548214273],274linf=[2750.26361780693997594,2761.3908873830688688,2771.3908873830688688,2784.066701303607613279],280tspan=(0.0, 0.005), initial_refinement_level=8,281amr_callback=TrivialCallback())282# Ensure that we do not have excessive memory allocations283# (e.g., from type instabilities)284@test_allocations(Trixi.rhs!, semi, sol, 1000)285end286end287288# Clean up afterwards: delete Trixi.jl output directory289@test_nowarn rm(outdir, recursive = true)290291end #module292293294