Bugs for EPA_ANTHRO_EMIS

36 views
Skip to first unread message

Zongrun Li

unread,
Mar 6, 2026, 12:00:45 PMMar 6
to wrf-chem-anthro_emiss
Dear all,

I recently compared the EPA_ANTHRO_EMIS processed inline stack emission with SMOKE inputs. I found there are some potential issues:
1. In anthro_emis.f90, instead of overwriting the wrk_emis with different stack emission files, should it be accumulation?
Before:
      wrk_emis(:,:,:) = 0.
      do stk = 1,data_file%stack%nStk
        if( data_file%stack%dataMask(stk) ) then
          il = data_file%stack%mdl_i(stk) ; jl = data_file%stack%mdl_j(stk)
          k = data_file%stack%mdl_k(stk)
          wrk_emis(il,jl,k) = data_file%stack%src_data(stk)   ! overwrites!
        endif
      enddo

Fixed:
      wrk_emis(:,:,:) = 0.
      do stk = 1,data_file%stack%nStk
        if( data_file%stack%dataMask(stk) ) then
          il = data_file%stack%mdl_i(stk) ; jl = data_file%stack%mdl_j(stk)
          k = data_file%stack%mdl_k(stk)
          wrk_emis(il,jl,k) = wrk_emis(il,jl,k) + data_file%stack%src_data(stk)   ! accumulate!
        endif
      enddo

2. In stack.f90 file, stkFileInit subroutine. The utility uses the stack height from SMOKE outputs. However, in CMAQ, Briggs is applied to calculate the effective plume heights, which considers not only stack height but also exit velocity, temperature, etc.

Thanks,
Zongrun

Zongrun Li

unread,
Apr 7, 2026, 2:17:17 PM (2 days ago) Apr 7
to wrf-chem-anthro_emiss, Zongrun Li

I worked on this module with more tests.

1. Vertical Allocation of Point Sources: I understand the design rationale here — since WRF-Chem runs meteorology and chemistry simultaneously, incorporating a full plume rise model for point source vertical allocation isn't practical. However, relying on the initial-condition layer heights and stack heights to allocate point emissions raises some concerns, since these heights can evolve significantly during the simulation.

2. The gridded emissions processing appears to be correct. However, the point source conversion seems to depend on the "domains" parameter in a way that may introduce errors. Specifically, when domains = 3, emissions for all three domains are processed together using the same scaling factor derived from domain 1. The issue is that point emission intensities need to be converted using each grid cell's actual area. For example, a point emission of 1 mol/hr in CMAQ would be distributed as:

  • 1 / (12 × 12 km²) = ~0.00694 mol/(hr·km²) for a 12-km grid
  • 1 / (4 × 4 km²) = ~0.0625 mol/(hr·km²) for a 4-km grid
  • 1 / (1 × 1 km²) = 1.0 mol/(hr·km²) for a 1-km grid

To verify this, I ran two test cases (see attached figure):

  Case 1: Setting domains = 3 and generating emissions for all three domains in a single run.
  Case 2: Running the module separately with the 1-km domain configured as the first (and only) domain.

The attached figure shows that the unit-conversion factors differ between these two approaches, which suggests the multi-domain run is not applying the correct area-based scaling for each domain.
TEST2.png
Reply all
Reply to author
Forward
0 new messages