Sie sind hier: Startseite / Services / Data Analysis and Visualization / Visualization / Software / NCL / examples / source_code / DKRZ NCL FESOM data example
Info
Alle Inhalte des Nutzerportal sind nur auf Englisch verfügbar.

DKRZ NCL FESOM data example

The script generates a sub-region (Marian Trench) plot of the FESOM variable topo (topography).

Example script:

;---------------------------------------------------------------
;-- DKRZ NCL example: FESOM_topography_CylindricalEquidistant.ncl
;-- 
;-- Data:   	  FESOM model
;-- 
;-- Grid type:    unstructured grid
;--
;-- Variable:     topo  (topography) in meter
;--
;-- Settings:     CellFill, CylindricalEquidistant
;--
;-- NCL version:  requires 6.2.x for faster polygon drawing
;--				  uses resource gsSegments
;-- 
;-- 10.03.16   meier-fleischer(at)dkrz.de
;---------------------------------------------------------------
;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

begin
  start_time = get_cpu_time()

  diri = "$HOME/data/FESOM/"                    ;-- data directory
  fili = "fesom_topo_exact.nc"                  ;-- file name
  f    =  addfile(diri + fili, "r" )            ;-- add grid file (not contained in data file!!!)
  var  =  f->topo                               ;-- topo(ncells)
      
;-- retrieve sfXArray/sfYArray data  
  x       =  f->lon                             ;-- cell center, lon
  y       =  f->lat                             ;-- cell center, lat
  x!0     = "lon"                               ;-- set named dimension lon
  y!0     = "lat"                               ;-- set named dimension lat
  x@units = "degrees_east"                      ;-- set lon units
  y@units = "degrees_north"                     ;-- set lat units

;-- define the cell polygon points
  vlon    =  f->lon_vertices                    ;-- cell longitude vertices
  vlon    =  where(vlon.lt.0, vlon + 360, vlon) ;-- longitude: 0-360
  vlat    =  f->lat_vertices                    ;-- cell latitude vertices
  nv      =  dimsizes(vlon(0,:))                ;-- number of points in polygon

;-- print some information to stdout
  print("")
  print("Data variable Min:    " + min(var) + "   Max:   " + max(var))
  print("Data longitude Min:   " + min(vlon) + "  Max:   " + max(vlon))
  print("    Polygon points:   " + nv)
  print("") 

;-- open workstation
  wks_type          = "png"
  wks_type@wkWidth  =  1024
  wks_type@wkHeight =  1024
  wks = gsn_open_wks(wks_type,"plot_FESOM_topography_CylEqui")

;-- set resources
  res                        =  True
  res@vpWidthF               =  0.9             ;-- viewport width
  res@vpHeightF              =  0.7             ;-- viewport height
  res@vpXF                   =  0.05            ;-- viewport start position
  res@vpYF                   =  0.85            ;-- viewport start position
   
  res@cnFillOn               =  True            ;-- turn on contour fill
  res@cnFillMode             = "CellFill"       ;-- use CellFill mode
  res@cnFillPalette          = "GMT_relief"     ;-- choose color map
  res@cnSpanFillPalette      =  True            ;-- span color map
  res@cnFillColors           =  ispan(2,122,1)  ;-- use color indices
  res@cnLevelSelectionMode   = "ManualLevels"   ;-- use manual contour line levels
  res@cnMinLevelValF         = -10000           ;-- contour min. value
  res@cnMaxLevelValF         =      0           ;-- contour max. value
  res@cnLevelSpacingF        =    100           ;-- contour interval
  res@cnLinesOn              =  False           ;-- turn lines off
  res@cnLineLabelsOn         =  False           ;-- turn labels off
  
  res@sfXArray               =  x               ;-- transform x to mesh scalar field
  res@sfYArray               =  y               ;-- transform y to mesh scalar field
  res@sfXCellBounds          =  vlon            ;-- needed if set cnFillMode = "CellFill"
  res@sfYCellBounds          =  vlat            ;-- needed if set cnFillMode = "CellFill"
  
  res@mpMinLatF              =  -45             ;-- minimum latitude
  res@mpMaxLatF              =   60             ;-- maximum latitude
  res@mpMinLonF              =   95             ;-- minimum longitude
  res@mpMaxLonF              =  200             ;-- maximum longitude
  res@mpCenterLonF           =  150             ;-- center longitude
  res@mpPerimOn              =  False           ;-- don't draw the box around the plot
  
  res@tmYLLabelFontHeightF   =  0.014           ;-- increase y-axis label font

  res@lbBoxMinorExtentF      =  0.10            ;-- decrease height of labelbar boxes
  res@pmLabelBarOrthogonalPosF = -0.016         ;-- move labelbar upward
  res@lbLabelOffsetF         =  0.05            ;-- move labelbar labels upward
  res@lbLabelFontHeightF     =  0.010           ;-- increase labelbar label font
  
  res@tiMainString           = "FESOM: Mariana Trench (variable topo)"
  res@tiMainFontHeightF      =  0.018           ;-- increase title font

  res@gsnMajorLatSpacing     =  10              ;-- major grid lat spacing
  res@gsnMinorLatSpacing     =   5              ;-- minor grid lat spacing
  res@gsnMajorLonSpacing     =  10              ;-- major grid lon spacing
  res@gsnMinorLonSpacing     =   5              ;-- minor grid lon spacing
  
;-- create the plot
  plot = gsn_csm_contour_map(wks,var,res)

  print("--> FESOM Mariana Trench plot done...")
  print("")
  
;-- calculate total elapsed time for this script
  diff_time = get_cpu_time() - start_time
  print("=====> CPU Elapsed Time ("+res@cnFillMode+"): "+diff_time+" seconds <=====")

end

Artikelaktionen