ESCOMP / CTSM

Community Terrestrial Systems Model (includes the Community Land Model of CESM)
http://www.cesm.ucar.edu/models/cesm2.0/land/
Other
309 stars 313 forks source link

Snow depth increase due to inconsistent snow cover fraction calculation #573

Closed kjetilaas closed 5 years ago

kjetilaas commented 5 years ago

Brief summary of bug

In the presence of surface water, the old and new snow cover fractions are inconsistently calculated in subroutine "SnowCompaction". This can result in significant negative compaction (snow depth increase) during snow melt.

General bug information

CTSM version you are using: Probably All (last version I have tested is release-clm5.0.8)

Does this bug cause significantly incorrect results in the model's science? Yes

Details of bug

There is an inconsistency in the calculation of snow cover fraction (FSNO) in the SnowCompaction subroutine when there is surface water present. The actual snow cover is limited to 0.99 when surface water is present (and the surface water fraction is set to 0.01). However, SnowCompaction recalculates the old FSNO without accounting for this limitation. This results in an apparent decrease in FSNO, and corresponding negative snow compaction from snow melt (ddz3).

This can result in substantial, artificial increase in snow depth during summer (can be more than 0.5 m during a single season).

The problem might be masked in monthly output, but could be significant whenever snow cover is close to 1 and surface water present. Snow mass is indirectly affected by this as radiation and temperature fluxes in the snow pack will be affected by artificially thick snow layers.

swensosc commented 5 years ago

It looks like the limitation to ensure non-zero fh2osfc needs to be taken into account in snowcompaction. I will test a fix and try to get this corrected.

billsacks commented 5 years ago

@lvankampenhout calling your attention to this

swensosc commented 5 years ago

I've created a branch with a simple fix to the calculation of fsno_melt: https://github.com/swensosc/ctsm/tree/snowcompaction_573. @kjetilaas can you check whether this corrects the behavior you noticed?

kjetilaas commented 5 years ago

This fix seems to work (after also addding "frac_h2osfc" to the subroutine).

I have just tested this for a single point (flat, high-Arctic location). Here the "snowdp" is reduced with up to 85 cm during snow melt. This is probably an extreme case, but it seems this fix is important. Interestingly, the snow water eq. ("h2osno") is generally larger after the fix (i.e. less snow melt). So somehow the artificially lage "snowdp" is enhancing snow melt.

lvankampenhout commented 5 years ago

In the past we've seen unrealistic sub-surface melt in Antarctica, caused by too low values for snow density, which inhibits heat conduction and thereby trapping heat until melting starts. Larger values for snow density/thermal conductivity fixed this. This would also provide an explanaition to what you are seeing @kjetilaas

Just checking: this bug should not impact glacier landunits right, because glacier does not allow surface water?

kjetilaas commented 5 years ago

This issue was solved with a small correction in the snow compaction code, which I pointed out and @swensosc provided a fix for. I am not sure why this has not been included in the new releases, but it seems to me to be a clear bug. I am sure snow density parameters might be worth looking closer at also in my simulations, but it was not the source of this unphysical snow behaviour.

About the glaciated landunits, I agree that these should not be affected, and I cannot see any change in these areas with the correction.

billsacks commented 5 years ago

@lvankampenhout My understanding is also that glacier landunits should not be affected.

@kjetilaas sorry that we lost track of this issue! Before we bring this to master, we need to check its impact in a global run. @swensosc will do the necessary run soon.

billsacks commented 5 years ago

From @swensosc 's run of the diagnostics package, looked at with @olyson

billsacks commented 5 years ago

@kjetilaas and others: this is fixed on master (in ctsm1.0.dev047). We probably will not fix it on the release-clm5.0 branch, in order to avoid changing answers on that branch.

adamrher commented 4 years ago

Hi @kjetilaas, cc @lvankampenhout

In the NorESM2 paper just out in GMD, it seems a more general fix was used to deal with snow lingering around in the summer in arctic regions:

Screen Shot 2020-02-12 at 2 11 43 PM

Do you have any information on why NorESM decided to go that route, despite having fixed the issue that is the topic of this thread?

I am having trouble understanding why snowpack around the Greenland coasts are not completely melting away by the end of summer ... If you can, would you mind pointing me to the CLM code mods that is referred to in that paper. i.e., send the surface water pool to run-off when it freezes? I am curious to see if this has a large effect using the current code base.

kjetilaas commented 4 years ago

Hi @adamrher, cc @lvankampenhout,

The modification described the NorESM2 paper was made before we found the actual bug reported here. The bug fix never made it into the NorESM code used for CMIP6. Although both the actual bug and the modification to NorESM are related to surface water, they are really two separate things, and the NorESM fix mitigated the snow depth bug only to a limited extent.

So, I would definitely include the fix in this tread in your simulations. What to do with freezing surface water is less clear. Ideally, I think this variable should also have a frozen state which is not snow. Both during spring (initial melt) and during fall (when surface water start freezing), I think it could be problematic to move this water to snow, which has very different thermal and radiative properties than for instance lake ice. The NorESM solution is not ideal either, but could be worth testing. You will find the code her (only the change to SoilHydrologyMod is related to this issue): https://github.com/NorESMhub/CTSM/commit/ed7194d338097ea1cd8f4ab067e01abd1c1b260e

You could also try to write QH2OSFC_TO_ICE to history file (not an output by default I think), to see if this is actually a significant flux in your simulations. Your issue could also just be a cold or wet bias in your forcing.

adamrher commented 4 years ago

Thanks for all this info @kjetilaas. You make a good point about potential thermodynamic inconsistencies of treating a frozen surface water pool as snow pack.

I'm using a fairly up to date clm tag ctsm1.0.dev071, and it seems that a lot more of SoilHydrologyMod has since been modularized into their own subroutines ... so it took some time translating your code fix into the current code base, but I managed to do it. I'll be playing around with this and If I see something worth sharing, I'll loop you in. At first glance, there are no obvious, glaring sensitivities to this fix.