[ncl-talk] Help

Dennis Shea shea at ucar.edu
Sat Mar 23 11:51:22 MDT 2019


[1]
The MJO_Clivar diagnostics specify that anomalies be used. Certainly, you
can input the full wind fields because the underlying code has no way of
detecting if the input are as expected (anomalies). I am not sure hoe the
output would be interpreted.

[2]
I *speculate* ithe olr on the file are type 'short'

x       = f->olr_anom              ;  f->olr_anom(:,:,:)
*printVarSummary(*x)             ; what type are olr?

If they are type short, then use NCL's *short2flt*
<http://www.ncl.ucar.edu/Document/Functions/Contributed/short2flt.shtml>

x      = short2flt(x)

On Fri, Mar 22, 2019 at 7:58 PM nelson mateus <nelsonbuchinho1992 at gmail.com>
wrote:

>
> Hello .
>
> I'm trying to use the mjo_clivar 16 script, and I'm trying to run the wind
> fields "without being anomaly", and it's giving me the following error:
>
>
> fatal:["NclVar.c":1390]:Assignment type mismatch, right hand side can't be
> coerced to type of left hand side
> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 80 in
> file mjoc_anom.ncl
>
>
>
> can anybody help me ?
> ##########################SCRIPT ########################
>
> ;***********************************************************
> ; Generate life cycle composites based upon daily phase space
> ; If the MJO_INDEX is < 1.0 it is not included
> ;***********************************************************
> load "/usr/local/ncarg/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "/usr/local/ncarg/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> load "/usr/local/ncarg/lib/ncarg/nclscripts/csm/contributed.ncl"
> load "/usr/local/ncarg/lib/ncarg/nclscripts/csm/diagnostics_cam.ncl"
> begin
>    latS    = -60
>    latN    =  20
>
>
>    lonE    = 0
>    lonW    = 270
>
>
>    ymdStrt = 19800101                         ; começo yyyymmdd
>    ymdLast = 19800102                         ; término
>
>    yrStrt  = ymdStrt/10000
>    yrLast  = ymdLast/10000
>
>    pltSubTitle = "Anomalia: OLR, U850, V850x "
>
>    pltDir  = "./"                             ; plot directory
>    pltType = "pdf"
>    pltName = "mjoclivar200uv"                      ; yrStrt+"_"+yrLast
>
>    diri    = "./"       ; input directory
>
>  filo    = "olr.anomalia.1979-2017.nc"
>  filu    = "uwnd1979_2017.nc"
>  filv    = "vwnd1979_2017.nc"
>
> ;************************************************
> ; create BandPass Filter
> ;************************************************
>   ihp      = 2                             ; bpf=>band pass filter
>   nWgt     = 201
>   sigma    = 1.0                           ; Lanczos sigma
>   fca      = 1./100.
>   fcb      = 1./20.
>   wgt      = filwgts_lanczos (nWgt, ihp, fca, fcb, sigma )
>
> ;***********************************************************
> ; Find the indicies (subscripts) corresponding to the start/end times
> ;      on the source data files.
> ;***********************************************************
>
>    f       = addfile (diri+filu , "r")
>    TIME    = f->time                          ; days since ...
>    YMD     = cd_calendar(TIME, -2)            ; entire (time,6)
>
>    iStrt   = ind(YMD.eq.ymdStrt)              ; index start
>    iLast   = ind(YMD.eq.ymdLast)              ; index last
>    delete(TIME)
>    delete(YMD )
>
>     time    = f->time            ; days since ...
>     u       = f->uwnd(:,0,:,:)
> ;delete(u)
> ;***********************************************************
> ; Read anomalies frpm other fields
> ;***********************************************************
>       f       = addfile (diri+filv , "r")
>     v       = f->vwnd(:,0,:,:)
> ;delete(v)
>
>    f       = addfile (diri+filo , "r")
>    x       = f->olr_anom(:,:,:)
>
>    dimx    = dimsizes( x )
>    ntim    = dimx(0)
>    nlat    = dimx(1)
>    mlon    = dimx(2)
> ;************************************************
> ; Apply the band pass filter to the original anomalies
> ;************************************************
>
>   x   = wgt_runave_n (x, wgt, 0, 0)      ; better
>   ;u   = wgt_runave_n (u, wgt, 0, 0)
>   ;v   = wgt_runave_n (v, wgt,0, 0)
>
> ;***********************************************************
> ; Open PC components file created in 'mjo_14.ncl'
> ;***********************************************************
>   diri    = "./"       ; input directory
>   fMJO    = "MJO_PC_INDEX.nc"                ; created in mjo_14.ncl
>   f       = addfile (diri+fMJO, "r")
>
> ;***********************************************************
> ; Find the indices corresponding to the start/end times
> ;      on the MJO_PC_INDEX.nc file
> ;***********************************************************
>   TIME    = f->time                          ; days since ...
>   YMD     = cd_calendar(TIME, -2)            ; entire (time,6)
>
>   iStrt   = ind(YMD.eq.ymdStrt)              ; index start
>   iLast   = ind(YMD.eq.ymdLast)              ; index last
>   delete(TIME)
>   delete(YMD )
>
> ;***********************************************************
> ; Read the data for the desired period
> ;***********************************************************
>   pc1     = f->PC1
>   pc2     = f->PC2
>   mjo_indx= f->MJO_INDEX
>
>   time    = f->time
>   ymdhms  = cd_calendar(time, 0)
>
>   imon    = floattoint( ymdhms(:,1) )   ; convenience
>   iday    = floattoint( ymdhms(:,2) )   ; subscripts must be integer
> ;***********************************************************
> ; Place each array into an appropriate array
> ;;***********************************************************
>   ;phase       = (/ 202.5, 247.5, 292.5, 337.5 \   ; phi: Matt Wheeler's
> f77 code
>   ;               ,  22.5,  67.5, 112.5, 157.5 /)
>
>
>  phase       =(/ 112.5, 67.5,22.5 \
>                , 337.5, 292.5, 247.5, 202.5, 157.5  /)
>   nPhase      = dimsizes(phase)
>   phaBnd      = 180.0/nPhase
>   angBnd      = new( (/2,nPhase/), "float")
>   angBnd(0,:) = phase-phaBnd
>   angBnd(1,:) = phase+phaBnd
>  ;print("phase: "+phase+"   angBnd: "+angBnd(0,:)+" - "+angBnd(1,:))
>
>   r2d         = 180./(4.*atan(1.0))
>   ang         = atan2(pc2,pc1)*r2d     ; phase space
>   nn          = ind(ang.lt.0)
>   ang(nn)     = ang(nn) + 360          ; make 0 to 360
>   print(ang)
>
>   nDays       = new (nPhase, "integer")
>   pLabel      = "P"+ispan(1,nPhase,1)+": "
>
> ;------------------------------------------------------------
> ; PLOTS
> ;------------------------------------------------------------
>   pltPath = pltDir+pltName
>
>   wks  = gsn_open_wks(pltType,pltPath)
>   gsn_define_colormap(wks,"ViBlGrWhYeOrRe")
>   plot = new(nPhase,graphic)              ; create graphic array
>
>   res                      = True
>   res at gsnDraw              = False        ; don't draw yet
>   res at gsnFrame             = False        ; don't advance frame yet
>   res at gsnSpreadColors      = True         ; spread out color table
>
>   res at mpFillOn             = False        ; turn off map fill
>   res at mpMinLatF            = latS         ; zoom in on map
>   res at mpMaxLatF            = latN
>   res at mpCenterLonF         = 220.
>   res at cnFillOn             = True         ; turn on color fill
>   res at cnLinesOn            = False        ; True is default
>   res at cnLineLabelsOn       = False        ; True is default
>   res at lbLabelBarOn         = False        ; turn off individual lb's
>   res at gsnScalarContour     = True         ; contour 3rd array
>   res at gsnMajorLatSpacing   = 15
>   res at gsnMajorLonSpacing   = 60
>   res at tmXBLabelFontHeightF = 0.01
>   res at tmYLLabelFontHeightF = 0.01
>
>                                           ; common contours
>  ;mnmxint = nice_mnmxintvl( min(x) , max(x), 16, False)
>   res at cnLevelSelectionMode = "ManualLevels"
>   res at cnMinLevelValF       =  -20         ; -100; mnmxint(0)
>   res at cnMaxLevelValF       =   20         ;   80; mnmxint(1)
>   res at cnLevelSpacingF      =    5         ;   20; mnmxint(2)
> ;print(res)
>
>   res at vcMinDistanceF            = 0.01 ;0.01           ; thin the vector
> density
>   res at vcRefMagnitudeF           = 3 ;1.0            ; define vector ref
> mag,aqui era 2
>   res at vcRefLengthF              = 0.025 ;0.025           ; define length
> of vec ref
>   res at vcRefAnnoOrthogonalPosF   = -1.0            ; move ref vector
>   res at vcRefAnnoArrowLineColor   = "black"         ; change ref vector
> color
>   res at vcRefAnnoArrowUseVecColor = False           ; don't use vec color
> for ref
>
>                                           ; panel plot only resources
>   resP                     = True         ; modify the panel plot
>   resP at gsnMaximize         = True         ; large format
>   resP at gsnPanelLabelBar    = True         ; add common colorbar
>   resP at lbLabelAutoStride   = True         ; auto stride on labels
>   resP at lbLabelFontHeightF  = 0.01
>   resP at gsnPanelBottom      = 0.05         ; add some space at bottom
>   resP at pmLabelBarWidthF    = 0.47          ; label bar width
>   resP at pmLabelBarHeightF   = 0.05
>   resP at gsnPanelFigureStringsFontHeightF = 0.0125  ; bit larger than
> default
>  ;resP at pmLabelBarOrthogonalPosF = 0.015   ; move labelbar up a bit
>
>   txres                  = True
>   txres at txFontHeightF    = 0.01
>   txid = gsn_create_text(wks, pltSubTitle, txres)
>
>   amres                  = True
>  ;amres at amParallelPosF   =  0.575
>   amres at amOrthogonalPosF =  0.75
>   amres at amJust           = "CenterCenter"
>  ;amres at amResizeNotify   = True
>
> ;*******************************************
> ; Loop over each phase
> ;*******************************************
>
>  res at gsnLeftString   = ""
>  res at gsnRightString  = ""
>  do nSeason=1,2
>     if (nSeason.eq.1) then
>         resP at txString  = yrStrt+"-"+yrLast+": Maio a Outubro"
>     else
>         resP at txString  = yrStrt+"-"+yrLast+": Novembro a Abril"
>     end if
>   do n=0,nPhase-1
>
>      ; All times where the following criteria are met
>      if (nSeason.eq.1) then
>
>              nt = ind(mjo_indx.gt.2.5   .and.                     \
>          ;nt = ind((mjo_indx.gt.1.0 .and.  mjo_indx.lt. 2.5)  .and.     \
>                  (imon.ge.5          .and. imon.le.10).and.    \
>                   ang.ge.angBnd(0,n) .and. ang.lt.angBnd(1,n))
>      else
>          nt = ind(mjo_indx.gt.2.5    .and.                     \
>           ;nt = ind((mjo_indx.gt.1.0 .and.  mjo_indx.lt. 2.5)  .and.     \
>                  (imon.ge.12         .or.  imon.le. 2).and.    \
>                   ang.ge.angBnd(0,n) .and. ang.lt.angBnd(1,n))
>      end if
>      if (.not.all(ismissing(nt))) then
>        ;;xAvg = dim_avg_Wrap( x(lat|:,lon|:,time|nt) )  ; original
>        ;;uAvg = dim_avg_Wrap( u(lat|:,lon|:,time|nt) )
>        ;;vAvg = dim_avg_Wrap( v(lat|:,lon|:,time|nt) )
>
>          xAvg = dim_avg_n_Wrap( x(nt,:,:), 0)           ; better
>          ;uAvg = dim_avg_n_Wrap( u(nt,:,:), 0)
>          ;vAvg = dim_avg_n_Wrap( v(nt,:,:), 0)
>
>          nDays(n) = dimsizes(nt)
>
>          res at tmXBLabelsOn         = False    ; do not draw lon labels
>          res at tmXBOn               = False    ;             lon tickmarks
>          if (n.eq.(nPhase-1)) then           ;
>              res at tmXBLabelsOn     = True     ; draw lon labels
>              res at tmXBOn           = True     ;          tickmarks
>          end if
>
>          plot(n) = gsn_csm_vector_scalar_map_ce(wks,uAvg,vAvg,xAvg,res)
>         ;plot = gsn_csm_contour_map_ce(wks,uAvg,vAvg,xAvg,res)
>
>      end if
>      delete(nt)                  ; will change next iteration
>   end do
>
> ;;ann3  = gsn_add_annotation(plot(0), txid, amres)
>   resP at gsnPanelFigureStrings= pLabel+nDays
>   gsn_panel(wks,plot,(/nPhase,1/),resP)     ; now draw as one plot
>  end do
>
> ;system("gv "+pltPath+"."+pltType)
> end
>
>
> can anybody help me ?
> --
> Nelson Pedro António  Mateus
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190323/4ab8d71f/attachment.html>


More information about the ncl-talk mailing list