From f4ec0be1a58040df5eda53c8d0aef691397f9cf4 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Tue, 10 Oct 2023 13:41:47 -0600 Subject: [PATCH 01/10] namelist changes to match run 51 --- bld/build-namelist | 2 +- bld/namelist_files/namelist_defaults_cam.xml | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bld/build-namelist b/bld/build-namelist index 90bd503820..2aed26c551 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -3115,7 +3115,7 @@ if ($cfg->get('microphys') =~ /^mg/) { $micro_mg_dcs = '500.D-6'; # default for cam6 } elsif ($phys eq 'cam_dev') { - $micro_mg_dcs = '250.D-6'; # default for cam_dev + $micro_mg_dcs = '500.D-6'; # default for cam_dev } } diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index fc74b3e978..0ff0aae7f3 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -2065,9 +2065,11 @@ .true. .false. 0.308 + 0.3 0.280 0.270 0.32 + 0.3 2 0.04 0.1 @@ -2226,11 +2228,12 @@ 1.D0 1.D0 + 0.25D0 1.D0 - 2.5D0 0.2D0 + 0.D0 0.001D0 @@ -2238,7 +2241,6 @@ 25.D-6 1.D0 - 0.5D0 1.D0 1.D0 From 221dc72c6d97d3fdbb970a5cd8216bb936a006b1 Mon Sep 17 00:00:00 2001 From: adamrher Date: Tue, 10 Oct 2023 15:06:55 -0600 Subject: [PATCH 02/10] cloud ice fraction changes for cam_dev --- bld/build-namelist | 2 + bld/namelist_files/namelist_defaults_cam.xml | 4 ++ bld/namelist_files/namelist_definition.xml | 12 +++++ src/physics/cam/cldfrc2m.F90 | 48 ++++++++++++++------ 4 files changed, 52 insertions(+), 14 deletions(-) diff --git a/bld/build-namelist b/bld/build-namelist index 2aed26c551..3bd154b375 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -3460,6 +3460,8 @@ if (!$simple_phys) { add_default($nl, 'cldfrc2m_rhmaxi'); add_default($nl, 'cldfrc2m_rhminis'); add_default($nl, 'cldfrc2m_rhmaxis'); + add_default($nl, 'cldfrc2m_qist_min'); + add_default($nl, 'cldfrc2m_qist_max'); add_default($nl, 'cldfrc2m_do_subgrid_growth'); } diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 0ff0aae7f3..be857d9155 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -2646,6 +2646,10 @@ 1.0D0 1.0D0 +1.e-7 +5.e-6 +5.e-3 + .false. .false. diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml index a64571989a..e34eed30d6 100644 --- a/bld/namelist_files/namelist_definition.xml +++ b/bld/namelist_files/namelist_definition.xml @@ -3146,6 +3146,18 @@ rhi at which ice cloud fraction = 1 in the stratosphere. Default: set by build-namelist + +Minimum in-stratus ice IWC constraint [ kg/kg ] +Default: set by build-namelist + + + +Maximum in-stratus ice IWC constraint [ kg/kg ] +Default: set by build-namelist + + Use cloud fraction to determine whether to do growth of ice clouds below diff --git a/src/physics/cam/cldfrc2m.F90 b/src/physics/cam/cldfrc2m.F90 index 28a19ca07a..54270d2fde 100644 --- a/src/physics/cam/cldfrc2m.F90 +++ b/src/physics/cam/cldfrc2m.F90 @@ -10,6 +10,7 @@ module cldfrc2m svp_water_vect, svp_ice_vect use cam_logfile, only: iulog use cam_abortutils, only: endrun +use phys_control, only: cam_physpkg_is implicit none private @@ -35,18 +36,17 @@ module cldfrc2m real(r8) :: cldfrc2m_rhmaxi real(r8) :: cldfrc2m_rhminis ! Minimum rh for ice cloud fraction > 0 in the stratsophere. real(r8) :: cldfrc2m_rhmaxis +real(r8) :: cldfrc2m_qist_min ! Minimum in-stratus ice IWC constraint [ kg/kg ] +real(r8) :: cldfrc2m_qist_max ! Maximum in-stratus ice IWC constraint [ kg/kg ] logical :: cldfrc2m_do_subgrid_growth = .false. ! -------------------------- ! ! Parameters for Ice Stratus ! ! -------------------------- ! real(r8), protected :: rhmini_const ! Minimum rh for ice cloud fraction > 0. real(r8), protected :: rhmaxi_const -real(r8), protected :: rhminis_const ! Minimum rh for ice cloud fraction > 0. +real(r8), protected :: rhminis_const ! Minimum rh for ice cloud fraction > 0. real(r8), protected :: rhmaxis_const -real(r8), parameter :: qist_min = 1.e-7_r8 ! Minimum in-stratus ice IWC constraint [ kg/kg ] -real(r8), parameter :: qist_max = 5.e-3_r8 ! Maximum in-stratus ice IWC constraint [ kg/kg ] - ! ----------------------------- ! ! Parameters for Liquid Stratus ! ! ----------------------------- ! @@ -82,7 +82,8 @@ subroutine cldfrc2m_readnl(nlfile) integer :: unitn, ierr character(len=*), parameter :: subname = 'cldfrc2m_readnl' - namelist /cldfrc2m_nl/ cldfrc2m_rhmini, cldfrc2m_rhmaxi, cldfrc2m_rhminis, cldfrc2m_rhmaxis, cldfrc2m_do_subgrid_growth + namelist /cldfrc2m_nl/ cldfrc2m_rhmini, cldfrc2m_rhmaxi, cldfrc2m_rhminis, cldfrc2m_rhmaxis, cldfrc2m_do_subgrid_growth, & + cldfrc2m_qist_min, cldfrc2m_qist_max !----------------------------------------------------------------------------- if (masterproc) then @@ -103,7 +104,6 @@ subroutine cldfrc2m_readnl(nlfile) rhmaxi_const = cldfrc2m_rhmaxi rhminis_const = cldfrc2m_rhminis rhmaxis_const = cldfrc2m_rhmaxis - end if ! Broadcast namelist variables @@ -111,6 +111,8 @@ subroutine cldfrc2m_readnl(nlfile) call mpi_bcast(rhmaxi_const, 1, mpi_real8, masterprocid, mpicom, ierr) call mpi_bcast(rhminis_const, 1, mpi_real8, masterprocid, mpicom, ierr) call mpi_bcast(rhmaxis_const, 1, mpi_real8, masterprocid, mpicom, ierr) + call mpi_bcast(cldfrc2m_qist_min, 1, mpi_real8, masterprocid, mpicom, ierr) + call mpi_bcast(cldfrc2m_qist_max, 1, mpi_real8, masterprocid, mpicom, ierr) call mpi_bcast(cldfrc2m_do_subgrid_growth, 1, mpi_logical,masterprocid, mpicom, ierr) end subroutine cldfrc2m_readnl @@ -879,12 +881,21 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & icimr=qi/aist !minimum - if (icimr.lt.qist_min) then - aist = max(0._r8,min(1._r8,qi/qist_min)) + if (icimr.lt.cldfrc2m_qist_min) then + if (cam_physpkg_is("cam_dev")) then + ! + ! Take the geometric mean of the iceopt=4 and iceopt=5 values. + ! Mods developed by Thomas Toniazzo for NorESM. + aist = max(0._r8,min(1._r8,sqrt(aist*qi/cldfrc2m_qist_min))) + else + ! + ! Default for iceopt=5 + aist = max(0._r8,min(1._r8,qi/cldfrc2m_qist_min)) + end if endif !maximum - if (icimr.gt.qist_max) then - aist = max(0._r8,min(1._r8,qi/qist_max)) + if (icimr.gt.cldfrc2m_qist_max) then + aist = max(0._r8,min(1._r8,qi/cldfrc2m_qist_max)) endif endif @@ -1131,12 +1142,21 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a icimr=qi/aist !minimum - if (icimr.lt.qist_min) then - aist = max(0._r8,min(1._r8,qi/qist_min)) + if (icimr.lt.cldfrc2m_qist_min) then + if (cam_physpkg_is("cam_dev")) then + ! + ! Take the geometric mean of the iceopt=4 and iceopt=5 values. + ! Mods developed by Thomas Toniazzo for NorESM. + aist = max(0._r8,min(1._r8,sqrt(aist*qi/cldfrc2m_qist_min))) + else + ! + ! Default for iceopt=5 + aist = max(0._r8,min(1._r8,qi/cldfrc2m_qist_min)) + end if endif !maximum - if (icimr.gt.qist_max) then - aist = max(0._r8,min(1._r8,qi/qist_max)) + if (icimr.gt.cldfrc2m_qist_max) then + aist = max(0._r8,min(1._r8,qi/cldfrc2m_qist_max)) endif endif From dd69c5d6e410ab26538a6b496249dd1677a703ac Mon Sep 17 00:00:00 2001 From: adamrher Date: Thu, 12 Oct 2023 10:46:51 -0600 Subject: [PATCH 03/10] added namelists for wsub_min_asf, modified namelist defaults to reflect latest tunings --- bld/build-namelist | 1 + bld/namelist_files/namelist_defaults_cam.xml | 7 ++++-- bld/namelist_files/namelist_definition.xml | 12 +++++++--- src/physics/cam/microp_aero.F90 | 23 ++++++++++++-------- src/physics/cam/ndrop.F90 | 5 ++--- 5 files changed, 31 insertions(+), 17 deletions(-) diff --git a/bld/build-namelist b/bld/build-namelist index 3bd154b375..80c7221c6d 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -3129,6 +3129,7 @@ add_default($nl, 'microp_aero_npccn_scale'); add_default($nl, 'microp_aero_wsub_scale'); add_default($nl, 'microp_aero_wsubi_scale'); add_default($nl, 'microp_aero_wsub_min'); +add_default($nl, 'microp_aero_wsub_min_asf'); add_default($nl, 'microp_aero_wsubi_min'); # Ice nucleation options diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index be857d9155..b05b25d2c1 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -2228,12 +2228,15 @@ 1.D0 1.D0 - 0.25D0 + 0.50D0 1.D0 0.2D0 - 0.D0 + 0.1D0 + + 0.1D0 + 0.0D0 0.001D0 diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml index e34eed30d6..6efc942ce4 100644 --- a/bld/namelist_files/namelist_definition.xml +++ b/bld/namelist_files/namelist_definition.xml @@ -2916,7 +2916,7 @@ Default: 1.0 Unitless scaling factor for the liquid droplet subgrid scale vertical velocity during aerosol activation. -Default: 1.0 +Default: set by build-namelist -Minimum subgrid vertical velocity for liquid droplets during aerosol activation with units of (m s-1). -Default: 0.2 m s-1 +Minimum subgrid vertical velocity (before scale factor) for liquid droplets during aerosol activation with units of (m s-1). +Default: set by build-namelist + + + +Minimum subgrid vertical velocity (after scale factor) for liquid droplets during aerosol activation with units of (m s-1). +Default: set by build-namelist Date: Thu, 12 Oct 2023 14:51:24 -0600 Subject: [PATCH 04/10] swap cam_dev conditional for a new namelist, remove se gamma namelist default --- bld/build-namelist | 1 + bld/namelist_files/namelist_defaults_cam.xml | 4 +++- bld/namelist_files/namelist_definition.xml | 6 ++++++ src/physics/cam/cldfrc2m.F90 | 10 ++++++---- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/bld/build-namelist b/bld/build-namelist index 80c7221c6d..a66c50a8f9 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -3464,6 +3464,7 @@ if (!$simple_phys) { add_default($nl, 'cldfrc2m_qist_min'); add_default($nl, 'cldfrc2m_qist_max'); add_default($nl, 'cldfrc2m_do_subgrid_growth'); + add_default($nl, 'cldfrc2m_do_avg_aist_algs'); } my $rk_strat_polstrat_rhmin = $nl->get_value('rk_strat_polstrat_rhmin'); diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index b05b25d2c1..71d6e8943d 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -2067,7 +2067,6 @@ 0.308 0.3 0.280 - 0.270 0.32 0.3 2 @@ -2659,6 +2658,9 @@ .true. .true. +.false. +.true. + 5.0e-6 9.5e-6 diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml index 6efc942ce4..2b219f1c13 100644 --- a/bld/namelist_files/namelist_definition.xml +++ b/bld/namelist_files/namelist_definition.xml @@ -3171,6 +3171,12 @@ RHice of 1 down to RHice = rhmini. Default: .true. for CAM6; all others => .false. + +For small ice cloud concentrations, take the geometric mean of the iceopt=4 and iceopt=5 area fractions +Default: .true. for CAM_DEV; all others .false. + + Convective momentum transport parameter (upward) diff --git a/src/physics/cam/cldfrc2m.F90 b/src/physics/cam/cldfrc2m.F90 index 54270d2fde..4a2ec86f43 100644 --- a/src/physics/cam/cldfrc2m.F90 +++ b/src/physics/cam/cldfrc2m.F90 @@ -10,7 +10,6 @@ module cldfrc2m svp_water_vect, svp_ice_vect use cam_logfile, only: iulog use cam_abortutils, only: endrun -use phys_control, only: cam_physpkg_is implicit none private @@ -39,6 +38,7 @@ module cldfrc2m real(r8) :: cldfrc2m_qist_min ! Minimum in-stratus ice IWC constraint [ kg/kg ] real(r8) :: cldfrc2m_qist_max ! Maximum in-stratus ice IWC constraint [ kg/kg ] logical :: cldfrc2m_do_subgrid_growth = .false. +logical :: cldfrc2m_do_avg_aist_algs = .false. ! -------------------------- ! ! Parameters for Ice Stratus ! ! -------------------------- ! @@ -83,7 +83,7 @@ subroutine cldfrc2m_readnl(nlfile) character(len=*), parameter :: subname = 'cldfrc2m_readnl' namelist /cldfrc2m_nl/ cldfrc2m_rhmini, cldfrc2m_rhmaxi, cldfrc2m_rhminis, cldfrc2m_rhmaxis, cldfrc2m_do_subgrid_growth, & - cldfrc2m_qist_min, cldfrc2m_qist_max + cldfrc2m_qist_min, cldfrc2m_qist_max, cldfrc2m_do_avg_aist_algs !----------------------------------------------------------------------------- if (masterproc) then @@ -114,6 +114,7 @@ subroutine cldfrc2m_readnl(nlfile) call mpi_bcast(cldfrc2m_qist_min, 1, mpi_real8, masterprocid, mpicom, ierr) call mpi_bcast(cldfrc2m_qist_max, 1, mpi_real8, masterprocid, mpicom, ierr) call mpi_bcast(cldfrc2m_do_subgrid_growth, 1, mpi_logical,masterprocid, mpicom, ierr) + call mpi_bcast(cldfrc2m_do_avg_aist_algs, 1, mpi_logical,masterprocid, mpicom, ierr) end subroutine cldfrc2m_readnl @@ -141,6 +142,7 @@ subroutine cldfrc2m_init() write(iulog,*) ' rhminis = ', rhminis_const write(iulog,*) ' rhmaxis = ', rhmaxis_const write(iulog,*) ' do_subgrid_growth = ', cldfrc2m_do_subgrid_growth + write(iulog,*) ' do_avg_aist_algs = ', cldfrc2m_do_avg_aist_algs end if end subroutine cldfrc2m_init @@ -882,7 +884,7 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & !minimum if (icimr.lt.cldfrc2m_qist_min) then - if (cam_physpkg_is("cam_dev")) then + if (cldfrc2m_do_avg_aist_algs) then ! ! Take the geometric mean of the iceopt=4 and iceopt=5 values. ! Mods developed by Thomas Toniazzo for NorESM. @@ -1143,7 +1145,7 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a !minimum if (icimr.lt.cldfrc2m_qist_min) then - if (cam_physpkg_is("cam_dev")) then + if (cldfrc2m_do_avg_aist_algs) then ! ! Take the geometric mean of the iceopt=4 and iceopt=5 values. ! Mods developed by Thomas Toniazzo for NorESM. From e28d2bc8192e8ebb85037b3ec66aea8ee1066905 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 13 Oct 2023 14:34:47 -0600 Subject: [PATCH 05/10] Update externals to allow for derecho priority setting --- Externals.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index 7dfd41a073..c60ee52605 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -1,5 +1,5 @@ [ccs_config] -tag = ccs_config_cesm0.0.78 +tag = ccs_config_cesm0.0.80 protocol = git repo_url = https://github.com/ESMCI/ccs_config_cesm local_path = ccs_config @@ -21,7 +21,7 @@ externals = Externals.cfg required = True [cmeps] -tag = cmeps0.14.39 +tag = cmeps0.14.43 protocol = git repo_url = https://github.com/ESCOMP/CMEPS.git local_path = components/cmeps @@ -36,7 +36,7 @@ externals = Externals_CDEPS.cfg required = True [cpl7] -tag = cpl77.0.6 +tag = cpl77.0.7 protocol = git repo_url = https://github.com/ESCOMP/CESM_CPL7andDataComps local_path = components/cpl7 From 672aaf168cfcd6e0a38e16e01afbd28aac7fe044 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 13 Oct 2023 14:42:51 -0600 Subject: [PATCH 06/10] address review requests --- bld/namelist_files/namelist_definition.xml | 4 +- src/physics/cam/cldfrc2m.F90 | 136 +++++++++++---------- 2 files changed, 71 insertions(+), 69 deletions(-) diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml index 2b219f1c13..cea91f7528 100644 --- a/bld/namelist_files/namelist_definition.xml +++ b/bld/namelist_files/namelist_definition.xml @@ -3154,13 +3154,13 @@ Default: set by build-namelist -Minimum in-stratus ice IWC constraint [ kg/kg ] +Minimum in-stratus IWC constraint [ kg/kg ] Default: set by build-namelist -Maximum in-stratus ice IWC constraint [ kg/kg ] +Maximum in-stratus IWC constraint [ kg/kg ] Default: set by build-namelist diff --git a/src/physics/cam/cldfrc2m.F90 b/src/physics/cam/cldfrc2m.F90 index 4a2ec86f43..77a391fd35 100644 --- a/src/physics/cam/cldfrc2m.F90 +++ b/src/physics/cam/cldfrc2m.F90 @@ -35,8 +35,8 @@ module cldfrc2m real(r8) :: cldfrc2m_rhmaxi real(r8) :: cldfrc2m_rhminis ! Minimum rh for ice cloud fraction > 0 in the stratsophere. real(r8) :: cldfrc2m_rhmaxis -real(r8) :: cldfrc2m_qist_min ! Minimum in-stratus ice IWC constraint [ kg/kg ] -real(r8) :: cldfrc2m_qist_max ! Maximum in-stratus ice IWC constraint [ kg/kg ] +real(r8) :: cldfrc2m_qist_min ! Minimum in-stratus IWC constraint [ kg/kg ] +real(r8) :: cldfrc2m_qist_max ! Maximum in-stratus IWC constraint [ kg/kg ] logical :: cldfrc2m_do_subgrid_growth = .false. logical :: cldfrc2m_do_avg_aist_algs = .false. ! -------------------------- ! @@ -59,10 +59,10 @@ module cldfrc2m real(r8) :: rhminh_const ! Critical RH for high-level liquid stratus clouds real(r8) :: premit ! Top height for mid-level liquid stratus fraction real(r8) :: premib ! Bottom height for mid-level liquid stratus fraction -integer :: iceopt ! option for ice cloud closure - ! 1=wang & sassen 2=schiller (iciwc) +integer :: iceopt ! option for ice cloud closure + ! 1=wang & sassen 2=schiller (iciwc) ! 3=wood & field, 4=Wilson (based on smith) - ! 5=modified slingo (ssat & empyt cloud) + ! 5=modified slingo (ssat & empyt cloud) real(r8) :: icecrit ! Critical RH for ice clouds in Wilson & Ballard closure ! ( smaller = more ice clouds ) @@ -143,6 +143,8 @@ subroutine cldfrc2m_init() write(iulog,*) ' rhmaxis = ', rhmaxis_const write(iulog,*) ' do_subgrid_growth = ', cldfrc2m_do_subgrid_growth write(iulog,*) ' do_avg_aist_algs = ', cldfrc2m_do_avg_aist_algs + write(iulog,*) ' cldfrc2m_qist_min = ', cldfrc2m_qist_min + write(iulog,*) ' cldfrc2m_qist_max = ', cldfrc2m_qist_max end if end subroutine cldfrc2m_init @@ -187,7 +189,7 @@ subroutine astG_PDF_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & real(r8) cldrh ! RH of stratus cloud real(r8) rhmin ! Critical RH real(r8) rhwght - + real(r8) :: rhminl real(r8) :: rhminl_adj_land real(r8) :: rhminh @@ -230,7 +232,7 @@ subroutine astG_PDF_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & a = 1._r8 - (-3._r8/sqrt(2._r8)*(U-cldrh)/dV)**(2._r8/3._r8) Ga = dV/sqrt(2._r8)*sqrt(1._r8-a) elseif( U .gt. (cldrh-dV) .and. U .le. (cldrh-dV/6._r8) ) then - a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & + a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & (1._r8+(U-cldrh)/dV))-2._r8*3.141592_r8)))**2._r8 Ga = dV/sqrt(2._r8)*(1._r8/sqrt(a)-sqrt(a)) elseif( U .le. (cldrh-dV) ) then @@ -240,7 +242,7 @@ subroutine astG_PDF_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & if( freeze_dry ) then a = a *max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) - Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) + Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) endif elseif( p .lt. premit ) then @@ -255,7 +257,7 @@ subroutine astG_PDF_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & a = 1._r8 - (-3._r8/sqrt(2._r8)*(U-cldrh)/dV)**(2._r8/3._r8) Ga = dV/sqrt(2._r8)*sqrt(1._r8-a) elseif( U .gt. (cldrh-dV) .and. U .le. (cldrh-dV/6._r8) ) then - a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & + a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & (1._r8+(U-cldrh)/dV))-2._r8*3.141592_r8)))**2._r8 Ga = dV/sqrt(2._r8)*(1._r8/sqrt(a)-sqrt(a)) elseif( U .le. (cldrh-dV) ) then @@ -282,7 +284,7 @@ subroutine astG_PDF_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & a = 1._r8 - (-3._r8/sqrt(2._r8)*(U-cldrh)/dV)**(2._r8/3._r8) Ga = dV/sqrt(2._r8)*sqrt(1._r8-a) elseif( U .gt. (cldrh-dV) .and. U .le. (cldrh-dV/6._r8) ) then - a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & + a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & (1._r8+(U-cldrh)/dV))-2._r8*3.141592_r8)))**2._r8 Ga = dV/sqrt(2._r8)*(1._r8/sqrt(a)-sqrt(a)) elseif( U .le. (cldrh-dV) ) then @@ -348,7 +350,7 @@ subroutine astG_PDF(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco real(r8) cldrh ! RH of stratus cloud real(r8) rhmin ! Critical RH real(r8) rhwght - + ! Statement functions logical land land(i) = nint(landfrac_in(i)) == 1 @@ -372,13 +374,13 @@ subroutine astG_PDF(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco do i = 1, ncol - U = U_in(i) - p = p_in(i) - qv = qv_in(i) - landfrac = landfrac_in(i) - snowh = snowh_in(i) + U = U_in(i) + p = p_in(i) + qv = qv_in(i) + landfrac = landfrac_in(i) + snowh = snowh_in(i) - if (present(rhminl_in)) rhminl = rhminl_in(i) + if (present(rhminl_in)) rhminl = rhminl_in(i) if (present(rhminl_adj_land_in)) rhminl_adj_land = rhminl_adj_land_in(i) if (present(rhminh_in)) rhminh = rhminh_in(i) @@ -399,7 +401,7 @@ subroutine astG_PDF(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco a = 1._r8 - (-3._r8/sqrt(2._r8)*(U-cldrh)/dV)**(2._r8/3._r8) Ga = dV/sqrt(2._r8)*sqrt(1._r8-a) elseif( U .gt. (cldrh-dV) .and. U .le. (cldrh-dV/6._r8) ) then - a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & + a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & (1._r8+(U-cldrh)/dV))-2._r8*3.141592_r8)))**2._r8 Ga = dV/sqrt(2._r8)*(1._r8/sqrt(a)-sqrt(a)) elseif( U .le. (cldrh-dV) ) then @@ -409,7 +411,7 @@ subroutine astG_PDF(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco if( freeze_dry ) then a = a *max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) - Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) + Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) endif elseif( p .lt. premit ) then @@ -424,7 +426,7 @@ subroutine astG_PDF(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco a = 1._r8 - (-3._r8/sqrt(2._r8)*(U-cldrh)/dV)**(2._r8/3._r8) Ga = dV/sqrt(2._r8)*sqrt(1._r8-a) elseif( U .gt. (cldrh-dV) .and. U .le. (cldrh-dV/6._r8) ) then - a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & + a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & (1._r8+(U-cldrh)/dV))-2._r8*3.141592_r8)))**2._r8 Ga = dV/sqrt(2._r8)*(1._r8/sqrt(a)-sqrt(a)) elseif( U .le. (cldrh-dV) ) then @@ -451,7 +453,7 @@ subroutine astG_PDF(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco a = 1._r8 - (-3._r8/sqrt(2._r8)*(U-cldrh)/dV)**(2._r8/3._r8) Ga = dV/sqrt(2._r8)*sqrt(1._r8-a) elseif( U .gt. (cldrh-dV) .and. U .le. (cldrh-dV/6._r8) ) then - a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & + a = 4._r8*(cos((1._r8/3._r8)*(acos((3._r8/2._r8/sqrt(2._r8))* & (1._r8+(U-cldrh)/dV))-2._r8*3.141592_r8)))**2._r8 Ga = dV/sqrt(2._r8)*(1._r8/sqrt(a)-sqrt(a)) elseif( U .le. (cldrh-dV) ) then @@ -462,7 +464,7 @@ subroutine astG_PDF(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco endif a_out(i) = a - Ga_out(i) = Ga + Ga_out(i) = Ga enddo @@ -475,7 +477,7 @@ subroutine astG_RHU_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & ! --------------------------------------------------------- ! ! Compute 'stratus fraction(a)' and Gs=(dU/da) from the ! ! CAM35 cloud fraction formula. ! - ! Below is valid only for CAMUW at 1.9x2.5 fv dynamics core ! + ! Below is valid only for CAMUW at 1.9x2.5 fv dynamics core ! ! For the other cases, I should re-define 'rhminl,rhminh' & ! ! 'premib,premit'. ! ! Note that if U > 1, Ga = 1.e10 instead of Ga = 0, that is ! @@ -528,15 +530,15 @@ subroutine astG_RHU_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & rhmin = rhminl endif rhdif = (U-rhmin)/(1.0_r8-rhmin) - a = min(1._r8,(max(rhdif,0.0_r8))**2) + a = min(1._r8,(max(rhdif,0.0_r8))**2) if( (U.ge.1._r8) .or. (U.le.rhmin) ) then Ga = 1.e20_r8 - else + else Ga = 0.5_r8*(1._r8-rhmin)*((1._r8-rhmin)/(U-rhmin)) endif if( freeze_dry ) then a = a*max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) - Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) + Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) endif elseif( p .lt. premit ) then @@ -546,7 +548,7 @@ subroutine astG_RHU_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & a = min(1._r8,(max(rhdif,0._r8))**2) if( (U.ge.1._r8) .or. (U.le.rhmin) ) then Ga = 1.e20_r8 - else + else Ga = 0.5_r8*(1._r8-rhmin)*((1._r8-rhmin)/(U-rhmin)) endif @@ -564,7 +566,7 @@ subroutine astG_RHU_single(U, p, qv, landfrac, snowh, a, Ga, orhmin, & a = min(1._r8,(max(rhdif,0._r8))**2) if( (U.ge.1._r8) .or. (U.le.rhmin) ) then Ga = 1.e10_r8 - else + else Ga = 0.5_r8*(1._r8-rhmin)*((1._r8-rhmin)/(U-rhmin)) endif @@ -582,7 +584,7 @@ subroutine astG_RHU(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco ! --------------------------------------------------------- ! ! Compute 'stratus fraction(a)' and Gs=(dU/da) from the ! ! CAM35 cloud fraction formula. ! - ! Below is valid only for CAMUW at 1.9x2.5 fv dynamics core ! + ! Below is valid only for CAMUW at 1.9x2.5 fv dynamics core ! ! For the other cases, I should re-define 'rhminl,rhminh' & ! ! 'premib,premit'. ! ! Note that if U > 1, Ga = 1.e10 instead of Ga = 0, that is ! @@ -639,13 +641,13 @@ subroutine astG_RHU(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco do i = 1, ncol - U = U_in(i) - p = p_in(i) - qv = qv_in(i) - landfrac = landfrac_in(i) - snowh = snowh_in(i) + U = U_in(i) + p = p_in(i) + qv = qv_in(i) + landfrac = landfrac_in(i) + snowh = snowh_in(i) - if (present(rhminl_in)) rhminl = rhminl_in(i) + if (present(rhminl_in)) rhminl = rhminl_in(i) if (present(rhminl_adj_land_in)) rhminl_adj_land = rhminl_adj_land_in(i) if (present(rhminh_in)) rhminh = rhminh_in(i) @@ -657,15 +659,15 @@ subroutine astG_RHU(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco rhmin = rhminl endif rhdif = (U-rhmin)/(1.0_r8-rhmin) - a = min(1._r8,(max(rhdif,0.0_r8))**2) + a = min(1._r8,(max(rhdif,0.0_r8))**2) if( (U.ge.1._r8) .or. (U.le.rhmin) ) then Ga = 1.e20_r8 - else + else Ga = 0.5_r8*(1._r8-rhmin)*((1._r8-rhmin)/(U-rhmin)) endif if( freeze_dry ) then a = a*max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) - Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) + Ga = Ga/max(0.15_r8,min(1.0_r8,qv/0.0030_r8)) endif elseif( p .lt. premit ) then @@ -675,7 +677,7 @@ subroutine astG_RHU(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco a = min(1._r8,(max(rhdif,0._r8))**2) if( (U.ge.1._r8) .or. (U.le.rhmin) ) then Ga = 1.e20_r8 - else + else Ga = 0.5_r8*(1._r8-rhmin)*((1._r8-rhmin)/(U-rhmin)) endif @@ -693,14 +695,14 @@ subroutine astG_RHU(U_in, p_in, qv_in, landfrac_in, snowh_in, a_out, Ga_out, nco a = min(1._r8,(max(rhdif,0._r8))**2) if( (U.ge.1._r8) .or. (U.le.rhmin) ) then Ga = 1.e10_r8 - else + else Ga = 0.5_r8*(1._r8-rhmin)*((1._r8-rhmin)/(U-rhmin)) endif endif a_out(i) = a - Ga_out(i) = Ga + Ga_out(i) = Ga enddo @@ -713,7 +715,7 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & qsatfac_out) ! --------------------------------------------------------- ! - ! Compute non-physical ice stratus fraction ! + ! Compute non-physical ice stratus fraction ! ! --------------------------------------------------------- ! real(r8), intent(in) :: qv ! Grid-mean water vapor[kg/kg] @@ -801,19 +803,19 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & call qsat_water(T, p, es, qs) esl = svp_water(T) esi = svp_ice(T) - + if( iceopt.lt.3 ) then if( iceopt.eq.1 ) then ttmp = max(195._r8,min(T,253._r8)) - 273.16_r8 icicval = a + b * ttmp + c * ttmp**2._r8 rho = p/(rair*T) - icicval = icicval * 1.e-6_r8 / rho + icicval = icicval * 1.e-6_r8 / rho else ttmp = max(190._r8,min(T,273.16_r8)) icicval = 10._r8 **(as * bs**ttmp + cs) icicval = icicval * 1.e-6_r8 * 18._r8 / 28.97_r8 endif - aist = max(0._r8,min(qi/icicval,1._r8)) + aist = max(0._r8,min(qi/icicval,1._r8)) elseif( iceopt.eq.3 ) then aist = 1._r8 - exp(-Kc*qi/(qs*(esi/esl))) aist = max(0._r8,min(aist,1._r8)) @@ -835,9 +837,9 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & ! endif endif ncf = qi/((1._r8 - icecrit)*qs) - if( ncf.le.0._r8 ) then + if( ncf.le.0._r8 ) then aist = 0._r8 - elseif( ncf.gt.0._r8 .and. ncf.le.1._r8/6._r8 ) then + elseif( ncf.gt.0._r8 .and. ncf.le.1._r8/6._r8 ) then aist = 0.5_r8*(6._r8 * ncf)**(2._r8/3._r8) elseif( ncf.gt.1._r8/6._r8 .and. ncf.lt.1._r8 ) then phi = (acos(3._r8*(1._r8-ncf)/2._r8**(3._r8/2._r8))+4._r8*3.1415927_r8)/3._r8 @@ -846,7 +848,7 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & aist = 1._r8 endif aist = max(0._r8,min(aist,1._r8)) - elseif (iceopt.eq.5) then + elseif (iceopt.eq.5) then ! set rh ice cloud fraction rhi= (qv+qi)/qs * (esl/esi) if (rhmaxi .eq. rhmini) then @@ -867,7 +869,7 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & ! NOTE: Limit qsatfac so that adjusted RHliq would be 1. or less. if (present(qsatfac_out) .and. cldfrc2m_do_subgrid_growth) then qsatfac_out = max(min(qv / qs, 1._r8), (1._r8 - aist) * rhmini + aist * rhmaxi) - end if + end if ! limiter to remove empty cloud and ice with no cloud ! and set icecld fraction to mincld if ice exists @@ -901,10 +903,10 @@ subroutine aist_single(qv, T, p, qi, landfrac, snowh, aist, & endif endif - endif + endif ! 0.999_r8 is added to prevent infinite 'ql_st' at the end of instratus_condensate - ! computed after updating 'qi_st'. + ! computed after updating 'qi_st'. aist = max(0._r8,min(aist,0.999_r8)) @@ -917,7 +919,7 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a qsatfac_out ) ! --------------------------------------------------------- ! - ! Compute non-physical ice stratus fraction ! + ! Compute non-physical ice stratus fraction ! ! --------------------------------------------------------- ! real(r8), intent(in) :: qv_in(pcols) ! Grid-mean water vapor[kg/kg] @@ -929,7 +931,7 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a real(r8), intent(in) :: snowh_in(pcols) ! Snow depth (liquid water equivalent) real(r8), intent(out) :: aist_out(pcols) ! Non-physical ice stratus fraction ( 0<= aist <= 1 ) - integer, intent(in) :: ncol + integer, intent(in) :: ncol real(r8), optional, intent(in) :: rhmaxi_in(pcols) real(r8), optional, intent(in) :: rhmini_in(pcols) ! Critical relative humidity for ice stratus @@ -1026,9 +1028,9 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a call svp_ice_vect(T_in(1:ncol), esi(1:ncol), ncol) do i = 1, ncol - - landfrac = landfrac_in(i) - snowh = snowh_in(i) + + landfrac = landfrac_in(i) + snowh = snowh_in(i) T = T_in(i) qv = qv_in(i) p = p_in(i) @@ -1037,23 +1039,23 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a qs = qsat_in(i) if (present(rhmaxi_in)) rhmaxi = rhmaxi_in(i) - if (present(rhmini_in)) rhmini = rhmini_in(i) - if (present(rhminl_in)) rhminl = rhminl_in(i) + if (present(rhmini_in)) rhmini = rhmini_in(i) + if (present(rhminl_in)) rhminl = rhminl_in(i) if (present(rhminl_adj_land_in)) rhminl_adj_land = rhminl_adj_land_in(i) if (present(rhminh_in)) rhminh = rhminh_in(i) - + if( iceopt.lt.3 ) then if( iceopt.eq.1 ) then ttmp = max(195._r8,min(T,253._r8)) - 273.16_r8 icicval = a + b * ttmp + c * ttmp**2._r8 rho = p/(rair*T) - icicval = icicval * 1.e-6_r8 / rho + icicval = icicval * 1.e-6_r8 / rho else ttmp = max(190._r8,min(T,273.16_r8)) icicval = 10._r8 **(as * bs**ttmp + cs) icicval = icicval * 1.e-6_r8 * 18._r8 / 28.97_r8 endif - aist = max(0._r8,min(qi/icicval,1._r8)) + aist = max(0._r8,min(qi/icicval,1._r8)) elseif( iceopt.eq.3 ) then aist = 1._r8 - exp(-Kc*qi/(qs*(esi(i)/esl(i)))) aist = max(0._r8,min(aist,1._r8)) @@ -1075,9 +1077,9 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a ! endif endif ncf = qi/((1._r8 - icecrit)*qs) - if( ncf.le.0._r8 ) then + if( ncf.le.0._r8 ) then aist = 0._r8 - elseif( ncf.gt.0._r8 .and. ncf.le.1._r8/6._r8 ) then + elseif( ncf.gt.0._r8 .and. ncf.le.1._r8/6._r8 ) then aist = 0.5_r8*(6._r8 * ncf)**(2._r8/3._r8) elseif( ncf.gt.1._r8/6._r8 .and. ncf.lt.1._r8 ) then phi = (acos(3._r8*(1._r8-ncf)/2._r8**(3._r8/2._r8))+4._r8*3.1415927_r8)/3._r8 @@ -1086,7 +1088,7 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a aist = 1._r8 endif aist = max(0._r8,min(aist,1._r8)) - elseif (iceopt.eq.5) then + elseif (iceopt.eq.5) then ! set rh ice cloud fraction rhi= (qv+qi)/qs * (esl(i)/esi(i)) if (rhmaxi .eq. rhmini) then @@ -1117,7 +1119,7 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a aist = max(0._r8,min(qi/icicval,1._r8)) aist = min(aist,1._r8) - endif + endif if (iceopt.eq.5 .or. iceopt.eq.6) then @@ -1162,10 +1164,10 @@ subroutine aist_vector(qv_in, T_in, p_in, qi_in, ni_in, landfrac_in, snowh_in, a endif endif - endif + endif ! 0.999_r8 is added to prevent infinite 'ql_st' at the end of instratus_condensate - ! computed after updating 'qi_st'. + ! computed after updating 'qi_st'. aist = max(0._r8,min(aist,0.999_r8)) From c50fcc610f9e5dc209d7adc77ebca09a019b64f5 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 13 Oct 2023 15:05:28 -0600 Subject: [PATCH 07/10] Change namelist based on verbal request from Adam, Cecile and Peter --- bld/namelist_files/namelist_defaults_cam.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 71d6e8943d..44d91006ca 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -2226,8 +2226,8 @@ 1.D0 1.D0 - 1.D0 - 0.50D0 + 1.D0 + 0.375D0 1.D0 From 8b7a4ea0c67b3e8a2ba4d512cd8f11eafe3f8ee6 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 13 Oct 2023 18:54:19 -0600 Subject: [PATCH 08/10] Change PE layout to fix some derecho failures --- cime_config/testdefs/testlist_cam.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index c7b7d00daf..854ad1ac5a 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -1690,7 +1690,7 @@ - + @@ -1700,7 +1700,7 @@ - + @@ -1709,7 +1709,7 @@ - + @@ -1718,7 +1718,7 @@ - + @@ -1860,7 +1860,7 @@ - + @@ -1870,7 +1870,7 @@ - + @@ -2156,7 +2156,7 @@ - + From a35cef1720ce73dcac14ee7aae580c8ea63f4d4a Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Mon, 16 Oct 2023 14:23:05 -0600 Subject: [PATCH 09/10] Fix failing SPCAM test --- src/physics/spcam/crmclouds_camaerosols.F90 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/physics/spcam/crmclouds_camaerosols.F90 b/src/physics/spcam/crmclouds_camaerosols.F90 index 08f4e3f246..0ab4568033 100644 --- a/src/physics/spcam/crmclouds_camaerosols.F90 +++ b/src/physics/spcam/crmclouds_camaerosols.F90 @@ -388,6 +388,9 @@ subroutine crmclouds_mixnuc_tend( aero_props, aero_state, state, ptend, dtime, c type(physics_ptend), intent(out) :: ptend ! package tendencies ! Local variables + + real(r8), parameter :: wsub_min_asf = 0.1D0 + integer i,k,m, k1, k2 integer ifld, itim integer ixcldliq, ixcldice, ixnumliq @@ -580,7 +583,8 @@ subroutine crmclouds_mixnuc_tend( aero_props, aero_state, state, ptend, dtime, c ! should we set omega to be zero ?? omega(:ncol, :) = state%omega(:ncol, :) - call dropmixnuc(aero_props, aero_state, state, ptend, dtime, pbuf, wsub, lcldn, lcldo, cldliqf, tendnd, factnum, dommf ) + call dropmixnuc(aero_props, aero_state, state, ptend, dtime, pbuf, wsub, wsub_min_asf, lcldn, lcldo, cldliqf, tendnd, factnum, & + dommf ) ! this part is moved into tphysbc after aerosol stuffs. ! From 311a23d023282afbe3c8d4ca2ed0eb0efebaf7d6 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Wed, 18 Oct 2023 09:41:09 -0600 Subject: [PATCH 10/10] ChangeLog for cam6_3_132 --- doc/ChangeLog | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index c8ef2edaee..f21676fe92 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,121 @@ +=============================================================== + +Tag name:cam6_3_132 +Originator(s): cacraig, adamher, Thomas Toniazzo, hannay +Date: Oct 18, 2023 +One-line Summary: Bring in changes to match run 51 +Github PR URL: https://github.com/ESCOMP/CAM/pull/900 + +Purpose of changes (include the issue number and title text for each relevant GitHub issue): + - Update cam_development to match current tuning runs: https://github.com/ESCOMP/CAM/issues/895 + - Discussion also occurred at: https://github.com/NCAR/amwg_dev/discussions/412 + +Describe any changes made to build system: N/A + +Describe any changes made to the namelist: + - When running cam_dev, change the values for: + micro_mg_dcs + clubb_gamma_coef + clubb_gamma_coefb + microp_aero_wsub_scale + microp_aero_wsubi_scale + microp_aero_wsub_min + micro_mg_vtrmi_factor + + - New namelists implemented: + microp_aero_wsub_min_asf: min subgrid vertical velocity (after scale factor) See namelist definition for full description + cldfrc2m_do_avg_aist_algs: for small ice cloud concentrations, take the geometric mean of the iceopt=4 and 5 area fractions + cldfrc2m_qist_min: min in-stratus ice IWC constraint + cldfrc2m_qist_max: max in-stratus ice IWC constraint + +List any changes to the defaults for the boundary datasets: N/A + +Describe any substantial timing or memory changes: N/A + +Code reviewed by: nusbaume, pel, adamrher + +List all files eliminated: N/A + +List all files added and what they do: N/A + +List all existing files that have been modified, and describe the changes: +M bld/build-namelist +M bld/namelist_files/namelist_defaults_cam.xml +M src/physics/cam/cldfrc2m.F90 +M src/physics/cam/microp_aero.F90 +M src/physics/cam/ndrop.F90 +M src/physics/spcam/crmclouds_camaerosols.F90 + - Change namelist as discussed in the issue/PR and group discussion + +M bld/namelist_files/namelist_definition.xml + - Update descriptions and add new ones + +M cime_config/testdefs/testlist_cam.xml + - Change a few tests to have them work on derecho + +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. + +cheyenne/intel/aux_cam: + ERP_Ln9_Vnuopc.C96_C96_mg17.F2000climo.cheyenne_intel.cam-outfrq9s_mg3 (Overall: PEND) details: + PEND ERP_Ln9_Vnuopc.C96_C96_mg17.F2000climo.cheyenne_intel.cam-outfrq9s_mg3 MODEL_BUILD RERUN + ERP_Ln9_Vnuopc.f09_f09_mg17.FCSD_HCO.cheyenne_intel.cam-outfrq9s (Overall: FAIL) details: + FAIL ERP_Ln9_Vnuopc.f09_f09_mg17.FCSD_HCO.cheyenne_intel.cam-outfrq9s COMPARE_base_rest + SMS_Lh12_Vnuopc.f09_f09_mg17.FCSD_HCO.cheyenne_intel.cam-outfrq3h (Overall: DIFF) details: + - pre-existing failure + + ERC_D_Ln9_P144x1_Vnuopc.ne16pg3_ne16pg3_mg17.QPC6HIST.cheyenne_intel.cam-outfrq3s_ttrac_usecase (Overall: DIFF) details: + ERP_D_Ln9.ne30pg3_ne30pg3_mg17.FLTHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.ne30_ne30_mg17.FCnudged.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.ne30pg3_ne30pg3_mg17.FW2000climo.cheyenne_intel.cam-outfrq9s_wcm_ne30 (Overall: DIFF) details: + SMS_D_Ln9.ne30pg3_ne30pg3_mg17.FMTHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.ne16_ne16_mg17.FX2000.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P1280x1.ne0ARCTICne30x4_ne0ARCTICne30x4_mt12.FHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P1280x1.ne30pg3_ne30pg3_mg17.FCLTHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_Ld1_Vnuopc.ne30pg3_ne30pg3_mg17.FC2010climo.cheyenne_intel.cam-outfrq1d (Overall: DIFF) details: + - expected baseline differences due to removal of cam6 tuning factor for SE dy + + ERP_Ln9_Vnuopc.f09_f09_mg17.F2000dev.cheyenne_intel.cam-outfrq9s_mg3 (Overall: DIFF) details: + ERP_D_Ln9_Vnuopc.ne30pg3_ne30pg3_mg17.F2000dev.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERS_Ld3_Vnuopc.f10_f10_mg37.F1850.cheyenne_intel.cam-outfrq1d_14dec_ghg_cam_dev (Overall: DIFF) details: + SMS_Ld1_Vnuopc.f19_f19.F2000dev.cheyenne_intel.cam-outfrq1d (Overall: DIFF) details: + - expected baseline differences for cam_dev runs + + SMS_D_Ln9_Vnuopc_P1280x1.ne0ARCTICne30x4_ne0ARCTICne30x4_mt12.FHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P1280x1.ne30pg3_ne30pg3_mg17.FCLTHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + -Changed layout and hence the testname, so no baselines to compare with + +izumi/nag/aux_cam: + DAE_Vnuopc.f45_f45_mg37.FHS94.izumi_nag.cam-dae (Overall: FAIL) + - pre-existing failure + + ERP_Ln9_Vnuopc.ne5pg3_ne5pg3_mg37.QPC6.izumi_nag.cam-outfrq9s_clubbmf (Overall: DIFF) details: + - expected baseline differences due to removal of cam6 tuning factor for SE dy + +izumi/gnu/aux_cam: + SMS_D_Ln9.f10_f10_mg37.2000_CAM%DEV%GHGMAM4_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV_SESP.izumi_gnu.cam-outfrq9s (Overall: DIFF) details: + - expected baseline differences for cam_dev runs + +NOTE: Most tests have namelist changes + +CAM tag used for the baseline comparison tests if different than previous +tag: N/A + +Summarize any changes to answers, i.e., +- what code configurations: All cam_dev and SE cam6 +- what platforms/compilers: All +- nature of change (roundoff; larger than roundoff but same climate; new + climate): Tuning changes - Climate changing for cam_dev + +If this tag changes climate describe the run(s) done to evaluate the new +climate in enough detail that it(they) could be reproduced, i.e., + - Run which was the prelimiary source of the changes: https://github.com/NCAR/amwg_dev/tree/b.e23_alpha16b.BLT1850.ne30_t232.051 + - It is important to note that further changes were made to this tag as discussed in the issue/PR and discussion - Adam ran a test + to verify the final changes. ===============================================================