Hello,
I am trying to read some variables from four different WRF output files.
These are big files. Anyhow, when I run the ncl script I get the following
message.
ncl(15494) malloc: *** mmap(size=507322368) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
fatal:NclMalloc Failed:[errno=12]
fatal:FUNNAME: Could not allocate memory for result type, can't continue
fatal:Execute: Error occurred at or near line 60 in file
scheme_avg_meltout_height.ncl
I suspect that is because I am running out of memory. Is there a way to get
around this? My script is copied below.
;This program will produce vertical profiles of total
;hydrometeor species at a given time. This plot can be used
;to see relationships such as the melting of graupel / freezing
;of rain couplet near the freezing level.
;
;All previous comments consolidated with general script cleanup.
;*****************************************************
;Standard loading scripts for functions and plotting?
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
;load "./contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
external AVERAGE "./average_rates_meltout.so"
begin
;;EDITABLE CODE BEGINS HERE
; RUN_NUM = "Hour-1"
; WRF_TIME = 8 ; This is the time index, i.e...index *dt =
time.
; timelabl = "0110"
; mp_label = "GCE"
; dif_labl = "WSM6gro2gacs - WSM6defgro2"
; di2_labl = "WSM6gro2gacs-WSM6defgro2"
dif_labl = "WSM6cv"
di2_labl = "WSM6cv"
MULTI_FILE_FLAG = 0 ; 1 for yes, 0 for no.
RESTART_NEWTIME_INDEX = 24 ; i.e. dt=5 & restart time=120 min,
; 120/5=24+1(time zero)-1(duplicate
time)->Index=24
type = "Ice/Snow/Gaupel/Hail Melting (mg kg-1 s-1)"
pdftype = "meltout" ;name of the pdf file
timelabl =
(/"0000","0005","0010","0015","0020","0025","0030","0035","0040","0045",\
"0050","0055","0100","0105","0110","0115","0120","0125","0130"/)
; timelabl = (/"0000","0030","0100"/)
; WRF_TIME = ispan(0,7,1)
;;END EDITABLE CODE
a = addfile("../wrfout_d01_0001-01-01_00:00:00_MOR_250m.nc", "r")
b = addfile("../wrfout_d01_0001-01-01_00:00:00_THO_250m.nc", "r")
c = addfile("../wrfout_d01_0001-01-01_00:00:00_MY_250m.nc", "r")
d = addfile("../wrfout_d01_0001-01-01_00:00:00_WSM6_250m.nc", "r")
;f = addfile("wrfout_d01_0001-01-01_00:00:00_nssl.nc", "r")
; a = addfile("wrfout-wsm6cvfut.nc", "r")
; b = addfile("wrfout-wsm6defgro2.nc", "r")
awsm6 = (d->MELTOUT3D(:,:,:,:))
tho = (b->MELTOUT3D(:,:,:,:))
mil = (c->MELTOUT3D(:,:,:,:))
amor = (a->MELTOUT3D(:,:,:,:))
ph = (a->PH(:,:,:,:))/9.81 ;eliminate geopotential
phb = (a->PHB(:,:,:,:))/9.81
height = (ph + phb)/1000
; height = wrf_user_getvar(a,"z",-1)/1000
delete(ph)
delete(phb)
; times = (a->Times(:,:))
times = wrf_user_list_times(a)
delete(a)
; delete(b)
;I will need the number of vertical/horiz levels for the height labels later
num_times = dimsizes(times)
num_vert = dimsizes(tho(0,:,1,1))
num_horiza = dimsizes(tho(0,0,:,1))
num_horizb = dimsizes(tho(0,0,1,:))
nt = num_times
nz = num_vert
ny = num_horiza
nx = num_horizb
print (num_horiza)
print (num_horizb)
timid = ispan(0,18,1)
;The following makes an array with the model height (in km)
;to be used for the plot labels, in actuallity, we need to make a
;code that plots intergers vs. qmass
tmp1 = floattoint((num_vert/5)+1)
height_array = new(tmp1, float)
height_array(0) = avg(height(:,0,:,:)) ;because (j*5)-1 for 0 gives a
negative index
do j=1,tmp1-1
tmp2 = (j*5)-1
height_array(j) = floattoint(avg(height(:,tmp2,:,:)))
end do
;Now generate the intergers for plotting
heightplot = new(num_vert, float)
heightplot(0) = 0
do j=1,num_vert-1
heightplot(j) = heightplot(j-1)+1
end do
;*****************************************************
;These are all of my array declarations, which will
;be the length of the num_vert variable from above
;*****************************************************
; qavg_vapor = new(num_vert, float)
avg_wsm6 = new(num_vert, float)
avg_tho = new(num_vert, float)
avg_mil = new(num_vert, float)
avg_mor = new(num_vert, float)
; avg_nssl = new(num_vert, float)
; qavg_vapob = new(num_vert, float)
; qavg_cloub = new(num_vert, float)
; qavg_raib = new(num_vert, float)
; qavg_icb = new(num_vert, float)
; qavg_snob = new(num_vert, float)
; qavg_graub = new(num_vert, float)
; qdif_vapor = new(num_vert, float)
; qdif_cloud = new(num_vert, float)
; qdif_rain = new(num_vert, float)
; qdif_ice = new(num_vert, float)
; qdif_snow = new(num_vert, float)
; qdif_graup = new(num_vert, float)
qds_vapor = new((/num_times/), float)
qds_cloud = new((/num_times/), float)
qds_rain = new((/num_times/), float)
qds_ice = new((/num_times/), float)
qds_snow = new((/num_times/), float)
qds_graup = new((/num_times/), float)
mavg_wsm6 = new((/num_times,num_vert/), float)
mavg_tho = new((/num_times,num_vert/), float)
mavg_mil = new((/num_times,num_vert/), float)
mavg_mor = new((/num_times,num_vert/), float)
; mavg_nssl = new((/num_times,num_vert/), float)
suma = new((/num_times,num_vert/), float)
sumb = new((/num_times,num_vert/), float)
sumc = new((/num_times,num_vert/), float)
sumd = new((/num_times,num_vert/), float)
sume = new((/num_times,num_vert/), float)
suma = 0.
sumb = 0.
sumc = 0.
sumd = 0.
sume = 0.
li = new((/num_times,num_vert/), float)
th = new((/num_times,num_vert/), float)
mi = new((/num_times,num_vert/), float)
mo = new((/num_times,num_vert/), float)
ms = new((/num_times,num_vert/), float)
li = 0.
th = 0.
mi = 0.
mo = 0.
ms = 0.
; allq = new((/6, num_vert/), float)
allq = new((/4, num_vert/), float)
;*****************************************************
;This code will obtain the maximum values of some
;hydrometeor anywhere in the 3D domain for a fixed time.
;This may need to be updated to correct for domains
;that don't include the cells which develop on the
;outflow of my supercell. NOTE: units now in g/kg
;*****************************************************
; suma = dim_sum_n(mor,(/2,3/))
; sumb = dim_sum_n(tho,(/2,3/))
; sumc = dim_sum_n(mil,(/2,3/))
; sumd = dim_sum_n(wsm6,(/2,3/))
;print (suma*1000)
; li = dim_num_n(wsm6.ne.0,(/2,3/))
; th = dim_num_n(tho.ne.0,(/2,3/))
; mi = dim_num_n(mi.ne.0,(/2,3/))
; mo = dim_num_n(mo.ne.0,(/2,3/))
AVERAGE::average(suma,sumb,sumc,sumd,amor,tho,mil,awsm6,li,th,mi,mo,mavg_wsm6,mavg_tho,mavg_mil,mavg_mor,nx,ny,nz,nt)
print (suma*1000)
print (mo)
;mavg_ice = smth9(mavg_ice, 0.50, 0.25, False)
do i = 0, dimsizes(mavg_wsm6(:,0))-1
do k = 0, dimsizes(mavg_wsm6(0,:))-1
if (mavg_wsm6(i,k) .lt. 0.) then
mavg_wsm6(i,k) = 0.
end if
end do
end do
do i = 0, dimsizes(mavg_tho(:,0))-1
do k = 0, dimsizes(mavg_tho(0,:))-1
if (mavg_tho(i,k) .lt. 0.) then
mavg_tho(i,k) = 0.
end if
end do
end do
do i = 0, dimsizes(mavg_mil(:,0))-1
do k = 0, dimsizes(mavg_mil(0,:))-1
if (mavg_mil(i,k) .lt. 0.) then
mavg_mil(i,k) = 0.
end if
end do
end do
do i = 0, dimsizes(mavg_mor(:,0))-1
do k = 0, dimsizes(mavg_mor(0,:))-1
if (mavg_mor(i,k) .lt. 0.) then
mavg_mor(i,k) = 0.
end if
end do
end do
; do i = 0, dimsizes(mavg_nssl(:,0))-1
; do k = 0, dimsizes(mavg_nssl(0,:))-1
; if (mavg_nssl(i,k) .lt. 0.) then
; mavg_nssl(i,k) = 0.
; end if
; end do
; end do
print (mavg_mor)
;Open the workstation
wks = gsn_open_wks ("pdf", pdftype+"_scheme_avg_height")
do i = 1,num_times -1
;fub = i
do k=0,num_vert-1
; avg_vapor(k) = (sum(qvapor(fub,k,:,:))) * 1000
avg_wsm6(k) = mavg_wsm6(i,k)* 1000*1000
avg_tho(k) = mavg_tho(i,k)* 1000*1000
avg_mil(k) = mavg_mil(i,k)* 1000*1000
avg_mor(k) = mavg_mor(i,k)* 1000*1000
; avg_nssl(k) = mavg_nssl(i,k)* 1000
; qavg_vapob(k) = (sum(qvaporb(fub,k,:,:))) * 1000
; qavg_cloub(k) = (sum(qcloudb(fub,k,:,:))) * 1000
; qavg_raib(k) = (sum(qrainb(fub,k,:,:))) * 1000
; qavg_icb(k) = (sum(qiceb(fub,k,:,:))) * 1000
; qavg_snob(k) = (sum(qsnowb(fub,k,:,:))) * 1000
; qavg_graub(k) = (sum(qgraupb(fub,k,:,:))) * 1000
; qdif_vapor(k) = qavg_vapor(k) - qavg_vapob(k)
; qdif_cloud(k) = qavg_cloud(k) - qavg_cloub(k)
; qdif_rain(k) = qavg_rain(k) - qavg_raib(k)
; qdif_ice(k) = qavg_ice(k) - qavg_icb(k)
; qdif_snow(k) = qavg_snow(k) - qavg_snob(k)
; qdif_graup(k) = qavg_graup(k) - qavg_graub(k)
;print (avg_mor)
;allq(0,k) = avg_vapor(k)
allq(0,k) = avg_mor(k)
allq(1,k) = avg_tho(k)
allq(2,k) = avg_mil(k)
allq(3,k) = avg_wsm6(k)
; allq(4,i,k) = avg_nssl(k)
end do
; qds_vapor(i) = sum(avg_vapor)
;qds_cloud(i) = sum(avg_cloud)
;qds_rain(i) = sum(avg_rain)
;qds_ice(i) = sum(avg_ice)
;qds_snow(i) = sum(avg_snow)
;qds_graup(i) = sum(avg_graup)
;*****************************************************
;Time to make some plots, yo
;*****************************************************
;Open the workstation
; wks = gsn_open_wks ("pdf", "Qdiftot_vALT"\
; +di2_labl+"")
; allq(0,:) = qavg_vapor(i)
; leg_label = (/"QVapor","QCloud","QRain","QIce","QSnow","QGraupel"/)
leg_label = (/"MOR","THOMP","MILB","WSM6"/)
res = True
res@tiMainString = timelabl(i)
res@tiXAxisString = type
res@tiYAxisString = "Height (km)"
res@tiXAxisFontHeightF = 0.02
res@tiYAxisFontHeightF = 0.02
res@pmLegendDisplayMode = "Always"
res@pmLegendZone = 0
res@pmLegendSide = "Top"
res@pmLegendWidthF = 0.15
res@pmLegendHeightF = 0.15
res@lgLabelFontHeightF = .40
res@xyExplicitLegendLabels = leg_label
res@pmLegendParallelPosF = 0.32
res@pmLegendOrthogonalPosF = 0.32
res@tmYLMode = "Explicit"
res@tmYLMinorOn = True
res@trYMaxF = num_vert-1
res@tmYLTickSpacingF = 5
res@tmYLMinorPerMajor = 4
res@tmYLLabelFontHeightF = 0.015
res@tmYLValues = ispan(0,num_vert-1,5)
res@tmYLMinorValues = ispan(0,num_vert-1,1)
res@tmYLLabels = height_array
res@tmYLPrecision = 1
; res@xyMarkLineMode = "MarkLines"
; res@xyMarkers = (/9,4/)
;res@xyLineThicknessF = 2.0
res@xyLineThicknesses = (/2.0,3.0,2.0,3.0/)
;res@xyLineColors =
(/"black","green","blue","brown","orange","purple"/)
res@xyLineColors = (/"black","gray","black","gray55"/)
;res@TimeLabel = times(i)
plot = gsn_xy(wks,allq,heightplot,res)
end do
; grandtotnovap = qds_cloud+qds_rain+qds_ice+qds_snow+qds_graup
; print (avg_mor)
; print(qds_vapor)
; print(qds_cloud)
; print(qds_rain)
; print(qds_ice)
; print(qds_snow)
; print(qds_graup)
; print(grandtotnovap)
end
-- ******************************************************** Cecille M. Villanueva Birriel Graduate Research Assistant Cloud Microphysics Research Group Purdue University Department of Earth and Atmospheric 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 Thu Jul 12 09:55:16 2012
This archive was generated by hypermail 2.1.8 : Wed Jul 18 2012 - 14:33:00 MDT