CMAQv5.5 emission error with negative emissions

Hi there, I’m running CMAQv5.5 with saprc07tc, AERO6, and m3dry deposition. I’ve compiled successfully, and ran the tutorial benchmarking case for CB6r5 and M3DRY without an issue. The error in the relevant node’s log file is this:

 Beginning Emissions
   Calling Diagnostic Emissions at Date:    2018195  and time:      80000

 ERROR: Invalid Negative emission rate -2.097E+00 has been
  detected for CMAQ species NUMATKN.
 Please inspect the Emission Control Namelist File (Search for
 "Reading Emission Control Namelist" in this Log File).


 *** ERROR ABORT in subroutine EMISS_NEG_CHECK on PE 032
 Negative Emissions Detected

I looked at the emissions files in the other log section it mentions, but no luck. None of my emission files have any aitken or other mode’s number concentration emission at all, and the ic/bc files have positive minima.

I’m still too new to attach files, wanted to attach part of my run script. From my troubleshooting, these are the relevant sections for changes I’ve tried:

setenv CTM_OCEAN_CHEM Y #> Flag for ocean halgoen chemistry and sea spray aerosol emissions [ default: Y ]
setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ]
#setenv CTM_WBDUST_BELD BELD3 #> landuse database for identifying dust source regions

setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ]
setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ],
#> otherwise revert to Kz0UT
setenv PX_VERSION Y #> WRF PX LSM
setenv CLM_VERSION N #> WRF CLM LSM
setenv NOAH_VERSION N #> WRF NOAH LSM
setenv CTM_ABFLUX N #> ammonia bi-directional flux for in-line deposition
#> velocities [ default: N ]
setenv CTM_BIDI_FERT_NH3 N #> subtract fertilizer NH3 from emissions because it will be handled
#> by the BiDi calculation [ default: Y ]
setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition
#> velocities [ default: N ]
setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ]
#> please see user guide (6.10.4 Nitrous Acid (HONO))
#> for dependency on percent urban fraction dataset
setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ]

setenv CTM_BIOGEMIS_BE N #> calculate in-line biogenic emissions with BEIS [ default: N ]
setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ]


setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml
setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml
# setenv EMISSCTRL_NML ${BLD}/EmissCtrl_${MECH}.nml

There was also a namelist leftover from I think 5.3, EMISSCTRL_NML, that I’ve now commented out (retaining DESID_CTRL_NML and DESID_CHEM_CTRL_NML , but it didn’t fix anything. I really don’t know where else to look aside from adding print-line debug commands into the code itself!

Thanks :slight_smile:

I think there is negative values in your emission file (This error pops up once detecting negative values). Did you carefully check every variables in your emission file?

M3Tools program m3stat is an easy way to check for this: look for the minimum values per variable per time step.

I appreciate the replies. I’ve attached my run script, run output log, and the flagged process’s run log.
cth_run_pm-plan24_v55.csh (51.4 KB)
CTM_LOG_032.v55_intel_Base2018_PM24plan_saprc07tc_ae6_aq_2018071.txt (110.1 KB)
run.log.txt (16.2 KB)

I’ve looked at every input file listed under the Emission Control Namelist section and note that 1) none of the emissions files even have a NUMATKN variable, and 2) the IC/BC files do have NUMATKN, but as a concentration rather than a flux, and those have non-negative minima.These same data files have also been used successfully by my colleague to run CMAQ5.3, so unless the negative-value checks have changed since then, I would be surprised if the data itself was broken now.

Edit: I have looked at ALL variables in all input files for negatives, and found some negative minima for a handful of variables in my GR_EMIS_001 file. CO, SO2, PXYL, just to pick a few. Again, this file doesn’t have NUMATKN as a variable.

I wonder if note #1 is more informative, that it’s coming up with a negative flux even though my emissions files don’t have it at all. The only other related thing I saw in the logs was in the section of a log headed ‘SET UP GRAVITATIONAL SETTLING’ this line:

surrogate VNUMATKN not used for 49 NUMATKN

Is there a mapping here going wrong maybe? Having a specific negative value like -2.097 rather than, say, -999 or something also makes me think it’s not a missing/undefined datapoint but a calculation extrapolated from something else, perhaps based on one of the existing inputs.

I’ve increased your trust level. Please check to see if you can add attachments now.

1 Like

I am able to now, thank you!

Hi Calvin,

You are correct that what is most likely happening here is a negative value read in for some variable on one of the emission files is causing the total mass of Aitken-mode emissions to go below zero, although probably not by very much. That number is then extrapolated to calculate the particle number of Aitken-mode emissions, which is orders of magnitude larger than the mass emission rate.

All emission rates (mass, particle surface area, and particle number) are checked against a uniform threshold of -1.0e-7. Because there are orders of magnitude separating these three variable types, the threshold should also reflect this. This thread discusses exactly this point: Tolerance for negative emissions in the DESID module

An easy fix for this would be to modify the uniform threshold on line 1329 of desid_module.F to something less than -2.097. This could of course lead to issues with negative emissions propagating through the system of model processes, but it seems like a rather small risk in this case.

A more complete fix would be to test if the variable is a particle number or surface area variable and apply a specific threshold. For example, the DIFF_MASK_NUM( IDIFF ) variable is defined in the VDIFF_MAP module. You could run a loop over the species index (1:N_SPC_DIFF) and where that mask is True, you could apply a threshold less than -2.097.

I’m not sure why you are getting negatives at all, though, if there are none on any of the files. That would be something to continue to be cautious about.

Ben Murphy

1 Like

Hi Ben,

Thanks for the info! I edited my last post, I meant to say that I found some negative values in the GR_EMIS file. I’m guessing the aerosol modules are transforming some emissions species into Aitken particles, and negative precursor fluxes are causing negative NUMATKN regardless of whether the input variable is negative.

I think this revealed my current real issue is in how my input file is generated where it got negative fluxes, but that’s a separate thing I’ll work on outside this forum. I’ll either change or ignore the negative emissions threshold in desid_module.F to get a test run going and revisit the input files later. Much appreciated.

Calvin Howes