From 6c18dbd5bd02b3087ff6067f382168aeb712c263 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Wed, 31 Aug 2022 01:50:48 -0400 Subject: [PATCH 1/4] mv solid_body_rotation etc to toy_models --- examples/jupyter/flow_fields.jl | 38 ----------- examples/jupyter/solid_body_rotation.jl | 4 +- src/IndividualDisplacements.jl | 1 + src/toy_models.jl | 89 +++++++++++++++++++++++++ test/runtests.jl | 2 + 5 files changed, 93 insertions(+), 41 deletions(-) create mode 100644 src/toy_models.jl diff --git a/examples/jupyter/flow_fields.jl b/examples/jupyter/flow_fields.jl index 71bed0e6..1d560908 100644 --- a/examples/jupyter/flow_fields.jl +++ b/examples/jupyter/flow_fields.jl @@ -1,44 +1,6 @@ using MeshArrays, OceanStateEstimation, MITgcmTools import IndividualDisplacements.NetCDF as NetCDF -""" - solid_body_rotation(np,nz) - -Set up an idealized flow field which consists of -[rigid body rotation](https://en.wikipedia.org/wiki/Rigid_body), -plus a convergent term, plus a sinking term. - -``` -u,v,w=solid_body_rotation(12,4) -``` -""" -function solid_body_rotation(np,nz) - Γ=simple_periodic_domain(np) - Γ = UnitGrid(Γ.XC.grid;option="full") - γ=Γ.XC.grid; - - #Solid-body rotation around central location ... - i=Int(np/2+1) - u=-(Γ.YG.-Γ.YG[1][i,i]) - v=(Γ.XG.-Γ.XG[1][i,i]) - - #... plus a convergent term to / from central location - d=-0.01 - u=u+d*(Γ.XG.-Γ.XG[1][i,i]) - v=v+d*(Γ.YG.-Γ.YG[1][i,i]) - - #Replicate u,v in vertical dimension - uu=MeshArray(γ,γ.ioPrec,nz) - [uu[k]=u[1] for k=1:nz] - vv=MeshArray(γ,γ.ioPrec,nz) - [vv[k]=v[1] for k=1:nz] - - #Vertical velocity component w - w=fill(-0.01,MeshArray(γ,γ.ioPrec,nz+1)) - - return write(uu),write(vv),write(w) -end - """ OCCA_FlowFields(;backward_in_time::Bool=false,nmax=Inf) diff --git a/examples/jupyter/solid_body_rotation.jl b/examples/jupyter/solid_body_rotation.jl index c73f1393..1e1f1cdc 100644 --- a/examples/jupyter/solid_body_rotation.jl +++ b/examples/jupyter/solid_body_rotation.jl @@ -26,8 +26,6 @@ using IndividualDisplacements import IndividualDisplacements.DataFrames: DataFrame -p=dirname(pathof(IndividualDisplacements)) -include(joinpath(p,"../examples/jupyter/flow_fields.jl")) #nb # %% {"slideshow": {"slide_type": "subslide"}, "cell_type": "markdown"} # ### 1.2 Flow Fields @@ -38,7 +36,7 @@ include(joinpath(p,"../examples/jupyter/flow_fields.jl")) np,nz=16,4 #gridded domain size (horizontal and vertical) -u,v,w=solid_body_rotation(np,nz) #staggered velocity arrays +u,v,w=IndividualDisplacements.solid_body_rotation(np,nz) #staggered velocity arrays 𝐹=FlowFields(u,u,v,v,0*w,1*w,[0,19.95*2*pi]); #FlowFields data structure diff --git a/src/IndividualDisplacements.jl b/src/IndividualDisplacements.jl index 0422ddd9..40172e4c 100644 --- a/src/IndividualDisplacements.jl +++ b/src/IndividualDisplacements.jl @@ -22,6 +22,7 @@ abs2_and_sum(x::Matrix{Vector{Float64}},y::Matrix{Vector{Float64}}) = include("API.jl") include("compute.jl") include("data_wrangling.jl") +include("toy_models.jl") export Individuals, ∫! export FlowFields, convert_to_FlowFields diff --git a/src/toy_models.jl b/src/toy_models.jl new file mode 100644 index 00000000..2e10e6de --- /dev/null +++ b/src/toy_models.jl @@ -0,0 +1,89 @@ + +""" +solid_body_rotation(np,nz) + +Set up an idealized flow field which consists of +[rigid body rotation](https://en.wikipedia.org/wiki/Rigid_body), +plus a convergent term, plus a sinking term. + +``` +u,v,w=solid_body_rotation(12,4) +``` +""" +function solid_body_rotation(np,nz) + Γ=simple_periodic_domain(np) + Γ = UnitGrid(Γ.XC.grid;option="full") + γ=Γ.XC.grid; + + #Solid-body rotation around central location ... + i=Int(np/2+1) + u=-(Γ.YG.-Γ.YG[1][i,i]) + v=(Γ.XG.-Γ.XG[1][i,i]) + + #... plus a convergent term to / from central location + d=-0.01 + u=u+d*(Γ.XG.-Γ.XG[1][i,i]) + v=v+d*(Γ.YG.-Γ.YG[1][i,i]) + + #Replicate u,v in vertical dimension + uu=MeshArray(γ,γ.ioPrec,nz) + [uu[k]=u[1] for k=1:nz] + vv=MeshArray(γ,γ.ioPrec,nz) + [vv[k]=v[1] for k=1:nz] + + #Vertical velocity component w + w=fill(-0.01,MeshArray(γ,γ.ioPrec,nz+1)) + + return write(uu),write(vv),write(w) +end + +""" + random_flow_field(option::String;np=12,nq=18) + +Generate random flow fields on a grid of `np x nq` points for use in simple examples. + +The "Rotational Component" option is most similar to what is done +in the standard example. + +The other option, "Divergent Component", generates a purely divergent flow field instead. + +``` +(U,V,Φ)=random_flow_field("Rotational Component";np=2*nx,nq=nx) +F=convert_to_FlowFields(U,V,10.0) +I=Individuals(F,x,y,fill(1,length(x))) +``` +""" +function random_flow_field(option::String;np=12,nq=18) + + #define gridded domain + Γ=MeshArrays.simple_periodic_domain(np,nq) + γ=Γ.XC.grid + Γ=MeshArrays.UnitGrid(γ;option="full") + + #initialize 2D field of random numbers + tmp1=randn(Float64,Tuple(γ.ioSize)) + ϕ=γ.read(tmp1,MeshArrays.MeshArray(γ,Float64)) + + #apply smoother + ϕ=MeshArrays.smooth(ϕ,3*Γ.DXC,3*Γ.DYC,Γ); + + #derive flow field + if option=="Divergent Component" + #For the convergent / scalar potential case, ϕ is interpreted as being + #on center points -- hence the standard gradient function readily gives + #what we need + (u,v)=MeshArrays.gradient(ϕ,Γ) + tmp=(u[1],v[1],ϕ[1]) + elseif option=="Rotational Component" + #For the rotational / streamfunction case, ϕ is interpreted as being + #on S/W corner points -- this is ok here since the grid is homegeneous, + #and conveniently yields an adequate substitution u,v <- -v,u; but note + #that doing the same with gradient() would shift indices inconsistenly + u=-(circshift(ϕ[1], (0,-1))-ϕ[1]) + v=(circshift(ϕ[1], (-1,0))-ϕ[1]) + tmp=(u,v,ϕ[1]) + else + error("non-recognized option") + end + return tmp[1],tmp[2],tmp[3] +end diff --git a/test/runtests.jl b/test/runtests.jl index 0eca24a9..4443a80d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -24,6 +24,8 @@ IndividualDisplacements.flt_example_download() @test isa(tmp2,Array) tmp3=nearest_to_xy(𝐹.u0,3.,3.) @test isa(tmp3,Array) + + (U,V,Φ)=IndividualDisplacements.random_flow_field("Rotational Component") end @testset "doctests" begin From 1db1e9e2494655c67cb12f76bd031bc0f885cf49 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Wed, 31 Aug 2022 10:57:13 -0400 Subject: [PATCH 2/4] mv OCCA config to examples/worldwide/OCCA_FlowFields.jl --- examples/jupyter/flow_fields.jl | 100 +- examples/jupyter/three_dimensional_ocean.jl | 101 +- examples/worldwide/OCCA_FlowFields.jl | 170 +++ examples/worldwide/interactive_UI.jl | 1068 +++++++++-------- examples/worldwide/three_dimensional_ocean.jl | 237 +--- 5 files changed, 786 insertions(+), 890 deletions(-) create mode 100644 examples/worldwide/OCCA_FlowFields.jl diff --git a/examples/jupyter/flow_fields.jl b/examples/jupyter/flow_fields.jl index 1d560908..eaf93c8e 100644 --- a/examples/jupyter/flow_fields.jl +++ b/examples/jupyter/flow_fields.jl @@ -1,102 +1,4 @@ -using MeshArrays, OceanStateEstimation, MITgcmTools -import IndividualDisplacements.NetCDF as NetCDF - -""" - OCCA_FlowFields(;backward_in_time::Bool=false,nmax=Inf) - -Define gridded variables and return result as NamedTuple -""" -function OCCA_FlowFields(;backward_in_time::Bool=false,nmax=Inf) - - γ=GridSpec("PeriodicChannel",MeshArrays.GRID_LL360) - Γ=GridLoad(γ;option="full") - n=length(Γ.RC) - isfinite(nmax) ? n=min(n,Int(nmax)) : nothing - - g=Γ.XC.grid - func=(u -> MeshArrays.update_location_dpdo!(u,g)) - - jj=[:hFacC, :hFacW, :hFacS, :DXG, :DYG, :RAC, :RAZ, :RAS] - ii=findall([!in(i,jj) for i in keys(Γ)]) - Γ=(; zip(Symbol.(keys(Γ)[ii]), values(Γ)[ii])...) - - backward_in_time ? s=-1.0 : s=1.0 - s=Float32(s) - - function rd(filename, varname,n) - fil = NetCDF.open(filename, varname) - siz = size(fil) - tmp = zeros(siz[1:2]...,n) - [tmp .+= fil[:,:,1:n,t] for t=1:12] - tmp ./= 12.0 - tmp[findall(tmp.<-1e22)] .= 0.0 - return tmp - end - - fileIn=OCCAclim_path*"DDuvel.0406clim.nc" - u=s*read(rd(fileIn,"u",n),MeshArray(γ,Float32,n)) - - fileIn=OCCAclim_path*"DDvvel.0406clim.nc" - v=s*read(rd(fileIn,"v",n),MeshArray(γ,Float32,n)) - - fileIn=OCCAclim_path*"DDwvel.0406clim.nc" - w=s*rd(fileIn,"w",n) - w=-cat(w,zeros(360, 160),dims=3) - w[:,:,1] .=0.0 - w=read(w,MeshArray(γ,Float32,n+1)) - - fileIn=OCCAclim_path*"DDtheta.0406clim.nc" - θ=read(rd(fileIn,"theta",n),MeshArray(γ,Float32,n)) - -# fileIn=OCCAclim_path*"DDsalt.0406clim.nc" -# 𝑆=read(rd(fileIn,"salt",n),MeshArray(γ,Float64,n)) - - for i in eachindex(u) - u[i]=u[i]./Γ.DXC[1] - v[i]=v[i]./Γ.DYC[1] - end - - for i in eachindex(u) - u[i]=circshift(u[i],[-180 0]) - v[i]=circshift(v[i],[-180 0]) - θ[i]=circshift(θ[i],[-180 0]) -# 𝑆[i]=circshift(𝑆[i],[-180 0]) - end - - for i in eachindex(w) - w[i]=w[i]./Γ.DRC[min(i[2]+1,n)] - w[i]=circshift(w[i],[-180 0]) - end - - tmpx=circshift(Γ.XC[1],[-180 0]) - tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 - Γ.XC[1]=tmpx - - tmpx=circshift(Γ.XG[1],[-180 0]) - tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 - Γ.XG[1]=tmpx - Γ.Depth[1]=circshift(Γ.Depth[1],[-180 0]) - - t0=0.0; t1=86400*366*2.0; - - for k=1:n - (tmpu,tmpv)=exchange(u[:,k],v[:,k],1) - u[:,k]=tmpu - v[:,k]=tmpv - end - for k=1:n+1 - tmpw=exchange(w[:,k],1) - w[:,k]=tmpw - end - - 𝑃=FlowFields(u,u,v,v,w,w,[t0,t1],func) - - 𝐷 = (θ0=θ, θ1=θ, XC=exchange(Γ.XC), YC=exchange(Γ.YC), - RF=Γ.RF, RC=Γ.RC,ioSize=(360,160,n)) - - return 𝑃,𝐷,Γ - -end +using MeshArrays, MITgcmTools """ test1_setup() diff --git a/examples/jupyter/three_dimensional_ocean.jl b/examples/jupyter/three_dimensional_ocean.jl index b6315446..ff797adc 100644 --- a/examples/jupyter/three_dimensional_ocean.jl +++ b/examples/jupyter/three_dimensional_ocean.jl @@ -17,90 +17,32 @@ # ## 1. Load Software # -using IndividualDisplacements, OceanStateEstimation +using IndividualDisplacements import IndividualDisplacements.DataFrames: DataFrame p=dirname(pathof(IndividualDisplacements)) -include(joinpath(p,"../examples/jupyter/helper_functions.jl")) - -OceanStateEstimation.get_occa_velocity_if_needed(); +include(joinpath(p,"../examples/worldwide/OCCA_FlowFields.jl")) #nb # %% {"slideshow": {"slide_type": "subslide"}, "cell_type": "markdown"} # ## 2.1 Ocean Circulation Setup # -𝑃,𝐷,Γ=OCCA_FlowFields(nmax=5); - -#nb # %% {"slideshow": {"slide_type": "subslide"}, "cell_type": "markdown"} -# ## 2.3 Initialize Individual Positions -# - -""" - initial_positions(Γ; nf=10000, lon_rng=(-160.0,-159.0), lat_rng=(30.0,31.0)) - -Randomly assign initial positions in longitude,latitude ranges. Positions are -expressed in, normalized, grid point units (x,y in the 0,nx and 0,ny range). -To convert from longitude,latitude here we take advantage of the regularity -of the 1 degree grid being used -- for a more general alternative, see the -global ocean example. -""" -function initial_positions(Γ::NamedTuple, nf=10000, lon_rng=(-160.0,-159.0), lat_rng=(30.0,31.0)) - lon=lon_rng[1] .+(lon_rng[2]-lon_rng[1]).*rand(nf) - lat=lat_rng[1] .+(lat_rng[2]-lat_rng[1]).*rand(nf) - x=lon .+ (21. - Γ.XC[1][21,1]) - y=lat .+ (111. - Γ.YC[1][1,111]) - return x,y -end +𝑃,𝐷=OCCA_FlowFields.setup(nmax=5); #nb # %% {"slideshow": {"slide_type": "subslide"}, "cell_type": "markdown"} -# ## 2.3 Diagnostic / Post-Processing Setup +# ## 2.2 Initialize Positions # -custom🔴 = DataFrame(ID=Int[], fid=Int[], x=Float64[], y=Float64[], - k=Float64[], z=Float64[], iso=Float64[], t=Float64[], - lon=Float64[], lat=Float64[], year=Float64[], col=Symbol[]) - -function custom🔧(sol,𝑃::𝐹_MeshArray3D,𝐷::NamedTuple;id=missing,𝑇=missing) - df=postprocess_MeshArray(sol,𝑃,𝐷,id=id,𝑇=𝑇) - add_lonlat!(df,𝐷.XC,𝐷.YC) - - #add year (convenience time axis for plotting) - df.year=df.t ./86400/365 - - #add depth (i.e. the 3rd, vertical, coordinate) - k=[[sol[i][3,1] for i in 1:size(sol,3)];[sol[i][3,end] for i in 1:size(sol,3)]] - - nz=length(𝐼.𝑃.u1) - df.k=min.(max.(k[:],Ref(0.0)),Ref(nz)) #level - k=Int.(floor.(df.k)); w=(df.k-k); - df.z=𝐷.RF[1 .+ k].*(1 .- w)+𝐷.RF[2 .+ k].*w #depth - - #add one isotherm depth - θ=0.5*(𝐷.θ0+𝐷.θ1) - d=isosurface(θ,15,𝐷) - d[findall(isnan.(d))].=0. - df.iso=interp_to_xy(df,exchange(d)); - - #add color = f(iso-z) - c=fill(:gold,length(df.iso)) - c[findall(df.iso. fill(kk,nf),:f => fill(1,nf)) -(df.x,df.y)=initial_positions(Γ, nf, lo, la) - -𝐼=Individuals(𝑃,df.x,df.y,df.z,df.f,(🔴=custom🔴,🔧=custom🔧, 𝐷=𝐷)) +𝐼=Individuals(𝑃,df.x,df.y,df.z,df.f, + (🔴=OCCA_FlowFields.custom🔴,🔧=OCCA_FlowFields.custom🔧, 𝐷=𝐷)) #nb # %% {"slideshow": {"slide_type": "subslide"}, "cell_type": "markdown"} # ## 3.1 Compute Displacements @@ -110,30 +52,7 @@ df=DataFrame(:z => fill(kk,nf),:f => fill(1,nf)) ∫!(𝐼,𝑇) -#nb # %% {"slideshow": {"slide_type": "subslide"}, "cell_type": "markdown"} -# ## 3.2 Analyze Results -# -# The recorded simulation output, 🔴, is a in the [DataFrames](https://juliadata.github.io/DataFrames.jl/latest/) tabular format, which is easily manipulated or plotted. - -# - either `Plots.jl`: -# -# ``` -# include(joinpath(p,"../examples/recipes_plots.jl")) -# p=plot(𝐼) -# #p=map(𝐼,OceanDepthLog(Γ)) -# display(p) -# ``` - -# - or `Makie.jl`: -# -# ``` -# include(joinpath(p,"../examples/recipes_Makie.jl")) -# #p=plot(𝐼) -# p=plot_paths(𝐼.🔴,100,180.); -# display(p) -# ``` - -# ## 3.3 Alternatives (optional / unit testing) +# ## 3.2 Alternatives (optional / unit testing) (x,y,z,f)=𝐼.📌[1] 𝐽=Individuals(𝐼.𝑃,x,y,z,f) diff --git a/examples/worldwide/OCCA_FlowFields.jl b/examples/worldwide/OCCA_FlowFields.jl new file mode 100644 index 00000000..c559e1c9 --- /dev/null +++ b/examples/worldwide/OCCA_FlowFields.jl @@ -0,0 +1,170 @@ +module OCCA_FlowFields + +using IndividualDisplacements, OceanStateEstimation + +import IndividualDisplacements.DataFrames: DataFrame +import IndividualDisplacements.MeshArrays as MeshArrays +import IndividualDisplacements.MeshArrays: MeshArray +import IndividualDisplacements.NetCDF as NetCDF +import IndividualDisplacements.OrdinaryDiffEq: solve, Tsit5, remake +import IndividualDisplacements.OrdinaryDiffEq: ODEProblem, EnsembleProblem + +function setup(;backward_in_time::Bool=false,nmax=Inf) + + γ=MeshArrays.GridSpec("PeriodicChannel",MeshArrays.GRID_LL360) + Γ=MeshArrays.GridLoad(γ;option="full") + n=length(Γ.RC) + isfinite(nmax) ? n=min(n,Int(nmax)) : nothing + + g=Γ.XC.grid + func=(u -> MeshArrays.update_location_dpdo!(u,g)) + + jj=[:hFacC, :hFacW, :hFacS, :DXG, :DYG, :RAC, :RAZ, :RAS] + ii=findall([!in(i,jj) for i in keys(Γ)]) + Γ=(; zip(Symbol.(keys(Γ)[ii]), values(Γ)[ii])...) + + backward_in_time ? s=-1.0 : s=1.0 + s=Float32(s) + + function rd(filename, varname,n) + fil = NetCDF.open(filename, varname) + siz = size(fil) + tmp = zeros(siz[1:2]...,n) + [tmp .+= fil[:,:,1:n,t] for t=1:12] + tmp ./= 12.0 + tmp[findall(tmp.<-1e22)] .= 0.0 + return tmp + end + + OceanStateEstimation.get_occa_velocity_if_needed(); + + fileIn=OCCAclim_path*"DDuvel.0406clim.nc" + u=s*read(rd(fileIn,"u",n),MeshArray(γ,Float32,n)) + + fileIn=OCCAclim_path*"DDvvel.0406clim.nc" + v=s*read(rd(fileIn,"v",n),MeshArray(γ,Float32,n)) + + fileIn=OCCAclim_path*"DDwvel.0406clim.nc" + w=s*rd(fileIn,"w",n) + w=-cat(w,zeros(360, 160),dims=3) + w[:,:,1] .=0.0 + w=read(w,MeshArray(γ,Float32,n+1)) + + fileIn=OCCAclim_path*"DDtheta.0406clim.nc" + θ=read(rd(fileIn,"theta",n),MeshArray(γ,Float32,n)) + +# fileIn=OCCAclim_path*"DDsalt.0406clim.nc" +# 𝑆=read(rd(fileIn,"salt",n),MeshArray(γ,Float64,n)) + + for i in eachindex(u) + u[i]=u[i]./Γ.DXC[1] + v[i]=v[i]./Γ.DYC[1] + end + + for i in eachindex(u) + u[i]=circshift(u[i],[-180 0]) + v[i]=circshift(v[i],[-180 0]) + θ[i]=circshift(θ[i],[-180 0]) +# 𝑆[i]=circshift(𝑆[i],[-180 0]) + end + + for i in eachindex(w) + w[i]=w[i]./Γ.DRC[min(i[2]+1,n)] + w[i]=circshift(w[i],[-180 0]) + end + + tmpx=circshift(Γ.XC[1],[-180 0]) + tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 + Γ.XC[1]=tmpx + + tmpx=circshift(Γ.XG[1],[-180 0]) + tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 + Γ.XG[1]=tmpx + Γ.Depth[1]=circshift(Γ.Depth[1],[-180 0]) + + t0=0.0; t1=86400*366*2.0; + + for k=1:n + (tmpu,tmpv)=MeshArrays.exchange(u[:,k],v[:,k],1) + u[:,k]=tmpu + v[:,k]=tmpv + end + for k=1:n+1 + tmpw=MeshArrays.exchange(w[:,k],1) + w[:,k]=tmpw + end + + 𝑃=FlowFields(u,u,v,v,w,w,[t0,t1],func) + + 𝐷 = (θ0=θ, θ1=θ, XC=MeshArrays.exchange(Γ.XC), YC=MeshArrays.exchange(Γ.YC), + RF=Γ.RF, RC=Γ.RC,ioSize=(360,160,n), Γ=Γ) + + return 𝑃,𝐷 + +end + +""" + initial_positions(Γ; nf=10000, lon_rng=(-160.0,-159.0), lat_rng=(30.0,31.0)) + +Randomly assign initial positions in longitude,latitude ranges. Positions are +expressed in, normalized, grid point units (x,y in the 0,nx and 0,ny range). +To convert from longitude,latitude here we take advantage of the regularity +of the 1 degree grid being used -- for a more general alternative, see the +global ocean example. +""" +function initial_positions(Γ::NamedTuple, nf=10000, lon_rng=(-160.0,-159.0), lat_rng=(30.0,31.0), level=1) + lon=lon_rng[1] .+(lon_rng[2]-lon_rng[1]).*rand(nf) + lat=lat_rng[1] .+(lat_rng[2]-lat_rng[1]).*rand(nf) + x=lon .+ (21. - Γ.XC[1][21,1]) + y=lat .+ (111. - Γ.YC[1][1,111]) + + return DataFrame(:x => x, :y => y, :z => fill(level,nf),:f => fill(1,nf)) +end + +custom🔴 = DataFrame(ID=Int[], fid=Int[], x=Float64[], y=Float64[], + k=Float64[], z=Float64[], iso=Float64[], t=Float64[], + lon=Float64[], lat=Float64[], dlon=Float64[], dlat=Float64[], + year=Float64[], col=Symbol[]) + +function custom🔧(sol,𝑃::𝐹_MeshArray3D,𝐷::NamedTuple;id=missing,𝑇=missing) + df=postprocess_MeshArray(sol,𝑃,𝐷,id=id,𝑇=𝑇) + add_lonlat!(df,𝐷.XC,𝐷.YC) + df.dlon=0*df.lon + df.dlat=0*df.lat + + #add year (convenience time axis for plotting) + df.year=df.t ./86400/365 + + #add depth (i.e. the 3rd, vertical, coordinate) + k=[[sol[i][3,1] for i in 1:size(sol,3)];[sol[i][3,end] for i in 1:size(sol,3)]] + nz=length(𝐷.RC) + df.k=min.(max.(k[:],Ref(0.0)),Ref(nz)) #level + k=Int.(floor.(df.k)); w=(df.k-k); + df.z=𝐷.RF[1 .+ k].*(1 .- w)+𝐷.RF[2 .+ k].*w #depth + + #add one isotherm depth + θ=0.5*(𝐷.θ0+𝐷.θ1) + d=MeshArrays.isosurface(θ,15,𝐷) + d[findall(isnan.(d))].=0. + df.iso=interp_to_xy(df,MeshArrays.exchange(d)); + + #add color = f(iso-z) + c=fill(:gold,length(df.iso)) + c[findall(df.iso. IndividualDisplacements.update_location_dpdo!(u,g)) - - jj=[:hFacC, :hFacW, :hFacS, :DXG, :DYG, :RAC, :RAZ, :RAS] - ii=findall([!in(i,jj) for i in keys(Γ)]) - Γ=(; zip(Symbol.(keys(Γ)[ii]), values(Γ)[ii])...) - - backward_in_time ? s=-1.0 : s=1.0 - s=Float32(s) - - function rd(filename, varname,n) - fil = NetCDF.open(filename, varname) - siz = size(fil) - tmp = zeros(siz[1:2]...,n) - [tmp .+= fil[:,:,1:n,t] for t=1:12] - tmp ./= 12.0 - tmp[findall(tmp.<-1e22)] .= 0.0 - return tmp - end - - fileIn=OCCAclim_path*"DDuvel.0406clim.nc" - u=s*read(rd(fileIn,"u",n),MeshArray(γ,Float32,n)) - - fileIn=OCCAclim_path*"DDvvel.0406clim.nc" - v=s*read(rd(fileIn,"v",n),MeshArray(γ,Float32,n)) - - fileIn=OCCAclim_path*"DDwvel.0406clim.nc" - w=s*rd(fileIn,"w",n) - w=-cat(w,zeros(360, 160),dims=3) - w[:,:,1] .=0.0 - w=read(w,MeshArray(γ,Float32,n+1)) - - fileIn=OCCAclim_path*"DDtheta.0406clim.nc" - θ=read(rd(fileIn,"theta",n),MeshArray(γ,Float32,n)) - -# fileIn=OCCAclim_path*"DDsalt.0406clim.nc" -# 𝑆=read(rd(fileIn,"salt",n),MeshArray(γ,Float64,n)) - - for i in eachindex(u) - u[i]=u[i]./Γ.DXC[1] - v[i]=v[i]./Γ.DYC[1] - end - - for i in eachindex(u) - u[i]=circshift(u[i],[-180 0]) - v[i]=circshift(v[i],[-180 0]) - θ[i]=circshift(θ[i],[-180 0]) -# 𝑆[i]=circshift(𝑆[i],[-180 0]) - end - - for i in eachindex(w) - w[i]=w[i]./Γ.DRC[min(i[2]+1,n)] - w[i]=circshift(w[i],[-180 0]) - end - - tmpx=circshift(Γ.XC[1],[-180 0]) - tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 - Γ.XC[1]=tmpx - - tmpx=circshift(Γ.XG[1],[-180 0]) - tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 - Γ.XG[1]=tmpx - Γ.Depth[1]=circshift(Γ.Depth[1],[-180 0]) - - t0=0.0; t1=86400*366*2.0; - - for k=1:n - (tmpu,tmpv)=exchange(u[:,k],v[:,k],1) - u[:,k]=tmpu - v[:,k]=tmpv - end - for k=1:n+1 - tmpw=exchange(w[:,k],1) - w[:,k]=tmpw - end - - 𝑃=FlowFields(u,u,v,v,w,w,[t0,t1],func) - - 𝐷 = (θ0=θ, θ1=θ, XC=exchange(Γ.XC), YC=exchange(Γ.YC), - RF=Γ.RF, RC=Γ.RC,ioSize=(360,160,n)) - - return 𝑃,𝐷,Γ - -end - # ╔═╡ 1811955d-618d-49e3-9f81-63195e2632fe begin - 𝑃,𝐷,Γ=OCCA_FlowFields(nmax=5) - tmp=(Γ = Γ, m = "OCCA") - 𝐷=merge(𝐷,tmp) + 𝑃,𝐷=OCCA_FlowFields.setup(nmax=5) "$✓ Set up gridded domain" end @@ -155,23 +63,13 @@ end begin lon=lo0 .+(lo1-lo0).*rand(n_part) lat=la0 .+(la1-la0).*rand(n_part) - (_,_,_,_,f,x,y)=InterpolationFactors(𝐷.Γ,lon,lat) + (_,_,_,_,f,x,y)=IndividualDisplacements.InterpolationFactors(𝐷.Γ,lon,lat) m=findall( (f.!==0).*((!isnan).(x)) ) df=DataFrame(x=x[m],y=y[m],f=f[m]) - - custom🔴 = DataFrame(ID=Int[], fid=Int[], x=Float32[], y=Float32[], - z=Float32[], year=Float32[], t=Float32[]) - function custom🔧(sol,𝐹::𝐹_MeshArray3D;id=missing,𝑇=missing) - df=postprocess_MeshArray(sol,𝐹,id=id,𝑇=𝑇) - z=[sol[1,i,j][3] for i in 1:size(sol,2), j in 1:size(sol,3)] - df.z=z[:] - df.year=df.t ./86400/365 - return df - end - custom∫(prob) = solve(prob,Tsit5(),reltol=1e-8,abstol=1e-8,saveat=365/12*86400.0) - + 𝐼=Individuals(𝑃,df.x,df.y,fill(z_init,n_part),df.f, - (🔴=custom🔴,🔧=custom🔧,∫=custom∫)) + (🔴=deepcopy(OCCA_FlowFields.custom🔴), + 🔧=OCCA_FlowFields.custom🔧, 𝐷=𝐷)) "$✓ Set up Individuals" end @@ -180,18 +78,16 @@ end begin 𝑇=(0.0,𝐼.𝑃.𝑇[2]) ∫!(𝐼,𝑇) - - add_lonlat!(𝐼.🔴,𝐷.XC,𝐷.YC) - + 🔴_by_ID = groupby(𝐼.🔴, :ID) 🔴_by_t = groupby(𝐼.🔴, :t) - ff(x) = x[1] + nt=length(unique(𝐼.🔴.t)) + + ff(x) = x[1] tmp1=combine(🔴_by_ID,:lon => ff => :lo,:lat => ff => :la) 𝐼.🔴.dlon=𝐼.🔴.lon - tmp1.lo[𝐼.🔴.ID] 𝐼.🔴.dlat=𝐼.🔴.lat - tmp1.la[𝐼.🔴.ID] - - nt=length(unique(𝐼.🔴.t)) "$✓ ∫!(𝐼,𝑇) etc" end @@ -259,55 +155,48 @@ PLUTO_PROJECT_TOML_CONTENTS = """ [deps] DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" IndividualDisplacements = "b92f0c32-5b7e-11e9-1d7b-238b2da8b0e6" -MeshArrays = "cb8c808f-1acf-59a3-9d2b-6e38d009f683" -NetCDF = "30363a11-5582-574a-97bb-aa9a979735b9" OceanStateEstimation = "891f6deb-a4f5-4bc5-a2e3-1e8f649cdd2c" -OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" [compat] -DataFrames = "~1.3.0" -IndividualDisplacements = "~0.3.5" -MeshArrays = "~0.2.31" -NetCDF = "~0.11.3" -OceanStateEstimation = "~0.2.0" -OrdinaryDiffEq = "~5.71.0" -PlutoUI = "~0.7.24" -StatsPlots = "~0.14.29" +DataFrames = "~1.3.4" +IndividualDisplacements = "~0.3.10" +OceanStateEstimation = "~0.2.9" +PlutoUI = "~0.7.39" +StatsPlots = "~0.15.2" """ # ╔═╡ 00000000-0000-0000-0000-000000000002 PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised -julia_version = "1.7.0" +julia_version = "1.7.2" manifest_format = "2.0" [[deps.AWS]] deps = ["Base64", "Compat", "Dates", "Downloads", "GitHub", "HTTP", "IniFile", "JSON", "MbedTLS", "Mocking", "OrderedCollections", "Retry", "Sockets", "URIs", "UUIDs", "XMLDict"] -git-tree-sha1 = "82e9580aff0d2c1703f4bf38a9de79e927f252f9" +git-tree-sha1 = "07d944e4d9946c2061f97c1564d1b7ae8ea8f189" uuid = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" -version = "1.74.0" +version = "1.61.0" [[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "485ee0867925449198280d4af84bdb46a2a404d0" +deps = ["ChainRulesCore", "LinearAlgebra"] +git-tree-sha1 = "69f7020bd72f069c219b5e8c236c1fa90d2cb409" uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.0.1" +version = "1.2.1" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] -git-tree-sha1 = "abb72771fd8895a7ebd83d5632dc4b989b022b5b" +git-tree-sha1 = "8eaf9f1b4921132a4cff3f36a1d9ba923b14a481" uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.1.2" +version = "1.1.4" [[deps.Adapt]] deps = ["LinearAlgebra"] -git-tree-sha1 = "84918055d15b3114ede17ac6a7182f68870c16f7" +git-tree-sha1 = "195c5505521008abea5aee4f96930717958eac6f" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.3.1" +version = "3.4.0" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -319,22 +208,52 @@ uuid = "ec485272-7323-5ecc-a04f-4719b315124d" version = "0.2.0" [[deps.Arpack]] -deps = ["Arpack_jll", "Libdl", "LinearAlgebra"] -git-tree-sha1 = "2ff92b71ba1747c5fdd541f8fc87736d82f40ec9" +deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] +git-tree-sha1 = "91ca22c4b8437da89b030f08d71db55a379ce958" uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" -version = "0.4.0" +version = "0.5.3" [[deps.Arpack_jll]] -deps = ["Libdl", "OpenBLAS_jll", "Pkg"] -git-tree-sha1 = "e214a9b9bd1b4e1b4f15b22c0994862b66af7ff7" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"] +git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e" uuid = "68821587-b530-5797-8361-c406ea357684" -version = "3.5.0+3" +version = "3.5.1+1" [[deps.ArrayInterface]] -deps = ["Compat", "IfElse", "LinearAlgebra", "Requires", "SparseArrays", "Static"] -git-tree-sha1 = "265b06e2b1f6a216e0e8f183d28e4d354eab3220" +deps = ["ArrayInterfaceCore", "Compat", "IfElse", "LinearAlgebra", "Static"] +git-tree-sha1 = "0582b5976fc76523f77056e888e454f0f7732596" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "3.2.1" +version = "6.0.22" + +[[deps.ArrayInterfaceCore]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "40debc9f72d0511e12d817c7ca06a721b6423ba3" +uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2" +version = "0.1.17" + +[[deps.ArrayInterfaceGPUArrays]] +deps = ["Adapt", "ArrayInterfaceCore", "GPUArraysCore", "LinearAlgebra"] +git-tree-sha1 = "febba7add2873aecc0b6620b55969e73ec875bce" +uuid = "6ba088a2-8465-4c0a-af30-387133b534db" +version = "0.2.1" + +[[deps.ArrayInterfaceOffsetArrays]] +deps = ["ArrayInterface", "OffsetArrays", "Static"] +git-tree-sha1 = "c49f6bad95a30defff7c637731f00934c7289c50" +uuid = "015c0d05-e682-4f19-8f0a-679ce4c54826" +version = "0.1.6" + +[[deps.ArrayInterfaceStaticArrays]] +deps = ["Adapt", "ArrayInterface", "ArrayInterfaceStaticArraysCore", "LinearAlgebra", "Static", "StaticArrays"] +git-tree-sha1 = "efb000a9f643f018d5154e56814e338b5746c560" +uuid = "b0d46f97-bff5-4637-a19a-dd75974142cd" +version = "0.1.4" + +[[deps.ArrayInterfaceStaticArraysCore]] +deps = ["Adapt", "ArrayInterfaceCore", "LinearAlgebra", "StaticArraysCore"] +git-tree-sha1 = "a1e2cf6ced6505cbad2490532388683f1e88c3ed" +uuid = "dd5226c6-a4d4-4bc7-8575-46859f9c95b9" +version = "0.1.0" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" @@ -350,15 +269,15 @@ uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] -git-tree-sha1 = "bc1317f71de8dce26ea67fcdf7eccc0d0693b75b" +git-tree-sha1 = "eaee37f76339077f86679787a71990c4e465477f" uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" -version = "0.1.1" +version = "0.1.4" [[deps.Blosc]] deps = ["Blosc_jll"] -git-tree-sha1 = "575bdd70552dd9a7eaeba08ef2533226cdc50779" +git-tree-sha1 = "310b77648d38c223d947ff3f50f511d08690b8d5" uuid = "a74b3585-a348-5f62-a45c-50e91977d574" -version = "0.7.2" +version = "0.7.3" [[deps.Blosc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Pkg", "Zlib_jll", "Zstd_jll"] @@ -368,33 +287,39 @@ version = "1.21.1+0" [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c3598e525718abcc440f69cc6d5f60dda0a1b61e" +git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.6+5" +version = "1.0.8+0" [[deps.CFTime]] deps = ["Dates", "Printf"] -git-tree-sha1 = "bca6cb6ee746e6485ca4535f6cc29cf3579a0f20" +git-tree-sha1 = "ed2e76c1c3c43fd9d0cb9248674620b29d71f2d1" uuid = "179af706-886a-5703-950a-314cd64e0468" -version = "0.1.1" +version = "0.1.2" [[deps.CPUSummary]] -deps = ["Hwloc", "IfElse", "Static"] -git-tree-sha1 = "87b0c9c6ee0124d6c1f4ce8cb035dcaf9f90b803" +deps = ["CpuId", "IfElse", "Static"] +git-tree-sha1 = "8a43595f7b3f7d6dd1e07ad9b94081e1975df4af" uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.1.6" +version = "0.1.25" [[deps.CSV]] deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings"] -git-tree-sha1 = "49f14b6c56a2da47608fe30aed711b5882264d7a" +git-tree-sha1 = "873fb188a4b9d76549b81465b1f75c82aaf59238" uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.9.11" +version = "0.10.4" [[deps.Cairo_jll]] deps = ["Artifacts", "Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "e2f47f6d8337369411569fd45ae5753ca10394c6" +git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.0+6" +version = "1.16.1+1" + +[[deps.Calculus]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.5.1" [[deps.CatViews]] deps = ["Random", "Test"] @@ -404,27 +329,27 @@ version = "1.0.0" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "4c26b4e9e91ca528ea212927326ece5918a04b47" +git-tree-sha1 = "80ca332f6dcb2508adba68f22f551adb2d00a624" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.11.2" +version = "1.15.3" [[deps.ChangesOfVariables]] deps = ["ChainRulesCore", "LinearAlgebra", "Test"] -git-tree-sha1 = "bf98fa45a0a4cee295de98d4c1462be26345b9a1" +git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8" uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" -version = "0.1.2" +version = "0.1.4" [[deps.ClimateModels]] -deps = ["AWS", "CFTime", "CSV", "DataFrames", "Dates", "Downloads", "Git", "NetCDF", "OrderedCollections", "Pkg", "Statistics", "Suppressor", "TOML", "Test", "UUIDs", "Zarr"] -git-tree-sha1 = "15ba5b736e675d5e79fe5ad0e7a8f67a286ffe31" +deps = ["CFTime", "CSV", "DataFrames", "Dates", "Downloads", "Git", "NetCDF", "OrderedCollections", "Pkg", "Statistics", "Suppressor", "TOML", "Test", "UUIDs", "Zarr"] +git-tree-sha1 = "26c2a0ba4f7d3542177943181e7b61722daa3c2a" uuid = "f6adb021-9183-4f40-84dc-8cea6f651bb0" -version = "0.1.20" +version = "0.2.10" [[deps.CloseOpenIntervals]] deps = ["ArrayInterface", "Static"] -git-tree-sha1 = "7b8f09d58294dc8aa13d91a8544b37c8a1dcbc06" +git-tree-sha1 = "5522c338564580adf5d58d91e43a55db0fa5fb39" uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" -version = "0.1.4" +version = "0.1.10" [[deps.Clustering]] deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "SparseArrays", "Statistics", "StatsBase"] @@ -439,16 +364,22 @@ uuid = "944b1d66-785c-5afd-91f1-9de20f533193" version = "0.7.0" [[deps.ColorSchemes]] -deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random"] -git-tree-sha1 = "a851fec56cb73cfdf43762999ec72eff5b86882a" +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Random"] +git-tree-sha1 = "1fd869cc3875b57347f7027521f561cf46d1fcd8" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.15.0" +version = "3.19.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597" +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.0" +version = "0.11.4" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] +git-tree-sha1 = "d08c20eef1f2cbc6e60fd3612ac4340b89fea322" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.9.9" [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] @@ -457,9 +388,9 @@ uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" version = "0.12.8" [[deps.CommonSolve]] -git-tree-sha1 = "68a0743f578349ada8bc911a5cbd5a2ef6ed6d1f" +git-tree-sha1 = "332a332c97c7071600984b3c31d9067e1a4e6e25" uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.0" +version = "0.2.1" [[deps.CommonSubexpressions]] deps = ["MacroTools", "Test"] @@ -469,9 +400,9 @@ version = "0.3.0" [[deps.Compat]] deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] -git-tree-sha1 = "44c37b4636bc54afac5c574d2d02b625349d6582" +git-tree-sha1 = "78bee250c6826e1cf805a88b7f1e86025275d208" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "3.41.0" +version = "3.46.0" [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] @@ -479,48 +410,47 @@ uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" [[deps.ConstructionBase]] deps = ["LinearAlgebra"] -git-tree-sha1 = "f74e9d5388b8620b4cee35d4c5a618dd4dc547f4" +git-tree-sha1 = "fb21ddd70a051d882a1686a5a550990bbe371a95" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.3.0" +version = "1.4.1" [[deps.Contour]] -deps = ["StaticArrays"] -git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" +git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.5.7" +version = "0.6.2" + +[[deps.CpuId]] +deps = ["Markdown"] +git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" +uuid = "adafc99b-e345-5852-983c-f28acb93d879" +version = "0.3.1" [[deps.Crayons]] -git-tree-sha1 = "3f71217b538d7aaee0b69ab47d9b7724ca8afa0d" +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.0.4" +version = "4.1.1" [[deps.CyclicArrays]] git-tree-sha1 = "4ab3cb8563aceca605a543a19aacaf09c6781dd3" uuid = "6023044f-b3ef-4c22-8399-3ec90a0c9b75" version = "0.5.0" -[[deps.DEDataArrays]] -deps = ["ArrayInterface", "DocStringExtensions", "LinearAlgebra", "RecursiveArrayTools", "SciMLBase", "StaticArrays"] -git-tree-sha1 = "31186e61936fbbccb41d809ad4338c9f7addf7ae" -uuid = "754358af-613d-5f8d-9788-280bf1605d4c" -version = "0.2.0" - [[deps.DataAPI]] -git-tree-sha1 = "cc70b17275652eb47bc9e5f81635981f13cea5c8" +git-tree-sha1 = "fb5f5316dd3fd4c5e7c30a24d50643b73e37cd40" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.9.0" +version = "1.10.0" [[deps.DataFrames]] deps = ["Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "2e993336a3f68216be91eb8ee4625ebbaba19147" +git-tree-sha1 = "daa21eb85147f72e41f6352a57fccea377e310a9" uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.3.0" +version = "1.3.4" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3daef5523dd2e769dad2365274f760ff5f282c7d" +git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.11" +version = "0.18.13" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -548,10 +478,10 @@ uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d" version = "0.4.0" [[deps.DiffEqBase]] -deps = ["ArrayInterface", "ChainRulesCore", "DEDataArrays", "DataStructures", "Distributions", "DocStringExtensions", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "IterativeSolvers", "LabelledArrays", "LinearAlgebra", "Logging", "MuladdMacro", "NonlinearSolve", "Parameters", "PreallocationTools", "Printf", "RecursiveArrayTools", "RecursiveFactorization", "Reexport", "Requires", "SciMLBase", "Setfield", "SparseArrays", "StaticArrays", "Statistics", "SuiteSparse", "ZygoteRules"] -git-tree-sha1 = "976a9d34dff2f2bad494cec64c32d54168db21b2" +deps = ["ArrayInterfaceCore", "ChainRulesCore", "DataStructures", "Distributions", "DocStringExtensions", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "MuladdMacro", "NonlinearSolve", "Parameters", "Printf", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "Setfield", "SparseArrays", "Static", "StaticArrays", "Statistics", "ZygoteRules"] +git-tree-sha1 = "665832fd81cd961aad28fa7009d4aaa23a07db57" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.77.1" +version = "6.98.2" [[deps.DiffResults]] deps = ["StaticArrays"] @@ -560,15 +490,16 @@ uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" version = "1.0.3" [[deps.DiffRules]] -deps = ["LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "9bc5dac3c8b6706b58ad5ce24cffd9861f07c94f" +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "992a23afdb109d0d2f8802a30cf5ae4b1fe7ea68" uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.9.0" +version = "1.11.1" [[deps.DiskArrays]] -git-tree-sha1 = "6a50d800025a1664c99a8e819e0568c75e3ac0c7" +deps = ["OffsetArrays"] +git-tree-sha1 = "230d999fc78652ea070312373ed1bfe2489e4fe5" uuid = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" -version = "0.2.12" +version = "0.3.6" [[deps.Distances]] deps = ["LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI"] @@ -582,20 +513,26 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.Distributions]] deps = ["ChainRulesCore", "DensityInterface", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "c1724611e6ae29c6094c8d9850e3136297ba7fff" +git-tree-sha1 = "334a5896c1534bb1aa7aa2a642d30ba7707357ef" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.36" +version = "0.25.68" [[deps.DocStringExtensions]] deps = ["LibGit2"] -git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" +git-tree-sha1 = "5158c2b41018c5f7eb1470d558127ac274eca0c9" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.8.6" +version = "0.9.1" [[deps.Downloads]] deps = ["ArgTools", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +[[deps.DualNumbers]] +deps = ["Calculus", "NaNMath", "SpecialFunctions"] +git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" +uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" +version = "0.6.8" + [[deps.EarCut_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "3f3a2501fa7236e9b911e0f7a588c657e822bb6d" @@ -604,20 +541,25 @@ version = "2.2.3+0" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "b3bfd02e98aedfa5cf885665493c5598c350cd2f" +git-tree-sha1 = "bad72f730e9e91c08d9427d5e8db95478a3c323d" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.2.10+0" +version = "2.4.8+0" [[deps.ExponentialUtilities]] -deps = ["ArrayInterface", "LinearAlgebra", "Printf", "Requires", "SparseArrays"] -git-tree-sha1 = "1b873816d2cfc8c0fcb1edcb08e67fdf630a70b7" +deps = ["ArrayInterfaceCore", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "Printf", "SparseArrays", "libblastrampoline_jll"] +git-tree-sha1 = "b40c9037e1a33990466bc5d224ced34b34eebdb0" uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.10.2" +version = "1.18.0" [[deps.ExprTools]] -git-tree-sha1 = "b7e3d17636b348f005f11040025ae8c6f645fe92" +git-tree-sha1 = "56559bbef6ca5ea0c0818fa5c90320398a6fbf8d" uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.6" +version = "0.1.8" + +[[deps.Extents]] +git-tree-sha1 = "5e1e4c53fa39afe63a7d356e30452249365fba99" +uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" +version = "0.1.1" [[deps.EzXML]] deps = ["Printf", "XML2_jll"] @@ -632,16 +574,16 @@ uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" version = "0.4.1" [[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "LibVPX_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "Pkg", "Zlib_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "3cc57ad0a213808473eafef4845a74766242e05f" +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "ccd479984c7838684b3ac204b716c89955c76623" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.3.1+4" +version = "4.4.2+0" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "463cb335fa22c4ebacfd1faba5fde14edb80d96c" +git-tree-sha1 = "90630efff0894f8142308e334473eba54c433549" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.4.5" +version = "1.5.0" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -650,33 +592,45 @@ uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" version = "3.3.10+0" [[deps.FastBroadcast]] -deps = ["LinearAlgebra", "Polyester", "Static"] -git-tree-sha1 = "e32a81c505ab234c992ca978f31ed8b0dabbc327" +deps = ["ArrayInterface", "ArrayInterfaceCore", "LinearAlgebra", "Polyester", "Static", "StrideArraysCore"] +git-tree-sha1 = "21cdeff41e5a1822c2acd7fc7934c5f450588e00" uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898" -version = "0.1.11" +version = "0.2.1" [[deps.FastClosures]] git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" version = "0.3.2" +[[deps.FastLapackInterface]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "cfd9d0dbb947181644c00bd7e988b4bb30a5b2a5" +uuid = "29a986be-02c6-4525-aec4-84b980013641" +version = "1.2.6" + +[[deps.FileIO]] +deps = ["Pkg", "Requires", "UUIDs"] +git-tree-sha1 = "94f5101b96d2d968ace56f7f2db19d0a5f592e28" +uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +version = "1.15.0" + [[deps.FilePathsBase]] deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "04d13bfa8ef11720c24e4d840c0033d145537df7" +git-tree-sha1 = "316daa94fad0b7a008ebd573e002efd6609d85ac" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.17" +version = "0.9.19" [[deps.FillArrays]] deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "8756f9935b7ccc9064c6eef0bff0ad643df733a3" +git-tree-sha1 = "3399bbad4c9e9a2fd372a54d7b67b3c7121b6402" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.12.7" +version = "0.13.3" [[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "SparseArrays", "StaticArrays"] -git-tree-sha1 = "8b3c09b56acaf3c0e581c66638b85c8650ee9dca" +deps = ["ArrayInterfaceCore", "LinearAlgebra", "Requires", "Setfield", "SparseArrays", "StaticArrays"] +git-tree-sha1 = "5a2cff9b6b77b33b89f3d97a4d367747adce647e" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.8.1" +version = "2.15.0" [[deps.FixedPointNumbers]] deps = ["Statistics"] @@ -686,9 +640,9 @@ version = "0.8.4" [[deps.Fontconfig_jll]] deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "35895cf184ceaab11fd778b4590144034a167a2f" +git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.1+14" +version = "2.13.93+0" [[deps.Formatting]] deps = ["Printf"] @@ -703,15 +657,15 @@ version = "0.6.0" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "2b72a5624e289ee18256111657663721d59c143e" +git-tree-sha1 = "187198a4ed8ccd7b5d99c41b69c679269ea2b2d4" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.24" +version = "0.10.32" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "cbd58c9deb1d304f5a245a0b7eb841a2560cfec6" +git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.10.1+5" +version = "2.10.4+0" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -724,39 +678,63 @@ git-tree-sha1 = "241552bc2209f0fa068b6415b1942cc0aa486bcc" uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" version = "1.1.2" +[[deps.FunctionWrappersWrappers]] +deps = ["FunctionWrappers"] +git-tree-sha1 = "a5e6e7f12607e90d71b09e6ce2c965e41b337968" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "0.1.1" + [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.GLFW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "0c603255764a1fa0b61752d2bec14cfbd18f7fe8" +git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.5+1" +version = "3.3.8+0" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "6872f5ec8fd1a38880f027a26739d42dcda6691f" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.1.2" [[deps.GR]] -deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Printf", "Random", "Serialization", "Sockets", "Test", "UUIDs"] -git-tree-sha1 = "30f2b340c2fff8410d89bfcdc9c0a6dd661ac5f7" +deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Printf", "Random", "RelocatableFolders", "Serialization", "Sockets", "Test", "UUIDs"] +git-tree-sha1 = "cf0a9940f250dc3cb6cc6c6821b4bf8a4286cf9c" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.62.1" +version = "0.66.2" [[deps.GR_jll]] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "d59e8320c2747553788e4fc42231489cc602fa50" +git-tree-sha1 = "2d908286d120c584abbe7621756c341707096ba4" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.58.1+0" +version = "0.66.2+0" + +[[deps.GenericSchur]] +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "fb69b2a645fa69ba5f474af09221b9308b160ce6" +uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" +version = "0.5.3" + +[[deps.GeoInterface]] +deps = ["Extents"] +git-tree-sha1 = "fb28b5dc239d0174d7297310ef7b84a11804dfab" +uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" +version = "1.0.1" [[deps.GeometryBasics]] -deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "58bcdf5ebc057b085e58d95c138725628dd7453c" +deps = ["EarCut_jll", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] +git-tree-sha1 = "a7a97895780dab1085a97769316aa348830dc991" uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.1" +version = "0.4.3" [[deps.Gettext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "8c14294a079216000a0bdca5ec5a447f073ddc9d" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.20.1+7" +version = "0.21.0+0" [[deps.Git]] deps = ["Git_jll"] @@ -765,28 +743,34 @@ uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" version = "1.2.1" [[deps.GitHub]] -deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal"] -git-tree-sha1 = "c8594dff1ed76e232d8063b2a2555335900af6f3" +deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal", "URIs"] +git-tree-sha1 = "f1d3170f588c7610b568c9a97971915100dd51e8" uuid = "bc5e4493-9b4d-5f90-b8aa-2b2bcaad7a26" -version = "5.7.0" +version = "5.7.3" [[deps.Git_jll]] deps = ["Artifacts", "Expat_jll", "Gettext_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "33be385f3432a5a5b7f6965af9592d4407f3167f" +git-tree-sha1 = "6e93d42b97978709e9c941fa43d0f01701f0d290" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.31.0+0" +version = "2.34.1+0" [[deps.Glib_jll]] deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "04690cc5008b38ecbdfede949220bc7d9ba26397" +git-tree-sha1 = "a32d672ac2c967f3deb8a81d828afc739c838a06" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.59.0+4" +version = "2.68.3+2" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.14+0" [[deps.Graphs]] -deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "92243c07e786ea3458532e199eb3feee0e7e08eb" +deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "a6d30bdc378d340912f48abf01281aab68c0dec8" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.4.1" +version = "1.7.2" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -795,9 +779,9 @@ version = "1.0.2" [[deps.HDF5_jll]] deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenSSL_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "fd83fa0bde42e01952757f01149dd968c06c4dba" +git-tree-sha1 = "c003b31e2e818bc512b0ff99d7dce03b0c1359f5" uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.12.0+1" +version = "1.12.2+1" [[deps.HTTP]] deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"] @@ -805,23 +789,23 @@ git-tree-sha1 = "0fa77022fe4b511826b39c894c90daf5fce3334a" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" version = "0.9.17" +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] +git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "2.8.1+1" + [[deps.HostCPUFeatures]] deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "8f0dc80088981ab55702b04bba38097a44a1a3a9" +git-tree-sha1 = "b7b88a4716ac33fe31d6556c02fc60017594343c" uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.5" +version = "0.1.8" -[[deps.Hwloc]] -deps = ["Hwloc_jll"] -git-tree-sha1 = "92d99146066c5c6888d5a3abc871e6a214388b91" -uuid = "0e44f5e4-bd66-52a0-8798-143a42290a1d" -version = "2.0.0" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3395d4d4aeb3c9d31f5929d32760d8baeee88aaf" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.5.0+0" +[[deps.HypergeometricFunctions]] +deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions", "Test"] +git-tree-sha1 = "709d864e3ed6e3545230601f94e11ebc65994641" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.11" [[deps.Hyperscript]] deps = ["Test"] @@ -830,9 +814,10 @@ uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" version = "0.0.4" [[deps.HypertextLiteral]] -git-tree-sha1 = "2b078b5a615c6c0396c77810d92ee8c6f470d238" +deps = ["Tricks"] +git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.3" +version = "0.9.4" [[deps.IOCapture]] deps = ["Logging", "Random"] @@ -847,26 +832,25 @@ version = "0.1.1" [[deps.IndividualDisplacements]] deps = ["Artifacts", "CFTime", "CSV", "CyclicArrays", "DataFrames", "Dates", "LazyArtifacts", "MeshArrays", "NetCDF", "OrdinaryDiffEq", "Random", "UnPack"] -git-tree-sha1 = "580636fff0fe9a0d024f24c8b72e15fd684aeaa3" +git-tree-sha1 = "2561f65966c5dfaa85583f295a2ca82b1984af88" uuid = "b92f0c32-5b7e-11e9-1d7b-238b2da8b0e6" -version = "0.3.5" +version = "0.3.10" [[deps.Inflate]] -git-tree-sha1 = "f5fc07d4e706b84f72d54eedcc1c13d92fb0871c" +git-tree-sha1 = "5cd07aab533df5170988219191dfad0519391428" uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.2" +version = "0.1.3" [[deps.IniFile]] -deps = ["Test"] -git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" +git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.0" +version = "0.5.1" [[deps.InlineStrings]] deps = ["Parsers"] -git-tree-sha1 = "8d70835a3759cdd75881426fced1508bb7b7e1b6" +git-tree-sha1 = "d19f9edd8c34760dca2de2b503f969d8700ed288" uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.1.1" +version = "1.1.4" [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -879,16 +863,16 @@ deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" [[deps.Interpolations]] -deps = ["AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "b15fc0a95c564ca2e0a7ae12c1f095ca848ceb31" +deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "64f138f9453a018c8f3562e7bae54edc059af249" uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.13.5" +version = "0.14.4" [[deps.InverseFunctions]] deps = ["Test"] -git-tree-sha1 = "a7254c0acd8e62f1ac75ad24d5db43f5f19f3c65" +git-tree-sha1 = "b3364212fb5d870f724876ffcd34dd8ec6d98918" uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.2" +version = "0.1.7" [[deps.InvertedIndices]] git-tree-sha1 = "bee5f1ef5bf65df56bdd2e40447590b272a5471f" @@ -916,29 +900,53 @@ git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" +[[deps.JLD2]] +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "TranscodingStreams", "UUIDs"] +git-tree-sha1 = "81b9477b49402b47fbe7f7ae0b252077f53e4a08" +uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" +version = "0.4.22" + [[deps.JLLWrappers]] deps = ["Preferences"] -git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" +git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.3.0" +version = "1.4.1" [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" +git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.2" +version = "0.21.3" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "d735490ac75c5cb9f1b00d8b5509c11984dc6943" +git-tree-sha1 = "b53380851c6e6664204efb2e62cd24fa5c47e4ba" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.0+0" +version = "2.1.2+0" + +[[deps.KLU]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] +git-tree-sha1 = "cae5e3dfd89b209e01bcd65b3a25e74462c67ee0" +uuid = "ef3ab10e-7fda-4108-b977-705223b18434" +version = "0.3.0" [[deps.KernelDensity]] deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] -git-tree-sha1 = "591e8dc09ad18386189610acafb970032c519707" +git-tree-sha1 = "9816b296736292a80b9a3200eb7fbb57aaa3917a" uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.3" +version = "0.6.5" + +[[deps.Krylov]] +deps = ["LinearAlgebra", "Printf", "SparseArrays"] +git-tree-sha1 = "a2327039e1c84615e22d662adb3df113caf44b70" +uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" +version = "0.8.3" + +[[deps.KrylovKit]] +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "49b0c1dd5c292870577b8f58c51072bd558febb9" +uuid = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" +version = "0.5.4" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -946,6 +954,17 @@ git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" version = "3.100.1+0" +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "3.0.0+1" + +[[deps.LRUCache]] +git-tree-sha1 = "d64a0aff6691612ab9fb0117b0995270871c5dfc" +uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" +version = "1.3.0" + [[deps.LZO_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" @@ -957,23 +976,17 @@ git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" version = "1.3.0" -[[deps.LabelledArrays]] -deps = ["ArrayInterface", "ChainRulesCore", "LinearAlgebra", "MacroTools", "StaticArrays"] -git-tree-sha1 = "3609bbf5feba7b22fb35fe7cb207c8c8d2e2fc5b" -uuid = "2ee39098-c373-598a-b85f-a56591580800" -version = "1.6.7" - [[deps.Latexify]] deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] -git-tree-sha1 = "a8f4f279b6fa3c3c4f1adadd78a621b13a506bce" +git-tree-sha1 = "1a43be956d433b5d0321197150c2f94e16c0aaa0" uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.15.9" +version = "0.15.16" [[deps.LayoutPointers]] -deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static"] -git-tree-sha1 = "83b56449c39342a47f3fcdb3bc782bd6d66e1d97" +deps = ["ArrayInterface", "ArrayInterfaceOffsetArrays", "ArrayInterfaceStaticArrays", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static"] +git-tree-sha1 = "b67e749fb35530979839e7b4b606a97105fe4f1c" uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.4" +version = "0.1.10" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -995,12 +1008,6 @@ uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -[[deps.LibVPX_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "12ee7e23fa4d18361e7c2cde8f8337d4c3101bc7" -uuid = "dd192d2f-8180-539f-9fb4-cc70b1dcf69a" -version = "1.10.0+0" - [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -1041,10 +1048,10 @@ uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" version = "2.35.0+0" [[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "340e257aada13f95f98ee352d316c3bed37c8ab9" +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713" uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.3.0+0" +version = "4.4.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1054,28 +1061,34 @@ version = "2.36.0+0" [[deps.LineSearches]] deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "f27132e551e959b3667d8c93eae90973225032dd" +git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.1.1" +version = "7.2.0" [[deps.LinearAlgebra]] deps = ["Libdl", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +[[deps.LinearSolve]] +deps = ["ArrayInterfaceCore", "DocStringExtensions", "FastLapackInterface", "GPUArraysCore", "IterativeSolvers", "KLU", "Krylov", "KrylovKit", "LinearAlgebra", "RecursiveFactorization", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SuiteSparse", "UnPack"] +git-tree-sha1 = "af8c2f07401cb3c39ad05542adf053314ea37ec8" +uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" +version = "1.25.0" + [[deps.LogExpFunctions]] deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "e5718a00af0ab9756305a0392832c8952c7426c1" +git-tree-sha1 = "94d9c52ca447e23eac0c0f074effbcd38830deb5" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.6" +version = "0.3.18" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoopVectorization]] -deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "Requires", "SIMDDualNumbers", "SLEEFPirates", "Static", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "9e10579c154f785b911d9ceb96c33fcc1a661171" +deps = ["ArrayInterface", "ArrayInterfaceCore", "ArrayInterfaceOffsetArrays", "ArrayInterfaceStaticArrays", "CPUSummary", "ChainRulesCore", "CloseOpenIntervals", "DocStringExtensions", "ForwardDiff", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "SIMDDualNumbers", "SIMDTypes", "SLEEFPirates", "SnoopPrecompile", "SpecialFunctions", "Static", "ThreadingUtilities", "UnPack", "VectorizationBase"] +git-tree-sha1 = "60613258cc56b6c7c909f3e960e8b3b4e86dc2f2" uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.99" +version = "0.12.124" [[deps.Lz4_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1085,15 +1098,15 @@ version = "1.9.3+0" [[deps.MITgcmTools]] deps = ["Artifacts", "ClimateModels", "DataFrames", "Dates", "LazyArtifacts", "MeshArrays", "NetCDF", "OrderedCollections", "Printf", "SparseArrays", "Suppressor", "UUIDs"] -git-tree-sha1 = "85fd18c07803b16af3e317e9568d526f5ca61853" +git-tree-sha1 = "bc351e1452ebffa346997f809e164815c73c1a67" uuid = "62725fbc-3a66-4df3-9000-e33e85b3a198" -version = "0.1.32" +version = "0.2.1" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "5455aef09b40e5020e1520f551fa3135040d4ed0" +git-tree-sha1 = "41d162ae9c868218b1f3fe78cba878aa348c2d26" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2021.1.1+2" +version = "2022.1.0+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] @@ -1102,19 +1115,19 @@ uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.9" [[deps.ManualMemory]] -git-tree-sha1 = "9cb207b18148b2199db259adfa923b45593fe08e" +git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" -version = "0.1.6" +version = "0.1.8" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"] -git-tree-sha1 = "1c38e51c3d08ef2278062ebceade0e46cefc96fe" +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] +git-tree-sha1 = "2f0be365951a88dfb084f754005177e6dfb00ed0" uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.0.3" +version = "1.1.4" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] @@ -1155,10 +1168,16 @@ uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" version = "0.2.2" [[deps.MultivariateStats]] -deps = ["Arpack", "LinearAlgebra", "SparseArrays", "Statistics", "StatsBase"] -git-tree-sha1 = "8d958ff1854b166003238fe191ec34b9d592860a" +deps = ["Arpack", "LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI", "StatsBase"] +git-tree-sha1 = "efe9c8ecab7a6311d4b91568bd6c88897822fabe" uuid = "6f286f6a-111f-5878-ab1e-185364afe411" -version = "0.8.0" +version = "0.10.0" + +[[deps.NCDatasets]] +deps = ["CFTime", "DataStructures", "Dates", "NetCDF_jll", "NetworkOptions", "Printf"] +git-tree-sha1 = "16463e1587495780aa05e05440f16959042bfcb1" +uuid = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" +version = "0.12.7" [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] @@ -1173,59 +1192,60 @@ uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" version = "4.5.1" [[deps.NaNMath]] -git-tree-sha1 = "f755f36b19a5116bb580de457cda0c140153f283" +deps = ["OpenLibm_jll"] +git-tree-sha1 = "a7c3d1da1189a1c2fe843a3bfa04d18d20eb3211" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "0.3.6" +version = "1.0.1" [[deps.NearestNeighbors]] deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "16baacfdc8758bc374882566c9187e785e85c2f0" +git-tree-sha1 = "0e353ed734b1747fc20cd4cba0edd9ac027eff6a" uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.9" +version = "0.4.11" [[deps.NetCDF]] deps = ["DiskArrays", "Formatting", "NetCDF_jll"] -git-tree-sha1 = "23b0e32fde256a4e2e497e678abcf956ed26204b" +git-tree-sha1 = "328178762645783b20495d408ab317b4c2d25b1a" uuid = "30363a11-5582-574a-97bb-aa9a979735b9" -version = "0.11.3" +version = "0.11.7" [[deps.NetCDF_jll]] -deps = ["Artifacts", "HDF5_jll", "JLLWrappers", "LibCURL_jll", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Pkg", "Zlib_jll", "nghttp2_jll"] -git-tree-sha1 = "0cf4d1bf2ef45156aed85c9ac5f8c7e697d9288c" +deps = ["Artifacts", "HDF5_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Pkg", "XML2_jll", "Zlib_jll"] +git-tree-sha1 = "072f8371f74c3b9e1b26679de7fbf059d45ea221" uuid = "7243133f-43d8-5620-bbf4-c2c921802cf3" -version = "400.702.400+0" +version = "400.902.5+1" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" [[deps.NonlinearSolve]] -deps = ["ArrayInterface", "FiniteDiff", "ForwardDiff", "IterativeSolvers", "LinearAlgebra", "RecursiveArrayTools", "RecursiveFactorization", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "UnPack"] -git-tree-sha1 = "8dc3be3e9edf976a3e79363b3bd2ad776a627c31" +deps = ["ArrayInterfaceCore", "FiniteDiff", "ForwardDiff", "IterativeSolvers", "LinearAlgebra", "RecursiveArrayTools", "RecursiveFactorization", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "UnPack"] +git-tree-sha1 = "a754a21521c0ab48d37f44bbac1eefd1387bdcfc" uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "0.3.12" +version = "0.3.22" [[deps.Observables]] -git-tree-sha1 = "fe29afdef3d0c4a8286128d4e45cc50621b1e43d" +git-tree-sha1 = "dfd8d34871bc3ad08cd16026c1828e271d554db9" uuid = "510215fc-4207-5dde-b226-833fc4488ee2" -version = "0.4.0" +version = "0.5.1" [[deps.OceanStateEstimation]] -deps = ["Artifacts", "CodecZlib", "Downloads", "FortranFiles", "LazyArtifacts", "MITgcmTools", "MeshArrays", "Statistics", "Tar"] -git-tree-sha1 = "6f52efdb2a7a921bb4912e544af574bb07523f0a" +deps = ["Artifacts", "CodecZlib", "Distributed", "Downloads", "FortranFiles", "JLD2", "LazyArtifacts", "MITgcmTools", "MeshArrays", "NCDatasets", "Pkg", "Printf", "SharedArrays", "Statistics", "TOML", "Tar"] +git-tree-sha1 = "bbe8f5ab284cbe0facb7a29b0fa1e636835a1d4f" uuid = "891f6deb-a4f5-4bc5-a2e3-1e8f649cdd2c" -version = "0.2.0" +version = "0.2.9" [[deps.OffsetArrays]] deps = ["Adapt"] -git-tree-sha1 = "043017e0bdeff61cfbb7afeb558ab29536bbb5ed" +git-tree-sha1 = "1ea784113a6aa054c5ebd95945fa5e52c2f378e7" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.10.8" +version = "1.12.7" [[deps.Ogg_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7937eda4681660b4d6aeeecc2f7e1c81c8ee4e2f" +git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+0" +version = "1.3.5+1" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] @@ -1237,9 +1257,9 @@ uuid = "05823500-19ac-5b8b-9628-191a04bc5112" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "15003dcb7d8db3c6c857fda14891a539a8f2705a" +git-tree-sha1 = "e60321e3f2616584ff98f0a4f18d98ae6f89bbb3" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.10+0" +version = "1.1.17+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1259,10 +1279,10 @@ uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" version = "1.4.1" [[deps.OrdinaryDiffEq]] -deps = ["Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastClosures", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "Logging", "LoopVectorization", "MacroTools", "MuladdMacro", "NLsolve", "Polyester", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"] -git-tree-sha1 = "aab86872f5dccb1a6251ae7935b286e784dadba0" +deps = ["Adapt", "ArrayInterface", "ArrayInterfaceGPUArrays", "ArrayInterfaceStaticArrays", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "Logging", "LoopVectorization", "MacroTools", "MuladdMacro", "NLsolve", "NonlinearSolve", "Polyester", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "SnoopPrecompile", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"] +git-tree-sha1 = "4cf346be836dcafdfa8359fc0f593ad5860ba7cf" uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "5.71.0" +version = "6.24.4" [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] @@ -1276,9 +1296,9 @@ version = "8.44.0+0" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "ee26b350276c51697c9c2d88a072b339f9f03d73" +git-tree-sha1 = "cf494dca75a69712a72b80bc48f59dcf3dea63ec" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.5" +version = "0.11.16" [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] @@ -1288,9 +1308,9 @@ version = "0.12.3" [[deps.Parsers]] deps = ["Dates"] -git-tree-sha1 = "d7fa6237da8004be601e19bd6666083056649918" +git-tree-sha1 = "3d5bf43e3e8b412656404ed9466f1dcbf7c50269" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.1.3" +version = "2.4.0" [[deps.Pixman_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1303,64 +1323,64 @@ deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markd uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" [[deps.PlotThemes]] -deps = ["PlotUtils", "Requires", "Statistics"] -git-tree-sha1 = "a3a964ce9dc7898193536002a6dd892b1b5a6f1d" +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "8162b2f8547bc23876edd0c5181b27702ae58dce" uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "2.0.1" +version = "3.0.0" [[deps.PlotUtils]] deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "e4fe0b50af3130ddd25e793b471cb43d5279e3e6" +git-tree-sha1 = "9888e59493658e476d3073f1ce24348bdc086660" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.1.1" +version = "1.3.0" [[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun"] -git-tree-sha1 = "65ebc27d8c00c84276f14aaf4ff63cbe12016c70" +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "Unzip"] +git-tree-sha1 = "a19652399f43938413340b2068e11e55caa46b65" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.25.2" +version = "1.31.7" [[deps.PlutoUI]] deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "Markdown", "Random", "Reexport", "UUIDs"] -git-tree-sha1 = "6c9fa3e4880242c666dafa4901a34d8e1cd1b243" +git-tree-sha1 = "8d1f54886b9037091edf146b517989fc4a09efec" uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.24" +version = "0.7.39" [[deps.Polyester]] deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Requires", "Static", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "892b8d9dd3c7987a4d0fd320f0a421dd90b5d09d" +git-tree-sha1 = "94e20822bd7427b1b1b843a3980003f5d5e8696b" uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.5.4" +version = "0.6.14" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] -git-tree-sha1 = "a3ff99bf561183ee20386aec98ab8f4a12dc724a" +git-tree-sha1 = "233feae14c07cca6b95080f77a7d332612603f6a" uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" -version = "0.1.2" +version = "0.1.9" [[deps.PooledArrays]] deps = ["DataAPI", "Future"] -git-tree-sha1 = "db3a23166af8aebf4db5ef87ac5b00d36eb771e2" +git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.0" +version = "1.4.2" [[deps.PreallocationTools]] -deps = ["Adapt", "ArrayInterface", "ForwardDiff", "LabelledArrays"] -git-tree-sha1 = "435379f01c1e6f7ca65cf46fdd403226f1d36e37" +deps = ["Adapt", "ArrayInterfaceCore", "ForwardDiff", "ReverseDiff"] +git-tree-sha1 = "5c076a409ec8d2a86d3685a7e4fed330cd489889" uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.2.1" +version = "0.4.2" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "00cfd92944ca9c760982747e9a1d0d5d86ab1e5a" +git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.2.2" +version = "1.3.0" [[deps.PrettyTables]] deps = ["Crayons", "Formatting", "Markdown", "Reexport", "Tables"] -git-tree-sha1 = "d940010be611ee9d67064fe559edbb305f8cc0eb" +git-tree-sha1 = "dfb54c4e414caa595a1f2ed759b160f5a3ddcba5" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "1.2.3" +version = "1.3.1" [[deps.Printf]] deps = ["Unicode"] @@ -1368,9 +1388,9 @@ uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" [[deps.Qt5Base_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] -git-tree-sha1 = "16626cfabbf7206d60d84f2bf4725af7b37d4a77" +git-tree-sha1 = "c6c0f690d0cc7caddb74cef7aa847b824a16b256" uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" -version = "5.15.2+0" +version = "5.15.3+1" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] @@ -1388,9 +1408,9 @@ uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.Ratios]] deps = ["Requires"] -git-tree-sha1 = "01d341f502250e81f6fec0afe662aa861392a3aa" +git-tree-sha1 = "dc84268fe0e3335a62e315a3a7cf2afa7178a734" uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.2" +version = "0.4.3" [[deps.RecipesBase]] git-tree-sha1 = "6bf3f380ff52ce0832ddd3a2a7b9538ed1bcca7d" @@ -1399,38 +1419,50 @@ version = "1.2.1" [[deps.RecipesPipeline]] deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] -git-tree-sha1 = "7ad0dfa8d03b7bcf8c597f59f5292801730c55b8" +git-tree-sha1 = "e7eac76a958f8664f2718508435d058168c7953d" uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.4.1" +version = "0.6.3" [[deps.RecursiveArrayTools]] -deps = ["ArrayInterface", "ChainRulesCore", "DocStringExtensions", "FillArrays", "LinearAlgebra", "RecipesBase", "Requires", "StaticArrays", "Statistics", "ZygoteRules"] -git-tree-sha1 = "c944fa4adbb47be43376359811c0a14757bdc8a8" +deps = ["Adapt", "ArrayInterfaceCore", "ArrayInterfaceStaticArraysCore", "ChainRulesCore", "DocStringExtensions", "FillArrays", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "Tables", "ZygoteRules"] +git-tree-sha1 = "3004608dc42101a944e44c1c68b599fa7c669080" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.20.0" +version = "2.32.0" [[deps.RecursiveFactorization]] -deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "StrideArraysCore", "TriangularSolve"] -git-tree-sha1 = "b7edd69c796b30985ea6dfeda8504cdb7cf77e9f" +deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "SnoopPrecompile", "StrideArraysCore", "TriangularSolve"] +git-tree-sha1 = "0a2dfb3358fcde3676beb75405e782faa8c9aded" uuid = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" -version = "0.2.5" +version = "0.2.12" [[deps.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" uuid = "189a3867-3050-52da-a836-e630ba90ab69" version = "1.2.2" +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "22c5201127d7b243b9ee1de3b43c408879dff60f" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "0.3.0" + [[deps.Requires]] deps = ["UUIDs"] -git-tree-sha1 = "8f82019e525f4d5c669692772a6f4b0a58b06a6a" +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.2.0" +version = "1.3.0" [[deps.Retry]] git-tree-sha1 = "41ac127cd281bb33e42aba46a9d3b25cd35fc6d5" uuid = "20febd7b-183b-5ae2-ac4a-720e7ce64774" version = "0.4.1" +[[deps.ReverseDiff]] +deps = ["ChainRulesCore", "DiffResults", "DiffRules", "ForwardDiff", "FunctionWrappers", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "Random", "SpecialFunctions", "StaticArrays", "Statistics"] +git-tree-sha1 = "b8e2eb3d8e1530acb73d8949eab3cedb1d43f840" +uuid = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +version = "1.14.1" + [[deps.Rmath]] deps = ["Random", "Rmath_jll"] git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f" @@ -1448,9 +1480,9 @@ uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" [[deps.SIMDDualNumbers]] deps = ["ForwardDiff", "IfElse", "SLEEFPirates", "VectorizationBase"] -git-tree-sha1 = "62c2da6eb66de8bb88081d20528647140d4daa0e" +git-tree-sha1 = "dd4195d308df24f33fb10dde7c22103ba88887fa" uuid = "3cdde19b-5bb0-4aaf-8931-af3e248e098b" -version = "0.1.0" +version = "0.1.1" [[deps.SIMDTypes]] git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" @@ -1459,36 +1491,36 @@ version = "0.1.0" [[deps.SLEEFPirates]] deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "1410aad1c6b35862573c01b96cd1f6dbe3979994" +git-tree-sha1 = "2ba4fee025f25d6711487b73e1ac177cbd127913" uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.28" +version = "0.6.35" [[deps.SciMLBase]] -deps = ["ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "RecipesBase", "RecursiveArrayTools", "StaticArrays", "Statistics", "Tables", "TreeViews"] -git-tree-sha1 = "6f3c31990f63ac67ff6a485ccf77c5d8f7257547" +deps = ["ArrayInterfaceCore", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "RecipesBase", "RecursiveArrayTools", "StaticArraysCore", "Statistics", "Tables"] +git-tree-sha1 = "adbb628d4116d9d87e41b6d678772c44877d442c" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "1.23.1" +version = "1.52.0" [[deps.Scratch]] deps = ["Dates"] -git-tree-sha1 = "0b4b7f1393cff97c33891da2a0bf69c6ed241fda" +git-tree-sha1 = "f94f779c94e58bf9ea243e77a37e16d9de9126bd" uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.1.0" +version = "1.1.1" [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "244586bc07462d22aed0113af9c731f2a518c93e" +git-tree-sha1 = "db8481cf5d6278a121184809e9eb1628943c7704" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.3.10" +version = "1.3.13" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "Requires"] -git-tree-sha1 = "0afd9e6c623e379f593da01f20590bacc26d1d14" +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "0.8.1" +version = "1.1.1" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] @@ -1506,6 +1538,11 @@ git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" version = "0.9.4" +[[deps.SnoopPrecompile]] +git-tree-sha1 = "f604441450a3c0569830946e5b33b78c928e1a85" +uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" +version = "1.0.1" + [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" @@ -1526,76 +1563,86 @@ deps = ["LinearAlgebra", "Random"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [[deps.SparseDiffTools]] -deps = ["Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "Requires", "SparseArrays", "StaticArrays", "VertexSafeGraphs"] -git-tree-sha1 = "f33a0f6721b270cdf417f0c986e93c973e5913c8" +deps = ["Adapt", "ArrayInterfaceCore", "ArrayInterfaceStaticArrays", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "Requires", "SparseArrays", "StaticArrays", "VertexSafeGraphs"] +git-tree-sha1 = "5fb8ba9180f467885e87a2c99cae178b67934be1" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "1.19.1" +version = "1.26.2" [[deps.SpecialFunctions]] deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "e08890d19787ec25029113e88c34ec20cac1c91e" +git-tree-sha1 = "d75bda01f8c31ebb72df80a46c88b25d1c79c56d" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.0.0" +version = "2.1.7" [[deps.Static]] deps = ["IfElse"] -git-tree-sha1 = "7f5a513baec6f122401abfc8e9c074fdac54f6c1" +git-tree-sha1 = "f94f9d627ba3f91e41a815b9f9f977d729e2e06f" uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.4.1" +version = "0.7.6" [[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "3c76dde64d03699e074ac02eb2e8ba8254d428da" +deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] +git-tree-sha1 = "dfec37b90740e3b9aa5dc2613892a3fc155c3b42" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.2.13" +version = "1.5.6" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "ec2bd695e905a3c755b33026954b119ea17f2d22" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.3.0" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" [[deps.StatsAPI]] -git-tree-sha1 = "0f2aa8e32d511f758a2ce49208181f7733a0936a" +deps = ["LinearAlgebra"] +git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.1.0" +version = "1.5.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "2bb0cb32026a66037360606510fca5984ccc6b75" +git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.13" +version = "0.33.21" [[deps.StatsFuns]] -deps = ["ChainRulesCore", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "bedb3e17cc1d94ce0e6e66d3afa47157978ba404" +deps = ["ChainRulesCore", "HypergeometricFunctions", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "5783b877201a82fc0014cbf381e7e6eb130473a4" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "0.9.14" +version = "1.0.1" [[deps.StatsPlots]] -deps = ["Clustering", "DataStructures", "DataValues", "Distributions", "Interpolations", "KernelDensity", "LinearAlgebra", "MultivariateStats", "Observables", "Plots", "RecipesBase", "RecipesPipeline", "Reexport", "StatsBase", "TableOperations", "Tables", "Widgets"] -git-tree-sha1 = "d6956cefe3766a8eb5caae9226118bb0ac61c8ac" +deps = ["AbstractFFTs", "Clustering", "DataStructures", "DataValues", "Distributions", "Interpolations", "KernelDensity", "LinearAlgebra", "MultivariateStats", "NaNMath", "Observables", "Plots", "RecipesBase", "RecipesPipeline", "Reexport", "StatsBase", "TableOperations", "Tables", "Widgets"] +git-tree-sha1 = "83dc2ed179209a667d162683a27b4125f2dd3ebb" uuid = "f3b207a7-027a-5e70-b257-86293d7955fd" -version = "0.14.29" +version = "0.15.2" [[deps.StrideArraysCore]] -deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "ManualMemory", "Requires", "SIMDTypes", "Static", "ThreadingUtilities"] -git-tree-sha1 = "12cf3253ebd8e2a3214ae171fbfe51e7e8d8ad28" +deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "ManualMemory", "SIMDTypes", "Static", "ThreadingUtilities"] +git-tree-sha1 = "ac730bd978bf35f9fe45daa0bd1f51e493e97eb4" uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" -version = "0.2.9" +version = "0.3.15" [[deps.StructArrays]] -deps = ["Adapt", "DataAPI", "StaticArrays", "Tables"] -git-tree-sha1 = "2ce41e0d042c60ecd131e9fb7154a3bfadbf50d3" +deps = ["Adapt", "DataAPI", "StaticArraysCore", "Tables"] +git-tree-sha1 = "8c6ac65ec9ab781af05b08ff305ddc727c25f680" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.3" +version = "0.6.12" [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" + [[deps.Suppressor]] -git-tree-sha1 = "a819d77f31f83e5792a76081eee1ea6342ab8787" +git-tree-sha1 = "c6ed566db2fe3931292865b966d6d140b7ef32a9" uuid = "fd094767-a336-5f1f-9728-57cf17d0bbfb" -version = "0.2.0" +version = "0.2.1" [[deps.TOML]] deps = ["Dates"] @@ -1614,47 +1661,52 @@ uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" version = "1.0.1" [[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] -git-tree-sha1 = "bb1064c9a84c52e277f1096cf41434b675cd368b" +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] +git-tree-sha1 = "5ce79ce186cc678bbb5c5681ca3379d1ddae11a1" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.6.1" +version = "1.7.0" [[deps.Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] -git-tree-sha1 = "03013c6ae7f1824131b2ae2fc1d49793b51e8394" +git-tree-sha1 = "f8629df51cab659d70d2e5618a430b4d3f37f2c3" uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.4.6" +version = "0.5.0" [[deps.TranscodingStreams]] deps = ["Random", "Test"] -git-tree-sha1 = "216b95ea110b5972db65aa90f88d8d89dcb8851c" +git-tree-sha1 = "8a75929dcd3c38611db2f8d08546decb514fcadf" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.6" - -[[deps.TreeViews]] -deps = ["Test"] -git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" -uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" -version = "0.3.0" +version = "0.9.9" [[deps.TriangularSolve]] -deps = ["CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "LoopVectorization", "Polyester", "Static", "VectorizationBase"] -git-tree-sha1 = "ec9a310324dd2c546c07f33a599ded9c1d00a420" +deps = ["CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "LoopVectorization", "Polyester", "SnoopPrecompile", "Static", "VectorizationBase"] +git-tree-sha1 = "8987cf4a0f8d6c375e4ab1438a048e0a185151e4" uuid = "d5829a12-d9aa-46ab-831f-fb7c9ab06edf" -version = "0.1.8" +version = "0.1.13" + +[[deps.Tricks]] +git-tree-sha1 = "6bac775f2d42a611cdfcd1fb217ee719630c4175" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.6" [[deps.URIs]] -git-tree-sha1 = "97bbe755a53fe859669cd907f2d96aee8d2c1355" +git-tree-sha1 = "e59ecc5a41b000fa94423a578d29290c7266fc10" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.3.0" +version = "1.4.0" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -1676,15 +1728,20 @@ version = "0.4.1" [[deps.Unitful]] deps = ["ConstructionBase", "Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "0992ed0c3ef66b0390e5752fe60054e5ff93b908" +git-tree-sha1 = "b649200e887a487468b71821e2644382699f1b0f" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.9.2" +version = "1.11.0" + +[[deps.Unzip]] +git-tree-sha1 = "34db80951901073501137bdbc3d5a8e7bbd06670" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.1.2" [[deps.VectorizationBase]] -deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "Hwloc", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static"] -git-tree-sha1 = "17e5847bb36730d90801170ecd0ce4041a3dde86" +deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static"] +git-tree-sha1 = "05be19531ae910fb482db2d4c45e1aa1cde50560" uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.22" +version = "0.21.47" [[deps.VertexSafeGraphs]] deps = ["Graphs"] @@ -1700,21 +1757,21 @@ version = "1.19.0+0" [[deps.Wayland_protocols_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "66d72dc6fcc86352f01676e8f0f698562e60510f" +git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.23.0+0" +version = "1.25.0+0" [[deps.WeakRefStrings]] deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "c69f9da3ff2f4f02e811c3323c22e5dfcb584cfa" +git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.1" +version = "1.4.2" [[deps.Widgets]] deps = ["Colors", "Dates", "Observables", "OrderedCollections"] -git-tree-sha1 = "80661f59d28714632132c73779f8becc19a113f2" +git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" -version = "0.6.4" +version = "0.6.6" [[deps.WoodburyMatrices]] deps = ["LinearAlgebra", "SparseArrays"] @@ -1724,9 +1781,9 @@ version = "0.5.5" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "1acf5bdf07aa0907e0a37d3718bb88d4b687b74a" +git-tree-sha1 = "58443b63fb7e465a8a7210828c91c08b92132dff" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.9.12+0" +version = "2.9.14+0" [[deps.XMLDict]] deps = ["EzXML", "IterTools", "OrderedCollections"] @@ -1867,10 +1924,10 @@ uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" version = "1.4.0+3" [[deps.Zarr]] -deps = ["AWS", "Blosc", "CodecZlib", "DataStructures", "Dates", "DiskArrays", "HTTP", "JSON", "OffsetArrays", "Pkg"] -git-tree-sha1 = "18ac3fd29790edeee42bfed5020b12ae61a029d0" +deps = ["AWS", "Blosc", "CodecZlib", "DataStructures", "Dates", "DiskArrays", "HTTP", "JSON", "LRUCache", "OffsetArrays", "Pkg", "URIs"] +git-tree-sha1 = "112e0085a58d5dc231864c98a5097ad1021d7466" uuid = "0a941bbe-ad1d-11e8-39d9-ab76183a1d99" -version = "0.6.3" +version = "0.7.3" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1878,9 +1935,9 @@ uuid = "83775a58-1f1d-513f-b197-d71354ab007a" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "cc4bf3fdde8b7e3e9fa0351bdeedba1cf3b7f6e6" +git-tree-sha1 = "e45044cd873ded54b6a5bac0eb5c971392cf1927" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.0+0" +version = "1.5.2+0" [[deps.ZygoteRules]] deps = ["MacroTools"] @@ -1888,11 +1945,17 @@ git-tree-sha1 = "8c1a8e4dfacb1fd631745552c8db35d0deb09ea0" uuid = "700de1a5-db45-46bc-99cf-38207098b444" version = "0.2.2" +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.4.0+0" + [[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "acc685bcf777b2202a904cdcb49ad34c2fa1880c" +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.14.0+4" +version = "0.15.1+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] @@ -1900,9 +1963,9 @@ uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" [[deps.libfdk_aac_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7a5780a0d9c6864184b3a2eeeb833a0c871f00ab" +git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "0.1.6+4" +version = "2.0.2+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] @@ -1918,9 +1981,9 @@ version = "1.0.20+0" [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "c45f4e40e7aafe9d086379e5578947ec8b95a8fb" +git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+0" +version = "1.3.7+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] @@ -1932,21 +1995,21 @@ uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" [[deps.x264_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "d713c1ce4deac133e3334ee12f4adff07f81778f" +git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2020.7.14+2" +version = "2021.5.5+0" [[deps.x265_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "487da2f8f2f0c8ee0e83f39d13037d6bbf0a45ab" +git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.0.0+3" +version = "3.5.0+0" [[deps.xkbcommon_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "ece2350174195bb31de1a63bea3a41ae1aa593b6" +git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "0.9.1+5" +version = "1.4.1+0" """ # ╔═╡ Cell order: @@ -1963,6 +2026,5 @@ version = "0.9.1+5" # ╟─f75fae30-dfee-11ea-18ef-259321acfa2f # ╟─747d446a-dfeb-11ea-3533-c9404fd41688 # ╟─1811955d-618d-49e3-9f81-63195e2632fe -# ╟─87c5e5d4-c343-49fb-bc7e-6b2c0e647a38 # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002 diff --git a/examples/worldwide/three_dimensional_ocean.jl b/examples/worldwide/three_dimensional_ocean.jl index 42cf04a6..f6192f0f 100644 --- a/examples/worldwide/three_dimensional_ocean.jl +++ b/examples/worldwide/three_dimensional_ocean.jl @@ -6,8 +6,14 @@ using InteractiveUtils # ╔═╡ 16eab80b-325b-43bd-8bda-6b9ed27513a8 begin - using IndividualDisplacements, OceanStateEstimation, DataFrames, MeshArrays, NetCDF + using IndividualDisplacements + import DataFrames import CairoMakie as Mkie + + using OceanStateEstimation + include("OCCA_FlowFields.jl") + + "Done with loading packages" end # ╔═╡ 68c92218-40d3-11ec-0397-1747ac61c311 @@ -19,217 +25,62 @@ Advect particles with climatological mean flow in three dimensions starting from #![Three dimensional simulation](https://user-images.githubusercontent.com/20276764/94491485-595ee900-01b6-11eb-95e6-c2cacb812f46.png) # ╔═╡ 44346351-f249-4376-b002-8147755ed489 -md"""## Initialization""" - -# ╔═╡ 00464caa-fab2-4fd2-b39b-177e505d6d89 -md"""## Compute Displacements""" - -# ╔═╡ b66f8e31-6aae-429b-9c42-bb9ea2d01eb3 -md"""## Helper Functions""" - -# ╔═╡ a879b36d-8536-4b9e-a22d-b3d2161e589c -""" - OCCA_FlowFields(;backward_in_time::Bool=false,nmax=Inf) - -Define gridded variables and return result as NamedTuple -""" -function OCCA_FlowFields(;backward_in_time::Bool=false,nmax=Inf) - - γ=GridSpec("PeriodicChannel",MeshArrays.GRID_LL360) - Γ=GridLoad(γ;option="full") - n=length(Γ.RC) - isfinite(nmax) ? n=min(n,Int(nmax)) : nothing - - g=Γ.XC.grid - func=(u -> IndividualDisplacements.update_location_dpdo!(u,g)) - - jj=[:hFacC, :hFacW, :hFacS, :DXG, :DYG, :RAC, :RAZ, :RAS] - ii=findall([!in(i,jj) for i in keys(Γ)]) - Γ=(; zip(Symbol.(keys(Γ)[ii]), values(Γ)[ii])...) - - backward_in_time ? s=-1.0 : s=1.0 - s=Float32(s) - - function rd(filename, varname,n) - fil = NetCDF.open(filename, varname) - siz = size(fil) - tmp = zeros(siz[1:2]...,n) - [tmp .+= fil[:,:,1:n,t] for t=1:12] - tmp ./= 12.0 - tmp[findall(tmp.<-1e22)] .= 0.0 - return tmp - end - - fileIn=OCCAclim_path*"DDuvel.0406clim.nc" - u=s*read(rd(fileIn,"u",n),MeshArray(γ,Float32,n)) - - fileIn=OCCAclim_path*"DDvvel.0406clim.nc" - v=s*read(rd(fileIn,"v",n),MeshArray(γ,Float32,n)) - - fileIn=OCCAclim_path*"DDwvel.0406clim.nc" - w=s*rd(fileIn,"w",n) - w=-cat(w,zeros(360, 160),dims=3) - w[:,:,1] .=0.0 - w=read(w,MeshArray(γ,Float32,n+1)) - - fileIn=OCCAclim_path*"DDtheta.0406clim.nc" - θ=read(rd(fileIn,"theta",n),MeshArray(γ,Float32,n)) - -# fileIn=OCCAclim_path*"DDsalt.0406clim.nc" -# 𝑆=read(rd(fileIn,"salt",n),MeshArray(γ,Float64,n)) - - for i in eachindex(u) - u[i]=u[i]./Γ.DXC[1] - v[i]=v[i]./Γ.DYC[1] - end - - for i in eachindex(u) - u[i]=circshift(u[i],[-180 0]) - v[i]=circshift(v[i],[-180 0]) - θ[i]=circshift(θ[i],[-180 0]) -# 𝑆[i]=circshift(𝑆[i],[-180 0]) - end - - for i in eachindex(w) - w[i]=w[i]./Γ.DRC[min(i[2]+1,n)] - w[i]=circshift(w[i],[-180 0]) - end - - tmpx=circshift(Γ.XC[1],[-180 0]) - tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 - Γ.XC[1]=tmpx - - tmpx=circshift(Γ.XG[1],[-180 0]) - tmpx[1:180,:]=tmpx[1:180,:] .- 360.0 - Γ.XG[1]=tmpx - Γ.Depth[1]=circshift(Γ.Depth[1],[-180 0]) - - t0=0.0; t1=86400*366*2.0; - - for k=1:n - (tmpu,tmpv)=exchange(u[:,k],v[:,k],1) - u[:,k]=tmpu - v[:,k]=tmpv - end - for k=1:n+1 - tmpw=exchange(w[:,k],1) - w[:,k]=tmpw - end - - 𝑃=FlowFields(u,u,v,v,w,w,[t0,t1],func) - - 𝐷 = (θ0=θ, θ1=θ, XC=exchange(Γ.XC), YC=exchange(Γ.YC), - RF=Γ.RF, RC=Γ.RC,ioSize=(360,160,n)) - - return 𝑃,𝐷,Γ - -end +md"""## Initialize Data Structures""" # ╔═╡ 66c95828-227c-4db5-a6f1-3e3004a99785 begin - OceanStateEstimation.get_occa_velocity_if_needed(); - 𝑃,𝐷,Γ=OCCA_FlowFields(nmax=5) - "done with flow fields" -end - -# ╔═╡ 378b6547-898d-477a-a796-285a1f7e9b08 -""" - initial_positions(Γ; nf=10000, lon_rng=(-160.0,-159.0), lat_rng=(30.0,31.0)) - -Randomly assign initial positions in longitude,latitude ranges. Positions are -expressed in, normalized, grid point units (x,y in the 0,nx and 0,ny range). -To convert from longitude,latitude here we take advantage of the regularity -of the 1 degree grid being used -- for a more general alternative, see the -global ocean example. -""" -function initial_positions(Γ::NamedTuple, nf=10000, lon_rng=(-160.0,-159.0), lat_rng=(30.0,31.0)) - lon=lon_rng[1] .+(lon_rng[2]-lon_rng[1]).*rand(nf) - lat=lat_rng[1] .+(lat_rng[2]-lat_rng[1]).*rand(nf) - x=lon .+ (21. - Γ.XC[1][21,1]) - y=lat .+ (111. - Γ.YC[1][1,111]) - return x,y -end - -# ╔═╡ b754f4f6-b513-4eda-b689-8e0529223417 -custom🔴 = DataFrame(ID=Int[], fid=Int[], x=Float64[], y=Float64[], - k=Float64[], z=Float64[], iso=Float64[], t=Float64[], - lon=Float64[], lat=Float64[], year=Float64[], col=Symbol[]) - -# ╔═╡ c5eeb1f0-2c6f-4cd5-8a66-538da09c282d -function custom🔧(sol,𝑃::𝐹_MeshArray3D,𝐷::NamedTuple;id=missing,𝑇=missing) - df=postprocess_MeshArray(sol,𝑃,𝐷,id=id,𝑇=𝑇) - add_lonlat!(df,𝐷.XC,𝐷.YC) - - #add year (convenience time axis for plotting) - df.year=df.t ./86400/365 - - #add depth (i.e. the 3rd, vertical, coordinate) - k=[[sol[i][3,1] for i in 1:size(sol,3)];[sol[i][3,end] for i in 1:size(sol,3)]] - nz=length(𝐷.RC) - df.k=min.(max.(k[:],Ref(0.0)),Ref(nz)) #level - k=Int.(floor.(df.k)); w=(df.k-k); - df.z=𝐷.RF[1 .+ k].*(1 .- w)+𝐷.RF[2 .+ k].*w #depth - - #add one isotherm depth - θ=0.5*(𝐷.θ0+𝐷.θ1) - d=MeshArrays.isosurface(θ,15,𝐷) - d[findall(isnan.(d))].=0. - df.iso=interp_to_xy(df,exchange(d)); - - #add color = f(iso-z) - c=fill(:gold,length(df.iso)) - c[findall(df.iso. fill(kk,nf),:f => fill(1,nf)) - (df.x,df.y)=initial_positions(Γ, nf, lo, la) + nf=100; lo=(-160.0,-150.0); la=(30.0,40.0); level=2.5; + df=OCCA_FlowFields.initial_positions(𝐷.Γ, nf, lo, la, level) - 𝐼=Individuals(𝑃,df.x,df.y,df.z,df.f,(🔴=custom🔴,🔧=custom🔧, 𝐷=𝐷)) + 𝐼=Individuals(𝑃,df.x,df.y,df.z,df.f, + (🔴=OCCA_FlowFields.custom🔴,🔧=OCCA_FlowFields.custom🔧, 𝐷=𝐷)) + + "Done with Individuals" end +# ╔═╡ 00464caa-fab2-4fd2-b39b-177e505d6d89 +md"""## Compute Displacements""" + # ╔═╡ 938fdaa8-357d-477e-8fa2-e6da53806242 begin 𝑇=(0.0,10*86400.0) ∫!(𝐼,𝑇) - 🔴_by_t = groupby(𝐼.🔴, :t) end -# ╔═╡ dafc7de0-d2c4-42cd-8cd9-cc152cadb33e -begin - Mkie.set_theme!(Mkie.theme_light()) - fig=Mkie.Figure(resolution = (900, 600)) - a = Mkie.Axis(fig[1, 1],xlabel="longitude",ylabel="latitude") - Mkie.scatter!(a,🔴_by_t[1].lon,🔴_by_t[1].lat,color=:green2) - Mkie.scatter!(a,🔴_by_t[end].lon,🔴_by_t[end].lat,color=:red) - fig -end +# ╔═╡ 09d31a7b-f411-429f-b42b-4c5cd0e5a420 +md"""## Visualize Displacements""" -# ╔═╡ 7f3b1f13-abfa-4fc0-8169-b69f1c3519f4 +# ╔═╡ a6f4b5a0-7818-41a6-a4e5-30d80a727625 """ plot(𝐼::Individuals) -Plot the initial and final positions as scatter plot in x,y plane. +Plot the initial and final positions as scatter plot in `lon,lat` or `x,y` plane. """ function plot(𝐼::Individuals) - 🔴_by_t = groupby(𝐼.🔴, :t) - if (sum(names(🔴_by_t).=="lon")==0) - fig=scatter(🔴_by_t[1].x,🔴_by_t[1].y,c=:red,label="t0",marker = (:circle, stroke(0))) - scatter!(🔴_by_t[end].x,🔴_by_t[end].y,c=:blue,label="t1",marker = (:circle, stroke(0))) - else - fig=scatter(🔴_by_t[1].lon,🔴_by_t[1].lat,c=:red,label="t0",marker = (:circle, stroke(0))) - scatter!(🔴_by_t[end].lon,🔴_by_t[end].lat,c=:blue,label="t1",marker = (:circle, stroke(0))) + 🔴_by_t = DataFrames.groupby(𝐼.🔴, :t) + + Mkie.set_theme!(Mkie.theme_light()) + fig=Mkie.Figure(resolution = (900, 600)) + try + a = Mkie.Axis(fig[1, 1],xlabel="longitude",ylabel="latitude") + Mkie.scatter!(a,🔴_by_t[1].lon,🔴_by_t[1].lat,color=:green2) + Mkie.scatter!(a,🔴_by_t[end].lon,🔴_by_t[end].lat,color=:red) + catch + a = Mkie.Axis(fig[1, 1],xlabel="longitude",ylabel="latitude") + Mkie.scatter!(a,🔴_by_t[1].x,🔴_by_t[1].y,color=:green2) + Mkie.scatter!(a,🔴_by_t[end].x,🔴_by_t[end].y,color=:red) end return fig end +# ╔═╡ 8e371f54-d7f7-4f59-a2e1-9f673486f1fa +plot(𝐼) # ╔═╡ 00000000-0000-0000-0000-000000000001 PLUTO_PROJECT_TOML_CONTENTS = """ @@ -237,16 +88,12 @@ PLUTO_PROJECT_TOML_CONTENTS = """ CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" IndividualDisplacements = "b92f0c32-5b7e-11e9-1d7b-238b2da8b0e6" -MeshArrays = "cb8c808f-1acf-59a3-9d2b-6e38d009f683" -NetCDF = "30363a11-5582-574a-97bb-aa9a979735b9" OceanStateEstimation = "891f6deb-a4f5-4bc5-a2e3-1e8f649cdd2c" [compat] CairoMakie = "~0.8.13" DataFrames = "~1.3.4" IndividualDisplacements = "~0.3.9" -MeshArrays = "~0.2.31" -NetCDF = "~0.11.7" OceanStateEstimation = "~0.2.9" """ @@ -2104,12 +1951,8 @@ version = "3.5.0+0" # ╟─f199f321-976a-4ccd-a003-140211aa67fe # ╟─00464caa-fab2-4fd2-b39b-177e505d6d89 # ╟─938fdaa8-357d-477e-8fa2-e6da53806242 -# ╟─dafc7de0-d2c4-42cd-8cd9-cc152cadb33e -# ╟─b66f8e31-6aae-429b-9c42-bb9ea2d01eb3 -# ╟─a879b36d-8536-4b9e-a22d-b3d2161e589c -# ╟─378b6547-898d-477a-a796-285a1f7e9b08 -# ╟─b754f4f6-b513-4eda-b689-8e0529223417 -# ╟─c5eeb1f0-2c6f-4cd5-8a66-538da09c282d -# ╟─7f3b1f13-abfa-4fc0-8169-b69f1c3519f4 +# ╟─09d31a7b-f411-429f-b42b-4c5cd0e5a420 +# ╟─8e371f54-d7f7-4f59-a2e1-9f673486f1fa +# ╟─a6f4b5a0-7818-41a6-a4e5-30d80a727625 # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002 From a2c83c55253de61dc8f20a03ea54caaf743d0d35 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Wed, 31 Aug 2022 11:46:47 -0400 Subject: [PATCH 3/4] notebook improvements --- .../worldwide/global_ocean_circulation.jl | 24 +++++++++---------- examples/worldwide/three_dimensional_ocean.jl | 16 ++++++++----- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/examples/worldwide/global_ocean_circulation.jl b/examples/worldwide/global_ocean_circulation.jl index c93fd44a..19ad7999 100644 --- a/examples/worldwide/global_ocean_circulation.jl +++ b/examples/worldwide/global_ocean_circulation.jl @@ -148,21 +148,20 @@ let using DataFrames, Statistics gdf = groupby(𝐼.🔴, :ID) sgdf= combine(gdf,nrow,:lat => mean) - sgdf[rand(1:size(sgdf,1),4),:] end # ╔═╡ fc16b761-8b1f-41de-b4fe-7fa9987d6167 𝐼.🔴 +# ╔═╡ c5ba37e9-2a68-4448-a2cb-dea1fbf08f1e +md"""## 4. Visualize Displacements""" + # ╔═╡ 15077957-64d5-46a5-8a87-a76ad619cf38 -md"""## 4 Summary Statistics +md"""## 5. Summary Statistics Here we briefly demontrate the use of [DataFrames.jl](https://juliadata.github.io/DataFrames.jl/latest/) to analyze the output (𝐼.🔴) of our simulation. """ -# ╔═╡ c5ba37e9-2a68-4448-a2cb-dea1fbf08f1e -md"""## 5. Visualize Displacements""" - # ╔═╡ de8dbb43-68bc-4fb2-b0c8-07100b8a97a0 md"""## Appendix : Plotting Function""" @@ -195,11 +194,12 @@ begin ## method use here """ - globalmap(𝐼::Individuals,background::NamedTuple) + plot(𝐼::Individuals) Plot initial and final positions, superimposed on a globalmap of ocean depth log. """ - function globalmap(𝐼::Individuals,𝐵::NamedTuple) + function plot(𝐼::Individuals) + 𝐵=𝐼.𝐷.ODL xlims=extrema(𝐵.lon) ylims=extrema(𝐵.lat) plt=contourf(𝐵.lon,𝐵.lat,𝐵.fld,clims=𝐵.rng,c = :ice, @@ -216,7 +216,7 @@ Plot initial and final positions, superimposed on a globalmap of ocean depth log end # ╔═╡ b4841dc0-c257-45e0-8657-79121f2c9ce8 -globalmap(𝐼,𝐼.𝐷.ODL) +plot(𝐼) # ╔═╡ 00000000-0000-0000-0000-000000000001 PLUTO_PROJECT_TOML_CONTENTS = """ @@ -1981,14 +1981,14 @@ version = "1.4.1+0" # ╠═f727992f-b72a-45bc-93f1-cc8daf89af0f # ╠═a3e45927-5d53-42be-b7b7-489d6e7a6fe5 # ╟─6158a5e4-89e0-4496-ab4a-044d1e3e8cc0 -# ╠═a2375720-f599-43b9-a7fb-af17956309b6 +# ╟─a2375720-f599-43b9-a7fb-af17956309b6 # ╟─7efadea7-4542-40cf-893a-40a75e9c52be # ╠═1044c5aa-1a56-45b6-a4c6-63d24eea878d # ╟─fc16b761-8b1f-41de-b4fe-7fa9987d6167 -# ╠═15077957-64d5-46a5-8a87-a76ad619cf38 -# ╠═6e43a2af-bf01-4f42-a4ba-1874a8cf4885 # ╟─c5ba37e9-2a68-4448-a2cb-dea1fbf08f1e -# ╟─b4841dc0-c257-45e0-8657-79121f2c9ce8 +# ╠═b4841dc0-c257-45e0-8657-79121f2c9ce8 +# ╟─15077957-64d5-46a5-8a87-a76ad619cf38 +# ╠═6e43a2af-bf01-4f42-a4ba-1874a8cf4885 # ╟─de8dbb43-68bc-4fb2-b0c8-07100b8a97a0 # ╟─e1cdcac9-c3cc-4ce4-a477-452ca460a3d5 # ╟─00000000-0000-0000-0000-000000000001 diff --git a/examples/worldwide/three_dimensional_ocean.jl b/examples/worldwide/three_dimensional_ocean.jl index f6192f0f..e1ee8557 100644 --- a/examples/worldwide/three_dimensional_ocean.jl +++ b/examples/worldwide/three_dimensional_ocean.jl @@ -33,14 +33,17 @@ begin "Done with FlowFields" end -# ╔═╡ f199f321-976a-4ccd-a003-140211aa67fe +# ╔═╡ c21d725b-7adf-4918-bddd-39f225ea9858 begin nf=100; lo=(-160.0,-150.0); la=(30.0,40.0); level=2.5; df=OCCA_FlowFields.initial_positions(𝐷.Γ, nf, lo, la, level) - + "Done with initial positions" +end + +# ╔═╡ f199f321-976a-4ccd-a003-140211aa67fe +begin 𝐼=Individuals(𝑃,df.x,df.y,df.z,df.f, (🔴=OCCA_FlowFields.custom🔴,🔧=OCCA_FlowFields.custom🔧, 𝐷=𝐷)) - "Done with Individuals" end @@ -1947,10 +1950,11 @@ version = "3.5.0+0" # ╟─68c92218-40d3-11ec-0397-1747ac61c311 # ╟─16eab80b-325b-43bd-8bda-6b9ed27513a8 # ╟─44346351-f249-4376-b002-8147755ed489 -# ╟─66c95828-227c-4db5-a6f1-3e3004a99785 -# ╟─f199f321-976a-4ccd-a003-140211aa67fe +# ╠═66c95828-227c-4db5-a6f1-3e3004a99785 +# ╠═c21d725b-7adf-4918-bddd-39f225ea9858 +# ╠═f199f321-976a-4ccd-a003-140211aa67fe # ╟─00464caa-fab2-4fd2-b39b-177e505d6d89 -# ╟─938fdaa8-357d-477e-8fa2-e6da53806242 +# ╠═938fdaa8-357d-477e-8fa2-e6da53806242 # ╟─09d31a7b-f411-429f-b42b-4c5cd0e5a420 # ╟─8e371f54-d7f7-4f59-a2e1-9f673486f1fa # ╟─a6f4b5a0-7818-41a6-a4e5-30d80a727625 From a2731309f675843f5fbc35123a120373a06d0ab3 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Wed, 31 Aug 2022 12:57:22 -0400 Subject: [PATCH 4/4] fix (?) --- examples/worldwide/global_ocean_circulation.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/worldwide/global_ocean_circulation.jl b/examples/worldwide/global_ocean_circulation.jl index 19ad7999..13cabad9 100644 --- a/examples/worldwide/global_ocean_circulation.jl +++ b/examples/worldwide/global_ocean_circulation.jl @@ -79,6 +79,8 @@ begin nm=12 #number of months end + OceanStateEstimation.get_ecco_velocity_if_needed() + 𝑃,𝐷=ECCO_FlowFields.global_ocean_circulation(k=k) "Done with Setting Up FlowFields" end