[ncl-talk] month_to_season

Dennis Shea shea at ucar.edu
Mon May 30 07:14:10 MDT 2022


As I noted in my 1st response, "there may be errors" because I did it very
quickly.

Still, something is unusual. I didn't have your data file(s). try the
following


*month_to_season *
<https://www.ncl.ucar.edu/Document/Functions/Contributed/month_to_season.shtml>computes
the seasonal mean for *each year*.
This is *not* a climatological seasonal mean.
**********************************************************************************
begin

; read model data

  spec_units = ("ppb")
  factor = (/1.e+09/)
  wkdir  = "/glade/scratch/najiby/"
  diri   = "/glade/scratch/najiby/"
  fili   = systemfunc("ls "+diri+"f.e20.FSCD_FullEmissNig.cam.h0.2013*.nc")
  print(fili)
  print("==========================================")

  minLat   = -35
  maxLat   =  35
  minLon   = -30
  maxLon   =  60

  f = addfiles(fili, "r")
  o3x_surf = f[:]->O3(:,55,:,:)          ; input only surface
  o3x_surf = o3x_surf*1.e+09        ; units change
;;o3x_surf at units = "..."
  printVarSummary(o3x_surf)         ; (time,lat,lon)   ; lon: 0->360
  print("==========================================")

; reorder longitudes
  o3x_surf := *lonFlip*(o3x_surf)
  print("++++++++++++++++++++++++++++++++++++++++++")
  print("    AFTER LONGITUDE REORDER               ")
  print("++++++++++++++++++++++++++++++++++++++++++")
  printVarSummary(o3x_surf)         ; (time,lat,lon)   ; lon: -180->180

  date = f[:]->date
  print("==========================================")
;;printVarSummary(date)
  print(date)                       ; (time)

 print("==========================================")

  nyear = dimsizes(date)/12         ; number of years
  print("nyear="+nyear)
  print("==========================================")

;-------------------------------------------------------
; season average for ** EACH YEAR **    This is NOT a climatological average
  xSea = month_to_seasonN(o3x_surf,(/"DJF","MAM","JJA","SON"/))
  printVarSummary(xSea)     ; (4,nyr,lat,lon)
                            ; DJF -> (0,nyear,lat,lon)   for EACH year
[time-> nyr]
                            ; MAM -> (1,nyear,lat,lon)   for EACH year
                            ; JJA -> (2,nyear,lat,lon)   for EACH year
                            ; SON -> (3,neayr,lat,lon)   for EACH year



On Sun, May 29, 2022 at 12:51 PM Najib Yusuf <najibgal at yahoo.com> wrote:

> Dear Dennis,
>
> Thank you. I did as you said and I know have (time,lat,lon) atributes and
> xSea_surf  [season | 4] x (time | 1] x [lat | 192] x [lon | 288), the
> subscripting is a bit confusing. However, I used these to plot:
>
>    res at gsnLeftString = "DJF_dry cold"
>   plot1 = gsn_csm_contour_map_ce(wks,xSea_surf(0,{-35:35},{-30:60}),res)
>
>    res at gsnLeftString = "MAM_dry warm"
>   plot2 = gsn_csm_contour_map_ce(wks,xSea_surf2(1,:,:),res)
>
> but got error of subscripting then I tried this to have 4 subscripts
> (seas,time,lat,lon) I still got error
>
>    res at gsnLeftString = "DJF_dry cold"
>   plot1 = gsn_csm_contour_map_ce(wks,xSea_surf(0,:,{-35:35},{-30:60}),res)
>
>    res at gsnLeftString = "MAM_dry warm"
>   plot2 = gsn_csm_contour_map_ce(wks,xSea_surf2(1,1,:,:),res)
>
> Variable: xSea_surf
> Type: float
> Total Size: 884736 bytes
>             221184 values
> Number of Dimensions: 4
> Dimensions and sizes:   [season | 4] x [time | 1] x [lat | 192] x [lon |
> 288]
> Coordinates:
>             season: [DJF..SON]
>             time: [2953..2953]
>             lat: [ -90..  90]
>             lon: [-180..178.75]
> Number Of Attributes: 7
>   lonFlip :     longitude coordinate variable has been reordered via
> lonFlip
>   mdims :       1
>   units :       mol/mol
>   long_name :   Seasonal Means: O3 concentration
>   cell_methods :        time: mean
>   lev : 992.5000106104562
>   _FillValue :  9.96921e+36
> fatal:Number of subscripts do not match number of dimensions of
> variable,(3) Subscripts used, (4) Subscripts expected
> fatal:["Execute.c":8637]:Execute: Error occurred at or near line 143 in
> file month_to_seasO3.ncl
>
> Kindly, help me out.
>
> Thank you so much.
>
> *------------------------------------*
>
> *Najib Yusuf Galadanci Ph.D.*
>
> *Assistant Director (R & D)*
>
> *Lower Atmospheric Dynamics(Aerosol radiative forcing, air quality
> observations and modeling)Centre for Atmospheric ResearchNational Space
> Research and Development Agency. Kogi StateUniversity Campus, Anyigba. Kogi
> State. Nigeria+234 80 3871 4158------------------------------------Know
> that Victory comes with Patience, Relief with Affliction, and Ease with
> Hardship.Prophet Muhammad Rasulullah *
>
>
>
> On Friday, May 27, 2022, 01:46:31 PM GMT+1, Dennis Shea <shea at ucar.edu>
> wrote:
>
>
> [2]
>   o3x_surf = o3x(0,55,:,:)
>   printVarSummary(o3x_surf)   ; TWO dimension (lat,lon);  NO 'time'
> dimension
>
>   I think you want
>      o3x_surf = o3x(*:,*55,:,:) ; (time,lat,lon)
> ----------------
>
> You have
> Variable: o3x_surf
> Number of Dimensions: 2
> Dimensions and sizes:   [lat | 192] x [lon | 288]    <=== NO TIME DIMENSION
>
> You must do as I suggested:
>
> o3x_surf = o3x(:,55,:,:)               ; (time,lat,lon)
> printVarSummary(o3x_surf)
>
> You must have a time dimension
>
> On Fri, May 27, 2022 at 7:03 AM Najib Yusuf <najibgal at yahoo.com> wrote:
>
> Dear Dennis,
>
> I have done as you advise, 1 to 5 all work out, thank you, but I had to do
> this first:
>
> o3x_surf_flip := lonFlip(o3x_surf)
>  printVarSummary(o3x_surf_flip)    ,,,,,,,and it works, prior to the
> seasons average  but the xSea_surf (below)
>
>   xSea_surf = month_to_seasonN(o3x_surf_flip,(/"DJF","MAM","JJA","SON"/))
>    printVarSummary(xSea_surf)
>
> is giving this error:
>
> (0)     contributed: month_to_seasonN: rank=2
> (0)     ----- rank currently not handled -----
> (0)     contributed: month_to_season12: rank=2
> (0)     ----- rank currently not handled -----
> fatal:Illegal right-hand side type for assignment
>
> I haven't seen this rank error before. Please help out.
>
> Thank you
>
>
>
>
>
> Summary of variables
> Variable: o3x
> Type: float
> Total Size: 148635648 bytes
>             37158912 values
> Number of Dimensions: 4
> Dimensions and sizes:   [time | 12] x [lev | 56] x [lat | 192] x [lon |
> 288]
> Coordinates:
>             time: [2953..3287]
>             lev: [1.867879997007549..992.5000106104562]
>             lat: [ -90..  90]
>             lon: [   0..358.75]
> Number Of Attributes: 4
>   mdims :       1
>   units :       mol/mol
>   long_name :   O3 concentration
>   cell_methods :        time: mean
>
> Variable: o3x_surf
> Type: float
> Total Size: 221184 bytes
>             55296 values
> Number of Dimensions: 2
> Dimensions and sizes:   [lat | 192] x [lon | 288]
> Coordinates:
>             lat: [ -90..  90]
>             lon: [   0..358.75]
> Number Of Attributes: 6
>   lev : 992.5000106104562
>   time :        2953
>   cell_methods :        time: mean
>   long_name :   O3 concentration
>   units :       mol/mol
>   mdims :       1
> (0)     O3 concentration (mol/mol) : min=3.61245   max=77.7517
>
> Variable: o3x_surf_flip
> Type: float
> Total Size: 221184 bytes
>             55296 values
> Number of Dimensions: 2
> Dimensions and sizes:   [lat | 192] x [lon | 288]
> Coordinates:
>             lat: [ -90..  90]
>             lon: [-180..178.75]
> Number Of Attributes: 7
>   lev : 992.5000106104562
>   time :        2953
>   cell_methods :        time: mean
>   long_name :   O3 concentration
>   units :       mol/mol
>   mdims :       1
>   lonFlip :     longitude coordinate variable has been reordered via
> lonFlip
>
> Variable: xMon
> Type: integer
> Total Size: 48 bytes
>             12 values
> Number of Dimensions: 1
> Dimensions and sizes:   [time | 12]
> Coordinates:
>             time: [2953..3287]
> Number Of Attributes: 1
>   long_name :   current date (YYYYMMDD)
>
>
> Variable: xMon
> Type: integer
> Total Size: 48 bytes
>             12 values
> Number of Dimensions: 1
> Dimensions and sizes:   [time | 12]
> Coordinates:
>             time: [2953..3287]
> Number Of Attributes: 1
>   long_name :   current date (YYYYMMDD)
> (0)     20130201
> (1)     20130301
> (2)     20130401
> (3)     20130501
> (4)     20130601
> (5)     20130701
> (6)     20130801
> (7)     20130901
> (8)     20131001
> (9)     20131101
> (10)    20131201
> (11)    20140101
> (0)     contributed: month_to_seasonN: rank=2
> (0)     ----- rank currently not handled -----
> (0)     contributed: month_to_season12: rank=2
> (0)     ----- rank currently not handled -----
> fatal:Illegal right-hand side type for assignment
> fatal:["Execute.c":8637]:Execute: Error occurred at or near line 8300 in
> file $NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl
>
> fatal:["Execute.c":8637]:Execute: Error occurred at or near line 55 in
> file month_to_seasO3.ncl
>
>
> *------------------------------------*
>
> *Najib Yusuf Galadanci Ph.D.*
>
> *Assistant Director (R & D)*
>
> Lower Atmospheric Dynamics
>
> (Aerosol radiative forcing, air quality observations and modeling)
>
> Centre for Atmospheric Research
>
> National Space Research and Development Agency. Kogi State
>
> University Campus, Anyigba. Kogi State. Nigeria
>
> +234 80 3871 4158
> ------------------------------------
> Know that Victory comes with Patience,
> Relief with Affliction, and Ease with Hardship.
>
> Prophet Muhammad Rasulullah
>
>
>
>
>
> On Friday, May 27, 2022, 11:58:25 AM GMT+1, Najib Yusuf <
> najibgal at yahoo.com> wrote:
>
>
> Dear Dennis,
>
> I have done as you advise, 1 to 5 all work out, thank you, but I had to do
> this first:
>
> o3x_surf_flip := lonFlip(o3x_surf)
>  printVarSummary(o3x_surf_flip)    ,,,,,,,and it works, prior to the
> seasons average  but the xSea_surf (below)
>
>   xSea_surf = month_to_seasonN(o3x_surf_flip,(/"DJF","MAM","JJA","SON"/))
>    printVarSummary(xSea_surf)
>
> is giving this error:
>
> (0)     contributed: month_to_seasonN: rank=2
> (0)     ----- rank currently not handled -----
> (0)     contributed: month_to_season12: rank=2
> (0)     ----- rank currently not handled -----
> fatal:Illegal right-hand side type for assignment
>
> I haven't seen this rank error before. Please help out.
>
> Thank you
>
> *------------------------------------*
>
> *Najib Yusuf Galadanci Ph.D.*
>
> *Assistant Director (R & D)*
>
> Lower Atmospheric Dynamics
>
> (Aerosol radiative forcing, air quality observations and modeling)
>
> Centre for Atmospheric Research
>
> National Space Research and Development Agency. Kogi State
>
> University Campus, Anyigba. Kogi State. Nigeria
>
> +234 80 3871 4158
> ------------------------------------
> Know that Victory comes with Patience,
> Relief with Affliction, and Ease with Hardship.
>
> Prophet Muhammad Rasulullah
>
>
>
>
>
> On Thursday, May 26, 2022, 03:36:37 PM GMT+1, Dennis Shea <shea at ucar.edu>
> wrote:
>
>
> It is always best to examine the variable's structure via
> printVarSummary(...)
>
> [1]
>   o3x = f[:]->O3
>   printVarSummary(o3x)        ; I speculate 4 dimensions
> (time,level,lat,lon)
>
> [2]
>   o3x_surf = o3x(0,55,:,:)
>   printVarSummary(o3x_surf)   ; TWO dimension (lat,lon);  NO 'time'
> dimension
>
>   I think you want
>      o3x_surf = o3x(:,55,:,:) ; (time,lat,lon)
>
> [3]
> ; seasons average at surface
>   xDJF = month_to_seasonN(o3x,(/"DJF","MAM","JJA","SON"/))
>   printVarSummary(xDJF)       ; I speculate  (4,lat,lon)
>
> The name xDJF implies a one season mean for DJF but it is not.
> I think it should contain 4 seasonal means
>
> I think you should name it xSea for 'season'
>   xSea_surf = month_to_seasonN(o3x_surf,(/"DJF","MAM","JJA","SON"/))
>   printVarSummary(xSea_surf)       ; I speculate  (4,lat,lon)
>
> [4]
>    The following creates a scalar variable of type string
>    o3x_surf1 = "DJF"
>    print(03x_surf1)
>
>    I have no idea why you are doing this.
>    ***This has no spatial information.*** It cannot be plotted on a map.
>
>
> [5]
> The rest is too confusing to explain.
>
> To get to the 'answer'
>    xSea_surf(4,lat,lon)
>
> has spatial coordinates:
>             lat: [ -90..  90]
>             lon: [   0..358.75]
>
> You must use *lonFlip*
> <https://www.ncl.ucar.edu/Document/Functions/Contributed/lonFlip.shtml>
> to get longitudes to get the -180->180 range
>    xSea_surf :=* lonFlip*
> <https://www.ncl.ucar.edu/Document/Functions/Contributed/lonFlip.shtml>
> (xSea_surf)
>    printVarSummary(xSea_surf)        ; look at 'new' coordinates
>
> --
>    res at gsnLeftString = "DJF_dry cold"
>   plot1 = gsn_csm_contour_map_ce(wks,xSea_surf(0,{-35:35},{-30:60}),res)
>
>    res at gsnLeftString = "MAM_dry warm"
>   plot2 = gsn_csm_contour_map_ce(wks,xSea_surf2(1,:,:),res)
>
> etc
> =======
>
> I did this VERY QUICKLY. there may be errors but you shuld have the idea
> of how to proceed.
>
> Good Luck
>
>
> On Thu, May 26, 2022 at 6:59 AM Najib Yusuf via ncl-talk <
> ncl-talk at mailman.ucar.edu> wrote:
>
> Dear NCL experts and colleagues,
>
> I have an error with the subscripting in the attached script while trying
> to plot spatial distribution month_to_season surface Ozone model data.  I
> did try to change my subscripting to solve the error but seems beyond my
> little understanding of subscripting in ncl. Kindly assist.
>
> Variable: o3x_surf
> Type: float
> Total Size: 221184 bytes
>             55296 values
> Number of Dimensions: 2
> Dimensions and sizes:   [lat | 192] x [lon | 288]
> Coordinates:
>             lat: [ -90..  90]
>             lon: [   0..358.75]
> Number Of Attributes: 6
>   lev : 992.5000106104562
>   time :        2953
>   cell_methods :        time: mean
>   long_name :   O3 concentration
>   units :       mol/mol
>   mdims :       1
> (0)     O3 concentration (mol/mol) : min=3.61245   max=77.7517
>
> Variable: xMon
> Type: integer
> Total Size: 48 bytes
>             12 values
> Number of Dimensions: 1
> Dimensions and sizes:   [time | 12]
> Coordinates:
>             time: [2953..3287]
> Number Of Attributes: 1
>   long_name :   current date (YYYYMMDD)
>
>
> Variable: xMon
> Type: integer
> Total Size: 48 bytes
>             12 values
> Number of Dimensions: 1
> Dimensions and sizes:   [time | 12]
> Coordinates:
>             time: [2953..3287]
> Number Of Attributes: 1
>   long_name :   current date (YYYYMMDD)
> (0)     20130201
> (1)     20130301
> (2)     20130401
> (3)     20130501
> (4)     20130601
> (5)     20130701
> (6)     20130801
> (7)     20130901
> (8)     20131001
> (9)     20131101
> (10)    20131201
> (11)    20140101
> fatal:Number of subscripts do not match number of dimensions of
> variable,(2) Subscripts used, (1) Subscripts expected
> fatal:["Execute.c":8637]:Execute: Error occurred at or near line 137 in
> file month_to_seasO3.ncl
>
>
>
> *------------------------------------*
>
> *Najib Yusuf Galadanci Ph.D.*
>
> *Assistant Director (R & D)*
>
> Lower Atmospheric Dynamics
>
> (Aerosol radiative forcing, air quality observations and modeling)
>
> Centre for Atmospheric Research
>
> National Space Research and Development Agency. Kogi State
>
> University Campus, Anyigba. Kogi State. Nigeria
>
> +234 80 3871 4158
> ------------------------------------
> Know that Victory comes with Patience,
> Relief with Affliction, and Ease with Hardship.
>
> Prophet Muhammad Rasulullah
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at mailman.ucar.edu
> List instructions, subscriber options, unsubscribe:
> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20220530/4c86f58b/attachment.htm>


More information about the ncl-talk mailing list