Oceananigans.jl
Oceananigans.jl copied to clipboard
Cannot output Windowed fields with together with standard fields
MWE
grid = RectilinearGrid(size = (5, 5, 5), extent = (1, 1, 1))
model = HydrostaticFreeSurfaceModel(; grid)
c = CenterField(grid; indices = (:, :, grid.Nz))
d = CenterField(grid)
JLD2OutputWriter(model, (; c, d), filename = "test", schedule = IterationInterval(1))
fails with
julia> JLD2OutputWriter(model, (; c, d), filename = "test", schedule = IterationInterval(1))
ERROR: ArgumentError: view indices (1:5, 1:5, 1:5) do not intersect field indices (Colon(), Colon(), 5:5)
Stacktrace:
[1] view(f::Field{…}, i::UnitRange{…}, j::UnitRange{…}, k::UnitRange{…})
@ Oceananigans.Fields ~/development/Oceananigans.jl/src/Fields/field.jl:319
[2] Field
@ ~/development/Oceananigans.jl/src/Fields/field.jl:184 [inlined]
[3] construct_output(user_output::Field{…}, grid::RectilinearGrid{…}, user_indices::Tuple{…}, with_halos::Bool)
@ Oceananigans.OutputWriters ~/development/Oceananigans.jl/src/OutputWriters/output_construction.jl:46
[4] (::Oceananigans.OutputWriters.var"#28#29"{Tuple{…}, Bool, HydrostaticFreeSurfaceModel{…}})(name::Symbol)
@ Oceananigans.OutputWriters ./none:0
[5] iterate
@ ./generator.jl:47 [inlined]
[6] merge(a::@NamedTuple{}, itr::Base.Generator{Tuple{…}, Oceananigans.OutputWriters.var"#28#29"{…}})
@ Base ./namedtuple.jl:361
[7] NamedTuple(itr::Base.Generator{Tuple{…}, Oceananigans.OutputWriters.var"#28#29"{…}})
@ Base ./namedtuple.jl:151
[8] JLD2OutputWriter(model::HydrostaticFreeSurfaceModel{…}, outputs::@NamedTuple{…}; filename::String, schedule::IterationInterval, dir::String, indices::Tuple{…}, with_halos::Bool, array_type::Type, file_splitting::Oceananigans.OutputWriters.NoFileSplitting, overwrite_existing::Bool, init::typeof(Oceananigans.OutputWriters.noinit), including::Vector{…}, verbose::Bool, part::Int64, jld2_kw::Dict{…})
@ Oceananigans.OutputWriters ~/development/Oceananigans.jl/src/OutputWriters/jld2_output_writer.jl:185
[9] top-level scope
@ REPL[8]:1
Some type information was truncated. Use `show(err)` to see complete types.
It looks like there are problems also if trying to save the windowed field by itself
julia> JLD2OutputWriter(model, (; c), filename = "test1", schedule = IterationInterval(1))
ERROR: ArgumentError: view indices (1:5, 1:5, 1:5) do not intersect field indices (Colon(), Colon(), 5:5)
Stacktrace:
[1] view(f::Field{…}, i::UnitRange{…}, j::UnitRange{…}, k::UnitRange{…})
@ Oceananigans.Fields ~/development/Oceananigans.jl/src/Fields/field.jl:319
[2] Field
@ ~/development/Oceananigans.jl/src/Fields/field.jl:184 [inlined]
[3] construct_output(user_output::Field{…}, grid::RectilinearGrid{…}, user_indices::Tuple{…}, with_halos::Bool)
@ Oceananigans.OutputWriters ~/development/Oceananigans.jl/src/OutputWriters/output_construction.jl:46
[4] (::Oceananigans.OutputWriters.var"#28#29"{Tuple{…}, Bool, HydrostaticFreeSurfaceModel{…}})(name::Symbol)
@ Oceananigans.OutputWriters ./none:0
[5] iterate
@ ./generator.jl:47 [inlined]
[6] merge(a::@NamedTuple{}, itr::Base.Generator{Tuple{…}, Oceananigans.OutputWriters.var"#28#29"{…}})
@ Base ./namedtuple.jl:361
[7] NamedTuple(itr::Base.Generator{Tuple{Symbol}, Oceananigans.OutputWriters.var"#28#29"{Tuple{…}, Bool, HydrostaticFreeSurfaceModel{…}}})
@ Base ./namedtuple.jl:151
[8] JLD2OutputWriter(model::HydrostaticFreeSurfaceModel{…}, outputs::@NamedTuple{…}; filename::String, schedule::IterationInterval, dir::String, indices::Tuple{…}, with_halos::Bool, array_type::Type, file_splitting::Oceananigans.OutputWriters.NoFileSplitting, overwrite_existing::Bool, init::typeof(Oceananigans.OutputWriters.noinit), including::Vector{…}, verbose::Bool, part::Int64, jld2_kw::Dict{…})
@ Oceananigans.OutputWriters ~/development/Oceananigans.jl/src/OutputWriters/jld2_output_writer.jl:185
[9] top-level scope
@ REPL[11]:1
Some type information was truncated. Use `show(err)` to see complete types.
However, by specifying the indices it works
julia> JLD2OutputWriter(model, (; c), filename = "test1", schedule = IterationInterval(1), indices = (:, :, grid.Nz))
JLD2OutputWriter scheduled on IterationInterval(1):
├── filepath: ./test1.jld2
├── 1 outputs: c
├── array type: Array{Float64}
├── including: [:grid, :coriolis, :buoyancy, :closure]
├── file_splitting: NoFileSplitting
└── file size: 20.0 KiB