Eight hour average ozone

Hi, how would I calculate daily maximum 8 hour average ozone?

I figured that CMAQ/TOOL/HR2DAY would be it. I tried to use File list format. It doesn’t seem to getting the end-time from the second file correctly and it fails to read any of 48 hour time period. Do I have to physically catenate files before calculating MDA8 value? Is there better alternative tool for this?

Thank you!

Hi Yosuke,

The hr2day program will calculate MDA8 ozone from multiple input files which contain hourly ozone. Can you provide your run script and log file so we can see the specific error that hr2day ran into? That would be helpful for diagnosing your issue. Thanks.


The I/O API M3TOOLS program “m3tproc” is designed to compute various sorts of time aggregation (average, max, min, …) for I/O API files. See https://www.cmascenter.org/ioapi/documentation/all_versions/html/M3TPROC.html

Note that since I/O API Version 2.2 (May, 2002) the I/O API has supported lists of files (under a single logical name, e.g., setenv FOO FOO1,FOO2,FOO3,FOO4; setenv FOO1 …, etc.) so that you do not have to use an external program to concatenate multiple single-day files. See https://www.cmascenter.org/ioapi/documentation/all_versions/html/NEWSTUFF.html#ver22

Wyat, Thank you for help.


The output have only one time step, fillvalue for all cells. Part of ndcump below.


  2011192, 0 ;

 O3 =
  -9.999e+36, -9.999e+36, -9.999e+36, -9.999e+36, -9.999e+36, -9.999e+36,
    -9.999e+36, -9.999e+36, -9.999e+36, -9.999e+36, -9.999e+36, -9.999e+36,

Thank you for help.

Output has no timestep. I have complete log file pasted below. The program says that start time and end time is the same, that seems weird.

 File has start date&time  2011192:000000
 File has final date&time  2011192:000000
 File has       time step  010000

As I said, I am passing input files as file list, like below:

export FILE0=$d/CCTM_ACONC_v52_intel17.0_SE52BENCH_20110711.nc
export FILE1=$d/CCTM_ACONC_v52_intel17.0_SE52BENCH_20110712.nc
export FILE2=$d/CCTM_ACONC_v52_intel17.0_SE52BENCH_20110713.nc
export FILE3=$d/CCTM_ACONC_v52_intel17.0_SE52BENCH_20110714.nc


Hi Yosuke,

So try this.

In your runscript, specify the infiles as

setenv M3_INFILE1 $d/CCTM_ACONC_v52_intel17.0_SE52BENCH_20110711.nc
setenv M3_INFILE2 $d/CCTM_ACONC_v52_intel17.0_SE52BENCH_20110712.nc

You don’t need to use the list format you’re using. If you follow the structure of the example run script provided with hr2day, you should be good shape. Let me know if that works for you.


Seems like CMAQ v5.3.b2 has the feature you have. Let me try the file. I was using v5.2.1.

Yes, the ability to handle multiple sequential input files was added as a new feature for hr2day in CMAQv5.3b2:

For older versions it was indeed necessary to concatenate the individual files with tools such as combine or m3xtract prior to running hr2day

Thank you all, it seems to be working now!

Glad to hear it’s working now.

I forgot that previous versions of hr2day did not handle multiple sequential input files. To use the older versions of the program, you would first need to concatenate your daily files into a single file multi-day file using a program like combine or m3xtract. Then you could point hr2day to that file. That would be an alternative solution.