Closed jimmielin closed 4 years ago
A tentative fix is in PR #274
I think it works. Still need to validate with GEOS-Chem main (verify it doesn't break global runs and correctly affects results of nested runs) and also merge into HEMCO/src/Shared/GeosUtil
.
Pretty plot:
Pull request https://github.com/geoschem/geos-chem/pull/274 has now been merged into dev/12.8.1
.
Background
Regrid_A2A_Mod
is used in GEOS-Chem Nested-Grid, WRF-GC and (temporarily) HEMCO_CESM to perform regridding of emission inventory data to the model grid.In both WRF-GC and HEMCO_CESM I've been seeing horizontal regridding artifacts at CPU boundaries like so:
This led me to investigate
Regrid_A2A_Mod
.Describe the bug
The issue is that
Regrid_A2A_Mod
when used within HEMCO'shco_interp_mod.F90
callsMAP_A2A
withig = 0, iv = 0
like so:This triggers a particular treatment in
Regrid_A2A_Mod.F90
'sYMAP_R*R*
routine:This is too wordy. Let me summarize the code:
This is appropriate treating for poles as the earth is round. But this is not appropriate if the target domain as specified by
LatEdgeO
Is not spanning the full
[-1, 1]
, aka when we are running on a regional grid.What happens? The northern and southern edges of the resulting array are "averaged" into one, creating the artifact you see above.
Why hasn't it been noticed before?
In GEOS-Chem Nested Grid, it only averages the northern and southern edges of the domain. Generally the boundaries are fed with boundary conditions, so even if the emissions are averaged at the top/bottommost slices, it shouldn't be a problem.
In WRF-GC (and HEMCO_CESM), each CPU handles its own sub-domain; so every CPU-to-CPU northernmost/southernmost boundary is "smeared" with this "pole" treatment. It is not noticeable if the y-dimension is spread out wide enough, but it so happens that HEMCO_CESM has
80x2
dimensions as the decomposition, exacerbating this behavior.Impacts
Proposed solution
This section of the code should be blocked off for a nested-grid simulation,
MODEL_WRF
andMODEL_CESM
. I think it should not be done via processor constants. I think the south pole and north pole treatments could be respectively blocked likeI'm happy to write a patch and further discuss the results. Thank you!