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

Sri Nandini snandini at marum.de
Wed Aug 22 05:40:13 MDT 2018




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> > > @_FillValue = 1.E36 ; or something like this.
> > > > > >    print(where(y.ne.0,y,> > > @_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
> 

> 
> 
> 
> > 



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180822/88374f15/attachment.html>


More information about the ncl-talk mailing list