[ncl-talk] How to get the result for each grid?

Karin Meier-Fleischer meier-fleischer at dkrz.de
Tue Sep 10 02:04:15 MDT 2019


Hi Atul,

you have to prevent division by zero.

B = B2-B1
B = where(B .ne. 0, B, B at _FillValue)
chpOnset = ((A2-A1)/B)
print(chpOnset

-Karin

Am 10.09.19 um 09:31 schrieb Rashed Mahmood via ncl-talk:
> The message is clear. You would need to decide what should happen if 
> any point of your dividing array has 0 value...
>
> I would suggest that you make the dividing arrays separately and use 
> "where" function to handle grid points with 0 values. Please read 
> documentation for "where" function:
> https://www.ncl.ucar.edu/Document/Functions/Built-in/where.shtmlhttps://www.ncl.ucar.edu/Document/Functions/Built-in/where.shtml
>
>
> On Tue, Sep 10, 2019 at 8:02 AM Atul Saini <atulsainimail at gmail.com 
> <mailto:atulsainimail at gmail.com>> wrote:
>
>     Yes, you are right there was some issues with the data file now
>     it's working fine. But after executing the users function it's
>     giving the message having issue you in dividing by zero.
>     The code is as follows-
>     *
>     While running the following code-*
>     *
>     *a=addfile("Data_File.nc","r")
>     x=a->tym(0:4,:,:)
>     X=sqrt(x)
>     y=a->rf(0:4,:,:)
>     Y=sqrt(y)
>     v=a->tym(5:9,:,:)
>     V=sqrt(v)
>     w=a->rf(5:9,:,:)
>     W=sqrt(w)
>     A1=((dim_sum_n(y,0))*(dim_sum_n(X,0)))-(dim_sum_n(x,0))*(dim_sum_n(x*y,0))/(100*(dim_sum_n(X,0))-(sqrt(dim_sum_n(x,0))))
>
>     A2=((dim_sum_n(w,0))*(dim_sum_n(V,0)))-(dim_sum_n(v,0))*(dim_sum_n(v*w,0))/(100*(dim_sum_n(V,0))-(sqrt(dim_sum_n(v,0))))
>
>     B1=
>     (100*(dim_sum_n(x*y,0)))-(dim_sum_n(y,0))/(100*(dim_sum_n(X,0))-(sqrt(dim_sum_n(x,0))))
>
>     B2=
>     (100*(dim_sum_n(v*w,0)))-(dim_sum_n(w,0))/(100*(dim_sum_n(V,0))-(sqrt(dim_sum_n(v,0))))
>
>     chpOnset = ((A1-A2)/(B2-B1))
>     print(chpOnset)
>
>     *I am receiving the following error-*
>     fatal:divide: Division by 0, Can't continue
>     fatal:Div: operator failed, can't continue
>
>     On Mon, Sep 9, 2019, 17:04 Atul Saini <atulsainimail at gmail.com
>     <mailto:atulsainimail at gmail.com>> wrote:
>
>         Ok, I will check and let you know.
>
>
>         On Mon, Sep 9, 2019, 17:04 Rashed Mahmood
>         <rashidcomsis at gmail.com <mailto:rashidcomsis at gmail.com>> wrote:
>
>
>             Are you sure about the data file? Why got no values for x
>             min and max? Also why was the min and max same value for
>             X, 5050?
>
>             There is no problem with function, I am sure. It's the
>             data file that need to be checked thoroughly? If you
>             cannot find issue with the file you would need provide the
>             data file to the list.
>
>
>
>
>             On Mon, Sep 9, 2019 at 1:26 PM Atul Saini
>             <atulsainimail at gmail.com <mailto:atulsainimail at gmail.com>>
>             wrote:
>
>                 I got the following answer-
>
>                 *ncl 6> printVarSummary(x)
>                 Variable: x
>                 Type: float
>                 Total Size: 6966000 bytes
>                             1741500 values
>                 Number of Dimensions: 3
>                 Dimensions and sizes: [time | 100] x [lat | 129] x
>                 [lon | 135]
>                 Coordinates:
>                             time: [   1.. 100]
>                             lat: [6.5..38.5]
>                             lon: [66.5..100]
>                 Number Of Attributes: 3
>                   long_name : GRIDDED RAINFALL
>                   _FillValue : -999
>                   missing_value : -999
>                 ncl 7> printVarSummary(X)
>
>                 Variable: X
>                 Type: float
>                 Total Size: 69660 bytes
>                             17415 values
>                 Number of Dimensions: 2
>                 Dimensions and sizes: [129] x [135]
>                 Coordinates:
>                 Number Of Attributes: 1
>                   _FillValue : -999
>                 ncl 8>
>                 ncl 9> print(x at _FillValue)
>                 (0) -999
>                 ncl 10> print(X at _FillValue)
>                 (0) -999*
>                 Regards,
>
>
>
>
>
>                 On Mon, Sep 9, 2019 at 4:46 PM Rashed Mahmood
>                 <rashidcomsis at gmail.com
>                 <mailto:rashidcomsis at gmail.com>> wrote:
>
>                     Why there are no values for min and max of x variable?
>                     I suspect that there is something wrong with your
>                     data file, however, you should do some more
>                     checking... e.g.
>
>                     printVarSummary(x)
>                     printVarSummary(X)
>
>                     print(x at _FillValue)
>                     print(X at _FillValue)
>
>
>
>
>                     On Mon, Sep 9, 2019 at 1:11 PM Atul Saini
>                     <atulsainimail at gmail.com
>                     <mailto:atulsainimail at gmail.com>> wrote:
>
>                         Rashed sir,
>                                           It gives the following answer-
>
>                         *ncl 4> printMinMax(x,True)
>                         (0)
>                         (0) GRIDDED RAINFALL
>                         ncl 5> printMinMax(X,True)
>                         (0)
>                         (0) min=5050   max=5050*
>
>                         Regards,
>
>
>
>
>
>                         On Mon, Sep 9, 2019 at 4:38 PM Rashed Mahmood
>                         <rashidcomsis at gmail.com
>                         <mailto:rashidcomsis at gmail.com>> wrote:
>
>                             I do not see any problem with the lines
>                             you just posted.
>                             Can you add following in the above code
>                             you wrote and let me know:
>
>                             printMinMax(x,True)
>                             printMinMax(X,True)
>
>
>                             On Mon, Sep 9, 2019 at 12:18 PM Atul Saini
>                             <atulsainimail at gmail.com
>                             <mailto:atulsainimail at gmail.com>> wrote:
>
>                                 Hello Rashed Sir,
>                                 I used dim_sum_n but it could not
>                                 yield the required result at each grid
>                                 point. I want to get the sum of the
>                                 variable through time for all the grid
>                                 points and therefore I used -
>
>                                 *a=addfile("RFIM_1901_1902_days_rf_tym.nc","r")
>                                 x=a->tym(0:99,:,:)
>                                 X=dim_sum_n(x,0)*
>                                 *print(X)*
>                                 *
>                                 *
>                                 Printing X doesn't provide the correct
>                                 result. Please guide. Your reply is
>                                 highly appreciated.
>                                 *
>                                 *
>
>
>                                 Regards,
>
>
>
>
>
>                                 On Mon, Sep 9, 2019 at 2:58 PM Rashed
>                                 Mahmood <rashidcomsis at gmail.com
>                                 <mailto:rashidcomsis at gmail.com>> wrote:
>
>                                     I think you want to use
>                                     dim_sum_n_wrap() or dim_sum_n()
>                                     functions instead of using "sum".
>                                     "sum" would result in total of
>                                     everything for a variable. See the
>                                     docs at the following link:
>
>                                     https://www.ncl.ucar.edu/Document/Functions/Built-in/dim_sum_n.shtml
>
>
>                                     On Mon, Sep 9, 2019 at 8:55 AM
>                                     Atul Saini via ncl-talk
>                                     <ncl-talk at ucar.edu
>                                     <mailto:ncl-talk at ucar.edu>> wrote:
>
>                                         Hi NCL Talk,
>                                         I am trying to calculate the
>                                         value for each grid using the
>                                         function as explained in the
>                                         script, but at the end the
>                                         result is one value only. I
>                                         want the value at each grid
>                                         point.**
>                                         *Script is as follows and
>                                         datafile is attached herewith.*
>                                         ;begin
>                                         a=addfile("Data_File.nc","r")
>                                         x=a->tym(0:4,:,:)
>                                         y=a->rf(0:4,:,:)
>                                         v=a->tym(5:9,:,:)
>                                         w=a->rf(5:9,:,:)
>                                         A1=
>                                         ((sum(y))*(sum(sqrt(x)))-(sum(x))*(sum(x*y)))/(5*(sum(sqrt(x)))-(sqrt(sum(x))))
>                                         B1=
>                                         (5*(sum(x*y))-(sum(x)*sum(y))/(5*(sum(sqrt(x)))-(sqrt(sum(x)))))
>                                         A2=
>                                         ((sum(w))*(sum(sqrt(v)))-(sum(v))*(sum(v*w)))/(5*(sum(sqrt(v)))-(sqrt(sum(v))))
>                                         B2=
>                                         (5*(sum(v*w))-(sum(v)*sum(w))/(5*(sum(sqrt(v)))-(sqrt(sum(v)))))
>                                         chpOnset = ((A1-A2)/(B2-B1))
>                                         print(chpOnset)
>                                         *Please, help me to find out
>                                         the mistake I am making. Your
>                                         reply is very important to me.
>                                         Thanks in advance.*
>                                         Regards,
>
>
>
>                                         _______________________________________________
>                                         ncl-talk mailing list
>                                         ncl-talk at ucar.edu
>                                         <mailto:ncl-talk at ucar.edu>
>                                         List instructions, subscriber
>                                         options, unsubscribe:
>                                         http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk

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


More information about the ncl-talk mailing list