Possible issues with mercury bidirectional exchange under STAGE in CMAQ v5.5

Hi,

I am a master’s student using CMAQ v5.5 with the STAGE deposition option and mercury bidirectional exchange. While tracing the STAGE mercury code, I found two places that seem to be original coding issues rather than model-tuning choices. I may be misunderstanding something, so I would be very grateful if you could help confirm whether my interpretation is correct.

The files I checked are mainly STAGE_MOD.F and HGSIM.F.

First, in STAGE_MOD.F around lines 630-633, the code computes and passes flux_hgII as:

flux_hgII = -Sum( Tile_Data%Lu_Vd( c,r,n_HgII,: ) * Tile_Data%LUFRAC( c,r,: ), mask = WATER)
Call Hg_Surf_Update ( f_stom, f_cut, f_soil, f_wat, flux_hgII,
&                 Heff_wat, Heff, TStep, c, r, Jdate, Jtime )

However, in HGSIM.F, the interface and subsequent use seem to indicate that flx_hgII is treated as a flux in ppm*m/s, for example around lines 294, 300, and 342:

REAL,    INTENT( IN )   :: flx_stom, flx_cut, flx_grnd, flx_wat, flx_hgII         ! fluxes ppm*m/s
REAL    :: flux_st, flux_cut, flux_grnd, flux_wat, flux_hgII      ! fluxes ppm*m/s
flux_hgII  = flx_HgII / zsurf

My concern is that Tile_Data%Lu_Vd is a deposition velocity (m/s), not a flux. So here flux_hgII seems to be passed as deposition velocity only, without multiplying by the air concentration of HGIIGAS.

If my understanding is correct, I wonder whether this should instead be something like:

flux_hgII = -cgridl1(n_HGII) *
&       Sum( Tile_Data%Lu_Vd( c,r,n_HgII,: ) * Tile_Data%LUFRAC( c,r,: ),
&            mask = WATER )

so that the quantity passed to Hg_Surf_Update is actually a grid-cell-mean HGIIGAS flux in ppm*m/s.

Second, in HGSIM.F around lines 311, 315, and 316, I found:

REAL, PARAMETER :: satten = 7.58-1
REAL, PARAMETER :: kphot = 6.5-4
REAL, PARAMETER :: kox   = 7.2-4

In Fortran, these seem to be interpreted as subtraction rather than scientific notation, i.e. 7.58-1 = 6.58, 6.5-4 = 2.5, and 7.2-4 = 3.2, rather than the likely intended values:

REAL, PARAMETER :: satten = 7.58e-1
REAL, PARAMETER :: kphot = 6.5e-4
REAL, PARAMETER :: kox   = 7.2e-4

If so, this would make the Hg aqueous photoreduction/photooxidation parameters much larger than intended.

Thank you very much for your time and for maintaining CMAQ. I apologize in advance if I have misunderstood the code logic.

Best regards

STAGE_MOD.F.txt (47.2 KB)

HGSIM.F.txt (24.5 KB)

Thanks for pointing out these issues. Those do seem to be errors in the code, and your proposed changes look correct to me.