[ncl-talk] Fw:Re: problem with dim_avg_n and userdefined function (numeric and float)
李嘉鹏
lijpbasin at 126.com
Tue Oct 28 04:06:02 MDT 2014
-------- Forwarding messages --------
From: "李嘉鹏" <lijpbasin at 126.com>
Date: 2014-10-28 18:02:35
To: "陶玮" <1201111616 at pku.edu.cn>
Subject: Re:[ncl-talk] problem with dim_avg_n and userdefined function (numeric and float)
Hi, there is a typo in your first script.
Replied under the code quotation.
At 2014-10-28 12:53:25, "陶玮" <1201111616 at pku.edu.cn> wrote:
>Hi, everyone.
>Q1:
>I was using NCL V6.2.0 to extract data from WRF results, however, it seemed that there was a bug in function of dim_avg_n.To simplify matters, I used dummy data, the script is as follows:
>QUESTION 1:-----------------------------------------------------------------
>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
>load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
>
>begin
>
>nyears=5
>ncases=4
>nspec=4
>ntimes_real=680
>nvlevs=2
>
>colspectmp=new((/nyears,ncases,nspec,ntimes_real,100,100/), float)
>colspec=new((/nyears,ncases,nspec,100,100/), float)
>colspectmp=1.
>
>specdntmp=new((/nyears,ncases,nspec,ntimes_real,nvlevs,100,100/), float)
>specdn=new( (/nyears,ncases,nspec,nvlevs,100,100/), float)
>specdntmp=1.
>
>;abnormal !!!! It seemed that no values were passed to colspec !!!!
>colsepc=dim_avg_n((/colspectmp/), 3)
`colsepc` should be `colspec`
>print(avg(colspec))
>
>;normal !!!!
>specdn=dim_avg_n((/specdntmp/), 3)
>print(avg(specdn))
>
>end
>--------------------------------------------------------------------------------------
>
>Q2:What's the difference between numeric and float when using userdefined function. though max((/a,b/)) would do the same thing, I am
>eager to know the answer.
>QUESTION2---------------------------------------------------------------------------------
>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
>load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
>load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
>
>undef( "fmax2v")
>function fmax2v(x:float, y:float)
>begin
> if (x .ge. y) then
> return(x)
> else
> return(y)
> end if
>end
>
>undef( "max2v")
>function max2v(x:numeric, y:numeric)
>begin
> if (x .ge. y) then
> return(x)
> else
> return(y)
> end if
>end
>
>begin
>
>x=3
>
>; normal loops !!!!!
>do ii=1, 2
>do jj=1, 3
> print("ii="+(/ii/)+" jj="+(/jj/))
> print("1: "+(/fmax2v(ii-x,0)/))
> tmp=(/fmax2v(ii-x,0)/)
> print("2: "+ (/tmp/))
>end do
>end do
>
>; abnormal loops !!!!
>do ii=1, 2
>do jj=1, 3
> print("ii="+(/ii/)+" jj="+(/jj/))
> print("1: "+(/max2v(ii-x,0)/))
> tmp=(/max2v(ii-x,0)/)
> print("2: "+ (/tmp/))
>end do
>end do
>
>
>end
>--------------------------------------------------------
>
>With best regards.
>
>
>
>
>
>
>_______________________________________________
>ncl-talk mailing list
>List instructions, subscriber options, unsubscribe:
>http://mailman.ucar.edu/mailman/listinfo/ncl-talk
More information about the ncl-talk
mailing list