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

Modifications required for running with a global slab ocean #40

Merged
merged 8 commits into from
Feb 28, 2024

Conversation

spencerkclark
Copy link
Member

@spencerkclark spencerkclark commented Feb 7, 2024

Description

This PR introduces a few changes to facilitate running SHiELD with a global slab ocean:

  • It adds a ocean_nml.maxlat namelist parameter to allow one to relax the current rigid constraint that the ocean model be limited to at most 60°S to 60°N. To allow running with a global ocean, one must set this to 90.0.
  • It adds a gfs_physics_nml.disable_radiation_quasi_sea_ice namelist parameter to allow one to disable the existing default code in that radiation scheme that treats below freezing ocean grid cells as having a surface albedo and emissivity of sea-ice rather than open water. Since SHiELD does not have a true interactive sea-ice model, this code is only partly physical and generally makes sense to disable in global slab ocean simulations to avoid an extreme ice-albedo feedback.
  • It resets the slab ocean or mixed layer model properties at all sea ice grid cells at every timestep to the default sea ice temperature (271.2 K). This is to support more predictable / coherent behavior at times of transition between sea ice and ocean surface types.
  • It adds a prescribed_mixed_layer_depth diagnostic to allow outputting the prescribed climatological mixed layer depth at all grid cells, not just a diagnostic valid over ocean grid cells only.

The defaults of the two namelist parameters have been set for backwards compatibility—i.e. they do not change answers by default. The resetting of ocean properties at all non-ocean grid cells should only affect simulations where the ocean extends into regions that occasionally are covered with sea ice, which generally should not happen frequently (if at all) in previous simulations where the interactive ocean could extend at most from 60°S to 60°N.

How Has This Been Tested?

  • These code changes have been tested by running simulations with appropriate diagnostics to validate that the slab ocean is indeed active globally when ocean_nml.maxlat is set to 90.0, and that the ocean surface albedo in below freezing regions is set as if it were open water rather than sea-ice when gfs_physics_nml.disable_radiation_quasi_sea_ice is set to .true.. Over other surface types the albedo appears unchanged modulo weather variability.
  • I have also tested that the model produces bitwise identical results before and after adding the disable_radiation_quasi_sea_ice flag, with the flag set to its default .false..
  • And finally I have tested that surface temperature varies as expected from one timestep to the next in a grid cell that transitions from sea ice to ocean in a global slab ocean run.

See more details and plots in these slides.

cc: @lharris4

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

@spencerkclark
Copy link
Member Author

@lharris4 there are a couple other refinements I may want to make following some more thought / discussion today—I'll ping you when I think this is fully ready for review.

- Add a prescribed_mixed_layer_depth diagnostic, which outputs exactly the
  mixed layer depth that was prescribed at all grid points, regardless of
  surface type.
- Reset the slab ocean or mixed layer model properties at every timestep at all
  non-ocean grid cells.  This is required to more cleanly handle the transition
  from sea ice to ocean in global slab ocean simulations.
@spencerkclark spencerkclark changed the title Permit running with a global slab ocean and disabling radiation quasi-sea-ice Modifications required for running with a global slab ocean Feb 9, 2024
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.

I think this looks good. FYI @laurenchilutti is on leave and is not available for a code review.

@spencerkclark
Copy link
Member Author

@lharris4 many thanks for reviewing. Following some further discussion with Chris, I pushed another minor update to initialize the ocean temperature to con_tice (271.2 K) instead of the skin temperature of the sea ice from the previous timestep, which could in theory be something much colder. See bfd2d6b for the diff of the change.

@spencerkclark
Copy link
Member Author

@lharris4 gentle nudge on this (note the minor update above)—since @laurenchilutti is on leave, do we need to ask someone else for a code review?

@lharris4
Copy link
Contributor

@spencerkclark I hope to get to this later today. Since @laurenchilutti is not available we should ask @bensonr for someone who can provide a review on his side.

Thanks,
Lucas

@lharris4
Copy link
Contributor

@spencerkclark I left one comment but otherwise I think this is a good change. Open water should not be colder than -2C. Thanks.

@spencerkclark
Copy link
Member Author

Thanks @lharris4!

Copy link
Contributor

@bensonr bensonr left a comment

Choose a reason for hiding this comment

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

@spencerkclark - are there combinations of the new namelists that must be set together? If so, it would be good to note that in the comments where each of them are defined (GFS_typedefs.F90, physparam.f, etc.). If the answer is no, I'll approve and merge the code.

@spencerkclark
Copy link
Member Author

Thanks @bensonr — the two added namelist parameters, ocean_nml.maxlat and gfs_physics_nml.disable_radiation_quasi_sea_ice, do not necessarily need to be set together, but there are circumstances when it can be wise to do so. The main case is when running with an interactive ocean that extends poleward of 60°, so I added some context to the comment associated with the ocean_nml.maxlat parameter in 48a24fe and 47e783f. Let me know if that looks good.

Copy link
Contributor

@bensonr bensonr left a comment

Choose a reason for hiding this comment

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

Thanks @spencerkclark for the improved comment language.

@bensonr
Copy link
Contributor

bensonr commented Feb 28, 2024

@spencerkclark - let me know if you have any more comment updates. Otherwise, I'll merge it now that the checks have completed.

@spencerkclark
Copy link
Member Author

Thanks @bensonr — sorry, yeah, I just caught a minor typo, but I fixed it in 992580c. I think it should be good to merge now once the checks pass.

@bensonr bensonr merged commit 5e5e100 into NOAA-GFDL:main Feb 28, 2024
74 checks passed
linjiongzhou pushed a commit to linjiongzhou/SHiELD_physics that referenced this pull request Feb 28, 2025
…L#40)

* Permit running with a global slab ocean

* Add option to disable quasi-sea-ice

Also update comment for maxlat option in SOM

* A couple further refinements

- Add a prescribed_mixed_layer_depth diagnostic, which outputs exactly the
  mixed layer depth that was prescribed at all grid points, regardless of
  surface type.
- Reset the slab ocean or mixed layer model properties at every timestep at all
  non-ocean grid cells.  This is required to more cleanly handle the transition
  from sea ice to ocean in global slab ocean simulations.

* Initialize ocean to con_tice instead of previous timestep temperature

* Harmonize formatting

* Improve comment on added ocean_nml.maxlat parameter
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