Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Frequent "qice out of bounds" warnings due to big negative qice in first time step #1335

Open
billsacks opened this issue Apr 13, 2021 · 0 comments
Labels
tag: bug - impacts science bug causing incorrect science results type: bug something is working incorrectly
Projects

Comments

@billsacks
Copy link
Member

Brief summary of bug

I noticed that this warning:

write(iulog,*) 'WARNING: qice out of bounds: g, n, qice =', g, n, this%qice_grc(g,n)

is generated many times in the first time step, at least in some configurations. In these cases, it seems that qice is significantly negative.

General bug information

CTSM version you are using: master

Does this bug cause significantly incorrect results in the model's science? Possibly, if this is triggered in a run with coupling to either the ocean or CISM

Configurations affected: Unknown, but suspected in cases with interpolation (use_init_interp = .true.)

Details of bug

I recently observed this in the test SMS_D_Ln9_P480x3_Vnuopc.f19_g17.IHistClm50Sp.cheyenne_intel.clm-waccmx_offline, connected with #1331 . This test deliberately uses an out-of-sync initial conditions file, using a Clm45 initial conditions file in a Clm50 test, and that could be contributing to this issue. From a search of log files in a recent run of the aux_clm test suite on cheyenne, this warning appears in 17 tests – so a relatively small fraction, but still a variety of configurations. Most of the tests with this issue are Clm45 tests, but there are some Clm50 / Clm51 tests with this issue – three of which are SSP tests with a 2050 start date (I'm not sure if that's relevant).

I have a guess about what is causing this, but I haven't investigated: I think this could occur when we interpolate (via use_init_interp) from glaciers with glacier_region_melt_behavior='remains_in_place' to glaciers with glacier_region_melt_behavior='replaced_by_ice'. In regions with the 'replaced_by_ice' behavior, negative qice is generated by diagnosing the amount of liquid water in the glacier column; this liquid water is assumed to be melt so it generates a negative qice and then is converted back to ice. However, in regions with the 'remains_in_place' behavior, the melt water just sits around in the column until it refreezes (if it ever does). This means that there can potentially be a large build-up of liquid water in glaciers with the 'remains_in_place' behavior. So it makes sense that, if such a column is used to initialize a glacier column with the 'replaced_by_ice' behavior, then there would be an initial large pulse of negative qice.

I see a few possible solutions:
(1) add some logic to init_interp that results in glaciers of these two behaviors being treated as different types, so interpolation doesn't happen between them
(2) ignore this generated melt flux in the first time step of a run
(3) (probably better than (2)) in a startup run in initialization, after reading the initial dataset, convert all liquid in glacier columns with the 'replaced_by_ice' behavior to ice

(1) may be the better general solution, in that it might solve other (as yet undiscovered) problems, too. However, it could also cause new problems, such as what would happen when you're initializing a run with glaciers of both melt behaviors using an initial conditions file where all of the glaciers had one or the other melt behavior – or the less extreme case where the closest glacier column with the desired melt behavior is very far away.

However, (2) or (3) would be easier to implement than (1) and would be less likely to introduce other unintended consequences.

I think the choice of a solution comes down to how scientifically important it is to avoid interpolating between glaciers with these two different melt behaviors.

Important output or errors that show the problem

The output is WARNING: qice out of bounds: g, n, qice =

@whlipscomb @gunterl @Katetc FYI.

@billsacks billsacks added type: bug something is working incorrectly tag: bug - impacts science bug causing incorrect science results labels Apr 13, 2021
@billsacks billsacks added this to Needs prioritization in Land Ice via automation Apr 13, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tag: bug - impacts science bug causing incorrect science results type: bug something is working incorrectly
Projects
Land Ice
  
Needs prioritization
Development

No branches or pull requests

1 participant