geoschem / geos-chem

GEOS-Chem "Science Codebase" repository. Contains GEOS-Chem science routines, run directory generation scripts, and interface code. This repository is used as a submodule within the GCClassic and GCHP wrappers, as well as in other modeling contexts (external ESMs).
http://geos-chem.org
Other
169 stars 165 forks source link

[BUG/ISSUE] GEOS-Chem Offline Soil Emissions #765

Closed hongjianweng closed 3 years ago

hongjianweng commented 3 years ago

Colin and Daven wrote:

While modelling in GEOS-Chem, I was testing the online soil NOx emissions module to make sure that I would get the same result as when running with your offline soil NOx emissions enabled. Unfortunately, I have had trouble replicating the offline soil NOx emissions in GEOS-Chem Classic version 13.0.2. It is certainly possible I configured the model incorrectly, but I wanted to reach out to see if either of you had any idea why the results would differ like this.

I first noticed that I could not replicate the offline emissions when using the MERRA-2 meteorology in the North America domain for July 2018. To test this in a more easily replicable format, used the GEOS-FP meteorology at a 4x5 resolution for July 2016 and compared to the results published with Weng et al, 2020 (linked here). What I found was that global soil NO emissions for July 2016 averaged 22% greater in the Weng et al. 2020 data compared to those calculated in GEOS-Chem v13.0.2. I realize that there is chemistry feedback that in the 3D model that would add to the available nitrogen and the results would differ slightly based on that, but my understanding is that the additional deposited nitrogen in the 3D model run would result in greater emissions in the 3D model rather than less, relative to your work. Other than this, I have not been able to find any obvious differences in the model configuration you have used versus the configuration I am using (besides the version of GEOS-Chem/HEMCO).

I have attached a few images showing the difference in Soil NO for July 2018, as well as a .zip file containing the GEOS-Chem model configuration, model outputs and the jupyter notebook that I used in making the images. I am happy to send any other files related to this that you’d like to see, including those related to the comparison I made with MERRA-2 in the North America domain, just let me know if that would be helpful.

geosfp_4x5_fullchem_snoxonline.zip figs.zip

hongjianweng commented 3 years ago

I found that it was the unit bug in GEOS-Chem v12.3.2 (used in Weng et al. 2020). In general, output unit of soil NOx in Weng et al. 2020 is kgN compared to kgNO in Colin's result.

In GEOS-Chem v12.3.2, I think there was a bug in the following code (hcox_soilnox_mod.F90), which would effect the soil NO when setting kgN as output unit. Soil NOx contains biomes N and fertilizer N source. Fertilizer N is in kgNO unit and biomes N is in ngN. Variable UNITCONV is the conversion factor of biomes N . HcoState%Spc(Inst%IDTNO)%EmMW_g is the molecular weight of emitted species, which is read from the input file HEMCO_sa_Spec.rc (no longer used in v13.0.2).

However, I think need to use HcoState%Spc(Inst%IDTNO)%MW_g (molecular weight, 30g/mol) to replace HcoState%Spc(Inst%IDTNO)%EmMW_g in hcox_soilnox_mod.F90. Because, when setting kgN as output unit in Weng et al. 2020, HcoState%Spc(Inst%IDTNO)%EmMW_g is 14 which will lead to the unit mismatch between biomes N and fertilizer N.It will cause the fertilizer N to be further multiplied by a ratio (30/14) and finally total soil NOx would be so greater in Weng el al. 2020.

##############################################

! Conversion factor from ng N to kg NO

UNITCONV = 1.0e-12_hp / 14.0e+0_hp * HcoState%Spc(Inst%IDTNO)%EmMW_g

......

! Fertilizer emission [kg/m2/s] A_FERT = FERTADD( SOILFRT , DEPN)

! Scale fertilizer emissions as specified ! (scale needed to force fert emiss of 1.8 Tg N/yr w/o canopy uptake) A_FERT = A_FERT * Inst%FERT_SCALE

! Canopy reduction factor CRF_TERM = SOILCRF( K, LAI, R_CANOPY(K), WINDSQR, SUNCOS )

! Base emission. ng N/m2/s --> kg NO/m2/s A_BIOM = A_BIOME(K) * UNITCONV

! SOILNOX includes fertilizer SOILNOX = (SOILNOX &

############################################## After fixing the bug, the result is as follows and the difference is reasonable. <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">

  | Weng el al. 2020 v12.3.2 offline | Fixed bug v12.3.2 offline | Fixed bug v13.0.2 offline | Colin 13.0.2 online -- | -- | -- | -- | -- Global soil NOx (TgNO, 201607 in 4x5) | 1.63 | 1.3 | 1.27 | 1.37 Compared to Colin (%) | 19.0 | -5.1 | -7.3 |  

The subtle difference between offline 12.3.2 and offline 13.0.2 is because of LAI and code updates. The difference between offline 13.0.2 and online 13.0.2 is mainly because of the additional deposited nitrogen in the 3D model run.

hongjianweng commented 3 years ago

I will update the fixed offline emissions data as soon as possible.

hongjianweng commented 3 years ago

Using HcoState%Spc(Inst%IDTNO)%MW_g to replace HcoState%Spc(Inst%IDTNO)%EmMW_g has now been merged into the dev/13.0.0 branch. #309 However, I found it still can't output kg N as unit of soil NO in version 13. The output is the same whether you set unit to kg or kgN.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the Stale bot from closing this issue.

msulprizio commented 3 years ago

However, I found it still can't output kg N as unit of soil NO in version 13. The output is the same whether you set unit to kg or kgN.

That is to be expected. We removed automatic unit conversions where possible. Fluxes in HEMCO are now in kg species/m2/s throughout. We encourage users to convert units via post-processing instead.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the Stale bot from closing this issue.

stale[bot] commented 3 years ago

Closing due to inactivity