Skip to content
This repository was archived by the owner on Jul 19, 2023. It is now read-only.

Commit f9dbbff

Browse files
committed
added symbolic test for KdV
1 parent ed55832 commit f9dbbff

File tree

2 files changed

+48
-58
lines changed

2 files changed

+48
-58
lines changed

test/MOL/MOL_1D_HigherOrder.jl

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,51 @@ end
120120
@test_broken u_diff[:] zeros(length(u_diff)) atol=0.01;
121121
#plot(xs, u_diff)
122122
end
123+
124+
@testset "KdV Single Soliton equation" begin
125+
@parameters x, t
126+
@variables u(..)
127+
Dt = Differential(t)
128+
Dx = Differential(x)
129+
Dx2 = Differential(x)^2
130+
Dx3 = Differential(x)^3
131+
132+
α = 6
133+
β = 1
134+
eq = Dt(u(x,t)) ~ -α*u(x,t)*Dx(u(x,t)) - β*Dx3(u(x,t))
135+
136+
u_analytic(x,t;z = (x - t)/2) = 1/2*sech(z)^2
137+
du(x,t;z = (x-t)/2) = 1/2*tanh(z)*sech(z)^2
138+
ddu(x,t; z= (x-t)/2) = 1/4*(2*tanh(z)^2 + sech(z)^2)*sech(z)^2
139+
bcs = [u(x,0) ~ u_analytic(x,0),
140+
u(-10,t) ~ u_analytic(-10,t),
141+
u(10,t) ~ u_analytic(10,t),
142+
Dx(u(-10,t)) ~ du(-10,t),
143+
Dx(u(10,t)) ~ du(10,t),
144+
Dx2(u(-10,t)) ~ ddu(-10,t),
145+
Dx2(u(10,t)) ~ ddu(10,t)]
146+
147+
# Space and time domains
148+
domains = [x Interval(-10.0,10.0),
149+
t Interval(0.0,1.0)]
150+
# Discretization
151+
dx = 0.4; dt = 0.2
152+
153+
discretization = MOLFiniteDifference([x=>dx],t;centered_order=4,grid_align=center_align)
154+
pdesys = PDESystem(eq,bcs,domains,[x,t],[u(x,t)])
155+
prob = discretize(pdesys,discretization)
156+
157+
sol = solve(prob,Tsit5(),saveat=0.1,dt=dt)
158+
159+
@test sol.retcode == :Success
160+
161+
xs = domains[1].domain.lower+dx+dx+dx:dx:domains[1].domain.upper-dx-dx
162+
ts = sol.t
163+
164+
u_predict = sol.u
165+
u_real = [[u_analytic(x, t) for x in xs] for t in ts]
166+
u_diff = u_real - u_predict
167+
for i in 1:length(u_diff)
168+
@test u_diff[i] zeros(length(u_diff[i])) atol=0.05;
169+
end
170+
end

test/MOL/MOL_1D_Linear_Diffusion.jl

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -59,37 +59,6 @@ using ModelingToolkit: Differential
5959
@test all(isapprox.(u_approx, exact, atol=0.01))
6060
end
6161
end
62-
63-
@parameters t x
64-
65-
# BCs with 2nd order Neumann
66-
bcs = [u(0,x) ~ cos(x),
67-
Dxx(u(t,0)) ~ -exp(-t),
68-
Dxx(u(t,Float64(π))) ~ exp(-t)]
69-
70-
pdesys = PDESystem(eq,bcs,domains,[t,x],[u(t,x)])
71-
72-
for disc in [discretization, discretization_edge, discretization_centered, discretization_centered_order4]
73-
# Convert the PDE problem into an ODE problem
74-
prob = discretize(pdesys,disc)
75-
76-
# Solve ODE problem
77-
sol = solve(prob,Tsit5(),saveat=0.1)
78-
79-
if disc.grid_align == center_align
80-
x = dx[2:end-1]
81-
else
82-
x = (dx[1:end-1]+dx[2:end])/2
83-
end
84-
t = sol.t
85-
86-
# Test against exact solution
87-
for i in 1:length(sol)
88-
exact = u_exact(x, t[i])
89-
u_approx = sol.u[i]
90-
@test all(isapprox.(u_approx, exact, atol=0.01))
91-
end
92-
end
9362
end
9463

9564

@@ -577,33 +546,6 @@ end
577546
@test all(isapprox.(u_exact(x_sol, t_sol[i]), sol.u[i][1:l-2], atol=0.01))
578547
@test all(isapprox.(v_exact(x_sol, t_sol[i]), sol.u[i][l-1:end], atol=0.01))
579548
end
580-
581-
@parameters t x
582-
583-
# BCs with 3rd order Neumann
584-
bcs = [u(0,x) ~ cos(x),
585-
v(0,x) ~ sin(x),
586-
u(t,0) ~ exp(-t),
587-
Dxxx(u(t,1)) ~ exp(-t) * sin(1),
588-
Dxxx(v(t,0)) ~ -exp(-t),
589-
v(t,1) ~ exp(-t) * sin(1)]
590-
591-
pdesys = PDESystem(eqs,bcs,domains,[t,x],[u(t,x),v(t,x)])
592-
593-
prob = discretize(pdesys,discretization)
594-
595-
# Solve ODE problem
596-
sol = solve(prob,Tsit5(),saveat=0.1)
597-
598-
x_sol = dx[2:end-1]
599-
t_sol = sol.t
600-
601-
# Test against exact solution
602-
for i in 1:length(sol)
603-
@test all(isapprox.(u_exact(x_sol, t_sol[i]), sol.u[i][1:l-2], atol=0.01))
604-
@test all(isapprox.(v_exact(x_sol, t_sol[i]), sol.u[i][l-1:end], atol=0.01))
605-
end
606-
607549
end
608550

609551
@testset "Test 11: linear diffusion, two variables, mixed BCs, with parameters" begin

0 commit comments

Comments
 (0)