Plot recipes
Some recipes are available to visualize computed problems solution. You need to import the package Plots.jl.
Surface deformation and velocity
using Plots
param = ( μ = 1, ϵ = 1/4, N = 2^10, L = 10, T = 5, dt = 0.01 )
z(x) = exp.(-abs.(x).^4)
v(x) = zero(x)
init = Init(z,v)
model0 = WaterWaves(param; tol = 1e-15) # The water waves system
model1 = Airy(param) # The linear model (Airy)
model2 = WWn(param;n=2,dealias=1,δ=1/10) # The quadratic model (WW2)
problem0 = Problem(model0, init, param);
problem1 = Problem(model1, init, param);
problem2 = Problem(model2, init, param);
solve!([problem0 problem1 problem2]; verbose=false);
plot(problem0)
plot!(problem1)
plot!(problem2; var = :surface, legend = :bottomright)
plot([problem0, problem1, problem2]; var = :velocity, legend = :bottomright)
Differences
plot([problem0, problem1], var = :difference)
plot!([problem0, problem2], var = :difference)
plot([(problem0, problem1), (problem0, problem2)])
plot([(problem0, problem1), (problem0, problem2)], var = :difference_velocity)
Fourier coefficients
using Plots
η(x) = exp.(-x.^2)
v(x) = zero(x)
init = Init(η,v)
param1 = ( ϵ = 1/4, μ = Inf, N = 2^8, L = 2*π, T = 5, dt = 0.001 )
problem1 = Problem( WWn(param1, dealias = 1), init, param1 )
param2 = ( ϵ = 1/4, μ = Inf, N = 2^9, L = 2*π, T = 5, dt = 0.001 )
problem2 = Problem( WWn(param2, dealias = 1), init, param2 )
solve!([problem1, problem2])
plot([problem1, problem2]; T=5, var = :fourier)
Subplots
l = @layout [a ; b; c]
p1 = plot(problem1, var = :surface)
p2 = plot(problem1, var = :velocity)
p3 = plot(problem1, var = :fourier)
plot(p1, p2, p3, layout = l,
titlefontsize=10,
labelfontsize=8)
plot(problem1, var = [:surface,:velocity,:fourier])
Interpolation
x̃ = LinRange(-5, 5, 128)
plot(problem2, x = x̃, shape = :circle)
Plots at different times
plot(problem1, T = 0, label = "t = 0")
for t in 1:5
plot!(problem1, T = t, label = "t = $t")
end
title!("surface deformation for t ∈ [0,5]")
Create animation
@gif for t in LinRange(0,param1.T,100)
plot(problem1, T = t)
ylims!(-0.5, 1)
end