Granular.jl

Julia package for granular dynamics simulation
git clone git://src.adamsgaard.dk/Granular.jl # fast
git clone https://src.adamsgaard.dk/Granular.jl.git # slow
Log | Files | Refs | README | LICENSE Back to index

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.