[ncl-talk] ESMF bilinear regridding - error: Opt at Mask2D is not the correct dimensionality

Mirce Morales mirce.morales at gmail.com
Mon Apr 29 09:20:30 MDT 2019


Hi Dennis,

I am sorry, I totally overlooked the order of the dimensions expected by
the ESMF software.
Thank you very much for helping me with this, I did the changes you
suggested to me and now it is regridding successfully!.

Thanks again!
Mirce.

El lun., 29 abr. 2019 a las 7:43, Dennis Shea (<shea at ucar.edu>) escribió:

> The 'golden rule' of data processing is "Look at your data"
>
> The variable is dimensioned as follows:
>
> *  float precipitation(nlon, nlat) ;*
>
> The ESMF software is expecting:* (nlat, nlon)*
>
> *    prc_trmm  = f->precipitation*
> *    prc_trmm := prc_trmm(nlat|:,nlon|:)*    *; reorder* *t**o that
> expected* *by ESMF**; overwrite*
>
>
> Try and see what happens.
> ===
>
> Comment: the TRMM grid spans approximately 50S to 50N and is global in
> longitude.
> I have not looked but I speculate the WRF grid spans a *MUCH* smaller
> spatial extent.
>
> I suggest using NCL's coordinate subscripting to extract a subset of the
> TRMM grid.
>
>  fn_wrf     = "geo_em.d04.nc"
>   fwrf       = addfile(path_wrf+fn_wrf,"r")
>   lat2d      = fwrf->XLAT_M(0,:,:)                   ; WRF
>   lon2d      = fwrf->XLONG_M(0,:,:)
>
> ;---Create an 'extra' large boundary around the WRF grid
>   extra      = 2          ; arbitrary
>   minLat2D   = min(lat2d) - extra
>   maxLat2D   = max(lat2d) + extra
>   minLon2D   = min(lon2d) - extra
>   maxLon2D   = max(lon2d) + extra
>
>   prc_region = prc_trmm(*{minLat2D:maxLat2D},{minLon2D:maxLon2D}*)
>   printVarSummary(prc_region)
>   printMinMax(prc_region,0)
>
> On Sat, Apr 27, 2019 at 7:49 PM Mirce Morales <mirce.morales at gmail.com>
> wrote:
>
>> Hi all,
>>
>> I am trying to regrid precipitation data from TRMM3B42 using ESMF
>> bilinear regridding, however, when I try to generate the weights I get the
>> following error:
>>
>> *curvilinear_to_SCRIP: Opt at Mask2D is not the correct dimensionality*
>>
>> I successfully did the regridding in the past for the same data, but now
>> some attributes of the data have changed for the period of time I
>> interested in and I am getting the last error.
>>
>> These are the attributes of my data:
>> *netcdf \3B42.20090101.00.7A.HDF {*
>> *dimensions:*
>> *        nlon = 1440 ;*
>> *        nlat = 400 ;*
>> *variables:*
>> *        float precipitation(nlon, nlat) ;*
>> *                precipitation:units = "mm/hr" ;*
>> *                precipitation:coordinates = "nlon nlat" ;*
>> *                precipitation:_FillValue = -9999.9f ;*
>> *        float nlon(nlon) ;*
>> *                nlon:long_name = "longitude" ;*
>> *                nlon:standard_name = "longitude" ;*
>> *                nlon:units = "degrees_east" ;*
>> *        float nlat(nlat) ;*
>> *                nlat:long_name = "latitude" ;*
>> *                nlat:standard_name = "latitude" ;*
>> *                nlat:units = "degrees_north" ;*
>>
>> And this is my 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"
>>
>> begin
>>
>> ;----------------------------------------------------------------------
>> ; User settings
>> ;----------------------------------------------------------------------
>>
>>   ;---------------------------------------------------------------;
>>   ; Set source and destination grid filenames.                    ;
>>   ; Define weight filename.                                       ;
>>   ;---------------------------------------------------------------;
>>     interp_opt = "bilinear"
>>     wgtFileName = "./TRMM2WRFHydro_weight_"+interp_opt+".nc"
>>
>>     srcGridName = "./3B42.20090101.00.7A.HDF.nc4"
>>   if ( .not.isfilepresent( srcGridName ) ) then
>>      print( " ... source grid file not found : "+ srcGridName )
>>      exit
>>   end if
>>
>>     dstGridName = "/glade/work/mirce/DOMAINS/DOMAIN_Files_250m_200/
>> geo_em.d04.nc"
>>   if ( .not.isfilepresent( dstGridName ) ) then
>>      print( " ... destination grid file not found : "+ dstGridName )
>>      exit
>>   end if
>>
>>   ;---------------------------------------------------------------;
>>   ; Field names for lat and lon coordinates in the source file.   ;
>>   ;---------------------------------------------------------------;
>>   LatName = "nlat"
>>   LonName = "nlon"
>>
>> ;----------------------------------------------------------------------
>> ; Convert source grid to a SCRIP convention file.
>> ;----------------------------------------------------------------------
>>     src_file = addfile(srcGridName,"r")
>>     vNames   = getfilevarnames( src_file )
>>
>>     if ( isfilevar( src_file, LatName ) .and. isfilevar( src_file,
>> LonName ) ) then
>>        src_lat = src_file->$LatName$
>>        src_lon = src_file->$LonName$
>>     else
>>        print( " ... no such lat/lon fieldnames" )
>>        exit
>>     end if
>>
>>     if ( isfilevar( src_file, "precipitation" ) ) then
>>        test_mask = src_file->precipitation(:,:)
>>     else
>>        print( " ... no such data field " )
>>        exit
>>     end if
>>
>>     Opt                = True
>>     Opt at Mask2D         = where(.not.ismissing(test_mask),1,0)
>>     Opt at SrcRegional    = False
>>     Opt at ForceOverwrite = True
>>     Opt at PrintTimings   = True
>>     Opt at Title          = "TRMM"
>>
>>     src_SCRIP_filename     = "SCRIP_TRMM_"+interp_opt+".nc"
>>     rectilinear_to_SCRIP( src_SCRIP_filename, src_lat, src_lon, Opt)
>>
>>     delete(Opt)
>>
>> ;----------------------------------------------------------------------
>> ; Convert destination grid to a SCRIP convention file.
>> ;----------------------------------------------------------------------
>>     dst_file = addfile(dstGridName,"r")
>>
>>     if ( isfilevar( dst_file, "XLAT" ) .and. .not. isfilevar( dst_file,
>> "XLAT_M") ) then
>>        dst_lat = dst_file->XLAT(0,:,:)
>>        dst_lon = dst_file->XLONG(0,:,:)
>>     end if
>>
>>     Opt                = True
>>     Opt at DstRegional    = True
>>     Opt at ForceOverwrite = True
>>     Opt at PrintTimings   = True
>>     Opt at Title          = dstGridName
>>
>>     dst_SCRIP_filename     = "SCRIP_WRFHydro_"+interp_opt+".nc"
>>     curvilinear_to_SCRIP( dst_SCRIP_filename, dst_lat, dst_lon,Opt)
>>
>>     delete(Opt)
>>
>> ;----------------------------------------------------------------------
>> ; Generate the weights that take you from the source grid to
>> ; destination degree grid.
>> ;----------------------------------------------------------------------
>>     Opt                      = True
>>     Opt at InterpMethod         = interp_opt
>>     Opt at DstRegional          = True
>>     Opt at ForceOverwrite       = True
>>     Opt at PrintTimings         = True
>>     Opt at Debug                = True
>>
>>     ESMF_regrid_gen_weights( src_SCRIP_filename, dst_SCRIP_filename,
>> wgtFileName, Opt)
>>
>>     delete(Opt)
>>
>> ;----------------------------------------------------------------------
>> ;----------------------------------------------------------------------
>> end
>>
>> If it's helpful, my data is in the following path in Cheyenne:
>>
>> */glade/scratch/mirce/LaSierra/FullDomainForcing/TRMM_3B24/Test*
>>
>> I will appreciate any help about how to fix this error.
>>
>> Thanks!,
>> Mirce.
>>
>>
>> _______________________________________________
>> 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/20190429/140c067c/attachment.html>


More information about the ncl-talk mailing list