diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index c3f1866bf4..02de98ea6e 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -1688,6 +1688,7 @@ sub process_namelist_inline_logic { setup_logic_cnmatrix($opts, $nl_flags, $definition, $defaults, $nl, $envxml_ref); setup_logic_spinup($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_supplemental_nitrogen($opts, $nl_flags, $definition, $defaults, $nl); + setup_logic_c_isotope($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_snowpack($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_fates($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_z0param($opts, $nl_flags, $definition, $defaults, $nl); @@ -1737,7 +1738,6 @@ sub process_namelist_inline_logic { # namelist group: ch4par_in # ############################### setup_logic_methane($opts, $nl_flags, $definition, $defaults, $nl); - setup_logic_c_isotope($opts, $nl_flags, $definition, $defaults, $nl); ############################### # namelist group: ndepdyn_nml # @@ -3175,10 +3175,11 @@ sub setup_logic_do_grossunrep { my $var = 'do_grossunrep'; - # Start by assuming a default value of '.true.'. Then check a number of + # Start by assuming a default value of '.false.'. Then check a number of # conditions under which do_grossunrep cannot be true. Under these - # conditions: (1) set default value to '.false.'; (2) make sure that the + # conditions: (1) set default value to '.false.' again; (2) make sure that the # value is indeed false (e.g., that the user didn't try to set it to true). + # Ideally the default value would be set in namelist_defaults my $default_val = ".false."; @@ -3703,63 +3704,53 @@ sub setup_logic_c_isotope { # my ($opts, $nl_flags, $definition, $defaults, $nl) = @_; + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c13', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c14', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); my $use_c13 = $nl->get_value('use_c13'); my $use_c14 = $nl->get_value('use_c14'); if ( $nl_flags->{'bgc_mode'} ne "sp" && $nl_flags->{'bgc_mode'} ne "fates" ) { if ( $nl_flags->{'bgc_mode'} ne "bgc" ) { - if ( defined($use_c13) && &value_is_true($use_c13) ) { + if ( &value_is_true($use_c13) ) { $log->warning("use_c13 is ONLY scientifically validated with the bgc=BGC configuration" ); } - if ( defined($use_c14) && &value_is_true($use_c14) ) { + if ( &value_is_true($use_c14) ) { $log->warning("use_c14 is ONLY scientifically validated with the bgc=BGC configuration" ); } } - if ( defined($use_c14) ) { - if ( &value_is_true($use_c14) ) { - my $use_c14_bombspike = $nl->get_value('use_c14_bombspike'); - if ( defined($use_c14_bombspike) && &value_is_true($use_c14_bombspike) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c14_filename', - 'use_c14'=>$use_c14, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c14_bombspike'=>$nl->get_value('use_c14_bombspike'), - 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); - } - } else { - if ( defined($nl->get_value('use_c14_bombspike')) || - defined($nl->get_value('atm_c14_filename')) ) { - $log->fatal_error("use_c14 is FALSE and use_c14_bombspike or atm_c14_filename set"); - } + if ( &value_is_true($use_c14) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c14_bombspike', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); + my $use_c14_bombspike = $nl->get_value('use_c14_bombspike'); + if ( &value_is_true($use_c14_bombspike) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c14_filename', + 'use_c14'=>$use_c14, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c14_bombspike'=>$nl->get_value('use_c14_bombspike'), + 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); } } else { if ( defined($nl->get_value('use_c14_bombspike')) || defined($nl->get_value('atm_c14_filename')) ) { - $log->fatal_error("use_c14 NOT set to .true., but use_c14_bompspike/atm_c14_filename defined."); + $log->fatal_error("use_c14 is FALSE and use_c14_bombspike or atm_c14_filename set"); } } - if ( defined($use_c13) ) { - if ( &value_is_true($use_c13) ) { - my $use_c13_timeseries = $nl->get_value('use_c13_timeseries'); - if ( defined($use_c13_timeseries) && &value_is_true($use_c13_timeseries) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c13_filename', - 'use_c13'=>$use_c13, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c13_timeseries'=>$nl->get_value('use_c13_timeseries'), - 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); - } - } else { - if ( defined($nl->get_value('use_c13_timeseries')) || - defined($nl->get_value('atm_c13_filename')) ) { - $log->fatal_error("use_c13 is FALSE and use_c13_timeseries or atm_c13_filename set"); - } + if ( &value_is_true($use_c13) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c13_timeseries', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); + my $use_c13_timeseries = $nl->get_value('use_c13_timeseries'); + if ( &value_is_true($use_c13_timeseries) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c13_filename', + 'use_c13'=>$use_c13, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c13_timeseries'=>$nl->get_value('use_c13_timeseries'), + 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); } } else { if ( defined($nl->get_value('use_c13_timeseries')) || defined($nl->get_value('atm_c13_filename')) ) { - $log->fatal_error("use_c13 NOT set to .true., but use_c13_bompspike/atm_c13_filename defined."); + $log->fatal_error("use_c13 is FALSE and use_c13_timeseries or atm_c13_filename set"); } } } else { - if ( defined($use_c13) || - defined($use_c14) || - defined($nl->get_value('use_c14_bombspike')) || + if ( &value_is_true($use_c13) || + &value_is_true($use_c14) || + &value_is_true($nl->get_value('use_c14_bombspike')) || defined($nl->get_value('atm_c14_filename')) || - defined($nl->get_value('use_c13_timeseries')) || + &value_is_true($nl->get_value('use_c13_timeseries')) || defined($nl->get_value('atm_c13_filename')) ) { $log->fatal_error("bgc=sp and C isotope namelist variables were set, both can't be used at the same time"); } diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 574b6feec9..50e3cf68ad 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -110,6 +110,17 @@ attributes from the config_cache.xml file (with keys converted to upper-case). Medlyn2011 Ball-Berry1987 + +.false. +.false. +.false. +.false. + +.true. +.true. +.true. +.true. + lnd/clm2/isotopes/atm_delta_C13_CMIP6_1850-2015_yearly_v2.0_c190528.nc lnd/clm2/isotopes/atm_delta_C13_CMIP6_SSP119_1850-2100_yearly_c181209.nc @@ -484,13 +495,11 @@ attributes from the config_cache.xml file (with keys converted to upper-case). Jordan1991 Sturm1997 - Jordan1991 -Sturm1997 +Jordan1991 - Jordan1991 -Jordan1991 +Sturm1997 -lnd/clm2/paramdata/ctsm60_params.c250311.nc +lnd/clm2/paramdata/ctsm5.3.041.Nfix_params.v13.c250221_upplim250.nc lnd/clm2/paramdata/clm50_params.c250311.nc lnd/clm2/paramdata/clm45_params.c250311.nc @@ -1288,15 +1297,15 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_pSASU.clm2.r.0161-01-01-00000.nc + phys="clm6_0" use_init_interp=".true." +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_pSASU.clm2.r.0161-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_pSASU.clm2.r.0081-01-01-00000_64bitoffset.nc lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_hist.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_hist.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_HIST.clm2.r.2000-01-01-00000.nc diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 79add82fed..9d41952366 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -62,6 +62,20 @@ + + + FAIL + #3252 + Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. + + + + + FAIL + #3252 + Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. + + FAIL diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 6bb09b5833..943cd37e65 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -150,7 +150,7 @@ - + @@ -561,7 +561,7 @@ - + @@ -569,7 +569,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -1349,7 +1349,7 @@ - + @@ -1605,7 +1605,7 @@ - + @@ -2283,7 +2283,7 @@ - + @@ -2292,7 +2292,7 @@ - + @@ -2759,7 +2759,7 @@ - + @@ -2889,7 +2889,7 @@ - + @@ -2931,7 +2931,7 @@ - + @@ -2946,7 +2946,7 @@ - + @@ -3382,7 +3382,7 @@ - + @@ -3431,7 +3431,7 @@ - + @@ -4398,7 +4398,7 @@ - + diff --git a/doc/ChangeLog b/doc/ChangeLog index f16cfe585a..0c1927c239 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,96 @@ =============================================================== +Tag name: ctsm5.3.060 +Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) +Date: Tue 24 Jun 2025 02:13:05 PM MDT +One-line Summary: Preliminary update of ctsm54 defaults (answer changing) + +Purpose and description of changes +---------------------------------- + + Brings to master some of the work done in #3206, which I merged to the ctsm5.4 alpha branch recently as tag alpha-ctsm5.4.CMIP7.02.ctsm5.3.055. + + Allows Cecile to run coupled without having to adjust clm things manually: updates namelist defaults and IC files that have been limited to the ctsm5.4 branch so far. + +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.] + +[x] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + Resolves #3116 modify snow thermal conductivity defaults + Resolves #3005 ctsm54 initial condition files + +Notes of particular relevance for users +--------------------------------------- +Changes made to namelist defaults (e.g., changed parameter values): + a3ce6a7 changes the default snow thermal conductivity schemes over lakes and glaciers in clm6 cases + +Changes to the datasets (e.g., parameter, surface or initial files): + a75e488 introduces new paramfile to clm6 cases + 3a8c432 introduces new f09 and ne30 finidat files for 1850 and 2000 clm6 cases + Reverted preexisting changes to the default raw datasets that came in with #3206 (from the ctsm54 branch) + Reverted changes to the f09 and ne30 fsurdat/landuse files that came in with b1890ac + +Changes to documentation: + None, yet + +Notes of particular relevance for developers: +--------------------------------------------- +Changes to tests or testing: + The next 2 tests are now labeled EXPECTED FAILURE in the RUN phase, to be addressed in issue #3252: + LII2FINIDATAREAS_D_P256x2_Ld1.f09_g17.I1850Clm50BgcCrop.derecho_intel.clm-default--clm-matrixcnOn_ignore_warnings + LII2FINIDATAREAS_D_P256x2_Ld1.f09_g17.I1850Clm50BgcCrop.derecho_intel.clm-default + +Testing summary: +---------------- + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + derecho - PASS + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK (see Changes to tests above) + izumi ------- OK + + fates tests: (-c fates-sci.1.84.0_api.40.0.0-ctsm5.3.051 -g fates-sci.1.84.0_api.40.0.0-ctsm5.3.060) + derecho ----- OK + izumi ------- OK + +Answer changes +-------------- + +Changes answers relative to baseline: Yes + + Summarize any changes to answers, i.e., + - what code configurations: various + - what platforms/compilers: all + - nature of change: larger than roundoff/same climate + + See above in changes to namelist defaults and datasets for the sources of change. + +Other details +------------- +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/3268 + +=============================================================== +=============================================================== Tag name: ctsm5.3.059 Originator(s): erik (Erik Kluzek) Date: Mon 23 Jun 2025 01:39:37 AM MDT diff --git a/doc/ChangeSum b/doc/ChangeSum index f5bfed6ef6..522c814f4a 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.060 slevis 06/24/2025 Preliminary update of ctsm54 defaults (answer changing) ctsm5.3.059 erik 06/23/2025 Bring in various cleanup efforts found in previous testing after the chill changes came in ctsm5.3.058 samrabin 06/16/2025 Fix clm6 compset aliases ctsm5.3.057 glemieux 06/13/2025 Fix PEM test for on-the-fly parameter file generation diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py index d517ecf244..c3f762380e 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py @@ -37,7 +37,7 @@ def base_get_parser(default_js_name="mksurfdata_jobscript_single.sh"): default_account = os.environ.get("ACCOUNT") if default_account is None: - default_account = "P93300641" + default_account = "P93300041" parser.add_argument( "--account", help="""account number (default: %(default)s)""",