Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
884e0a4
Base (move iswbands/ilwbands to radiation_namelist); fix solar_parms_…
hplin-ucar Mar 13, 2026
f5c5f68
Add unmodified files from CAM (for diff)
hplin-ucar Mar 13, 2026
dacbf37
Initial push for BAM aerosols (chem none) with prescribed source and …
hplin-ucar Mar 13, 2026
9aed229
Port changes from Francis Vitt: CAM#1500 Fix issue with aerosol optic…
hplin-ucar Mar 16, 2026
adb7cd9
Remove read_water_refindex and move to init phase of aerosol_optics C…
hplin-ucar Mar 18, 2026
36b914f
Aerosol pfUnit tests (coauthored with claude-opus-4.6 then reviewed);…
hplin-ucar Mar 24, 2026
4acb363
Frontport changes from code review in CAM
hplin-ucar Mar 25, 2026
fd5d946
fix palb, pasm comment - sync with CAM
hplin-ucar Mar 25, 2026
b797a39
Sync up to CAM
hplin-ucar Apr 8, 2026
5535592
Update unit tests to sync up with CAM.
hplin-ucar Apr 8, 2026
4a52b11
Add modal properties, state direct copy from CAM for adapting
hplin-ucar Apr 8, 2026
1b1aa9b
Implement modal aerosol properties and state concrete implementations…
hplin-ucar Apr 9, 2026
f6df458
Fix Fortran unit tests: missing shr_kind_cl decl replacing cs1
hplin-ucar Apr 9, 2026
5ad65b7
Update to return physprop for concrete aerosol_properties%optics_para…
hplin-ucar Apr 9, 2026
0d0abce
Extend pfUnit tests to MAM aerosol state/properties
hplin-ucar Apr 9, 2026
49ca7ec
Add modal_test_helpers for constructing 2-mode MAM test
hplin-ucar Apr 9, 2026
abce92a
Debug CIRRUS workflow - failure() artifact upload
hplin-ucar Apr 9, 2026
6bb9f6f
CCPP framework does not like shr_kind_cl
hplin-ucar Apr 9, 2026
31f294b
Oops, should not have done replace all
hplin-ucar Apr 9, 2026
d68ae9b
Revert "Debug CIRRUS workflow - failure() artifact upload"
hplin-ucar Apr 9, 2026
73785a9
fix cs1 -> 256 to make ccpp-framework happy
hplin-ucar Apr 13, 2026
f5a9a3f
bulk_aero_3: sync up to work-in-progress microp-enabled version in CA…
hplin-ucar Apr 20, 2026
30dc17c
Fix build
hplin-ucar Apr 20, 2026
0e7fc4e
Unit test fixes; build fixes; pbuf setup in registry.xml
hplin-ucar Apr 20, 2026
4ed005c
Fix extra ppgrid call; comment out rndst in registry
hplin-ucar Apr 20, 2026
f234e68
Fix unit tests due to new ncol
hplin-ucar Apr 20, 2026
c13c180
Disable pbuf input fields with dust dimension as problematic
hplin-ucar Apr 20, 2026
5e3dbc8
Continue to fix unit tests
hplin-ucar Apr 20, 2026
5bcc5a5
Make wv_stdname register consistent with initialize_constituents; mov…
hplin-ucar Apr 21, 2026
4e318e5
Registry fixes for microp_aero.
hplin-ucar Apr 21, 2026
becf8ed
Add dust dimensioned variables to snapshot check.
hplin-ucar Apr 23, 2026
9baedf3
Make it a parameter
hplin-ucar Apr 24, 2026
cae5629
Frontport changes in cam6_4_169 (CARMA with RRTMGP) from Francis Vitt
jimmielin May 13, 2026
fc9bc0c
Add outfrq_microp_aero_bam_derecho to test suite.
hplin-ucar May 18, 2026
8e9021b
Add diagnostics fields to testmod.
hplin-ucar May 18, 2026
f6361c0
Disable aerosols in QPC cases.
hplin-ucar May 18, 2026
0a40ae1
Add sane defaults for type declarations for safety
hplin-ucar May 18, 2026
f8703cc
Merge branch 'development' into hplin/bulk_aero_3
hplin-ucar Jun 9, 2026
29b491a
Sync up to cam6_4_177.
hplin-ucar Jun 9, 2026
f3585de
Abstract host binding for constituents in SIMA to avoid divergence.
hplin-ucar Jun 11, 2026
4a28ba4
Fix pfUnit test in bulk aero construction.
hplin-ucar Jun 11, 2026
5e47246
Fix pfUnit regression in aqu_gain_binfraction
hplin-ucar Jun 11, 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
1 change: 1 addition & 0 deletions cime_config/buildlib
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ def _build_cam():
case.get_value("COMP_INTERFACE")),
os.path.join(atm_root, "src", "dynamics", "utils"),
os.path.join(atm_root, "src", "physics", "utils"),
os.path.join(atm_root, "src", "aerosol"),
os.path.join(atm_root, "src", "history"),
os.path.join(atm_root, "src", "history", "buffers", "src"),
os.path.join(atm_root, "src", "history", "buffers", "src", "hash"),
Expand Down
176 changes: 176 additions & 0 deletions cime_config/namelist_definition_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,182 @@
</values>
</entry>

<!-- Radiatively active aerosol -->
<entry id="mode_defs">
<type>char*256(120)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Definitions for the aerosol modes that may be used in the rad_climate and
rad_aer_diag_* variables.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="bin_defs">
<type>char*256(640)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Definitions for the aerosol bins that may be used in the rad_climate and
rad_aer_diag_* variables.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_climate">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
A list of the radiatively active species, i.e., species that affect the
climate simulation via the radiative heating rate calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_1">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
A list of species to be used in the first diagnostic radiative heating rate
calculation. These species are not the ones affecting the climate
simulation. This is a hook for performing radiative forcing calculations.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_2">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 2nd diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_3">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 3rd diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_4">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 4th diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_5">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 5th diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_6">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 6th diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_7">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 7th diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_8">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 8th diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_9">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 9th diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>

<entry id="rad_aer_diag_10">
<type>char*256(80)</type>
<category>radiation</category>
<group>rad_aer_nl</group>
<units>none</units>
<desc>
Analogous to rad_aer_diag_1, but for the 10th diagnostic calculation.
</desc>
<values>
<value>UNSET</value>
</values>
</entry>


<!-- Vertical Coordinate -->

<entry id="pver">
Expand Down
11 changes: 11 additions & 0 deletions cime_config/testdefs/testlist_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,17 @@
</options>
</test>

<!-- microp_aero BAM test -->
<test compset="FPHYStest" grid="ne3pg3_ne3pg3_mg37" name="SMS_Ln2" testmods="cam/outfrq_microp_aero_bam_derecho">
<machines>
<machine name="derecho" compiler="gnu" category="aux_sima"/>
</machines>
<options>
<option name="wallclock">00:10:00</option>
<option name="comment">Test for microp_aero with BAM bulk aerosols, including ndrop_bam, nucleate_ice, and inline logic in microp_aero</option>
</options>
</test>

<!-- CAM7 physics tests -->
<test compset="FCAM7" grid="ne3pg3_ne3pg3_mg37" name="SMS_Ln9" testmods="cam/outfrq_se_cslam_analy_ic">
<machines>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,9 @@ hist_add_inst_fields;h1:slflx_PBL,qtflx_PBL,uflx_PBL,vflx_PBL,slflx_cg_PBL,qtflx
hist_add_inst_fields;h1:slten_PBL,qtten_PBL,uten_PBL,vten_PBL,qvten_PBL,qlten_PBL,qiten_PBL,tten_PBL,rhten_PBL
hist_add_inst_fields;h1:qt_pre_PBL,sl_pre_PBL,slv_pre_PBL,u_pre_PBL,v_pre_PBL,qv_pre_PBL,ql_pre_PBL,qi_pre_PBL,t_pre_PBL,rh_pre_PBL
hist_add_inst_fields;h1:DTV,DUV,DVV,DTVKE

! QPC4 is an aquaplanet case - disable prescribed aerosol data
prescribed_aero_file = ''
prescribed_aero_specifier = ''
prescribed_volcaero_file = ''
aerodep_flx_file = ''
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
./xmlchange CAM_CONFIG_OPTS="--dyn none --physics-suites microp_aero_bam"
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
! this snapshot was constructed by:
! (1) set -chem none in CAM_CONFIG_OPTS in a FHIST_LTso (or any other CAM7 case)
! n.b. only CAM7 is supported as its PUMAS accepts tendencies from microp_aero/nucleate_ice
! and CAM7 PUMAS is the target for CAM-SIMA CCPPization, not pumas-frozen.
! (2) isolating the microp_aero section in physpkg.F90
! as the default 'microp_section' snapshot point will also include the actual microphysics (e.g., PUMAS)
! (3) cld_macmic_num_steps = 1 also has to be set in CAM user_nl_cam when creating the snapshot.

! this is a CAM7 LT nochem snapshot
pver = 58

debug_output = 1

! tolerances for testing
ncdata_check_err = .true.
min_difference = 2e-15

ncdata = '/glade/campaign/cesm/community/amwg/sima_baselines/cam_sima_test_snapshots/cam_ne3pg3_fhistc_ltso_microp_aero_derecho_gnu_before_c20260518.nc'
ncdata_check = '/glade/campaign/cesm/community/amwg/sima_baselines/cam_sima_test_snapshots/cam_ne3pg3_fhistc_ltso_microp_aero_derecho_gnu_after_c20260518.nc'

use_hetfrz_classnuc = .false.

! nucleate_ice:
nucleate_ice_incloud = .false.
nucleate_ice_strat = 1.0D0
nucleate_ice_subgrid = 1.2D0
nucleate_ice_subgrid_strat = 1.2D0
nucleate_ice_use_troplev = .true.
use_preexisting_ice = .true.

! microp_aero:
microp_aero_wsub_min = 0.1D0
microp_aero_wsub_scale = 0.9D0
microp_aero_wsubi_min = 0.001D0
microp_aero_wsubi_scale = 1.5D0

! BAM aerosols:
rad_aer_climate = 'N:sulf:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc', 'N:dust1:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/dust1_rrtmg_c080918.nc',
'N:dust2:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/dust2_rrtmg_c080918.nc', 'N:dust3:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/dust3_rrtmg_c080918.nc',
'N:dust4:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/dust4_rrtmg_c080918.nc', 'N:bcar1:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/bcpho_rrtmg_c080918.nc',
'N:bcar2:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/bcphi_rrtmg_c080918.nc', 'N:ocar1:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/ocpho_rrtmg_c080918.nc',
'N:ocar2:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/ocphi_rrtmg_c080918.nc', 'N:sslt1:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/seasalt1_rrtmg_c080918.nc',
'N:sslt2:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/seasalt2_rrtmg_c080918.nc', 'N:sslt3:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/seasalt3_rrtmg_c080918.nc',
'N:sslt4:/glade/campaign/cesm/cesmdata/inputdata/atm/cam/physprops/seasalt4_rrtmg_c080918.nc'

! diagnostics for microp_aero BAM suite
hist_output_frequency;h1: 1*nsteps
hist_write_nstep0;h1: .true.
hist_precision;h1: REAL64
hist_max_frames;h1: 1

! scale_subgrid_vertical_velocity diagnostics
hist_add_inst_fields;h1: WSUB,WSUBI

! nucleate_ice diagnostics
hist_add_inst_fields;h1: NIHFTEN,NIIMMTEN,NIDEPTEN,NIMEYTEN
hist_add_inst_fields;h1: NIREGM,NISUBGRID,NITROP_PD
hist_add_inst_fields;h1: FHOM,WICE,WEFF
hist_add_inst_fields;h1: INnso4TEN,INnbcTEN,INndustTEN,INondustTEN,INhetTEN,INhomTEN
hist_add_inst_fields;h1: INFrehom,INFreIN

! ndrop_bam diagnostics: CCN at fixed supersaturation levels
hist_add_inst_fields;h1: CCN1,CCN2,CCN3,CCN4,CCN5,CCN6

! ndrop_bam diagnostics: aerosol number concentration (names from physprops files)
hist_add_inst_fields;h1: SULFATE_m3,DUST1_m3,DUST2_m3,DUST3_m3,DUST4_m3
hist_add_inst_fields;h1: BCPHO_m3,BCPHI_m3,OCPHO_m3,OCPHI_m3
hist_add_inst_fields;h1: SEASALT1_m3,SEASALT2_m3,SEASALT3_m3,SEASALT4_m3
Loading
Loading