Open billsacks opened 6 years ago
I talked briefly with @olyson about this. He didn't have any immediate thoughts, but suggested:
We might want to do some simulations looking at the impact of treating this in different possible ways, as an aid to making this decision.
We might want to consider what would happen under 2 or 4xCO2 - where glacial melt would be greater.
We might want to look more closely at how big of an impact this is having in the current CESM2 runs (or maybe that was just my thought).
(There may have been one other suggestion, too – @olyson , please chime in if you remember any of your other thoughts.)
I have talked with @dlawrenncar @olyson @whlipscomb and others about this over the last few days. Here is a summary of these discussions:
Recall that, with snow capping, in regions where ice runoff is converted to liquid, we have:
snow capping -> ice runoff -> liquid runoff & -SH
It turns out that, in regions where this behavior is combined with the behavior of having glacial melt runoff, we also have:
ice melt -> +liquid runoff & -ice runoff Then: -ice runoff -> -liquid runoff & +SH
On net, then, ice melt -> +SH
Dave Lawrence points out that the final, net result is that we're just not letting the glacial column melt, and are taking the energy that is trying to melt it and sending it back to the atmosphere as a sensible heat flux. This is similar to treating glacier as soil for the sake of these energy fluxes, except that all of the energy goes back as SH, rather than LW radiation, etc.
Keith Oleson showed plots of July SH showing that this is mainly a problem in very warm runs, e.g., 4xCO2. In the 4xCO2 run, the SH from this conversion flux can be a few times as large as the background SH flux.
Dave, Keith and I discussed the possibility of doing something else with this negative ice runoff; for example:
We decided that the best solution is to rework the glacier regions so there's no instance of this combination of behaviors (glacier_region_melt_behavior = replaced_by_ice, glacier_region_ice_runoff_behavior = melted). Specifically, we will remove the small region that is currently defined as being within the CISM domain but outside Greenland itself, treating that region as we do the rest of the world outside of Greenland and Antarctica. This means that we won't be computing SMB over quite the whole CISM domain – instead, we'll always send 0 SMB from Ellesmere island and other places that are within the CISM domain but outside of Greenland.
Members of the LIWG are happy with this solution.
The current Greenland GLACIER_REGION on the surface datasets seems as good as anything for this purpose: it was created to be consistent with CISM's default 4-km input file, treating everything that CISM considers land or ice-covered to be within this region.
I might do this in multiple stages:
Keep the current GLACIER_REGION, but change the behavior of the in-CISM-outside-Greenland region to be virtual, remains_in_place, melted. The reason for keeping this virtual for now is (a) to avoid needing to interpolate initial conditions, and (b) to avoid even more answer changes. This would also avoid the need for recreating all surface datasets now. However, I may want to put in place all of the necessary code mods while they're fresh in my head, and do some testing with (2).
Change this region's glacier_region_behavior to "single" – so it's now single, remains_in_place, melted, just like most of the world.
Remake surface datasets with 3 rather than 4 glacier regions. This should be bit-for-bit with (2).
Note that, once we get to stage (2), there would be a small part of the CISM domain that no longer has virtual columns. We'll need to be careful to ensure that we don't try to change glacier cover within that region - i.e., we'll need to make sure that we only update glacier cover in places that are both (a) within CISM's "icemask", and (b) have "virtual" behavior. (Previously we did this by ensuring that all grid cells within the icemask had virtual behavior; this will no longer be possible so we'll need to update the logic to handle this.)
Similarly, in glc2lndMod, we'll need to change update_glc2lnd_dyn_runoff_routing to not just set glc_dyn_runoff_routing_grc = icemask_coupled_fluxes_grc – but instead to take into account glacier behavior: wherever we're not computing SMB, we should set glc_dyn_runoff_routing_grc = 0.
@billsacks, Thanks for the summary. Your multiple-stages plan makes sense to me. Please let me know if any CISM changes would be helpful, in either the short or longer term.
Is it a problem that conversion of snow capping to liquid also operates on negative snow capping fluxes?
@lvankampenhout raised this question by email; I am moving this discussion to here to get broader feedback. For now I'm bringing @dlawrenncar @olyson @whlipscomb into the loop; we may want to bring others into the loop, too.
It's important to note that Leo's analysis was done on a run where he had accidentally set up the glacier regions so that all of Greenland had
glacier_region_ice_runoff_behavior = 'melted'
. In out-of-the-box cases, Greenland itself hasglacier_region_ice_runoff_behavior = 'remains_ice'
, and I think the problem he's seeing only would occur in the region of the world that is part of the CISM domain but outside Greenland itself (this includes the Canadian archipelago and some other small land areas).Here's Leo's email:
I agree with Leo's sense that this is probably due to the negative ice runoff term that can be generated in some cases. This negative ice runoff term can appear over glacier columns that have
glacier_region_melt_behavior = 'replaced_by_ice'
, and the SH flux in question can appear over glacier columns that haveglacier_region_ice_runoff_behavior = 'melted'
. Out-of-the-box, the only area that has both of these behaviors is the relatively small land area that is within the CISM domain but outside of Greenland itself (including the Canadian archipelago and some other small areas). So in a global sense, this may not be hugely important out-of-the-box – although the areas affected may be important for sea ice, and also note that users are free to set up these glacier region behaviors however they want (so some users' runs may have larger affected regions).It's hard to know what the "right" thing is to do here, since this arises from the interaction of two non-physical terms. On an annual-average basis, for a system near steady state, I can convince myself that the current behavior (where negative ice runoff is converted to negative liquid runoff and a positive sensible heat flux) is "correct" in some sense: Just as we need the negative ice runoff – in order to compensate for too-large positive ice runoff at other times and places, and in order to conserve energy, as noted in https://github.com/ESCOMP/ctsm/blob/fd7a88a1a052014c5c9efafe7aa12ead3c2dfa5e/src/biogeophys/GlacierSurfaceMassBalanceMod.F90#L397-L425 – so, too, this positive SH flux can be seen as compensating for too large of a negative SH flux at other times and places. However, it may be that this positive SH flux causes problems in practice, such as the positive feedback that Leo suggests.
From a conservation standpoint, it would be just as fine to keep this negative ice runoff as ice, thus adding heat to the ocean rather than to the atmosphere. There would be some asymmetry here: positive ice runoff (from snow capping) extracts heat from the atmosphere, whereas negative ice runoff (generated during glacial melt) adds heat to the ocean. But, given that these are all somewhat non-physical fluxes anyway, I'm not sure that that asymmetry is inherently wrong. Implementing this asymmetry – if desired – should be fairly easy: we can either put the negative ice runoff in a term other than
qflx_ice_runoff_snwcp
in https://github.com/ESCOMP/ctsm/blob/fd7a88a1a052014c5c9efafe7aa12ead3c2dfa5e/src/biogeophys/GlacierSurfaceMassBalanceMod.F90#L431 or we can add a conditional inhandle_ice_runoff
so that whether the conversion is done depends on the sign ofqflx_ice_runoff_col
.@lvankampenhout @dlawrenncar @olyson @whlipscomb - do any of you have feelings on what is the "right" thing to do here? Also, should we bring anyone else into this discussion at this point?