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

Separate liq and ice in glc2ocn mapping, and fix glc2ocn mapping bug #2066

Merged
merged 5 commits into from
Nov 27, 2017

Conversation

billsacks
Copy link
Member

@billsacks billsacks commented Nov 15, 2017

Two changes in this PR:

(1) Main change: Separate the mapping of liquid and ice runoff from
glc2ocn. This parallels a similar change made for the rof2ocn
mapping. This is needed in CESM with POP, because the ice runoff still
needs smoothing, but the liquid runoff should now be nearest neighbor to
coastal points without smoothing. (Fixes #1940)

In addition to making the code changes to support this separation, I
have regenerated all glc2ocn mapping files for CESM (using commit
184d7de). The liquid mapping files are completely different from before
(now nearest-neighbor to coastal points, rather than nearest-neighbor
with smoothing). The ice mapping files are slightly different from
before because of a slightly changed process for generating these files
(now nearest-neighbor to coastal points followed by smoothing, rather
than nearest-neighbor to any point followed by smoothing; also, the
mappings to gx3v7 now use rmax=500000 rather than 300000 to agree with
rof -> ocn maps).

For ACME, I point to the same mapping files for liquid and ice; I
haven't changed these mapping files (similarly to what's done for
rof2ocn mapping files).

(2) Small but important change, which changes answers substantially for
cases with a 2-way-coupled, evolving ice sheet: Do NOT use normalization
in doing glc2ocn runoff mapping. (Fixes #2063)

This bug only affects runs with a 2-way-coupled, evolving ice sheet
(which, at least in CESM, only involves runs done by a few members of
the Land Ice Working Group; I'm not sure about E3SM). I have done a
quick investigation of the impact of this bug. I found that (for a run
with 4-km Greenland and gx1v7 ocean) the runoff reaching the ocean was
too low by a factor of 2-3. However, it looks like there could be
significant spatial variability in this bug's impact - so the actual
impact would depend on exactly where the runoff (calving and basal melt)
is generated. In addition, the impact of this bug would differ with
different glc and ocn resolutions.

Test suite: scripts_regression_tests on yellowstone
Also ran a bunch of J compset (all-active except data atmosphere) tests
in CESM: see comment below for details.

Test baseline: n/a

Test namelist changes: splits glc2ocn_rmapname into glc2ocn_liq_rmapname
and glc2ocn_ice_rmapname; splits glc2ocn_rmaptype into
glc2ocn_liq_rmaptype and glc2ocn_ice_rmaptype.

Test status: climate changing - just for cases with 2-way-coupled,
evolving ice sheet (in CESM, this means compsets that have CISM2%EVOLVE)

Fixes #1940
Fixes #2063

User interface changes?: Splits GLC2OCN_RMAPNAME xml variable into
GLC2OCN_LIQ_RMAPNAME and GLC2OCN_ICE_RMAPNAME, and similarly for
GLC2OCN_RMAPTYPE

Update gh-pages html (Y/N)?: N

Code review:

For now, I'm using the same mapping files for both liq and ice (with the
same mapping files that have been used in the past)
These were generated with the runoff mapping tools in commit 184d7de
In talking this through with Mariana Vertenstein and Tony Craig, we came
to the conclusion that normalization should never be used when doing
runoff mapping (i.e., nearest neighbor with optional smoothing): doing
normalization breaks conservation. I have verified that the remapping is
conservative with norm=.false., but was not conservative with
norm=.true.
@billsacks
Copy link
Member Author

@billsacks
Copy link
Member Author

In CESM, I have run these additional tests:

SMS_D_Ld5.f19_g16_gl4.J1850G.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.f19_g16_gl5.J1850G1.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.f19_g16_gl20.J1850G.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.f19_g17_gl4.J1850G.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.f19_g17_gl5.J1850G1.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.f19_g17_gl20.J1850G.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.T31_g37_gl4.J1850L45RG.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.T31_g37_gl5.J1850L45RG1.yellowstone_intel.allactive-defaultio
SMS_D_Ld5.T31_g37_gl20.J1850L45RG.yellowstone_intel.allactive-defaultio

These all pass. This needed these differences to support all of the necessary grids and compsets:

diff --git a/config/cesm/config_grids.xml b/config/cesm/config_grids.xml
index 7954e69..ba4b4eb 100644
--- a/config/cesm/config_grids.xml
+++ b/config/cesm/config_grids.xml
@@ -458,6 +458,14 @@
       <mask>gx1v6</mask>
     </model_grid>

+    <model_grid alias="f19_g16_gl20" compset="_CISM">
+      <grid name="atm">1.9x2.5</grid>
+      <grid name="lnd">1.9x2.5</grid>
+      <grid name="ocnice">gx1v6</grid>
+      <grid name="glc">gland20</grid>
+      <mask>gx1v6</mask>
+    </model_grid>
+
     <model_grid alias="f19_g17_gl4" compset="_CISM">
       <grid name="atm">1.9x2.5</grid>
       <grid name="lnd">1.9x2.5</grid>
@@ -466,6 +474,14 @@
       <mask>gx1v7</mask>
     </model_grid>

+    <model_grid alias="f19_g17_gl20" compset="_CISM">
+      <grid name="atm">1.9x2.5</grid>
+      <grid name="lnd">1.9x2.5</grid>
+      <grid name="ocnice">gx1v7</grid>
+      <grid name="glc">gland20</grid>
+      <mask>gx1v7</mask>
+    </model_grid>
+
     <model_grid alias="f19_g16_gl5" compset="_CISM">
       <grid name="atm">1.9x2.5</grid>
       <grid name="lnd">1.9x2.5</grid>
Index: cime_config/config_compsets.xml
===================================================================
--- cime_config/config_compsets.xml(revision 203)
+++ cime_config/config_compsets.xml(working copy)
@@ -286,6 +286,21 @@
      <lname>1850_DATM%CRU_CLM50%BGC-CROP_CICE_POP2_MOSART_CISM2%EVOLVE_SWAV</lname>
   </compset>

+  <compset>
+     <alias>J1850G1</alias>
+     <lname>1850_DATM%CRU_CLM50%BGC-CROP_CICE_POP2_MOSART_CISM1%EVOLVE_SWAV</lname>
+  </compset>
+
+  <compset>
+    <alias>J1850L45RG</alias>
+    <lname>1850_DATM%CRU_CLM45%BGC_CICE_POP2_RTM_CISM2%EVOLVE_SWAV</lname>
+  </compset>
+
+  <compset>
+    <alias>J1850L45RG1</alias>
+    <lname>1850_DATM%CRU_CLM45%BGC_CICE_POP2_RTM_CISM1%EVOLVE_SWAV</lname>
+  </compset>
+
   <entries>
     <entry id="RUN_STARTDATE">
       <values>

@billsacks
Copy link
Member Author

@fischer-ncar @mnlevy1981 and @klindsay28 - I have verified that this PR fixes the problems with B1850G tests, like SMS_Ld5.f19_g17.B1850G.yellowstone_intel.allactive-defaultio

@billsacks
Copy link
Member Author

I have rerun scripts_regression_tests on the latest version. All tests pass except those documented in #2057

@rljacob
Copy link
Member

rljacob commented Nov 15, 2017

Also tagging @stephenprice

@billsacks
Copy link
Member Author

@mvertens and @jonbob we need this in CESM for some science runs, and also to fix failing tests. If you won't have time to review it soon, can you please reassign it to someone who has the time to review it?

Copy link
Contributor

@mvertens mvertens left a comment

Choose a reason for hiding this comment

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

These changes look fine.

@mvertens
Copy link
Contributor

mvertens commented Nov 27, 2017 via email

@jonbob
Copy link
Contributor

jonbob commented Nov 27, 2017

@billsacks - sorry, I missed this. Looking at it now

Copy link
Contributor

@jonbob jonbob 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 me -- thanks for keeping us in the loop

@mvertens mvertens merged commit dd525f9 into ESMCI:master Nov 27, 2017
@billsacks billsacks deleted the glc2ocn_separate_liq_ice branch November 27, 2017 20:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants