8888 # -> mean_{n+1} = mean_n * (1 - 1/(n+1)) * x_{n+1} / (n+1)
8989 @inbounds begin
9090 f = stats. flux[i, j, 1 ]
91- stats. mean[i, j, 1 ] *= 1 - inverse_iteration
92- stats. mean[i, j, 1 ] += f * inverse_iteration
91+ stats. mean[i, j, 1 ] *= 1 - inverse_iteration
92+ stats. mean[i, j, 1 ] += f * inverse_iteration
9393 stats. meansq[i, j, 1 ] *= 1 - inverse_iteration
9494 stats. meansq[i, j, 1 ] += f^ 2 * inverse_iteration
95- stats. std[i, j, 1 ] = sqrt (stats. meansq[i, j, 1 ] - stats. mean[i, j, 1 ]^ 2 )
9695 stats. max[i, j, 1 ] = max (stats. max[i, j, 1 ], f)
9796 stats. min[i, j, 1 ] = min (stats. min[i, j, 1 ], f)
9897 end
@@ -112,8 +111,11 @@ function compute_flux_climatology(earth)
112111 atmos_ocean_fluxes = earth. model. interfaces. atmosphere_ocean_interface. fluxes
113112 Qc = FluxStatistics (atmos_ocean_fluxes. sensible_heat)
114113 Qv = FluxStatistics (atmos_ocean_fluxes. latent_heat)
114+ Qu = FluxStatistics (atmos_ocean_fluxes. upwelling_longwave)
115+ Qs = FluxStatistics (atmos_ocean_fluxes. downwelling_shortwave)
116+ Qℓ = FluxStatistics (atmos_ocean_fluxes. downwelling_longwave)
115117
116- stats = (; τx, τy, Jᵀ, Jˢ, Qc, Qv)
118+ stats = (; τx, τy, Jᵀ, Jˢ, Qc, Qv, Qu, Qs, Qℓ )
117119
118120 function update_flux_stats! (earth)
119121 iteration = earth. model. clock. iteration
@@ -163,9 +165,9 @@ dataset = ECCO4Monthly()
163165arch = CPU ()
164166
165167start_date = DateTime (1992 , 1 , 1 )
166- end_date = DateTime (1992 , 12 , 31 )
168+ end_date = DateTime (1992 , 1 , 2 )
167169
168- stop_time = Day (end_date - start_date). value * Oceananigans. Units. days
170+ stop_time = Day (end_date - start_date). value * Oceananigans. Units. days
169171
170172time_indices_in_memory = 13
171173
@@ -179,11 +181,16 @@ v = FieldTimeSeries(v_meta, arch; time_indices_in_memory)
179181T = FieldTimeSeries (T_meta, arch; time_indices_in_memory)
180182S = FieldTimeSeries (S_meta, arch; time_indices_in_memory)
181183
182- grid = ECCO . ECCO_immersed_grid (arch)
184+ grid = u . grid
183185
184186ocean_model = PrescribedOcean ((; u, v, T, S); grid)
185187ocean = Simulation (ocean_model; Δt= 3 hours, stop_time)
186188
189+ set! (ocean_model. tracers. T, first (T_meta))
190+ set! (ocean_model. tracers. S, first (S_meta))
191+ set! (ocean_model. velocities. u, first (u_meta))
192+ set! (ocean_model. velocities. v, first (v_meta))
193+
187194# ####
188195# #### Need to extend a couple of methods
189196# ####
262269add_callback! (earth, progress, IterationInterval (16 ))
263270
264271stats = compute_flux_climatology (earth)
272+
273+ Qtecco = Metadata (:net_heat_flux ; start_date, end_date, dataset)
274+ Qcecco = Metadata (:sensible_heat_flux ; start_date, end_date, dataset)
275+ Qvecco = Metadata (:latent_heat_flux ; start_date, end_date, dataset)
276+ Qℓecco = Metadata (:upwelling_longwave ; start_date, end_date, dataset)
277+ Qsecco = Metadata (:downwelling_shortwave ; start_date, end_date, dataset)
278+
279+ Qℓecco = FieldTimeSeries (Qℓecco, arch; time_indices_in_memory)
280+ Qtecco = FieldTimeSeries (Qtecco, arch; time_indices_in_memory)
281+ Qcecco = FieldTimeSeries (Qcecco, arch; time_indices_in_memory)
282+ Qvecco = FieldTimeSeries (Qvecco, arch; time_indices_in_memory)
283+ Qsecco = FieldTimeSeries (Qsecco, arch; time_indices_in_memory)
284+
285+ Q̄tecco = Field {Center, Center, Nothing} (Qtecco. grid)
286+ Q̄cecco = Field {Center, Center, Nothing} (Qtecco. grid)
287+ Q̄vecco = Field {Center, Center, Nothing} (Qtecco. grid)
288+ Q̄ℓecco = Field {Center, Center, Nothing} (Qtecco. grid)
289+ Q̄secco = Field {Center, Center, Nothing} (Qtecco. grid)
290+
291+ for i in 1 : length (Qtecco. times)
292+ Q̄tecco .+ = Qtecco[i] ./ length (Qtecco. times)
293+ Q̄cecco .+ = Qcecco[i] ./ length (Qcecco. times)
294+ Q̄vecco .+ = Qvecco[i] ./ length (Qvecco. times)
295+ Q̄ℓecco .+ = Qℓecco[i] ./ length (Qℓecco. times)
296+ Q̄secco .+ = Qsecco[i] ./ length (Qsecco. times)
297+ end
0 commit comments