[ncl-talk] multiple ascii file outputs

Mary Haley haley at ucar.edu
Mon May 9 11:42:02 MDT 2016


I had an error. This line:

  asciiwrite (fName , data)


Need to be just before the first "end do":

    asciiwrite (fName , data)
  end do                      ; end of "ip" loop
end do                        ; end of time loop
end


On Mon, May 9, 2016 at 11:07 AM, Ramchandra Karki <rammetro at hotmail.com>
wrote:

> Dear Mary
> thank you very much for yoru response. i run the revised script from you
> but it is again giving output as a single ascii ouput as 18T1.... how could
> i get 19 individual stations files like 1T2oben_1kmtemp_rainnonc_rainc_raintot_wspd_wdir_snow_snowh.txt",
> 2T2oben_1kmtemp_rainnonc_rainc_raintot_wspd_wdir_snow_snowh.txt etc.
> regards
> ram
>
>
>
> Please respond back to ncl-talk if you have follow-up questions.
>
> You have two sets of double do loops, where the first set of loops reads
> in the data, and the second loop tries to write it.
>
> The problem is that all the data you're reading in the first set of loops
> gets reset every time, so by the time you get to your second set of do
> loops, you don't have any of the original data left to write.
>
> You want to use just one set of do loops, so that you read in your data,
> and then immediately write it to a file before you then read the next set
> of data.
>
> I moved all your 'wrf_user_getvar' calls to the outside do loop, because
> they only change for every value of "it" and not for every value of "ip".
> It's time-consuming to have code in a loop that you don't need, so it's
> important to keep your "do" loops as clutter free as possible.
>
> This is UNTESTED:
>
>
>  ; --------------  LOAD FUNCTIONS AND PROCEDURES ----------------
>
>     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 "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
>
>     ; --------------  BEGINING OF NCL SCRIPT ----------------
> begin
> DATADir = "/mnt/gpfs1/data/private/fgvy024/Build_WRF/WRFV6/run/"
> FILES = systemfunc (" ls -1 " + DATADir + "wrfout_d03* ")
> numFILES = dimsizes(FILES)
> a = addfiles(FILES+".nc","r")
> times = wrf_user_list_times(a)     ; get times in the file
> ntimes = dimsizes(times)           ; number of times in the file or 1584
> for domain1 4750
>
> ;new parameters naming
> temp = new(ntimes,float)
> rain_expp = new(ntimes,float)
> rain_conn = new(ntimes,float)
> rain_tot = new(ntimes,float)
> wspd = new(ntimes,float)
> wdir = new(ntimes,float)
> snoww_eq = new(ntimes,float)
> snowh_h = new(ntimes,float)
> ;rhh = new(ntimes,float)
>
> ip_lats = (/ 27.3081, 27.6331,27.86,27.959167, \
>              27.696667, 27.8024,27.8953, 27.99,27.9818, \
>              27.90506667, 27.89671667, 27.901, 27.8987, \
>              27.89261111, 27.87828333, 27.85911111, \
>              27.60111, 27.74661, 27.85722 /)
> ip_lons = (/ 86.5042, 86.2331, 86.46, 86.81278, 86.721389, 86.7144, \
>              86.8188, 86.83, 86.7649, 86.37536667, 86.37428333, 86.37625,
> 86.37911667, \
>              86.37594444,86.43361667, 86.43388889, 86.74028, 86.713,
> 86.79417 /)
> res = True
> res at returnInt = True
>
> data = new(ntimes, "string")
>
> ;******************************* time loop
> do it = 0, ntimes-1
>   tc2      = wrf_user_getvar(a,"T2",it)       ; temp extraction
>   tc2      = tc2 -273.16
>   rain_exp = wrf_user_getvar(a,"RAINNC",it)
>   rain_con = wrf_user_getvar(a,"RAINC",it)
>   u10      = wrf_user_getvar(a,"U10",it)    ; u at 10 m, mass point
>   v10      = wrf_user_getvar(a,"V10",it)    ; v at 10 m, mass point
>   snow_eq  = wrf_user_getvar(a,"SNOW",it)
>   snow_h   = wrf_user_getvar(a,"SNOWH",it)
>
>  ;************************************************
>   do ip = 0, 18             ;loop for number of station locations
>     point = wrf_user_ll_to_ij(a, ip_lons(ip), ip_lats(ip), True)
>     x = point(0) - 1
>     y = point(1) - 1
>
>     temp(it)      = tc2(y,x) ; temperature extraction for station location
>     rain_expp(it) = rain_exp(y,x)
>     rain_conn(it) = rain_con(y,x)
>     rain_tot(it)  = rain_exp(y,x) + rain_con(y,x)
>     wspd(it)      = ndtooned( sqrt(u10(y,x)^2 + v10(y,x)^2) )
>     wdir(it)      = ndtooned( atan2(u10(y,x),v10(y,x))/0.01745329 +180. )
>     snoww_eq(it)  = snow_eq(y,x)
>     snowh_h (it)  = snow_h(y,x)
>
> ;---Create filename to write to
>     fName =
> ip+"T2oben_1kmtemp_rainnonc_rainc_raintot_wspd_wdir_snow_snowh.txt"
>
>     data (it)= (sprintf("%5.0f",it)    +" " \
>           +sprintf("%21.2f", temp(it)) +"  " \
>           +sprintf("%22.2f", rain_expp(it)) +"  " \
>           +sprintf("%23.2f", rain_conn(it)) +"  " \
>           +sprintf("%24.2f", rain_tot(it)) +"  " \
>           +sprintf("%17.2f", wspd(it)) +"  " \
>           +sprintf("%25.2f", wdir(it)) +"  " \
>           +sprintf("%18.2f", snoww_eq(it)) +"  " \
>           +sprintf("%19.2f", snowh_h(it)) +"  " )
>   end do                      ; end of "ip" loop
>   asciiwrite (fName , data)
> end do                        ; end of time loop
> end
>
>
> On Mon, May 9, 2016 at 10:23 AM, Ramchandra Karki <rammetro at hotmail.com>
> wrote:
>
> Dear Mary
> thank you very much. i am new to these things. the script is not giving
> errors but i am not getting what i am expecting. i want to get
> -individual ascii file outputs for each stations (19 ascii files for 19
> stations containing time series for whole period). would you please kindly
> suggest me where i need to change to get it?
>
>
> *Regards*
> *ram*
>
>
> ------------------------------
> Date: Mon, 9 May 2016 10:13:48 -0600
> Subject: Re: [ncl-talk] multiple ascii file outputs
> From: haley at ucar.edu
> To: rammetro at hotmail.com
> CC: ncl-talk at ucar.edu
>
>
> It helps if you provide more information about what the problem is.  Are
> you getting an error of any kind? If so, please indicate which line the
> error occurs on.
>
> I think the problem is here:
>
>    do  ip = 0, 18
>     do it = 0,ntimes-1 ;ntimes-1
>     data (it)= (sprintf("%5.0f",it)    +" " \
>           +sprintf("%21.2f", temp(it)) +"  " \
>           +sprintf("%22.2f", rain_expp(it)) +"  " \
>           +sprintf("%23.2f", rain_conn(it)) +"  " \
>           +sprintf("%24.2f", rain_tot(it)) +"  " \
>           +sprintf("%17.2f", wspd(it)) +"  " \
>           +sprintf("%25.2f", wdir(it)) +"  " \
>           +sprintf("%18.2f", snoww_eq(it)) +"  " \
>           +sprintf("%19.2f", snowh_h(it)) +"  " )
> end do
>  end do                     ; end of time loop
>
>  asciiwrite (fName , data)
>
> You have a double "do" loop, where "data" is getting created inside the
> inner do loop.  For each iteration of "ip", then, the previous strings
> assigned to "data" are getting clobbered.  In fact, I'm not even sure why
> you are looping across "ip=0,18", because the inside loop is doing the
> exact same thing every time.
>
> Finally, you call "asciiwrite", but this is only going to contain "data"
> from the last iteration of "ip" (ip=18).
> --Mary
>
>
>
> On Sat, May 7, 2016 at 8:52 AM, Ramchandra Karki <rammetro at hotmail.com>
> wrote:
>
>  Dear NCL help,
> I am trying to extract multiple stations time series (ascci output for
> each stations) from wrfoutput file but i could not succeed in doing so.
> Would you please kindly guide me to get the solution?
>
>  ; --------------  LOAD FUNCTIONS AND PROCEDURES ----------------
>
>     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 "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
>
>     ; --------------  BEGINING OF NCL SCRIPT ----------------
> begin
> DATADir = "/mnt/gpfs1/data/private/fgvy024/Build_WRF/WRFV6/run/"
> FILES = systemfunc (" ls -1 " + DATADir + "wrfout_d03* ")
> numFILES = dimsizes(FILES)
> a = addfiles(FILES+".nc","r")
> times = wrf_user_list_times(a)     ; get times in the file
> ntimes = dimsizes(times)           ; number of times in the file or 1584
> for domain1 4750
>
> ;new parameters naming
> temp = new(ntimes,float)
> rain_expp = new(ntimes,float)
> rain_conn = new(ntimes,float)
> rain_tot = new(ntimes,float)
> wspd = new(ntimes,float)
> wdir = new(ntimes,float)
> snoww_eq = new(ntimes,float)
> snowh_h = new(ntimes,float)
> ;rhh = new(ntimes,float)
>
> ;******************************* time loop
> do it = 0, ntimes-1
> time = it
>
>  ;************************************************
> do ip = 0, 18             ;loop for number of station locations
> ip_lats = (/ 27.3081, 27.6331, 27.86, 27.959167, \
>           27.696667, 27.8024, 27.8953, 27.99, 27.9818, \
>           27.90506667, 27.89671667, 27.901, 27.8987, \
>           27.89261111, 27.87828333, 27.85911111, \
>           27.60111, 27.74661, 27.85722 /)
> ip_lons = (/ 86.5042, 86.2331, 86.46, 86.81278, 86.721389, 86.7144, \
>            86.8188, 86.83, 86.7649, 86.37536667, 86.37428333, 86.37625,
> 86.37911667, \
>    86.37594444, 86.43361667, 86.43388889, 86.74028, 86.713, 86.79417 /)
> res = True
> res at returnInt = True
> point = wrf_user_ll_to_ij(a, ip_lons(ip), ip_lats(ip), True)
> x = point(0) - 1
> y = point(1) - 1
>
> tc2 = wrf_user_getvar(a,"T2",it)       ; temp extraction
> tc2 = tc2 -273.16
> temp(it) = tc2(y,x) ; temperature extraction for station location
> rain_exp = wrf_user_getvar(a,"RAINNC",it)
> rain_con = wrf_user_getvar(a,"RAINC",it)
> rain_expp(it) = rain_exp(y,x)
> rain_conn(it) = rain_con(y,x)
> rain_tot(it) = rain_exp(y,x) + rain_con(y,x)
> u10 = wrf_user_getvar(a,"U10",it)    ; u at 10 m, mass point
> v10 = wrf_user_getvar(a,"V10",it)    ; v at 10 m, mass point
> wspd(it) = ndtooned( sqrt(u10(y,x)^2 + v10(y,x)^2) )
> wdir(it) = ndtooned( atan2(u10(y,x),v10(y,x))/0.01745329 +180. )
> snow_eq = wrf_user_getvar(a,"SNOW",it)
> snow_h = wrf_user_getvar(a,"SNOWH",it)
> snoww_eq(it) = snow_eq(y,x)
> snowh_h (it) = snow_h(y,x)
>
> end do    ; end of station loop
> end do    ; end of time loop
>
>     npts=ntimes
>     fName =
> ip+"T2oben_1kmtemp_rainnonc_rainc_raintot_wspd_wdir_snow_snowh.txt"
>     data  = new( npts, "string")
>     ;print(" Time temp ")
>    do  ip = 0, 18
>     do it = 0,ntimes-1 ;ntimes-1
>     data (it)= (sprintf("%5.0f",it)    +" " \
>           +sprintf("%21.2f", temp(it)) +"  " \
>           +sprintf("%22.2f", rain_expp(it)) +"  " \
>           +sprintf("%23.2f", rain_conn(it)) +"  " \
>           +sprintf("%24.2f", rain_tot(it)) +"  " \
>           +sprintf("%17.2f", wspd(it)) +"  " \
>           +sprintf("%25.2f", wdir(it)) +"  " \
>           +sprintf("%18.2f", snoww_eq(it)) +"  " \
>           +sprintf("%19.2f", snowh_h(it)) +"  " )
> end do
>  end do                     ; end of time loop
>
>  asciiwrite (fName , data)
>
> end
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20160509/9833455d/attachment.html 


More information about the ncl-talk mailing list