SST Bias Underneath Sea Ice

CalvinC

New member
Hello MPAS-A Forum! This is my first time posting here so apologies if I forget to include some crucial information.

I am attempting to use MPAS-A (uniform 60km resolution mesh) to replay some Arctic cold air intrusions and warm air outbreaks, and I am investigating how long MPAS-A stays faithful to the ERA5 reanalysis conditions. I noticed that both the 2 Meter Temperature and the Skin Temperature are initialized at reasonable values, and then become very cold very quickly. I investigated the sea surface temperature, and found that, despite using initial conditions and update files with MPAS, the SST beneath the sea ice is not being initialized correctly or being updated.

I have attached two plots. The first is an Arctic area weighted average of skin temperature and SST of an MPAS-A run initialized on January 20th, 2013. It shows that the skin temperature is initialized at a reasonable value and then becomes much colder in MPAS than ERA5, and it shows that the MPAS SST starts well below the ERA5 initial conditions. The second plot is a map of SSTs at the first model timestep (January 20th, 2013, 00h), in ERA5, and MPAS-A (uniform 60km resolution), as well as their anomaly. I have plotted the 15% sea ice concentration contour. This shows that the MPAS-A cold bias only occurs underneath the sea-ice.

I would appreciate any tips on why this is happening! Is there a way to have a skin temperature update file to periodically push the MPAS-A skin temp back to ERA5 values, like how we update SST and sea ice concentrations? On maybe a more concerning note, why are the SSTs beneath the sea-ice edge not being initialized at the ERA5 values? Have I set something incorrectly in my namelists?

Namelist and streams files have been attached as well.
I look forward to hearing from you all!
 

Attachments

Hi,

I apologize for answering so late. There are many posts pouring in every day, and somehow this post was skipped and I just found that it was never answered.

Thanks a lot for the detailed description of the SST issue. In your 2nd plot, the SST anomaly is the difference between MPAS and ERA at the first time step, is this correct?

Would you please plot SST difference between MPAS initial condition and ERA5? It seems that SST in MPAS is much lower at the right beginning. I would like to make sure whether it is derived from the process of initialization.

Also, please let me me which version of MPAS you are using. Thanks.
 
Last edited:
Hi Ming Chen!

No worries about your reply time, I appreciate the help!

It is correct that the plot I sent before is from the first time step. I have made a new plot (attached here) of the ERA5 SST from the time of the start of the run, and the SST from the MPAS init file (x1.163842.init.nc). I used the ERA5 file to generate my initial conditions, so it seems that something is going wrong with the generation of initial conditions. Do you have any tips on how I could diagnose this issue?

I am using MPAS-v8.3.1 on the Narval HPC, based out of Montreal.

Thank you so much!
Calvin
 

Attachments

  • initial_conditions.png
    initial_conditions.png
    144.9 KB · Views: 5
Hi Calvin,

Thank you for the plots of the initial SST. I don't have an immediate explanation why SST in MPAS initialization is so severely deviated from ERA5. I will look into this issue and get back to you.

Since your case is a region MPAS case, would you please send me your regional domain information (i.e. points.txt you used to create the regional mesh).

I suppose that you didn't run grid_rotate to relocate any refinement. Please let me know if I am wrong.

Thanks.
 
Last edited:
Hi Ming,

I should clarify, this is not a regional MPAS case, I am simulating the entire globe but I am only plotting the Arctic as this is my area of interest (and where I noticed the SST discrepancy). I did not relocate any refinement because this is a uniform 60km grid.

Other details: I used the era5_to_int.py tool to convert my era5 data to initial conditions, and I am using the convert_mpas tool to interpolate my MPAS data to lat/lon coordinates for plotting purposes.

If there are any other files (logs, initial conditions, etc) that you need from me, please let me know and I can provide them!

Thank you for looking in to this.
Calvin
 
Calvin,

Thank you for the clarification. I will look into this issue and get back to you once I know for sure what is wrong. It may take some time partly because I exceeded the threshold of HPC usage and cannot submit job at present. Thank you for your patience.

Ming
 
Hi Calvin,

I found the reason why SST in MPAS initial data is different to that in ERA5. This is because MPAS takes skintemp as SST during its initialization. Over Arctic Ocean in the winter, seaice covers most of the ocean areas and these ice-covered areas are treated as 'land' area. Thereby, SST over these areas are replaced by SKINTEMP and Noah subsequently uses skintemp for land physics calculation.

I attach ERA5 SKINTEMP (upper) and ERA5 SST (lower) over the Arctic region for your reference. Please let me know if you have any questions regarding this issue.

1772760439772.png1772760451636.png
 
Hi Ming!

I really appreciate you looking in to this. I had noticed there was something interesting going on with skintemp over sea ice in the initialization code, but I'm glad you were able to put your finger on it.

However, I do have a follow up question. I checked out how the skintemp in MPAS compares to that of ERA5, and I found that while it is initialized correctly, the skintemp in MPAS immediately becomes very cold compared to ERA5, and this bias remains for the entirety of the simulation. This also occurs in a separate simulation I performed for a different 20 day period in 2016.

To illustrate this, I have re-attached the area averaged plot I made that includes both skintemp and sst from my first post. Skintemp is the left panel, and as you can see it is biased cold in MPAS as compared to ERA5 from nearly the beginning of the simulation.

As a further investigation, I have made spatial comparison plots of the skintemp in MPAS and ERA5 at several timesteps from this simulation. I have attached them here. The simulation begins January 20th of 2013 at midnight, and this initialization timestep can be seen in the file skintemp_comp_init.png. As you can see, the skintemp is initialized correctly, as you have pointed out. However, even three hours after initialization (as can be seen in the file skintemp_comp_3h.png) the MPAS skintemp is already biased cold compared to ERA5. This bias persists for the rest of the simulation (as can be seen in the file skintemp_comp_96h.png and the area_avg.pdf plot).

Interestingly enough, this bias is also only over the sea-ice, so I can only assume something is going on with the way skintemp is treated above sea-ice during the simulation. If sea-ice is treated as land for MPAS as you said above, could this contribute to the negative bias as compared to ERA5? Is there potentially any way to repair this bias? Could I periodically update the skintemp, similar to how we can periodically update the SST and sea-ice fraction?

I worry about this bias as I would like to re-simulate events in MPAS as seen in ERA5, and the surface temperature is a necessary aspect of this re-simulation.

Thank you for your work on this so far, and I look forward to hearing from you!

Best,
Calvin
 

Attachments

  • skintemp_comp_3h.png
    skintemp_comp_3h.png
    167.8 KB · Views: 1
  • area_avg.pdf
    area_avg.pdf
    17.4 KB · Views: 0
  • skintemp_comp_96h.png
    skintemp_comp_96h.png
    167.6 KB · Views: 1
  • skintemp_comp_init.png
    skintemp_comp_init.png
    174 KB · Views: 5
Hi Calvin,

This issue seems more complicated and I am suspicious that something is wrong in the model physics.

To answer your question of periodically updating skintemp, we cannot do this because skintemp is part of Noah LSM physics and it is calculated every time step.

In your post of February 13, I notice that you set config_sst_update = false. For a 20-day simulation, it is better to turn on SST update.

I will look into this issue and get back to you once I know for sure what is wrong.

Ming
 
Hi Calvin,

I believe that the cold bias over the seaice area is caused by some issues in surface albedo. Please change the codes as follows:

(1) in src/core_atmosphere/physics/mpas_atmphys_update_surface.F, find the following piece of code (MPAS-v8.3.1):

Code:
234        sfc_albedo(iCell) = 0.80 * xice(iCell) + 0.08 * (1.-xice(iCell))
235        sfc_emiss(iCell)  = 0.98 * xice(iCell) + 0.98 * (1.-xice(iCell))
236        sfc_albbck(iCell) = 0.80
237        sfc_emibck(iCell) = 0.98

Change it to:
Code:
234        sfc_albedo(iCell) = 0.65 * xice(iCell) + 0.08 * (1.-xice(iCell))
235        sfc_emiss(iCell)  = 0.98 * xice(iCell) + 0.98 * (1.-xice(iCell))
236        sfc_albbck(iCell) = 0.65
237        sfc_emibck(iCell) = 0.98

(2) in core_atmosphere/physics/mpas_atmphys_vars.F, please change

seaice_albedo_opt = 0

to

seaice_albedo_opt = 2

Then recompile atmosphere_model and run the case again.

Please let me know whether it works. Thanks.
 
Hi Calvin,

Another issue I an investigating is snow depth from ERA5, ---- It seems extremely large when I use ERA5 from NCAR RDA. Where did you download your ERA5 data? Can you check how deep snow is in your study area? Thanks !

Ming
 
Hi Ming!

I will try this albedo fix, but I should note that this simulation is from January 20th to February 10th, in the middle of Polar night. I don't think the albedo should impact the skin temperature very much in the absence of SW radiation. Is there a reason within MPAS why the albedo would matter?

As for the snow depth, I downloaded the ERA5 data from the GDEX archive via globus (NSF NCAR GDEX Dataset d633000 and NSF NCAR GDEX Dataset d633006). Is this the same as your source? I can look at the snow depth as well.

I look forward to hearing your response!
Calvin
 
Hi Calvin,

I am writing to let you you know that, I am still working on your case and trying to figure out why skintemp has such a large bias over arctic region.

I am suspicious that the missing of snow over the seaice area is a major reason for this cold bias. I am trying to run a few tests to debug this issue. However, due to the recent turmoil in NCAR, I experienced various troubles from obtaining data to running jobs in HPC, etc.

I will continue to explore what is wrong. At the same time, would you please run the same case but use a different input data, for example, use GFS instead of ERA5 to produce initial condition, then run the same case? Please let me know whether the cold bias of skintemp still exists.

Thanks.
 
Hi Calvin,

When you run MPAS using GFS as input, please recompile init_atmosphere using the code I attached here. Then run init_atmosphere to produce initial condition, and run mpas model. I suppose this should fix the cold bias issue you have seen before.

Please keep me updated of your results.

If this works, then next we will manage to add snow to ERA5 over the Arctic seaice area.
 

Attachments

Note that original ERA5 data doesn't have snow over the Arctic seaice area. For your case, if you need to stay with ERA5, then we will have to manage to add snow there.
 
Hi Ming!

I appreciate your continued attention to this issue, despite the internal issues you are dealing with. Thank you so much.

I will go ahead and try and run MPAS with the GFS initial conditions. So far I have only been using ERA5 initial conditions so this could certainly be the issue. I'll get back to you about whether ERA5 is necessary for our applications. I think we should be able to use GFS, but I am not certain yet.

I'll let you know the results of my simulations.
Best,
Calvin
 
Hi Ming,

I have been trying to run an MPAS run with the GFS initial conditions, and I am getting an extrapolation error, which I have pasted here.

----------------------------------------------------------------------
Beginning MPAS-init_atmosphere Error Log File for task 0 of 1
Opened at 2026/03/25 10:59:35
----------------------------------------------------------------------
ERROR: extrap_type == 2 not implemented for target_z >= zf(1,nz)
ERROR: *****************************************************************
ERROR: Error in interpolation of t(k,iCell) for k= 55, iCell= 3
CRITICAL ERROR: *****************************************************************
Logging complete. Closing file at 2026/03/25 10:59:35

I found that several others have had this same issue. I verified that I am downloading my grib files from the correct repository (NSF NCAR GDEX Dataset Archive, filepath /d084001/ ). I have attached my namelist.init_atmosphere file here. To convert from grib files to intermediate files, I am following the instructions from the virtual MPAS tutorial practice guide, which I have attached here as well. The only way in which I have changed my process from the tutorial guide is to download from d084001, as per your suggestion in a separate thread on the forum that I found. I should note that even if I download from d083003 as the tutorial suggests, I still get the extrap_type error.

Sorry for the persisting errors! I hope you are able to help with this.

Best,
Calvin
 

Attachments

Hi Calvin,

When you run MPAS using GFS as input, please recompile init_atmosphere using the code I attached here. Then run init_atmosphere to produce initial condition, and run mpas model. I suppose this should fix the cold bias issue you have seen before.

Please keep me updated of your results.

If this works, then next we will manage to add snow to ERA5 over the Arctic seaice area.
I'm seeing this now and I realizing this might help fix the issue I brought up in my previous post. I will try this now, thank you.
 
Calvin,

I found that you set config_nfglevels = 38. This is for ERA5. For GFS, it should be either 27 (for older GFS) or 34 (for newer GFS).
 
Hi Ming,

Unfortunately, I tried both 27 and 34 for the config_nfglevels, and I got the same error again. Do I need to recompile init_atmosphere for some reason when using GFS vs ERA5 initial conditions? I have not recompiled since running MPAS with ERA5.

Thank you,
Calvin
 
Back
Top