[ncl-talk] Problem with ESMF_regrid
Mary Haley
haley at ucar.edu
Tue Nov 14 09:11:05 MST 2017
Tomoko,
I think what's happening is that your data has coordinate arrays called i
and j, which are NOT latitude / longitude values. The regridding function
is trying to use these as lat / lon values, because coordinate arrays take
precedence. (Maybe this is something I need to reconsider).
Before you do the regridding, delete the i and j coordinate arrays:
delete(var&i)
delete(var&j)
--Mary
On Mon, Nov 13, 2017 at 4:44 PM, Tomoko Koyama <Tomoko.Koyama at colorado.edu>
wrote:
> Thank you very much, Dennis.
>
> I modified the script following your suggestion and it worked except for
> IPSL-CM5A-LR output.
>
> The error message is the same:
> “Assignment type mismatch, right hand side can't be coerced to type of
> left hand side” occurring at
> var_regrid = ESMF_regrid(var,Opt)
>
> Could you tell me what I miss?
>
> Tomoko
>
> +++++++++++++++++
> + Error message +
> +++++++++++++++++
>
> Copyright (C) 1995-2015 - All Rights Reserved
> University Corporation for Atmospheric Research
> NCAR Command Language Version 6.3.0
> The use of this software is governed by a License Agreement.
> See http://www.ncl.ucar.edu/ for more details.
>
> Variable: var
> Type: float
> Total Size: 6176395680 <(617)%20639-5680> bytes
> 1544098920 values
> Number of Dimensions: 3
> Dimensions and sizes: [time | 56940] x [j | 149] x [i | 182]
> Coordinates:
> time: [ 0.5..56939.5]
> j: [1..149]
> i: [1..182]
> Number Of Attributes: 13
> standard_name : sea_ice_area_fraction
> long_name : Sea Ice Area Fraction
> comment : fraction of grid cell covered by sea ice.
> units : %
> original_name : ileadfra
> original_units : 1
> history : 2011-07-03T20:18:11Z altered by CMOR: Converted units from
> '1' to '%'. 2011-07-03T20:18:11Z altered by CMOR: replaced missing value
> flag (9.96921e+36) with standard missing value (1e+20).
> cell_methods : time: mean (interval: 30 minutes)
> cell_measures : area: areacello
> missing_value : 1e+20
> _FillValue : 1e+20
> associated_files : baseURL: http://cmip-pcmdi.llnl.gov/
> CMIP5/dataLocation gridspecFile: gridspec_seaIce_fx_IPSL-CM5A-LR_historical_r0i0p0.nc
> areacello: areacello_fx_IPSL-CM5A-LR_historical_r0i0p0.nc
> coordinates : lat lon
> (0) get_src_grid_info: source lat dims = (149)
> (0) get_src_grid_info: source lon dims = (182)
> (0) get_src_grid_info: source grid type is 'rectilinear'
> (0) curvilinear_to_SCRIP: calculating grid corners...
> (0) curvilinear_to_SCRIP: one or more lat values are at the
> (0) poles, so calculating grid corners using
> (0) calc_SCRIP_corners_boundaries...
> (0) calc_SCRIP_corners_boundaries
> (0) min/max original lat: 1/149
> (0) min/max original lon: 1/182
> fatal:Assignment type mismatch, right hand side can't be coerced to type
> of left hand side
>
> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 770 in
> file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>
>
> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 1744 in
> file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>
>
> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 1822 in
> file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>
>
> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 3851 in
> file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>
>
> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 3983 in
> file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>
>
> fatal:["Execute.c":8573]:Execute: Error occurred at or near line 88
>
>
> ++++++++++
> + Script +
> ++++++++++
>
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"
>
> method = "bilinear"
> model = "IPSL-CM5A-LR"
>
> rdiri = "/work/koyama_sice"
> in_diri = "/home/koyama/CMIP5/data/input"
> esmf_diri = in_diri + "/" + model
>
> begin
> ; Source grid
> srcGridDiri = rdiri + "/" + model
> fili = systemfunc("cd " + srcGridDiri + " ; ls sic*.nc")
> nfil = dimsizes(fili)
>
> ; Destination grid
> dstGridDiri ="/home/koyama/CMIP5/data/grid_coord"
> dstFileName = "NRims180x180.nc"
> dstGridFili = dstGridDiri + "/" + dstFileName
> dfile = addfile(dstGridDiri + "/" + dstFileName, "r")
> lat2d = dfile->latitude
> lon2d = dfile->longitude
>
> do ifil = 0, nfil-1
> srcGridFili = fili(ifil)
> sfile = addfile(srcGridDiri + "/" + srcGridFili, "r")
> dSizes = getfiledimsizes(sfile)
>
> var = sfile->sic
> if (model.eq."CCSM4" .or. model.eq."NorESM1-M") then ; See
> "get_src_grid_info"
> var at lat2d = sfile->lat ; when lat dims is 2D,
> var at lon2d = sfile->lon ; this if close is necessary
> end if ; ref. ESFM regrid - example 24
>
> printVarSummary( var )
>
> lat1d = ndtooned(lat2d)
> lon1d = ndtooned(lon2d)
> lon1d = where(lon1d.lt.0,360.0+lon1d,lon1d)
> latlon_dims = dimsizes(lat2d) ; 180x180
>
> Opt = True
>
> Opt at ForceOverwrite = True
>
> Opt at SrcFileName = esmf_diri + "/" + model +"_SCRIP.nc" ;
> output file names
> Opt at DstFileName = esmf_diri + "/" + "EASE_ESMF.nc"
> Opt at WgtFileName = esmf_diri + "/" + model +"_2_EASE_"+method+".nc"
>
> Opt at SrcInputFileName = srcGridFili ; optional, but good
> idea
> Opt at DstInputFileName = dstGridFili
>
> Opt at SkipSrcGrid = False
> Opt at SkipDstGrid = False
> Opt at SkipWgtGen = False
> Opt at DstESMF = True
>
> Indexes = ind(.not.ismissing(lon1d))
> Opt at DstGridType = "unstructured" ; Destination grid
> Opt at DstGridLat = lat1d(Indexes) ; Strip off missing data
> Opt at DstGridLon = lon1d(Indexes)
>
> Opt at RemapIndexes = True ; This is necessary to
> remap
> Opt at Indexes = Indexes ; regridded values back
> to
> Opt at IndexesDims = latlon_dims ; locations on
> destination grid
>
> Opt at InterpMethod = method
>
> Opt at Debug = True
> Opt at PrintTimings = True
>
> Opt at CopyVarCoords = False ; we can't copy the
> coords because
> ; the weights on the file
> are only
> ; for the non-missing
> lat/lon values.
>
> Opt at SrcGridMask = where(ismissing(var(0,:,:)),0,1)
>
> var_regrid = ESMF_regrid(var,Opt) ; Regrid var
>
> copy_VarAtts(var,var_regrid)
> var_regrid at _FillValue = 1.e+20
> var_regrid at missing_value = 1.e+20
> var_regrid at _FillValue = var at _FillValue
>
> var_regrid!0 = "time"
> var_regrid!1 = "i"
> var_regrid!2 = "j"
>
> if (model.eq."CCSM4") then
> time = ispan(1,dSizes(3),1)
> else
> time = ispan(1,dSizes(0),1)
> end if
> time!0 = "time"
> time at long_name = "time"
> time at units = "month"
> time&time = time
>
> var_regrid&time = time
> var_regrid&i = lat2d&i
> var_regrid&j = lat2d&j
>
> ;delete( var_regrid at lat1d )
> ;delete( var_regrid at lon1d )
> if ( isatt( var_regrid, "lat2d" ) ) then
> delete( var_regrid at lat2d )
> end if
> if ( isatt( var_regrid, "lon2d" ) ) then
> delete( var_regrid at lon2d )
> end if
>
> ;;----------------------------------------------------------------------
> ;; Write regridded data to file
> ;;----------------------------------------------------------------------
> str = str_split(srcGridFili, ".")
> filo = str(0) + ".rgrd.nc"
>
> if ( isfilepresent(srcGridDiri+"/"+filo) .eq. True ) then
> system( "rm " + filo )
> end if
>
> setfileoption("nc","Format","LargeFile")
> fo = addfile( srcGridDiri + "/" + filo,"c")
> fo->sic = var_regrid
> fo->lat = lat2d
> fo->lon = lon2d
>
> ;; Clean up
> delete( var )
> delete( time )
> delete( sfile )
> delete( Opt )
> delete( filo )
> delete( fo )
> delete( var_regrid )
>
> end do
>
> delete( dfile )
> delete( lat2d )
> delete( lon2d )
>
> end
>
>
> On Nov 13, 2017, at 8:26 AM, Dennis Shea <shea at ucar.edu> wrote:
>
> See:
> https://www.ncl.ucar.edu/Applications/ESMF.shtml
> Example 24
>
> Make appropriate changes: use 'bilinear' only
>
> Your source file has
>
>
> * coordinates : lat lon*
> replace
>
> x at lat2d = sfile->TLAT
> x at lon2d = sfile->TLONG
>
> with
>
> x at lat2d = sfile->lat
> x at lon2d = sfile->lon
>
> Good luck
>
> On Sun, Nov 12, 2017 at 2:13 PM, Tomoko Koyama <Tomoko.Koyama at colorado.edu
> > wrote:
>
>> Here’s what I can get with printVarSummary(var);
>>
>> Variable: var
>> Type: float
>> Total Size: 3588096000 bytes
>> 897024000 values
>> Number of Dimensions: 3
>> Dimensions and sizes: [time | 7300] x [j | 384] x [i | 320]
>> Coordinates:
>> time: [719050.5..726349.5]
>> j: [1..384]
>> i: [1..320]
>> Number Of Attributes: 12
>> standard_name : sea_ice_area_fraction
>> long_name : Sea Ice Area Fraction
>> comment : aice_d no change, CMIP5_table_comment: fraction of grid
>> cell covered by sea ice.
>> units : %
>> original_name : aice_d
>> cell_methods : time: mean (interval: 30 days)
>> cell_measures : area: areacello
>> history : 2014-09-29T18:12:07Z altered by CMOR: replaced missing
>> value flag (1e+30) with standard missing value (1e+20).
>> missing_value : 1e+20
>> _FillValue : 1e+20
>> associated_files : baseURL: http://cmip-pcmdi.llnl.gov/CMI
>> P5/dataLocation gridspecFile: gridspec_seaIce_fx_CCSM4_histo
>> rical_r0i0p0.nc
>> <http://secure-web.cisco.com/1yCwSrw2YG46U8ckJsCmEFAmOAIgvR9BcggFxjdaRI5vRMFbCqGU2zNh0Xia-YOHgWeEUBwnsdMPrDBBYdSVo3nzBfkl4QIQmyK0niwjRIg3zpnluAI5PK4lIbhMVFHrj7zUA_xSp1SSDuiJTdQYhH6Fgc8TsdfnjWNQ8fpLfa-AU8Avh6nXboPIO7m_0XYJj1aV15QK_o5JAVI5LoDWvqbNiJersJuWFOxpCYQMjeLRLxcwrGmGWTB47dOYhdcJxkgNjKzL3Wqkk9XK2FnklJX0nxPXQf8Trv0HJu0hktwWUK8JKqpHROboONkDKzFv0MmFfIwzCT8_xGXglOlgrx8BeOZ7D-nwKjF10lh7Semd1XWsARasZ3xai1BIKDl-lFl1KV0tM5LHBgqYeihAze7TvWCrujoV5-bYWq5EehnMRFZ-9L3piibDzcBzeYafR/http%3A%2F%2Fhistorical_r0i0p0.nc>
>> areacello: areacello_fx_CCSM4_historical_r0i0p0.nc
>> <http://secure-web.cisco.com/14ZCWlRncW_i1YOy3Yp1Q9P7Hqe9PfKa2yT6_03GLOp4VsLue11kVzLwOsYRyxQR0g0VHuI8Zf9RaQgt5_34knBeHVIZYD_P2M8NjAp8Z_TbE8kF0vDeSE7NNN6AyNJvMgs1YXEBfaugiKrdLbqZA6gjcl4UM3NWR19H98dOvUnG0QMJIXabYQTGEMEZ4rHBGzSje0oCZ719lTBnDY7yhEb9fDLtlMSOQgnNPdFHYGpaw6JyPlo7t-u7eJ-hR7cloVlGsMka_8ZIkegX7vF_VHBL55HtiX-IA5QxV2e2gjqcg57LY6j4J5104TsrzmFwFp7R7BcZqVDrAndaF5sUKPaF6LpR3bYIAlpWGkgOhsIfKfYmrrYhwBsgdXF2jMgrAjTq3ZPti8Y_9dq8LYPdve1yOOiTPDEY_c3qj8bUnI0FqZqptTU9te9RF4NZAY48m/http%3A%2F%2Fr0i0p0.nc>
>> coordinates : lat lon
>>
>> Thank you,
>> Tomoko
>>
>>
>> On Nov 12, 2017, at 9:02 AM, music piano <musicpianoljy at gmail.com> wrote:
>>
>> Hi, Tomoko
>>
>> Would you try to use printVarSummary(var) to see what type of the data is
>> ?
>>
>> On Sat, Nov 11, 2017 at 10:50 PM, Tomoko Koyama <
>> Tomoko.Koyama at colorado.edu> wrote:
>>
>>> Hello,
>>>
>>> I am trying to regrid Sea Ice Area Fraction and Sea Ice Thickness data
>>> from some CMIP5 daily data to EASE 100km grid.
>>> The following script works for Sea Level Pressure, Near-Surface
>>> Temperature, Geopotential Height etc. but not for those ice parameters.
>>>
>>> The error message is “Assignment type mismatch, right hand side can't be
>>> coerced to type of left hand side” occurring at regridding;
>>> var_regrid = ESMF_regrid(var,Opt)
>>>
>>> Does anyone see why this might be???
>>>
>>> Thank you in advance,
>>> Tomoko
>>>
>>>
>>> +++++++++++++++++
>>> + Error message +
>>> +++++++++++++++++
>>>
>>> Copyright (C) 1995-2015 - All Rights Reserved
>>> University Corporation for Atmospheric Research
>>> NCAR Command Language Version 6.3.0
>>> The use of this software is governed by a License Agreement.
>>> See http://www.ncl.ucar.edu/ for more details.
>>> (0) get_src_grid_info: source lat dims = (384)
>>> (0) get_src_grid_info: source lon dims = (320)
>>> (0) get_src_grid_info: source grid type is 'rectilinear'
>>> (0) curvilinear_to_SCRIP: calculating grid corners...
>>> (0) curvilinear_to_SCRIP: one or more lat values are at the
>>> (0) poles, so calculating grid corners using
>>> (0) calc_SCRIP_corners_boundaries...
>>> (0) calc_SCRIP_corners_boundaries
>>> (0) min/max original lat: 1/384
>>> (0) min/max original lon: 1/320
>>> fatal:Assignment type mismatch, right hand side can't be coerced to type
>>> of left hand side
>>> ^Mfatal:["Execute.c":8575]:Execute: Error occurred at or near line 770
>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>>>
>>> ^Mfatal:["Execute.c":8575]:Execute: Error occurred at or near line 1744
>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>>>
>>> ^Mfatal:["Execute.c":8575]:Execute: Error occurred at or near line 1822
>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>>>
>>> ^Mfatal:["Execute.c":8575]:Execute: Error occurred at or near line 3851
>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>>>
>>> ^Mfatal:["Execute.c":8575]:Execute: Error occurred at or near line 3983
>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>>>
>>> ^Mfatal:["Execute.c":8573]:Execute: Error occurred at or near line 86
>>>
>>> ++++++++++
>>> + Script +
>>> ++++++++++
>>>
>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"
>>>
>>> method = "bilinear"
>>> model = "CCSM4"
>>> gridtype = "latlon"
>>>
>>> rdiri = "/work/koyama_sice"
>>> in_diri = "/home/koyama/CMIP5/data/input"
>>> esmf_diri = in_diri + "/" + model
>>>
>>> begin
>>> ; Source grid
>>> srcGridDiri = rdiri + "/" + model
>>> fili = systemfunc("cd " + srcGridDiri + " ; ls sic*.nc")
>>> nfil = dimsizes(fili)
>>>
>>> ; Destination grid
>>> dstGridDiri ="/home/koyama/CMIP5/data/grid_coord"
>>> dstFileName = "NRims180x180.nc"
>>> dstGridFili = dstGridDiri + "/" + dstFileName
>>> dfile = addfile(dstGridDiri + "/" + dstFileName, "r")
>>> lat2d = dfile->latitude
>>> lon2d = dfile->longitude
>>>
>>> do ifil = 0, nfil-1
>>> srcGridFili = fili(ifil)
>>> sfile = addfile(srcGridDiri + "/" + srcGridFili, "r")
>>> dSizes = getfiledimsizes(sfile)
>>> var = sfile->sic
>>>
>>> lat1d = ndtooned(lat2d)
>>> lon1d = ndtooned(lon2d)
>>> lon1d = where(lon1d.lt.0,360.0+lon1d,lon1d)
>>> latlon_dims = dimsizes(lat2d) ; 180x180
>>>
>>> Opt = True
>>>
>>> Opt at ForceOverwrite = True
>>>
>>> Opt at SrcFileName = esmf_diri + "/" + model +"_SCRIP.nc" ;
>>> output file names
>>> Opt at DstFileName = esmf_diri + "/" + "EASE_ESMF.nc"
>>> Opt at WgtFileName = esmf_diri + "/" + model
>>> +"_2_EASE_"+method+".nc"
>>>
>>> Opt at SrcInputFileName = srcGridFili ; optional, but good
>>> idea
>>> Opt at DstInputFileName = dstGridFili
>>>
>>> Opt at SkipSrcGrid = False
>>> Opt at SkipDstGrid = False
>>> Opt at SkipWgtGen = False
>>> Opt at DstESMF = True
>>>
>>> Indexes = ind(.not.ismissing(lon1d))
>>> Opt at DstGridType = "unstructured" ; Destination grid
>>> Opt at DstGridLat = lat1d(Indexes) ; Strip off missing data
>>> Opt at DstGridLon = lon1d(Indexes)
>>>
>>> Opt at RemapIndexes = True ; This is necessary to
>>> remap
>>> Opt at Indexes = Indexes ; regridded values back
>>> to
>>> Opt at IndexesDims = latlon_dims ; locations on
>>> destination grid
>>>
>>> Opt at InterpMethod = method
>>>
>>> Opt at Debug = True
>>> Opt at PrintTimings = True
>>>
>>> Opt at CopyVarCoords = False ; we can't copy the
>>> coords because
>>> ; the weights on the
>>> file are only
>>> ; for the non-missing
>>> lat/lon values.
>>>
>>> Opt at SrcGridMask = where(ismissing(var(0,:,:)),0,1)
>>>
>>> var_regrid = ESMF_regrid(var,Opt) ; Regrid var
>>>
>>> copy_VarAtts(var,var_regrid)
>>> var_regrid at _FillValue = 1.e+20
>>> var_regrid at missing_value = 1.e+20
>>> var_regrid at _FillValue = var at _FillValue
>>>
>>> var_regrid!0 = "time"
>>> var_regrid!1 = "i"
>>> var_regrid!2 = "j"
>>>
>>> time = ispan(1,dSizes(3),1) ; CCSM4
>>> time!0 = "time"
>>> time at long_name = "time"
>>> time at units = "month"
>>> time&time = time
>>>
>>> var_regrid&time = time
>>> var_regrid&i = lat2d&i
>>> var_regrid&j = lat2d&j
>>>
>>> delete( var_regrid at lat1d )
>>> delete( var_regrid at lon1d )
>>> if ( isatt( var_regrid, "lat2d" ) ) then
>>> delete( var_regrid at lat2d )
>>> end if
>>> if ( isatt( var_regrid, "lon2d" ) ) then
>>> delete( var_regrid at lon2d )
>>> end if
>>>
>>> ;;----------------------------------------------------------------------
>>> ;; Write regridded data to file
>>> ;;----------------------------------------------------------------------
>>> str = str_split(srcGridFili, ".")
>>> filo = str(0) + ".rgrd.nc
>>> <http://secure-web.cisco.com/1qp3lTKKuGOiRenNSV2mBVPtaoJvr4FX79fNvr1SHNiH45LiiRgo791rBK5WvVJ328_9O9negnRBCXH87H-TT4hFZFC1Jx2Gv7S--nVCvs6J0xREDrJzfEWPXiFW0ZsKtPsAQY3KT5kCR2tSWv9ApyU_7pLbFlMoQoVPcHXKt28S2KbzbcZLHQW2uwsMY_9X1pYYswOB1CkCT8ykYCmwxrzjA3upf-XiQssRxyO-Hcq3GROvwl6HS6cRm8ADD85jf4dqfHXti59WTN27GCubmYXCahfUApc1vwD37weD2iAORkRo21fwXdt2L5agRiKwr_942CeBi4j5MClyorMHhE3J-G1fR5XRcSN3wOaf09LYw2mDSo2Lv64Q-tgRyuNz5JQkuXP8nMW1nYnEeI56nyx4oAO94r5Pl1Wt9GdAME62yUUhdRJKL9xMorz0xxBS1/http%3A%2F%2Frgrd.nc>
>>> "
>>>
>>> if ( isfilepresent(srcGridDiri+"/"+filo) .eq. True ) then
>>> system( "rm " + filo )
>>> end if
>>>
>>> setfileoption("nc","Format","LargeFile")
>>> fo = addfile( srcGridDiri + "/" + filo,"c")
>>> fo->var = var_regrid
>>> fo->lat = lat2d
>>> fo->lon = lon2d
>>>
>>> ;; Clean up
>>> delete( var )
>>> delete( sfile )
>>> delete( Opt )
>>> delete( filo )
>>> delete( fo )
>>> delete( var_regrid )
>>>
>>> end do
>>>
>>> delete( dfile )
>>> delete( lat2d )
>>> delete( lon2d )
>>>
>>> end
>>>
>>>
>>> _______________________________________________
>>> 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
>>
>>
>
>
> _______________________________________________
> 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/20171114/d80e8c5f/attachment.html>
More information about the ncl-talk
mailing list