# Tolerance for negative emissions in the DESID module

**URL:** https://forum.cmascenter.org/t/tolerance-for-negative-emissions-in-the-desid-module/5241
**Category:** CMAQ
**Tags:** emissions
**Created:** [September 24, 2024, 4:56am UTC](https://forum.cmascenter.org/t/tolerance-for-negative-emissions-in-the-desid-module/5241 "2024-09-24T04:56:01Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![bkoo](https://avatars.discourse-cdn.com/v4/letter/b/2acd7d/32.png) [@bkoo](https://forum.cmascenter.org/u/bkoo)
#### Post date: [September 24, 2024, 4:56am UTC](https://forum.cmascenter.org/t/tolerance-for-negative-emissions-in-the-desid-module/5241/1 "2024-09-24T04:56:01Z")

</div>

I was trying to do a zero-out CMAQ (v5.4) run where emissions from a source sector were eliminated. I was subtracting the source sector emissions from merged emissions at runtime using the DESID module.  
The run failed with the following error message:

```auto
     ERROR: Invalid Negative emission rate -1.192E-07 has been
      detected for CMAQ species NUMACC.
     Please inspect the Emission Control Namelist File (Search for
     "Reading Emission Control Namelist" in this Log File).

```

I understand that subtraction operation in the DESID module could possibly result in small negative mass. Upon examining `desid_module.F`, however, I realize that a single tolerance value of `-1.0e-7` is applied to all variables; that is, not just mass variables but also aerosol number and surface area variables.  
I wonder whether you should apply a different tolerance value to the aerosol number variables since their values are typically many orders of magnitudes greater than mass concentrations?

---

<div class="post-metadata">

### Author: ![Ben\_Murphy](https://avatars.discourse-cdn.com/v4/letter/b/74df32/32.png) [@Ben\_Murphy](https://forum.cmascenter.org/u/Ben_Murphy)
#### Post date: [September 24, 2024, 2:44pm UTC](https://forum.cmascenter.org/t/tolerance-for-negative-emissions-in-the-desid-module/5241/2 "2024-09-24T14:44:09Z")

</div>

That’s good advice Bonyoung, and we’ll consider adding it for v6.0. If you want to apply that discrimination yourself and you haven’t already found the following variables, you may use DIFF\_MASK\_NUM( IDIFF ) and DIFF\_MASK\_SRF( IDIFF ) to filter for the indices in VDEMIS\_DIFF that correspond to number and surface area. respectively. They are in the VDIFF\_MAP module that is already used in the header of DESID\_CHECK\_NEG to access the variable DIFF\_SPC.

Best regards,  
Ben

---

<div class="post-metadata">

### Author: ![mhdyasaman](https://avatars.discourse-cdn.com/v4/letter/m/ccd318/32.png) [@mhdyasaman](https://forum.cmascenter.org/u/mhdyasaman)
#### Post date: [December 9, 2025, 8:05pm UTC](https://forum.cmascenter.org/t/tolerance-for-negative-emissions-in-the-desid-module/5241/3 "2025-12-09T20:05:27Z")

</div>

Hi all,

I am using CMAQ version 5.5 with gcc (GCC) 11.5.0. And I encountered with the same issue here. First it started with having a negative amount for 3 and 4 and I changed the threshold but now I am getting negative number with magnitude of 10. Is there any limit in decreasing the threshold of negative emissions in desid\_module.F ?

this is my error:

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

---

<div class="post-metadata">

### Author: ![Ben\_Murphy](https://avatars.discourse-cdn.com/v4/letter/b/74df32/32.png) [@Ben\_Murphy](https://forum.cmascenter.org/u/Ben_Murphy)
#### Post date: [December 18, 2025, 10:23pm UTC](https://forum.cmascenter.org/t/tolerance-for-negative-emissions-in-the-desid-module/5241/4 "2025-12-18T22:23:28Z")

</div>

Hi! We have implemented the suggestion from Bonyoung Koo above in the internal development version of CMAQ. We found that thresholds of -1.0e-7 for mass variables, -0.1 for aerosol surface area variables (beginning with SRF) and -1.0e11 for aerosol number variables (beginning with NUM) were appropriate.

So -10.1 for a number variable like NUMATKN is not necessarily problematic. If you trust your emissions and any scaling operations you are invoking, you can just comment out the negative check. If you are able to implement the unit-specific thresholds above, it would certainly be safer.

Best wishes,

Ben
