[ncl-talk] ESMF regridding

Rashed Mahmood rashidcomsis at gmail.com
Thu Mar 25 14:24:02 MDT 2021


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210325/19b74556/attachment.html>


More information about the ncl-talk mailing list