Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
6a8a71f
roundoff merge of clubb-mf, loss of precision comes from order of ope…
jtruesdal Jun 9, 2026
a4c18bb
merge new clubbmf into cam6_4_180
jtruesdal Jun 10, 2026
e656abd
Potential fix for pull request finding
jtruesdal Jun 10, 2026
3ebb914
copilot suggested fixes
jtruesdal Jun 10, 2026
bee4e56
merge in copilot fixes
jtruesdal Jun 10, 2026
3ca97b8
Merge remote-tracking branch 'origin/clubbdev' into clubbdev
jtruesdal Jun 10, 2026
6b9ff96
added clubb_mf_cldfrac_fac and do_clubb_mf_aloft to namelist
jtruesdal Jun 10, 2026
819c4af
update prec_sh with clubb_mf
jtruesdal Jun 10, 2026
42bbb3f
put clubb_mf gate around mf additions of prec
jtruesdal Jun 10, 2026
e64cf8b
git rid of nonhydro flags
jtruesdal Jun 10, 2026
20c5b77
fix gt than roundoff error
jtruesdal Jun 16, 2026
5d62b25
fixed minor PR issues
jtruesdal Jun 30, 2026
192f90d
copilot spelling fixes
jtruesdal Jun 30, 2026
fcbaaf0
First part of Adams PR recommended changes.
jtruesdal Jul 2, 2026
87d0b66
second set of Adams PR changes.
jtruesdal Jul 6, 2026
c3b05dd
Merge remote-tracking branch 'upstream/clubbdev' into clubbdev.update
adamrher Jul 28, 2026
e3bd61a
cleaned up function arguments to integrate_mf
adamrher Jul 28, 2026
923dcbb
bug fixes needed to compile/run in debug mode
adamrher Jul 30, 2026
c1f4772
corrected upauto array to be on thermo levels -- changes are bfb
adamrher Jul 30, 2026
7845522
fix longstanding bug in initializing dnrr
adamrher Jul 30, 2026
0a1cd7e
fix awu output
adamrher Jul 30, 2026
f911cf4
remove xx_forcing variables from being flipped for clubb call
adamrher Jul 30, 2026
39958d2
fix bug added in last commit
adamrher Jul 31, 2026
981825f
mods to run clubb-mf w/ ascending + debug=T, although still not bfb w…
adamrher Aug 1, 2026
0169d49
fixed 2 bugs, recovering bfb clubb-mf for ascending/descending
adamrher Aug 2, 2026
11bdaf0
fix run time errors for top_lev>1 w/ clubb-mf. maintained bfb ascendi…
adamrher Aug 3, 2026
a2acd9e
Merge pull request #28 from adamrher/clubbdev.update
jtruesdal Aug 4, 2026
be230be
before removing flip arrays
jtruesdal Aug 6, 2026
35c3676
remove flip arrays, use array syntax
jtruesdal Aug 6, 2026
70774d7
PR request mods for variable initializations, removed one set, allowe…
jtruesdal Aug 21, 2026
f4d40ee
removed Claude comment as requested in PR
jtruesdal Aug 21, 2026
834c3c2
minor PR updates some spelling corrections, remove commented code, ge…
jtruesdal Aug 21, 2026
c9bf04d
Merge remote-tracking branch 'upstream/clubbdev' into clubbdev.mascon
adamrher Aug 23, 2026
c91ab41
modifcations for MF code to conserve mass
adamrher Aug 23, 2026
a70356b
bugfix to wp2_pbuf (missing MF contribution)
adamrher Aug 28, 2026
f29d8b2
setup clubb-mf namelist defaults (part 1)
adamrher Aug 28, 2026
2b132af
quick fix to last push
adamrher Aug 28, 2026
b731848
setup clubb-mf namelists (part 2 of 2)
adamrher Aug 29, 2026
e976e11
update remaining turbulent fluxes from energy to kinematic units
jtruesdal Aug 30, 2026
38aa38a
fixed incorrect units on edmf_thlflx
jtruesdal Aug 30, 2026
7efb25c
addressed some of co-pilot review
adamrher Aug 31, 2026
8b8466f
clean up add_hist_coord
adamrher Aug 31, 2026
3823ea2
Merge pull request #30 from adamrher/clubbdev.mascon
jtruesdal Aug 31, 2026
d16d4c3
couple clubbmf to wetdep/convtran using deep hoks, pblcull added, bug…
adamrher Sep 7, 2026
4dbd937
turn off pblcull and aspd options by default
adamrher Sep 8, 2026
90a119f
code mods to pass science evaluating (i.e., turn on convproc_aer)
adamrher Sep 9, 2026
07fbfab
deep_scheme='CLUBB_MF' hookup, MF_WUP hook, macmic cloud field averaging
adamrher Sep 12, 2026
57eca12
lower-tropospheric stability trigger mods added
adamrher Sep 12, 2026
cde190b
Merge pull request #31 from adamrher/clubbdev.dphook
jtruesdal Sep 13, 2026
8cbac74
address git copilot review
adamrher Sep 13, 2026
9b01dd6
Merge pull request #32 from adamrher/clubbdev.dphook
jtruesdal Sep 14, 2026
70da73f
First batch of PR updates from Cheryl's comments.
jtruesdal Sep 16, 2026
76d00d6
first set of PR mods for Cheryls review
jtruesdal Sep 16, 2026
d69b19e
clubb_intr PR updates from review
jtruesdal Sep 18, 2026
d636ae1
fix for interpolated history tapes using extra coord dimension
jtruesdal Sep 19, 2026
ba67880
TR8 fix for izumi test
jtruesdal Sep 19, 2026
0cc307f
updates to fix interp interface calls for fv and fv3 dycores and gw_d…
jtruesdal Sep 22, 2026
0a054e1
forgot to update src/dynamics/fv3 dir pointer for new branch
jtruesdal Sep 22, 2026
7669be7
bring existing code up to cam6_4_203, added temporary fv3 interface t…
jtruesdal Sep 22, 2026
421bbda
PR comment mods
jtruesdal Sep 25, 2026
b8d1541
add call to get_opt for deep_scheme.
jtruesdal Sep 25, 2026
e96c82d
add new parameters for magic numbers
jtruesdal Sep 25, 2026
13b70a5
next set of PR recommended mods, including comment and spelling clean…
jtruesdal Sep 25, 2026
9385e64
PR mods, delete lopt4/5 routines, new buoyancy mixfrac routine.
jtruesdal Sep 29, 2026
5f1e474
PR updated comments and removed nlev from interp_mod fv3 interface
jtruesdal Sep 30, 2026
1a570f2
PR updates to remove a bad comment and unused parameter
jtruesdal Sep 30, 2026
d303296
PR comment update and bug fix for fv interp_mod
jtruesdal Oct 2, 2026
ea79138
replace downdraft clamp
adamrher Oct 6, 2026
4fb2e60
Merge pull request #33 from adamrher/clubbdev.ddclamp
jtruesdal Oct 7, 2026
de8d3b3
Official FV3 tag with interpolation bug fix, PR fix for downdrafts, b…
jtruesdal Oct 7, 2026
6f8a35c
updates for issue 1590 and needed to update one pbuf_get_field for ca…
jtruesdal Oct 7, 2026
c18d090
Removed a comment that tripped up the NAG r8-tagged-literal check
jtruesdal Oct 7, 2026
0d62530
testlist clubbmf test requires cam7 changed FHIST TO FHISTC_LTso, add…
jtruesdal Oct 8, 2026
10a705b
bugfix evapcdp is supposed to be positive, and mf_sqtev is already us…
jtruesdal Oct 8, 2026
2a5f8e6
update ChangeLog with all test results - ready to tag
jtruesdal Oct 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
path = src/dynamics/fv3
url = https://github.com/ESCOMP/CAM_FV3_interface.git
fxrequired = AlwaysRequired
fxtag = fv3int_061924
fxtag = fv3int_100726
fxDONOTUSEurl = https://github.com/ESCOMP/CAM_FV3_interface.git

[submodule "geoschem"]
Expand Down
91 changes: 72 additions & 19 deletions bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -3323,12 +3323,38 @@ if (($chem ne 'none') and ($chem ne 'terminator') and !($chem =~ /geoschem/)) {
add_default($nl, 'chem_use_chemtrop');
}

# CLUBB_SGS
my $do_clubb_sgs = $nl->get_value('do_clubb_sgs');
if (defined $do_clubb_sgs) {
die "CAM Namelist ERROR: User may not specify the value of do_clubb_sgs.\n".
"This variable is set by build-namelist based on information\n".
"from the configure cache file.\n";
}
add_default($nl, 'do_clubb_sgs');
my $clubb_sgs = $nl->get_value('do_clubb_sgs');

# Deep convection scheme
add_default($nl, 'deep_scheme');

my $deep_scheme = $nl->get_value('deep_scheme');
$deep_scheme =~ s/['"]//g; # Strip quotes for exact XML attribute matching

# CLUBB+MF dependency checks
if ($deep_scheme =~ /CLUBB_MF/) {
if ($clubb_sgs !~ /$TRUE/io) {
die "CAM Namelist ERROR: deep_scheme='CLUBB_MF' but do_clubb_sgs is not active.\n" .
"CLUBB+MF requires the CLUBB_SGS package to be enabled.\n";
}
# CLUBB+MF is only valid cam7 physics
if ($phys !~ /cam7/) {
die "CAM Namelist ERROR: deep_scheme='CLUBB_MF' but the physics package is '$phys'.\n" .
"CLUBB+MF is only supported with cam7 physics (configure with -phys cam7).\n";
}
}

# Aerosol convective processes
if (($phys =~ /cam6/ or $phys =~ /cam7/) and $deep_scheme =~ /ZM/) {
if ((($phys =~ /cam6/ or $phys =~ /cam7/) and $deep_scheme =~ /ZM/)
or $deep_scheme =~ /CLUBB_MF/) {
add_default($nl, 'convproc_do_aer', 'val'=>'.true.');
add_default($nl, 'convproc_do_evaprain_atonce', 'val'=>'.true.');
add_default($nl, 'convproc_pom_spechygro', 'val'=>'0.2D0');
Expand Down Expand Up @@ -3439,11 +3465,11 @@ if ($cfg->get('microphys') =~ /^mg/) {

# Aerosol Namelist options
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');
add_default($nl, 'microp_aero_wsub_scale');
add_default($nl, 'microp_aero_wsubi_scale');

# Ice nucleation options
if (!$simple_phys) {
Expand Down Expand Up @@ -3534,13 +3560,6 @@ if ($use_subcol_microp =~ /$TRUE/io) {
}

# CLUBB_SGS
my $do_clubb_sgs = $nl->get_value('do_clubb_sgs');
if (defined $do_clubb_sgs) {
die "CAM Namelist ERROR: User may not specify the value of do_clubb_sgs.\n".
"This variable is set by build-namelist based on information\n".
"from the configure cache file.\n";
}
add_default($nl, 'do_clubb_sgs');
my $clubb_sgs = $nl->get_value('do_clubb_sgs');
if ($clubb_sgs =~ /$TRUE/io) {
my $clubb_do_adv = $cfg->get('clubb_do_adv');
Expand Down Expand Up @@ -3657,7 +3676,6 @@ if ($clubb_sgs =~ /$TRUE/io) {
add_default($nl, 'clubb_l_call_pdf_closure_twice');
add_default($nl, 'clubb_l_damp_wp2_using_em');
add_default($nl, 'clubb_l_damp_wp3_Skw_squared');
add_default($nl, 'clubb_l_do_expldiff_rtm_thlm');
add_default($nl, 'clubb_l_e3sm_config');
add_default($nl, 'clubb_l_enable_relaxed_clipping');
add_default($nl, 'clubb_l_godunov_upwind_wpxp_ta');
Expand All @@ -3673,7 +3691,6 @@ if ($clubb_sgs =~ /$TRUE/io) {
add_default($nl, 'clubb_l_mono_flux_lim_um');
add_default($nl, 'clubb_l_mono_flux_lim_vm');
add_default($nl, 'clubb_l_partial_upwind_wp3');
add_default($nl, 'clubb_l_predict_upwp_vpwp');
add_default($nl, 'clubb_l_ho_nontrad_coriolis');
add_default($nl, 'clubb_l_ho_trad_coriolis');
add_default($nl, 'clubb_l_rcm_supersat_adj');
Expand Down Expand Up @@ -3705,15 +3722,50 @@ if ($clubb_sgs =~ /$TRUE/io) {
add_default($nl, 'clubb_wpxp_Ri_exp');
add_default($nl, 'clubb_z_displace');

#CLUBB+MF options
add_default($nl, 'do_clubb_mf');
add_default($nl, 'do_clubb_mf_diag');
add_default($nl, 'clubb_mf_L0');
add_default($nl, 'clubb_mf_ent0');
add_default($nl, 'clubb_mf_nup');
add_default($nl, 'clubb_l_predict_upwp_vpwp', 'deep_scheme'=>$deep_scheme);
add_default($nl, 'clubb_l_do_expldiff_rtm_thlm', 'deep_scheme'=>$deep_scheme);

#Turn on HB scheme where CLUBB not active
add_default($nl, 'do_hb_above_clubb');

# CLUBB-MF options
if ($deep_scheme =~ /CLUBB_MF/) {
add_default($nl, 'do_clubb_mf_diag');
add_default($nl, 'do_clubb_mf_rad');
add_default($nl, 'do_clubb_mf_precip');
add_default($nl, 'do_clubb_mf_addtke');
add_default($nl, 'clubb_mf_L0');
add_default($nl, 'clubb_mf_ent0');
add_default($nl, 'clubb_mf_alphturb');
add_default($nl, 'clubb_mf_Lopt');
add_default($nl, 'clubb_mf_a0');
add_default($nl, 'clubb_mf_b0');
add_default($nl, 'clubb_mf_nup');
add_default($nl, 'clubb_mf_max_L0');
add_default($nl, 'clubb_mf_fdd');
add_default($nl, 'do_clubb_mf_coldpool');
add_default($nl, 'clubb_mf_ddalph');
add_default($nl, 'clubb_mf_ddbeta');
add_default($nl, 'clubb_mf_pwfac');
add_default($nl, 'clubb_mf_ddexp');
add_default($nl, 'clubb_mf_pwmin');
add_default($nl, 'clubb_mf_pwmax');
add_default($nl, 'clubb_mf_cldfrac_fac');
add_default($nl, 'do_clubb_mf_ustar');
add_default($nl, 'do_clubb_mf_mixd');
add_default($nl, 'clubb_mf_up_ndt');
add_default($nl, 'clubb_mf_cp_ndt');
add_default($nl, 'do_clubb_mf_rhtke');
add_default($nl, 'do_clubb_mf_cmt');
add_default($nl, 'clubb_mf_kseed');
add_default($nl, 'do_clubb_mf_lscale_perplume');
add_default($nl, 'do_clubb_mf_coldpool_perplume');
add_default($nl, 'do_clubb_mf_coldpool_init');
add_default($nl, 'do_clubb_mf_aloft');
add_default($nl, 'do_clubb_mf_aspd');
add_default($nl, 'do_clubb_mf_pblcull');
add_default($nl, 'do_clubb_mf_invswitch');
}
}

# Tuning for wet scavenging of modal aerosols
Expand Down Expand Up @@ -4022,7 +4074,8 @@ if ($waccm_phys or
add_default($nl, 'use_gw_front' , 'val'=>'.false.');
}
# Check if deep convection scheme used. If not set use_gw_convect_dp=.false.
if ($deep_scheme =~ /off/) {
# CLUBB_MF does not (yet) provide TTEND_DP, so treat it like 'off' here
if ($deep_scheme =~ /off/ or $deep_scheme =~ /CLUBB_MF/) {
$use_gw_convect_dp = '.false.';
}
add_default($nl, 'use_gw_convect_dp', 'val'=>$use_gw_convect_dp);
Expand Down
46 changes: 39 additions & 7 deletions bld/namelist_files/namelist_defaults_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2255,9 +2255,10 @@
<clubb_l_damp_wp3_Skw_squared > .false. </clubb_l_damp_wp3_Skw_squared>
<clubb_l_diagnose_correlations > .false. </clubb_l_diagnose_correlations>
<clubb_l_diffuse_rtm_and_thlm > .false. </clubb_l_diffuse_rtm_and_thlm>
<clubb_l_do_expldiff_rtm_thlm > .false. </clubb_l_do_expldiff_rtm_thlm>
<clubb_l_do_expldiff_rtm_thlm clubb_sgs="1" > .true. </clubb_l_do_expldiff_rtm_thlm>
<clubb_l_do_expldiff_rtm_thlm clubb_sgs="1" silhs="1"> .false. </clubb_l_do_expldiff_rtm_thlm>
<clubb_l_do_expldiff_rtm_thlm > .false. </clubb_l_do_expldiff_rtm_thlm>
<clubb_l_do_expldiff_rtm_thlm clubb_sgs="1" > .true. </clubb_l_do_expldiff_rtm_thlm>
<clubb_l_do_expldiff_rtm_thlm clubb_sgs="1" silhs="1" > .false. </clubb_l_do_expldiff_rtm_thlm>
<clubb_l_do_expldiff_rtm_thlm clubb_sgs="1" deep_scheme="CLUBB_MF" > .false. </clubb_l_do_expldiff_rtm_thlm>
<clubb_l_e3sm_config > .false. </clubb_l_e3sm_config>
<clubb_l_enable_relaxed_clipping > .false. </clubb_l_enable_relaxed_clipping>
<clubb_l_fix_w_chi_eta_correlations > .true. </clubb_l_fix_w_chi_eta_correlations>
Expand All @@ -2277,6 +2278,7 @@
<clubb_l_partial_upwind_wp3 > .false. </clubb_l_partial_upwind_wp3>
<clubb_l_predict_upwp_vpwp > .false. </clubb_l_predict_upwp_vpwp>
<clubb_l_predict_upwp_vpwp phys="cam7" > .true. </clubb_l_predict_upwp_vpwp>
<clubb_l_predict_upwp_vpwp phys="cam7" deep_scheme="CLUBB_MF" > .false. </clubb_l_predict_upwp_vpwp>
<clubb_l_ho_nontrad_coriolis > .false. </clubb_l_ho_nontrad_coriolis>
<clubb_l_ho_trad_coriolis > .false. </clubb_l_ho_trad_coriolis>
<clubb_l_prescribed_avg_deltaz > .false. </clubb_l_prescribed_avg_deltaz>
Expand Down Expand Up @@ -2368,11 +2370,41 @@


<!-- CLUBB+MF options -->
<do_clubb_mf > .false. </do_clubb_mf>
<do_clubb_mf_diag > .false. </do_clubb_mf_diag>
<clubb_mf_L0 > 50.0 </clubb_mf_L0>
<clubb_mf_ent0 > 0.22 </clubb_mf_ent0>
<clubb_mf_nup > 10 </clubb_mf_nup>
<do_clubb_mf_precip > .true. </do_clubb_mf_precip>
<do_clubb_mf_rad > .true. </do_clubb_mf_rad>
<do_clubb_mf_addtke > .false. </do_clubb_mf_addtke>
<clubb_mf_L0 > 200.0 </clubb_mf_L0>
<clubb_mf_ent0 > 0.2 </clubb_mf_ent0>
<clubb_mf_alphturb > 3.0 </clubb_mf_alphturb>
<clubb_mf_Lopt > 6 </clubb_mf_Lopt>
<clubb_mf_a0 > 0.15 </clubb_mf_a0>
<clubb_mf_b0 > 1.0 </clubb_mf_b0>
<clubb_mf_nup > 25 </clubb_mf_nup>
<clubb_mf_max_L0 > 1.e3 </clubb_mf_max_L0>
<clubb_mf_fdd > 0.5 </clubb_mf_fdd>
<do_clubb_mf_coldpool > .true. </do_clubb_mf_coldpool>
<clubb_mf_ddalph > 12.0 </clubb_mf_ddalph>
<clubb_mf_ddbeta > 1.0 </clubb_mf_ddbeta>
<clubb_mf_pwfac > 1.0 </clubb_mf_pwfac>
<clubb_mf_ddexp > 3.0 </clubb_mf_ddexp>
<clubb_mf_pwmin > 1.5 </clubb_mf_pwmin>
<clubb_mf_pwmax > 3.0 </clubb_mf_pwmax>
<clubb_mf_cldfrac_fac > 10.0 </clubb_mf_cldfrac_fac>
<do_clubb_mf_ustar > .false. </do_clubb_mf_ustar>
<do_clubb_mf_mixd > .false. </do_clubb_mf_mixd>
<clubb_mf_up_ndt > 1 </clubb_mf_up_ndt>
<clubb_mf_cp_ndt > 1 </clubb_mf_cp_ndt>
<do_clubb_mf_rhtke > .false. </do_clubb_mf_rhtke>
<do_clubb_mf_cmt > .false. </do_clubb_mf_cmt>
<do_clubb_mf_lscale_perplume > .true. </do_clubb_mf_lscale_perplume>
<do_clubb_mf_coldpool_init > .false. </do_clubb_mf_coldpool_init>
<do_clubb_mf_coldpool_perplume > .true. </do_clubb_mf_coldpool_perplume>
<clubb_mf_kseed > 1 </clubb_mf_kseed>
<do_clubb_mf_aloft > .true. </do_clubb_mf_aloft>
<do_clubb_mf_aspd > .false. </do_clubb_mf_aspd>
<do_clubb_mf_pblcull > .false. </do_clubb_mf_pblcull>
<do_clubb_mf_invswitch > .true. </do_clubb_mf_invswitch>

<!-- Set radiation intervals based on mpas hgrids -->
<iradlw hgrid="mpasa15" > 10 </iradlw>
Expand Down
Loading
Loading