Re: Problem with regriddig 1km curvlinear data set to 8km curvlinear data set

From: <mmkamal_at_nyahnyahspammersnyahnyah>
Date: Thu Feb 21 2013 - 13:43:47 MST

Hi Marry,

What I am trying to do is to convert source data (DAYMET in 1km
curvilinear grd) into 8km curvilinear grd. I do not know which part of
the code I should change in that case.

Thanks
Kamal

Quoting Mary Haley <haley@ucar.edu>:

> You have conflicting code below. It looks like you are setting up
> your *source* grid to be the curvilinear grid. I thought you wanted
> the destination grid to be the curvilinear one?
>
> You need to use the SrcXXX options for the grid that you are
> starting with, and the DstXXX options for the grid you want to
> regrid to.
>
> You also have this, which is contradictory:
>
>> lat = fspan( min(lat2d),max(lat2d), kpts )
>> lon = fspan( min(lon2d),max(lon2d), kpts )
>>
>> printVarSummary(lat)
>>
>> printVarSummary(lon)
>> Opt@DstGridType = "curvilinear"
>> Opt@DstGridLat = lat
>> Opt@DstGridLon = lon
>> Opt@DstRegional = True
>> Opt@DstFileName = dstPathName ; grid description of source tile
>
> You're saying the destination grid is curvilinear, and then giving
> it rectilinear coordinates.
>
> If you indeed want to go from the curvilinear grid to the
> rectilinear one, then don't set:
>
>> Opt@DstGridType = "curvilinear"
>
> Just remove that line all together.
>
> If you want to go from the rectilinear grid to the curvilinear grid,
> then you need to swap your Dst and Src options.
> Do not set DstGridType or SrcGridType. ESMF_regrid can figure these
> out from the coordinates you're giving it.
>
> --Mary
>
>
> On Feb 21, 2013, at 11:06 AM, mmkamal@uwaterloo.ca wrote:
>
>> Hi Marry,
>>
>>
>> Thank you for your mail. Could you please suggest me which part of
>> the code I should change by what ? Here you go the code I am using:
>>
>> ==========================================================
>> ;---Open data source file
>> sfile = addfile(DataPathName,"r")
>>
>> ;---Get the source file data (Daymet) lat/lon grid: used for src
>> grid description
>> lat2d = sfile->lat
>> lon2d = sfile->lon
>>
>> dim2d = dimsizes(lat2d)
>> nlat = dim2d(0)
>> mlon = dim2d(1)
>>
>> ;---Get the Daymet source variable
>> var = sfile->$vname$ ; (time, y, x)
>>
>> ;---Define assorted source grid (Daymet) options
>> Opt@SrcGridType = "curvilinear"
>> Opt@SrcGridLat = lat2d
>> Opt@SrcGridLon = lon2d
>> Opt@SrcRegional = True
>> Opt@SrcFileName = srcPathName ; grid description
>> of source tile
>> ;---Create the destination lat/lon grid
>> dll = 0.1 ; tenth of degree spacing
>> kpts= toint(2.0/dll)+1 ; 2 deg is Daymet
>> grid spacing
>> lat = fspan( min(lat2d),max(lat2d), kpts )
>> lon = fspan( min(lon2d),max(lon2d), kpts )
>>
>> printVarSummary(lat)
>>
>> printVarSummary(lon)
>> Opt@DstGridType = "curvilinear"
>> Opt@DstGridLat = lat
>> Opt@DstGridLon = lon
>> Opt@DstRegional = True
>> Opt@DstFileName = dstPathName ; grid description of source tile
>>
>> ;---Set method
>> Opt@InterpMethod = method
>>
>> var_regrid = ESMF_regrid(var,Opt) ; Do the regridding for 'var'
>> printVarSummary(var_regrid)
>>
>> end
>>
>> =============================================================================
>>
>>
>> Thanks
>> Kamal
>>
>>
>>
>> Quoting Mary Haley <haley@ucar.edu>:
>>
>>> Hi Kamal,
>>>
>>> You can't simply change the DstGridType to curvilinear. Really,
>>> that option
>>> should only be used when you are calling ESMF_regrid_with_weights.
>>>
>>> A curvilinear grid means you have two-dimensional (2D) lat/lon arrays that
>>> represent the grid.
>>>
>>> If you want to regrid to a curvilinear grid, then you need to provide the
>>> curvilinear lat/lon coordinates via these two options:
>>>
>>> Opt@DstGridLat = lat
>>> Opt@DstGridLon = lon
>>> In this particular example, "lat" and "lon are calculated as 1D
>>> coordinate arrays. You need to
>>> replace this code with the 2D lat/lon arrays that represent your
>>> curvilinear grid.
>>>
>>> --Mary
>>>
>>> On Feb 20, 2013, at 2:29 PM, mmkamal@uwaterloo.ca wrote:
>>>
>>>> Hi,
>>>>
>>>> I have been trying to re-grid DAYMET 1km dataset into 8km using the
>>>> example NCL script prepared to convert from curvlinear to rectilinear
>>>> grd (http://www.ncl.ucar.edu/Applications/Scripts/daymet_3.ncl). My
>>>> problem is that I want to convert 1km curvlinear DAYMET data into 8km
>>>> curvlinear dataset. Therefore, I set the
>>>>
>>>> Opt@DstGridType = "curvilinear"
>>>>
>>>>
>>>> I have not changed any other option in the example script. The script
>>>> works fine when used to convert from curvlinear to rectilinear grd but
>>>> failed when trying to use to convert 1km curvlinear DAYMET data into
>>>> 8km curvlinear data set. It gives the following error message:
>>>>
>>>>
>>>> gpc-f101n084-$ ncl test.ncl
>>>> Copyright (C) 1995-2012 - All Rights Reserved
>>>> University Corporation for Atmospheric Research
>>>> NCAR Command Language Version 6.1.0
>>>> The use of this software is governed by a License Agreement.
>>>> See http://www.ncl.ucar.edu/ for more details.
>>>>
>>>> Variable: lat
>>>> Type: double
>>>> Total Size: 168 bytes
>>>> 21 values
>>>> Number of Dimensions: 1
>>>> Dimensions and sizes: [21]
>>>> Coordinates:
>>>>
>>>> Variable: lon
>>>> Type: double
>>>> Total Size: 168 bytes
>>>> 21 values
>>>> Number of Dimensions: 1
>>>> Dimensions and sizes: [21]
>>>> Coordinates:
>>>> fatal:Number of dimensions in parameter (1) of (curvilinear_to_SCRIP)
>>>> is (1), (2) dimensions were expected
>>>> fatal:["Execute.c":7743]:Execute: Error occurred at or near line 2978
>>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>>>>
>>>> fatal:["Execute.c":7743]:Execute: Error occurred at or near line 3098
>>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl
>>>>
>>>> fatal:["Execute.c":7743]:Execute: Error occurred at or near line 100
>>>> in file test.ncl
>>>>
>>>>
>>>>
>>>> ==================================================
>>>> Here is the source data description:
>>>> ==================================================
>>>> gpc-f101n084-$
>>>> /scinet/gpc/Libraries/netcdf-4.1.3/serial_gcc/bin/ncdump -h
>>>> prcp.2010_12296.nc
>>>> netcdf prcp.2010_12296 {
>>>> dimensions:
>>>> x = 212 ;
>>>> y = 250 ;
>>>> time = 365 ;
>>>> nv = 2 ;
>>>> variables:
>>>> short lambert_conformal_conic ;
>>>> lambert_conformal_conic:grid_mapping_name =
>>>> "lambert_conformal_conic" ;
>>>> lambert_conformal_conic:longitude_of_central_meridian
>>>> = -100. ;
>>>>
>>>> lambert_conformal_conic:latitude_of_projection_origin = 42.5 ;
>>>> lambert_conformal_conic:false_easting = 0. ;
>>>> lambert_conformal_conic:false_northing = 0. ;
>>>> lambert_conformal_conic:standard_parallel = 25., 60. ;
>>>> double x(x) ;
>>>> x:units = "m" ;
>>>> x:long_name = "x coordinate of projection" ;
>>>> x:standard_name = "projection_x_coordinate" ;
>>>> double y(y) ;
>>>> y:units = "m" ;
>>>> y:long_name = "y coordinate of projection" ;
>>>> y:standard_name = "projection_y_coordinate" ;
>>>> double time(time) ;
>>>> time:long_name = "time" ;
>>>> time:calendar = "standard" ;
>>>> time:units = "days since 1980-01-01 00:00:00 UTC" ;
>>>> time:bounds = "time_bnds" ;
>>>> double lat(y, x) ;
>>>> lat:units = "degrees_north" ;
>>>> lat:long_name = "latitude coordinate" ;
>>>> lat:standard_name = "latitude" ;
>>>> double lon(y, x) ;
>>>> lon:units = "degrees_east" ;
>>>> lon:long_name = "longitude coordinate" ;
>>>> lon:standard_name = "longitude" ;
>>>> short yearday(time) ;
>>>> yearday:long_name = "yearday" ;
>>>> yearday:valid_range = 1s, 365s ;
>>>> float prcp(time, y, x) ;
>>>> prcp:long_name = "daily total precipitation" ;
>>>> prcp:units = "mm/day" ;
>>>> prcp:missing_value = -9999.f ;
>>>> prcp:_FillValue = -9999.f ;
>>>> prcp:valid_range = 0.f, 200.f ;
>>>> prcp:coordinates = "lat lon" ;
>>>> prcp:grid_mapping = "lambert_conformal_conic" ;
>>>> prcp:cell_methods = "area: sum time: sum" ;
>>>> double time_bnds(time, nv) ;
>>>>
>>>> // global attributes:
>>>> :tileid = 12296s ;
>>>> :start_year = 2010s ;
>>>> :source = "Daymet Software Version 2.0" ;
>>>> :Version_software = "Daymet Software Version 2.0" ;
>>>> :Version_data = "Daymet Data Version 2.1" ;
>>>> :Conventions = "CF-1.4" ;
>>>> :citation = "Please see http://daymet.ornl.gov/ for
>>>> current Daymet data citation information" ;
>>>> :references = "Please see http://daymet.ornl.gov/ for
>>>> current information on Daymet references" ;
>>>> }
>>>>
>>>> ===========================================================================
>>>>
>>>>
>>>> I look forward to hearing from you.
>>>>
>>>> Thanks
>>>> Kamal
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>>
>>
>>
>>
>
>

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Feb 21 13:47:11 2013

This archive was generated by hypermail 2.1.8 : Fri Feb 22 2013 - 17:42:16 MST