diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index c2361225ae..17e6432e31 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -1404,6 +1404,15 @@ + + + + + + + + + diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/shell_commands b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/shell_commands new file mode 100644 index 0000000000..eb40ad83e0 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/shell_commands @@ -0,0 +1,2 @@ +./xmlchange ROF_NCPL=\$ATM_NCPL +./xmlchange GLC_NCPL=\$ATM_NCPL diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_cam b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_cam new file mode 100644 index 0000000000..3edf536070 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_cam @@ -0,0 +1,7 @@ +mfilt=1,1,1,1,1,1 +ndens=1,1,1,1,1,1 +nhtfrq=9,9,9,9,9,9 +inithist='ENDOFRUN' +mpas_cam_coef=1.0D0 +mpas_cam_damping_levels=3 +pertlim = 1.e-14 diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_clm b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_clm new file mode 100644 index 0000000000..c4cb9d28d6 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_clm @@ -0,0 +1,3 @@ +hist_nhtfrq = 9 +hist_mfilt = 1 +hist_ndens = 1 diff --git a/doc/ChangeLog b/doc/ChangeLog index 8f0f0e668a..e57931b4cd 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,74 @@ =============================================================== +Tag name: cam6_4_070 +Originator(s): patcal, nusbaume +Date: 22 February 2025 +One-line Summary: Pertlim fix for MPAS +Github PR URL: https://github.com/ESCOMP/CAM/pull/1114 + +Purpose of changes (include the issue number and title text for each relevant GitHub issue): + +Closes #1109 - MPAS-A Pertlim usage is only implemented for ideal initial states + +Describe any changes made to build system: N/A + +Describe any changes made to the namelist: N/A + +List any changes to the defaults for the boundary datasets: N/A + +Describe any substantial timing or memory changes: N/A + +Code reviewed by: jtruesdal + +List all files eliminated: N/A + +List all files added and what they do: + +A cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/shell_commands +A cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_cam +A cime_config/testdefs/testmods_dirs/cam/outfrq9s_mpasa480_pertlim/user_nl_clm + - Add new MPAS pertlim regression test files. + +List all existing files that have been modified, and describe the changes: + +M src/dynamics/mpas/dyn_comp.F90 + - Allow initial state perturbations with MPAS when reading from the ncdata file. + +M cime_config/testdefs/testlist_cam.xml + - Add new MPAS pertlim regression test files. + +If there were any failures reported from running test_driver.sh on any test +platform, and checkin with these failures has been OK'd by the gatekeeper, +then copy the lines from the td.*.status files for the failed tests to the +appropriate machine below. All failed tests must be justified. + +derecho/intel/aux_cam: + +ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s (Overall: FAIL) +SMS_Ld1.f09_f09_mg17.FCHIST_GC.derecho_intel.cam-outfrq1d (Overall: DIFF) + - pre-existing failures due to HEMCO not having reproducible results (issues #1018 and #856) + +ERS_D_Ln9.mpasa480_mpasa480.F2000climo.derecho_intel.cam-outfrq9s_mpasa480_pertlim (Overall: DIFF) + - New test (so no baselines yet) + +SMS_D_Ln9.f19_f19_mg17.FXHIST.derecho_intel.cam-outfrq9s_amie (Overall: FAIL) +SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s (Overall: FAIL) + - pre-existing failures due to build-namelist error requiring CLM/CTSM external update + +derecho/nvhpc/aux_cam: ALL PASS + +izumi/nag/aux_cam: ALL PASS + +izumi/gnu/aux_cam: ALL PASS + +CAM tag used for the baseline comparison tests if different than previous +tag: + +Summarize any changes to answers: b4b + +=============================================================== +=============================================================== + Tag name: cam6_4_069 Originator(s): peverwhee Date: 20 February 2025 @@ -29,7 +98,7 @@ List all files added and what they do: none List all existing files that have been modified, and describe the changes: .github/workflows/fleximod_test.yaml - - update fleximod workflow to include check that the checked out externals + - update fleximod workflow to include check that the checked out externals match what is expected .gitmodules @@ -218,7 +287,7 @@ cime_config/config_compsets.xml all FSCAM* compsets . remove FDABIP04 (_CAM%DABIP04_) . In the future new tests will be added for FSCAM* compsets using SE - dycore. + dycore. cime_config/config_component.xml . remove eul as valid value for CAM_DYCORE @@ -338,7 +407,7 @@ Resolve #1171 - Remove SP-CAM from cam_development Describe any changes made to build system: . remove spcam build options -Describe any changes made to the namelist: +Describe any changes made to the namelist: . remove spcam namelist options List any changes to the defaults for the boundary datasets: none diff --git a/src/dynamics/mpas/dyn_comp.F90 b/src/dynamics/mpas/dyn_comp.F90 index a1b02c1f86..a82978f2cf 100644 --- a/src/dynamics/mpas/dyn_comp.F90 +++ b/src/dynamics/mpas/dyn_comp.F90 @@ -11,7 +11,7 @@ module dyn_comp use const_init, only: cnst_init_default use cam_control_mod, only: initial_run -use cam_initfiles, only: initial_file_get_id, topo_file_get_id +use cam_initfiles, only: initial_file_get_id, topo_file_get_id, pertlim use cam_grid_support, only: cam_grid_id, & cam_grid_get_latvals, cam_grid_get_lonvals @@ -813,6 +813,11 @@ subroutine read_inidat(dyn_in) logical :: readvar + integer :: rndm_seed_sz + integer, allocatable :: rndm_seed(:) + real(r8) :: pertval + integer :: nc + character(len=shr_kind_cx) :: str type(mpas_pool_type), pointer :: mesh_pool @@ -1083,6 +1088,29 @@ subroutine read_inidat(dyn_in) call endrun(subname//': failed to read theta from initial file') end if + ! optionally introduce random perturbations to theta values + if (pertlim.ne.0.0_r8) then + if (masterproc) then + write(iulog,*) trim(subname), ': Adding random perturbation bounded', & + 'by +/- ', pertlim, ' to initial theta field' + end if + + call random_seed(size=rndm_seed_sz) + allocate(rndm_seed(rndm_seed_sz)) + + do nc = 1,nCellsSolve + rndm_seed = glob_ind(nc) + call random_seed(put=rndm_seed) + do kk = 1,plev + call random_number(pertval) + pertval = 2.0_r8*pertlim*(0.5_r8 - pertval) + theta(kk,nc) = theta(kk,nc)*(1.0_r8 + pertval) + end do + end do + + deallocate(rndm_seed) + end if + ! read rho call infld('rho', fh_ini, 'lev', 'nCells', 1, plev, 1, nCellsSolve, 1, 1, & mpas3d, readvar, gridname='mpas_cell')