[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