biomass/30.mask_to_T31-T42_1.9.ncl
changeset 1 4be95183fbcd
equal deleted inserted replaced
-1:000000000000 0:b224dd5ab6f6
       
     1 ; ***********************************************
       
     2 ; interpolate into model grids (T31)
       
     3 ; ***********************************************
       
     4 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
       
     5 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
       
     6 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
       
     7 ;************************************************
       
     8 begin
       
     9 
       
    10 ;************************************************
       
    11 ; read model grid
       
    12 ;************************************************
       
    13 
       
    14  model_grid = "T31"
       
    15 ;model_grid = "T42"
       
    16 ;model_grid = "1.9"
       
    17 
       
    18  diri   = "/fis/cgd/cseg/people/jeff/clamp_data/surface_model/"
       
    19  fili   = "lnd_"+ model_grid +".nc"
       
    20  f      = addfile (diri+fili,"r")
       
    21 
       
    22  lon    = f->lon     
       
    23  lat    = f->lat
       
    24  nlon   = dimsizes(lon)
       
    25  nlat   = dimsizes(lat)      
       
    26 
       
    27 ;************************************************
       
    28 ; output data
       
    29 ;************************************************
       
    30   diro  = "/fis/cgd/cseg/people/jeff/clamp_data/observed/biomass/"
       
    31   filo  = "amazon_mask_"+model_grid + ".nc"
       
    32   c = addfile(diro+filo,"c")
       
    33 
       
    34 ;************************************************
       
    35 ; read 1x1 amazon_mask data
       
    36 ;************************************************
       
    37   diri  = "/fis/cgd/cseg/people/jeff/clamp_data/observed/biomass/"
       
    38   fili  = "amazon_mask_1x1.nc"
       
    39   g = addfile(diri+fili,"r")
       
    40 
       
    41   bi    = g->mask_amazon   
       
    42   xi    = g->lon 
       
    43   yi    = g->lat
       
    44 
       
    45 ;************************************************
       
    46 ; change from -180-180, 90N-90S into 0-360E, 90S-90N
       
    47 ; Observed NPP*scale_factor
       
    48 ;************************************************
       
    49  
       
    50  yi    = (/ yi(::-1) /)
       
    51  bi    =  (/ bi(::-1,:) /)
       
    52  b2    = bi
       
    53  x2    = xi   
       
    54  
       
    55  nx = dimsizes(xi)
       
    56  do i= 0,nx-1
       
    57     if (i .lt. 180) then
       
    58        p = i + 180
       
    59        xi(p) = x2(i) + 360.      
       
    60     else
       
    61        p = i - 180
       
    62        xi(p) = x2(i)
       
    63     end if
       
    64     bi(:,p)= b2(:,i) 
       
    65  end do
       
    66 
       
    67  bi&lat =  yi
       
    68  bi&lon =  xi
       
    69 
       
    70 ;print (xi)
       
    71 ;print (yi)
       
    72 
       
    73 ;(A)
       
    74 ;bo = linint2_Wrap(xi,yi,bi,True,xo,yo,0)
       
    75 
       
    76 ;(B)
       
    77 
       
    78   rad   = 4.*atan(1.)/180.
       
    79   clat  = lat
       
    80   clat  = cos(lat*rad)
       
    81 
       
    82   clat@long_name = "cos(latitude)"
       
    83   delete(clat@units)
       
    84 ; printVarSummary(clat)
       
    85 
       
    86  bo = new ((/nlat,nlon/),"float")
       
    87 
       
    88     do j=0,nlat-1
       
    89        if (j.eq.0 .or. j.eq.nlat-1) then
       
    90           if (j.eq.0) then
       
    91              LATS = -90.          
       
    92              LATN = lat(j)+0.5*(lat(j+1)-lat(j))
       
    93           end if
       
    94           if (j.eq.nlat-1) then
       
    95              LATS = lat(j)-0.5*(lat(j)-lat(j-1))
       
    96              LATN = 90.                  
       
    97           end if
       
    98        else
       
    99           LATS = lat(j)-0.5*(lat(j)-lat(j-1))
       
   100           LATN = lat(j)+0.5*(lat(j+1)-lat(j))
       
   101        end if
       
   102  
       
   103 ;      CLAT = clat({LATS:LATN})      ; do once for *slight* efficiency
       
   104 ;      TEMP = bi({LATS:LATN},:)      ; 2D [lat,lon]
       
   105  
       
   106       do i=0,nlon-1
       
   107        if (i.eq.0 .or. i.eq.nlon-1) then
       
   108           if (i.eq.0) then
       
   109              LONL = 0.          
       
   110              LONR = lon(i)+0.5*(lon(i+1)-lon(i))
       
   111           end if
       
   112           if (i.eq.nlon-1) then
       
   113              LONL = lon(i)-0.5*(lon(i)-lon(i-1))
       
   114              LONR = 360.                 
       
   115           end if
       
   116        else
       
   117           LONL = lon(i)-0.5*(lon(i)-lon(i-1))
       
   118           LONR = lon(i)+0.5*(lon(i+1)-lon(i))
       
   119        end if
       
   120 
       
   121 ;print (LATS)
       
   122 ;print (LATN)
       
   123 ;print (LONL)
       
   124 ;print (LONR)
       
   125 
       
   126          bo(j,i) = avg(bi({LATS:LATN},{LONL:LONR}))  
       
   127 ;        bo(j,i) = wgt_areaave(TEMP(:,{LONL:LONR}), CLAT, 1.0, 0)
       
   128 
       
   129       end do
       
   130  
       
   131 ;     delete(CLAT)
       
   132 ;     delete(TEMP) 
       
   133     end do
       
   134 
       
   135 ; bo = where(bo.ge.0.5, 1.0,0.)
       
   136 
       
   137   bo!0   = "lat"
       
   138   bo!1   = "lon"
       
   139   bo&lat =  lat
       
   140   bo&lon =  lon
       
   141 ; bo@units      = bi@units
       
   142   bo@long_name  = "amazon mask"
       
   143 ; bo@_FillValue = bi@_FillValue
       
   144   bo@_FillValue = 1.e+36
       
   145 
       
   146   c->mask_amazon  = bo
       
   147 end