-
Notifications
You must be signed in to change notification settings - Fork 7
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
Support newer JRA55-do #33
Comments
@ezhilsabareesh8 these input files in the CIME MOM6-CICE6 config apparently contain different materials deposited from the atmosphere to the surface. We don't need them for ACCESS-OM3 (and they aren't available from anyway) so you can leave them out.
(We do have a dust input |
Thanks @aekiss. In ACCESS-OM3, the rainfall and snowfall fluxes are calculated from the precipitation fluxes in these lines in datm_datamode_jra_advance subroutine. The rainfall and snowfall fluxes are directly advertised here. I declared the rainfall and snowfall fluxes separately as
and added the following lines to read the variables.
In access-om3, the rainfall and snowfall fluxes are calculated from the precipitation flux based on the air temperature (Sa_tbot). Refer here. I changed these lines as
I am keeping the condition |
Hi @ezhilsabareesh8 since we already have separate snow and rain data, I think we should advertise them without alteration, i.e. just set
with no if-else. There is no need to adjust things based on air temperature - that was only needed in the original setup because they weren't already separate. Setting one or the other to zero based on air temperature will make it impossible to have a combination of rain and snow at the same time, even if that's what was in the JRA55-do data. |
See PR #45 |
As a first step we should support JRA55-do v1.4 RYF from When the RYF is working we can then we support IAF JRA55do v1.5.0 from |
Is this going to be an issue: From the CDEPS documentation
The ACCESS-OM2 RYF forcing is 1 May 1990 - 30 April 1991, right? |
Good question, but this won't be an issue with RYF. Although the data comes from 1 May 1990 - 30 April 1991, the time data in the netcdf files has been changed to nominally run from 1900-01-01 to 1900-12-31, ie it acts like there's a jump at the start of May in that year, e.g.:
This is on a noleap calendar, and both 1900 and 1991 are non-leap years. |
Issue #45 - Error in
The test run of JRA55do-datamode for a one-month period has encountered an error, which appears to be caused by the dtmax/dtmin ratio exceeding the specified dtlimit of 1.5 (dtlimit documentation). The error log indicates that there is an issue with the data stream, particularly when reading the file RYF.rsds.1990_1991.nc. Upon examining the data, it was observed that the delta time ( To resolve this issue, further investigation is required to understand how the code reads the data and to adjust it accordingly. The goal is to ensure that data from 21:00 to 0:00 is appropriately included in the reading process and that the |
Thanks @ezhilsabareesh8. The increment in the time axis is uniformly 0.125hr, so this could not cause the ratio issue. However this 12-month data stream is repeatedly cycled in a multi-year run and we need to check how the cycling is handled in the code. The time axis in the .nc file starts at 00:00hr on 1 Jan and ends at 21:00hr on 31 Dec, but maybe the code expects it to end at midnight on 31 Dec (ie cover a complete year)? If so, maybe it compares the second-last (not the last) element of the time axis to the first element to work out the time increment when the data stream cycles around. With our data this would be 18:00hr on 31 Dec, resulting in an increment of 0.25hr to 00:00 on 1 Jan. |
Thanks @aekiss. The previous error encountered in JRA55do-datamode due to ratio issue has been resolved by making modifications to the datm.streams.xml file. The issue was related to the offset setting, which was adjusted to zero. I found that the time settings in the JRA55 dataset differed from those in the JRA55-do dataset. Specifically, the JRA55 data started at 1:30 hrs and ended at 22:30 hrs, while the JRA55-do data started at 0:00 hrs and ended at 21:00 hrs. The problem arose due to a predefined offset of 5400 seconds (1.5 hrs) in the SWDN (surface_downwelling_shortwave_flux_in_air) variable within the datm.streams.xml, leading to an increase in the time In the code, the cycling is managed based on the stream's time of the day (tod) lower and upper bounds (refer dshr_strdata_mod.f90), which are obtained from the input files. |
I was able to run the Surprisingly, despite the grid discrepancies, the simulation ran without any error, possibly due to both grids having the same number of total elements (204800). However, the output data shows discrepancies in the land-sea mask in the arctic, as illustrated in the attached figure, which maybe due to the grid incompatibility. |
Thanks @ezhilsabareesh8. As we discussed, I think it's just luck that this ran because the number of grid points in the JRA55 and JRA55-do grids happens to be the same. I'll generate a new mesh file for the JRA55-do grid today. Hopefully that fixes up the weirdness in the northern hemisphere. |
Great to see this runs, despite the incompatible grids.
Actually, is the mesh file derived from the CESM displaced-pole grid, and the JRA55-do is on a lat-lon grid, right? |
Thanks @aekiss. Yes, that is correct, I have updated my comment. |
@ezhilsabareesh8, I've created a mesh file for the JRA55-do grid. You can find it here: |
Sorry, this should've clicked sooner, but the issue with the plots above is because we haven't properly accounted for the MOM grid when plotting. We need to use the correct lons/lats from the static files, e.g. import cartopy.crs as ccrs
import matplotlib.pyplot as plt
static = xr.open_dataset(
"/scratch/tm70/ek4684/access-om3/archive/MOM6-CICE6_incompatible_mesh/output000/GMOM_JRA.mom6.static.nc"
)
ds = xr.open_dataset(
"/scratch/tm70/ek4684/access-om3/archive/MOM6-CICE6_incompatible_mesh/output000/GMOM_JRA.mom6.sfc_0001_01.nc",
use_cftime=True
)
SST = ds["tos"].isel(time=0).sortby(["xh","yh"]).assign_coords(
{"geolon": static["geolon"], "geolat": static["geolat"]}
)
plt.figure(figsize=(8, 4))
ax = plt.axes(projection=ccrs.Robinson())
SST.plot.pcolormesh(
ax=ax,
x="geolon", y="geolat",
transform=ccrs.PlateCarree(),
vmin=-10, vmax=30, extend='both',
cmap="magma",
cbar_kwargs = {
'label': 'SST (°C)',
'fraction': 0.03,
'aspect': 15,
'shrink': 0.7
}
)
ax.coastlines(); produces |
Ah, good catch, I hadn't realised that hadn't been done |
Thanks @dougiesquire. I was able to run the JRA55do datamode with the /g/data/tm70/ds0092/model/inputs/access-om3/JRA55do-ESMFmesh.nc mesh file. Using the longitude and latitude for plotting fixed the issue with the plots. |
My understanding is that this is now done in ACCESS-NRI/access-om3-configs#6. Please reopen this issue if that's not the case. |
ACCESS-OM3 should support the latest JRA55-do v1.5.0 but our test configs currently use
/g/data/ik11/inputs/cime/inputdata/2023-03-10/ocn/jra55/v1.3_noleap
, which is apparently JRA-55, not JRA55-do, and an old version of JRA-55 to boot.DATM says it supports "JRA-55 v1.3 forcing data"
https://escomp.github.io/CDEPS/versions/master/html/datm.html#supported-data-modes
It's unclear whether DATM would also support a newer -do version. More investigation needed.
The text was updated successfully, but these errors were encountered: