Re: Where oh where

From: Dave Allured <dave.allured_at_nyahnyahspammersnyahnyah>
Date: Sat Oct 29 2011 - 17:36:33 MDT

I was thinking along the same lines. This should work well as long
as the only consequence when the function "fails" is bad values at
appropriate array positions.

However, if "fails" means other side effects, such as crashing or
excessive run time, then something else will be needed. You could
stuff safe fake values into appropriate input positions, according
to test masks. That should be fairly easy.

Or you could use something to control iteration, such as explicit do
loops and if statements; or use ndtooned, ind, ind_resolve, etc. to
compute only at good array positions.

"Where" in Fortran masks iteration. "Where" in NCL controls only
the merging of two array results, *not* their evaluation.

--Dave

On 10/28/2011 7:49 PM, Bridget Thrasher wrote:
> Perhaps something like this:
>
> hi_tmp = hi(rh_ref2m, t_ref2m) ; Or however you call your function
> hi_out = where(t_ref2m.gt.324.15.and.t_ref2m.lt.293.15, missing, 0.0)
> hi_out = where(rh_ref2m.lt.10.and.t_ref2m.gt.322.15, hi_tmp ,hi_out)
> hi_out =
> where(rh_ref2m.lt.20.and.t_ref2m.gt.318.15.and.t_ref2m.lt.322.15,
> hi_tmp,hi_out)
> hi_out =
> where(rh_ref2m.lt.30.and.t_ref2m.gt.314.15.and.t_ref2m.lt.318.15,
> hi_tmp,hi_out)
> ...
>
> -Bridget
>
> On Fri, Oct 28, 2011 at 6:39 PM, James Correia, Jr
> <jimmyc42@gmail.com <mailto:jimmyc42@gmail.com>> wrote:
>
> I suppose you can string a few where's together until you have
> the conditions required for your polynomial
>
> var = where(t_ref2m .lt. condition1 .or. t_ref2m .gt.
> condition2, missing, t_ref2m)
>
> Then do another variation using rh:
> var1 = where(rh .gt. rhcondition1 .or. rh .lt. condition2,
> missing, rh)
>
> temp = ind(where(.not.ismissing(var) .and. .not.ismissing(var1),
> 1, 0))
>
> do polynomial computation using the arrays rh(temp) and
> t_ref2m(temp) where temp represents only the eements of the
> array that satisfy your conditions you defined in var and var1.
>
> Does that make sense?
> jimmyc
>
>
> On Fri, Oct 28, 2011 at 8:13 PM, jrbuzan <jbuzan@purdue.edu
> <mailto:jbuzan@purdue.edu>> wrote:
>
> Hmmm.
> I guess I left a piece of information out.
> The function is calculating a third array: hi (a polynomial
> that uses Temp and RH as inputs)
> The function (hi) only works over very specific combinations
> of t and rh.
>
> I could bound the Temperature range, as in your statement,
> however the relative humidity range varies as temperature
> varies. I am not sure how to continue the statement from
> that point.
>
> -Jonathan
>
>
> On Oct 28, 2011, at 8:58 PM, James Correia, Jr wrote:
>
>> It might be complicated in fortran but I dont see how that
>> effects the where in NCL.
>>
>> You can still write:
>> var = where((t_ref2m .gt. 324.15) .or. (t_refm .lt.
>> 293.15), Missing_value, t_ref2m) ; .and. would fail since
>> 1 grid point can not have two values
>>
>> You can keep making changes to the array "var".
>> ;code is untested
>> jimmyc
>>
>> On Fri, Oct 28, 2011 at 7:43 PM, jrbuzan
>> <jbuzan@purdue.edu <mailto:jbuzan@purdue.edu>> wrote:
>>
>> Hello,
>>
>> I have complicated where statement.
>> I am not sure how to approach this in NCL. The
>> examples do not seem
>> to show how to bound a region with 2 arrays where
>> there is a specific
>> range that the function may be calculated.
>>
>> Is there a way to write multiple where statements
>> within one where
>> statement?
>>
>> Thanks,
>>
>> -Jonathan
>>
>> Example code.
>> In fortran:
>>
>> WHERE ((t_ref2m.gt.324.15) .and. (t_ref2m.lt.293.15))
>> Missing value
>> ELSEWHERE
>> WHERE ((rh_ref2m.lt.10.) .and. (t_ref2m.gt.322.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.20.) .and. (t_ref2m.gt.318.15)
>> .and.
>> (t_ref2m.lt.322.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.30.) .and. (t_ref2m.gt.314.15)
>> .and.
>> (t_ref2m.lt.318.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.40.) .and. (t_ref2m.gt.311.15)
>> .and.
>> (t_ref2m.lt.314.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.50.) .and. (t_ref2m.gt.308.15)
>> .and.
>> (t_ref2m.lt.311.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.60.) .and. (t_ref2m.gt.307.15)
>> .and.
>> (t_ref2m.lt.308.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.70.) .and. (t_ref2m.gt.306.15)
>> .and.
>> (t_ref2m.lt.307.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.80.) .and. (t_ref2m.gt.303.15)
>> .and.
>> (t_ref2m.lt.306.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.90.) .and. (t_ref2m.gt.301.15)
>> .and.
>> (t_ref2m.lt.303.15))
>> Function
>> END WHERE
>> WHERE ((rh_ref2m.lt.100.) .and.
>> (t_ref2m.gt.293.15) .and.
>> (t_ref2m.lt.301.15))
>> Function
>> END WHERE
>> END WHERE
>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>>
>>
>> --
>>
>> James Correia Jr.
>> OU CIMMS Research Associate
>> SPC HWT Liaison
>>
>> "The highest function of the teacher consists not so much
>> in imparting knowledge as in stimulating the pupil in its
>> love and pursuit. To know how to suggest is the art of
>> teaching."
>>
>> ------------------------------------------------------------------------------------------
>> The views expressed in this email do not necessarily
>> reflect those of NOAA, the National Weather Service, or
>> the University of Oklahoma.
>> ------------------------------------------------------------------------------------------
>>
>
>
>
>
> --
>
> James Correia Jr.
> OU CIMMS Research Associate
> SPC HWT Liaison
>
> "The highest function of the teacher consists not so much in
> imparting knowledge as in stimulating the pupil in its love and
> pursuit. To know how to suggest is the art of teaching."
>
> ------------------------------------------------------------------------------------------
> The views expressed in this email do not necessarily reflect
> those of NOAA, the National Weather Service, or the University
> of Oklahoma.
> ------------------------------------------------------------------------------------------
>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
>
> --
> Bridget Thrasher, PhD
> Independent Contractor, Research Scientist
>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Sat Oct 29 17:36:45 2011

This archive was generated by hypermail 2.1.8 : Tue Nov 01 2011 - 13:43:04 MDT