source: codes/icosagcm/branches/SATURN_DYNAMICO/regrid/regrid.ncl @ 244

Last change on this file since 244 was 244, checked in by dubos, 10 years ago

Example of regridding with NCL-ESMF

File size: 2.3 KB
Line 
1load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
2load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
3load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
4load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"
5
6begin
7
8;; restart.nc obtained by
9;;   ncks -A apbp.nc time_counter.nc
10;;   ncks -A time_counter.nc ps.nc
11;;   ncks -A time_counter.nc ulon.nc
12;;   ncks -A time_counter.nc uloat.nc
13;;   cdo merge ps.nc ulon.nc ulat.nc merged.nc
14;;   cdo seltimestep,121 merged.nc restart.nc
15;; where 121 is the last record
16;;
17;; meshXX.nc is actually Ai.nc generated with nb=XX
18
19src_file = "restart.nc"
20grd_file = "mesh128.nc"
21dst_file = "restart128.nc"
22varname  = "ulon"
23
24;; note : one should rather regrid 3D components of velocity
25;; ux = -sin(lon)*ulon - cos(lon)*sin(lat)*ulat
26;; uy = cos(lon)*ulon  - sin(lon)*sin(lat)*ulat
27;; uz = cos(lat)*ulat
28;; then convert back to ulon, ulat
29;; ulat = uz*cos(lat) - sin(lat)*(ux*cos(lon)+uy*sin(lon))
30;; ulon = cos(lonÃ*uy - sin(lon)*ux
31
32sfile    = addfile(src_file,"r")
33src_lat  = sfile->lat_i
34src_lon  = sfile->lon_i
35printVarSummary(src_lat)
36
37gfile    = addfile(grd_file,"r")
38dst_lat  = gfile->lat_i
39dst_lon  = gfile->lon_i
40printVarSummary(dst_lat)
41
42system("rm -f " + dst_file)
43system("ls -lth")
44dfile    = addfile(dst_file,"c")
45filedimdef(dfile,"time_counter",-1,True)
46dfile->time_counter=sfile->time_counter
47dfile->lev=sfile->lev
48dfile->lat_i=dst_lat
49dfile->lon_i=dst_lon
50
51var      = sfile->$varname$
52printVarSummary(var)
53
54Opt                   = True
55Opt@InterpMethod      = "patch"
56Opt@WgtFileName       = "remapping.nc"
57
58Opt@SrcGridType       = "unstructured"
59Opt@SrcGridLat        = src_lat
60Opt@SrcGridLon        = src_lon
61Opt@SrcRegional       = False
62
63Opt@DstGridType       = "unstructured"
64Opt@DstGridLat        = dfile->lat_i
65Opt@DstGridLon        = dfile->lon_i
66Opt@DstRegional       = False
67
68Opt@CopyVarCoords     = True
69Opt@ForceOverwrite    = True
70Opt@PrintTimings      = True
71Opt@Debug             = True
72
73var_regrid = ESMF_regrid(var,Opt)     ; Do the regridding
74var_regrid!0="time_counter"
75var_regrid!2="cell_i"
76var_regrid!1="lev"
77var_regrid@coordinates = "lon_i lat_i"
78delete(var_regrid@lon1d)
79delete(var_regrid@lat1d)
80printVarSummary(var_regrid)           ; Check that everything
81printMinMax(var_regrid,0)             ; looks okay.
82
83dfile->$varname$ = var_regrid
84
85end
Note: See TracBrowser for help on using the repository browser.