From 6a265159ac7038eaba02694842852b8b2decc6ed Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Wed, 30 Aug 2023 11:04:21 +0200 Subject: [PATCH 01/21] moved Externals_CISM.cfg to point to NorESMhub --- Externals_CISM.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals_CISM.cfg b/Externals_CISM.cfg index 05fc961a..92decf43 100644 --- a/Externals_CISM.cfg +++ b/Externals_CISM.cfg @@ -1,7 +1,7 @@ [source_cism] local_path = source_cism protocol = git -repo_url = https://github.com/ESCOMP/cism +repo_url = https://github.com/NorESMhub/cism tag = cism_main_2.01.012 required = True From 7b5101d632bcb4badd999826542ab263b6eb6fa7 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 19 Feb 2024 19:55:15 +0100 Subject: [PATCH 02/21] updates for pes and testlist for noresm --- cime_config/buildnml | 21 +- cime_config/config_pes.xml | 333 +++++++++++++---------- cime_config/testdefs/testlist_cism.xml | 357 ++++--------------------- 3 files changed, 251 insertions(+), 460 deletions(-) diff --git a/cime_config/buildnml b/cime_config/buildnml index 327913b2..08650f3f 100755 --- a/cime_config/buildnml +++ b/cime_config/buildnml @@ -48,23 +48,16 @@ _CISM_CONFIG_GROUPS = ["grid", "glad_climate", "esm_output", "options", "sigma", # we use an OrderedDict to get reliable ordering (this is unnecessary in python3.6 and # later because standard dicts maintain order, but necessary for 3.5 and earlier) # -# It is important that this ordering be consistent with the ordering of grids in CIME's config_grids xml file. +# It is important that this ordering be consistent with the ordering of grids in the +# config_grids xml file (e.g., if the Antarctica grid is listed before the Greenland grid +# in grids defined in that file, then Antarctica must appear before Greenland in this +# variable). # # Problems may arise if one ice sheet's name is a prefix of another (e.g., "gris" and "grisa"). # -# If you add a new ice sheet here, you should also add entries in the following: -# -# Required: -# - cime_config/config_component.xml (xml variables for each ice sheet and their -# relationship to compset names; follow the examples of other ice sheets there) -# - cime_config/namelist_definition_cism.xml (defaults for this ice sheet for ice -# sheet-specific variables) -# - cime_config/config_archive.xml (add a new rpointer section for the new ice sheet, as -# well as rpointer test file entries for this new ice sheet) -# -# Optional: -# - cime_config/config_compsets.xml (compset aliases using your new ice sheet) -# - cime_config/config_pes.xml (default processor layouts for your new ice sheet) +# If you add a new ice sheet here, you should also add references to the new ice sheet in +# a number of other places, as described in the documentation here: +# https://escomp.github.io/cism-docs/cism-in-cesm/versions/master/html/new-icesheet.html _ICESHEET_OPTIONS = OrderedDict([('ais', 'ANTARCTICA'), ('gris', 'GREENLAND')]) diff --git a/cime_config/config_pes.xml b/cime_config/config_pes.xml index 37d34eeb..66cf95b6 100644 --- a/cime_config/config_pes.xml +++ b/cime_config/config_pes.xml @@ -2,48 +2,54 @@ + + - none - - -1 - -1 - -1 - -1 - -1 - -1 - -1 - -1 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + none + + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + - none - + none + -8 -8 -8 @@ -52,35 +58,40 @@ -8 -8 -8 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + - none - + none + -8 -8 -8 @@ -89,102 +100,144 @@ -8 -8 -8 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + - none - - -2 - -2 - -2 - -2 - -2 - -2 - -2 - -2 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + none + + -2 + -2 + -2 + -2 + -2 + -2 + -2 + -2 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + - none - - -1 - -1 - -1 - -1 - -1 - -1 - -1 - -1 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + none + + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + none + + -1 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + - diff --git a/cime_config/testdefs/testlist_cism.xml b/cime_config/testdefs/testlist_cism.xml index 105c92e1..1453c941 100644 --- a/cime_config/testdefs/testlist_cism.xml +++ b/cime_config/testdefs/testlist_cism.xml @@ -1,195 +1,122 @@ - + - - + - - + - - + - - + - - - + - - + - - + - - + - - + - - - - - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - + - - + - - + - - + - - + - - - + - + - - - + - - - - - - - @@ -582,15 +335,13 @@ --> - - + - - + @@ -601,14 +352,12 @@ - - + - @@ -621,27 +370,23 @@ ice sheets. --> - + - - + - - - + - From 0fe6805902cfa738664625ae6f5bb4d15d66bde6 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 27 Feb 2024 10:24:40 +0100 Subject: [PATCH 03/21] moved test category from aux_glc_noresm to aux_cism_noresm --- cime_config/testdefs/testlist_cism.xml | 50 +++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/cime_config/testdefs/testlist_cism.xml b/cime_config/testdefs/testlist_cism.xml index 1453c941..18adedba 100644 --- a/cime_config/testdefs/testlist_cism.xml +++ b/cime_config/testdefs/testlist_cism.xml @@ -3,7 +3,7 @@ - + @@ -19,7 +19,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -67,7 +67,7 @@ Once it is working, we should restore this test. --> - + @@ -78,7 +78,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -116,7 +116,7 @@ - + - + @@ -352,7 +352,7 @@ - + From ab1719ccd2a33f5e31ea19d2cf901c7261931176 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 27 Feb 2024 13:06:25 +0100 Subject: [PATCH 04/21] updated testlist --- cime_config/testdefs/testlist_cism.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/cime_config/testdefs/testlist_cism.xml b/cime_config/testdefs/testlist_cism.xml index 18adedba..ec31f9d6 100644 --- a/cime_config/testdefs/testlist_cism.xml +++ b/cime_config/testdefs/testlist_cism.xml @@ -28,7 +28,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -149,7 +149,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -197,7 +197,7 @@ - + @@ -208,7 +208,7 @@ - + @@ -286,7 +286,7 @@ - + @@ -333,7 +333,7 @@ much code at that point. See the comments at the top of multivssingle.py for more thoughts on this. --> - + @@ -350,7 +350,7 @@ - + @@ -380,7 +380,7 @@ - + From a4c7dd974b9067f27ef3ef011a9ae1a8832af463 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 27 Feb 2024 19:02:48 +0100 Subject: [PATCH 05/21] fixes TG compsets --- cime_config/testdefs/testlist_cism.xml | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/cime_config/testdefs/testlist_cism.xml b/cime_config/testdefs/testlist_cism.xml index ec31f9d6..98e19ffa 100644 --- a/cime_config/testdefs/testlist_cism.xml +++ b/cime_config/testdefs/testlist_cism.xml @@ -1,7 +1,7 @@ - + @@ -12,7 +12,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -65,7 +65,7 @@ that lnd_cpl_time equal glc_cpl_time". If I remember correctly, Mariana Vertenstein has fixed this issue on a branch of CMEPS. Once it is working, we should restore this test. --> - + @@ -76,7 +76,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -221,7 +221,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -264,7 +264,7 @@ - + @@ -275,7 +275,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -370,7 +370,7 @@ ice sheets. --> - + From d5339edd3ea06df5b4ad8ad672d853a12be5d717 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Wed, 10 Apr 2024 21:15:36 +0200 Subject: [PATCH 06/21] update to cismwrap_2_1_99 --- ChangeLog | 81 ++++++++++++++++++++++ cime_config/SystemTests/multivssingle.py | 6 +- cime_config/buildnml | 4 +- cime_config/config_component.xml | 49 +++++++++++++ cime_config/namelist_definition_cism.xml | 4 +- cime_config/testdefs/testlist_cism.xml | 4 +- doc/source/b-compsets.rst | 88 ++++++++++++------------ doc/source/clm-cism-coupling.rst | 22 +++--- doc/source/index.rst | 1 + doc/source/introduction.rst | 6 ++ doc/source/new-grids.rst | 6 +- doc/source/new-icesheet.rst | 50 ++++++++++++++ doc/source/running-and-modifying.rst | 87 +++++++++++++---------- doc/source/t-compsets.rst | 21 ++---- 14 files changed, 313 insertions(+), 116 deletions(-) create mode 100644 doc/source/new-icesheet.rst diff --git a/ChangeLog b/ChangeLog index 99b85404..3989e410 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,87 @@ This file describes what tags were created on master and why ================================================================================ +================================================================================ +Originator: sacks +Date: April 3, 2024 +Version: cismwrap_2_1_99 +One-line summary: Change CISM_USE_ICESHEET to GLC_USE_ICESHEET + +Purpose of changes: + +Now DGLC defines similar variables. To keep the logic simple in CTSM +(which uses these variables), we'll use GLC_USE_ICESHEET in both. + +For now also keeps CISM_USE_ICESHEET for backwards compatibility. + +Standalone checkout supported in this tag (Yes/No): Yes + (If yes, this implies that we expect to be able to build and run a + case from a standalone checkout using manage_externals, and for this + to continue to work long-term. The answer may be "No" if the set of + externals pointed to by manage_externals is broken, or if at least + one external points to a temporary branch that is may be deleted in + the near future.) + + If No: Notes on externals used for testing: + +Changes answers relative to previous tag: NO + +Bugs fixed (include github issue number): + + No documented issues addressed here. + +Summary of testing: + + Full aux_glc test suite on Derecho only (intel + gnu). Generated new suite of baselines. + + Failures are as expected: + - FAIL ERS_D_Ly3.f09_g17_gris4.T1850Gg.derecho_intel.cism-noevolve COMPARE_base_rest + - See notes under cismwrap_2_1_98 + - FAIL NCK_Ly3.f09_g17_gris20.T1850Gg.derecho_gnu COMPARE_base_multiinst + - Fails on master, too (not noted for earlier tags because derecho_gnu testing hasn't been run) + +================================================================================ +Originator: katetc +Date: February 27, 2024 +Version: cismwrap_2_1_98 +One-line summary: Fix externals link and documentation updates + +Purpose of changes: + + Point to cism main tag for Derecho support instead of branch (bug fix). + Includes updates to documentation related to multiple ice sheets as + well. + +Standalone checkout supported in this tag (Yes/No): Yes + (If yes, this implies that we expect to be able to build and run a + case from a standalone checkout using manage_externals, and for this + to continue to work long-term. The answer may be "No" if the set of + externals pointed to by manage_externals is broken, or if at least + one external points to a temporary branch that is may be deleted in + the near future.) + +If No: Notes on externals used for testing: + +Changes answers relative to previous tag: NO + +Bugs fixed (include github issue number): + + No documented issues addressed here. + +Summary of testing: + + Full aux_glc test suite on Derecho only. Generated new suite of baselines. + + ERS_D_Ly3.f09_g17_gris4.T1850Gg.derecho_intel.cism-noevolve FAIL + FAIL ERS_D_Ly3.f09_g17_gris4.T1850Gg.derecho_intel.cism-noevolve COMPARE_base_rest + - Test fails due to a specific code mod in the CMEPS driver that treated + T compsets differently from others. This was fixed in CMEPS pr #425 and included + in all CMEPS tags after cmeps0.14.50. However, I will leave updating the + externals to support this to another tag as there are issues with CIME and + manage_externals currently that need to be sorted. + + All tests but the one above ran and passed, including B4B baseline compares. + ================================================================================ Originator: katetc Date: December 11, 2023 diff --git a/cime_config/SystemTests/multivssingle.py b/cime_config/SystemTests/multivssingle.py index 169c3124..83acb4c9 100644 --- a/cime_config/SystemTests/multivssingle.py +++ b/cime_config/SystemTests/multivssingle.py @@ -37,7 +37,7 @@ def __init__(self, case, remove_icesheet_xml_name, remove_icesheet_grid_name): """Initialize this test instance The following specify the ice sheet to turn off: - - remove_icesheet_xml_name is the name of the icesheet in xml variables like CISM_USE_* (e.g., GREENLAND) + - remove_icesheet_xml_name is the name of the icesheet in xml variables like GLC_USE_* (e.g., GREENLAND) - remove_icesheet_grid_name is the name of the icesheet in the grid name (e.g., gris) """ self._remove_icesheet_xml_name = remove_icesheet_xml_name @@ -67,6 +67,10 @@ def _case_one_setup(self): def _case_two_setup(self): # Turn off the given ice sheet + self._case.set_value("GLC_USE_{}".format(self._remove_icesheet_xml_name), "FALSE") + # BACKWARDS_COMPATIBILITY(wjs,2024-04-01) Backwards compatibility with old CTSM + # versions that expect CISM_USE_ANTARCTICA (can be removed after + # https://github.com/ESCOMP/CTSM/pull/2449 is merged). self._case.set_value("CISM_USE_{}".format(self._remove_icesheet_xml_name), "FALSE") self._case.set_value("CISM_EVOLVE_{}".format(self._remove_icesheet_xml_name), "FALSE") diff --git a/cime_config/buildnml b/cime_config/buildnml index 08650f3f..be8c2c7f 100755 --- a/cime_config/buildnml +++ b/cime_config/buildnml @@ -209,10 +209,10 @@ def _is_icesheet_present(case, icesheet_name): #################################################################################### """Returns True if the given ice sheet is present in this run, False otherwise - (This is based on the appropriate CISM_USE_* variable) + (This is based on the appropriate GLC_USE_* variable) """ xmlname = _ICESHEET_OPTIONS[icesheet_name] - xmlvar = "CISM_USE_" + xmlname + xmlvar = "GLC_USE_" + xmlname return case.get_value(xmlvar) #################################################################################### diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 38c51bcc..5e6243bb 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -32,6 +32,55 @@ Name of land ice-sheet component + + + logical + TRUE,FALSE + FALSE + run_component_cism + env_run.xml + + TRUE + + + TRUE + TRUE + + Whether to include the Greenland Ice Sheet in this CISM simulation + + This should generally be set at create_newcase time (via the compset). In principle it + can be changed later, but great care is needed to change a number of other variables + to be consistent (GLC_GRID, GLC_DOMAIN_MESH, CISM_EVOLVE_GREENLAND, and possibly + others). + + + + + logical + TRUE,FALSE + FALSE + run_component_cism + env_run.xml + + TRUE + + Whether to include the Antarctica Ice Sheet in this CISM simulation + + This should generally be set at create_newcase time (via the compset). In principle it + can be changed later, but great care is needed to change a number of other variables + to be consistent (GLC_GRID, GLC_DOMAIN_MESH, CISM_EVOLVE_ANTARCTICA, and possibly + others). + + + + logical TRUE,FALSE diff --git a/cime_config/namelist_definition_cism.xml b/cime_config/namelist_definition_cism.xml index 710d0f3a..1e33cdcf 100644 --- a/cime_config/namelist_definition_cism.xml +++ b/cime_config/namelist_definition_cism.xml @@ -92,7 +92,7 @@ Sub-elements of each entry include: - + integer cism cism_params @@ -102,7 +102,7 @@ Sub-elements of each entry include: - + char(10) cism cism_params diff --git a/cime_config/testdefs/testlist_cism.xml b/cime_config/testdefs/testlist_cism.xml index 98e19ffa..3b39f8e5 100644 --- a/cime_config/testdefs/testlist_cism.xml +++ b/cime_config/testdefs/testlist_cism.xml @@ -80,7 +80,7 @@ - + @@ -153,7 +153,7 @@ - + diff --git a/doc/source/b-compsets.rst b/doc/source/b-compsets.rst index 3ceb9a8d..251eb6bd 100644 --- a/doc/source/b-compsets.rst +++ b/doc/source/b-compsets.rst @@ -1,8 +1,8 @@ .. _b-compsets: -************************************************************** +***************************************************************** Running the fully-coupled ice sheet model within CESM: B compsets -************************************************************** +***************************************************************** CISM is available to run as part of a fully coupled climate system simulation in CESM 2.0. Runs with all active components are known @@ -12,8 +12,8 @@ compsets run with CISM in no-evolve mode, and compsets that end with G (e.g., "B1850G") have an active, or evolving, CISM Greenland ice sheet. -Any compset, including B compsets, can turn on an actively evolving -CISM ice sheet model using the xml variable CISM_EVOLVE to TRUE. +Any compset that includes CISM in no-evolve mode, including B compsets, can turn on an actively evolving +CISM ice sheet model by setting the xml variables ``CISM_EVOLVE_ICESHEET`` (for each included icesheet --- e.g., ``CISM_EVOLVE_GREENLAND``) as well as the overall ``CISM_EVOLVE`` to ``TRUE``. The sections below give links to information about CISM's coupling, and how to start and run a CESM case in general. After the links @@ -29,18 +29,18 @@ method of updating the atmosphere topography to reflect the current shape of the ice sheet has been developed. That method is outlined below. -=========== +====================================== Helpful links for coupling information -=========== +====================================== - `Details of CISM, CLM and POP coupling `_ - `Generating Forcing Data to use in a CISM T compset `_ - `CESM Case Control System (how to setup, build, and run an experiment with CESM 2) `_ - `User questions and answers in the DiscussCESM Forums `_ -=========== +=============== CISM Time Steps -=========== +=============== There are a few different kinds of timesteps in CISM: @@ -118,7 +118,7 @@ currently namelist and source modifications needed. Contact a LIWG scientist for more information about these. The time options below (apart from the forcing timestep) are set in -*cism.config*. This file contains (or may contain) the following +*cism.ICESHEET.config* for each ice sheet. This file contains (or may contain) the following timestep information: 1. The ice sheet timestep *dt* (in years) is set in the section @@ -134,47 +134,47 @@ timestep information: Note that the total length of the simulation is not determined by CISM, but is set in the file *env\_run.xml* in the case directory. -=========== +================================= CISM Topography Updating Workflow -=========== +================================= ** These instructions require CESM 2.1.1 or greater. ** 1. Edit your ``config_workflow.xml`` file. This is found in ``cime/config/cesm/machines`` . You will need to add the following code to this file anywhere after a ```` tag. :: - - - - - $BUILD_COMPLETE and not $TEST - - - - $BUILD_COMPLETE and $TEST - - - - - case.run or case.test - 1 - - 1 - 1 - 0:45:00 - - - - - - case.topo_regen - $DOUT_S - - 1 - 1 - 0:20:00 - - - + + + + + $BUILD_COMPLETE and not $TEST + + + + $BUILD_COMPLETE and $TEST + + + + + case.run or case.test + 1 + + 1 + 1 + 0:45:00 + + + + + + case.topo_regen + $DOUT_S + + 1 + 1 + 0:20:00 + + + 2. Create your case. When you create your case you will need to add the flag ``--workflow topo_regen_10yr_cycle`` . For example: :: diff --git a/doc/source/clm-cism-coupling.rst b/doc/source/clm-cism-coupling.rst index 287762be..93f5d119 100644 --- a/doc/source/clm-cism-coupling.rst +++ b/doc/source/clm-cism-coupling.rst @@ -14,11 +14,10 @@ Non-evolving ice sheet In typical CESM runs, CISM is not evolving; CLM computes the ice sheet surface mass balance and sends it to CISM, but CISM's ice sheet geometry remains fixed over the course of the run, and CISM does not send any fluxes to other CESM components. These -configurations use compsets with ``CISM2%NOEVOLVE`` in their long name (or this can be set -after setting up a case via the xml variable, ``CISM_EVOLVE``). In these runs, CISM serves +configurations use compsets with ``CISM2%XXX-NOEVOLVE`` in their long name (for some ice sheet ``XXX``). In these runs, CISM serves two roles in the system: -#. Over the CISM domain (typically Greenland in CESM2), CISM dictates +#. Over the CISM domain(s) (typically Greenland in CESM2), CISM dictates glacier areas and topographic elevations, overriding the values on CLM's surface dataset. CISM also dictates the elevation of non-glacier land units in its domain, and only in this domain are @@ -30,8 +29,8 @@ two roles in the system: Evolving ice sheet with two-way (interactive) coupling ------------------------------------------------------ -Dynamic ice sheet evolution can be turned on by using a compset with ``CISM2%EVOLVE`` in -its long name, or by setting the xml variable ``CISM_EVOLVE`` after setting up a case. In +Dynamic ice sheet evolution can be turned on by using a compset with ``CISM2%XXX-EVOLVE`` in +its long name (for some ice sheet ``XXX``), or by setting the xml variables ``CISM_EVOLVE_ICESHEET`` (for one or more instances of ``ICESHEET``) and the overall ``CISM_EVOLVE`` after setting up a case. In this configuration, CISM sends updated glacier areas and topographic elevations to CLM at the end of each year. In addition, CISM sends fluxes of ice and liquid water to the ocean. CLM responds to these changes by adjusting the areas of the glacier land unit and @@ -57,8 +56,7 @@ Evolving ice sheet with one-way (diagnostic) coupling ----------------------------------------------------- A hybrid mode is also possible, in which CISM evolves dynamically but does not feed back -to the rest of the system. This configuration is enabled by turning on CISM evolution (via -using a ``CISM2%EVOLVE`` compset or changing the ``CISM_EVOLVE`` xml variable to +to the rest of the system. This configuration is enabled by turning on CISM evolution (by using a ``CISM2%XXX-EVOLVE`` compset or changing the relevant ``CISM_EVOLVE_ICESHEET`` and overall ``CISM_EVOLVE`` xml variables to ``TRUE``), but then changing the xml variable ``GLC_TWO_WAY_COUPLING`` to ``FALSE``. This change results in changes to CLM and CISM: @@ -79,7 +77,7 @@ Stub GLC model (CISM absent) ---------------------------- It is also possible to run CESM with a stub glacier model rather than CISM by using -compsets with ``SGLC`` in place of ``CISM2%NOEVOLVE``. These configurations are similar to +compsets with ``SGLC`` in place of ``CISM2%XXX-NOEVOLVE``. These configurations are similar to those with a non-evolving ice sheet, with the following differences: #. CLM's glacier areas and elevations will be taken entirely from CLM's initial conditions @@ -445,10 +443,8 @@ This mask is currently a subset of the ice sheet grid mask. Currently, it is ide the ice sheet grid mask if we are running with an evolving, two-way-coupled ice sheet, and otherwise is zero everywhere (and, as described in :numref:`ice_sheet_grid_mask`, this relationship should remain true, because the ice sheet grid mask is used in the coupler in -a way that closely matches the use of this second mask). In the future, when we allow -multiple ice sheets in CESM (e.g., Greenland and Antarctica), it is possible that one ice -sheet will operate two-way-coupled while another is one-way-coupled. In this case, this -mask would match the ice sheet grid mask for the two-way-coupled ice sheet and would be +a way that closely matches the use of this second mask). One reason this is sent as a separate field is to handle the scenario where there are multiple ice sheets (e.g., Greenland and Antarctica), with one ice sheet operating two-way-coupled while another is one-way-coupled. In this case, this +mask matches the ice sheet grid mask for the two-way-coupled ice sheet and is zero for the other. Note that, like the ice sheet grid mask, this mask excludes CISM's open ocean grid @@ -605,6 +601,8 @@ because of area distortions on CISM's polar stereographic grid. Thus the local errors for bilinear remapping and renormalization are similar to the local errors for conservative remapping. Bilinear remapping, however, is far smoother; smoothness is obtained at the cost of local conservation. +When running with multiple ice sheets, the conservation correction is applied independently for each ice sheet. This means that the SMB over one ice sheet does *not* impact the renormalized SMB over another ice sheet. + Remapping surface temperature from CLM to CISM ---------------------------------------------- diff --git a/doc/source/index.rst b/doc/source/index.rst index 8407e54e..014b44d2 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -34,6 +34,7 @@ Appendices :maxdepth: 2 new-grids.rst + new-icesheet.rst ---- diff --git a/doc/source/introduction.rst b/doc/source/introduction.rst index ecaae52b..29b50816 100644 --- a/doc/source/introduction.rst +++ b/doc/source/introduction.rst @@ -297,3 +297,9 @@ in CESM for land-ice modeling: - See the other sections of this document for more detailed descriptions of new land-ice capabilities. +=================================== + Significant changes since CESM2.0 +=================================== + +CESM2.0 only allowed running a single ice sheet at a time. Since then, CISM and the CESM infrastructure have +been extended to allow running multiple ice sheets in a single simulation. There is out-of-the-box support for running Greenland and Antarctica, but other ice sheets can be added as well. diff --git a/doc/source/new-grids.rst b/doc/source/new-grids.rst index f0ee643a..a91f462f 100644 --- a/doc/source/new-grids.rst +++ b/doc/source/new-grids.rst @@ -9,7 +9,7 @@ Introducing a new ice sheet grid ******************************** This section describes what is needed when introducing a new ice sheet grid into the -system. Much of the information in :ref:`Generating mapping files` is also relevant when +system. This assumes you are adding a grid for an existing ice sheet: If you are adding a completely new ice sheet (i.e., an ice sheet other than Greenland or Antarctica), see :ref:`new-icesheet`. Much of the information in :ref:`Generating mapping files` is also relevant when introducing a new land grid (in which case new lnd-glc mapping files are needed) or a new ocean grid (in which case new ocn-glc mapping files are needed). @@ -319,6 +319,8 @@ Generating the necessary inter-component mapping files Generating lnd <-> glc mapping files for a new CISM grid -------------------------------------------------------- +**Note: this step is no longer necessary with the NUOPC/CMEPS interface, where lnd <-> glc mappings are now generated at runtime. (The glc -> ocn mapping files described in the next section ARE still needed.)** + #. Build the check_maps tool This isn't entirely necessary, but allows the maps you generate to be checked @@ -606,6 +608,8 @@ scripts, you need to add entries in config_grids.xml #. Point to new mapping files: lnd <-> glc + **Note: this step is no longer necessary with the NUOPC/CMEPS interface, where lnd <-> glc mappings are now generated at runtime. (The glc -> ocn mapping files described in the next step ARE still needed.)** + You'll need to add a section like this for each land grid, in the section "lnd to glc and glc to lnd mapping": diff --git a/doc/source/new-icesheet.rst b/doc/source/new-icesheet.rst new file mode 100644 index 00000000..1b4be586 --- /dev/null +++ b/doc/source/new-icesheet.rst @@ -0,0 +1,50 @@ +.. sectnum:: + :prefix: A. + :start: 2 + +.. _new-icesheet: + +***************************** + Introducing a new ice sheet +***************************** + +This section describes what is needed when introducing support for a completely new ice sheet --- i.e., an ice sheet other than Greenland or Antarctica. If you are instead adding a new grid for an existing ice sheet (e.g., a new Greenland or Antarctica grid), see :ref:`new-grids`. + +============================================= +Changes needed in the CISM-wrapper repository +============================================= + +The following changes are needed so that you can create a compset with a new ice sheet and have an appropriate ``cism.ICESHEET.config`` file generated for the new ice sheet: + +#. Add an entry to the ``_ICESHEET_OPTIONS`` variable in the ``buildnml`` file (in the ``cime_config`` directory of the CISM-wrapper repository). Each ice sheet has two names associated with it: a short, lowercase name (e.g., ``ais``) and a full, uppercase name (e.g., ``ANTARCTICA``). Both names are given in the ``_ICESHEET_OPTIONS`` variable. The short name is used in the grid specification, the ``user_nl_cism`` file name, the config file name, and various other file names; the full name is used in some XML variables. **It is important that the ordering of ice sheets in _ICESHEET_OPTIONS is consistent with the ordering of grids in the config_grids xml file (e.g., if the Antarctica grid is listed before the Greenland grid in grids defined in that file, then Antarctica must appear before Greenland in this variable). Also, avoid having one ice sheet's name be a prefix of another (e.g., "gris" and "grisa").** + +#. Add entries in ``cime_config/config_component.xml`` giving XML variables for the new ice sheet and their relationship with compset long names. Follow the examples of other ice sheets in that file (e.g., do a case-insensitive search for "Antarctica" in that file). + +#. Add entries in ``cime_config/namelist_definition_cism.xml`` to add default configuration values for this ice sheet for any variables whose defaults differ between ice sheets. At a minimum, look for any variable in that file that already has a ```` entry with an ``icesheet`` attribute --- e.g., ```` or ```` --- and add a new entry for the new ice sheet; sometimes a specific grid might also be needed as an additional attribute. Optionally, there may be some additional variables that currently have the same default value for all ice sheets but for which you want a different default for the new ice sheet; for these, you can replace the single ```` entry with new ```` entries for each ice sheet. + +#. Add entries in ``cime_config/config_archive.xml``: add a new rpointer section for the new ice sheet, as well as rpointer test file entries for this new ice sheet. (You can search for "ais" in that file to see what is needed.) + +#. [OPTIONAL] Add one or more new compset aliases in ``cime_config/config_compsets.xml`` using the new ice sheet. Note that only T compsets are defined here; other compsets are defined in other ``config_compsets.xml`` files elsewhere in CESM. + +#. [OPTIONAL] Add one or more default processor layouts in ``cime_config/config_pes.xml`` for the new ice sheet. Note that only processor layouts for T compsets are defined here; processor layouts for other compsets are defined in other ``config_pes.xml`` files elsewhere in CESM. + +==================================== +Changes needed in other repositories +==================================== + +A number of changes are also needed in other repositories to specify the new CISM grid(s). (See also :ref:`new-grids`.) + +.. + In the following references to the ccs_config_cesm repository, I don't mention the specific file(s) to modify because this new repository is in a state of flux, so any reference to specific files may soon be out of date. + +#. In the appropriate XML file in https://github.com/ESMCI/ccs_config_cesm add one or more grid definitions for this ice sheet. This involves adding a ```` entry (which specifies the dimensions of the grid and an ESMF mesh file that defines the grid) and one or more ```` entries (which specify grid aliases that can be used to run CISM with this grid together with certain atmosphere/land and ocean grids, possibly in conjunction with other CISM grids if you want to run multiple ice sheets in a single simulation). As with other changes, it is easiest to follow the example of an existing CISM grid; for example, search for "ais8" to see what your additions should look like. + +#. [OPTIONAL] To enable fully-coupled (B compset) runs, additional changes are needed in https://github.com/ESMCI/ccs_config_cesm to specify runoff mapping files from the new CISM grid(s) to the desired ocean grid(s). (Mapping files between CISM and other components do not need to be specified, since they will be generated at runtime.) Once again, search for "ais8" to see what your additions should look like. + +#. In CTSM, set up an appropriate glacier region (see :ref:`new-grids` for details). + +=================================== +Caveats when adding a new ice sheet +=================================== + +**In a run with multiple ice sheets, it is very important that the grids for the different ice sheets do not overlap.** In fact, the restriction is a bit more stringent: **There cannot be any land grid cell that intersects with multiple CISM domains.** This is because the lnd-glc mapping algorithms in CMEPS cannot handle the situation where a given land grid cell intersects with multiple CISM domains. This requirement is NOT checked in the code: it is the user's responsibility to ensure that it is satisfied. diff --git a/doc/source/running-and-modifying.rst b/doc/source/running-and-modifying.rst index 029108a0..1512794a 100644 --- a/doc/source/running-and-modifying.rst +++ b/doc/source/running-and-modifying.rst @@ -18,7 +18,7 @@ Model; the land component is CLM, the Community Land Model (which is now part of Community Terrestrial Systems Model). CLM is responsible for computing the surface mass balance and surface temperature of ice sheets, along with snow pack evolution for all land cover types. CISM is responsible for ice sheet dynamics and other ice sheet internal -processes. +processes. CISM can include one or more independent ice sheets within a given simulation, each with their own grid. ================================================= Choosing a CESM configuration for land ice work @@ -34,25 +34,10 @@ described in more detail in the `CIME documentation of available compsets `_). At the compset level, there are three main modes for configuring CESM's ice sheet component: -1. Using CISM with ice evolution turned off. +1. Using CISM with ice evolution turned on. - This is the standard configuration used by most CESM compsets. These compsets have - ``CISM2%NOEVOLVE`` in their compset long name. CISM is built into the system and is - called periodically by the CESM coupler, but it does very little. CISM serves two roles - in the system in this configuration: - - - Over the CISM domain (typically Greenland in CESM2), CISM dictates glacier areas and - topographic elevations, overriding the values on CLM's surface dataset. CISM also - dictates the elevation of non-glacier land units in its domain, and only in this - domain does CLM downscale atmospheric fields to non-glacier land units. - - - CISM provides the grid onto which SMB is downscaled. - - | -2. Using CISM with ice evolution turned on. - - These compsets have ``CISM2%EVOLVE`` in their compset long name, and typically have the - letter ``G`` somewhere near the end of their alias. CISM is fully active, receiving SMB + These compsets have ``CISM2%AIS-EVOLVE`` and/or ``CISM2%GRIS-EVOLVE`` in their compset long name. They typically have the + letter ``G`` somewhere near the end of their alias, with ``Ga`` for a compset with Antarctica, ``Gg`` for a compset with Greenland, and ``Gag`` for a compset with both Antarctica and Greenland. CISM is fully active, receiving SMB from CLM and evolving dynamically. In addition, by default, CISM feeds information back to other climate system components --- i.e., it is two-way coupled. Specifically, it sends: @@ -61,15 +46,34 @@ the compset level, there are three main modes for configuring CESM's ice sheet c - Ice and liquid runoff to the ocean + | + Part or all of this two-way coupling can be turned off if desired. Note that the liquid runoff sent to the ocean consists of meltwater computed in the interior or at the base of the ice; surface liquid runoff is handled separately by CLM. | + +2. Using CISM with one or more ice sheets, with ice evolution turned off. + + These compsets have ``CISM2%AIS-NOEVOLVE`` and/or ``CISM2%GRIS-NOEVOLVE`` in their compset long name. CISM is built into the system but it does very little. CISM serves two roles in the system in this configuration: + + - Over the CISM domain(s) (typically Greenland and/or Antarctica), CISM dictates glacier areas and + topographic elevations, overriding the values on CLM's surface dataset. CISM also + dictates the elevation of non-glacier land units in its domain, and only in this + domain does CLM downscale atmospheric fields to non-glacier land units. + + - CISM provides the grid onto which SMB is downscaled. + + | + + It is also possible for a compset to have one or more ice sheets evolving and one or more ice sheets non-evolving. + + | + 3. Using a stub glacier component (SGLC), completely avoiding the use of CISM. - These configurations have ``SGLC`` in the compset long name, and typically have ``Gs`` - somewhere near the end of their alias. This is similar to (1), and CLM still computes + These configurations have ``SGLC`` in the compset long name. This is similar to (2), and CLM still computes ice sheet surface mass balance. However: - Glacier areas and elevations are taken entirely from CLM's surface dataset, and CLM @@ -93,8 +97,11 @@ the compset level, there are three main modes for configuring CESM's ice sheet c | -After creating a case, you can switch between (1) and (2) by setting the xml variable, -``CISM_EVOLVE``. +A case can include any number of ice sheets. The ice sheet(s) included in the case should be chosen at ``create_newcase`` time, via choice of an appropriate compset. For example, a compset with both Antarctica and Greenland evolving will have ``CISM2%AIS-EVOLVE%GRIS-EVOLVE`` in the compset long name, and will typically have ``Gag`` in the compset alias. + +The choice of evolution or non-evolution for each ice sheet can be chosen via the compset, but this can also be safely changed after creating a case by setting the xml variables, ``CISM_EVOLVE_ANTARCTICA``, ``CISM_EVOLVE_GREENLAND``, etc. You also need to set the overall ``CISM_EVOLVE`` to be consistent with the ice sheet-specific variables: ``CISM_EVOLVE`` must be set to ``TRUE`` if *any* ice sheet is set to evolve, and must be set to ``FALSE`` if no ice sheet is set to evolve. (The scripts will check this for you and won't let you run your case if you have failed to set these variables consistently.) + +.. _choosing-a-cism-grid: Choosing a CISM grid -------------------- @@ -120,8 +127,10 @@ default grid (4 km). For some common grids, you can also specify the grid explic the alias, using a ``_gris`` element following the ocean grid. For example, for a compset with CISM2, ``f09_g17_gris4`` is equivalent to ``f09_g17``. -For the T1850Gg compset (described in :numref:`t-compsets`), you should use grid -``f09_g17_gris4``. For information on introducing new ice sheet grids, see :ref:`new-grids`. +For the ``T1850Gg`` compset (described in :numref:`t-compsets`), you should use grid +``f09_g17_gris4``. For ``T1850Ga``, you should use grid ``f09_g17_ais8``. For information on introducing new ice sheet grids, see :ref:`new-grids`. + +If multiple ice sheets are included in the compset, then you must choose a CESM grid that specifies an ice sheet grid for each active ice sheet (regardless of whether each ice sheet is evolving or non-evolving). For example, for the ``T1850Gag`` compset (which includes both Antarctica and Greenland), you can use grid ``f09_g17_ais8gris4``, denoting an 8-km Antarctica grid and a 4-km Greenland grid. Special considerations for hybrid cases --------------------------------------- @@ -160,28 +169,28 @@ physics options.) ============================= Once the code is running, you may want to change namelist or configuration -variables. Variables related to land ice are set in the files ``cism_in``, ``cism.config`` +variables. Variables related to land ice are set in the files ``cism_in``, ``cism.ICESHEET.config`` (for each ice sheet --- e.g., ``cism.ais.config``, ``cism.gris.config``) and ``lnd_in``. These files appear in the run directory, and also in the ``CaseDocs`` subdirectory of the case directory. User modifications can be made to these files by -adding lines to ``user_nl_cism`` (for variables in ``cism_in`` or ``cism.config``) or -``user_nl_clm`` (for variables in ``lnd_in``); this is described in more detail below. The +adding lines to ``user_nl_cism``, ``user_nl_cism_ICESHEET`` (for each ice sheet --- e.g., ``user_nl_cism_ais``, ``user_nl_cism_gris``) or +``user_nl_clm``; this is described in more detail below. The various ``user_nl_xxx`` files are created when you first run ``case.setup`` for your case. They can be modified any time between running ``case.setup`` and the start of the run: the model does NOT need to be rebuilt after making namelist changes in these files. -Most parameters directly relevant to ice sheet modeling are set in ``cism.config``. This +Most parameters directly relevant to ice sheet modeling are set in ``cism.ICESHEET.config`` for each ice sheet. This config file contains settings used by CISM --- for example, grid information (which is set automatically based on the resolution set at ``create_newcase`` time) and physics parameter settings. The ``cism_in`` file contains some additional parameters controlling the CISM run. All of the available settings are given in `this table `__ (variables in -namelist groups with ``config`` in their name will go into the ``cism.config`` file; +namelist groups with ``config`` in their name will go into the ``cism.ICESHEET.config`` files; others will go into the ``cism_in`` file). The file ``lnd_in`` provides settings for CLM. CLM's available settings are given in `this -table `__. +table `__. -Changes to both ``cism.config`` and ``cism_in`` can be made by adding lines with the +``user_nl_cism`` is used for two purposes: (1) settings that appear in ``cism_in``, which apply to all ice sheets; and (2) settings that appear in the ice sheet-specific ``cism.ICESHEET.config`` files, for which you want to make the same change for all ice sheets. Changes to either of those types of settings can be made by adding lines with the following format to the ``user_nl_cism`` file in your case directory: .. code-block:: console @@ -189,9 +198,9 @@ following format to the ``user_nl_cism`` file in your case directory: namelist_variable = value Note that there is no distinction in ``user_nl_cism`` between variables that will appear -in ``cism_in`` vs. those that will appear in ``cism.config``: CISM's build-namelist +in ``cism_in`` vs. those that will appear in the ``cism.ICESHEET.config`` files: CISM's build-namelist utility knows where each variable belongs. For example, to set the value of ``cism_debug`` -to ``.true.`` and ``dt`` to ``0.05``, include the following in ``user_nl_cism``: +to ``.true.`` and ``dt`` to ``0.05`` for all ice sheets, include the following in ``user_nl_cism``: .. code-block:: console @@ -208,7 +217,7 @@ After running ``preview_namelists``, the following will appear in ``cism_in``: ... / -and the following will appear in ``cism.config``: +and the following will appear in ``cism.ICESHEET.config`` for all ice sheets: .. code-block:: console @@ -217,6 +226,8 @@ and the following will appear in ``cism.config``: dt = 0.05 ... +``user_nl_cism_ICESHEET`` (e.g., ``user_nl_cism_ais``, ``user_nl_cism_gris``) is used for settings that appear in the ice sheet-specific ``cism.ICESHEET.config`` files, for which you want to make a change for just one ice sheet. The syntax for making changes is the same as for ``user_nl_cism``, but now this will only impact the single corresponding ``cism.ICESHEET.config`` file. + Changes to ``lnd_in`` can be made by adding similar lines to ``user_nl_clm``. For example, to change the ice albedo (values give albedo in the visible and near-infrared), add the following line to ``user_nl_clm``: @@ -231,7 +242,7 @@ will then appear in the CaseDocs subdirectory of your case as well as in the run directory. Note: There appears to be a bug in the parsing of strings in ``user_nl_cism`` that are -bound for ``cism.config``: These appear to be handled correctly if they are single-quoted, +bound for ``cism.ICESHEET.config``: These appear to be handled correctly if they are single-quoted, but double-quoted strings lead to buggy behavior. ======================= @@ -257,8 +268,8 @@ Other subdirectories of the top-level CISM-wrapper code are: - ``source_glc``, which contains much of the logic for driving CISM via CESM -- ``drivers``, which contains the code for coupling with CESM via the MCT coupling - framework +- ``drivers``, which contains the code for coupling with CESM via both the NUOPC and MCT coupling + frameworks - ``bld``, which mainly consists of code and xml files needed to create the namelist and configuration files. Note that the actual build of the model is handled by files in diff --git a/doc/source/t-compsets.rst b/doc/source/t-compsets.rst index 5acefbd5..72da0576 100644 --- a/doc/source/t-compsets.rst +++ b/doc/source/t-compsets.rst @@ -32,18 +32,11 @@ forcing data (see :numref:`t-with-your-own-data`). Running with existing forcing data ==================================== -There is currently just a single set of forcing data available for running T -compsets. These forcing data were created with software testing rather than scientific -validity in mind. They were created from 30 years of an ``I1850Clm50Sp`` compset (CLM -forced by a data atmosphere with GSWP3 forcing, starting from an already-near-spun-up -state, with nominally year-1850 forcings and satellite phenology). The resolution was -``f09_g17``. The code base was close to the final CESM2.0 release. For more details, see -``__. - -There is one out-of-the-box T compset that uses these forcing data: T1850Gg. **You should -run this compset at f09_g17 resolution --- i.e., with the same land resolution and ocean -mask used to create the forcing data.** You can use any CISM resolution, although the -current forcing data only have complete forcings for Greenland, not Antarctica. +There is currently just a single set of out-of-the-box forcing data available for running T +compsets. These forcing data were created from the B1850 CMIP6 PI-control run, at resolution ``f09_g17``. + +There are three out-of-the-box T compsets that use these forcing data: ``T1850Gg`` (Greenland only), ``T1850Ga`` (Antarctica only), and ``T1850Gag`` (both Antarctica and Greenland). There is no scientific advantage to running both Antarctica and Greenland in the same T compset case, since the two ice sheets won't interact in this situation (in contrast to a coupled simulation, where it can be scientifically useful to run multiple ice sheets in the same simulation). Thus, the main reasons for using ``T1850Gag`` are for convenience or testing. With any of these compsets, **you should use f09_g17 resolution --- i.e., with the same land resolution and ocean +mask used to create the forcing data.** You can use any CISM grid(s), although note that you must choose a resolution that specifies a grid for each active ice sheet (see :numref:`choosing-a-cism-grid`). So a typical ``create_newcase`` command when running with the standard 4-km Greenland grid, would look like: @@ -72,7 +65,7 @@ To create the necessary forcing data (surface mass balance and surface temperatu glacier elevation class, along with surface elevation for the coupler's vertical downscaling), you need to perform a CESM run using a compset that includes an active land model (CLM). It does not matter whether the glc component is fully-active -(``CISM2%EVOLVE``), active but non-evolving (``CISM2%NOEVOLVE``) or a stub model +(e.g., ``CISM2%GRIS-EVOLVE``), active but non-evolving (e.g., ``CISM2%GRIS-NOEVOLVE``) or a stub model (``SGLC``). If running with CISM, CISM's domain and resolution also do not matter (because forcing data are saved prior to downscaling to the CISM grid). @@ -134,7 +127,7 @@ resolutions of the T compset run (as specified by the ``--res`` flag to data. You *can* run with a different glc resolution than the one used to create the forcing data. So, for example, if you created the forcing data from an I or B compset with resolution ``f09_g17_gris4``, the T compset run should use resolution ``f09_g17_xxx``, where -any value of ``xxx`` is acceptable. +any value of ``xxx`` is acceptable. You can even run the T compset with a different ice sheet than the one(s) used to create the forcing data, as long as CLM's glacier regions and their behaviors were set up appropriately, as described above. The following variables in ``env_run.xml`` should be modified appropriately for your forcing data: From a3ddbc85b55be8ac36f47096a9173617e619a70a Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Wed, 10 Apr 2024 21:21:22 +0200 Subject: [PATCH 07/21] changed wallclock time for tests --- cime_config/testdefs/testlist_cism.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cime_config/testdefs/testlist_cism.xml b/cime_config/testdefs/testlist_cism.xml index 3b39f8e5..db67db6a 100644 --- a/cime_config/testdefs/testlist_cism.xml +++ b/cime_config/testdefs/testlist_cism.xml @@ -118,7 +118,7 @@ - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + - + + + - + + + - + + + - + - + + - + - + + - + - + + - + + + + + + + + @@ -333,15 +580,17 @@ much code at that point. See the comments at the top of multivssingle.py for more thoughts on this. --> - + - + + - + + @@ -350,14 +599,16 @@ - + - + + + @@ -372,21 +623,25 @@ - + + + - + - + + + From 34339777afa7b810fd4822fce1039826668b33e4 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Sun, 16 Jun 2024 15:08:45 -0600 Subject: [PATCH 20/21] updates to fix compilation problems --- drivers/cpl/nuopc/glc_comp_nuopc.F90 | 4 ++-- drivers/cpl/nuopc/glc_import_export.F90 | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/cpl/nuopc/glc_comp_nuopc.F90 b/drivers/cpl/nuopc/glc_comp_nuopc.F90 index 60530e9b..c3f6f9d1 100644 --- a/drivers/cpl/nuopc/glc_comp_nuopc.F90 +++ b/drivers/cpl/nuopc/glc_comp_nuopc.F90 @@ -194,7 +194,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) ! Set filenames which depend on instance information call set_filenames() - ! Determine if cism will evolve + ! Determine if cism will evolve - if not will not import any fields from the mediator call NUOPC_CompAttributeGet(gcomp, name="cism_evolve", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (isPresent .and. isSet) then @@ -214,7 +214,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) end if ! Advertise fields - call advertise_fields(gcomp, num_icesheets_from_mediator, rc) + call advertise_fields(gcomp, cism_evolve, num_icesheets_from_mediator, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (dbug > 5) then diff --git a/drivers/cpl/nuopc/glc_import_export.F90 b/drivers/cpl/nuopc/glc_import_export.F90 index a5ab8809..07aaa47f 100644 --- a/drivers/cpl/nuopc/glc_import_export.F90 +++ b/drivers/cpl/nuopc/glc_import_export.F90 @@ -87,12 +87,13 @@ module glc_import_export contains !=============================================================================== - subroutine advertise_fields(gcomp, num_icesheets_in, rc) + subroutine advertise_fields(gcomp, cism_evolve, num_icesheets_in, rc) use glc_constants, only : glc_smb ! input/output variables type(ESMF_GridComp) :: gcomp + logical , intent(in) :: cism_evolve integer , intent(in) :: num_icesheets_in integer , intent(out) :: rc From 3d3047b299678d83cfa5fe3f778b7485fea7d238 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Fri, 28 Jun 2024 03:31:28 -0600 Subject: [PATCH 21/21] update to address issue in PR --- drivers/cpl/nuopc/glc_import_export.F90 | 34 ++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/cpl/nuopc/glc_import_export.F90 b/drivers/cpl/nuopc/glc_import_export.F90 index 07aaa47f..94aa491d 100644 --- a/drivers/cpl/nuopc/glc_import_export.F90 +++ b/drivers/cpl/nuopc/glc_import_export.F90 @@ -212,28 +212,28 @@ subroutine advertise_fields(gcomp, cism_evolve, num_icesheets_in, rc) ! Advertise import fields !-------------------------------- + call fldlist_add(fldsToGlc_num, fldsToGlc, trim(flds_scalar_name)) + call fldlist_add(fldsToGlc_num, fldsToGlc, field_in_tsrf) + call fldlist_add(fldsToGlc_num, fldsToGlc, field_in_qice) if (cism_evolve) then - call fldlist_add(fldsToGlc_num, fldsToGlc, trim(flds_scalar_name)) - call fldlist_add(fldsToGlc_num, fldsToGlc, field_in_tsrf) - call fldlist_add(fldsToGlc_num, fldsToGlc, field_in_qice) call fldlist_add(fldsToGlc_num, fldsToGlc, field_in_so_t_depth, ungridded_lbound=1, ungridded_ubound=nlev_import) call fldlist_add(fldsToGlc_num, fldsToGlc, field_in_so_s_depth, ungridded_lbound=1, ungridded_ubound=nlev_import) - - ! Now advertise import fields - do ns = 1,num_icesheets - do nf = 1,fldsToGlc_num - call NUOPC_Advertise(NStateImp(ns), standardName=fldsToGlc(nf)%stdname, & - TransferOfferGeomObject='will provide', rc=rc) - if (chkErr(rc,__LINE__,u_FILE_u)) return - if (my_task == master_task) then - write(cnum,'(i0)') ns - write(stdout,'(a)') 'Advertised import field: '//trim(fldsToGlc(nf)%stdname)//' for ice sheet '//trim(cnum) - end if - call ESMF_LogWrite(subname//'Import field'//': '//trim(fldsToGlc(nf)%stdname), ESMF_LOGMSG_INFO) - end do - enddo end if + ! Now advertise import fields + do ns = 1,num_icesheets + do nf = 1,fldsToGlc_num + call NUOPC_Advertise(NStateImp(ns), standardName=fldsToGlc(nf)%stdname, & + TransferOfferGeomObject='will provide', rc=rc) + if (chkErr(rc,__LINE__,u_FILE_u)) return + if (my_task == master_task) then + write(cnum,'(i0)') ns + write(stdout,'(a)') 'Advertised import field: '//trim(fldsToGlc(nf)%stdname)//' for ice sheet '//trim(cnum) + end if + call ESMF_LogWrite(subname//'Import field'//': '//trim(fldsToGlc(nf)%stdname), ESMF_LOGMSG_INFO) + end do + enddo + ! Set glc_smb ! true => get surface mass balance from land model via coupler (in multiple elev classes) ! false => use PDD scheme in GLIMMER