Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -29,7 +29,7 @@
[submodule "atmos_phys"]
path = src/atmos_phys
url = https://github.com/ESCOMP/atmospheric_physics
fxtag = atmos_phys0_22_003
fxtag = atmos_phys0_23_000
fxrequired = AlwaysRequired
fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics

Expand Down
4 changes: 2 additions & 2 deletions bld/namelist_files/namelist_definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3268,7 +3268,7 @@ Default: 700.e2 for CAM5, CAM6 and CAM7; all others=> 750.e2
<entry id="cldfrc_iceopt" type="integer" category="conv"
group="cldfrc_nl" valid_values="" >
Scheme for ice cloud fraction: 1=wang &amp; sassen, 2=schiller (iciwc),
3=wood &amp; field, 4=Wilson (based on smith), 5=modified slingo (ssat &amp; empyt cloud)
3=wood &amp; field, 4=Wilson (based on smith), 5=modified slingo (ssat &amp; empty cloud)
Default: set by build-namelist
</entry>

Expand Down Expand Up @@ -3304,7 +3304,7 @@ Default: set by build-namelist

<entry id="cldfrc2m_qist_min" type="real" category="conv"
group="cldfrc2m_nl" valid_values="" >
Minimum in-stratus IWC constraint [ kg/kg ]
Minimum in-stratus IWC constraint greater than 0 [ kg/kg ]
Default: set by build-namelist
</entry>

Expand Down
4 changes: 2 additions & 2 deletions cime_config/testdefs/testlist_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -334,14 +334,14 @@
</options>
</test>

<test compset="FCARMA2000climo" grid="f19_f19_mg17" name="SMS_D_Ln9" testmods="cam/outfrq9s" supported="false">
<test compset="FCARMA2000climo" grid="f19_f19_mg17" name="SMS_D_Ln9" testmods="cam/outfrq9s_carma_rad_diag" supported="false">
<machines>
<machine name="derecho" compiler="intel" category="aux_cam"/>
<machine name="derecho" compiler="intel" category="carma"/>
</machines>
<options>
<option name="wallclock">00:40:00</option>
<option name="comment">CARMA trop_strat model test</option>
<option name="comment">CARMA trop_strat, rad_diag w/ sectional CARMA bins</option>
</options>
</test>
<test compset="FWmaCARMAHIST" grid="f19_f19_mg17" name="SMS_D_Ln9" testmods="cam/outfrq9s" supported="false">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
./xmlchange ROF_NCPL=\$ATM_NCPL
./xmlchange GLC_NCPL=\$ATM_NCPL
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
mfilt=1,1,1,1,1,1
ndens=1,1,1,1,1,1
nhtfrq=9,9,9,9,9,9
write_nstep0=.true.
inithist='ENDOFRUN'

rad_diag_1 = 'A:Q:H2O', 'N:O2:O2', 'A:CO2:CO2', 'A:O3:O3', 'A:N2O:N2O', 'A:CH4:CH4',
'N:CFC11:CFC11', 'N:CFC12:CFC12'

rad_diag_2 = 'A:Q:H2O', 'N:O2:O2', 'A:CO2:CO2', 'A:O3:O3', 'A:N2O:N2O', 'A:CH4:CH4',
'N:CFC11:CFC11', 'N:CFC12:CFC12',
'B:MXAER01:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX01_rrtmg.nc',
'B:MXAER02:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX02_rrtmg.nc',
'B:MXAER03:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX03_rrtmg.nc',
'B:MXAER04:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX04_rrtmg.nc',
'B:MXAER05:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX05_rrtmg.nc',
'B:MXAER06:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX06_rrtmg.nc',
'B:MXAER07:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX07_rrtmg.nc',
'B:MXAER08:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX08_rrtmg.nc',
'B:MXAER09:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX09_rrtmg.nc',
'B:MXAER10:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX10_rrtmg.nc',
'B:MXAER11:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX11_rrtmg.nc',
'B:MXAER12:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX12_rrtmg.nc',
'B:MXAER13:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX13_rrtmg.nc',
'B:MXAER14:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX14_rrtmg.nc',
'B:MXAER15:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX15_rrtmg.nc',
'B:MXAER16:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX16_rrtmg.nc',
'B:MXAER17:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX17_rrtmg.nc',
'B:MXAER18:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX18_rrtmg.nc',
'B:MXAER19:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX19_rrtmg.nc',
'B:MXAER20:$DIN_LOC_ROOT/atm/cam/chem/carma/rrtmg/aerosol_cld_CRMIX20_rrtmg.nc'

! rad_diag_3 uses the aerosol optics files generated by CARMA in the run
! directory at initialization when carma_do_optics is enabled.
carma_do_optics = .true.

rad_diag_3 = 'A:Q:H2O', 'N:O2:O2', 'A:CO2:CO2', 'A:O3:O3', 'A:N2O:N2O', 'A:CH4:CH4',
'N:CFC11:CFC11', 'N:CFC12:CFC12',
'B:MXAER01:trop_strat_soa5_MXAER01_rrtmg.nc',
'B:MXAER02:trop_strat_soa5_MXAER02_rrtmg.nc',
'B:MXAER03:trop_strat_soa5_MXAER03_rrtmg.nc',
'B:MXAER04:trop_strat_soa5_MXAER04_rrtmg.nc',
'B:MXAER05:trop_strat_soa5_MXAER05_rrtmg.nc',
'B:MXAER06:trop_strat_soa5_MXAER06_rrtmg.nc',
'B:MXAER07:trop_strat_soa5_MXAER07_rrtmg.nc',
'B:MXAER08:trop_strat_soa5_MXAER08_rrtmg.nc',
'B:MXAER09:trop_strat_soa5_MXAER09_rrtmg.nc',
'B:MXAER10:trop_strat_soa5_MXAER10_rrtmg.nc',
'B:MXAER11:trop_strat_soa5_MXAER11_rrtmg.nc',
'B:MXAER12:trop_strat_soa5_MXAER12_rrtmg.nc',
'B:MXAER13:trop_strat_soa5_MXAER13_rrtmg.nc',
'B:MXAER14:trop_strat_soa5_MXAER14_rrtmg.nc',
'B:MXAER15:trop_strat_soa5_MXAER15_rrtmg.nc',
'B:MXAER16:trop_strat_soa5_MXAER16_rrtmg.nc',
'B:MXAER17:trop_strat_soa5_MXAER17_rrtmg.nc',
'B:MXAER18:trop_strat_soa5_MXAER18_rrtmg.nc',
'B:MXAER19:trop_strat_soa5_MXAER19_rrtmg.nc',
'B:MXAER20:trop_strat_soa5_MXAER20_rrtmg.nc',
'B:PRSUL01:trop_strat_soa5_PRSUL01_rrtmg.nc',
'B:PRSUL02:trop_strat_soa5_PRSUL02_rrtmg.nc',
'B:PRSUL03:trop_strat_soa5_PRSUL03_rrtmg.nc',
'B:PRSUL04:trop_strat_soa5_PRSUL04_rrtmg.nc',
'B:PRSUL05:trop_strat_soa5_PRSUL05_rrtmg.nc',
'B:PRSUL06:trop_strat_soa5_PRSUL06_rrtmg.nc',
'B:PRSUL07:trop_strat_soa5_PRSUL07_rrtmg.nc',
'B:PRSUL08:trop_strat_soa5_PRSUL08_rrtmg.nc',
'B:PRSUL09:trop_strat_soa5_PRSUL09_rrtmg.nc',
'B:PRSUL10:trop_strat_soa5_PRSUL10_rrtmg.nc',
'B:PRSUL11:trop_strat_soa5_PRSUL11_rrtmg.nc',
'B:PRSUL12:trop_strat_soa5_PRSUL12_rrtmg.nc',
'B:PRSUL13:trop_strat_soa5_PRSUL13_rrtmg.nc',
'B:PRSUL14:trop_strat_soa5_PRSUL14_rrtmg.nc',
'B:PRSUL15:trop_strat_soa5_PRSUL15_rrtmg.nc',
'B:PRSUL16:trop_strat_soa5_PRSUL16_rrtmg.nc',
'B:PRSUL17:trop_strat_soa5_PRSUL17_rrtmg.nc',
'B:PRSUL18:trop_strat_soa5_PRSUL18_rrtmg.nc',
'B:PRSUL19:trop_strat_soa5_PRSUL19_rrtmg.nc',
'B:PRSUL20:trop_strat_soa5_PRSUL20_rrtmg.nc'
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
hist_nhtfrq = 9
hist_mfilt = 1
hist_ndens = 1
96 changes: 96 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,101 @@
===============================================================

Tag name: cam6_4_183
Originator(s): jimmielin
Date: 22 Jun 2026
One-line Summary: Complete CCPPization of cloud fraction for two-moment microphys (cldfrc2m); Add rad_diag CARMA testmod to existing Derecho FCARMA2000climo test
Github PR URL: https://github.com/ESCOMP/CAM/pull/1522

Purpose of changes (include the issue number and title text for each relevant GitHub issue):
- Closes #1521 - Move two-moment cloud fraction scheme (cldfrc2m) to atmos_phys as compute_cloud_fraction_two_moment.
- cldfrc2m is used broadly across CAM physics (cldwat2m_macro, clubb_intr, CARMA cirrus models) and its namelist parameters are pulled in via USE statements in many places. Moving the computational routines to atmos_phys and making cldfrc2m a thin CAM shim for namelist I/O and parameter distribution facilitates CCPP port of CLUBB, PUMAS, etc. as these namelist parameters will cleanly flow via standard names
- Added keyword arguments calling into cldfrc for rh threshold etc. for clarity
- Closes #1560 - Extend CARMA test on Derecho/Intel with rad_diag testing

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: nusbaume, fvitt (CARMA fix), peverwhee (atmos_phys)

List all files eliminated: N/A

List all files added and what they do:
A cime_config/testdefs/testmods_dirs/cam/outfrq9s_carma_rad_diag/shell_commands
A cime_config/testdefs/testmods_dirs/cam/outfrq9s_carma_rad_diag/user_nl_cam
A cime_config/testdefs/testmods_dirs/cam/outfrq9s_carma_rad_diag/user_nl_clm
- new testmod that exercises rad_diag for CARMA (prev only Izumi for MAM)
- new testmod that exercises carma_do_optics for CARMA to write out optics files

List all existing files that have been modified, and describe the changes:

M .gitmodules
M src/atmos_phys
- update atmos_phys to atmos_phys0_23_000.

M bld/namelist_files/namelist_definition.xml
- fix typo

M cime_config/testdefs/testlist_cam.xml
- update Derecho Intel FCARMA test to use the new outfrq9s_carma_rad_diag testmod.

M src/physics/cam/cldfrc2m.F90
- Move computational subroutines (astG_PDF, astG_RHU, astG_PDF_single,
astG_RHU_single, aist_single, aist_vector) to atmos_phys
compute_cloud_fraction_two_moment.
- Keep readnl, init, and public namelist-derived constants
(rhmini_const, rhmaxi_const, rhminis_const, rhmaxis_const,
rhminl_const, rhminl_adj_land_const, rhminh_const).
- init now calls compute_cloud_fraction_two_moment_init and
cldfrc_getparams to distribute parameters.
- Newly exposes rhminl_const, rhminl_adj_land_const, rhminh_const
(previously internal) so callers can pass them in explicitly.

M src/physics/cam/cldwat2m_macro.F90
- USE compute_cloud_fraction_two_moment directly for subroutines;
USE cldfrc2m shim only for rh constants.

M src/physics/cam/clubb_intr.F90
- USE compute_cloud_fraction_two_moment for aist_vector;
USE cldfrc2m shim for rh constants including newly-exposed rhminl_const,
rhminl_adj_land_const, rhminh_const.

M src/physics/carma/models/cirrus/carma_cloudfraction.F90
M src/physics/carma/models/cirrus_dust/carma_cloudfraction.F90
- USE compute_cloud_fraction_two_moment for subroutines;
USE cldfrc2m shim for rh constants.

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:
SMS_D_Ln9.f19_f19_mg17.FCARMA2000climo.derecho_intel.cam-outfrq9s_carma_rad_diag (Overall: DIFF) details:
- the testmod for this test changed to "outfrq9s_carma_rad_diag".
I cprnc'd the baseline files manually against
/glade/campaign/cesm/community/amwg/cam_baselines/cam6_4_182_intel/
SMS_D_Ln9.f19_f19_mg17.FCARMA2000climo.derecho_intel.cam-outfrq9s
The cam.h0a file differs only in the field lists due to new variables introduced in rad_diag_2 and 3.
The other files are IDENTICAL.

derecho/nvhpc/aux_cam: All PASS

izumi/nag/aux_cam:
ERC_D_Ln9.f10_f10_mt232.FHIST_C5.izumi_nag.cam-outfrq3s_subcol (Overall: FAIL) details:
FAIL ERC_D_Ln9.f10_f10_mt232.FHIST_C5.izumi_nag.cam-outfrq3s_subcol COMPARE_base_rest
- pre-existing failure.

izumi/gnu/aux_cam: All PASS

Summarize any changes to answers: All B4B

===============================================================

Tag name: cam6_4_182
Originator(s): fvitt
Date: 16 Jun 2026
Expand Down
Loading
Loading