diff --git a/src/core/output.jl b/src/core/output.jl index 40dad75cc22facf77c859cb0d5fafa33a17c0a8e..4b3fd9712dba0b15a4d3bc97c324446368522479 100644 --- a/src/core/output.jl +++ b/src/core/output.jl @@ -257,7 +257,7 @@ function visualiseoutput(model::SimulationModel) #XXX remove this? (#81) CairoMakie.activate!() # make sure we're using Cairo for o in keys(model.dataoutputs) output = model.dataoutputs[o] - isnothing(output.plotfunction) && continue + (output.frequency == "never" || isnothing(output.plotfunction)) && continue figure = output.plotfunction(model) isnothing(figure) ? continue : save(joinpath(@param(core.outdir), o*"."*@param(core.figureformat)), figure) diff --git a/src/core/utils.jl b/src/core/utils.jl index 27ef4d7d9efbba4cfcc8e3f21eba3e50ad64a7cf..976b5aae0e487530127a786b660cfb5d1d51e338 100644 --- a/src/core/utils.jl +++ b/src/core/utils.jl @@ -46,16 +46,19 @@ end # Allows writing `(August, 2)` instead of `AnnualDate(August, 2)` where an AnnualDate is expected. AnnualDate(ad::Tuple{Int64,Int64}) = AnnualDate(ad...) Base.convert(::Type{AnnualDate}, ad::Tuple{Int64,Int64}) = AnnualDate(ad) +Base.convert(::Type{Tuple{Int64,Int64}}, ad::AnnualDate) = (ad.month, ad.day) # allow creating AnnualDates from a string of the format "8 August" AnnualDate(ad::String) = AnnualDate(Date(ad, dateformat"d U")) Base.convert(::Type{AnnualDate}, ad::String) = AnnualDate(ad) +Base.tryparse(::Type{AnnualDate}, ad::String) = AnnualDate(ad) # Interface with Dates AnnualDate(date::Date) = AnnualDate(month(date), day(date)) Base.convert(::Type{AnnualDate}, ad::Date) = AnnualDate(ad) Dates.month(ad::AnnualDate) = ad.month Dates.day(ad::AnnualDate) = ad.day +Dates.monthday(ad::AnnualDate) = (ad.month, ad.day) Date(year::Int64, ad::AnnualDate) = Date(year, ad.month, ad.day) # Comparison between AnnualDates and with Dates @@ -167,6 +170,19 @@ function bounds(x::Number; max::Number=Inf, min::Number=0) x end +""" + cycle!(vector, n=1) + +Move the first element of the vector to the end, repeat n times. +""" +function cycle!(v::AbstractVector, n::Int64=1) + for i in 1:n + push!(v, v[1]) + deleteat!(v, 1) + end + v +end + """ @areaof(npixels)