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

Add option to use a prescribed snow albedo with Noah-MP #47

Merged

Conversation

spencerkclark
Copy link
Member

Description

This PR builds on #46 and adds an option to also prescribe the snow albedo used by SHiELD when running with Noah-MP. The existing options, which use schemes to dynamically set the snow albedo, result in an underestimate of the snow albedo, particularly in Antarctica. This new option, which can be toggled by setting gfs_physics_nml.iopt_alb = 3, pipes in the maximum snow albedo read in from climatological fix files and uses that as the snow albedo within Noah-MP. This happens to be the approach taken in SHiELD when using the Noah land surface model with ialb = 1 (see here), so there is precedent.

cc: @kaiyuan-cheng @lharris4 I rebased this branch now that #46 has been merged. This should now be ready for review too.

How Has This Been Tested?

This has been tested by running a one month simulation initialized January 1st, 2020 from GFS analysis with prescribed observed sea surface temperatures and sea ice and computing the surface albedo bias relative to ERA5. We can see that during this season that it makes a particular difference over Antarctica. When coupled with the soil color update in #46 this results in land albedo biases more in line with those of SHiELD when run with Noah—compare the left and right-most panels of the plot below.

2024-06-14-surface-albedo-diff-soil-color-and-snow-albedo-fix

This climatological snow albedo is already stored and loaded from restart files by default, so no changes should be needed to ensure restart reproducibility.

Checklist:

Please check all whether they apply or not

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

Copy link
Contributor

@lharris4 lharris4 left a comment

Choose a reason for hiding this comment

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

Thank you for assembling this elegant fix.

@kaiyuan-cheng
Copy link
Contributor

Thank @spencerkclark for working on this. The code looks good. However, iopt_alb = 3 does not run well with my C96 test case. I was getting errors like "emitted longwave <0; skin t may be wrong due to inconsistent input of shdfac with lai".

@spencerkclark
Copy link
Member Author

Thanks @kaiyuan-cheng for giving it a try. I submitted a couple year-long runs at C96 resolution with iopt_alb = 3 and found things were able to run stably. Could I take a look at your configuration to see what might be different? Did your case crash immediately or did it take some time for the crash to occur?

@lharris4 lharris4 merged commit 573746a into NOAA-GFDL:main Jun 17, 2024
74 checks passed
@kaiyuan-cheng
Copy link
Contributor

My apologies. I did something wrong when I checkouted the code from this MR. Now I confirm that the MR works fine with my test case.

@spencerkclark
Copy link
Member Author

All good—thanks @kaiyuan-cheng and @lharris4!

@lharris4
Copy link
Contributor

@spencerkclark Thank you for getting this together so quickly.

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.

3 participants