[ncl-talk] How to define date for WRF-chem to get average daily of a variable ?

Dennis Shea shea at ucar.edu
Sat Oct 8 14:40:44 MDT 2022


Attached is a modified version of your script.

log(400/600) and integer divide (400/550) should be log(400.0/600.0) and
400.0/550.0
integer divide 400/600 and 400/550 yield 0s

NOTE: A division using integer values 400/600 (both integers) does not
create a fraction.

I changed these to floats.
=======================

It is **VERY IMPORTANT** for you to look at the dimensionality of variables.

printVarSummary(a2)            ; [Time | 8] x [bottom_top | 35] x
[south_north | 199] x [west_east | 199]
=====================
*calculate_daily_values *
<https://www.ncl.ucar.edu/Document/Functions/Contributed/calculate_daily_values.shtml>computes
daily average;
; you have eight 3-hourly values for one day so the time dimension is
dimension size 1
====================
 a2Day = calculate_daily_values (a2, "avg", 0, opt_cdv)
  printVarSummary(a2Day)         ; [Time | 1] x [bottom_top | 35] x
[south_north | 199] x [west_east | 199]
======================
I found the variable naming to be a bit confusing,

  AOD550_3D = a2Day * ((400./550.)^angstrom_exponent)   ; changed from
400/550
 ;AOD550_3D at long_name   =  "AOD550_3D"
  AOD550_3D at description =  "AOD550_3D"
  copy_VarCoords(a2Day,AOD550_3D )
  printVarSummary(AOD550_3D)      ; [Time | 1] x [bottom_top | 35] x
[south_north | 199] x [west_east | 199]

The _3D implies (to me) that the variable is 3-dimensional.
It is 4-dimensional
===============
 AOD550_2D = *dim_sum_n_Wrap*(AOD550_3D,0)
 ;AOD550_2D at long_name   =  "AOD550_2D"
  AOD550_2D at description =  "AOD550_2D"
  printVarSummary(AOD550_2D)      ; [bottom_top | 35] x [south_north | 199]
x [west_east | 199]

AOD550_2D is 3 dimensional not 2-dimension
================================================================

When the plot function is used, it expects 2-dimensional data but you were
using a 3D array

;;plot = gsn_csm_contour_map(wks,AOD550_2D( ???,:,:),res)


Maybe, instead of
AOD550_2D = *dim_sum_n_Wrap*(AOD550_3D,0)  ; sum the Time which is
dimension 0
you wanted

AOD550_2D = *dim_sum_n_Wrap*(AOD550_3D,1)   ; 1 would mean all the levels
[Time | 1] x [south_north | 199] x [west_east | 199]

The plot c all would be

plot = gsn_csm_contour_map(wks,AOD550_2D( 0,:,:),res)  ; Time is dimension
number 0 of AOD550_2D

PLEASE look carefully at the code, the dimensionality and the results

Good Luck

On Sat, Oct 8, 2022 at 7:06 AM Setareh Rahimi <setareh.rahimi at gmail.com>
wrote:

> Dear Dennis,
> I executed the script you send. It also worked for me. But may I ask you
> please to execute the attached script?
> Thanks in advance,
> Best wishes,
>
> On Fri, Oct 7, 2022 at 10:57 PM Dennis Shea <shea at ucar.edu> wrote:
>
>> Yes, I did "execute the entire script" I sent you.
>>
>> %>  /project/cas/shea/WRF> ncl setareh_chem.ncl >! setareh_chem.OUTPUT
>> ====================================
>>
>> My script has no "x"
>>
>> I have no idea where or what  the variable "x" is.
>>
>> Did you execute the script I sent you ?
>>
>>
>>
>> On Fri, Oct 7, 2022 at 1:02 PM Setareh Rahimi <setareh.rahimi at gmail.com>
>> wrote:
>>
>>> Dear Dennis,
>>> Did you execute the entire script?
>>> Cause I still get errors! (attached)
>>>
>>> On Fri, Oct 7, 2022 at 9:31 PM Dennis Shea <shea at ucar.edu> wrote:
>>>
>>>>   My script follows.. There were no problems. The output is attached.
>>>>
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>
>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
>>>>
>>>>   f = addfile("setareh_chem.nc","r")
>>>>   print(f)                              ; same as "nmcdump -h"
>>>>
>>>>   Times = f->Times                      ; [Time | 41] x [DateStrLen |
>>>> 19]  (character)
>>>>
>>>> ; For fun:   Examine "Times"  in different formats
>>>>
>>>>   Time_0 = wrf_times_c( Times, 0 )      ; "hours since" initial time on
>>>> file   (double)
>>>>                                                              ;  Time_0
>>>> is recognized by cd_calendar
>>>>  ;Time_1 = wrf_times_c( Times, 1 )      ; "hours since 1901-01-01
>>>> 00:00:00"    (double)
>>>>  ;Time_2 = wrf_times_c( Times, 2 )      ; yyyymmddhhmnss
>>>>         (double)
>>>>   Time_3 = wrf_times_c( Times, 3 )      ; yyyymmddhh
>>>>         (integer)
>>>>
>>>>  ;print(Times)
>>>>  ;print(Time_0)
>>>>  ;print(Time_1)
>>>>  ;print(Time_2)
>>>>   print(Time_3)                         ; easy on the eyes
>>>>   print("------------------------------------")
>>>>
>>>>   a2           = f->TAUAER2             ; (Time, south_north, west_east)
>>>>   a2&Time = Time_0                      ; associate the 'Time'
>>>> coordinate with the variable using  standard NCL & syntax
>>>>   printVarSummary(a2)
>>>>   print("------------------------------------")
>>>>
>>>>   opt_cdv = True             ; option for calculate_daily_values  (cdv)
>>>>   opt_cdv at nval_crit = 4      ; default is 1
>>>>
>>>>   a2Day = calculate_daily_values (a2, "avg", 0, opt_cdv)
>>>>   printVarSummary(a2Day)
>>>>   printMinMax (a2Day,1)
>>>>
>>>> On Fri, Oct 7, 2022 at 9:28 AM Setareh Rahimi <setareh.rahimi at gmail.com>
>>>> wrote:
>>>>
>>>>> Dear Dennis,
>>>>> I sent you the file via transfer.pcloud.com. I could not send it here
>>>>> due to the large size of the file.
>>>>> Please check the script with the file and let me know your idea.
>>>>> Many thanks for your help.
>>>>> Best wishes,
>>>>>
>>>>> On Fri, Oct 7, 2022 at 3:18 PM Dennis Shea <shea at ucar.edu> wrote:
>>>>>
>>>>>> I do not understand 'x' either
>>>>>>
>>>>>> "I wonder about variable x; I did not define such a variable."
>>>>>>
>>>>>> ncl 0> f = addfile(".....","r")  ; I do not have your file
>>>>>> ncl 1> print(f)                                             ; like
>>>>>> ncdump -h
>>>>>> ncl 2> Times = f->Times                            ; Times(Time,
>>>>>> DateStrLen)    (type character)
>>>>>> ncl 4> Time = wrf_times_c( Times, 0 )      ; "hours since" initial
>>>>>> time on file   (double); units recognized by cd_calendar
>>>>>> ncl 5> print(Time)
>>>>>>
>>>>>> ncl 7> T = f->T
>>>>>> ncl 8> printVarSummary(T)
>>>>>>
>>>>>> ncl 9> T&Time = Time                              ; associate time
>>>>>> coordinate
>>>>>> ncl 10> printVarSummary(T)
>>>>>>
>>>>>> Variable: T
>>>>>> Type: float
>>>>>> Total Size: 19683000 bytes
>>>>>>             4920750 values
>>>>>> Number of Dimensions: 4
>>>>>> Dimensions and sizes: [Time | ??] x [bottom_top | 27] x [south_north
>>>>>> | 81] x [west_east | 90]
>>>>>> Coordinates:
>>>>>>             Time: [   0..  ?]
>>>>>> Number Of Attributes: 5
>>>>>>   FieldType : 104
>>>>>>   MemoryOrder : XYZ
>>>>>>   description : perturbation potential temperature (theta-t0)
>>>>>>   units : K
>>>>>>   stagger :
>>>>>> ncl 11> Tavg = calculate_daily_values (T, "avg", 0, True)
>>>>>> ncl 12> printVarSummary(Tavg)
>>>>>>
>>>>>> Variable: Tavg
>>>>>> Type: float
>>>>>> Total Size: 1574640 bytes
>>>>>>             393660 values
>>>>>> Number of Dimensions: 4
>>>>>> Dimensions and sizes: [Time | ...] x [bottom_top | 27] x [south_north
>>>>>> | 81] x [west_east | 90]
>>>>>> Coordinates:
>>>>>>             Time: [   0..  12]
>>>>>> Number Of Attributes: 8
>>>>>>   _FillValue : 9.96921e+36
>>>>>>   FieldType : 104
>>>>>>   MemoryOrder : XYZ
>>>>>>   description : perturbation potential temperature (theta-t0)
>>>>>>   units : K
>>>>>>   stagger :
>>>>>>   Time :   0
>>>>>>   NCL_tag : calculate_daily_values
>>>>>>
>>>>>> On Fri, Oct 7, 2022 at 5:16 AM Setareh Rahimi <
>>>>>> setareh.rahimi at gmail.com> wrote:
>>>>>>
>>>>>>> Dear Dennis,
>>>>>>> So many thanks for your advice. I made corrections to my script as
>>>>>>> you suggested, and attempted to calculate and plot the average AOD for
>>>>>>> 2011-06-28 but I still get errors. I attached the script and the errors.
>>>>>>>
>>>>>>> As you can see from the error message, NCL says :fatal: No
>>>>>>> coordinate variable exists for dimension (Time) in variable (x)
>>>>>>> I wonder about variable x; I did not define such a variable.
>>>>>>>
>>>>>>> Please advise me on how to sort this issue out.
>>>>>>> Many thanks in advance,
>>>>>>> Best wishes,
>>>>>>>
>>>>>>> On Fri, Oct 7, 2022 at 6:02 AM Dennis Shea <shea at ucar.edu> wrote:
>>>>>>>
>>>>>>>> As noted in the documentation, *calculate_daily_values*
>>>>>>>> <https://www.ncl.ucar.edu/Document/Functions/Contributed/calculate_daily_values.shtml>
>>>>>>>> requires that the variable have a **time coordinate** that is recognized by
>>>>>>>> cd_calendar.
>>>>>>>>
>>>>>>>>   Times = f->Times                    ; Times(Time, DateStrLen)    (type character)
>>>>>>>>   Time = *wrf_times_c*( Times, 0 )      ; "hours since" initial time on file   (double); units recognized by cd_calendar
>>>>>>>>
>>>>>>>>      a2           = f->TAUAER   ; (Time, south_north, west_east)
>>>>>>>>      a2&Time = Time   ; associate the 'Time' coordinate with the
>>>>>>>> variable using  standard NCL & syntax
>>>>>>>>      printVarSummary(a2)
>>>>>>>>      print("------------------------------------")
>>>>>>>>
>>>>>>>>    a2Day = calculate_daily_values (a2, "avg", 0, opt)
>>>>>>>>    printVarSummary(a2Day)
>>>>>>>>    printMinMax (a2Day,1)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Oct 5, 2022 at 9:30 AM Setareh Rahimi via ncl-talk <
>>>>>>>> ncl-talk at mailman.ucar.edu> wrote:
>>>>>>>>
>>>>>>>>> Dear NCL users,
>>>>>>>>>
>>>>>>>>> I am trying to plot the daily average of AOD (aerosol optical
>>>>>>>>> depth) from WRF-chem outputs. However, I can not define the time so that
>>>>>>>>> NCL plots the daily average of AOD.(the script has been attached, and the
>>>>>>>>> model output is too large and I just used ncdump to show the header of some
>>>>>>>>> varibles ).
>>>>>>>>> I tried the following commands:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> times = wrf_user_getvar(f,"times",-1)
>>>>>>>>> printVarSummary(times)
>>>>>>>>> print(times)
>>>>>>>>> ymdh = cd_calendar(a2&times, -2)
>>>>>>>>>   print(ymdh)
>>>>>>>>>
>>>>>>>>> but faced an error.
>>>>>>>>> Would you please kindly advise me on how can I calculate the daily
>>>>>>>>> average of AOD from the hourly output of WRF-chem?
>>>>>>>>> Many thanks in advance,
>>>>>>>>> Best wishes,
>>>>>>>>> --
>>>>>>>>> S.Rahimi
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> ncl-talk mailing list
>>>>>>>>> ncl-talk at mailman.ucar.edu
>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> S.Rahimi
>>>>>>>
>>>>>>>
>>>>>
>>>>> --
>>>>> S.Rahimi
>>>>>
>>>>>
>>>
>>> --
>>> S.Rahimi
>>>
>>>
>
> --
> S.Rahimi
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20221008/18dc27bb/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: seteareh.test.ncl
Type: application/octet-stream
Size: 5644 bytes
Desc: not available
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20221008/18dc27bb/attachment.obj>


More information about the ncl-talk mailing list