[ncl-talk] how can I avoid dividing by zero?

Barry Lynn barry.h.lynn at gmail.com
Wed Aug 22 06:33:35 MDT 2018


Hi:

I am not sure of all the steps, but small numbers are not NaNs.  Perhaps
you are dividing by close to zero, when you should limit to a number
reasonably above?

Is that possible to do?

On Wed, Aug 22, 2018 at 2:40 PM Sri Nandini <snandini at marum.de> wrote:

>
>
> Yes.
>
> 1) I use geopotential height and the values were originally like this:
> 1080.752
>
>    T41    = f->Z3(:,{850},:,:)
>
>    printVarSummary(T41)                        ; [Time|12]x [lat | 96] x
> [lon | 144]
>    T41 at _FillValue = -9.96921e+36
>    print(T41)
>
>
> 2) Then i performed: dim_avg_n_Wrap and values were like: 0.0009252814
>
>    aveX    = dim_avg_n_Wrap(T41,0)
>    printVarSummary(aveX)                      ; (lat,lon)
>
>    aveX at _FillValue =9.96921e+36
>    print(where(aveX.ne.0, aveX, aveX at _FillValue))
>
>  values like this:  1080.752
>
>    aveX = 1. / where(aveX.ne.0, aveX, aveX at _FillValue)
>    print(aveX)
>
> 0.0009252814
>
> 3) I use this in the eady growth rate equation and that gives me nan
> values for few gridpoints.
>    egr = eady_growth_rate(aveX2, aveX1, aveX, XLAT, 0,  1)
>    printVarSummary(egr)
>
>    printMinMax(egr,0)
>
> Variable: egr
> Type: double
> Total Size: 110592 bytes
>             13824 values
> Number of Dimensions: 2
> Dimensions and sizes:    [lat | 96] x [lon | 144]
> Coordinates:
>             lat: [ -90..  90]
>             lon: [   0..357.5]
> Number Of Attributes: 3
>   _FillValue :    9.969209968386869e+36
>   long_name :    maximum eady growth rate
>   units :
> (0)    maximum eady growth rate : min=nan   max=nan
>
> 4) All the inputs into the eady growth rate equation have data points but
> some are almost zeros, as such i assume it gets masked out to nan?
>
>
>
>
>
>
> On Aug 22, 2018 12:15:37 PM, Barry Lynn wrote:
>
> Hi:
>
> Are the points that actually have data producing NaNs from the
> calculations?
>
> Barry
>
> On Wed, Aug 22, 2018 at 12:56 PM Sri Nandini <snandini at marum.de> wrote:
>
>
>
> Thank you
>
> I used it and have seen that i have data points except some gridpoints
> which point to nan and the fillvalue both.
> I think then there is no data over these points.
>
>
>
>
>
>
>
>
>
>
>
>
> On Aug 22, 2018 10:46:56 AM, Barry Lynn wrote:
>
> Hello Sri:
>
> I would try it this way.
>
> Set *y* to a _FillValue value where it is equal to 0, and then can do the
> divide:
>    y at _FillValue = 1.E36 ; or something like this.
>    print(where(y.ne.0,y, at _FillValue)) ;  I am assuming this works.
> If nothing prints then maybe you have no values.
> In any case, try the next two lines.
>    y = *where*(y.ne.0,y,y at _FillValue)
>
>   yinv = 1. / y
>
> However, just to check, I would
>
>
>
> On Wed, Aug 22, 2018 at 11:39 AM Sri Nandini <snandini at marum.de> wrote:
>
> Hello
>
> how can I remove the zero values to avoid dividing by zero the error I got
> is as the following:
>
>  fatal:divide: Division by 0, Can't continue
>  fatal:Div: operator failed, can't continue
>
> I have tried using   yinv = 1. / where(y.ne.0, y, y at _FillValue) but now
> it gives me all nan values
>
> Heres the bit of my code
>
>    T41    = f->Z3(:,{850},:,:)
>
>    printVarSummary(T41)
>    T41 at _FillValue = -9.96921e+36
>
>    aveX    = dim_avg_n_Wrap(T41,0)
>    printVarSummary(aveX)                      ; (lat,lon)
>    T41 at _FillValue = -9.96921e+36
>
>    aveX = 1. / where(aveX.ne.0, aveX, aveX at _FillValue)
>
> aveX1 and aveX2 below are of same type as aveX.
>    XLAT = conform ( aveX2 , xlat , 0 )
>    printVarSummary(XLAT)
>
>    egr = eady_growth_rate(aveX2, aveX1, aveX, XLAT, 0,  1)
>
> Output
> ===========================
> Variable: egr
> Type: double
> Total Size: 110592 bytes
>             13824 values
> Number of Dimensions: 2
> Dimensions and sizes:   [lat | 96] x [lon | 144]
> Coordinates:
>             lat: [ -90..  90]
>             lon: [   0..357.5]
> Number Of Attributes: 3
>   _FillValue :  -9.969209968386869e+36
>   long_name :   maximum eady growth rate
>   units :
> (0)     maximum eady growth rate : min=nan   max=nan
>
>
> Any advice is much appreciated
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
> --
> Barry H. Lynn, Ph.D
> Senior Associate Scientist, Lecturer,
> The Institute of the Earth Science,
> The Hebrew University of Jerusalem,
> Givat Ram, Jerusalem 91904, Israel
> Tel: 972 547 231 170
> Fax: (972)-25662581
>
> C.E.O, Weather It Is, LTD
> Weather and Climate Focus
> http://weather-it-is.com
> Jerusalem, Israel
> Local: 02 930 9525
> Cell: 054 7 231 170
> Int-IS: x972 2 930 9525
>
>
>
>
> --
> Barry H. Lynn, Ph.D
> Senior Associate Scientist, Lecturer,
> The Institute of the Earth Science,
> The Hebrew University of Jerusalem,
> Givat Ram, Jerusalem 91904, Israel
> Tel: 972 547 231 170
> Fax: (972)-25662581
>
> C.E.O, Weather It Is, LTD
> Weather and Climate Focus
> http://weather-it-is.com
> Jerusalem, Israel
> Local: 02 930 9525
> Cell: 054 7 231 170
> Int-IS: x972 2 930 9525
>
>
>

-- 
Barry H. Lynn, Ph.D
Senior Associate Scientist, Lecturer,
The Institute of the Earth Science,
The Hebrew University of Jerusalem,
Givat Ram, Jerusalem 91904, Israel
Tel: 972 547 231 170
Fax: (972)-25662581

C.E.O, Weather It Is, LTD
Weather and Climate Focus
http://weather-it-is.com
Jerusalem, Israel
Local: 02 930 9525
Cell: 054 7 231 170
Int-IS: x972 2 930 9525
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180822/baca12e5/attachment.html>


More information about the ncl-talk mailing list