netcdf.jl (1825B)
1 #!/usr/bin/env julia 2 3 # Check if NetCDF files are read correctly from the disk. 4 5 @test_throws ErrorException Granular.readOceanStateNetCDF("nonexistentfile") 6 @test_throws ErrorException Granular.readOceanGridNetCDF("nonexistentfile") 7 8 @info "Testing dimensions of content read from Baltic test case" 9 ocean = Granular.readOceanNetCDF("Baltic/00010101.ocean_month.nc", 10 "Baltic/ocean_hgrid.nc") 11 @test ocean.time / (24. * 60. * 60.) ≈ [.5, 1.5, 2.5, 3.5, 4.5] 12 @test size(ocean.xq) == (24, 15) 13 @test size(ocean.yq) == (24, 15) 14 @test size(ocean.xh) == (23, 14) 15 @test size(ocean.yh) == (23, 14) 16 @test size(ocean.u) == (24, 15, 63, 5) 17 @test size(ocean.v) == (24, 15, 63, 5) 18 @test size(ocean.h) == (23, 14, 63, 5) 19 @test size(ocean.e) == (23, 14, 64, 5) 20 21 @info "Testing ocean state interpolation" 22 @test_throws ErrorException Granular.interpolateOceanState(ocean, time=0.) 23 @test_throws ErrorException Granular.interpolateOceanState(ocean, time=1.e34) 24 u1, v1, h1, e1 = Granular.interpolateOceanState(ocean, ocean.time[1]) 25 u2, v2, h2, e2 = Granular.interpolateOceanState(ocean, ocean.time[2]) 26 @test_throws ErrorException Granular.interpolateOceanState(ocean, -1.) 27 u1_5, v1_5, h1_5, e1_5 = Granular.interpolateOceanState(ocean, 28 ocean.time[1] + (ocean.time[2] - ocean.time[1]) / 2.) 29 @test u1 ≈ ocean.u[:, :, :, 1] 30 @test v1 ≈ ocean.v[:, :, :, 1] 31 @test h1 ≈ ocean.h[:, :, :, 1] 32 @test e1 ≈ ocean.e[:, :, :, 1] 33 @test u2 ≈ ocean.u[:, :, :, 2] 34 @test v2 ≈ ocean.v[:, :, :, 2] 35 @test h2 ≈ ocean.h[:, :, :, 2] 36 @test e2 ≈ ocean.e[:, :, :, 2] 37 @test u1_5 ≈ (ocean.u[:, :, :, 1] + ocean.u[:, :, :, 2]) / 2. 38 @test v1_5 ≈ (ocean.v[:, :, :, 1] + ocean.v[:, :, :, 2]) / 2. 39 @test h1_5 ≈ (ocean.h[:, :, :, 1] + ocean.h[:, :, :, 2]) / 2. 40 @test e1_5 ≈ (ocean.e[:, :, :, 1] + ocean.e[:, :, :, 2]) / 2.