Skip to content

Commit

Permalink
add tests for quartic nonconvex flux
Browse files Browse the repository at this point in the history
  • Loading branch information
ranocha committed Mar 13, 2020
1 parent 107dc95 commit 223cd4d
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 17 deletions.
8 changes: 4 additions & 4 deletions test/conservation_laws/burgers_test.jl
Expand Up @@ -11,7 +11,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
let D = fourier_derivative_operator(xmin, xmax, N)
Di = dissipation_operator(TadmorWaagan2012Standard(), D)
semidisc = BurgersPeriodicSemidiscretisation(D, Di, split_form)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand All @@ -22,7 +22,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
D = periodic_derivative_operator(1, acc_order, xmin, xmax, N)
Di = dissipation_operator(D)
semidisc = BurgersPeriodicSemidiscretisation(D, Di, split_form)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand All @@ -32,7 +32,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
let D = legendre_derivative_operator(xmin, xmax, N)
Di = nothing
semidisc = BurgersNonperiodicSemidiscretisation(D, Di, split_form, zero, zero)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand All @@ -43,7 +43,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
D = derivative_operator(MattssonSvärdNordström2004(), 1, acc_order, xmin, xmax, N)
Di = dissipation_operator(D)
semidisc = BurgersNonperiodicSemidiscretisation(D, Di, split_form, zero, zero)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand Down
8 changes: 4 additions & 4 deletions test/conservation_laws/cubic_test.jl
Expand Up @@ -12,7 +12,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
let D = fourier_derivative_operator(xmin, xmax, N)
Di = dissipation_operator(TadmorWaagan2012Standard(), D)
semidisc = CubicPeriodicSemidiscretisation(D, Di, split_form)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand All @@ -26,7 +26,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
D = periodic_derivative_operator(1, acc_order, xmin, xmax, N)
Di = dissipation_operator(D)
semidisc = CubicPeriodicSemidiscretisation(D, Di, split_form)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand All @@ -39,7 +39,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
let D = legendre_derivative_operator(xmin, xmax, N)
Di = nothing
semidisc = CubicNonperiodicSemidiscretisation(D, Di, split_form, zero, zero)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand All @@ -53,7 +53,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
D = derivative_operator(MattssonSvärdNordström2004(), 1, acc_order, xmin, xmax, N)
Di = dissipation_operator(D)
semidisc = CubicNonperiodicSemidiscretisation(D, Di, split_form, zero, zero)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand Down
14 changes: 7 additions & 7 deletions test/conservation_laws/quartic_nonconvex_test.jl
Expand Up @@ -6,32 +6,32 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
xmax = T(1)
N = 2^6
u0func = sinpi
tspan = (zero(T), one(T))
tspan = (zero(T), one(T)/50)

# Fourier
let D = fourier_derivative_operator(xmin, xmax, N)
Di = dissipation_operator(TadmorWaagan2012Standard(), D)
semidisc = CubicPeriodicSemidiscretisation(D, Di, split_form)
println(semidisc, devnull)
semidisc = QuarticNonconvexPeriodicSemidiscretisation(D, Di, split_form)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))

saving = SavingCallback(semidisc, saveat=range(tspan..., length=10))
sol = solve(ode, SSPRK104(), dt=1/5N, save_everystep=false, callback=saving)
sol = solve(ode, SSPRK104(), dt=1/20N, save_everystep=false, callback=saving)
end

# Periodic FD
for acc_order in 2:2:8
D = periodic_derivative_operator(1, acc_order, xmin, xmax, N)
Di = dissipation_operator(D)
semidisc = CubicPeriodicSemidiscretisation(D, Di, split_form)
println(semidisc, devnull)
semidisc = QuarticNonconvexPeriodicSemidiscretisation(D, Di, split_form)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))

saving = SavingCallback(semidisc, saveat=range(tspan..., length=10))
sol = solve(ode, SSPRK104(), dt=1/5N, save_everystep=false, callback=saving)
sol = solve(ode, SSPRK104(), dt=1/20N, save_everystep=false, callback=saving)
end
end
4 changes: 2 additions & 2 deletions test/conservation_laws/variable_linear_advection_test.jl
Expand Up @@ -12,7 +12,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
let D = legendre_derivative_operator(xmin, xmax, N)
Di = nothing
semidisc = VariableLinearAdvectionNonperiodicSemidiscretisation(D, Di, afunc, split_form, zero, zero)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand All @@ -23,7 +23,7 @@ for T in (Float32, Float64), split_form in (Val{true}(), Val{false}())
D = derivative_operator(MattssonSvärdNordström2004(), 1, acc_order, xmin, xmax, N)
Di = dissipation_operator(D)
semidisc = VariableLinearAdvectionNonperiodicSemidiscretisation(D, Di, afunc, split_form, zero, zero)
println(semidisc, devnull)
println(devnull, semidisc)
ode = semidiscretise(u0func, semidisc, tspan)
du = similar(ode.u0)
semidisc(du, ode.u0, nothing, first(tspan))
Expand Down
1 change: 1 addition & 0 deletions test/runtests.jl
Expand Up @@ -12,6 +12,7 @@ using Test
include("conservation_laws/burgers_test.jl")
include("conservation_laws/cubic_test.jl")
include("conservation_laws/variable_linear_advection_test.jl")
include("conservation_laws/quartic_nonconvex_test.jl")
end
@time @testset "Second Order Equations" begin
include("second_order_eqs/wave_eq_test.jl")
Expand Down

0 comments on commit 223cd4d

Please sign in to comment.