1- # qsub -I -P xv83 -l mem=47GB -q express -l storage=scratch/gh0+scratch/xv83 -l walltime=01:00:00 -l ncpus=12
1+ # qsub -I -P xv83 -q express - l mem=47GB -l storage=scratch/gh0+scratch/xv83 -l walltime=01:00:00 -l ncpus=12
22
33using Pkg
44Pkg. activate (" ." )
@@ -72,8 +72,6 @@ lev = zt
7272indices = makeindices (gridmetrics. v3D)
7373(; wet3D, N) = indices
7474
75-
76-
7775# Preferred diffusivities
7876κVdeep = 3.0e-5 # m^2/s
7977κVML = 1.0 # m^2/s
@@ -86,7 +84,7 @@ upwind_str = upwind ? "" : "_centered"
8684upwind_str2 = upwind ? " upwind" : " centered"
8785
8886# Use yearly time-stepped simulations or monthly ones?
89- yearly = true
87+ yearly = false
9088yearly_str = yearly ? " _yearly" : " "
9189yearly_str2 = yearly ? " (yearly)" : " "
9290
9997
10098# To avoid loading and carrying 100s of GB of data around,
10199# preprocess each member before and only save the 2D data needed for plots.
102- if yearly
103- ℰ_file0 = " /scratch/xv83/TMIP/data/$model /$experiment /$(first (members)) /$(time_window) /seqeff$(upwind_str) _$(κVdeep_str) _$(κH_str) _$(κVML_str)$(yearly_str) .nc"
104- ℰ_ds0 = open_dataset (ℰ_file0)
105- years = ℰ_ds0. Ti |> Array
106- ℰ1050_ensemble = reduce ((x,y) -> cat (x, y, dims = 4 ), map (members) do member
107- @info " loading $member ℰ"
108- ℰ_file = " /scratch/xv83/TMIP/data/$model /$experiment /$member /$(time_window) /seqeff$(upwind_str) _$(κVdeep_str) _$(κH_str) _$(κVML_str)$(yearly_str) .nc"
109- ℰ_ds = open_dataset (ℰ_file)
110- ℰ = readcubedata (ℰ_ds. seqeff)
111- ℰ10 = map (
112- ts -> yearatquantile (ts, 0.9 ),
113- view (ℰ, i, j, :) for i in 1 : size (ℰ,1 ), j in 1 : size (ℰ,2 )
114- )
115- ℰ50 = map (
116- ts -> yearatquantile (ts, 0.5 ),
117- view (ℰ, i, j, :) for i in 1 : size (ℰ,1 ), j in 1 : size (ℰ,2 )
118- )
119- [ℰ10;;; ℰ50]
120- end )
121- ℰ1050_ensemblemean = dropdims (mean (ℰ1050_ensemble, dims = 4 ), dims = 4 )
122- ℰ1050_ensemblemax = dropdims (maximum (ℰ1050_ensemble, dims = 4 ), dims = 4 )
123- ℰ1050_ensemblemin = dropdims (minimum (ℰ1050_ensemble, dims = 4 ), dims = 4 )
124- ℰ1050_ensemblerange = ℰ1050_ensemblemax - ℰ1050_ensemblemin
125-
126-
127- else
128- # TODO (don't forget to deal with months)
129- end
100+ varname = yearly ? " seqeff" : " calE"
101+ ℰ_file0 = " /scratch/xv83/TMIP/data/$model /$experiment /$(first (members)) /$(time_window) /$(varname)$(upwind_str) _$(κVdeep_str) _$(κH_str) _$(κVML_str)$(yearly_str) .nc"
102+ ℰ_ds0 = open_dataset (ℰ_file0)
103+ years = ℰ_ds0. Ti |> Array
104+ τℰ1050_ensemble = reduce ((x,y) -> cat (x, y, dims = 4 ), map (members) do member
105+ @info " loading $member ℰ"
106+ ℰ_file = " /scratch/xv83/TMIP/data/$model /$experiment /$member /$(time_window) /$(varname)$(upwind_str) _$(κVdeep_str) _$(κH_str) _$(κVML_str)$(yearly_str) .nc"
107+ ℰ_ds = open_dataset (ℰ_file)
108+ ℰ = readcubedata (ℰ_ds[varname])
109+ τℰ10 = map (
110+ ts -> yearatquantile (ts, 0.9 ),
111+ view (ℰ, i, j, :) for i in 1 : size (ℰ,1 ), j in 1 : size (ℰ,2 )
112+ )
113+ τℰ50 = map (
114+ ts -> yearatquantile (ts, 0.5 ),
115+ view (ℰ, i, j, :) for i in 1 : size (ℰ,1 ), j in 1 : size (ℰ,2 )
116+ )
117+ [τℰ10;;; τℰ50]
118+ end )
119+ τℰ1050_ensemblemean = dropdims (mean (τℰ1050_ensemble, dims = 4 ), dims = 4 )
120+ τℰ1050_ensemblemax = dropdims (maximum (τℰ1050_ensemble, dims = 4 ), dims = 4 )
121+ τℰ1050_ensemblemin = dropdims (minimum (τℰ1050_ensemble, dims = 4 ), dims = 4 )
122+ τℰ1050_ensemblerange = τℰ1050_ensemblemax - τℰ1050_ensemblemin
130123
131124include (" plotting_functions.jl" ) # load seafloorvalue function
132125
@@ -157,16 +150,18 @@ fig = Figure(size = (ncols * 500, nrows * 250 + 100), fontsize = 18)
157150yticks = - 60 : 30 : 60
158151xticks = - 120 : 60 : 120 + 360
159152
160- datamean = (Γout_ensemblemean, ℰ1050_ensemblemean [:,:,2 ], ℰ1050_ensemblemean [:,:,1 ])
161- datarange = (Γout_ensemblerange, ℰ1050_ensemblerange [:,:,2 ], ℰ1050_ensemblerange [:,:,1 ])
153+ datamean = (Γout_ensemblemean, τℰ1050_ensemblemean [:,:,2 ], τℰ1050_ensemblemean [:,:,1 ])
154+ datarange = (Γout_ensemblerange, τℰ1050_ensemblerange [:,:,2 ], τℰ1050_ensemblerange [:,:,1 ])
162155𝒓 = rich (" r" , font = :bold_italic )
163156Γstr = rich (" Γ" , superscript (" †" ), rich (" ‾" , offset = (- 0.55 , 0.25 )), rich (" ‾" , offset = (- 0.85 , 0.25 )))
164157Γfun = rich (Γstr, rich (" (" , 𝒓, " )" , offset = (0.4 , 0 )))
165158# Qstr = rich("Q", font = :italic)
166159ℰstr = rich (" ℰ" , rich (" ‾" , offset = (- 0.5 , 0.15 )))
167160# Q10 = rich(Qstr, "(0.1)")
168161# Q50 = rich(Qstr, "(0.5)")
169- rowlabels = (rich (" Mean time, " , Γfun), rich (" Median, " , ℰstr, " = 50 %" ), rich (" 10th percentile, " , ℰstr, " = 90 %" ))
162+ # rowlabels = (rich("Mean time, ", Γfun), rich("Median time (", ℰstr, " = 50 %)"), rich("10th percentile time (", ℰstr, " = 90 %)"))
163+ rowlabels = (rich (" Mean time, " , Γfun), rich (" Median time (" , ℰstr, " = 50 %)" ), rich (" 10th %ile time (" , ℰstr, " = 90 %)" ))
164+ # rowlabels = (rich("Mean time, ", Γfun), rich("Median time (", ℰstr, " = 50 %)"), rich("10 % time (", ℰstr, " = 90 %)"))
170165
171166
172167for (irow, (x2Dmean, x2Drange, text)) in enumerate (zip (datamean, datarange, rowlabels))
@@ -179,7 +174,7 @@ for (irow, (x2Dmean, x2Drange, text)) in enumerate(zip(datamean, datarange, rowl
179174 colormap = cgrad (colormap[1 : end - 1 ], categorical = true )
180175 colorrange = extrema (levels)
181176
182- axs[irow, icol] = ax = Axis (fig[irow, icol]; yticks, xticks, xtickformat, ytickformat)
177+ axs[irow, icol] = ax = Axis (fig[irow, icol]; yticks, xticks, xtickformat, ytickformat, aspect = DataAspect () )
183178
184179 contours[irow, icol] = if usecontourf
185180 plotcontourfmap! (ax, x2Dmean, gridmetrics; levels, colormap)
@@ -198,7 +193,7 @@ for (irow, (x2Dmean, x2Drange, text)) in enumerate(zip(datamean, datarange, rowl
198193 colormap = cgrad (colormap[1 : end - 1 ], categorical = true )
199194 colorrange = extrema (levels)
200195
201- axs[irow, icol] = ax = Axis (fig[irow, icol]; yticks, xticks, xtickformat, ytickformat)
196+ axs[irow, icol] = ax = Axis (fig[irow, icol]; yticks, xticks, xtickformat, ytickformat, aspect = DataAspect () )
202197
203198 contours[irow, icol] = if usecontourf
204199 plotcontourfmap! (ax, x2Drange, gridmetrics; levels, colormap)
@@ -214,7 +209,7 @@ for (irow, (x2Dmean, x2Drange, text)) in enumerate(zip(datamean, datarange, rowl
214209end
215210
216211
217- label = rich (" ensemble mean (years)" )
212+ label = rich (" ensemble mean $(time_window[ 4 : 7 ]) s characteristic timescales (years)" )
218213cb = Colorbar (fig[nrows + 1 , 1 ], contours[1 , 1 ]; label, vertical = false , flipaxis = false , ticks = 0 : 1000 : 3000 )
219214cb. width = Relative (2 / 3 )
220215
@@ -240,12 +235,18 @@ for (ax, label) in zip(axs, labels)
240235end
241236
242237# Label(fig[0, 1:2]; text = "$(time_window[4:7])s Seafloor Reemergence Time ($(length(members)) members)", fontsize = 24, tellwidth = false)
243- Label (fig[0 , 1 : 2 ]; text = " $(time_window[4 : 7 ]) s Characteristic Timescales of Reemergence ($(length (members)) members)$(yearly_str2) " , fontsize = 24 , tellwidth = false )
238+ # Label(fig[0, 1:2]; text = "$(time_window[4:7])s Characteristic Timescales of Reemergence ($(length(members)) members)$(yearly_str2)", fontsize = 24, tellwidth = false)
244239rowgap! (fig. layout, 10 )
245240colgap! (fig. layout, 10 )
246241
242+ colsize! (fig. layout, 1 , Aspect (1 , 2.0 ))
243+ colsize! (fig. layout, 2 , Aspect (1 , 2.0 ))
244+ resize_to_layout! (fig)
245+
247246# save plot
248247suffix = usecontourf ? " _ctrf" : " "
248+
249+
249250outputfile = joinpath (outputdir, " reemergencetime$(upwind_str) _$(κVdeep_str) _$(κH_str) _$(κVML_str)$(yearly_str) _$(time_window)$(suffix) .png" )
250251@info " Saving reemergencetime on sea floor as image file:\n $(outputfile) "
251252save (outputfile, fig)
@@ -255,7 +256,7 @@ save(outputfile, fig)
255256
256257
257258
258- # datamean = (Γout_ensemblemean, ℰ50_ensemblemean, ℰ10_ensemblemean )
259+ # datamean = (Γout_ensemblemean, τℰ50_ensemblemean, τℰ10_ensemblemean )
259260ikeep = .! isnan .(datamean[1 ]) .& (seafloorvalue (Z3D, wet3D) .> 3000 )
260261data = datamean[2 ][ikeep] ./ datamean[1 ][ikeep] .- 1
261262weights = Weights (gridmetrics. area2D[ikeep])
0 commit comments