SST Bias Underneath Sea Ice

Calvin,

This is a data issue. I don't think you need to recompile init_atmosphere.

Can you upload your GFS file for me to take a look?
 
Hi Ming,

Thank you for your continued aid on this issue. I don't seem to be able to upload either the grib2 or the WPS intermediate files to this post as they are too large for the forum to handle. Is there another way I can send you these files? I can email a zip file to you if you would like? Let me know what you would like me to do.


I have tried both the GFS and GFS GDAS files (d084001 and d083003 respectively) with config_nfglevels set to both 27 and 34, and have received the same error each time. I have attached the most recent log files (both out and err) generated by my attempts, this is for GFS_GDAS files with config_nfglevels set to 27, and config_nvertlevels set to 55.

Let me know what you would like for me to do about getting you the grib2 and intermediate files that I am using. The zipped intermediate files are ~800 MB in size.

Thank you,
Calvin
 

Attachments

Hi Calvin,
I finally managed to finish two tests of global MPAS run using the same mesh as yours. I use GFS as input since it has snow information over the Arctic. Please see the plots I attach here. With the modified code I sent to you, skintemp is differenrt than that from the original code. I haven't compared with GFS data yet.



1775082880548.png
 
Last edited:
I am not sure why your GFS data doesn't work. I run with gfs.0p25.2024020100.f000.grib2, which can be downloaded from NCAR RDA (d084001).

For this data, config_nfglevels = 34

Can you try to repeat what I did, just to make sure all works as expected on your side. Please let me know if you have any issues during this process.
 
Hi Ming Chen!

I apologize for the delay in my response, however, I was able to get the GFS data to work, and I am able to get results similar to yours. The trick was to set the vertical levels of MPAS to only extend to 28000 meters, rather than 30000.

However, our issue seems to be further from being fixed with the new snow height. I performed a series of simulations changing the snow height. The results can be seen in the attached plot. The black line represents the ERA5 data, the orange line represents an MPAS run with ERA5 default initial conditions, the blue line is an MPAS run with the snow height over sea ice fixed at 1 meter, the green line is an MPAS run with the snow height over sea ice fixed at 5 meters, and the two olive lines represent MPAS runs using GFS initial conditions. The solid olive line is using the default MPAS code, and the dashed olive line is using your fix for the initial conditions processing.

As you can see, the larger the snow height, the colder the skintemp, and MPAS is already biased cold as compared to ERA5. So while it is probably an issue that MPAS is not capturing the snow height correctly from ERA5 initial conditions, the issue of the cold bias remains and becomes worse when we fix the snow issue.

Additionally, as you can see from the plot attached here and from the SST anomaly plot I attached on the first post, the sea surface temperatures in MPAS under sea ice are well below freezing, which is unphysical. I have found some attempts in the model code to prevent the SST under sea ice from going below 271 K, but evidently these are not working correctly.

All of this is to say, there might be a larger issue here that needs addressing, which is how MPAS initializes the sea surface temperature underneath sea ice points. If that were to be repaired, this might fix the skin temperature issue, as I believe that the skintemp above sea ice is sensitive to the temperature of the ice below it, which is being set to unphysically cold levels via the sea surface temperature initialization issue.

Let me know what you think of this. If you have any thoughts on how to fix the sea surface temperature under sea ice issue, I would love to hear about it. Thank you for your continued help on this issue!

Calvin

EDIT: There seems to be an issue with file uploads on the forum currently. I will send you an email with the plot and post it here when this issue is resolved.
 

Attachments

Hi Calvin,
I did a wintertime test case and got the same results as you did, that is, with physically reasonable initial snow condition, skintemp becomes colder than that without snow in the initial condition. I haven't figured out what is the reason behind. I know that Noah LSM has a very simple snow cap module, which may be responsible for the results we have seen. However, more detailed analysis needs to be done before we know for sure what is going on.
I am extremely busy these days because I need to prepare for the release of WRFv4.8 and have little time to explore this issue. If convenient, can you (1) compare MPAS results (driven by GFS input, with and without snow in its initial condition) with GFS skintemp? Let's see which one yields smaller biases, (2) run the same case buy using NoahMP instead of Noah. Let's see how NoahMP performs.
Ming
 
Hi Calvin,
I just want to follow up for the issue you have seen. I have run two test cases, one with Noah and the other with NoahMP. I got the same results, that is, with snow over seacie, skintemp is lower than that without snow. In MPAS, skintemp is always temperature at the interface between surface at atmosphere. With snow over seaice, skintemp is temperature at the surface of snow. Because the heat flux from water under the seaice is trapped by snow, temperature at the surface of snow is lower than that when snow is missing. I believe this is physcially reasonable.
As for the comparison with ERA5, we need to determine how ERA5 defines skintemp. If it is temperature at the surface of snow, then we can compare MPAS output with ERA data directly. if ERA5 defines skintemp in a different way, then such a comparison is not reasonable. Please let me know what you think. Thanks.
 
Hi Calvin,
I just want to follow up for the issue you have seen. I have run two test cases, one with Noah and the other with NoahMP. I got the same results, that is, with snow over seacie, skintemp is lower than that without snow. In MPAS, skintemp is always temperature at the interface between surface at atmosphere. With snow over seaice, skintemp is temperature at the surface of snow. Because the heat flux from water under the seaice is trapped by snow, temperature at the surface of snow is lower than that when snow is missing. I believe this is physcially reasonable.
As for the comparison with ERA5, we need to determine how ERA5 defines skintemp. If it is temperature at the surface of snow, then we can compare MPAS output with ERA data directly. if ERA5 defines skintemp in a different way, then such a comparison is not reasonable. Please let me know what you think. Thanks.
Hi Ming!

It is not clear to me how ERA5 defines skintemp. However, from further work I have done on this I believe that there is a deeper issue with the way MPAS treats with skin temperatures in the Arctic, which stems from the way that the sea surface temperature is set below sea-ice.

From the plots I sent in my first post, you can see that the average MPAS sea surface temperature in the Arctic is well below the freezing point, and that this is an issue only below the sea-ice. This is an unphysical result. Our discussion in the earlier posts on the forum diverged from SST as we started discussing the skin temperature. However, from looking in to the source code (specifically module_sf_noah_seaice.F) it seems that the skin temperature is set based on the "soil temperatures" below it. Over sea-ice points, which are considered to be land, this would involve the sea surface temperature which is taken to be the temperature of the lowest soil layer (if I understand MPAS sea-ice correctly).

So essentially, the low skin temperatures are a symptom of the below freezing sea surface temperatures. If we were to somehow be able to fix the MPAS sea-surface temperatures below the sea ice to stay at or around the freezing point (which is physical), I believe that the skin temperatures would get much warmer and approach ERA5 values.

I would love to hear your thoughts on this.
Best,
Calvin
 
Hi Ming!

I have an update on this. After looking further in to the source code, I found that the mpas_init_atm_cases.F file was not properly ingesting the SSTs from the intermediate files generated from ERA5 or GFS data. Therefore, the SSTs default to the skin temperature, as you mentioned much earlier in this thread. Everywhere except for in the polar regions, this isn't an issue as the SST and the skintemp are almost identical. However, in the Arctic and Southern Ocean where there is often an intervening layer of sea-ice, the skin temperature is well below freezing, while the SST should be just below 273.15, due to the salinity content.

I was able to fix this SST issue by adding some lines to the mpas_init_atm_cases.F file such that it now reads in the SSTs from the intermediate files generated by era5_to_int.py. This produces much more reasonable skin temperature values. Even though they are still slightly below those of ERA5, we are no longer seeing a 5-10K bias. This additionally fixed the issue of SSTs that are ~20 degrees below freezing, which is unphysical. I have submitted a pull request on the MPAS github, and I hope this will help future user who may have an interest in the Arctic!

See below for plots of the newly corrected SSTs and skin temperatures, relative to the ERA5 baseline. Special thanks to the developers of UXarray, which I used to make these plots! UXarray Documentation
 

Attachments

  • sst_bias_comp.png
    sst_bias_comp.png
    248 KB · Views: 2
  • skintemp_bias_comp.png
    skintemp_bias_comp.png
    373.4 KB · Views: 2
Hi Calvin,
Thank you for the detailed description of this issue. I just put a comment for your PR at the MPAS git page.
I agree with you that in the Arctic and Southern Ocean, there is often an intervening layer of sea-ice, the skin temperature is well below freezing, while the SST should be just below 273.15, due to the salinity content. However, note that in Noah and NoahMP, points over seaice area are treated as land points. At these points, SST is invalid and skintemp is used as a physical variable involved in surface physics process. This is why we always skintemp as initial condition over areas covered by seaice.

Your results did show great improvements with the fix you proposed. This is understandable since your initial data is much warmer with the fix. But I am still confused about the model behavior ......
 
Last edited:
Back
Top