Skip to content

Commit bdc17ff

Browse files
Add entropy2cons for CompressibleEulerQuasi1D (#2385)
* add entropy2cons for quasi1D euler * set has_sparse_operators to false for Line SBP DGMulti solvers * add quasi1D Euler test with Polynomial flux diff solver * Apply suggestions from code review Co-authored-by: Patrick Ersing <[email protected]> * add unit test --------- Co-authored-by: Patrick Ersing <[email protected]>
1 parent 0ae1541 commit bdc17ff

File tree

4 files changed

+36
-1
lines changed

4 files changed

+36
-1
lines changed

src/equations/compressible_euler_quasi_1d.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,13 @@ end
355355
return SVector(w[1], w[2], w[3], a)
356356
end
357357

358+
@inline function entropy2cons(w, equations::CompressibleEulerEquationsQuasi1D)
359+
w_rho, w_rho_v1, w_rho_e, a = w
360+
u = entropy2cons(SVector(w_rho, w_rho_v1, w_rho_e),
361+
CompressibleEulerEquations1D(equations.gamma))
362+
return SVector(a * u[1], a * u[2], a * u[3], a)
363+
end
364+
358365
# Convert primitive to conservative variables
359366
@inline function prim2cons(u, equations::CompressibleEulerEquationsQuasi1D)
360367
rho, v1, p, a = u

src/solvers/dgmulti/flux_differencing.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ end
431431

432432
# For traditional SBP operators on triangles, the operators are fully dense. We avoid using
433433
# sum factorization here, which is slower for fully dense matrices.
434-
@inline function has_sparse_operators(::Union{Tri, Tet},
434+
@inline function has_sparse_operators(::Union{Line, Tri, Tet},
435435
approx_type::AT) where {AT <: SBP}
436436
False()
437437
end

test/test_dgmulti_1d.jl

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,32 @@ end
273273
@test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 1000
274274
end
275275
end
276+
277+
@trixi_testset "elixir_euler_quasi_1d.jl (Polynomial) " begin
278+
@test_trixi_include(joinpath(EXAMPLES_DIR, "elixir_euler_quasi_1d.jl"),
279+
cells_per_dimension=(8,),
280+
approximation_type=Polynomial(),
281+
l2=[
282+
3.3742251708854453e-6,
283+
2.9716405988822176e-6,
284+
3.1641250402788772e-6,
285+
1.0482169269991052e-6
286+
],
287+
linf=[
288+
8.056816211965412e-6,
289+
6.031057946387364e-6,
290+
6.90878439346676e-6,
291+
1.5199471203874992e-6
292+
])
293+
# Ensure that we do not have excessive memory allocations
294+
# (e.g., from type instabilities)
295+
let
296+
t = sol.t[end]
297+
u_ode = sol.u[end]
298+
du_ode = similar(u_ode)
299+
@test (@allocated Trixi.rhs!(du_ode, u_ode, semi, t)) < 1000
300+
end
301+
end
276302
end
277303

278304
# Clean up afterwards: delete Trixi.jl output directory

test/test_unit.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2070,6 +2070,8 @@ end
20702070

20712071
@test max_abs_speed_naive(u_ll, u_rr, 1, equations)
20722072
max_abs_speed(u_ll, u_rr, 1, equations)
2073+
2074+
@test u_ll entropy2cons(cons2entropy(u_ll, equations), equations)
20732075
end
20742076
end
20752077

0 commit comments

Comments
 (0)