DKRZ NCL vectors on a curvilinear grid example#

Example script:

;---------------------------------------------------
;-- DKRZ NCL example:   NCL_vector_plot_curvilinear.ncl
;--
;-- 08.04.16   kmf
;---------------------------------------------------
begin
  fu =  addfile("$HOME/data/Ocean/uo_mon_t1.nc","r")
  fv =  addfile("$HOME/data/Ocean/vo_mon_t1.nc","r")

  u        =  fu->uo(0,0,:,:)
  u@lat2d  =  fu->lat
  u@lon2d  =  fu->lon

  v        =  fv->vo(0,0,:,:)
  v@lat2d  =  fv->lat
  v@lon2d  =  fv->lon

  minlat   =   40.
  maxlat   =   60.
  minlon   =  -20.
  maxlon   =   20.

;-- define the workstation (graphic will be written to a file)
  wks_type          = "png"
  wks_type@wkWidth  =  1200
  wks_type@wkHeight =  1200
  wks =  gsn_open_wks(wks_type,"plot_vector_curvilinear")

;-- set plot resources
  res                       =  True
  res@gsnDraw               =  False
  res@gsnFrame              =  False
  res@gsnMaximize           =  True
  res@gsnAddCyclic          =  False

  vcres                     =  res

  res@gsnLeftString         = ""
  res@gsnRightString        = ""

  res@cnFillOn              =  True                  ;-- turn on contour fill
  res@cnFillMode            = "CellFill"             ;-- change contour fill mode
  res@cnLinesOn             =  False                 ;-- don't draw contour lines
  res@cnCellFillEdgeColor   = "blue"                 ;-- edges color
  res@cnCellFillMissingValEdgeColor = "grey"         ;-- missing edges color

  res@cnMonoFillColor       =  True                  ;-- we want to see only the grid
  res@cnFillColor           =  -1                    ;-- color is set to transparent
  res@cnLineLabelsOn        =  False
  res@lbLabelBarOn          =  False

  res@sfYArray              =  u@lat2d
  res@sfXArray              =  u@lon2d

  res@mpFillOn              =  False                 ;-- don't draw filled map
  res@mpDataBaseVersion     = "MediumRes"            ;-- use medium resolution map

  res@mpProjection          = "Orthographic"
  res@mpCenterLatF          =  20
  res@mpCenterLonF          =   0

  res@mpLimitMode           = "Corners"              ;-- map limit mode
  res@mpLeftCornerLatF      =  minlat                ;-- min lat
  res@mpRightCornerLatF     =  maxlat                ;-- max lat
  res@mpLeftCornerLonF      =  minlon                ;-- min lon
  res@mpRightCornerLonF     =  maxlon                ;-- max lon

  vcres@gsnLeftString       = ""
  vcres@gsnRightString      = ""

  vcres@tiMainString        = "Vectors on a curvilinear grid"  ;-- turn off axis label
  vcres@tiMainFontHeightF   =  0.018

  vcres@vcRefLengthF        =  0.03                  ;-- length of reference vector
  vcres@vcMinFracLengthF    =  0.3                   ;-- length of smallest vector

  vcres@vcLineArrowThicknessF =  2.0                 ;-- make vectors thicker
  vcres@vcRefMagnitudeF     =  10                    ;-- define vector ref mag
  vcres@vcRefLengthF        =  0.035                 ;-- define length of vec ref
  vcres@vcRefAnnoOrthogonalPosF =  -.096             ;-- move ref vector into plot

  vcres@vfXArray            =  u@lon2d               ;-- transform x to mesh scalar field
  vcres@vfYArray            =  u@lat2d               ;-- transform y to mesh scalar field

  cnplot  =  gsn_csm_contour_map(wks,u,res)
  vcplot  =  gsn_csm_vector(wks,u,v,vcres)

  overlay(cnplot,vcplot)

  draw(cnplot)
  frame(wks)

end

Result:

../../../../../../_images/plot_vector_curvilinear_w400.png