Vertical cross sections in Mirage

From: Cecille Villanueva-Birriel <cvillanu_at_nyahnyahspammersnyahnyah>
Date: Mon Dec 17 2012 - 12:16:37 MST

Hello,

   I am trying to make vertical cross sections using a WRF output file located in analysis cluster Mirage. Everything works fine if I run this script on my computer. But for some reason it doesn't work in Mirage. I would for the code to work in Mirage since I will need to analyze big WRF data files. I won't be able to do it in my computer due to the low memory allocations. Is there something I can do? Any help will be greatly appreciated. Here is the ncl code.

Thanks,
Cecille

; Example script to produce plots for a WRF real-data run,
; with the ARW coordinate dynamics option.
; Plot data on a cross section
; This script will plot data from a a given point A to point B
; Vertical coordinate is height

;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "./gsn_code.ncl"
;load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
load "./WRFUserARW.ncl"
 
begin

scheme = "MOR"
city = "Jasper"
dir = "ICCP_project/"
period = "fut"
grid = "1km"

path = "/glade/scratch/cvillanu/Morrison/"
;
; The WRF ARW input file.
; This needs to have a ".nc" appended, so just do it.
a = addfile(path+"wrfout_d01_0001-01-01_00:00:00_MOR_1km.nc","r")

; We generate plots, but what kind do we prefer?
; type = "x11"
 type = "pdf"
; type = "ps"
; type = "ncgm"
wks = gsn_open_wks(type,"W_vcross_1km")

; Set some basic resources
  res = True
  res@MainTitle = "REAL-TIME WRF"

  pltres = True

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  FirstTime = True
  times = wrf_user_list_times(a) ; get times in the file
  ntimes = dimsizes(times) ; number of times in the file

  mdims = getfilevardimsizes(a,"P") ; get some dimension sizes for the file
  nd = dimsizes(mdims)

;---------------------------------------------------------------

; do it = 0,ntimes-1,2 ; TIME LOOP

   do it = 0,ntimes-1
; do it = 5, 13

    print("Working on time: " + times(it) )
    res@TimeLabel = times(it) ; Set Valid time to use on plots

    tc = wrf_user_getvar(a,"tc",it) ; T in C
    rh = wrf_user_getvar(a,"rh",it) ; relative humidity
    z = wrf_user_getvar(a, "z",it) ; grid point height
    w = wrf_user_getvar(a,"wa",it) ; vertical velocity
    tk = wrf_user_getvar(a,"tk",it)

    p = wrf_user_getvar(a,"PB",it)
    rgas = 287.04 ; J Kg-1 K-1

     qv = wrf_user_getvar(a, "QVAPOR",it) ;

  if(isfilevar(a,"QCLOUD"))
    qc = wrf_user_getvar(a, "QCLOUD",it)
  end if
  if(isfilevar(a,"QRAIN"))
    qr = wrf_user_getvar(a, "QRAIN",it)
  end if
  if(isfilevar(a,"QSNOW"))
    qs = wrf_user_getvar(a, "QSNOW",it)
  end if
  if(isfilevar(a,"QICE"))
    qi = wrf_user_getvar(a, "QICE",it)
  end if
  if(isfilevar(a,"QGRAUP"))
    qg = wrf_user_getvar(a, "QGRAUP",it)
  end if

   rho = p/(rgas*tk*(1+0.61*qv))

   PWC = qr*rho
   LWC = (qr+qc)*rho

    if ( FirstTime ) then ; get height info for labels
      zmin = 0.
      zmax = max(z)/1000.
      nz = floattoint(zmax/2 + 1)
      FirstTime = False
    end if

;---------------------------------------------------------------

    do ip = 1, 24 ; we are doing 3 plots, specifying different start and end points

        opts = True ; setting start and end times
        plane = new(4,float)

        if(ip .eq. 1) then
          plane = (/ 0,16, 100,16 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 2) then
          plane = (/ 0,17, 100,17 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 3) then
          plane = (/ 0,18, 100,18 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 4) then
          plane = (/ 0,19, 100,19 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 5) then
          plane = (/ 0,20, 100,20 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 6) then
          plane = (/ 0,21, 100,21 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 7) then
          plane = (/ 0,22, 100,22 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 8) then
          plane = (/ 0,23, 100,23 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 9) then
          plane = (/ 0,24, 100,24 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 10) then
          plane = (/ 0,25, 100,25 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 11) then
          plane = (/ 0,26, 100,26 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 12) then
          plane = (/ 0,27, 100,27 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 13) then
          plane = (/ 0,28, 100,28 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 14) then
          plane = (/ 0,29, 100,29 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 15) then
          plane = (/ 0,30, 100,30 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 16) then
          plane = (/ 0,31, 100,31 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 17) then
          plane = (/ 0,32, 100,32 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 18) then
          plane = (/ 0,33, 100,33 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 19) then
          plane = (/ 0,34, 100,34 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 20) then
          plane = (/ 0,35, 100,35 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 21) then
          plane = (/ 0,36, 100,36 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 22) then
          plane = (/ 0,37, 100,37 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 23) then
          plane = (/ 0,38, 100,38 /) ; start x;y & end x;y point
        end if
        if(ip .eq. 24) then
          plane = (/ 0,39, 100,39 /) ; start x;y & end x;y point
        end if

     gsn_define_colormap(wks, "BlWhRe") ; Define a new color map
    ; Vertical Velocity
      w_plane = wrf_user_intrp3d(w,z,"v",plane,0.,opts)
     ; w_plane = 100.*w_plane
      ;res@TimeLabel = it
      ;res@vpWidthF = plot_width
      ;res@vpHeightF = plot_height
      opts_w = res
      ;opts_w@FieldTitle = w@description
      opts_w@UnitLabel = "m/s"
    ; opts_w@PlotLevelID = 0.001*height + " km"
      opts_w@cnFillOn = True
       opts_w@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels
      opts_w@cnMinLevelValF = -38 ; set min contour level
      opts_w@cnMaxLevelValF = 38. ; set max contour level
      opts_w@cnLevelSpacingF = 2 ; set contour spacing

 

     ; Basic Options for all cloud plots
      opts_clouds = res
      opts_clouds@cnFillOn = True
      opts_clouds@UnitLabel = "g/kg"
            
      if (isvar("qv"))
        qv_plane = wrf_user_intrp3d(qv,z,"v",plane,0.,opts)
        qv_plane = qv_plane*1000.
        opts_qv = opts_clouds
      end if

      if (isvar("qc"))
        qc_plane = wrf_user_intrp3d(qc,z,"v",plane,0.,opts)
        qc_plane = qc_plane*1000.
        opts_qc = opts_clouds
      end if

      if (isvar("qr"))
        qr_plane = wrf_user_intrp3d( qr,z,"v",plane,0.,opts)
        qr_plane = qr_plane*1000.
        opts_qr = opts_clouds
      end if

      if (isvar("PWC"))
      ; opts_clouds@UnitLabel = "Precipitation Mass (g/m3)"
        PWC_plane = wrf_user_intrp3d( PWC,z,"v",plane,0.,opts)
        PWC_plane = PWC_plane*1000.
        opts_PWC = opts_clouds
      end if

    if (isvar("LWC"))
     ; opts_clouds@UnitLabel = "Liquid Water Content (g/m3)"
        LWC_plane = wrf_user_intrp3d( LWC,z,"v",plane,0.,opts)
        LWC_plane = LWC_plane*1000.
        opts_LWC = opts_clouds
      end if

      if (isvar("qs"))
        qs_plane = wrf_user_intrp3d( qs,z,"v",plane,0.,opts)
        qs_plane = qs_plane*1000.
        opts_qs = opts_clouds
      end if

      if (isvar("qi"))
        qi_plane = wrf_user_intrp3d( qi,z,"v",plane,0.,opts)
        qi_plane = qi_plane*1000.
        opts_qi = opts_clouds
      end if

      if (isvar("qg"))
        qg_plane = wrf_user_intrp3d( qg,z,"v",plane,0.,opts)
        qg_plane = qg_plane*1000.
        opts_qg = opts_clouds
      end if

        
        tc_plane = wrf_user_intrp3d(tc,z,"v",plane,0.,opts)

        dim = dimsizes(qv_plane) ; Find the data span - for use in labels
        zspan = dim(0)

      ; Options for XY Plots
        opts_xy = res
        opts_xy@tiYAxisString = "Height (km)"
        opts_xy@AspectRatio = 0.75
        opts_xy@cnMissingValPerimOn = True
        opts_xy@cnMissingValFillColor = 0
        opts_xy@cnMissingValFillPattern = 11
        opts_xy@tmYLMode = "Explicit"
        opts_xy@tmYLValues = fspan(0,zspan,nz) ; Create tick marks
        opts_xy@tmYLLabels = sprintf("%.1f",fspan(zmin,zmax,nz)) ; Create labels
        opts_xy@tiXAxisFontHeightF = 0.020
        opts_xy@tiYAxisFontHeightF = 0.020
        opts_xy@tmXBMajorLengthF = 0.02
        opts_xy@tmYLMajorLengthF = 0.02
        opts_xy@tmYLLabelFontHeightF = 0.015
        opts_xy@PlotOrientation = tc_plane@Orientation

      ; Plotting options for RH
        opts_clouds = opts_xy
        opts_clouds@pmLabelBarOrthogonalPosF = -0.07
        ;opts_clouds@ContourParameters = (/ 10., 90., 10. /)
        ;opts_clouds@ContourParameters = (/ 1., 20., 1. /)
        opts_w = opts_xy
        opts_PWC = opts_xy
        opts_LWC = opts_xy

        opts_clouds@cnFillOn = True
        opts_clouds@cnFillColors = (/"White","White","White", \
                                            "White","Chartreuse","Green", \
                                            "Green3","Green4", \
                                            "ForestGreen","PaleGreen4"/)

      ; Plotting options for Temperature
        opts_tc = opts_xy
        opts_tc@cnInfoLabelOrthogonalPosF = 0.00
        opts_tc@ContourParameters = (/ 5. /)

      ; Get the contour info for the rh and temp
        contour_tc = wrf_contour(a,wks,tc_plane,opts_tc)
        contour_w = wrf_contour(a,wks, w_plane,opts_w)
        contour_qv = wrf_contour(a,wks,qv_plane,opts_clouds)
        contour_qr = wrf_contour(a,wks, qr_plane,opts_clouds)
        contour_qc = wrf_contour(a,wks, qc_plane,opts_clouds)
        contour_qs = wrf_contour(a,wks, qs_plane,opts_clouds)
        contour_qi = wrf_contour(a,wks, qi_plane,opts_clouds)
        contour_qg = wrf_contour(a,wks, qg_plane,opts_clouds)
        contour_PWC = wrf_contour(a,wks, PWC_plane,opts_PWC)
        contour_LWC = wrf_contour(a,wks, LWC_plane,opts_LWC)

      ; MAKE PLOTS
        plot = wrf_overlays(a,wks,(/contour_w,contour_tc/),pltres)

      ; Delete options and fields, so we don't have carry over
        delete(opts_tc)
        delete(opts_clouds)
        delete(tc_plane)
        delete(qv_plane)
        delete(qc_plane)
        delete(qr_plane)
        delete(qs_plane)
        delete(qi_plane)
        delete(qg_plane)
        delete(w_plane)
        delete(PWC_plane)
        delete(LWC_plane)

    end do ; make next cross section

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  end do ; END OF TIME LOOP

end
> ********************************************************
> Cecille M. Villanueva Birriel
> Ph.D. Candidate
> Cloud Microphysics Research Group
> Purdue University
> Department of Earth, Atmospheric, & Planetary Sciences
> 550 Stadium Mall Drive, West Lafayette, IN 47907-2051
> email: cvillanu@purdue.edu
> ********************************************************

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Mon Dec 17 12:16:54 2012

This archive was generated by hypermail 2.1.8 : Fri Dec 21 2012 - 10:43:23 MST