CMAQ species rate constant issues


I was trying to calculate atmosphere oxidation capacity which required rate constants between oxidants and VOCs. I used COMBINE tools with customized calculation formula. However when it comes to rate constant formula used in CB06 mechanism, I’m confused with the ‘T’ in .
COMBINE gave out ERRORs **ERROR** evaluating EXP equal to 8.4517403E+01. It seems that there are upper limits of EXP function.
Thus I want to ask that is ‘T’ refers to surface temperature in unit K or Celcius? Besides, is there any options that I could output rate constants between oxidants and VOCs from the model?
I’d appreciate any help from you!


The problem is that the EXP(X) needs to be in the range for REALs, approximately 1.18E-38 to 3.40E+38. COMBINE provides tolerances for X that assure this, and X=8.4517403E+01 does not fit within these tolerances.

1 Like

If I understand correctly, you are seeking for obtaining rate constants for several chemical reactions within CMAQ. If so, you can check mechanism files which do provide the rate constants. BTW, the expression might be a bit confusing if you don’t read other posts.

Hi Mr.cjcoats & Mr.Ryan,

Thank you for your kind reply! Ryan is correct that I was trying to calculate rate constants in COMBINE, and cjcoats explains the errors.
I looked up mechanism tables in github for example and used rate constant formula given. However, some of the rate constants would get extremely large using surface temperature in unit of °C, such as:

ALDX + OH ----> CXO3

of which rate constant equals to 4.90E-12e405.00/T. When it comes to some grids of my domain where surface temperature near 0 during winter or so, EXP(X) would increase beyond tolerance right? Or am I doing it wrong calculation rate constants?

PS: Should X=8.4517403E+01 falls into range of 1.18E-38 to 3.40E+38, or I’m understanding it incorrectly? I’m confused for my silly question. I appreciate any further explanation from you!


In COMBINE, you’re calculating a lot of EXP(X) values. In order for this not to overflow, you need EXP(X)<3.40E+38 which requires X<LOG_E(3.40E+38) (i.e., approximately X<88.722). The COMBINE program is rather sloppy in checking the range for X to prevent overflow, relative to IEEE REAL*4 binary format used almost universally nowadays (instead, does the checking for the somewhat-different DEC VAX REAL*4 binary format…), and your X=84.517403 does not pass its range-check.

1 Like

Are you using temperature in degrees celsius to calculate the rate constants? If so, use degrees Kelvin.