Hi;
Thanks immensely Adam, your suggestion solved the problem.
But I still find it hard to pick the 'maps' of the selected cases and put into the new variable created. The code runs, and plot created but I noticed am taking the data at ONLY one time step.
do j = 0,NYEAR-1,1 ;Length of entire series = 112
do i = 0,n_nino3-1,1 ;selected cases, same as length of new data = 21
if(nino3(j).ge.1.)then ;time series index = 112
nino3_cases_maps(i,:,:) = NOAA(j,:,:) ;nino3_cases_maps = 21 X 89 X 180 ;;;;; NOAA = 112 X 89 X 180
end if
end do
end do
printVarSummary(nino3_cases_maps) ;21 X 89 X 180
print(nino3_cases_maps(:,1,20)) ; CONSTANT VALUE INDICATING THAT IT IS PICKED AT ONLY ONE STEP
;*************************************************
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
; ==============================================================
; User defined parameters
; ==============================================================
yrStrt = 1900
yrLast = 2011
NYEAR = (yrLast-yrStrt)+1
print(NYEAR)
season = "DJF" ; choose Jun-Jul-Aug seasonal mean
;=============================================================
; Open the file: Read only the user specified period
; ==============================================================
f = addfile ("/home/nnamchi/work/datasets/sst/sst.mnmean.nc", "r")
TIME = f->time
YYYY = cd_calendar(TIME,-1)/100 ; entire file
iYYYY = ind(YYYY.ge.yrStrt .and. YYYY.le.yrLast)
noaa = short2flt(f->sst(iYYYY,:,:))
printVarSummary(noaa)
delete([/TIME,YYYY,iYYYY/]) ; Release memory
; ==============================================================
; global seasonal mean; de-trend; flip longitudes
; ==============================================================
NOAA = month_to_season (noaa,season)
nyrs = dimsizes(NOAA&time)
printVarSummary(NOAA) ; note the longitude coord
NOAA = dtrend_msg_n(NOAA&time,NOAA,True,False,0) ;de-trend data
NOAA = lonFlip(NOAA)
;===========================================
nino3 = wgt_areaave_Wrap(NOAA(time |:, {lon|-150:-90}, {lat | -5:5}),1.0, 1.0, 0) ;Nino 3 index
nino3 = dim_standardize_Wrap(nino3,0) ; normalize
;=====================================================
n_nino3 = dim_num_n(nino3.ge.1.,0)
print(n_nino3) ; 21 cases shown
nino3_cases = nino3.ge.1.
print(nino3_cases) ;True indicated for the timesteps corresponding to n_nino3
dimZ = dimsizes(NOAA(0,:,:))
nino3_cases_maps = new ((/n_nino3,dimZ(0),dimZ(1)/),float)
printVarSummary(nino3_cases_maps) ;21 X 89 X 180
;====================================================
; Pick NOAA SST map for those cases where nino3 ge. 1.
;=====================================================
do j = 0,NYEAR-1,1 ;Length of entire series = 112
do i = 0,n_nino3-1,1 ;selected cases, same as length of new data = 21
if(nino3(j).ge.1.)then ;time series index = 112
nino3_cases_maps(i,:,:) = NOAA(j,:,:) ;nino3_cases_maps = 21 X 89 X 180 ;;;;; NOAA = 112 X 89 X 180
end if
end do
end do
printVarSummary(nino3_cases_maps)
print(nino3_cases_maps(:,1,20)) ; CONSTANT VALUE INDICATING THAT IT IS PICKED AT ONLY ONE STEP
end
>
> Message: 8
> Date: Thu, 06 Sep 2012 09:40:31 -0600
> From: Adam Phillips <asphilli@ucar.edu>
> Subject: Re: Problems creating new array with calculated
> values
> To: ncl-talk@ucar.edu
> Message-ID: <5048C3EF.5010607@ucar.edu>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Hi Hyacinth,
> Try this:
>
> dimZ = dimsizes(NOAA(0,:,:)
> nino3_cases_maps = new ((/n_nino3,dimZ(0),dimZ(1)/),float)
>
> I think the problem is that in this code:
> nino3_cases_maps = new ((/n_nino3,dimsizes(NOAA(0,:,:))/),float)
>
> NCL sees n_nino3 as a scalar (which is fine), but sees the
> dimsizes(NOAA(0,:,:) as an _array_ or size 2, which is why it is giving
> you this error message:
> fatal:_NclBuildArray: each element of a literal array must have the
> same dimension sizes, at least one item doesn't
>
> If my suggestion does not fix your issue please let ncl-talk know.. Adam
>
> On 09/06/2012 09:19 AM, Hyacinth Nnamchi wrote:
> > Hi Users,
> >
> > I'd like to create an array to hold a new data:
> > nino3_cases_maps = new ((/n_nino3,dimsizes(NOAA(0,:,:))/),float)
> >
> > But I got the following error message:
> >
> > fatal:_NclBuildArray: each element of a literal array must have the
> > same dimension sizes, at least one item doesn't
> > fatal:["Execute.c":7556]:Execute: Error occurred at or near line 50 in
> > file trial_comp_1.ncl
> >
> > Perhaps the problem is that a dimension of the an array (n_nino3) is
> > not known before hand, and ncl is supposed to take it from a preceding
> > calculation. Does anyone know what am doing wrong here?
> >
> > Thanks in advance.
> >
> > Hyacinth
> >
> > Copyright (C) 1995-2012 - All Rights Reserved
> > University Corporation for Atmospheric Research
> > NCAR Command Language Version 6.1.0-beta
> > The use of this software is governed by a License Agreement.
> > See http://www.ncl.ucar.edu/ for more details.
> >
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Fri Sep 7 11:14:00 2012
This archive was generated by hypermail 2.1.8 : Tue Sep 11 2012 - 15:30:42 MDT