[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