Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1609 from billsacks/lnd2glc_bilinear
Currently, the remapping from the low-resolution land grid (with elevation classes) to the high-resolution glc grid is done using conservative remapping. However, this leads to extreme grid imprinting / blockiness. The new scheme implemented here uses bilinear remapping with an optional conservation correction. The conservation correction is optional because in the vast majority of cases, we are only running a one-way-coupled (diagnostic) ice sheet, so conservation is not important. However, there is logic in place so that the conservation correction is turned on by default in all cases that need it. Main changes are from @whlipscomb, following an initial design by @JeremyFyke. I then did a careful review, some cleanup and refactoring, and introduced namelist control over smb_renormalize. @stephenprice @matthewhoffman and @jonbob : Note that this will affect downscaling of SMB in ACME, too. One particular item to note: By default, this uses the post-mapping conservation correction. At least in CESM, we've decided to turn off the conservation correction if we're doing a one-way-coupled run. We achieve this in CESM by setting the new seq_infodata field, glc_coupled_fluxes. So our seq_infodata_PutData call in glc_init_mct now looks like this: glc_coupled_fluxes = (.not. zero_gcm_fluxes) call seq_infodata_PutData(infodata, & glc_present= .true., & glclnd_present = .true., & glcocn_present = has_ocn_coupling(), & glcice_present = has_ice_coupling(), & glc_prognostic = .true., & glc_coupled_fluxes = glc_coupled_fluxes, & glc_nx=nx_tot, & glc_ny=ny_tot) You may want to do something similar in MPAS-LI. @apcraig : You're also welcome to review this if you're interested. Some guidance for reviewing this PR Primary changes are in src/drivers/mct/main: prep_glc_mod.F90 and map_lnd2glc_mod.F90 Changes in seq_infodata support a new namelist option ('glc_renormalize_smb') and a new field that can be set by GLC in initialization ('glc_coupled_fluxes') There are a lot of deleted files. These are modules (and unit tests of those modules) that are no longer needed with the new implementation. Other than that, the remaining changes add or tweak some utility functions that were useful in writing this new code. Test suite: scripts_regression_tests (yellowstone): pass Also ran CESM's aux_glc and aux_clm45 test suites. These include tests with intel, pgi, gnu and nag compilers, in a wide number of configurations. All tests pass, with answer changes just where expected. Test baseline: For the aux_glc and aux_clm45 tests, I ran them in the context of https://svn-ccsm-models.cgd.ucar.edu/clm2/branches/externals_update_cesm2_0_alpha06k at 85267, and used an unmodified version of that revision for the baselines Test namelist changes: YES - new namelist option in drv_in, 'glc_renormalize_smb' Test status: climate changing For runs with an active GLC component, this is climate changing, at least regionally. However, if GLC is coupled one-way (which is the typical configuration in CESM), then this only impacts the diagnostic, downscaled fields (coupler fields x2g_Flgl_qice and x2g_Sl_tsrf, and the resulting fields in glc - e.g., acab and artm in CISM) Fixes #1479 User interface changes?: New drv_in namelist variable: 'glc_renormalize_smb' Code review:
- Loading branch information