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

Three changes and one bug fix in the NSST model in the coupled frame #537

Closed
XuLi-NOAA opened this issue Dec 21, 2020 · 4 comments
Closed

Comments

@XuLi-NOAA
Copy link
Contributor

XuLi-NOAA commented Dec 21, 2020

      Background
      A scheme to determine the foundation temperature (Tf, or tref in the code) with the NSST model T-Profile and the oceanic model (MOM6 here) top layer temperature (T1) has been developed in NCEP atmospheric model (FV3 here) years ago, but it is never tested systematically in the frame of the coupled (atmosphere-ocean) model. This scheme, Scheme-A, has been tested with the Prototype 5 (P5) of UFS-S2S version, a more reasonable scheme, Scheme-A.1, has been proposed and tested. 
     The second change is to apply a safeguard to tref to make sure it is not colder than the frozen point.
     The third change to reduce the maximum diurnal warming depth from 30 m to 20 m. The reason to do this is that it is easier to handle the necessary imported oceanic model (MOM6 here) layer temperatures (down to 20 m, instead of 30 m). It is also based on the fact the diurnal warming layer is rarely deeper than 20 m. 
     A bug has been found out in the evaluation of the impact of the NSST model on the coupled model. 

Three changes in this issue:

(1) Scheme-A to Scheme-A.1 in ccpp/physics
The cooling effect is removed from the formula to determine Tf
(2) Apply a safeguard to tref in sfc_nst_pre_run
(3) Reduce z_w_max from 30 m to 20 in ccpp/physics and FV3/io

A bug fix in ccpp

     There are 4 equations involved in the surface (nsst here, specifically) physics, a two step interaction is introduced to calculate some surface coefficients twice when the surface wind is smaller than 2 m/s in the surface physics. 

In order, the four following equations are executed in the code :

(1) tref(i) = max(tgice, tsfc_wat(i) - dtzm(i)
(2) tsfc_wat(i) = max(tgice, tref(i) + dtzm(i))
(3) tref(i) = max(tgice, tsfc_wat(i) - dtzm(i))
(4) tsfc_wat(i) = max(tgice, tref(i) + dtzm(i))

You can see tref is assigned twice (1) and (3), and tsfc_wat is assigned at (2) and (4), it explains what we saw in the figure exactly.

The solution is to introduce tsfco (the T1 from MOM6) into sfc_nst_pre_run in ccpp, and replace tsfc_wat in (1) and (3) to be tsfco.

@climbfuji
Copy link
Collaborator

@XuLi-NOAA thanks for reporting the bug and providing a solution for it! @SMoorthi-emc @junwang-noaa do you agree with the suggested bugfix?

@junwang-noaa
Copy link
Collaborator

I knew the bug fix 2) is required to fix the first step large nsst impact, not sure about 1) and 3).

@SMoorthi-emc
Copy link
Collaborator

I think this was done correctly in the IPD physics driver - bug happened during conversion to CCPP (I am only referring to the "tsfco" part of the bug) Other changes are up to Xu Li. I have corrected the "tsfco" error in my own branch of ccpp.
Moorthi

@climbfuji
Copy link
Collaborator

Closed via #589.

HelinWei-NOAA added a commit to HelinWei-NOAA/ccpp-physics that referenced this issue Feb 26, 2023
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

No branches or pull requests

4 participants