[ncl-talk] ncl errors while using plotgrids_new.ncl

Iman Gohari iman.gohari at tempoquest.com
Wed Feb 28 20:53:37 MST 2018


Hello there,
I'm trying to use the attached ncl script to plot the domain config in 
the namelist.wps file, but the ncl crashes with this error:

  Copyright (C) 1995-2015 - All Rights Reserved
  University Corporation for Atmospheric Research
  NCAR Command Language Version 6.3.0
  The use of this software is governed by a License Agreement.
  See http://www.ncl.ucar.edu/ for more details.
fatal:MapV41DHInitialize: dynamic memory allocation error:[errno=12]
fatal:MapV41DHInitialize: error initializing map outline records
  ERROR    2 IN MPLNRI/MDLNRI - Can't open the ".names" file
  ERROR    1 IN MPSETR - UNCLEARED PRIOR ERROR
  ERROR    1 IN MAPPOS - UNCLEARED PRIOR ERROR
  ERROR    1 IN MAPSTI - UNCLEARED PRIOR ERROR
  ERROR    1 IN MAPROJ - UNCLEARED PRIOR ERROR
  ERROR    2 IN MAPSET/MDPSET - UNCLEARED PRIOR ERROR
fatal:MapSetTrans: error initializing map: MAPINT - UNCLEARED PRIOR 
ERROR
warning:["SetValues.c":474]:SetValuesChild never occurred on 
wps_show_dom_map.PlotManager: Error in mapPlotClass
warning:tmXBBorderOn is not a valid resource in wps_show_dom_map at this 
time
warning:tmXTBorderOn is not a valid resource in wps_show_dom_map at this 
time
warning:tmYLBorderOn is not a valid resource in wps_show_dom_map at this 
time
warning:tmYRBorderOn is not a valid resource in wps_show_dom_map at this 
time


Any idea what is going on? Thanks
-------------- next part --------------

;   Script display location of model domains
;   Only works for ARW domains
;   Only works for NCL versions 6.2 or later
;   Reads namelist file directly

load "/usr/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "/usr/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"

begin
;

; Check the version of NCL
  version = systemfunc("ncl -V")
  if(version.lt.6.2) then
    print("You need NCL V6.2 or later to run this script. Try running plotgrids.ncl. Stopping now...")
    return
  end if

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

; read the following namelist file
  filename = "namelist.wps"

; Set the colors to be used
  colors = (/"white","black","White","ForestGreen","DeepSkyBlue","Red","Blue"/)
  gsn_define_colormap(wks, colors)  


; Set some map information ; line and text information
  mpres = True
  mpres at mpFillOn = True
  mpres at mpFillColors  = (/"background","DeepSkyBlue","ForestGreen","DeepSkyBlue", "transparent"/)
  mpres at mpDataBaseVersion           = "Ncarg4_1"
  mpres at mpGeophysicalLineColor      = "Black"
  mpres at mpGridLineColor             = "Black"
  mpres at mpLimbLineColor             = "Black"
  mpres at mpNationalLineColor         = "Black"
  mpres at mpPerimLineColor            = "Black"
  mpres at mpUSStateLineColor          = "Black"
;  mpres at mpOutlineBoundarySets       = "AllBoundaries"
  mpres at mpGridSpacingF              = 1
;  mpres at tiMainString                = " WPS Domain Configuration  "

  lnres = True 
  lnres at gsLineThicknessF = 3.5
  lnres at domLineColors    = (/ "black", "black" , "black" , "black" /)

  txres = True
  txres at txFont = "helvetica-bold"
  ;txres at txJust = "BottomLeft"
  txres at txJust = "TopLeft"
  txres at txPerimOn = False
  txres at txFontHeightF = 0.015

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Do not change anything between the ";;;;;" lines

  maxdom = 21
  nvar = 19
  parent_idn = new (maxdom,integer)
  parent_grid_ration = new (maxdom,integer)
  i_parent_startn = new (maxdom,integer)
  j_parent_startn = new (maxdom,integer)
  e_wen = new (maxdom,integer)
  e_snn = new (maxdom,integer)
  plotvar = new((/maxdom,nvar/),float)
  plotvar at _FillValue = -999.0

  plotvar = wrf_wps_read_nml(filename)

  mpres at max_dom = floattointeger(plotvar(0,0))
  mpres at dx = plotvar(0,1)
  mpres at dy = plotvar(0,2)
  if (.not.ismissing(plotvar(0,3))) then
    mpres at ref_lat = plotvar(0,3)
  else
    mpres at ref_lat = 0.0
  end if
  if (.not.ismissing(plotvar(0,4))) then
    mpres at ref_lon = plotvar(0,4)
  else
    mpres at ref_lon = 0.0
  end if
  if (.not.ismissing(plotvar(0,5))) then
    mpres at ref_x = plotvar(0,5)
  end if
  if (.not.ismissing(plotvar(0,6))) then
    mpres at ref_y = plotvar(0,6)
  end if
  mpres at truelat1 = plotvar(0,7)
  mpres at truelat2 = plotvar(0,8)
  mpres at stand_lon = plotvar(0,9)
  mproj_int = plotvar(0,10)
  mpres at pole_lat = plotvar(0,11)
  mpres at pole_lon = plotvar(0,12)

  do i = 0,maxdom-1
    parent_idn(i) = floattointeger(plotvar(i,13))
    parent_grid_ration(i) = floattointeger(plotvar(i,14))
    i_parent_startn(i) = floattointeger(plotvar(i,15))
    j_parent_startn(i) = floattointeger(plotvar(i,16))
    e_wen(i) = floattointeger(plotvar(i,17))
    e_snn(i) = floattointeger(plotvar(i,18))
  end do


  if(mpres at max_dom .gt. 1) then
    do i = 1,mpres at max_dom-1

      ;Making sure edge is nested grid is at least 5 grid points from mother domain.
      if(i_parent_startn(i) .lt. 5) then
        print("Warning: Western edge of grid must be at least 5 grid points from mother domain!")
      end if
      if(j_parent_startn(i) .lt. 5) then
        print("Warning: Southern edge of grid must be at least 5 grid points from mother domain!")
      end if
      pointwe = (e_wen(i)-1.)/parent_grid_ration(i)
      pointsn = (e_snn(i)-1.)/parent_grid_ration(i)
      gridwe = e_wen(parent_idn(i)-1)-(pointwe+i_parent_startn(i))
      gridsn = e_snn(parent_idn(i)-1)-(pointsn+j_parent_startn(i))
      if(gridwe .lt. 5) then
        print("Warning: Eastern edge of grid must be at least 5 grid points from mother domain!")
      end if
      if(gridsn .lt. 5) then
        print("Warning: Northern edge of grid must be at least 5 grid points from mother domain!")
      end if

      ;Making sure nested grid is fully contained in mother domain.
      gridsizewe = (((e_wen(parent_idn(i)-1)-4)-i_parent_startn(i))*parent_grid_ration(i))-(parent_grid_ration(i)-1)
      gridsizesn = (((e_snn(parent_idn(i)-1)-4)-j_parent_startn(i))*parent_grid_ration(i))-(parent_grid_ration(i)-1)
      if(gridwe .lt. 5) then
        print("Warning: Inner nest (domain = " + (i+1) + ") is not fully contained in mother nest (domain = " + parent_idn(i) + ")!")
        print("For the current setup of mother domain = " + parent_idn(i) + ", you can only have a nest of size " + gridsizewe + "X" + gridsizesn + ". Stopping Program!")
        exit
      end if
      if(gridsn .lt. 5) then
        print("Warning: Inner nest (domain = " + (i+1) + ") is not fully contained in mother nest (domain = " + parent_idn(i) + ")!")
        print("For the current setup of mother domain = " + parent_idn(i) + ", you can only have a nest of size " + gridsizewe + "X" + gridsizesn + ". Stopping Program!")
        exit
      end if

      ;Making sure the nest ends at a mother grid domain point.
      pointwetrunc = decimalPlaces(pointwe,0,False)
      pointsntrunc = decimalPlaces(pointsn,0,False)
      if((pointwe-pointwetrunc) .ne. 0.) then
        nest_we_up = (ceil(pointwe)*parent_grid_ration(i))+1
        nest_we_dn = (floor(pointwe)*parent_grid_ration(i))+1
        print("Nest does not end on mother grid domain point. Try " + nest_we_dn + " or " + nest_we_up + ".")
      end if
      if((pointsn-pointsntrunc) .ne. 0.) then
        nest_sn_up = (ceil(pointsn)*parent_grid_ration(i))+1
        nest_sn_dn = (floor(pointsn)*parent_grid_ration(i))+1
        print("Nest does not end on mother grid domain point. Try " + nest_sn_dn + " or " + nest_sn_up + ".")
      end if

    end do
  end if

  mpres at parent_id = parent_idn(0:mpres at max_dom-1)
  mpres at parent_grid_ratio = parent_grid_ration(0:mpres at max_dom-1)
  mpres at i_parent_start = i_parent_startn(0:mpres at max_dom-1)
  mpres at j_parent_start = j_parent_startn(0:mpres at max_dom-1)
  mpres at e_we = e_wen(0:mpres at max_dom-1)
  mpres at e_sn = e_snn(0:mpres at max_dom-1)

  if(mproj_int .eq. 1) then
    mpres at map_proj = "lambert"
    mpres at pole_lat = 0.0
    mpres at pole_lon = 0.0
  else if(mproj_int .eq. 2) then
    mpres at map_proj = "mercator"
    mpres at pole_lat = 0.0
    mpres at pole_lon = 0.0
  else if(mproj_int .eq. 3) then
    mpres at map_proj = "polar"
    mpres at pole_lat = 0.0
    mpres at pole_lon = 0.0
  else if(mproj_int .eq. 4) then
    mpres at map_proj = "lat-lon"
  end if
  end if
  end if
  end if

; Deal with global wrf domains that don't have dx or dy

  if (mpres at dx.lt.1e-10 .and. mpres at dx.lt.1e-10) then
    mpres at dx = 360./(mpres at e_we(0) - 1)
    mpres at dy = 180./(mpres at e_sn(0) - 1)
    mpres at ref_lat = 0.0
    mpres at ref_lon = 180.0
  end if

  mp = wrf_wps_dom (wks,mpres,lnres,txres)

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

; Now you can add some information to the plot. 
; Below is an example of adding a white dot over the DC location.
  ;pmres = True
  ;pmres at gsMarkerColor = "White"
  ;pmres at gsMarkerIndex = 16
  ;pmres at gsMarkerSizeF = 0.01
  ;gsn_polymarker(wks,mp,-77.26,38.56,pmres)


  frame(wks)           ; lets frame the plot - do not delete

end
-------------- next part --------------
&share
 wrf_core = 'ARW',
 max_dom = 1,
 start_date = '2017-08-15_00:00:00', '2017-08-15_00:00:00', '2017-08-15_00:00:00', '2017-08-15_00:00:00', 
 end_date   = '2017-08-15_12:00:00', '2017-08-15_12:00:00', '2017-08-15_12:00:00', '2017-08-15_12:00:00', 
 interval_seconds = 10800,
 io_form_geogrid = 2,
 opt_output_from_geogrid_path = './',
 debug_level = 0,
/

&geogrid
 parent_id         = 1,
 parent_grid_ratio = 1,
 i_parent_start    = 1,
 j_parent_start    = 1,
 e_we          = 500,
 e_sn          = 500,
 geog_data_res = 'usgs_lakes+10m','usgs_lakes+2m','usgs_lakes+30s','usgs_lakes+30s',
 dx = 1000,
 dy = 1000,
 map_proj =  'mercator',
 ref_lat   = 38.858621,
 ref_lon   = -93.89078,
 truelat1  = 38.858621,
 truelat2  = 0,
 stand_lon = -93.89078,
! geog_data_path = '/purescratch/wps/WPS_GEOG',
 geog_data_path = '/purescratch/dan/geog',
 opt_geogrid_tbl_path = 'geogrid/',
 ref_x = 63.5,
 ref_y = 50.5,
/

&ungrib
 out_format = 'WPS',
 prefix = 'FILE',
/

&metgrid
 fg_name = 'FILE',
 io_form_metgrid = 2,
 opt_output_from_metgrid_path = './',
 opt_metgrid_tbl_path = './metgrid',
/

&mod_levs
 press_pa = 201300 , 200100 , 100000 ,
             95000 ,  90000 ,
             85000 ,  80000 ,
             75000 ,  70000 ,
             65000 ,  60000 ,
             55000 ,  50000 ,
             45000 ,  40000 ,
             35000 ,  30000 ,
             25000 ,  20000 ,
             15000 ,  10000 ,
              5000 ,   1000
 /


&domain_wizard
 grib_data_path = 'null',
 grib_vtable = 'null',
 dwiz_name    =climate_corp
 dwiz_desc    =
 dwiz_user_rect_x1 =579
 dwiz_user_rect_y1 =486
 dwiz_user_rect_x2 =839
 dwiz_user_rect_y2 =742
 dwiz_show_political =true
 dwiz_center_over_gmt =true
 dwiz_latlon_space_in_deg =10
 dwiz_latlon_linecolor =-8355712
 dwiz_map_scale_pct =12.5
 dwiz_map_vert_scrollbar_pos =249
 dwiz_map_horiz_scrollbar_pos =410
 dwiz_gridpt_dist_km =36.0
 dwiz_mpi_command =
 dwiz_tcvitals =null
 dwiz_bigmap =Y
/


More information about the ncl-talk mailing list