[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