Tolerance for negative emissions in the DESID module

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:

     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?

2 Likes

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

2 Likes

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).

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