Skip to content

Commit e1e64ba

Browse files
Merge branch 'ss-nc/fix-climatoloy-experiment' of github.com:CliMA/ClimaOcean.jl into ss-nc/fix-climatoloy-experiment
2 parents 33a7d7f + b5dfad2 commit e1e64ba

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

experiments/flux_climatology/flux_climatology.jl

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ ClimaOcean.DataWrangling.dataset_defaults.FloatType = Float64
2626
#####
2727

2828
struct FluxStatistics{F}
29+
flux :: F
2930
mean :: F
3031
meansq :: F
3132
std :: F
@@ -46,29 +47,31 @@ function FluxStatistics(f::Field)
4647
fill!(max, 0)
4748
fill!(min, 0)
4849

49-
return FluxStatistics(mean, meansq, std, max, min)
50+
return FluxStatistics(f, mean, meansq, std, max, min)
5051
end
5152

52-
Adapt.adapt_structure(to, f::FluxStatistics) = FluxStatistics(Adapt.adapt(to, f.mean),
53+
Adapt.adapt_structure(to, f::FluxStatistics) = FluxStatistics(Adapt.adapt(to, f.flux),
54+
Adapt.adapt(to, f.mean),
5355
Adapt.adapt(to, f.meansq),
5456
Adapt.adapt(to, f.std),
5557
Adapt.adapt(to, f.max),
5658
Adapt.adapt(to, f.min))
5759

58-
on_architecture(arch, f::FluxStatistics) = FluxStatistics(on_architecture(arch, f.mean),
60+
on_architecture(arch, f::FluxStatistics) = FluxStatistics(on_architecture(arch, f.flux),
61+
on_architecture(arch, f.mean),
5962
on_architecture(arch, f.meansq),
6063
on_architecture(arch, f.std),
6164
on_architecture(arch, f.max),
6265
on_architecture(arch, f.min))
6366

64-
function update_stats!(stats::FluxStatistics, flux, iteration)
67+
function update_stats!(stats::FluxStatistics, iteration)
6568
grid = flux.grid
6669
arch = architecture(grid)
67-
launch!(arch, grid, :xy, _update_stats!, stats, flux, iteration)
70+
launch!(arch, grid, :xy, _update_stats!, stats, iteration)
6871
return nothing
6972
end
7073

71-
@kernel function _update_stats!(stats, flux, iteration)
74+
@kernel function _update_stats!(stats, iteration)
7275
i, j = @index(Global, NTuple)
7376

7477
inverse_iteration = 1 / (iteration + 1)
@@ -77,7 +80,7 @@ end
7780
# mean_n = (x1 + ... + xn) / n ->
7881
# -> mean_{n+1} = mean_n * (1 - 1/(n+1)) * x_{n+1} / (n+1)
7982
@inbounds begin
80-
f = flux[i, j, 1]
83+
f = stats.flux[i, j, 1]
8184
stats.mean[i, j, 1] *= 1 - inverse_iteration
8285
stats.mean[i, j, 1] += f * inverse_iteration
8386
stats.meansq[i, j, 1] *= 1 - inverse_iteration
@@ -107,12 +110,12 @@ function compute_flux_climatology(earth)
107110

108111
function update_flux_stats!(earth)
109112
iteration = earth.model.clock.iteration
110-
update_stats!(τx, net_fluxes.u, iteration)
111-
update_stats!(τy, net_fluxes.v, iteration)
112-
update_stats!(Jᵀ, net_fluxes.T, iteration)
113-
update_stats!(Jˢ, net_fluxes.S, iteration)
114-
update_stats!(Qc, atmos_ocean_fluxes.sensible_heat, iteration)
115-
update_stats!(Qv, atmos_ocean_fluxes.latent_heat, iteration)
113+
update_stats!(τx, iteration)
114+
update_stats!(τy, iteration)
115+
update_stats!(Jᵀ, iteration)
116+
update_stats!(Jˢ, iteration)
117+
update_stats!(Qc, iteration)
118+
update_stats!(Qv, iteration)
116119

117120
return nothing
118121
end

0 commit comments

Comments
 (0)