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 ;; restart.nc obtained by ;; ncks -A apbp.nc time_counter.nc ;; ncks -A time_counter.nc ps.nc ;; ncks -A time_counter.nc ulon.nc ;; ncks -A time_counter.nc uloat.nc ;; cdo merge ps.nc ulon.nc ulat.nc merged.nc ;; cdo seltimestep,121 merged.nc restart.nc ;; where 121 is the last record ;; ;; meshXX.nc is actually Ai.nc generated with nb=XX src_file = "restart.nc" grd_file = "mesh128.nc" dst_file = "restart128.nc" varname = "ulon" ;; note : one should rather regrid 3D components of velocity ;; ux = -sin(lon)*ulon - cos(lon)*sin(lat)*ulat ;; uy = cos(lon)*ulon - sin(lon)*sin(lat)*ulat ;; uz = cos(lat)*ulat ;; then convert back to ulon, ulat ;; ulat = uz*cos(lat) - sin(lat)*(ux*cos(lon)+uy*sin(lon)) ;; ulon = cos(lonĂ*uy - sin(lon)*ux sfile = addfile(src_file,"r") src_lat = sfile->lat_i src_lon = sfile->lon_i printVarSummary(src_lat) gfile = addfile(grd_file,"r") dst_lat = gfile->lat_i dst_lon = gfile->lon_i printVarSummary(dst_lat) system("rm -f " + dst_file) system("ls -lth") dfile = addfile(dst_file,"c") filedimdef(dfile,"time_counter",-1,True) dfile->time_counter=sfile->time_counter dfile->lev=sfile->lev dfile->lat_i=dst_lat dfile->lon_i=dst_lon var = sfile->$varname$ printVarSummary(var) Opt = True Opt@InterpMethod = "patch" Opt@WgtFileName = "remapping.nc" Opt@SrcGridType = "unstructured" Opt@SrcGridLat = src_lat Opt@SrcGridLon = src_lon Opt@SrcRegional = False Opt@DstGridType = "unstructured" Opt@DstGridLat = dfile->lat_i Opt@DstGridLon = dfile->lon_i Opt@DstRegional = False Opt@CopyVarCoords = True Opt@ForceOverwrite = True Opt@PrintTimings = True Opt@Debug = True var_regrid = ESMF_regrid(var,Opt) ; Do the regridding var_regrid!0="time_counter" var_regrid!2="cell_i" var_regrid!1="lev" var_regrid@coordinates = "lon_i lat_i" delete(var_regrid@lon1d) delete(var_regrid@lat1d) printVarSummary(var_regrid) ; Check that everything printMinMax(var_regrid,0) ; looks okay. dfile->$varname$ = var_regrid end