biomass/30.mask_to_T31-T42_1.9.ncl
author Forrest Hoffman <forrest@climatemodeling.org>
Mon, 26 Jan 2009 22:08:20 -0500
changeset 0 0c6405ab2ff4
permissions -rw-r--r--
Initial commit of C-LAMP Diagnostics from Jeff Lee
     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