Thanks Dave,
But, it still gives same error.
By the way, with ptw =tofloat(pt) on the previos line it gives follwing warning.
warning:Dimension (0) has not been defined
warning:Dimension (1) has not been defined
Jagadish
=====================
Here is the script:
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/csm/contributed.ncl"
begin
;-- INPUT-----------------
;input="noaa.slp.djf.abs.nc"
;neval=10
;type=1 ; 1=correlation matrix , 0=covariance matrix
;output-> loading: out.load.nc
; pc : out.pc.nc
;------------------------
f = addfile (input, "r")
p =f->$var$
; calculate the weights using the square root of the cosine of the latitude and
; also convert degrees to radians
lat=p&lat
wgt = sqrt(cos(lat*0.01745329))
; reorder data so time is fastest varying
pt = p(lat|:,lon|:,time|:) ; (lat,lon,time)
ptw = pt ; create an array with metadata
; weight each point prior to calculation.
; conform is used to make wgt the same size as pt
ptw = pt*conform(pt,wgt,0)
optEOF = True
optEOF@jopt = type ; correlation / covariance matrix
; optEOF@pcrit = 85
eof = eofunc_Wrap(ptw,neval,optEOF)
ts = eofunc_ts(ptw,eof,optEOF)
reof = eofunc_varimax_Wrap(eof, 1)
rts = eofunc_ts(ptw,reof,optEOF)
; output
system("rm out.load.nc")
eof!0="time" ; reformat dimension for grads
eof&time@units=p&time@units
reof!0="time"
reof&time@units=p&time@units
g = addfile("out.load.nc","c")
g->eof=eof
g->reof=reof
pc=new((/1,1,neval,dimsizes(p&time)/),"double",-9999)
pc!0="lat"
pc&lat=0.0
pc&lat@units=p&lat@units
pc&lat@long_name=p&lat@long_name
pc!1="lon"
pc&lon=0.01
pc&lon@units=p&lon@units
pc&lon@long_name=p&lon@long_name
pc!2="lev"
pc&lev=ispan(1,neval,1)
pc&lev@units=""
pc&lev@long_name="pc"
pc!3="time"
pc&time=doubletoint(p&time)
pc&time@units=p&time@units
pc(0,0,:,:)=(/ts/)
rpc=pc
rpc(0,0,:,:)=(/rts/)
pc@long_name="rotate pc"
pc@units=p@units
rpc@long_name="rotate pc"
rpc@units=p@units
system("rm out.pc.nc")
g = addfile("out.pc.nc","c")
g->pc=pc(time|:,lev|:,lat|:,lon|:)
g->rpc=rpc(time|:,lev|:,lat|:,lon|:)
system("cdo -s -r -f nc copy out.pc.nc foo.nc ; mv foo.nc out.pc.nc")
end
>________________________________
> From: Dave Allured <dave.allured@noaa.gov>
>To: jagadish karmacharya <j_karmacharya@yahoo.com>
>Cc: ncl-talk@ucar.edu
>Sent: Tuesday, August 21, 2012 7:39 PM
>Subject: Re: [ncl-talk] Assignment type mismatch
>
>Without seeing more of your script, I think this is what you want:
>
> ptw = pt ; make new array with all metadata
> ptw = pt * conform (pt, tofloat (wgt), 0))
>
>The tofloat function could be inserted in three different places here,
>to get the same effect. There are other ways to do this, but this way
>is cleanest, I think. HTH.
>
>--Dave
>
>On Tue, Aug 21, 2012 at 10:46 AM, jagadish karmacharya
><j_karmacharya@yahoo.com> wrote:
>> Hi,
>>
>> I have received a script to compute eof, which works fine on a demonstation
>> dataset. But when I attemped the same on my datasets it gave following
>> error:
>>
>> fatal:["NclVar.c":1376]:Assignment type mismatch, right hand side can't be
>> coerced to type of left hand side
>> fatal:Execute: Error occurred at or near line 30 in file denosing1.ncl
>>
>> The corresponding line of the script is as follows:
>> ptw = pt*conform(pt,wgt,0)
>>
>> I found, in response to a query, that NCL is a "strongly typed language", it
>> will not allow a float variable
>> on the left hand side to be over written with a variable of type double and
>> suggested solutoin was following:
>> eof_ts = eof_ts/tofloat(sumWgt)
>>
>> When I tried the same for "ptw" on previous line ( i.e replaced ptw = pt
>> with ptw =tofloat(pt) ) the script runs OK but the trouble is axes of the
>> resulting file lacks latitude or longitude information.
>>
>> How can I solve the problem?
>>
>> Thanks in advance.
>>
>> Jagadish
>
>
>
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Tue Aug 21 13:14:35 2012
This archive was generated by hypermail 2.1.8 : Thu Aug 23 2012 - 16:16:15 MDT