Skip to content

Commit 0a04724

Browse files
authored
remove two cache variables (#1177)
1 parent 2ad562d commit 0a04724

File tree

4 files changed

+35
-101
lines changed

4 files changed

+35
-101
lines changed

experiments/integrated/fluxnet/snow_soil/simulation.jl

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,41 @@ _ρ_i = FT(LP.ρ_cloud_ice(earth_param_set))
253253
_ρ_l = FT(LP.ρ_cloud_liq(earth_param_set))
254254
fig = Figure(size = (1600, 1200), fontsize = 26)
255255
ax1 = Axis(fig[2, 1], ylabel = "ΔEnergy (J/A)", xlabel = "Days")
256+
function compute_surface_energy_fluxes(p)
257+
ρe_flux_falling_snow =
258+
Snow.volumetric_energy_flux_falling_snow(atmos, p, land.snow.parameters)
259+
ρe_flux_falling_rain =
260+
Snow.volumetric_energy_flux_falling_rain(atmos, p, land.snow.parameters)
261+
262+
return @. (1 - p.snow.snow_cover_fraction) * (
263+
p.soil.turbulent_fluxes.lhf +
264+
p.soil.turbulent_fluxes.shf +
265+
p.soil.R_n
266+
) +
267+
p.snow.snow_cover_fraction * (
268+
p.snow.turbulent_fluxes.lhf +
269+
p.snow.turbulent_fluxes.shf +
270+
p.snow.R_n +
271+
ρe_flux_falling_rain
272+
) +
273+
ρe_flux_falling_snow
274+
end
275+
276+
function compute_surface_water_vol_fluxes(p)
277+
return @. p.drivers.P_snow +
278+
p.drivers.P_liq +
279+
(1 - p.snow.snow_cover_fraction) * (
280+
p.soil.turbulent_fluxes.vapor_flux_liq +
281+
p.soil.turbulent_fluxes.vapor_flux_ice
282+
) +
283+
p.snow.snow_cover_fraction * p.snow.turbulent_fluxes.vapor_flux
284+
end
285+
256286
ΔE_expected =
257287
cumsum(
258288
-1 .* [
259289
parent(
260-
sv.saveval[k].atmos_energy_flux .-
290+
compute_surface_energy_fluxes(sv.saveval[k]) .-
261291
sv.saveval[k].soil.bottom_bc.heat,
262292
)[end] for k in 1:1:(length(sv.t) - 1)
263293
],
@@ -270,7 +300,7 @@ E_measured = [
270300
cumsum(
271301
-1 .* [
272302
parent(
273-
sv.saveval[k].atmos_water_flux .-
303+
compute_surface_water_vol_fluxes(sv.saveval[k]) .-
274304
sv.saveval[k].soil.bottom_bc.water .+ sv.saveval[k].soil.R_s,
275305
)[end] for k in 1:1:(length(sv.t) - 1)
276306
],

src/integrated/land.jl

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,6 @@ lsm_aux_vars(m::LandModel) = (
213213
:scratch3,
214214
:excess_water_flux,
215215
:excess_heat_flux,
216-
:atmos_energy_flux,
217-
:atmos_water_flux,
218216
:ground_heat_flux,
219217
:effective_soil_sfc_T,
220218
:sfc_scratch,
@@ -250,8 +248,6 @@ lsm_aux_types(m::LandModel{FT}) where {FT} = (
250248
FT,
251249
FT,
252250
FT,
253-
FT,
254-
FT,
255251
NamedTuple{(:PAR, :NIR), Tuple{FT, FT}},
256252
)
257253

@@ -274,8 +270,6 @@ lsm_aux_domain_names(m::LandModel) = (
274270
:surface,
275271
:surface,
276272
:surface,
277-
:surface,
278-
:surface,
279273
:subsurface,
280274
:surface,
281275
:surface,
@@ -362,34 +356,6 @@ function make_update_boundary_fluxes(
362356
update_canopy_bf!(p, Y, t)
363357
# Update soil CO2
364358
update_soilco2_bf!(p, Y, t)
365-
366-
# compute net flux with atmosphere, this is useful for monitoring conservation
367-
_LH_f0 = FT(LP.LH_f0(earth_param_set))
368-
_ρ_liq = FT(LP.ρ_cloud_liq(earth_param_set))
369-
ρe_falling_snow = -_LH_f0 * _ρ_liq # per unit vol of liquid water
370-
@. p.atmos_energy_flux =
371-
(1 - p.snow.snow_cover_fraction) * (
372-
p.soil.turbulent_fluxes.lhf + p.soil.turbulent_fluxes.shf -
373-
p.soil.R_n
374-
) +
375-
p.snow.snow_cover_fraction * (
376-
p.snow.turbulent_fluxes.lhf + p.snow.turbulent_fluxes.shf -
377-
p.snow.R_n
378-
) +
379-
p.drivers.P_snow * ρe_falling_snow +
380-
p.canopy.turbulent_fluxes.shf +
381-
p.canopy.turbulent_fluxes.lhf - p.canopy.radiative_transfer.SW_n -
382-
p.canopy.radiative_transfer.LW_n
383-
@. p.atmos_water_flux =
384-
p.drivers.P_snow +
385-
p.drivers.P_liq +
386-
(1 - p.snow.snow_cover_fraction) * (
387-
p.soil.turbulent_fluxes.vapor_flux_liq +
388-
p.soil.turbulent_fluxes.vapor_flux_ice
389-
) +
390-
p.snow.snow_cover_fraction * p.snow.turbulent_fluxes.vapor_flux +
391-
p.canopy.turbulent_fluxes.transpiration
392-
393359
end
394360
return update_boundary_fluxes!
395361
end

src/integrated/soil_snow_model.jl

Lines changed: 3 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ included in the integrated Soil-Snow model.
107107
lsm_aux_vars(m::SoilSnowModel) = (
108108
:excess_water_flux,
109109
:excess_heat_flux,
110-
:atmos_energy_flux,
111-
:atmos_water_flux,
112110
:ground_heat_flux,
113111
:effective_soil_sfc_T,
114112
:sfc_scratch,
@@ -121,26 +119,16 @@ lsm_aux_vars(m::SoilSnowModel) = (
121119
The types of the additional auxiliary variables that are
122120
included in the integrated Soil-Snow model.
123121
"""
124-
lsm_aux_types(m::SoilSnowModel{FT}) where {FT} =
125-
(FT, FT, FT, FT, FT, FT, FT, FT, FT)
122+
lsm_aux_types(m::SoilSnowModel{FT}) where {FT} = (FT, FT, FT, FT, FT, FT, FT)
126123

127124
"""
128125
lsm_aux_domain_names(m::SoilSnowModel)
129126
130127
The domain names of the additional auxiliary variables that are
131128
included in the integrated Soil-Snow model.
132129
"""
133-
lsm_aux_domain_names(m::SoilSnowModel) = (
134-
:surface,
135-
:surface,
136-
:surface,
137-
:surface,
138-
:surface,
139-
:surface,
140-
:surface,
141-
:subsurface,
142-
:surface,
143-
)
130+
lsm_aux_domain_names(m::SoilSnowModel) =
131+
(:surface, :surface, :surface, :surface, :surface, :subsurface, :surface)
144132

145133
"""
146134
make_update_boundary_fluxes(
@@ -191,31 +179,6 @@ function make_update_boundary_fluxes(
191179
# Now we can update the soil BC, and use the excess fluxes there in order
192180
# to conserve energy and water
193181
update_soil_bf!(p, Y, t)
194-
195-
# compute net flux with atmosphere, this is useful for monitoring conservation
196-
_LH_f0 = FT(LP.LH_f0(earth_param_set))
197-
_ρ_liq = FT(LP.ρ_cloud_liq(earth_param_set))
198-
ρe_falling_snow = -_LH_f0 * _ρ_liq # per unit vol of liquid water
199-
@. p.atmos_energy_flux =
200-
(1 - p.snow.snow_cover_fraction) * (
201-
p.soil.turbulent_fluxes.lhf +
202-
p.soil.turbulent_fluxes.shf +
203-
p.soil.R_n
204-
) +
205-
p.snow.snow_cover_fraction * (
206-
p.snow.turbulent_fluxes.lhf +
207-
p.snow.turbulent_fluxes.shf +
208-
p.snow.R_n
209-
) +
210-
p.drivers.P_snow * ρe_falling_snow
211-
@. p.atmos_water_flux =
212-
p.drivers.P_snow +
213-
p.drivers.P_liq +
214-
(1 - p.snow.snow_cover_fraction) * (
215-
p.soil.turbulent_fluxes.vapor_flux_liq +
216-
p.soil.turbulent_fluxes.vapor_flux_ice
217-
) +
218-
p.snow.snow_cover_fraction * p.snow.turbulent_fluxes.vapor_flux
219182
return nothing
220183
end
221184
return update_boundary_fluxes!

test/integrated/soil_snow.jl

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,6 @@ p_soil_alone = deepcopy(p)
9595
for lsm_aux_var in (
9696
:excess_water_flux,
9797
:excess_heat_flux,
98-
:atmos_energy_flux,
99-
:atmos_water_flux,
10098
:ground_heat_flux,
10199
:effective_soil_sfc_T,
102100
:sfc_scratch,
@@ -184,29 +182,6 @@ dY_soil_snow = deepcopy(Y) .* 0
184182
ClimaLand.source!(dY_soil_snow, src, Y, p, land_model.soil)
185183
@test all(parent(dY_soil_snow.soil.θ_i) .≈ 0)
186184

187-
# Check conservation
188-
@test p.atmos_water_flux == @. p.drivers.P_snow +
189-
p.drivers.P_liq +
190-
(1 - p.snow.snow_cover_fraction) * (
191-
p.soil.turbulent_fluxes.vapor_flux_liq +
192-
p.soil.turbulent_fluxes.vapor_flux_ice
193-
) +
194-
p.snow.snow_cover_fraction * p.snow.turbulent_fluxes.vapor_flux
195-
196-
_LH_f0 = FT(LP.LH_f0(earth_param_set))
197-
_ρ_liq = FT(LP.ρ_cloud_liq(earth_param_set))
198-
ρe_falling_snow = -_LH_f0 * _ρ_liq # per unit vol of liquid water
199-
@test p.atmos_energy_flux == @. (1 - p.snow.snow_cover_fraction) * (
200-
p.soil.turbulent_fluxes.lhf +
201-
p.soil.turbulent_fluxes.shf +
202-
p.soil.R_n
203-
) +
204-
p.snow.snow_cover_fraction * (
205-
p.snow.turbulent_fluxes.lhf +
206-
p.snow.turbulent_fluxes.shf +
207-
p.snow.R_n
208-
) +
209-
p.drivers.P_snow * ρe_falling_snow
210185
# Make sure soil boundary flux method also worked
211186
G = deepcopy(p.ground_heat_flux)
212187
p_snow_alone = deepcopy(p)

0 commit comments

Comments
 (0)