Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Impose boundary conditions at every timestep in GC-Classic nested-grid simulations #1895

Merged
merged 2 commits into from
Aug 1, 2023

Conversation

jimmielin
Copy link
Contributor

Name and Institution (Required)

Name: Haipeng Lin
Institution: Harvard Univ.

Confirm you have reviewed the following documentation

Describe the update

Previously, @nicholasbalasus reported artifacting in the buffer region due to the transport code still running within the buffer zone. Thus, a change to impose boundary conditions at every time step in the buffer zone, as opposed to only at every 3-hours, will resolve this artifact and prevent transport effects from taking place.

This will allow for a consistent flow of boundary conditions between the 3-hourly boundary condition updates.

A new module set_boundary_conditions_mod.F90 has been introduced to separate non-HEMCO logic from hco_utilities_gc_mod.F90 and allow for it to be called more frequently than the emissions/3-hourly BC timesteps.

Expected changes

Mainly, species concentrations in the buffer zone will be affected. They will no longer reflect transport artifacts and instead more closely reflect the underlying boundary conditions provided to the nested-grid model.

@nicholasbalasus has as always provided a useful figure to illustrate the effects:
image

Notice the removal of transport artifacts (top-left panel - old version) in the new version (top-middle panel)

Reference(s)

N/A

Related Github Issue(s)

No prior issue reported

Steps to reproduce: run any GC-Classic nested-grid simulation and observe buffer zone which includes transport artifacts. Because the boundary conditions in the buffer zone should be provided from a coarse simulation, this region should not have any 'extraneous' detail introduced by finer-scale processes in the nested-grid simulation.

…d simulations.

This will prevent transport in the buffer region to accumulate and allow for a consistent flow of boundary conditions between the 3-hourly boundary condition updates.

A new module set_boundary_conditions_mod.F90 has been introduced to separate non-HEMCO logic from hco_utilities_gc_mod.F90 and allow for it to be called more frequently than the emissions/3-hourly BC timesteps.

Reported-by: Nick Balasus <[email protected]>
Signed-off-by: Haipeng Lin <[email protected]>
@yantosca yantosca requested review from msulprizio and yantosca August 1, 2023 15:23
@yantosca yantosca self-assigned this Aug 1, 2023
@yantosca yantosca added category: Bug Something isn't working topic: Nested Grid Simulation Related to GEOS-Chem nested model simulations labels Aug 1, 2023
@yantosca yantosca added this to the 14.2.1 milestone Aug 1, 2023
@yantosca yantosca removed the request for review from msulprizio August 1, 2023 15:24
Copy link
Contributor

@yantosca yantosca left a comment

Choose a reason for hiding this comment

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

Looks good to merge. I can try to make the loop in set_boundary_conditions more efficient by collapsing over N and J.

RETURN
ENDIF

! Loop over advected species
Copy link
Contributor

Choose a reason for hiding this comment

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

We can probably collapse the N and L loops for better efficiency. I can add this.

@yantosca yantosca added category: Bug Fix Fixes a previously-reported bug and removed category: Bug Something isn't working labels Aug 1, 2023
@yantosca
Copy link
Contributor

yantosca commented Aug 1, 2023

After merging atop PR #1896, all GCHP integration tests passed (except for TOMAS, which is a known issue).

==============================================================================
GEOS-Chem Classic: Execution Test Results

GCClassic #7df24e0 GEOS-Chem submod update: Merge PR #1896 (Use singleton time dims)
GEOS-Chem #f990a769d Merge PR #1895 (Impose nested-grid BCs at every timestep)
HEMCO     #477c7e8 Merge PR #229 (Fix incorrect longitude definitions for HEMCO standalone)

Using 24 OpenMP threads
Number of execution tests: 26

Submitted as SLURM job: 64900205
==============================================================================
 
Execution tests:
------------------------------------------------------------------------------
gc_05x0625_NA_47L_merra2_CH4........................Execute Simulation....PASS
gc_05x0625_NA_47L_merra2_fullchem...................Execute Simulation....PASS
gc_4x5_47L_merra2_fullchem..........................Execute Simulation....PASS
gc_4x5_47L_merra2_fullchem_TOMAS15..................Execute Simulation....FAIL
gc_4x5_47L_merra2_fullchem_TOMAS40..................Execute Simulation....FAIL
gc_4x5_merra2_aerosol...............................Execute Simulation....PASS
gc_4x5_merra2_carbon................................Execute Simulation....PASS
gc_4x5_merra2_CH4...................................Execute Simulation....PASS
gc_4x5_merra2_CO2...................................Execute Simulation....PASS
gc_4x5_merra2_fullchem..............................Execute Simulation....PASS
gc_4x5_merra2_fullchem_aciduptake...................Execute Simulation....PASS
gc_4x5_merra2_fullchem_APM..........................Execute Simulation....PASS
gc_4x5_merra2_fullchem_benchmark....................Execute Simulation....PASS
gc_4x5_merra2_fullchem_complexSOA...................Execute Simulation....PASS
gc_4x5_merra2_fullchem_complexSOA_SVPOA.............Execute Simulation....PASS
gc_4x5_merra2_fullchem_LuoWd........................Execute Simulation....PASS
gc_4x5_merra2_fullchem_marinePOA....................Execute Simulation....PASS
gc_4x5_merra2_fullchem_RRTMG........................Execute Simulation....PASS
gc_4x5_merra2_Hg....................................Execute Simulation....PASS
gc_4x5_merra2_metals................................Execute Simulation....PASS
gc_4x5_merra2_POPs_BaP..............................Execute Simulation....PASS
gc_4x5_merra2_tagCH4................................Execute Simulation....PASS
gc_4x5_merra2_tagCO.................................Execute Simulation....PASS
gc_4x5_merra2_tagO3.................................Execute Simulation....PASS
gc_4x5_merra2_TransportTracers......................Execute Simulation....PASS
gc_4x5_merra2_TransportTracers_LuoWd................Execute Simulation....PASS
 
Summary of test results:
------------------------------------------------------------------------------
Execution tests passed: 24
Execution tests failed: 2
Execution tests not yet completed: 0

Furthermore, all integration tests were identical to. PR #1896, except:

  • gc_05x0625_NA_47L_merra2_CH4 diagnostic outputs (fixed by this PR)
  • gc_05x0625_NA_47L_merra2_fullchem diagnostic outputs (fixed by this PR)
  • TOMAS (fails tests)
  • APM (parallelization issue)
  • RRTMG diagnostic output (parallelization issue)
==============================================================================
GEOS-Chem Classic: Execution Test Results

GCClassic #7df24e0 GEOS-Chem submod update: Merge PR #1896 (Use singleton time dims)
GEOS-Chem #f990a769d Merge PR #1895 (Impose nested-grid BCs at every timestep)
HEMCO     #477c7e8 Merge PR #229 (Fix incorrect longitude definitions for HEMCO standalone)

Using 24 OpenMP threads
Number of execution tests: 26

Submitted as SLURM job: 64900205
==============================================================================
 
Execution tests:
------------------------------------------------------------------------------
gc_05x0625_NA_47L_merra2_CH4........................Execute Simulation....PASS
gc_05x0625_NA_47L_merra2_fullchem...................Execute Simulation....PASS
gc_4x5_47L_merra2_fullchem..........................Execute Simulation....PASS
gc_4x5_47L_merra2_fullchem_TOMAS15..................Execute Simulation....FAIL
gc_4x5_47L_merra2_fullchem_TOMAS40..................Execute Simulation....FAIL
gc_4x5_merra2_aerosol...............................Execute Simulation....PASS
gc_4x5_merra2_carbon................................Execute Simulation....PASS
gc_4x5_merra2_CH4...................................Execute Simulation....PASS
gc_4x5_merra2_CO2...................................Execute Simulation....PASS
gc_4x5_merra2_fullchem..............................Execute Simulation....PASS
gc_4x5_merra2_fullchem_aciduptake...................Execute Simulation....PASS
gc_4x5_merra2_fullchem_APM..........................Execute Simulation....PASS
gc_4x5_merra2_fullchem_benchmark....................Execute Simulation....PASS
gc_4x5_merra2_fullchem_complexSOA...................Execute Simulation....PASS
gc_4x5_merra2_fullchem_complexSOA_SVPOA.............Execute Simulation....PASS
gc_4x5_merra2_fullchem_LuoWd........................Execute Simulation....PASS
gc_4x5_merra2_fullchem_marinePOA....................Execute Simulation....PASS
gc_4x5_merra2_fullchem_RRTMG........................Execute Simulation....PASS
gc_4x5_merra2_Hg....................................Execute Simulation....PASS
gc_4x5_merra2_metals................................Execute Simulation....PASS
gc_4x5_merra2_POPs_BaP..............................Execute Simulation....PASS
gc_4x5_merra2_tagCH4................................Execute Simulation....PASS
gc_4x5_merra2_tagCO.................................Execute Simulation....PASS
gc_4x5_merra2_tagO3.................................Execute Simulation....PASS
gc_4x5_merra2_TransportTracers......................Execute Simulation....PASS
gc_4x5_merra2_TransportTracers_LuoWd................Execute Simulation....PASS
 
Summary of test results:
------------------------------------------------------------------------------
Execution tests passed: 24
Execution tests failed: 2
Execution tests not yet completed: 0

@yantosca
Copy link
Contributor

yantosca commented Aug 1, 2023

After merging atop PR #1896, all GCHP integration tests passed:

==============================================================================
GCHP: Execution Test Results

GCClassic #9d7baa6 GEOS-Chem submod update: Merge PR #1896 (Use singleton time dims)
GEOS-Chem #f990a769d Merge PR #1895 (Impose nested-grid BCs at every timestep)
HEMCO     #477c7e8 Merge PR #229 (Fix incorrect longitude definitions for HEMCO standalone)

Number of execution tests: 5

Submitted as SLURM job: 64900250
==============================================================================
 
Execution tests:
------------------------------------------------------------------------------
gchp_merra2_fullchem................................Execute Simulation....PASS
gchp_merra2_fullchem_benchmark......................Execute Simulation....PASS
gchp_merra2_fullchem_RRTMG..........................Execute Simulation....PASS
gchp_merra2_tagO3...................................Execute Simulation....PASS
gchp_merra2_TransportTracers........................Execute Simulation....PASS
 
Summary of test results:
------------------------------------------------------------------------------
Execution tests passed: 5
Execution tests failed: 0
Execution tests not yet completed: 0

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%  All execution tests passed!  %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Furthermore, all integration tests were zero-diff w/r/t PR #1896:

Checking gchp_merra2_fullchem
   -> No differences in OutputDir
   -> No differences in Restarts

Checking gchp_merra2_fullchem_benchmark
   -> No differences in OutputDir
   -> No differences in Restarts

Checking gchp_merra2_fullchem_RRTMG
   -> No differences in OutputDir
   -> No differences in Restarts

Checking gchp_merra2_tagO3
   -> No differences in OutputDir
   -> No differences in Restarts

Checking gchp_merra2_TransportTracers
   -> No differences in OutputDir
   -> No differences in Restarts

yantosca added a commit that referenced this pull request Aug 1, 2023
This merge brings PR #1895 (Impose boundary conditions at every
timestep in GC-Classic nested-grid simulations, by @jimmielin)
into the GEOS-Chem 14.2.1 development stream.

This fixes an issue where transport is done within the nested-grid
buffer zone grid boxes.  To prevent this we now apply the transport
boundary conditions at each timestep.  WE have also abstracted the
relevant code out of the HEMCO-to-GEOS-Chem interface.

Signed-off-by: Bob Yantosca <[email protected]>
@yantosca yantosca merged commit 1b556b8 into geoschem:dev/14.2.1 Aug 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category: Bug Fix Fixes a previously-reported bug topic: Nested Grid Simulation Related to GEOS-Chem nested model simulations
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants