diff --git a/bld/namelist_files/README.CHECKLIST.interpolating_initial_conditions.md b/bld/namelist_files/README.CHECKLIST.interpolating_initial_conditions.md new file mode 100644 index 0000000000..463c3ffd65 --- /dev/null +++ b/bld/namelist_files/README.CHECKLIST.interpolating_initial_conditions.md @@ -0,0 +1,58 @@ +# Steps for interpolating out-of-the-box initial conditions + +These are the steps that should be taken when interpolating (via +`init_interp`) out-of-the-box initial conditions files. This is often done +so that we'll have out-of-the-box initial conditions files that are +compatible with the current memory allocation, etc. (thus not requiring +`init_interp` to be run all the time). + +Do the following for each initial conditions file you want to +interpolate: + +1. From the latest master tag, create and run a test using the + appropriate compset and resolution for this initial conditions + file. Note that there may be other options (like carbon isotopes) + that also need to be turned on. While doing this, generate + baselines. e.g., run + `SMS_Ld1.f09_g17.I1850Clm50Sp.cheyenne_intel.clm-default` or + `SMS_Ld1.f09_g17.I1850Clm50BgcCrop.cheyenne_intel.clm-ciso`, with + baseline generation. + + - Confirm that the test points to the desired, original finidat file, + and that `use_init_interp` is .true. by default. + +2. Rename the `finidat_interp_dest.nc` file that was generated by this + test, giving it a name that matches the original initial conditions + file, but with a new date stamp. Move this file into place + (`$CESMDATAROOT/inputdata/lnd/clm2/initdata_map/`). + +3. Add global metadata to the new file, mentioning the original file, + the test used to generate this new file, the tag used to run this + test, and a summary of what is different on this new version. For + example: + + ``` + ncatted -h -a Notes_190111,global,c,c,'Interpolated from clmi.I1850Clm50BgcCrop.1366-01-01.0.9x1.25_gx1v6_simyr1850_c171213.nc. This is the finidat_interp_dest.nc file from SMS_Ln1.f09_g17.I1850Clm50BgcCrop.cheyenne_intel, run from ctsm1.0.dev022. Updates from the previous file are: (1) uses gx1v7 rather than gx1v6; (2) many inactive points are absent.' + ``` + +4. Using `ncdump -h`, diff the headers of the new and old files, and + make sure that there are no unexpected differences. Especially look + for missing fields on the new file, which could indicate, for + example, that carbon isotopes were turned on in the original run but + not in your new run. + +5. Update `namelist_defaults_ctsm.xml` to point to the new file. + + - Be sure to change any attributes in both the `finidat` entry and + the `init_interp_attributes` entry for this file. In particular, if + the old file had the attribute `use_init_interp=".true."`, this + should now be removed. + +6. Rerun the one-day test for which you generated baselines, comparing + against these baselines. Check the following: + + - `use_init_interp` should be .false. + + - The test should use the new `finidat` file + + - The test should pass and be bit-for-bit with the baseline diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 9fae55df72..21b8bcf41a 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -474,11 +474,11 @@ attributes from the config_cache.xml file (with keys converted to upper-case). Or one specific file will be chosen over another. --> hgrid=0.9x1.25 maxpft=17 mask=gx1v6 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.false. irrigate=.false. glc_nec=10 +>hgrid=0.9x1.25 maxpft=17 mask=gx1v7 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.false. irrigate=.true. glc_nec=10 hgrid=0.9x1.25 maxpft=17 mask=gx1v6 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.false. irrigate=.false. glc_nec=10 +>hgrid=0.9x1.25 maxpft=17 mask=gx1v7 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.false. irrigate=.true. glc_nec=10 hgrid=0.9x1.25 maxpft=17 mask=gx1v6 use_cn=.false. use_nitrif_denitrif=.false. use_vertsoilc=.false. use_crop=.false. irrigate=.true. glc_nec=10 +>hgrid=0.9x1.25 maxpft=17 mask=gx1v7 use_cn=.false. use_nitrif_denitrif=.false. use_vertsoilc=.false. use_crop=.false. irrigate=.true. glc_nec=10 hgrid=0.9x1.25 maxpft=79 mask=gx1v6 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.true. irrigate=.false. glc_nec=10 +>hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.true. irrigate=.false. glc_nec=10 hgrid=0.9x1.25 maxpft=79 mask=gx1v6 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.true. irrigate=.false. glc_nec=10 +>hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_nitrif_denitrif=.true. use_vertsoilc=.true. use_crop=.true. irrigate=.false. glc_nec=10 hgrid=0.9x1.25 maxpft=17 mask=gx1v6 use_cn=.false. use_nitrif_denitrif=.false. use_vertsoilc=.false. use_crop=.false. irrigate=.true. glc_nec=10 +>hgrid=0.9x1.25 maxpft=17 mask=gx1v7 use_cn=.false. use_nitrif_denitrif=.false. use_vertsoilc=.false. use_crop=.false. irrigate=.true. glc_nec=10 -lnd/clm2/initdata_map/clmi.I1850Clm45BgcGs.0901-01-01.0.9x1.25_gx1v6_simyr1850_c180204.nc +>lnd/clm2/initdata_map/clmi.I1850Clm45BgcGs.0901-01-01.0.9x1.25_gx1v7_simyr1850_c190111.nc -lnd/clm2/initdata_map/clmi.I1850Clm45BgcCruGs.1101-01-01.0.9x1.25_gx1v6_simyr1850_c180204.nc +>lnd/clm2/initdata_map/clmi.I1850Clm45BgcCruGs.1101-01-01.0.9x1.25_gx1v7_simyr1850_c190111.nc lnd/clm2/initdata_map/clmi.B1850.0161-01-01.0.9x1.25_gx1v7_simyr1850_c180130.nc +>lnd/clm2/initdata_map/clmi.B1850.0161-01-01.0.9x1.25_gx1v7_simyr1850_c190111.nc -lnd/clm2/initdata_map/clmi.I1850Clm50Sp.0181-01-01.0.9x1.25_gx1v6_simyr1850_c171214.nc +>lnd/clm2/initdata_map/clmi.I1850Clm50Sp.0181-01-01.0.9x1.25_gx1v7_simyr1850_c190111.nc -lnd/clm2/initdata_map/clmi.I1850Clm50BgcCrop.1366-01-01.0.9x1.25_gx1v6_simyr1850_c171213.nc +>lnd/clm2/initdata_map/clmi.I1850Clm50BgcCrop-ciso.1366-01-01.0.9x1.25_gx1v7_simyr1850_c190116.nc -lnd/clm2/initdata_map/clmi.I1850Clm50BgcCropCru.1526-01-01.0.9x1.25_gx1v6_simyr1850_c180109b.nc +>lnd/clm2/initdata_map/clmi.I1850Clm50BgcCropCru-ciso.1526-01-01.0.9x1.25_gx1v7_simyr1850_c190116.nc lnd/clm2/initdata_map/clmi.B1850.0161-01-01.0.9x1.25_gx1v7_simyr1850_c180130.nc +>lnd/clm2/initdata_map/clmi.B1850.0161-01-01.0.9x1.25_gx1v7_simyr1850_c190111.nc -lnd/clm2/initdata_map/clmi.I1850Clm50SpCru.1706-01-01.0.9x1.25_gx1v6_simyr1850_c180110.nc +>lnd/clm2/initdata_map/clmi.I1850Clm50SpCru.1706-01-01.0.9x1.25_gx1v7_simyr1850_c190111.nc diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 50f51d5a39..8b01e6e5a2 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -16,12 +16,13 @@ - + + @@ -49,20 +50,22 @@ - + + - + + @@ -70,7 +73,7 @@ - + @@ -86,10 +89,10 @@ - + - + @@ -105,15 +108,7 @@ - - - - - - - - - + @@ -204,14 +199,6 @@ - - - - - - - - @@ -261,12 +248,13 @@ - + - + + @@ -451,12 +439,19 @@ - + + + + + + + + @@ -515,7 +510,7 @@ - + @@ -575,13 +570,21 @@ - + + + + + + + + + @@ -750,7 +753,7 @@ - + @@ -794,9 +797,9 @@ - + - + @@ -949,14 +952,6 @@ - - - - - - - - @@ -1020,13 +1015,13 @@ - + - + @@ -1091,7 +1086,7 @@ - + @@ -1245,22 +1240,13 @@ - + - - - - - - - - - - - + + @@ -1358,13 +1344,13 @@ - + - + @@ -1383,14 +1369,6 @@ - - - - - - - - @@ -1495,14 +1473,6 @@ - - - - - - - - @@ -1512,12 +1482,13 @@ - + + @@ -1526,7 +1497,7 @@ - + diff --git a/cime_config/testdefs/testmods_dirs/clm/basic_interp/README b/cime_config/testdefs/testmods_dirs/clm/basic_interp/README new file mode 100644 index 0000000000..7aecd6e723 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/basic_interp/README @@ -0,0 +1,2 @@ +This testmod directory is for tests that want to use the 'basic' +testmod, but also need use_init_interp = .true. diff --git a/cime_config/testdefs/testmods_dirs/clm/basic_interp/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/basic_interp/include_user_mods new file mode 100644 index 0000000000..068a5b784e --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/basic_interp/include_user_mods @@ -0,0 +1 @@ +../basic diff --git a/cime_config/testdefs/testmods_dirs/clm/basic_interp/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/basic_interp/user_nl_clm new file mode 100644 index 0000000000..05c8a39983 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/basic_interp/user_nl_clm @@ -0,0 +1 @@ +use_init_interp = .true. diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/shell_commands b/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/shell_commands deleted file mode 100755 index fdc79af2de..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/shell_commands +++ /dev/null @@ -1 +0,0 @@ -./xmlchange RUN_STARTDATE=1963-01-01 diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/user_nl_clm deleted file mode 100644 index 37b7c1ac3d..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/user_nl_clm +++ /dev/null @@ -1,6 +0,0 @@ -use_c14_bombspike=.true. -use_c13_timeseries = .true. - -! This testmod is used in a long test, so change output frequency -hist_nhtfrq = 0,-240 -hist_mfilt = 1,1 diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/include_user_mods similarity index 100% rename from cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963/include_user_mods rename to cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/include_user_mods diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/shell_commands b/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/shell_commands new file mode 100755 index 0000000000..19c5e78e3a --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/shell_commands @@ -0,0 +1,4 @@ +./xmlchange RUN_STARTDATE=1963-12-30 + +# This is done for the decStart testmod, so doing it here, too +./xmlchange CLM_BLDNML_OPTS=-ignore_warnings --append diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/user_nl_clm new file mode 100644 index 0000000000..d0d9106e48 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/ciso_bombspike1963DecStart/user_nl_clm @@ -0,0 +1,2 @@ +use_c14_bombspike=.true. +use_c13_timeseries = .true. diff --git a/cime_config/testdefs/testmods_dirs/clm/clm50KSinkMOut/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/clm50KSinkMOut/include_user_mods deleted file mode 100644 index 0a64f1e6cc..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/clm50KSinkMOut/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../clm50KitchenSink diff --git a/cime_config/testdefs/testmods_dirs/clm/clm50KSinkMOut/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/clm50KSinkMOut/user_nl_clm deleted file mode 100644 index 3c3d59e9c3..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/clm50KSinkMOut/user_nl_clm +++ /dev/null @@ -1,3 +0,0 @@ - hist_nhtfrq = 0,-240 - hist_mfilt = 1,1 - calc_human_stress_indices = 'ALL' diff --git a/cime_config/testdefs/testmods_dirs/clm/clm50KitchenSink/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/clm50KitchenSink/user_nl_clm deleted file mode 100644 index f587667b57..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/clm50KitchenSink/user_nl_clm +++ /dev/null @@ -1,7 +0,0 @@ -limit_irrigation_if_rof_enabled = .false. -leaf_mr_vcm = 0.015d00 -use_bedrock = .true. -use_luna = .true. -use_flexibleCN = .true. -use_fun = .true. -calc_human_stress_indices = 'ALL' diff --git a/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/README b/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/README deleted file mode 100644 index 566826ac8e..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/README +++ /dev/null @@ -1,23 +0,0 @@ -This testmod provides an finidat file compatible with the current model -configuration, at f09 resolution. - -This testmods directory is for running LII tests which compare the answers for a case where -initial condition interpolation is on (use_init_interp=T) to a case with it's off and ensures -they are exact. For the interpolated result to match uninterpolation, it needs to be a case that -essentially needs no interpolation so it's at the same resolution as the initial condition -file (finidat file). When surface datasets are changed, or the land-mask is changed, or an -important change is made to model physics (for example where new fields are added to the restart -file) -- you'll need to update the initial conditions file in this test (finidat file in -the user_nl_clm file). - -To update the initial conditions (finidat) file for this test: - -(1) Run the LII test; the 'base' case should run to completion even if the -no_interp test fails. - -(2) Copy the finidat_interp_dest.nc file from the 'base' case to the inputdata -space. Rename this to be similar to the name of the file pointed to in this -test's user_nl_clm file, but with a new creation date. - -(3) Update this the user_nl_clm file in this directory to point to the new -finidat file. diff --git a/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/include_user_mods deleted file mode 100644 index fe0e18cf88..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default diff --git a/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/user_nl_clm deleted file mode 100644 index dc3dedf6c4..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/compatible_finidat_f09/user_nl_clm +++ /dev/null @@ -1 +0,0 @@ -finidat = '$DIN_LOC_ROOT/lnd/clm2/initdata_map/clmi.I1850Clm50BgcCrop.1366-01-01.0.9x1.25_gx1v6_simyr1850_c180424.nc' diff --git a/cime_config/testdefs/testmods_dirs/clm/extra_outputs/README b/cime_config/testdefs/testmods_dirs/clm/extra_outputs/README new file mode 100644 index 0000000000..83fad7964a --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/extra_outputs/README @@ -0,0 +1 @@ +This test mod turns on extra diagnostic fields diff --git a/cime_config/testdefs/testmods_dirs/clm/clm50KitchenSink/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/extra_outputs/include_user_mods similarity index 100% rename from cime_config/testdefs/testmods_dirs/clm/clm50KitchenSink/include_user_mods rename to cime_config/testdefs/testmods_dirs/clm/extra_outputs/include_user_mods diff --git a/cime_config/testdefs/testmods_dirs/clm/extra_outputs/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/extra_outputs/user_nl_clm new file mode 100644 index 0000000000..512a426909 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/extra_outputs/user_nl_clm @@ -0,0 +1 @@ +calc_human_stress_indices = 'ALL' diff --git a/cime_config/testdefs/testmods_dirs/clm/waccmx_offline/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/waccmx_offline/user_nl_clm index 2822111c11..2da32e0ad6 100644 --- a/cime_config/testdefs/testmods_dirs/clm/waccmx_offline/user_nl_clm +++ b/cime_config/testdefs/testmods_dirs/clm/waccmx_offline/user_nl_clm @@ -1,5 +1,5 @@ ! Add in an initial condition file that isn't in equilibrium and will need to be brought into equilibrium. ! We purposely want to add a shock to ensure the model can properly respond to it, skipping balance checks ! at the beginning and then coming into balance after enough time. - finidat = '$DIN_LOC_ROOT/lnd/clm2/initdata_map/clmi.I1850Clm45BgcGs.0901-01-01.0.9x1.25_gx1v6_simyr1850_c180204.nc' + finidat = '$DIN_LOC_ROOT/lnd/clm2/initdata_map/clmi.I1850Clm45BgcGs.0901-01-01.0.9x1.25_gx1v7_simyr1850_c190111.nc' use_init_interp = .true. diff --git a/doc/.ChangeLog_template b/doc/.ChangeLog_template index 3f6717a297..6b7fdb673f 100644 --- a/doc/.ChangeLog_template +++ b/doc/.ChangeLog_template @@ -48,7 +48,7 @@ Substantial timing or memory changes: [For timing changes, can check PFS test(s) Notes of particular relevance for developers: (including Code reviews and testing) --------------------------------------------- -NOTE: Be sure to review the steps in ../CTSMMasterChecklist as well as the coding style in the Developers Guide +NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide Caveats for developers (e.g., code that is duplicated that requires double maintenance): diff --git a/doc/ChangeLog b/doc/ChangeLog index d0eea65daf..7e8e85a62f 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -107,6 +107,205 @@ List any externals directories updated (cime, rtm, mosart, cism, fates, etc.): Pull Requests that document the changes (include PR ids): https://github.com/ESCOMP/ctsm/pull/639 +=============================================================== +=============================================================== +Tag name: ctsm1.0.dev028 +Originator(s): sacks (Bill Sacks) +Date: Tue Feb 26 14:35:01 MST 2019 +One-line Summary: Interpolate out-of-the-box initial conditions and remove expensive tests + +Purpose of changes +------------------ + +Two main changes (plus some small additional changes): + +1. Removed / reworked some expensive tests + +2. Interpolated all out-of-the-box initial conditions, so that the + out-of-the-box version is now compatible with our current + configuration. The changes from before were (a) our standard + configuration now uses the gx1v7 rather than gx1v6 land mask; (b) + many inactive points are now absent in memory. + +See https://github.com/ESCOMP/ctsm/pull/622 for details. + + +Bugs fixed or introduced +------------------------ + +Issues fixed (include CTSM Issue #): +- Resolves ESCOMP/ctsm#312 +- Partially addresses ESCOMP/ctsm#275 (just a bit) + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm5_0 + +[ ] clm4_5 + +Notes of particular relevance for users +--------------------------------------- + +Caveats for users (e.g., need to interpolate initial conditions): none + +Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): none + +Changes made to namelist defaults (e.g., changed parameter values): none + +Changes to the datasets (e.g., parameter, surface or initial files): +- New finidat files + +Substantial timing or memory changes: +- Faster initialization times for cases that no longer need to interpolate initial conditions + +Notes of particular relevance for developers: (including Code reviews and testing) +--------------------------------------------- +NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide + +Caveats for developers (e.g., code that is duplicated that requires double maintenance): none + +Changes to tests or testing: +- Removed or reworked expensive tests: see details in https://github.com/ESCOMP/ctsm/pull/622 + +Code reviewed by: Erik Kluzek + + +CTSM testing: + + [PASS means all tests PASS and OK means tests PASS other than expected fails.] + + build-namelist tests: + + cheyenne - not run + + tools-tests (test/tools): + + cheyenne - not run + + PTCLM testing (tools/shared/PTCLM/test): + + cheyenne - not run + + regular tests (aux_clm): + + cheyenne ---- ok + hobart ------ ok + + ok: tests pass, baselines fail as expected + +CTSM tag used for the baseline comparisons: ctsm1.0.dev027 + + +Answer changes +-------------- + +Changes answers relative to baseline: YES + + If a tag changes answers relative to baseline comparison the + following should be filled in (otherwise remove this section): + + Summarize any changes to answers, i.e., + - what code configurations: all configurations that still need use_init_interp = .true. + - what platforms/compilers: all + - nature of change (roundoff; larger than roundoff/same climate; new climate): + Not investigated carefully, but expected to be larger than roundoff/same climate + + Answers change for cases that still need to do interpolation from + these out-of-the-box finidat files. + + I first confirmed that the new finidat files are good via: + + - Compared `ncdump -h` of old vs. new initial conditions files + + - Ran the following tests, with comparison against master; verified that + these all pass and are bit-for-bit, that they use the new initial + conditions files, and that they now have `use_init_interp` unset + (whereas they used to have `use_init_interp` set to `.true.`); note + that these cover 6 of the 7 new initial conditions files: + + ``` + SMS_Ld1.f09_g17.I1850Clm45BgcGs.cheyenne_intel.clm-default + SMS_Ld1.f09_g17.I1850Clm45BgcCruGs.cheyenne_intel.clm-default + SMS_Ld1.f09_g17.I1850Clm50Sp.cheyenne_intel.clm-default + SMS_Ld1.f09_g17.I1850Clm50BgcCrop.cheyenne_intel.clm-ciso + SMS_Ld1.f09_g17.I1850Clm50BgcCropCru.cheyenne_intel.clm-ciso + SMS_Ld1.f09_g17.I1850Clm50SpCru.cheyenne_intel.clm-default + ``` + + - To cover the last new initial conditions file, ran the following test + (with the same checks as above: passes and bit-for-bit, checked + finidat, and checked `use_init_interp`), with `./xmlchange + LND_TUNING_MODE=clm5_0_cam6.0` (for the baseline for this test, I set + `init_interp_method = 'use_finidat_areas'`, which I also used in + interpolating this initial conditions file): + + ``` + SMS_Ld1.f09_g17.I1850Clm50BgcCrop.cheyenne_intel + ``` + + Details on answer changes: + + As noted above, these changes are bit-for-bit for configurations + that can now use the out-of-the-box initial conditions without + interpolation. However, answers change for configurations that still + require interpolation of the out-of-the-box initial conditions + (e.g., because they are at a different resolution than the finidat + file). + + I expected these answer changes around the Caspian Sea, due to the + fact that we are now effectively interpolating twice from the + original file: once to produce the new out-of-the-box file (which + includes an interpolation from `gx1v6` to `gx1v7`, and so + interpolates onto the Caspian Sea region) and once to go from + `f09_g17` to the target resolution (rather than interpolating + directly from `f09_g16` to the target resolution). + + However, when I ran a test with comparison to baselines - + `ERP_Ld5.f19_g17.I1850Clm50Bgc.cheyenne_intel.clm-default` - I saw + changes in regions further afield than simply around the Caspian + Sea. See images in https://github.com/ESCOMP/ctsm/pull/622 for + details. It's possible that the other differences are also due to + the Caspian Sea change, but it's also possible that there is some + other cause here that I don't understand. But Erik Kluzek and I + agreed that it isn't worth trying to understand these other + (isolated) differences. + + Also note: While most f09_g17 tests are bit-for-bit with the earlier + tag (because now use_init_interp is .false. for those tests), + `SMS_Ld2_D.f09_g17.I1850Clm50BgcCropCmip6.cheyenne_intel.clm-basic_interp` + differs in some glc forcing fields for a few grid cells in + Antarctica. This is perhaps not surprising, since this test needs to + use interpolation to get fields for the Antarctica virtual columns; + so, while I don't completely understand the cause of these answer + changes, I suspect the root cause is similar to the isolated answer + changes I saw sprinkled around the world for + `ERP_Ld5.f19_g17.I1850Clm50Bgc.cheyenne_intel.clm-default`. + + If bitwise differences were observed, how did you show they were no worse + than roundoff? N/A + + If this tag changes climate describe the run(s) done to evaluate the new + climate (put details of the simulations in the experiment database) + - casename: N/A + + URL for LMWG diagnostics output used to validate new climate: N/A + + +Detailed list of changes +------------------------ + +List any externals directories updated (cime, rtm, mosart, cism, fates, etc.): none + +Pull Requests that document the changes (include PR ids): +- https://github.com/ESCOMP/ctsm/pull/622 + =============================================================== =============================================================== Tag name: ctsm1.0.dev027 diff --git a/doc/ChangeSum b/doc/ChangeSum index 641f14486b..210ec1adfa 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,6 +1,7 @@ Tag Who Date Summary ============================================================================================================================ ctsm1.0.dev029 slevis 02/26/2019 Collapse landunits to the N most dominant + ctsm1.0.dev028 sacks 02/26/2019 Interpolate out-of-the-box initial conditions and remove expensive tests ctsm1.0.dev027 negins 02/19/2019 non-constant time init for soil hydrology types are moved to SoilHydrologyType.F90 ctsm1.0.dev026 slevis 02/05/2019 Collapse unmanaged PFTs to the N most dominant ctsm1.0.dev025 sacks 01/23/2019 History fields for vertically-resolved sums of soil C and N, and minor fixes diff --git a/CTSMMasterChecklist b/doc/README.CHECKLIST.master_tags similarity index 93% rename from CTSMMasterChecklist rename to doc/README.CHECKLIST.master_tags index 793146c2a1..18b2390625 100644 --- a/CTSMMasterChecklist +++ b/doc/README.CHECKLIST.master_tags @@ -64,6 +64,12 @@ This should show no diffs (10) Push master and tag to ESCOMP/ctsm +(11) Update the CTSM upcoming tags project, if necessary + (https://github.com/ESCOMP/ctsm/projects/6) + +(12) Add tag to the CESM test database + (https://csegweb.cgd.ucar.edu/testdb) + ---- NOTES ---- (3) -- Always test on your fork with a feature-branch so that we can change tag order if needed. Put diff --git a/doc/design/directory_organization.rst b/doc/design/directory_organization.rst new file mode 100644 index 0000000000..eee5db90ae --- /dev/null +++ b/doc/design/directory_organization.rst @@ -0,0 +1,18 @@ +.. sectnum:: + +.. contents:: + +===================================================== + General notes about file and directory organization +===================================================== + +- Various checklists (useful for developers) are scattered throughout the repository, in + the location that is most closely related to the given process. To aid discovery of + these checklists, these have the naming convention ``README.CHECKLIST.*``. + +- Unit tests are stored in the ``test`` subdirectory of each ``src`` directory. For + example, unit tests of biogeophysics modules reside in + ``src/biogeophysics/test``. Within each test subdirectory, there are further + subdirectories for each set of unit tests. These typically correspond to a single module + (e.g., ``src/biogeophysics/test/Irrigation_test`` contains tests of + ``src/biogeophysics/IrrigationMod.F90``), but that is not a strict requirement. diff --git a/python/ctsm/run_sys_tests.py b/python/ctsm/run_sys_tests.py index 11f751d1f9..7d4433dd43 100644 --- a/python/ctsm/run_sys_tests.py +++ b/python/ctsm/run_sys_tests.py @@ -12,6 +12,7 @@ from ctsm.machine import create_machine from ctsm.machine_defaults import MACHINE_DEFAULTS from ctsm.path_utils import path_to_ctsm_root +from ctsm.joblauncher.job_launcher_factory import JOB_LAUNCHER_NOBATCH from CIME.test_utils import get_tests_from_xml # pylint: disable=import-error from CIME.cs_status_creator import create_cs_status # pylint: disable=import-error @@ -44,7 +45,12 @@ def main(cime_path): args = _commandline_args() process_logging_args(args) logger.info('Running on machine: %s', args.machine_name) + if args.job_launcher_nobatch: + job_launcher_type = JOB_LAUNCHER_NOBATCH + else: + job_launcher_type = None machine = create_machine(machine_name=args.machine_name, + job_launcher_type=job_launcher_type, defaults=MACHINE_DEFAULTS, account=args.account, job_launcher_queue=args.job_launcher_queue, @@ -269,6 +275,10 @@ def _commandline_args(): '(To allow the argument parsing to accept this, enclose the string\n' 'in quotes, with a leading space, as in " --my-arg foo".)') + parser.add_argument('--job-launcher-nobatch', action='store_true', + help='Run create_test on the login node, even if this machine\n' + 'is set up to submit create_test to a compute node by default.') + parser.add_argument('--job-launcher-queue', help='Queue to which the create_test command is submitted.\n' 'Only applies on machines for which we submit the create_test command\n' diff --git a/src/main/glc2lndMod.F90 b/src/main/glc2lndMod.F90 index c7e4402ac9..5fe1dac966 100644 --- a/src/main/glc2lndMod.F90 +++ b/src/main/glc2lndMod.F90 @@ -48,7 +48,7 @@ module glc2lndMod real(r8), pointer, private :: topo_grc (:,:) => null() real(r8), pointer, private :: hflx_grc (:,:) => null() - ! Area in which GLC model can accept surface mass balance, received from glc (0-1) + ! Area in which values from GLC are valid, received from GLC (0-1) real(r8), pointer, private :: icemask_grc (:) => null() ! icemask_coupled_fluxes_grc is like icemask_grc, but the mask only contains icesheet