Skip to content

Checking conservation with constant LAI#1629

Draft
kmdeck wants to merge 7 commits intomainfrom
kd/explicit_implicit_radiation
Draft

Checking conservation with constant LAI#1629
kmdeck wants to merge 7 commits intomainfrom
kd/explicit_implicit_radiation

Conversation

@kmdeck
Copy link
Copy Markdown
Member

@kmdeck kmdeck commented Feb 9, 2026

Background

A previous PR made it possible to compute certain fluxes using the values of the state at the current step (explicit) and others with fluxes computed using the state (of implicit variables) at the next step.

The soil boundary fluxes should be explicit
The snow boundary fluxes should be explicit
All interaction fluxes should be explicit (root extraction, eg)
Canopy SHF, LHF, LW_n needs to be implicit (evaluated with T_canopy at next step).

Note that soil prognostic vars are implicit, so the implicit state also includes T_soil computed from rhoe_int.

Our goal is to make it so the fluxes stored in the cache are consistent with the fluxes being used as boundary conditions for soil/canopy/snow. This should enable enforcing conservation.

Purpose

(1) Split radiation updates into LW and SW pieces. This is because LW pieces require being part of the implicit tendency for the canopy, and require knowledge about other components in the land model, while SW can be explicit for all components.
(2) Split radiation updates into explicit and implicit updates
(3) Unify sign convention for radiation: LW_n and SW_n are positive if upwards. This required a change in the canopy and in the canopy.soil model

If we want to change the sign convention later on, we can, but for now this makes all land components consistent

To-do

Content


  • I have read and checked the items on the review checklist.

Comment thread src/integrated/land.jl
@kmdeck kmdeck force-pushed the kd/explicit_implicit_radiation branch from bcf4e50 to 1ce9a71 Compare February 11, 2026 23:55
Comment thread src/integrated/land.jl
Comment thread src/integrated/land.jl
Comment thread src/integrated/land.jl
T_canopy = ClimaLand.Canopy.canopy_temperature(canopy.energy, canopy, Y, p)

ϵ_soil = land.soil.parameters.emissivity
T_soil = ClimaLand.Domains.top_center_to_surface(p.soil.T)
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is technically T_soil at the next step

Comment thread src/integrated/land.jl
ϵ_canopy * LW_u_snow * p.snow.snow_cover_fraction
) # area weighted by snow cover fraction, OK

@. LW_u =
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As long as this is defined this way, I think we should have conservation with atmos

@kmdeck kmdeck force-pushed the kd/explicit_implicit_radiation branch from a793d82 to 581bd24 Compare February 18, 2026 16:58
@kmdeck kmdeck force-pushed the kd/explicit_implicit_radiation branch 2 times, most recently from 3a4c0ce to a4309b8 Compare March 17, 2026 22:24
@kmdeck kmdeck force-pushed the kd/explicit_implicit_radiation branch from 8fb40fc to cab64e6 Compare March 19, 2026 23:13
@kmdeck kmdeck force-pushed the kd/explicit_implicit_radiation branch from cab64e6 to 1ddd118 Compare March 19, 2026 23:16
@kmdeck kmdeck changed the title Kd/explicit implicit radiation Checking conservation with constant LAI Mar 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consistency in fluxes and setting radiative properties of land

1 participant