Skip to content

Commit ac25d0a

Browse files
add some fluxes
1 parent 60969bc commit ac25d0a

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

experiments/flux_climatology/flux_climatology.jl

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,10 @@ end
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()
163165
arch = CPU()
164166

165167
start_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

170172
time_indices_in_memory = 13
171173

@@ -179,11 +181,16 @@ v = FieldTimeSeries(v_meta, arch; time_indices_in_memory)
179181
T = FieldTimeSeries(T_meta, arch; time_indices_in_memory)
180182
S = FieldTimeSeries(S_meta, arch; time_indices_in_memory)
181183

182-
grid = ECCO.ECCO_immersed_grid(arch)
184+
grid = u.grid
183185

184186
ocean_model = PrescribedOcean((; u, v, T, S); grid)
185187
ocean = Simulation(ocean_model; Δt=3hours, 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
#####
@@ -262,3 +269,29 @@ end
262269
add_callback!(earth, progress, IterationInterval(16))
263270

264271
stats = 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

Comments
 (0)