[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