Creating CEMSUM file


I’ve pulled some 2019 CEM data from the EPA air market (Air Markets Program Data | Clean Air Markets | US EPA), and I’ve been trying to process the CEM data. I don’t have a CEMSUM file, and I’m not sure how to use the CEMScan utility to create it (5.3.4. CEMScan). When I run the ptegu_onetime script in smoke, it completes fine, but then when I run the ptegu_daily script in smoke, it says:

tail /projects/b1045/SMOKE.EMF/2016_beta/2016ff_16j/intermed/ptegu/logs/smkinven_ptegu_apr_2016ff_16j.log

" ERROR: input file not found: CEMSUM

     Could not open input file "CEMSUM".
     *** ERROR ABORT in subroutine RDCEMSUM
     Ending program "RDCEMSUM"."

I was hoping commenting out the CEMSUM file meant the CEMScan routine would automatically create it for me, but no luck.

Please help me by directing me to how I create this file, as the documentation doesn’t really say where the cemscan ?function? is located.


Hi Anastasia,

You have to run the CEMScan program using the CEM data as inputs (each file should be listed in the FILELIST file or cat them all in single file and put it there). The program is simple, you just need to provide with a report and outfile and from what I remember set the max stack number as environment variable. I suggest running it once and you will figure it out.


Here are some additional suggestions:

CEMScan makes the CEMSUM file and is not part of the provided SMOKE/EMF run scripts.

You can setup a script using the environment variables below to run cemscan and create the CEMSUM file.

setenv FILELIST filelist.txt

setenv OUTFILE cemsum.txt

setenv REPFILE cemrep.txt

setenv MAX_CEM_UNITS 100000



The filelist.txt file is the only input needed for cemscan. This contains the path and file name of each individual monthly CEMs file in the CAMD package, with each monthly file being on a new line. E.g.,



You will need to then update the ptegu run script to point to the new CEMSUM file.

Thank you for your help! I was confused because there was a cemscan script within the platform, in /SMOKE.EMF/2016_beta/scripts/emf/smk_pt_cemscan_emf.csh script, but it calls upon …/run/smk_run_v8.csh for the CEMscan function, which points to $SMK_BIN/cemscan location, which I had to find within the assigns file, which showed that $SMK_BIN = $SMKROOT/$SMOKE_EXE, which is where I finally found the cemscan function. I proceeded to create my own script as you described, and it worked great! Explaining my process in case someone else has trouble reverse engineering the location. Thanks again!