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