Skip to content

Add 3D GFAS emission as optional fire inventory #3288

Open
yuanjianz wants to merge 8 commits into
geoschem:dev/14.8.0from
yuanjianz:feature/GFAS-3D
Open

Add 3D GFAS emission as optional fire inventory #3288
yuanjianz wants to merge 8 commits into
geoschem:dev/14.8.0from
yuanjianz:feature/GFAS-3D

Conversation

@yuanjianz

Copy link
Copy Markdown
Contributor

Name and Institution (Required)

Name: Yuanjian Zhang
Institution: WashU

Describe the update

This PR replaces the default fire inventory from GFED to GFAS with 3D emission profile.
Here we describe an updated implementation of GFAS to better represent the vertical profile of biomass burning emissions. Specifically, we assume a guassian distribution for fire emission around its injection height.

Expected changes

This implementation is motivated by Singh et al. (2025), who show how implementation of fire plume height improves the simulation of AOD and surface PM2.5 during North American wildfires.

Reference(s)

Singh, I., Martin, R.V., van Donkelaar, A., Li, C., Zhang, Y., Zhu, H., Zhang, D. and Lyapustin, A., 2025. Effects of Fire Plume Height on the Geophysical Estimation of Surface Fine Particulate Matter from Satellite Aerosol Optical Depth during North American Wildfires. ACS ES&T Air, 2(10), pp.2071-2080.

Related Github Issue

This PR is an different implementation than #2358.

@yantosca yantosca self-assigned this Apr 28, 2026
@yantosca yantosca self-requested a review April 28, 2026 14:48
@yantosca yantosca added category: Feature Request New feature or request topic: Configuration Files Related to GEOS-Chem configuration files topic: Emissions Related to emissions inventories used in GEOS-Chem labels Apr 28, 2026
@yantosca yantosca added this to the 14.8.0 milestone Apr 28, 2026

@yantosca yantosca left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yuanjianz thanks for this update. The file modifications look good.

Would it be possible to concatenate the daily files into monthly files? We have found that the largest I/O penalty is in the opening and regridding of files. The more files there are to open the more I/O operations there are. I am concerned that reading daily files would impact the performance of GEOS-Chem Classic.

Also tagging @msulprizio @lizziel

@yantosca

Copy link
Copy Markdown
Contributor

@yuanjianz: Question for you. Are the GFAS files produced in near-real time? If so then we might want to stick with the daily files, or else users might need to wait a month to get all the data. Am thinking of applications like the Integrated Methane Inversion. Let me know.

@yuanjianz

Copy link
Copy Markdown
Contributor Author

Yes! It should be produced in near-real time!

@yantosca

Copy link
Copy Markdown
Contributor

Thanks @yuanjianz, that's fine. In that case we'll keep it as daily. I'll approve the PR.

@yantosca yantosca self-requested a review April 29, 2026 19:02

@yantosca yantosca left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @yuanjianz, good to merge.

@yantosca

Copy link
Copy Markdown
Contributor

@yuanjianz is it OK if I rebase this atop the current 14.8.0 in development and push back to your branch? Will that affect your work?

@yuanjianz

Copy link
Copy Markdown
Contributor Author

No worries, please go ahead!

@yantosca

yantosca commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

@yuanjianz: I noticed that some of the biomass burning species that we currently have in GFED aren't included in GFAS. This might have a big impact on the benchmark results. Is this quantified in the paper that you cited?

Species only in GFED: MEK, C2H2, MTPA, NAP, EOH, MOH, FURA, PHEN, MVK, ACTA, MGLY, GLYX, RCHO

Species only in GFAS: CH3OH, CO2, CH4, pFe, DMS

Species in both: NO, CO, ALK4, ACET, ALD2, PRPE, C2H4, C3H8, CH2O, C2H6, SO2, NH3, BCPO, BCPI, OCPO, OCPI, POG1, POG2, BENZ, TOLU, XYLE, SOAP, ISOP

Just wanted to do my due diligence here.

@yantosca yantosca removed this from the 14.8.0 milestone Apr 30, 2026
@yuanjianz

Copy link
Copy Markdown
Contributor Author

@yantosca: Thanks for the question. The paper I mentioned did not quantify impacts other than aerosol. I may have a benchmark comparison somewhere. I will post it here if that's helpful. Or will GCST do the benchmark anyway for 14.8.0?

@yantosca

yantosca commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

@yuanjianz We'll do the benchmark but if you have a quickie plot handy to post on the PR that might be good.

Also I realized that we will have to update the HEMCO_Diagn.rc files to reflect the change in extension number. I've started on this...

@lizziel

lizziel commented May 4, 2026

Copy link
Copy Markdown
Contributor

@yuanjianz, have you tested this with both GC-Classic and GCHP and done a comparison? I notice in the PR that only ExtData.rc for fullchem is updated, and wonder if that has been run.

@yuanjianz

Copy link
Copy Markdown
Contributor Author

@lizziel my benchmark (still trying to find it) only uses GCHP. But I did update HEMCO_Config.rc entries for GCC in this PR.

@lizziel lizziel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this update. I put a few minor requests for change.

Comment thread run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon Outdated
Comment thread CHANGELOG.md

@lizziel lizziel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for making the updates @yuanjianz! I approve.

@yantosca

yantosca commented May 7, 2026

Copy link
Copy Markdown
Contributor

@yuanjianz: I was speaking w/ Daniel, who suggested that we need to also carry biomass emissions for the species that are in GFED but not in GFAS: MEK, C2H2, MTPA, NAP, EOH, FURA, PHEN, MVK, ACTA, MGLY, GLYX, RCHO. Would you be able to do this for us?

The GFED scale factors are located in hcox_gfed_include_gfed4.H. There are different scale factors for the different land types. But for GFAS I imagine we'd have to a scale factor from from either burnt carbon or CO2.

@yantosca

Copy link
Copy Markdown
Contributor

@yuanjianz never mind, I'm working on the scale factors

@yuanjianz

Copy link
Copy Markdown
Contributor Author

@yantosca Thanks for your help!

@yantosca

yantosca commented May 11, 2026

Copy link
Copy Markdown
Contributor

Hi @yuanjianz @lizziel: I am running into an error reading in the data when using the GFAS emissions in GC-Classic:

HEMCO: Opening /n/holylfs06/LABS/jacob_lab/Everyone/GEOS-CHEM/gcgrid/gcdata/ExtData/HEMCO/GFAS/v2025-05/2019/07/GFAS-smoke-20190701.nc

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

In Ncrd_4d_R4 #2:  NetCDF: Start+count exceeds dimension bound
     65536        17

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Code stopped from DO_ERR_OUT (in module NcdfUtil/m_do_err_out.F90) 

This is an error that was encountered in one of the netCDF I/O modules,
which indicates an error in writing to or reading from a netCDF file!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Also I updated the entries for GFAS and added scale factors for the GFED species. But I don't think these are causing the file read issue.

#==============================================================================
# --- GFAS biomass burning ---
#
# For species that were in GFED4 but not in GFAS, we have applied
# scale factors (w/r/t CO) based on the GFED4_CLIMATOLOGY data.
#==============================================================================
(((GFAS
0 GFAS_ACET  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c3h6ofire     2003-2025/1-12/1-31/0 EFY xyz kg/m2/s ACET  75       5 3
0 GFAS_ALD2  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c2h4ofire     2003-2025/1-12/1-31/0 EFY xyz kg/m2/s ALD2  75       5 3
0 GFAS_ALK4  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc hialkanesfire 2003-2025/1-12/1-31/0 EFY xyz kg/m2/s ALK4  75       5 3
0 GFAS_BCPI  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc bcfire        2003-2025/1-12/1-31/0 EFY xyz kg/m2/s BCPI  70/75    5 3
0 GFAS_BCPO  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc bcfire        2003-2025/1-12/1-31/0 EFY xyz kg/m2/s BCPO  71/75    5 3
0 GFAS_BENZ  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c6h6fire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s BENZ  75       5 3
0 GFAS_CO    $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc cofire        2003-2025/1-12/1-31/0 EFY xyz kg/m2/s CO    75       5 3
0 GFAS_ACR   -                                                       -             -                     -   -   -       ACR   350/75   5 3
0 GFAS_ACTA  -                                                       -             -                     -   -   -       ACTA  351/75   5 3
0 GFAS_C2H2  -                                                       -             -                     -   -   -       C2H2  352/75   5 3
0 GFAS_FURA  -                                                       -             -                     -   -   -       FURA  353/75   5 3
0 GFAS_GLYX  -                                                       -             -                     -   -   -       GLYX  354/75   5 3
0 GFAS_HCOOH -                                                       -             -                     -   -   -       HCOOH 355/75   5 3
0 GFAS_MEK   -                                                       -             -                     -   -   -       MEK   356/75   5 3
0 GFAS_MGLY  -                                                       -             -                     -   -   -       MGLY  357/75   5 3
0 GFAS_MTPA  -                                                       -             -                     -   -   -       MTPA  358/75   5 3
0 GFAS_MVK   -                                                       -             -                     -   -   -       MVK   359/75   5 3
0 GFAS_NAP   -                                                       -             -                     -   -   -       NAP   360/75   5 3
0 GFAS_PHEN  -                                                       -             -                     -   -   -       PHEN  361/75   5 3
0 GFAS_RCHO  -                                                       -             -                     -   -   -       RCHO  362/75   5 3
0 GFAS_STYR  -                                                       -             -                     -   -   -       STYR  363/75   5 3
0 GFAS_C2H4  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c2h4fire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s C2H4  75       5 3
0 GFAS_C2H6  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c2h6fire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s C2H6  75       5 3
0 GFAS_C3H8  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c3h8fire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s C3H8  75       5 3
0 GFAS_CH2O  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc ch2ofire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s CH2O  75       5 3
0 GFAS_CH3OH $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc ch3ohfire     2003-2025/1-12/1-31/0 EFY xyz kg/m2/s MOH   75       5 3
0 GFAS_CH4   $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc ch4fire       2003-2025/1-12/1-31/0 EFY xyz kg/m2/s CH4   75       5 3
0 GFAS_CO2   $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc co2fire       2003-2025/1-12/1-31/0 EFY xyz kg/m2/s CO2   75       5 3
0 GFAS_DMS   $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c2h6sfire     2003-2025/1-12/1-31/0 EFY xyz kg/m2/s DMS   75       5 3
0 GFAS_EOH   $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c2h5ohfire    2003-2025/1-12/1-31/0 EFY xyz kg/m2/s EOH   75       5 3
0 GFAS_ISOP  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c5h8fire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s ISOP  75       5 3
0 GFAS_NH3   $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc nh3fire       2003-2025/1-12/1-31/0 EFY xyz kg/m2/s NH3   75       5 3
0 GFAS_NO    $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc noxfire       2003-2025/1-12/1-31/0 EFY xyz kg/m2/s NO    75       5 3
0 GFAS_OCPI  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc ocfire        2003-2025/1-12/1-31/0 EFY xyz kg/m2/s OCPI  72/75    5 3
0 GFAS_OCPO  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc ocfire        2003-2025/1-12/1-31/0 EFY xyz kg/m2/s OCPO  73/75    5 3
0 GFAS_POG1  -                                                       -             -                     -   -   -       POG1  74/76/75 5 3
0 GFAS_POG2  -                                                       -             -                     -   -   -       POG2  74/77/75 5 3
0 GFAS_pFe   $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc so2fire       2003-2025/1-12/1-31/0 EFY xyz kg/m2/s pFe   75/66    5 3
0 GFAS_PRPE1 $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc hialkenesfire 2003-2025/1-12/1-31/0 EFY xyz kg/m2/s PRPE  75       5 3
0 GFAS_PRPE2 $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c3h6fire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s PRPE  75       5 3
0 GFAS_SO2   $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc so2fire       2003-2025/1-12/1-31/0 EFY xyz kg/m2/s SO2   75       5 3
0 GFAS_SOAP  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc cofire        2003-2025/1-12/1-31/0 EFY xyz kg/m2/s SOAP  75/281   5 3
0 GFAS_TOLU  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c7h8fire      2003-2025/1-12/1-31/0 EFY xyz kg/m2/s TOLU  75       5 3
0 GFAS_XYLE  $ROOT/GFAS/v2025-05/$YYYY/$MM/GFAS-smoke-$YYYY$MM$DD.nc c8h10fire     2003-2025/1-12/1-31/0 EFY xyz kg/m2/s XYLE  75       5 3
)))GFAS

... 

#==============================================================================
# --- GFED4 to GFAS emission factors (monthly mean) ---
#
# These are needed for certain species that are in GFED4 but not in GFAS.
# Factors (relative to CO) were generated from the GFED4_CLIMATOLOGY.
#==============================================================================
(((GFAS
350 GFED4_TO_GFAS_ACR   6.39749e-03/6.20227e-03/5.94238e-03/5.64619e-03/4.42609e-03/4.15477e-03/3.80694e-03/4.44921e-03/4.93859e-03/5.55772e-03/6.07656e-03/6.34820e-03 - */1/1/0 C xy 1 1
351 GFED4_TO_GFAS_ACTA  3.41277e-02/3.38923e-02/3.45653e-02/3.96220e-02/3.40438e-02/3.09550e-02/3.06457e-02/3.07750e-02/2.97932e-02/3.23636e-02/3.44937e-02/3.35070e-02 - */1/1/0 C xy 1 1
352 GFED4_TO_GFAS_C2H2  3.98423e-03/3.79296e-03/3.55676e-03/3.36024e-03/2.91970e-03/2.86895e-03/2.72160e-03/2.98063e-03/3.06215e-03/3.36610e-03/3.74767e-03/4.02345e-03 - */1/1/0 C xy 1 1
353 GFED4_TO_GFAS_FURA  8.16994e-03/8.09806e-03/8.24765e-03/9.62641e-03/8.20648e-03/7.34930e-03/7.25318e-03/7.28675e-03/7.19630e-03/7.82505e-03/8.36209e-03/8.07918e-03 - */1/1/0 C xy 1 1
354 GFED4_TO_GFAS_GLYX  4.45527e-03/4.45423e-03/4.41829e-03/4.25076e-03/4.45400e-03/4.57399e-03/4.58951e-03/4.56926e-03/4.56245e-03/4.48504e-03/4.42279e-03/4.47312e-03 - */1/1/0 C xy 1 1
355 GFED4_TO_GFAS_HCOOH 3.63992e-03/3.69033e-03/4.23188e-03/5.38145e-03/5.94800e-03/5.76582e-03/6.27409e-03/5.49677e-03/3.92972e-03/3.62016e-03/3.89719e-03/3.59749e-03 - */1/1/0 C xy 1 1
356 GFED4_TO_GFAS_MEK   2.51839e-03/2.72404e-03/3.12801e-03/3.32461e-03/2.28266e-03/1.79858e-03/1.67232e-03/2.07568e-03/2.42858e-03/2.64014e-03/2.67567e-03/2.29732e-03 - */1/1/0 C xy 1 1
357 GFED4_TO_GFAS_MGLY  5.29486e-03/5.10406e-03/4.90839e-03/5.09673e-03/4.70454e-03/4.63184e-03/4.57899e-03/4.59869e-03/4.28949e-03/4.64506e-03/5.04617e-03/5.27605e-03 - */1/1/0 C xy 1 1
358 GFED4_TO_GFAS_MTPA  1.82825e-03/1.73659e-03/2.22979e-03/3.82106e-03/6.44630e-03/6.88672e-03/7.98668e-03/6.05174e-03/2.86886e-03/1.88388e-03/2.11145e-03/2.01790e-03 - */1/1/0 C xy 1 1
359 GFED4_TO_GFAS_MVK   3.30928e-03/3.27024e-03/3.26404e-03/3.22649e-03/2.18246e-03/1.83970e-03/1.60373e-03/2.08364e-03/2.49451e-03/2.91255e-03/3.21185e-03/3.21688e-03 - */1/1/0 C xy 1 1
360 GFED4_TO_GFAS_NAP   2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04/2.61905e-04 - */1/1/0 C xy 1 1
361 GFED4_TO_GFAS_PHEN  5.57873e-03/5.23695e-03/4.87955e-03/5.96921e-03/5.71180e-03/5.51150e-03/5.57615e-03/5.11641e-03/4.33623e-03/4.83028e-03/5.40141e-03/5.65810e-03 - */1/1/0 C xy 1 1
362 GFED4_TO_GFAS_RCHO  1.58656e-02/1.53300e-02/1.45586e-02/1.43528e-02/1.16213e-02/1.09386e-02/1.01548e-02/1.13880e-02/1.24669e-02/1.39850e-02/1.51875e-02/1.58352e-02 - */1/1/0 C xy 1 1
363 GFED4_TO_GFAS_STYR  6.79343e-04/6.25924e-04/5.68759e-04/6.53689e-04/7.81553e-04/8.25916e-04/8.66420e-04/7.57642e-04/5.76306e-04/5.80106e-04/6.42521e-04/7.07672e-04 - */1/1/0 C xy 1 1
)))GFAS

@yantosca

Copy link
Copy Markdown
Contributor

Ah OK. It's because C2H5OH (EOH) is 2D and not 3D. My bad.

@yuanjianz

yuanjianz commented May 11, 2026

Copy link
Copy Markdown
Contributor Author

Emmm... All species should be 3D in the smoke as we apply the same vertical structure to all needed species. It seems I missed the c2h5ohfire in my processing code.

GCHP does not complain about this at all, which is why I missed this. I will need to modify the code and reprocess the files. Stay tuned.

I see, these species are not in the original GFAS species. I did not apply this 3D structure to all species but only the needed species in the original GFAS to save space since daily 3D files are quite large. Do you think I should reprocess the files so that every species get a 3D profile instead? @yantosca

@yantosca yantosca requested a review from lizziel May 11, 2026 22:04
@yantosca

Copy link
Copy Markdown
Contributor

@yuanjianz: I think we're OK. I've computed scale factors (total emissions of species / total emissions of CO) for each month from the GFED4_CLIMATOLOGY. Let's keep the files as-is.

@msulprizio @lizziel: I just rebased this PR atop 14.8.0-alpha.9 and added scale factors for the GFED-only species. Am running integration tests and will post the results here. Please re-review this PR at your convenience.

@yantosca

Copy link
Copy Markdown
Contributor

@yuanjianz @lizziel @mcdon1718-h: FYI, the additional GFAS entries in ExtData.rc caused my test GCHP simulation to fail with an out-of-memory error (due to the memory leak issue).

[2026-05-12T11:45:19.054] error: Detected 2 oom_kill events in StepId=12570656.0. Some of the step tasks have been OOM Killed.
srun: error: holy8a27110: task 20: Out Of Memory
[2026-05-12T11:45:20.044] error:  mpi/pmix_v5: _errhandler: holy8a27110 [0]: pmixp_client_v2.c:226: Error handler invoked: status = -61, source = [slurm.pmix.12570656.0:20]
[2026-05-12T11:45:20.651] error: *** STEP 12570656.0 ON holy8a27110 CANCELLED AT 2026-05-12T11:45:20 DUE to SIGNAL Killed ***
srun: Job step aborted: Waiting up to 32 seconds for job step to finish.
[2026-05-12T11:45:23.985] error:  mpi/pmix_v5: _errhandler: holy8a27110 [0]: pmixp_client_v2.c:226: Error handler invoked: status = -61, source = [slurm.pmix.12570656.0:23]
[2026-05-12T11:45:26.954] error:  mpi/pmix_v5: _errhandler: holy8a27110 [0]: pmixp_client_v2.c:226: Error handler invoked: status = -61, source = [slurm.pmix.12570656.0:16]

In my gchp.run script I was using:

#!/bin/bash

#SBATCH -n 24
#SBATCH -N 1
#SBATCH -c 1
#SBATCH -t 0-0:30
#SBATCH -p sapphire,huce_ice,huce_cascade,seas_compute,shared
#SBATCH --mem=180000
#SBATCH --mail-type=END

I will need to bump up the amount of memory in the gchp.run script that we use on Harvard Cannon, and also in the GCHP integration tests (at least temporarily until we fix the memory leak).

@yantosca

Copy link
Copy Markdown
Contributor

@yuanjianz @lizziel: I had to bump up the memory requested from 180GB to 225GB and then the job ran OK. Log files from the 225GB run are here. There is a huge jump in memory used between 00:00z and 00:10z, presumably due to ExtData I/O.

Log files:
allPEs.txt.log
gchp.20190701_0000z.txt.log
slurm-12573398.txt.txt

@yantosca

Copy link
Copy Markdown
Contributor

Also here are log files from an "out-of-the-box" run that used 180GB in the run script. This one failed.
allPEs.txt
gchp.20190701_0000z.txt
slurm-12579324.txt

@yantosca

yantosca commented May 14, 2026

Copy link
Copy Markdown
Contributor

@yuanjianz: I noticed that there is some roundoff error in the longitude coordinate in the GFAS-smoke files:

 lon = -179.95, -179.85, -179.75, -179.65, -179.55, -179.45, -179.35, 
    -179.25, -179.15, -179.05, -178.95, -178.85, -178.75, -178.65, -178.55, 
    -178.45, -178.35, -178.25, -178.15, -178.05, -177.95, -177.85, -177.75, 
    -177.65, -177.55, -177.45, -177.35, -177.25, -177.15, -177.05, -176.95, 
 ...
    -100.05, -99.95001, -99.85001, -99.75, -99.64999, -99.54999, -99.45001, 
    -99.35001, -99.25, -99.14999, -99.04999, -98.95001, -98.85001, -98.75, 
    -98.64999, -98.54999, -98.45001, -98.35001, -98.25, -98.14999, -98.04999, 
    -97.95001, -97.85001, -97.75, -97.64999, -97.54999, -97.45001, -97.35001, 
    -97.25, -97.14999, -97.04999, -96.95001, -96.85001, -96.75, -96.64999, 
    -96.54999, -96.45001, -96.35001, -96.25, -96.14999, -96.04999, -95.95001, 
    -95.85001, -95.75, -95.64999, -95.54999, -95.45001, -95.35001, -95.25, 
    -95.14999, -95.04999, -94.95001, -94.85001, -94.75, -94.64999, -94.54999, 
    -94.45001, -94.35001, -94.25, -94.14999, -94.04999, -93.95001, -93.85001, 
    -93.75, -93.64999, -93.54999, -93.45001, -93.35001, -93.25, -93.14999, 
    -93.04999, -92.95001, -92.85001, -92.75, -92.64999, -92.54999, -92.45001, 
    -92.35001, -92.25, -92.14999, -92.04999, -91.95001, -91.85001, -91.75, 
    -91.64999, -91.54999, -91.45001, -91.35001, -91.25, -91.14999, -91.04999, 
    -90.95001, -90.85001, -90.75, -90.64999, -90.54999, -90.45001, -90.35001, 
    -90.25, -90.14999, -90.04999, -89.95001, -89.85001, -89.75, -89.64999, 
    -89.54999, -89.45001, -89.35001, -89.25, -89.14999, -89.04999, -88.95001, 
    -88.85001, -88.75, -88.64999, -88.54999, -88.45001, -88.35001, -88.25, 
    -88.14999, -88.04999, -87.95001, -87.85001, -87.75, -87.64999, -87.54999, 
    -87.45001, -87.35001, -87.25, -87.14999, -87.04999, -86.95001, -86.85001, 
    -86.75, -86.64999, -86.54999, -86.45001, -86.35001, -86.25, -86.14999, 
    -86.04999, -85.95001, -85.85001, -85.75, -85.64999, -85.54999, -85.45001, 
    -85.35001, -85.25, -85.14999, -85.04999, -84.95001, -84.85001, -84.75, 
    -84.64999, -84.54999, -84.45001, -84.35001, -84.25, -84.14999, -84.04999, 
    -83.95001, -83.85001, -83.75, -83.64999, -83.54999, -83.45001, -83.35001, 
    -83.25, -83.14999, -83.04999, -82.95001, -82.85001, -82.75, -82.64999, 
    -82.54999, -82.45001, -82.35001, -82.25, -82.14999, -82.04999, -81.95001, 
    -81.85001, -81.75, -81.64999, -81.54999, -81.45001, -81.35001, -81.25, 
    -81.14999, -81.04999, -80.95001, -80.85001, -80.75, -80.64999, -80.54999, 
    -80.45001, -80.35001, -80.25, -80.14999, -80.04999, -79.95001, -79.85001, 
    -79.75, -79.64999, -79.54999, -79.45001, -79.35001, -79.25, -79.14999, 
    -79.04999, -78.95001, -78.85001, -78.75, -78.64999, -78.54999, -78.45001, 
    -78.35001, -78.25, -78.14999, -78.04999, -77.95001, -77.85001, -77.75, 
    -77.64999, -77.54999, -77.45001, -77.35001, -77.25, -77.14999, -77.04999, 
    -76.95001, -76.85001, -76.75, -76.64999, -76.54999, -76.45001, -76.35001, 
    -76.25, -76.14999, -76.04999, -75.95001, -75.85001, -75.75, -75.64999, 
    -75.54999, -75.45001, -75.35001, -75.25, -75.14999, -75.04999, -74.95001, 
    -74.85001, -74.75, -74.64999, -74.54999, -74.45001, -74.35001, -74.25, 
    -74.14999, -74.04999, -73.95001, -73.85001, -73.75, -73.64999, -73.54999, 
    -73.45001, -73.35001, -73.25, -73.14999, -73.04999, -72.95001, -72.85001, 
    -72.75, -72.64999, -72.54999, -72.45001, -72.35001, -72.25, -72.14999, 
    -72.04999, -71.95001, -71.85001, -71.75, -71.64999, -71.54999, -71.45001, 
    -71.35001, -71.25, -71.14999, -71.04999, -70.95001, -70.85001, -70.75, 
    -70.64999, -70.549
...

I wonder if this may be causing issues with the regridding. Is it possible for you to round these values off to say 3 or 4 decimal places?

Sorry for not catching this sooner.

@yantosca

Copy link
Copy Markdown
Contributor

@yuanjianz @lizziel @msulprizio: I was able to do a GC-Classsic benchmark simulation reading the GFAS-3D data. As I feared the reading of the daily files causes a huge increase in the time spent in HEMCO I/O:

Timer                              Ref [%]        Dev [%]
-------------------------------------------------------------------------------
GEOS-Chem                          100.000        100.000
HEMCO                               14.038         32.624  <<<
All chemistry                       34.493         29.973
=> Gas-phase chem                   18.029         17.112
=> Photolysis                        4.459          3.153
=> Aerosol chem                     10.449          8.309
=> Linearized chem                   0.139          0.128
Transport                           10.627          7.377
Convection                          12.351          7.244
Boundary layer mixing                7.768          8.678
Dry deposition                       0.387          0.288
Wet deposition                       5.799          2.938
Diagnostics                         11.257          7.934
Unit conversions                     3.752          3.239

Also there are huge percentage differences in the emission totals. I'm not sure this is to be expected,,,perhaps GFED overestimates?

#########################################################################################################
### Emissions totals for species ACET [Tg]                                                            ###
### Ref = gcc.14.8.0-alpha.9                                                                          ###
### Dev = gcc+GFAS3D                                                                                  ###
#########################################################################################################
                                    Ref                 Dev           Dev - Ref              % diff
ACET BioBurn       :           0.726313            0.315148           -0.411164          -56.609827
ACR BioBurn        :           0.321235            0.171415           -0.149820          -46.638725 scaled from GFED
ACTA BioBurn       :           2.341801            1.379561           -0.962239          -41.089719 scaled from GFED
ALD2 BioBurn       :           0.702363            0.455461           -0.246902          -35.152994 
ALK4 BioBurn       :           0.165693            0.107460           -0.058232          -35.144848 
BCPI BioBurn       :           0.066152            0.053927           -0.012224          -18.479314 
BCPO BioBurn       :           0.264606            0.215709           -0.048897          -18.479314 
BENZ BioBurn       :           0.330388            0.227760           -0.102627          -31.062750 
C2H2 BioBurn       :           0.223354            0.122532           -0.100821          -45.139756 scaled from GFED
C2H4 BioBurn       :           0.871743            0.558508           -0.313235          -35.932037
C2H6 BioBurn       :           0.528776            0.293738           -0.235038          -44.449483
C3H8 BioBurn       :           0.173225            0.122386           -0.050839          -29.348645 
C4H6 BioBurn       :           0.074030            0.000000           -0.074030         -100.000000 missing emissions?
CH2O BioBurn       :           1.151798            0.755056           -0.396742          -34.445461 
CO BioBurn         :          75.243178           45.015513          -30.227665          -40.173297 
EOH BioBurn        :           0.036752            0.022000           -0.014752          -40.138525 scaled from GFED
FURA BioBurn       :           0.550316            0.326515           -0.223802          -40.667814 scaled from GFED
GLYX BioBurn       :           0.344750            0.206597           -0.138153          -40.073310 scaled from GFED
HCOOH BioBurn      :           0.443029            0.282371           -0.160658          -36.263465 scaled from GFED
ISOP BioBurn       :           0.071656            0.047521           -0.024134          -33.681066 
MEK BioBurn        :           0.132533            0.075300           -0.057233          -43.183995  
MGLY BioBurn       :           0.360321            0.206130           -0.154190          -42.792516 scaled from GFED
MOH BioBurn        :           1.434252            0.983033           -0.451219          -31.460243 
MTPA BioBurn       :           0.536370            0.359389           -0.176981          -32.996041 scaled from GFED
MVK BioBurn        :           0.140951            0.072223           -0.068728          -48.760153 scaled from GFED
NH3 BioBurn        :           1.163269            0.734606           -0.428663          -36.849834  
NO BioBurn         :           1.882279            1.417948           -0.464331          -24.668549   
OCPI BioBurn       :           2.162043            1.542145           -0.619898          -28.671846   
OCPO BioBurn       :           2.162043            1.542145           -0.619898          -28.671846   
PHEN BioBurn       :           0.425323            0.250998           -0.174326          -40.986626 scaled from GFED 
PRPE BioBurn       :           0.719410            0.491188           -0.228222          -31.723466   
RCHO BioBurn       :           0.838261            0.457217           -0.381044          -45.456501 scaled from GFED  
SO2 BioBurn        :           0.555350            0.348990           -0.206360          -37.158580   
SOAP BioBurn       :           0.978164            0.585202           -0.392962          -40.173429   
STYR BioBurn       :           0.064409            0.038997           -0.025412          -39.454749 scaled from GFED  
TOLU BioBurn       :           0.197594            0.156072           -0.041523          -21.014053   
XYLE BioBurn       :           0.073871            0.016703           -0.057168          -77.389288   

Also here is the difference plot for biomass burning emissions:

BioBurn_Emissions.pdf

Are these differences consistent with what you saw?

I'm thinking that with the large performance hit (and memory issue in GCHP) we should probably not bring this into 14.8.0 as the default setting. (We can add it as an option). What do you think?

@msulprizio

Copy link
Copy Markdown
Contributor

Thanks @yantosca! I think it makes sense to bring this in as an option for now since so much work has been put into it. We can discuss with the Emissions WG and others to see if we should turn it on as a default in a later pull request.

@yuanjianz

yuanjianz commented May 14, 2026

Copy link
Copy Markdown
Contributor Author

@yantosca I only looked at OC/BC emission before and it is expected for GFAS to have less emissions than GFED. As for other species, some studies have found GFAS to be of lower bound of BB emissions as well. An example is https://acp.copernicus.org/articles/23/5969/2023/, where they use a 3 times scaling factor to constrain its emission. But this is more like a scientific question that needs discussion for Emission WG.

A possible reason for the bad performance for HEMCO to read these files are probably because they are heavily compressed, since they are basically 3D daily 36L profiles at 0.1x0.1 degree, which are a lot.

@yuanjianz yuanjianz changed the title Update default fire inventory to 3D GFAS emission Add 3D GFAS as optional fire inventory emission May 14, 2026
@yuanjianz yuanjianz changed the title Add 3D GFAS as optional fire inventory emission Add 3D GFAS emission as optional fire inventory May 14, 2026
@yantosca yantosca changed the base branch from main to dev/14.8.0 May 14, 2026 18:14
@yantosca yantosca force-pushed the feature/GFAS-3D branch 2 times, most recently from b8cbe76 to 6fa87ee Compare May 14, 2026 18:21
@yantosca

yantosca commented May 14, 2026

Copy link
Copy Markdown
Contributor

For now I have reverted GFED to the default biomass burning option while keeping the GFAS updates in the configuration files.

I've also made some documentation updates to the HEMCO_Diagn.rc template files to make it clear how to change ExtNr, Cat, Hier when switching between offline & online emissions. This was prompted by issue #3299.

yuanjianz and others added 8 commits May 21, 2026 10:01
run/CESM/HEMCO_Config.rc
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
run/WRF/fullchem/HEMCO_Config.rc
- Alphabetized GFAS emissions entries
- Apply scale factors to GFAS CO for ACR, ACTA, C2H2, FURA, GLYX, HCOOH,
  MEK, MGLY, MTPA, MVK, NAP, PHEN, RCHO, STYR
- Restored EOH (aka C2H5OH aka Ethanol) GFAS biomass emissions
- Added monthly-mean scale factors based on GFED4_CLIMATOLOGY

run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.aerosol
run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem
run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem
- Changed ExtNr from 111 to 5 and Cat from -1 to 3

run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol
- Alphabetized GFAS entries

run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem
- Alphabetized GFAS entries
- Restored EOH (aka C2H5OH aka Ethanol) GFAS biomass emissions

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
run/CESM/HEMCO_Config.rc
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
run/WRF/fullchem/HEMCO_Config.rc
- Do not read GFAS_EOH from the data files, as this field is only 2D.
  Instead, for GFAS_EOH, apply a scale factor from GFAS_CO

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
run/GCHP/ExtData.rc.templates/ExtData.rc.carbon
- Add entries for GFAS_CH4 and GFAS_CO2 (GFAS_CO was there already)

run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon
run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon
- Add entries for GFAS_CH4 and GFAS_CO2 (GFAS_CO was there already)
- Use 2100 as the end date in the time range so we don't need to keep
  updating it as new emissions are added.
- Removed GFAS_EMITL scale factor, it's no longer needed.

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
run/CESM/HEMCO_Config.rc
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
run/WRF/fullchem/HEMCO_Config.rc
- Change time range from 2003-2025 to 2023-2100 for GFAS biomass
  burning entries.  Because GFAS data is near-real-time, this will
  prevent us having to keep updating HEMCO_Config.rc files when
  new GFAS data becomes available.

The HEMCO_Config.rc.carbon files were updated in the previous commit.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
run/shared/settings/gcap2_hemco.txt
run/shared/settings/gmao_hemco.txt
- Changed RUNDIR_GFED_EXT from "off" to "on "
- Changed RUNDIR_GFAS from "true " to "false"

run/CESM/HEMCO_Config.rc
run/WRF/fullchem/HEMCO_Config.rc
- Turn off GFAS and turn on GFED4

Added documentation with instructions on how to set ExtNr, Cat, Hier
when switching between offline & online emissions in:
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.aerosol
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.aerosol.onlineE
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.carbon
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem.onlineE
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.carbon
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem
- run/WRF/fullchem/HEMCO_Diagn.rc

Also removed revision history from documentation headers in these files:
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.metals
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.POPs
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.tagO3
- run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.TransportTracers
- run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.TransportTracers

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
yantosca added a commit to geoschem/HEMCO that referenced this pull request Jun 11, 2026
This merge brings PR #362 (HEMCO extension: 3D GFAS biomass
burning emission, by @yuanjianz) into the HEMCO 3.13.0
development stream.

PR #362 adds a HEMCO extension to address the performance issue
of reading all GFAS species in their full 3D profiles (see details
in geoschem/geos-chem#3288). This PR aims to deal with this issue
by only reading 3D profiles for a reference species (e.g. CO) and
applying this vertical structure to all other species.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
yantosca added a commit to geoschem/GCClassic that referenced this pull request Jun 11, 2026
This commit informs the GCClassic superproject about the following
commits that were pushed to the GitHub geoschem/HEMCO repository:

e3396c3 Merge PR 362: HEMCO extension for 3D GFAS biomass

PR #362 adds a HEMCO extension to address the performance issue
of reading all GFAS species in their full 3D profiles (see details
in geoschem/geos-chem#3288). This PR aims to deal with this issue
by only reading 3D profiles for a reference species (e.g. CO) and
applying this vertical structure to all other species.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
yantosca added a commit to geoschem/GCHP that referenced this pull request Jun 11, 2026
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

e3396c3 Merge PR 362: HEMCO extension for 3D GFAS biomass

PR #362 adds a HEMCO extension to address the performance issue
of reading all GFAS species in their full 3D profiles (see details
in geoschem/geos-chem#3288). This PR aims to deal with this issue
by only reading 3D profiles for a reference species (e.g. CO) and
applying this vertical structure to all other species.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: Feature Request New feature or request topic: Configuration Files Related to GEOS-Chem configuration files topic: Emissions Related to emissions inventories used in GEOS-Chem

Projects

None yet

Development

Successfully merging this pull request may close these issues.

How to Update ExtNr and Cat in HEMCO_Diagn.rc When Switching Emissions from Offline to Online Mode

4 participants