Skip to content

Commit c3fcb2c

Browse files
committed
update land energy/water conservation functions
1 parent eb8d2dd commit c3fcb2c

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

experiments/ClimaEarth/components/land/climaland_integrated.jl

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,13 +389,37 @@ Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:area_fraction}) = sim.area
389389
Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:beta}) =
390390
CL.surface_evaporative_scaling(sim.model, sim.integrator.u, sim.integrator.p)
391391
Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:emissivity}) = sim.integrator.p.ϵ_sfc
392-
Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:energy}) = CL.total_energy(sim.integrator.u, sim.integrator.p)
393392
Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:surface_direct_albedo}) =
394393
CL.surface_albedo(sim.model, sim.integrator.u, sim.integrator.p)
395394
Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:surface_diffuse_albedo}) =
396395
CL.surface_albedo(sim.model, sim.integrator.u, sim.integrator.p)
397-
Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:water}) = CL.total_water(sim.integrator.u, sim.integrator.p)
398396
Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:surface_temperature}) = sim.integrator.p.T_sfc
397+
function Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:energy}, level)
398+
surface_field = similar(sim.integrator.p.soil.sfc_scratch)
399+
return sum(
400+
CL.total_energy_per_area!(
401+
surface_field,
402+
sim.model,
403+
sim.integrator.u,
404+
sim.integrator.p,
405+
sim.integrator.t,
406+
sim.integrator.p.soil.sfc_scratch,
407+
),
408+
)
409+
end
410+
function Interfacer.get_field(sim::ClimaLandSimulation, ::Val{:water}, level)
411+
surface_field = similar(sim.integrator.p.soil.sfc_scratch)
412+
return sum(
413+
CL.total_liq_water_vol_per_area!(
414+
surface_field,
415+
sim.model,
416+
sim.integrator.u,
417+
sim.integrator.p,
418+
sim.integrator.t,
419+
sim.integrator.p.soil.sfc_scratch,
420+
),
421+
)
422+
end
399423

400424
# Update fields stored in land model sub-components
401425
function Interfacer.update_field!(sim::ClimaLandSimulation, ::Val{:area_fraction}, field)

0 commit comments

Comments
 (0)