[gradsusr] Using a calculation against all previous hours in current hour.

Christopher Gilroy chris.gilroy at gmail.com
Tue Oct 20 22:31:35 EDT 2015


Yea I think I just realized why I can't see that solution working, sadly,
because it looks so much nicer but I've used it just trying to do tmp2m and
I can see how it's working. So, I'm ultimately working on a dynamic ratio
for snowaccum. Now, I have exact working code but it uses IF blocks, but
for each t I'm pulling multiple columns of air temp. I'm then running a
calculation to come up with the ratio. I'm then taking weasdsfc and
multiplying it by that number so it looks like so:

'set t '%trecord - For the sake of it just know every frame trecord
increments by 1
'define column1 = var1-273.15'
'define column2 = var2-273.15'
'define column3 = var3-273.15'
'define column4 = var4-273.15'

'define ratiocalc = 100/(50-((column1 + column2 + column3 + column4)/2)*10)'

'define snow
= const((sum(maskout(weasdsfc-weasdsfc(t-1),weasdsfc-weasdsfc(t-1)),t=2,t=2)*0.0393701),
0, -u)'

'd snow * ratiocalc'

Now that plots t2 great, paying close attention to what I'm doing in the
sum dim2. t3's would be t=3,t=3 because what it was doing on me with
t=2,t=3 it was taking the weasdsfc from 2 and 3 and applying that to t3's
ratio of course. t4's would have been t=2,t=4 and doing it against t4's
ratio, etc. The only way I knew how to get around that is that each frame
needs to calculate the snowdepth of t2 (using the air from t2 and the
weasdsfc from t2) with obviously the snowdepth of t3 (using the air from t3
and weasdsfc from 3). t4 would need to draw the snowdepth of t2 (using data
from t2) with t3 (using data from t3) and then t4, using the data from t4.
And I would eventually (on t40 for example) end up with:

'd snow02+snow03+snow04+snow05...+snow39+snow40'

I don't know if that makes sense but think of it as a "layer" per se. Hence
why I said each t would have a unique value. So snowfall, in inches, using
that ratiocalc var you would have:

t2 = 2 inches
t3 = 4.2 inches + t2's 2 inches
t4 = 8.9 inches + t3's 4.2 inches + t2's 2 inches


Lastly, I was more concerned, than anything, with grads dying out from the
(8mb? internal memory allocation) since each t the calcuation become more
and more. Speaking of that, is it common to have grads die when trying to
plot a grid at 0.25? It seems like almost all grids I have to re(var, .50)
at a minimum, some var's I have to go re(var, 2.0) and it's definitely not
the machine we're on as we have 64gb of ram available on this test machine.

I sincerely appreciate the time you guys have taken to reply to this
question so far.


On Tue, Oct 20, 2015 at 8:04 PM, James T. Potemra <jimp at hawaii.edu> wrote:

>
> This should produce a variable "t2mtotal" that is equal to the sum of all
> previous and current values (not including the value at the first time
> step).  It will only be defined for t=2, 3 and 4 (not t=1, and not t=
> something greater than four), but you can change this in the "set t 2 4"
> line.
>
> 'set dfile 1'
>
> 'set tonsofoptions'
> 'set tonsofoptions1'
> 'set tonsofoptions2'
>
> 'set t 2 4'
> 'define t2mtotal = sum ( tmp2m-273.15, t=2, t+0 )'
> 'd t2mtotal'
>
> 'set string 1 tl 0 0'
> 'set strsiz 0.13'
> 'draw string 0.4 8.35 Sample String'
>
> On 10/20/15 1:53 PM, Christopher Gilroy wrote:
>
> Hey Jeff (and Jim),
>
> Thanks for the replies!
>
> I download and process all plots one at a time because I download them in
> real-time, as they become available. Not all files are available at the
> same time, unless ftpprd's NOMADS server is slow to replicate the data,
> heh. Everything works great having something (again simple, but still the
> majority jist of the code) like this:
>
> 'open /gfsmodeldata/gfs.ctl'
> 'set dfile 1'
>
> 'set tonsofoptions'
> 'set tonsofoptions1'
> 'set tonsofoptions2'
>
> if (t=2)
> 'set t 2'
> 'define t2m06 = tmp2m-273.15'
>
> 'define t2mtotal= t2m06'
> 'd t2mtotal'
> endif
>
> if (t=3)
> 'set t 2'
> 'define t2m06 = tmp2m-273.15'
>
> 'set t 3'
> 'define t2m12 = tmp2m-273.15'
>
> 'define t2mtotal= t2m06+t2m12'
> 'd t2mtotal'
> endif
>
> if (t=4)
> 'set t 2'
> 'define t2m06 = tmp2m-273.15'
>
> 'set t 3'
> 'define t2m12 = tmp2m-273.15'
>
> 'set t 4'
> 'define t2m18 = tmp2m-273.15'
>
> 'define t2mtotal= t2m06+t2m12+t2m18'
> 'd t2mtotal'
> endif
>
> 'set string 1 tl 0 0'
> 'set strsiz 0.13'
> 'draw string 0.4 8.35 Sample String'
>
>
> But as I said I was just curious if there was an easier way than having to
> have a huge IF block to do it. I'm going to play with Jims example since
> that may very well work after I play with it.
>
>
>
> On Tue, Oct 20, 2015 at 7:28 PM, Jeff Duda <jeffduda319 at gmail.com> wrote:
>
>> If you're trying to process the files one-by-one (and I'm assuming each
>> file represents only one time step), then I don't see a simple way of
>> integrating over time as you desire. Is there a specific reason you are not
>> doing a batch download (of all the files first)? Also, if you really are
>> going to do this sequentially, I would think you'd have to include the
>> shell command prompt (!) in your script so that you could create a control
>> file and open it as you go through the times. I didn't see that in your
>> code example.
>>
>> Basically, what I'm trying to say is, coding wise, it would be much
>> easier if you just downloaded all the files first, then processed them all
>> at once. If you absolutely must process the files sequentially, I think
>> you're going to be stuck hard coding each and every step.
>>
>> Jeff Duda
>>
>> On Tue, Oct 20, 2015 at 2:24 PM, James T. Potemra < <jimp at hawaii.edu>
>> jimp at hawaii.edu> wrote:
>>
>>> Christopher,
>>>
>>> How about this, e.g., for the first 10 time steps:
>>>
>>> 'set t 1 10'
>>> 'define t2mtotal = sum ( tmp2m-273.15, t=1, t+0 )'
>>> 'd t2mtotal'
>>>
>>> Jim
>>>
>>>
>>> On 10/20/15 3:42 AM, Christopher Gilroy wrote:
>>>
>>> Ok, so I know I can 'easily' do this via a massive if block but I'm
>>> trying to avoid that, and I have been. I have a calculation that will
>>> return a unique value depending on which t it's running on.
>>>
>>> So when I get to t=10 I need to run a calculation on data contained in
>>> t=1, t=2, t=3, etc. t=20 would need to run the calculation t=1, t=2, t=3,
>>> etc up to t=20. The actual value of of each t would be the same for the
>>> entire run if that helps to understand though.
>>>
>>> So take this horrible example:
>>>
>>> 'define t2m = tmp2m-273.15'
>>> 'd t2m+allpreviousforecasthourt2ms'
>>>
>>> Now, the other key is that I don't download all files and then run in
>>> one big loop. I download each file one-by-one and process one-by-one, in
>>> real-time, as they are released.
>>>
>>> A real snippet of how I'm currently achieving this would look like:
>>>
>>> if (t=2)
>>> 'set t 2'
>>> 'define t2m06 = tmp2m-273.15'
>>>
>>> 'define t2mtotal= t2m06'
>>> 'd t2mtotal'
>>> endif
>>>
>>> if (t=3)
>>> 'set t 2'
>>> 'define t2m06 = tmp2m-273.15'
>>>
>>> 'set t 3'
>>> 'define t2m12 = tmp2m-273.15'
>>>
>>> 'define t2mtotal= t2m06+t2m12'
>>> 'd t2mtotal'
>>> endif
>>>
>>> if (t=4)
>>> 'set t 2'
>>> 'define t2m06 = tmp2m-273.15'
>>>
>>> 'set t 3'
>>> 'define t2m12 = tmp2m-273.15'
>>>
>>> 'set t 4'
>>> 'define t2m18 = tmp2m-273.15'
>>>
>>> 'define t2mtotal= t2m06+t2m12+t2m18'
>>> 'd t2mtotal'
>>> endif
>>>
>>>
>>>
>>> So, whether t2m06 is ran during hour 06, 12, 18, 240, etc t2m06 is going
>>> to be the exact same value. As you can see, the if blocks get exponentially
>>> bigger each t and that's what concerns me in terms of grads memory limits
>>> or if there's simply a better/faster approach.
>>>
>>>
>>> _______________________________________________
>>> gradsusr mailing listgradsusr at gradsusr.orghttp://gradsusr.org/mailman/listinfo/gradsusr
>>>
>>>
>>>
>>> _______________________________________________
>>> gradsusr mailing list
>>> 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
>>
>>
>
>
> --
> -Chris A. Gilroy
>
>
> _______________________________________________
> gradsusr mailing listgradsusr at gradsusr.orghttp://gradsusr.org/mailman/listinfo/gradsusr
>
>
>
> _______________________________________________
> gradsusr mailing list
> gradsusr at gradsusr.org
> http://gradsusr.org/mailman/listinfo/gradsusr
>
>


-- 
-Chris A. Gilroy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20151020/88fb8ca4/attachment-0001.html 


More information about the gradsusr mailing list