CCTM emission module

Hi CMAQ users and developers:
I was running CCTM with my own input, and it seems that when CTM_PT3DEMIS is set to “N”, the CCTM output is not sensitive to surface emission.
In order to confirm this, I run the benchmark case, with CTM_PT3DEMIS set to “N”. Then, I manually create the surface emission files for benchmark run, with the same gridding, same species, same time flag as benchmark input, but set the emission rate for each grid to zero. So basically, benchmark case, but with no surface emission. The CCTM output shows, the concentrations for all species of benchmark case and benchmark case with no surface emission are exactly equal. In another words, the CCTM does not take the surface emission files into account.
I also tried the benchmark case with CTM_PT3DEMIS set to “Y”, the simulation result shows the concentrations in CCTM output is sensitive to both surface and in-line emissions
All the runs were successful, without error message. My questions are:

  1. Is there anything particular on the scripts or files that I need to be careful about, in order to prevent from this kind of result?
  2. Or, did I just compile the CMAQ improperly, so that the emission module neglects the surface emission file, when CTM_PT3DEMIS is set to “N”?

It will be awesome if anyone could take some time to look into this issue. I could email you all the necessary log files, CCTM output files, modified input files, etc, if it helps on solving this case.


Hi Huan,

Thanks for reaching out to the Forum. It’s not clear immediately why setting CTM_PT3DEMIS to N would disable the surface emissions. If you do share your logs and run script with us, we may be able to determine something more significant. Also, what version of CMAQ are you running?

It’s important to note that CMAQv5.3 (now available in Beta) introduces comprehensive revisions to these features. For that version, you can independently set the number of gridded and inline emission files, or set either or both of them to 0 to turn them off. We have also added extensive diagnostic output to better document the options that were invoked for any simulation.

Ben Murphy

Hi Ben:
That is exactly what I need to know about. As I stated in the previous post, I sent CTM_PT3DEMIS to N, then run with the surface emission file, and a “fake” surface emission file with 0 emission rate, the concentration of every species from these two runs are the same.
I am using CMAQ v5.2.1
I am not able to upload the files here, below are the links to the github:


Hi Huan,

Sorry for the delay in responding to your issue. I think the problem is an inconsistency between the number of vertical layers on your gridded emission files and the number of layers expected by the CMAQ emissions read statements (NLAY=35). There could be an error in the logic in the file EMIS_DEFN.F somewhere between lines 172-193 or between lines 280-302. Could you tell me how many layers are on your input emission files?

Again, please note that CMAQv5.3 resolves all of these issues and adds more documentation for better transparency.


Hello Ben and Huan:
I saw the log files posted here and compared with mine and I observed the same problem with the number of layer in the emission file.

In my case, I only have the surface emission file and when I process it, I obtain this message in the log file
Bad argument LAY1= 49

In my case, I have 50 layers made since wrf simulation. I think CCTM is not processing my emissions, because I did the same action as Huan did.

Can I solve this in CMAQ5.2?? Right now it is very dificult for me to migrate to CMAQ5.3

Hope you can help me, thanks

Hello again Ernesto,

Please bear with me as I respond to your queries in order so that others looking for help will see the most relevant responses for each.

To give you a little more information, I believe what is happening here is related to an assumption about the default operation of CMAQ and emissions inputs in v5.2.1 and before. By default, we assume that a user will provide either 1) a gridded file for layer 1 and one or more inline files for elevated point sources or 2) a gridded file with more than one layer present to represent the elevated point sources.

It is clear you are seeking a case in between these two, with one gridded file and no elevated sources. By default, the variable CTM_EMLAYS is set to equal NZ (the model domain number of layers). If the user sets CTM_EMLAYS equal to something else, it should override the default and allow for normal operation.

In your case, you should provide the following in your runscript:

setenv CTM_EMLAYS 1

Starting in CMAQv5.3, we have effectively decoupled the options above and allowed the number of emission layers to be diagnosed from the files provided. The variable CTM_EMLAYS is still active and will allow users to set a ceiling on the emissions they want CMAQ to read in (it will ignore emissions above that layer), but it is not required to set this variable for normal operation like it is for your current case.


Hello Ben:
Thanks a lot for your help.
I saw what you say and I wrote in the run script the sentence you mentioned and now CCTM reads my emission file properly.
Before I put setenv CTM_EMLAYS “1” and CCTM broke to fast, but, erasing " " CCTM is working properly.
In my case, I use a hemispheric domain and it is very difficult (almost impossible) to generate elevated point emissions in SMOKE, so I only work with surface emissions, because of the lack of that information.
Thanks again, now I have the notification of CMAQ5.3 compiled in the server I use, so I will try it and observe if there are significant differences.

Sounds good Ernesto. Keep in mind that v5.3 is in beta and we are updating it continually until it’s release in summer 2019. If we release some of those updates via an interim version before that final date, we will announce it here in the forum.