[ncl-talk] sub: array (monthly average ) or climatology ....

Alan Brammer abrammer at albany.edu
Thu Nov 5 07:15:12 MST 2015


fatal:Dimension sizes of left hand side and right hand side of assignment do not match
fatal:["Execute.c":8575]:Execute: Error occurred at or near line 51 in file reaadworkcsv.ncl

This usually means you’re trying to set say 15 values to an array that previously only held 10. 
NCL is not flexible with array sizes once they are defined.  
At the bottom of loops either delete() or use the := notation to redefine where needed. 


Check what ever is happening on line 51.  Should the return value always be the same length (through each loop) or do you expect them to vary?
You can redefine the return variable each time easily by using :=  instead of =  
I think the first edit would be
seldata1 := str_match_ic_regex(seldata, strkey)

The print(dimsizes()) suggests you expect the size to vary.   You’ll likely need to do the same thing on the lines that also use seldata1 later in the script. 





> On 4 Nov 2015, at 13:56, Adv <advita6 at gmail.com> wrote:
> 
> Hi,
> 
> Thanks for your reply. Sorry for the misrepresentation. 
> I printed below the error output.  
> While the loop starting for the second time I get this error. I am sure that the representation to calculate average of all the jan months are right.
> 
> I tried to create two domensional array which is commented in the code to write output. But that is not a problem.  
> why particularly error in this specific line for the second time loop is what i don't understand. There is no dimension error for the first time. But for the second one. 
>>  minnesota50.csv <https://drive.google.com/file/d/0B5aDji6ggKPARHlEUW9Ta0tMZG8/view?usp=drive_web>​
> 
> 
> Thank you, 
> 
> fatal:Dimension sizes of left hand side and right hand side of assignment do not match
> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 51 in file reaadworkcsv.ncl
> 
> 
> 
> On Wed, Nov 4, 2015 at 12:30 PM, Alan Brammer <abrammer at albany.edu <mailto:abrammer at albany.edu>> wrote:
> Had this folder open so I’ll give you a quick reply.
> 
> There’s a lot of code here and no explanation of why you need help?
> Although it sometimes resembles it I believe this list isn’t really intended as a place to just quickly outsource your scripting desires.
> 
> What have you tried?
> What specific issue did you run into?
> How is anyone on here supposed to know your data layout?
> Have you looked at the numerous climatology examples and previous ncl-talk questions?
> Where did the answers to the above questions fall short and thus what specifically is the problem?
> 
> Good luck. As always direct replies to the list.  Hopefully a more specific question lends it self to a more specific answer.
> 
> 
> Alan.
> 
> 
> > On 4 Nov 2015, at 13:23, Adv <advita6 at gmail.com <mailto:advita6 at gmail.com>> wrote:
> >
> > Hi NCL user,
> >
> > I would like to write final average corresponding to each station, monthly average of 42 years to a two dimensionl array.
> > Could someone help me to accomplish this?
> >
> > Thank you,
> > Adv
> >
> > begin
> > ;  diri   = "./"
> >   fkey   = "minnesota"
> > strs=asciiread("minnesota50.csv" , -1, "string")
> > n1=(/"197301","197401","197501","197601","197701","197801"             \
> > ,"197901","198001","198101","198201","198301","198401"                \
> > ,"198501","198601","198701","198801","198901","199001"               \
> > ,"199101","199201","199301","199401","199501","199601"                \
> > ,"199701","199801","199901","200001","200101","200201","200301"       \
> > ,"200401","200501","200601","200701","200801","200901"                \
> > ,"201001","201101","201201","201301","201401"/)
> > print(n1)
> > ns1 = dimsizes(n1)
> > print(ns1)
> > do j =0, dimsizes(n1)-1
> >
> > ;  yyyymm = 197301
> >   yyyymm = n1(j)
> >   fldstr = "PRCP"                                         ; case sensitive
> >   con    = 1.00
> > print(yyyymm)
> > ;return
> > ;***********************************************
> > ; match all data lines with specified YYYYYY
> > ;***********************************************
> >
> > ;  seldata = str_match_ic_regex(strs, tostring(yyyymm))    ; 6.3.0
> >   seldata = str_match_ic_regex(strs, tostring(yyyymm))    ; 6.3.0
> > ;  print(seldata)
> >   print("=====")
> > n=(/"THIEF","PARK"/)
> > print(n)
> > ns = dimsizes(n)
> > print(ns)
> > tim = new((/ns1,ns/),"float")
> > printVarSummary(tim)
> > ;tavg = new((/ns1,ns/),"float")
> > tavg = new(ns,float)
> > print(tavg)
> > do i =0, dimsizes(n)-1
> > strkey = n(i)
> > print(strkey)
> > ;strkey= "THIEF"
> > ;print(strkey)
> > ;return
> > ; find all lines (rows) which contain the key string
> >
> >   seldata1 = str_match_ic_regex(seldata, strkey)     ; 6.3.0  onward
> > print(seldata1)
> > print(dimsizes(seldata1))
> > ;***********************************************
> > ; write selected data to ascii file
> > ;***********************************************
> >  seldir  = "./"
> >   selfil  = fkey+"."+yyyymm+".csv"
> >   system("/bin/rm -f "+seldir+selfil)
> >   asciiwrite(seldir+selfil, seldata1)   ; all data for selected yyyymm
> > ;***********************************************
> > ; Which field matches
> > ;***********************************************
> > FIELDS = (/"STATION","STATION_NAME","ELEVATION","LATITUDE","LONGITUDE"    \
> >           ,"DATE","MDPR","MDSF","DAPR","DASF","PRCP","SNWD","SNOW"        \
> >           ,"TMAX","TMIN","TOBS"                                           /)
> >
> >
> >   nfield = ind(FIELDS.eq.fldstr) + 1      ; field to be extracted
> >   print("fldstr="+fldstr+" corresponds to field number "+nfield)
> >   print("=====")
> > ;***********************************************
> > ; extract the values
> > ;***********************************************
> >
> >   sdat   = str_get_field(seldata1 , 2, ",")
> > ;*********Monthly average********************************
> >  data   = tofloat( str_get_field(seldata1 , nfield, ",") )*con
> >   data at _FillValue = -9999*con
> >   print(sdat+" : "+data)
> >   print("=====")
> > ;print(data)
> > ;return
> > tavg(i)=avg(data)
> > end do
> > print(tavg)
> > ;tim(j,i)=tavg
> > end do
> >
> >
> >
> > _______________________________________________
> > 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 <http://mailman.ucar.edu/mailman/listinfo/ncl-talk>
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20151105/baeb195a/attachment-0001.html 


More information about the ncl-talk mailing list