Skip to content

Update the GCM with Chemistry for CF - #896

Open
jeromebarre wants to merge 25 commits into
developfrom
feature/update_geos_cf_model
Open

Update the GCM with Chemistry for CF#896
jeromebarre wants to merge 25 commits into
developfrom
feature/update_geos_cf_model

Conversation

@jeromebarre

@jeromebarre jeromebarre commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Description

  • Generalized meteorology replay source: replaced the hardcoded GEOS FP-only replay config (geosfp_exp / geosfp_path / REPLAY_ANA_EXPID: >>>SWELL_FP_EXP<<<) with a source-agnostic met_replay_exp / met_replay_root question pair and get_met_replay_files() / >>>SWELL_REPLAY_*<<< placeholders in prep_forecast_cf.py, so both GEOS FP and GEOS-IT replay archives work without code changes.

  • Renamed geos_cf_run_dirgeos_cf_rc_dir across task_questions.py, question_defaults.py, and the suite configs to better reflect that it points to the static RC directory, not a run directory.

  • Fixed c90 ocean exchange-grid mismatch: corrected OGCM.GRIDNAME / IM_WORLD / JM_WORLD in AGCM_c90.rc (was PE360x180-DE / 360 / 180, now PE2880x1440-DE / 2880 / 1440) to match the pinned BCRSLV tile file, fixing a MAPL_LocStreamMod.F90 GRIDINDEX assert crash at GCMInitialize.

  • Fixed geoschem_config.yml species list parsing crash: removed malformed #-SPECIES (no-space) commented-out complex-SOA species lines that GEOS-Chem's config reader mis-parsed as a literal species named #, causing a MAPL_Generic.F90 internal-state registration crash.

  • GEOS-Chem analysis species assembly: write_geoschem_analysis_yml() writes Spc001..Spc<nspecies> blocks for active species (sequentially numbered). Per-species analysis settings files are copied and referenced in GEOSCHEMchem_GridComp.rc.

  • Fixed HISTORY.rc: removed the grid_label: PE90x540-CF / PE360x2160-CF reference on the output collection that pointed to a grid never defined under GRID_LABELS:, causing a MAPL_HistoryGridComp.F90 assert. Output now stays on the native grid, matching the working reference configuration, with the corresponding dead placeholder logic removed from prep_forecast_cf.py.

  • Added fvcore_layout.rc and wired it into prepare_namelists()'s copied namelist file list.

  • Consolidated and cleaned gcm_run_geoscf_c90.j: replaced the resolution-specific script with a single gcm_run_geoscf.j shared across resolutions, driven by new sbatch_nodes / BCRSLV placeholders per resolution.

  • Removed obsolete tr_import / tr_internal from 3dvar_cf_cycle's clean/reset list and dropped tempo_no2_tropo from both 3dvar_cf and 3dvar_cf_cycle observation lists, keeping only tropomi_s5p_no2_tropo for now with the intent to have OMPS O3 and MLS O3 and TropOMI CO in a next PR. Hofx suite is keeping TEMPO NO2 with the older dates.

  • Updated runtime/decomposition settings: reduced HEARTBEAT_DT in CAP_c90.rc from 900 to 300, increased the c360 NX / NY / NUM_BACKEND_PES decomposition, and added NUM_BACKEND_PES: 8 for c90.

  • Updated suite configuration test dates and paths (start_cycle_point, final_cycle_point, geos_cf_install_dir, inc_template) to point to the current development builds and test window. This will affect 3dvar_cf and 3dvar_cf_cycle suites

Dependencies

  • waiting on GEOS-ESM/repo/pull/<pr_number>
  • waiting on GEOS-ESM/repo/pull/<pr_number>

Impact

  • repo
  • ...

@jeromebarre

jeromebarre commented Sep 10, 2026

Copy link
Copy Markdown
Contributor Author

@mranst the suite configs for 3dvar_cf and 3dvar_cf_cycle have been modified. This makes the CI on this PR fails for 3dvar_cf:
AssertionError: Rendered JEDI config for suite 3dvar_cf, /tmp/tmpr335hwc2/3dvar_cf-config/run/20230805T180000Z/geos_cf/jedi_variational_config.yaml did not match comparison version /home/runner/.local/lib/python3.11/site-packages/swell/test/jedi_configs/jedi_3dvar_cf_config.yaml. Please check the file diffs. If these differences are intentional, new mock test files can be generated using swell utility CreateMockConfigs```

Do I need to this update, if yes tell me how to do this. Or can you do it? Thanks

@mranst

mranst commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

@mranst the suite configs for 3dvar_cf and 3dvar_cf_cycle have been modified. This makes the CI on this PR fails for 3dvar_cf: AssertionError: Rendered JEDI config for suite 3dvar_cf, /tmp/tmpr335hwc2/3dvar_cf-config/run/20230805T180000Z/geos_cf/jedi_variational_config.yaml did not match comparison version /home/runner/.local/lib/python3.11/site-packages/swell/test/jedi_configs/jedi_3dvar_cf_config.yaml. Please check the file diffs. If these differences are intentional, new mock test files can be generated using swell utility CreateMockConfigs```

Do I need to this update, if yes tell me how to do this. Or can you do it? Thanks

You can run swell utility CreateMockConfigs to automatically update the mock configs (if using interactive install), then add them to your pr in a commit. If you're using a static install, add -a <path_to_swell>/src/swell/test/jedi_configs to set the path.

@jeromebarre

jeromebarre commented Sep 10, 2026

Copy link
Copy Markdown
Contributor Author

@mranst the suite configs for 3dvar_cf and 3dvar_cf_cycle have been modified. This makes the CI on this PR fails for 3dvar_cf: AssertionError: Rendered JEDI config for suite 3dvar_cf, /tmp/tmpr335hwc2/3dvar_cf-config/run/20230805T180000Z/geos_cf/jedi_variational_config.yaml did not match comparison version /home/runner/.local/lib/python3.11/site-packages/swell/test/jedi_configs/jedi_3dvar_cf_config.yaml. Please check the file diffs. If these differences are intentional, new mock test files can be generated using swell utility CreateMockConfigs```
Do I need to this update, if yes tell me how to do this. Or can you do it? Thanks

You can run swell utility CreateMockConfigs to automatically update the mock configs (if using interactive install), then add them to your pr in a commit. If you're using a static install, add -a <path_to_swell>/src/swell/test/jedi_configs to set the path.

I just did it. It removed the observation that it should remove but it didn't changed the dates accordingly.
Dates should change from 2023-08-05T18:00:00Z to 2025-04-02T06:00:00. Not sure that is somehting that matters and needs to be done manually?

@mranst

mranst commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

I just did it. It removed the observation that it should remove but it didn't changed the dates accordingly. Dates should change from 2023-08-05T18:00:00Z to 2025-04-02T06:00:00. Not sure that is somehting that matters and needs to be done manually?

It doesn't exactly matter, as they are generated in a dry-run mode and no checks for obs are performed, so the dates are really just placeholders. But, if you want to change it for consistency, you can make the change here:

defaults_dict = {}
marine_default_datetime = '20210701T120000Z'
atmosphere_default_datetime = '20251230T000000Z'
compo_default_datetime = '20230805T1800Z'
defaults_dict['3dvar_marine'] = {'datetime': marine_default_datetime,
'model': 'geos_marine',
'executable_type': 'variational'}
defaults_dict['3dvar_marine_cycle'] = defaults_dict['3dvar_marine'].copy()
defaults_dict['3dfgat_marine_cycle'] = {'datetime': marine_default_datetime,
'model': 'geos_marine',
'executable_type': 'fgat'}
defaults_dict['3dvar_atmos'] = {'datetime': atmosphere_default_datetime,
'model': 'geos_atmosphere',
'executable_type': 'variational'}
defaults_dict['3dfgat_atmos'] = {'datetime': atmosphere_default_datetime,
'model': 'geos_atmosphere',
'executable_type': 'variational'}
defaults_dict['hofx'] = {'datetime': atmosphere_default_datetime,
'model': 'geos_atmosphere',
'executable_type': 'hofx'}
defaults_dict['hofx_cf'] = {'datetime': '20230805T180000Z',
'model': 'geos_cf',
'executable_type': 'hofx'}
defaults_dict['3dvar_cf'] = {'datetime': '20230805T180000Z',
'model': 'geos_cf',
'executable_type': 'variational'}

@jeromebarre jeromebarre added the compo Atmospheric composition related issues label Sep 10, 2026
@mranst

mranst commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Tried the tier1 tests, 3dvar_cf fails in GetBackground/20250402T1200Z, it looks like maybe the experiment swell_test doesn't have entries for that period?

@jeromebarre

Copy link
Copy Markdown
Contributor Author

Tried the tier1 tests, 3dvar_cf fails in GetBackground/20250402T1200Z, it looks like maybe the experiment swell_test doesn't have entries for that period?

Good catch. It's becasue the backgrounds are generated with the GCM cycling. I will change the date for that suite to only one cycle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

compo Atmospheric composition related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants