Background:
For each grid point and ice category, cice computes its thermodynamics over nkice layers (this is 4 in ACCESS-OM2).
Under the BL99 thermodynamics option, the conductive salinity profile (aka 'ice internal salinity') is fixed and prescribed from a function - therefore we know what values to expect. For a given point and thickness category the expected values for these four layers are [0.64920187, 2.354581 , 3.0310922 , 3.1892977 ].
The Issue:
However, if Sinz is output (f_sinz is the namelist field flag), the values do not appear as I expect.
Here's an example taken from the 1° model, given an Xarray DataArray:
In [4]: type(sinz)
Out[4]: xarray.core.dataarray.DataArray
In [5]: sinz.shape
Out[5]: (1, 5, 4, 300, 360)
selecting a point for a given time (which has length 1 in this case), lat and lon (that has ice, aka aice>0)
In [6]: sinz.isel(time=0,ni=30,nj=40,nc=0).values
Out[6]: array([0.64920187, 0.64920187, 0.64920187, 0.64920187], dtype=float32)
We do not see the 4 values we expect to see.
Consider the same time,lat,lon for all layers and thickness categories:
n [8]: sinz.isel(time=0,ni=30,nj=40).shape
Out[8]: (5, 4)
In [9]: sinz.isel(time=0,ni=30,nj=40).values
Out[9]:
array([[0.64920187, 0.64920187, 0.64920187, 0.64920187],
[0.64920187, 2.354581 , 2.354581 , 2.354581 ],
[2.354581 , 2.354581 , 3.0310922 , 3.0310922 ],
[3.0310922 , 3.0310922 , 3.0310922 , 3.1892977 ],
[3.1892977 , 3.1892977 , 3.1892977 , 3.1892977 ]], dtype=float32)
The values appear to be ordered along the wrong dimensions. What I think should be the correct answer can be retrieved (for this time,lat,lon) by:
In [10]: temp = sinz.isel(time=0,ni=30,nj=40).values
In [11]: temp.reshape((4,5)).transpose()
Out[11]:
array([[0.64920187, 2.354581 , 3.0310922 , 3.1892977 ],
[0.64920187, 2.354581 , 3.0310922 , 3.1892977 ],
[0.64920187, 2.354581 , 3.0310922 , 3.1892977 ],
[0.64920187, 2.354581 , 3.0310922 , 3.1892977 ],
[0.64920187, 2.354581 , 3.0310922 , 3.1892977 ]], dtype=float32)
These code snippets have been produced in ipython using pyXarray, but the same answer is obtained using a variety of tools, including inspecting the netCDF file with ncview.
If there is an issue here, this may affect other 4d fields like Tinz, but these may be harder to diagnose from their values, as they aren't prescribed and fixed like Sinz.
An example output file with the Sinz variable can be found on gadi at:
/home/548/sxa548/access-om2-sample_output/iceh.2018-08-15.nc
Background:
For each grid point and ice category, cice computes its thermodynamics over nkice layers (this is 4 in ACCESS-OM2).
Under the BL99 thermodynamics option, the conductive salinity profile (aka 'ice internal salinity') is fixed and prescribed from a function - therefore we know what values to expect. For a given point and thickness category the expected values for these four layers are
[0.64920187, 2.354581 , 3.0310922 , 3.1892977 ].The Issue:
However, if
Sinzis output (f_sinzis the namelist field flag), the values do not appear as I expect.Here's an example taken from the 1° model, given an Xarray DataArray:
selecting a point for a given time (which has length 1 in this case), lat and lon (that has ice, aka
aice>0)We do not see the 4 values we expect to see.
Consider the same time,lat,lon for all layers and thickness categories:
The values appear to be ordered along the wrong dimensions. What I think should be the correct answer can be retrieved (for this time,lat,lon) by:
These code snippets have been produced in ipython using pyXarray, but the same answer is obtained using a variety of tools, including inspecting the netCDF file with ncview.
If there is an issue here, this may affect other 4d fields like
Tinz, but these may be harder to diagnose from their values, as they aren't prescribed and fixed likeSinz.An example output file with the
Sinzvariable can be found on gadi at: