[gradsusr] Using A While Loop To Sequentially Loop Through Many Hours/Control Files

James T. Potemra jimp at hawaii.edu
Fri Dec 27 15:03:13 EST 2013


Aaron:

I'm not quite sure what you want fcsthr1 to look like.  "incr" is a 
constant value of 3, and "i" runs from 0 to 80 incremented by 3.  Do you 
want fcsthr1 to be 3000, 3003, 3006, 3009, 3012, ..., 3080?  If so, you 
can do this via if/then, e.g., (echoing Jeff's reply about the 
unnecessary quotes, below all quotes are single):

incr=3
START=0
END=80
i=START

while(i <= END)
   fcsthr1 = incr''i
   if ( i < 100 )
      fcsthr1 = incr'0'i
   endif
   if ( i < 10 )
      fcsthr1 = incr'00'i
   endif
   i = i + 3
   say fcsthr1
endwhile



On 12/27/13 7:02 AM, Jeff Duda wrote:
> Aaron,
> I had a look through your script.  Here are my observations and 
> suggestions.
>
> -Grads does not have an intrinsic fprintf function.  There are 
> user-defined scripts that use that function, but what you should use 
> for string formatting in a grads script is math_format.  See this page 
> on grads script math functions 
> <http://www.iges.org/grads/gadoc/mathfunctions.html> for a list of 
> more and how to use them.
> -You have some seemingly superfluous single quotes running around in 
> your code.  Perhaps this is related to different versions of Grads 
> (for example, if you are running OpenGrads instead of the regular 
> version), but you might want to check that.  For example (including a 
> snippet of your code)
>
> (line 1) init = ''runhr''Z26DEC2013
> fhr = 0
> path = 'graphix/gem/25km/'
> sysdate2 = 20131226
>
> 'reinit'
>
> incr=3
> START=0
> END=80
> (line 2) i=''START''
>
> (line 3) while('i' <= 'END')
>
> In (what I've marked as) line 1, I'm not sure why you have quotes 
> surrounding runhr.  All that seems to be doing is surrounding the 
> string runhr with empty strings.  Also, I think you need to include 
> the Z26DEC2013 part in quotes to define it as a string.  I'm not sure 
> how Grads will interpret it if you attempt to set init as a number of 
> some kind.  As a check, you can include the line "say init" after you 
> define init to have grads spit out the value of the variable to the 
> window.  In line 2, it seems you're setting the variable i as the 
> string "START".  Since you have previously set START to the number 0, 
> I think you will want to remove those quotes so that i is properly 
> set.  In line 3, you have placed quotes around i and END in your while 
> statement.  Remove those.  You would only use quotes to set off lines 
> that you would input to the command prompt.  If it belongs internally 
> to the Grads script code (like the while loop is) you don't need to 
> set it off with quotes.
>
> As far as setting your forecast hour goes, I would imagine the range 
> of possible forecast hours follows a regular pattern that you could 
> either set in an array or set using math.  For example, if your model 
> output is every three hours, then you could just do
>
> while (i < END)
>  fcsthr = (i-1)*3
>
> ....
>
>  i = i + 1
> endwhile
>
> Jeff Duda
>
>
> On Thu, Dec 26, 2013 at 10:57 PM, Perry, Aaron @ LSC 
> <Aaron.Perry at lsc.vsc.edu <mailto:Aaron.Perry at lsc.vsc.edu>> wrote:
>
>     Good Evening All,
>
>     I am trying to implement a while loop that will automatically
>     insert each forecast hour (ex. 000, 003, 006, etc) of many control
>     files for a weather model directly into the 'open .ctl' line.
>
>     The reason for this is because I have 10+ control files that I'd
>     like to run sequentially without having to create 10 different
>     GrADS scripts to process each individual control file.
>
>     What I have in place now does not return any errors within GrADS
>     but, it doesn't process anything and the screen stays black.
>     Clearly, I'm doing something wrong...
>
>     In UNIX, you can simply use printf "%0*d\n" to accomplish three
>     leading zeros. I've tried modifying this process by putting a "!"
>     in front of printf to run the process outside of GrADS but, this
>     doesn't seem to be working...
>
>     I've attached the "working" script to this email in hopes that
>     someone who is more GrADS-savy than me can take a look at the
>     coding and potentially figure out this issue for me.
>
>
>     Onward and Upward,
>
>     Aaron Perry
>     Boston, MA
>     Mobile: 617-780-4312
>
>     _______________________________________________
>     gradsusr mailing list
>     gradsusr at gradsusr.org <mailto:gradsusr at gradsusr.org>
>     http://gradsusr.org/mailman/listinfo/gradsusr
>
>
>
>
> -- 
> Jeff Duda
> Graduate research assistant
> University of Oklahoma School of Meteorology
> Center for Analysis and Prediction of Storms
>
>
> _______________________________________________
> gradsusr mailing list
> gradsusr at gradsusr.org
> http://gradsusr.org/mailman/listinfo/gradsusr

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20131227/720c159b/attachment.html 


More information about the gradsusr mailing list