[ncl-talk] To read ocean model output data

Dennis Shea shea at ucar.edu
Thu Nov 1 21:26:11 MDT 2018


[0] General comment: The primary variable is:

        float t(*time,* z, y, x) ;
                t:long_name = "potential temperature" ;
                t:units = "K" ;
                t:coordinates = "east_e north_e  zz" ;

Here *time *is the *record dimension*.

The *addfiles*
<http://www.ncl.ucar.edu/Document/Functions/Built-in/addfiles.shtml>
function concatenates [ aggregates ] along the *record dimension [ time ]*

--

[1] The 'time' variable *is* *monotonic.*

There is nothing wrong with what you did. However, my *personal preference*
would be to

Replace:

  temp  = a[:]->t
  Time  = a[:]->time

With

  temp   = a[:]->t
  time    = temp*&*time    ; extract the 'time' associated with the
variable to be used

FYI: The *isMonotonic*
<http://www.ncl.ucar.edu/Document/Functions/Contributed/isMonotonic.shtml>
function can test a variable

    mono =* isMonotonic*(time)   ; -1 (monotonic decreasing), 0 (not
monotonic, +1 (monotonic increasing)
or
    mono =* isMonotonic*(t*&*time)

Your time variable would be +1
----------------

[2] Error message:
*warning: Aggregated dimension coordinate values are non-monotonic; check
aggregated file ordering.*

The variables* east_e *and *north_e *do *NOT* have a  record dimension (
*time*)

       float east_e(y, x) ;
                east_e:long_name = "easting of elevation points" ;
                east_e:units = "metre" ;
                east_e:coordinates = "east_e north_e" ;
        float north_e(y, x) ;
                north_e:long_name = "northing of elevation points" ;
                north_e:units = "metre" ;
                north_e:coordinates = "east_e north_e" ;

Using the *[:] *syntax causes *addfiles* to use the 'y' dimension as the
record dimension. This is neither monotonic nor a record dimension.

Replace:

 lon2d  = a[:]->east_e    ; <==== * [:]*
 lat2d   = a[:]->north_e

I do not like using the 'lat2d' & 'lon2d' names. These are (currently) not
Latitude and Longitude.
With (say)

 e2d  = a[0]->east_e    ; <====  *[0]* , Read from 1st file only. No
aggregation
 n2d  = a[0]->north_e
----------------

[3] metre ==> latitude/longitude

I am not sure it can be done with the information on the file.
I have no expertise with converting 'northing'/'easting' meters to latitude
and longitude.

I *speculate* these are based upon the  *Universal Transverse Mercator* (
*UTM*)
<https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system>conformal
projection which uses a 2-dimensional Cartesian coordinate system to give
locations on the surface of the Earth.

Again, I have no expertise, but in my opinion, the additional information
needed may be a *utm_zone(y,x) *variable and a descriptor (attribute)
specifying
the base [DATUM]  being used*: *??? WGS_84_DATUM ???

Then, NCL's *utm2latlon*
<http://www.ncl.ucar.edu/Document/Functions/Built-in/utm2latlon.shtml>
could likely be used. The interface to this function could be improved but
it can be made to work.

----
[4]

The *temp *variable uses *0* to indicate land. Really, this is a very poor
choice. Land should be set to some _FillValue. That way,
it will be ignored in any computations.

---
[5] Use *printVarSummary* and *printMinMax* to keep track of the data. It
is *YOUR RESPONSIBILITY* to 'know your data'. Not ncl-talk!

---
[6]
That attached script plots the variable using index values. You can
recognize the Indian Ocean and aurrounding land masses.

%> ncl jyothi.ncl

Good Luck

On Thu, Nov 1, 2018 at 10:55 AM Jyothi L <jyothir033 at gmail.com> wrote:

> Thanks for the response. The output for the script is as follows:
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [ 0.. 0]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)     0
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [0.25..0.25]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    0.25
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [0.5..0.5]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    0.5
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [0.75..0.75]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    0.75
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [ 1.. 1]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)     1
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [1.25..1.25]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    1.25
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [1.5..1.5]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    1.5
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [1.75..1.75]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    1.75
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [ 2.. 2]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)     2
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [2.25..2.25]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    2.25
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [2.5..2.5]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    2.5
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [2.75..2.75]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    2.75
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [ 3.. 3]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)     3
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [3.25..3.25]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    3.25
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [3.5..3.5]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    3.5
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [3.75..3.75]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    3.75
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [ 4.. 4]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)     4
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [4.25..4.25]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    4.25
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [4.5..4.5]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    4.5
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [4.75..4.75]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)    4.75
>
>
> Variable: time (file variable)
> Type: float
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes:    [time | 1]
> Coordinates:
>             time: [ 5.. 5]
> Number Of Attributes: 2
>   long_name :    time
>   units :    days since 2017-12-01 00:00:00 +00:00
> (0)     5
>
>
> On Thu, Nov 1, 2018 at 9:01 PM Mary Haley <haley at ucar.edu> wrote:
>
>> Jyothi,
>>
>> Thanks for providing the one file. We would need to see information about
>> the other files, however, in order to determine why NCL couldn't aggregate
>> the time dimension. We need to see what the time variable looks like across
>> all the files.
>>
>> It may be the case that time is monotonic on one file, but when you
>> concatenate time across several files, it may not be monotonic depending on
>> the "units" of each time variable and the values. If the units are
>> different for each file, then this is going to be an issue, because NCL
>> assumes that the aggregated dimension has the same units across all files.
>>
>> Can you run this small script for me and email the output back to
>> ncl-talk:
>>
>> dir =
>> "/incois_ncmrwfx/incois/hycom/hwrf_output/pytmp/POMcoupled_emcPHY/com/2017120100/03B/"
>> files  = systemfunc("ls " + dir + "ockhi03b.2017120100.pom.00*.nc")
>>
>> do nf=0,dimsizes(files)-1
>>   a = addfile(files(nf),"r")
>>   print(a->time)
>> end do
>>
>> Hopefully I don't have any typos in the code.
>>
>> Thanks,
>>
>> --Mary
>>
>>
>>
>>
>> On Wed, Oct 31, 2018 at 8:55 PM, Jyothi L <jyothir033 at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I am trying to analyze the output from a list of forecast files
>>> simulated by Ocean Model. However, I have few issues regarding this output
>>> data.
>>>
>>> 1) *Regarding Time: *
>>> I used "cat" to combine the list of 21 forecast files. My idea behind
>>> merging is to make a time vs depth section. NCl shows the following error.
>>> Should I go with join instead of cat??
>>> *ERROR*
>>> *     warning:Aggregated dimension coordinate values are non-monotonic;
>>> check aggregated file ordering.*
>>> (Is it something to do with my Time values?)
>>>
>>> printVarSummary(Time)
>>> Variable: Time
>>> Type: float
>>> Total Size: 84 bytes
>>>             21 values
>>> Number of Dimensions: 1
>>> Dimensions and sizes:    [time | 21]
>>> Coordinates:
>>>             time: [ 0.. 5]
>>> Number Of Attributes: 2
>>>   long_name :    time
>>>   units :    days since 2017-12-01 00:00:00 +00:00
>>> (0)     0
>>> (1)    0.25
>>> (2)    0.5
>>> (3)    0.75
>>> (4)     1
>>> (5)    1.25
>>> (6)    1.5
>>> (7)    1.75
>>> (8)     2
>>> (9)    2.25
>>> (10)    2.5
>>> (11)    2.75
>>> (12)     3
>>> (13)    3.25
>>> (14)    3.5
>>> (15)    3.75
>>> (16)     4
>>> (17)    4.25
>>> (18)    4.5
>>> (19)    4.75
>>> (20)     5
>>> How do I get the regular time axis from the above values?
>>>
>>> 2) *Regarding lat and lon :*
>>> I found the units of lat and lon are in meters. I want to convert them
>>> into degrees. I could get the conversion from radians to degrees and vice
>>> versa, but not meters to degrees. And also, this data is in curvilinear
>>> grid I suppose.
>>>
>>> 2) *Regarding depth:*
>>> Model output is in sigma coordinate system, where I would like to
>>> convert it into regular depth levels(meters). I found couple of examples in
>>> this regard which didn't help me much.
>>>  ockhi03b.2017120100.pom.0000.nc
>>> <https://drive.google.com/file/d/17Dc8CpN0gtgGFUX5H_iYhpgmQnnDpZYX/view?usp=drive_web>
>>>
>>> ********************************
>>> Below is a sample script where I tried to plot a 2D temperature plot at
>>> first time step over surface. (to check the data)
>>>
>>> dir    =
>>> "/incois_ncmrwfx/incois/hycom/hwrf_output/pytmp/POMcoupled_emcPHY/com/2017120100/03B/"
>>> files  = systemfunc("ls " + dir + "ockhi03b.2017120100.pom.00*.nc")
>>> a      = addfiles(files,"r")
>>> ListSetType(a,"cat")
>>> vNames = getfilevarnames(a[0])
>>> print(vNames)
>>>
>>> ;----- Read character variable Times
>>>
>>>  temp                = a[:]->t
>>>  Time                = a[:]->time
>>>  dep                 = a[:]->z
>>>  lon2d          = a[:]->east_e
>>>  lat2d          = a[:]->north_e
>>> ;;temp at lon2d = a[:]->east_e  ;;creating errors when I use
>>> ;;temp at lat2d  = a[:]->north_e ;;ditto
>>> printVarSummary(lon2d)
>>> printVarSummary(lat2d)
>>>
>>> wks = gsn_open_wks("png","testOceanOutput")
>>> res            = True
>>> res at cnFillOn   = True
>>> res at cnLinesOn  = False
>>>
>>> plot = gsn_csm_contour(wks,temp(0,0,:,:),res)
>>>
>>> This script makes a plot, which is INCORRECT. I have uploaded the data
>>> file using ftp. Kindly look into my data and give your suggestions.
>>>
>>> Thanks in advance for your time and support.
>>>
>>> Regards
>>> Jyothi
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181101/c60ec613/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jyothi.ncl
Type: application/octet-stream
Size: 2138 bytes
Desc: not available
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181101/c60ec613/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: testOceanOutput.000002.png
Type: image/png
Size: 52008 bytes
Desc: not available
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181101/c60ec613/attachment-0001.png>


More information about the ncl-talk mailing list