Skip to content

Commit

Permalink
Merge 00aeb25 into d0b4fec
Browse files Browse the repository at this point in the history
  • Loading branch information
navidcy committed Aug 31, 2019
2 parents d0b4fec + 00aeb25 commit 73ec780
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 5 deletions.
4 changes: 4 additions & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ testtime = @elapsed begin
include("test_utils.jl")

@test testpeakedisotropicspectrum()
@test_throws ErrorException("the domain is not square") testpeakedisotropicspectrum_rectangledomain()
end

@testset "TwoDTurb" begin
Expand Down Expand Up @@ -61,6 +62,7 @@ end
@test test_bqg_formstress(0.01, "ForwardEuler")
@test test_bqg_energyenstrophy()
@test test_bqg_meanenergyenstrophy()
@test BarotropicQG.nothingfunction() == nothing
end

@testset "BarotropicQGQL" begin
Expand All @@ -78,6 +80,7 @@ end
@test test_bqgql_stochasticforcingbudgets()
@test test_bqgql_advection(0.0005, "ForwardEuler")
@test test_bqgql_energyenstrophy()
@test BarotropicQGQL.nothingfunction() == nothing
end

@testset "MultilayerQG" begin
Expand All @@ -90,6 +93,7 @@ end
@test test_mqg_fluxes()
@test test_setqsetpsi()
@test test_paramsconstructor()
@test MultilayerQG.nothingfunction() == nothing
end

end # time
Expand Down
12 changes: 9 additions & 3 deletions test/test_barotropicqg.jl
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,9 @@ function test_bqg_energyenstrophy()
k0, l0 = g.k[2], g.l[2] # fundamental wavenumbers
x, y = gridpoints(g)

energy_calc = 29/9
enstrophy_calc = 2701/162

eta = @. cos(10k0*x)*cos(10l0*y)
psi0 = @. sin(2k0*x)*cos(2l0*y) + 2sin(k0*x)*cos(3l0*y)
zeta0 = @. -((2k0)^2+(2l0)^2)*sin(2k0*x)*cos(2l0*y) - (k0^2+(3l0)^2)*2sin(k0*x)*cos(3l0*y)
Expand All @@ -291,7 +294,7 @@ function test_bqg_energyenstrophy()
energyzeta0 = BarotropicQG.energy(prob)
enstrophyzeta0 = BarotropicQG.enstrophy(prob)

isapprox(energyzeta0, 29.0/9, rtol=1e-13) && isapprox(enstrophyzeta0, 2701.0/162, rtol=1e-13)
isapprox(energyzeta0, energy_calc, rtol=1e-13) && isapprox(enstrophyzeta0, enstrophy_calc, rtol=1e-13)
end

function test_bqg_meanenergyenstrophy()
Expand All @@ -308,6 +311,9 @@ function test_bqg_meanenergyenstrophy()
beta = 10.0
U = 1.2

energy_calc = 29/9
enstrophy_calc = 2701/162

prob = BarotropicQG.ForcedProblem(nx=nx, Lx=Lx, ny=ny, Ly=Ly, beta=beta, eta=eta, calcFU = calcFU,
stepper="ForwardEuler")

Expand All @@ -323,7 +329,7 @@ function test_bqg_meanenergyenstrophy()

(isapprox(energyU, 0.5*U^2, rtol=1e-13) &&
isapprox(enstrophyU, beta*U, rtol=1e-13) &&
isapprox(energyzeta0, 29.0/9, rtol=1e-13) &&
isapprox(enstrophyzeta0, 2701.0/162, rtol=1e-13)
isapprox(energyzeta0, energy_calc, rtol=1e-13) &&
isapprox(enstrophyzeta0, enstrophy_calc, rtol=1e-13)
)
end
6 changes: 5 additions & 1 deletion test/test_barotropicqgql.jl
Original file line number Diff line number Diff line change
Expand Up @@ -239,17 +239,21 @@ function test_bqgql_energyenstrophy()
k0, l0 = g.k[2], g.l[2] # fundamental wavenumbers
x, y = gridpoints(g)

energy_calc = 29/9
enstrophy_calc = 2701/162

eta = @. cos(10k0*x)*cos(10l0*y)
psi0 = @. sin(2k0*x)*cos(2l0*y) + 2sin(k0*x)*cos(3l0*y)
zeta0 = @. -((2k0)^2+(2l0)^2)*sin(2k0*x)*cos(2l0*y) - (k0^2+(3l0)^2)*2sin(k0*x)*cos(3l0*y)

prob = BarotropicQGQL.InitialValueProblem(nx=nx, Lx=Lx, ny=ny, Ly=Ly, eta=eta, stepper="ForwardEuler")
sol, cl, v, p, g = prob.sol, prob.clock, prob.vars, prob.params, prob.grid

BarotropicQGQL.set_zeta!(prob, zeta0)
BarotropicQGQL.updatevars!(prob)

energyzeta0 = BarotropicQGQL.energy(prob)
enstrophyzeta0 = BarotropicQGQL.enstrophy(prob)

isapprox(energyzeta0, 29.0/9, rtol=1e-13) && isapprox(enstrophyzeta0, 2701.0/162, rtol=1e-13)
isapprox(energyzeta0, energy_calc, rtol=1e-13) && isapprox(enstrophyzeta0, enstrophy_calc, rtol=1e-13) && BarotropicQGQL.addforcing!(prob.timestepper.N, sol, cl.t, cl, v, p, g)==nothing
end
2 changes: 1 addition & 1 deletion test/test_multilayerqg.jl
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ function test_mqg_energies(;dt=0.001, stepper="ForwardEuler", n=128, L=2π, nlay

KE, PE = MultilayerQG.energies(prob)

isapprox(KE[1], 61/640*1e-6, rtol=rtol_multilayerqg) && isapprox(KE[2], 3*1e-6, rtol=rtol_multilayerqg) && isapprox(PE[1], 1025/1152*1e-6, rtol=rtol_multilayerqg)
isapprox(KE[1], 61/640*1e-6, rtol=rtol_multilayerqg) && isapprox(KE[2], 3*1e-6, rtol=rtol_multilayerqg) && isapprox(PE[1], 1025/1152*1e-6, rtol=rtol_multilayerqg) && MultilayerQG.addforcing!(prob.timestepper.RHS₁, sol, cl.t, cl, vs, pr, gr)==nothing
end

"""
Expand Down
9 changes: 9 additions & 0 deletions test/test_utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,12 @@ function testpeakedisotropicspectrum()

isapprox(abs.(qhρtest)/abs(qhρtest[1]), (ρtest/ρtest[1]).^(-2), rtol=5e-3)
end


function testpeakedisotropicspectrum_rectangledomain()
nx, ny = 32, 34
Lx, Ly = 2π, 3π
gr = TwoDGrid(nx, Lx, ny, Ly)
k0, E0 = 6, 0.5
qi = peakedisotropicspectrum(gr, k0, E0; allones=true)
end

0 comments on commit 73ec780

Please sign in to comment.