[ncl-talk] ESMF regridding

Chathurika chatu at scsio.ac.cn
Fri Mar 26 01:01:17 MDT 2021


Dear Rashed and Dennis,




Millions of thanks for your kindness and help.




I think that I figured out the mistake that I was making whole the time. That's why my script works for the time mean.




 Opt at SrcMask2D   = where(.not.ismissing(zos(0,:,:)),1,0)




It was in this line. Here I gave the zos (:,:,:), including the time dimension. From the error I could not figure it out. 

But when I try the method which Rashed sent me, I figured this out. Thank you so much Rashed. 

Now my script works fine. I was making a silly mistake which I did not notice. And So sorry for the trouble.




Many many thanks for your time and kindness. Because of that I could figure this out.




Best Regards,

Chathu






-----Original Messages-----
From:"Rashed Mahmood" <rashidcomsis at gmail.com>
Sent Time:2021-03-26 04:24:02 (Friday)
To: Chathurika <chatu at scsio.ac.cn>
Cc: "Dennis Shea" <shea at ucar.edu>, ncl-talk <ncl-talk at ucar.edu>
Subject: Re: [ncl-talk] ESMF regridding


Hi Chathu,
I am sure Dennis would provide a best answer for this...I am still wondering if you can try the following code, (I assume you have zos1, and zos2 which you want to compare? the following should regrid both for 3*3 grid which can change by changing NLAT and MLON):


 zos1 = ...
 zos1 at lat2d = f[13]->latitude
 zos1 at lon2d = f[13]->longitude

 zos2 = ...
 zos2 at lat2d = ?
 zos2 at lon2d = ?


 NLAT = 60
 MLON = 120
 LATS = latGlobeFo(NLAT, "Lat", "latitude" , "degrees_north")
 LONS = lonGlobeFo(MLON, "Lon", "longitude", "degrees_east" )
 
 Opt                = True
 Opt at InterpMethod   = "bilinear"
 Opt at ForceOverwrite = True
 Opt at DstTitle       = "regridded file"
 Opt at DstGridLat  = LATS
 Opt at DstGridLon = LONS

 Opt at SrcMask2D   = where(.not.ismissing(zos1(0,:,:)),1,0)
 zos1_regrid            = ESMF_regrid(zos1,Opt)                       ;  => zos1_regrid(time,lat,lon)

 Opt at SrcMask2D   := where(.not.ismissing(zos2(0,:,:)),1,0)
 zos2_regrid             = ESMF_regrid(zos2,Opt)                     ;   => zos2_regrid(time,lat,lon)








On Thu, Mar 25, 2021 at 8:23 PM Chathurika via ncl-talk <ncl-talk at mailman.ucar.edu> wrote:


Dear Dennis,




I have shared the files in the google drive. Hope you did notice it. 




Thank you so much and best regards,

Chathu



-----Original Messages-----
From:"Dennis Shea" <shea at ucar.edu>
Sent Time:2021-03-26 00:03:34 (Friday)
To: Chathurika <chatu at scsio.ac.cn>
Cc: ncl-talk <ncl-talk at mailman.ucar.edu>
Subject: Re: Re: [ncl-talk] ESMF regridding


For sure, you should not "reorder the dimensions"


Could you ftp two sample files?  dropbox?



ftp ftp.cgd.ucar.edu
anonymous
your_email
cd incoming

put zos.....nc
put zos...nc

quit


You can notify me directly after successful file transmission.





On Thu, Mar 25, 2021 at 1:53 AM Chathurika <chatu at scsio.ac.cn> wrote:


Dear Dennis,




Many many thanks for your reply. Can we keep the time step in the following ESMF functions? Because I get the 'error' which is 




'fatal:Eq: Dimension size, for dimension number 0, of operands does not match, can't continue

fatal:["Execute.c":8637]:Execute: Error occurred at or near line 1623 in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl'







The code which I used;




  diri = "./"
   fili = systemfunc("cd "+diri+" ; ls zos_*.nc")
   nfili= dimsizes(fili)
   print("nfili="+nfili)


   f    = addfiles(diri+fili,"r")
   ListSetType (f, "cat")  
   print(str_join(getfilevarnames(f[0]),", "))


   zos1= f[29:32]->zos(:,:,:)
   printVarSummary(zos1)


  time = f[29:32]->time(:)
  T = cd_calendar(time, -1)
  printVarSummary(T)
  printMinMax(T, False)




;---Interpolation methods


;---Output (and input) files
    srcGridName  = "CMIP5_SCRIP.nc"
    dstGridName  = "World1deg_SCRIP.nc"
    wgtFile      = "CMIP5_2_World_bilinear.nc"


;---Get data and lat/lon grid from CMIP5 Grid


    cmip5_lat2d = f[13]->latitude
    cmip5_lon2d = f[13]->longitude
    latlon_dims = dimsizes(cmip5_lon2d)




;----------------------------------------------------------------------
; Convert CMIP5 to SCRIP file.
;----------------------------------------------------------------------
      Opt                = True
      Opt at Mask2D         = where(.not.ismissing(zos1),1,0)
      Opt at GridCornerLat  = f[13]->vertices_latitude
      Opt at GridCornerLon  = f[13]->vertices_longitude
      Opt at PrintTimings   = True
      Opt at ForceOverwrite = True
      Opt at Debug          = True


      curvilinear_to_SCRIP(srcGridName,cmip5_lat2d,cmip5_lon2d,Opt)


;---Clean up
      delete(Opt)




;----------------------------------------------------------------------
; Convert 1 degree world grid to SCRIP file
;----------------------------------------------------------------------
      Opt                = True
      Opt at ForceOverwrite = True
      Opt at LLCorner       = (/-90.00d, -180.00d /)
      Opt at URCorner       = (/ 90.00d, 180.00d /) 
      ;Opt at Title          = "World Grid 1-degree Resolution"
      Opt at PrintTimings   = True
      Opt at Debug          = True


      latlon_to_SCRIP(dstGridName,"1x1",Opt)


;---Clean up
      delete(Opt)
 


;----------------------------------------------------------------------
; Loop across each method and generate interpolation weights for 
; CMIP5 Grid to World Grid    
;----------------------------------------------------------------------
        Opt                      = True
        Opt at ForceOverwrite       = True
        Opt at SrcESMF              = False
        Opt at DstESMF              = False
        Opt at InterpMethod         = "bilinear"
        Opt at PrintTimings         = True




        ESMF_regrid_gen_weights(srcGridName, dstGridName, wgtFile, Opt)


;---Clean up
        delete(Opt)




;----------------------------------------------------------------------
; Interpolate data from CMIP5 to World 1-degree grid.
;----------------------------------------------------------------------
      Opt                = True
      Opt at PrintTimings   = True
      Opt at Debug          = True


      zos1_regrid = ESMF_regrid_with_weights(zos1,wgtFile,Opt)


      printVarSummary(var_regrid)
;----------------------------------------------------------------------
delete(Opt)



The script works fine when I input the time mean (zos(:,:)). I reorder the dimensions (zos(lat|:,lon|:,time|:). None of this works and I am not very good at this. So please help me.







Thank you very much and best regards,

Chathu

-----Original Messages-----
From:"Dennis Shea" <shea at ucar.edu>
Sent Time:2021-03-25 02:57:04 (Thursday)
To: Chathurika <chatu at scsio.ac.cn>
Cc: "Rashed Mahmood" <rashidcomsis at gmail.com>, ncl-talk <ncl-talk at mailman.ucar.edu>
Subject: Re: [ncl-talk] ESMF regridding


Let variable:  R(time,latR,lonR)



If you input a variable with SOURCE dimensions HR(time, lat_source, lon_source) and specify your destination as latR,lonR

via ESMF you will get LR (time, latR, lonR)



DIFF = LR-R    ; DIFF(time,latR,lonR)







On Wed, Mar 24, 2021 at 12:38 PM Chathurika via ncl-talk <ncl-talk at mailman.ucar.edu> wrote:


Dear Rashed

Many thanks for you email. I know this way. But what I want is regrid both dataset into one grid without removing the time dimension from it. To get the differences of datasets (HR-LR), I need to regrid them into the same dimension. Using the method you mentioned, I can plot the map. But how can I get the difference (HR-LR)?




Thanks once again and best,

Chathu


-----Original Messages-----
From:"Rashed Mahmood" <rashidcomsis at gmail.com>
Sent Time:2021-03-25 01:38:37 (Thursday)
To: Chathurika <chatu at scsio.ac.cn>
Cc:ncl-talk at mailman.ucar.edu
Subject: Re: [ncl-talk] ESMF regridding


Hi Chatu,


ESMF regridding works fine for 3 dimensional data. What makes you think it does not?



Likely you would need to attach the 2d coordinate arrays with the variables, e.g.:


varb1 at lat2d  = infile1->latitude      

varb1 at lon2d = infile1->longitude


varb2 at lat2d  = infile2->latitude      

varb2 at lon2d = infile2->longitude


If this does not work, then share a full script (and any error messages you get).


HTH
Rashed









On Wed, Mar 24, 2021 at 4:28 PM Chathurika via ncl-talk <ncl-talk at mailman.ucar.edu> wrote:


Dear All,




Thank you so much for reading my email and helping me out to solve this issue.




I want to perform the significance test (ttest) over time dimension for the differences of two datasets which have lat[:,:] and lon[:,:] (two dimensional, like WRF). 




 differences = (high resolution - low resolution). 




However, the dimensions of lat and lon are not same. The variable summary is;




Low resolution:

Type: float

Total Size: 54067200 bytes

            13516800 values

Number of Dimensions: 3

Dimensions and sizes: [time | 240] x [j | 220] x [i | 256]

Coordinates: 

            time: [52975.5..60249.5]

            j: [0..219]

            i: [0..255]

Number Of Attributes: 11

  standard_name : sea_surface_height_above_geoid

  long_name : Sea Surface Height Above Geoid

  comment : This is the dynamic sea level, so should have zero global area mean. It should not include inverse barometer depressions from sea ice.

  units : m

  original_name : zos

  cell_methods : area: mean where sea time: mean

  cell_measures : area: areacello

  history : 2019-09-04T15:31:31Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).

  missing_value : 1e+20

  _FillValue : 1e+20

  coordinates : latitude longitude







High resolution:




Type: float

Total Size: 311047680 bytes

            77761920 values

Number of Dimensions: 3

Dimensions and sizes: [time | 240] x [j | 404] x [i | 802]

Coordinates: 

            time: [52975.5..60249.5]

            j: [0..403]

            i: [0..801]

Number Of Attributes: 11

  standard_name : sea_surface_height_above_geoid

  long_name : Sea Surface Height Above Geoid

  comment : This is the dynamic sea level, so should have zero global area mean. It should not include inverse barometer depressions from sea ice.

  units : m

  original_name : zos

  cell_methods : area: mean where sea time: mean

  cell_measures : area: areacello

  history : 2019-08-25T07:38:10Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).

  missing_value : 1e+20

  _FillValue : 1e+20

  coordinates : latitude longitude




*latitude and longitude have two dimensions.







I cannot do ESMF regridding as per it is not allowed to use the all three dimensions (time, lat, lon). I am little confused here, How can I use ESMF regridding and keep the time dimension also. If so, after regridding, I can perform the ttest for the resolution difference.




Please help me and Many many thanks.




Best regards,

Chathu





Wickramage Chathurika Hemamali
Msc in Physical Oceanography
State Key Laboratory of Tropical Oceanography
South China Sea Institute of Oceanology
University of Chinese Academy of Science
China


Specialized in Oceanography and Marine Geology (Bachelor)
University of Ruhuna
Matara
Sri Lanka


Email : wickramagechathurika at rocketmail.com
chatu at scsio.ac.cn
_______________________________________________
ncl-talk mailing list
ncl-talk at mailman.ucar.edu
List instructions, subscriber options, unsubscribe:
https://mailman.ucar.edu/mailman/listinfo/ncl-talk






Wickramage Chathurika Hemamali
Msc in Physical Oceanography
State Key Laboratory of Tropical Oceanography
South China Sea Institute of Oceanology
University of Chinese Academy of Science
China


Specialized in Oceanography and Marine Geology (Bachelor)
University of Ruhuna
Matara
Sri Lanka


Email : wickramagechathurika at rocketmail.com
chatu at scsio.ac.cn
_______________________________________________
ncl-talk mailing list
ncl-talk at mailman.ucar.edu
List instructions, subscriber options, unsubscribe:
https://mailman.ucar.edu/mailman/listinfo/ncl-talk






Wickramage Chathurika Hemamali
Msc in Physical Oceanography
State Key Laboratory of Tropical Oceanography
South China Sea Institute of Oceanology
University of Chinese Academy of Science
China


Specialized in Oceanography and Marine Geology (Bachelor)
University of Ruhuna
Matara
Sri Lanka


Email : wickramagechathurika at rocketmail.com
chatu at scsio.ac.cn






Wickramage Chathurika Hemamali
Msc in Physical Oceanography
State Key Laboratory of Tropical Oceanography
South China Sea Institute of Oceanology
University of Chinese Academy of Science
China


Specialized in Oceanography and Marine Geology (Bachelor)
University of Ruhuna
Matara
Sri Lanka


Email : wickramagechathurika at rocketmail.com
chatu at scsio.ac.cn
_______________________________________________
ncl-talk mailing list
ncl-talk at mailman.ucar.edu
List instructions, subscriber options, unsubscribe:
https://mailman.ucar.edu/mailman/listinfo/ncl-talk






Wickramage Chathurika Hemamali
Msc in Physical Oceanography
State Key Laboratory of Tropical Oceanography
South China Sea Institute of Oceanology
University of Chinese Academy of Science
China


Specialized in Oceanography and Marine Geology (Bachelor)
University of Ruhuna
Matara
Sri Lanka


Email : wickramagechathurika at rocketmail.com
chatu at scsio.ac.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210326/ab9262a0/attachment.html>


More information about the ncl-talk mailing list