Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
d80792b
Base (move iswbands/ilwbands to radiation_namelist); fix solar_parms_…
hplin-ucar Mar 13, 2026
8774c10
Add unmodified files from CAM (for diff)
hplin-ucar Mar 13, 2026
a6521f7
Initial push for BAM aerosols (chem none) with prescribed source and …
hplin-ucar Mar 13, 2026
47fd816
Port changes from Francis Vitt: CAM#1500 Fix issue with aerosol optic…
hplin-ucar Mar 16, 2026
4611932
Remove read_water_refindex and move to init phase of aerosol_optics C…
hplin-ucar Mar 18, 2026
89463ed
Aerosol pfUnit tests (coauthored with claude-opus-4.6 then reviewed);…
hplin-ucar Mar 24, 2026
d9793e3
Frontport changes from code review in CAM
hplin-ucar Mar 25, 2026
c1c8a17
fix palb, pasm comment - sync with CAM
hplin-ucar Mar 25, 2026
36b7bb4
Sync up to CAM
hplin-ucar Apr 8, 2026
7627736
Update unit tests to sync up with CAM.
hplin-ucar Apr 8, 2026
2278e8f
Add modal properties, state direct copy from CAM for adapting
hplin-ucar Apr 8, 2026
2bc8ae0
Implement modal aerosol properties and state concrete implementations…
hplin-ucar Apr 9, 2026
75cf1da
Fix Fortran unit tests: missing shr_kind_cl decl replacing cs1
hplin-ucar Apr 9, 2026
05a5758
Update to return physprop for concrete aerosol_properties%optics_para…
hplin-ucar Apr 9, 2026
a4c14bd
Extend pfUnit tests to MAM aerosol state/properties
hplin-ucar Apr 9, 2026
7003018
Add modal_test_helpers for constructing 2-mode MAM test
hplin-ucar Apr 9, 2026
510b50e
CCPP framework does not like shr_kind_cl
hplin-ucar Apr 9, 2026
0797661
Oops, should not have done replace all
hplin-ucar Apr 9, 2026
3683fd0
fix cs1 -> 256 to make ccpp-framework happy
hplin-ucar Apr 13, 2026
f75166a
bulk_aero_3: sync up to work-in-progress microp-enabled version in CA…
hplin-ucar Apr 20, 2026
e955a71
Fix build
hplin-ucar Apr 20, 2026
1e85930
Unit test fixes; build fixes; pbuf setup in registry.xml
hplin-ucar Apr 20, 2026
f986ecd
Fix extra ppgrid call; comment out rndst in registry
hplin-ucar Apr 20, 2026
0a4c969
Fix unit tests due to new ncol
hplin-ucar Apr 20, 2026
79ebf1d
Disable pbuf input fields with dust dimension as problematic
hplin-ucar Apr 20, 2026
d5aa462
Continue to fix unit tests
hplin-ucar Apr 20, 2026
d538b01
Make wv_stdname register consistent with initialize_constituents; mov…
hplin-ucar Apr 21, 2026
3803e9b
Registry fixes for microp_aero.
hplin-ucar Apr 21, 2026
ac8a284
Add dust dimensioned variables to snapshot check.
hplin-ucar Apr 23, 2026
4a45f8e
Make it a parameter
hplin-ucar Apr 24, 2026
7842dfb
Frontport changes in cam6_4_169 (CARMA with RRTMGP) from Francis Vitt
jimmielin May 13, 2026
f9a7fd1
Add outfrq_microp_aero_bam_derecho to test suite.
hplin-ucar May 18, 2026
2b752a7
Add diagnostics fields to testmod.
hplin-ucar May 18, 2026
af5f828
Disable aerosols in QPC cases.
hplin-ucar May 18, 2026
2be2c64
Add sane defaults for type declarations for safety
hplin-ucar May 18, 2026
772e240
Sync up to cam6_4_177.
hplin-ucar Jun 9, 2026
72eb6df
Abstract host binding for constituents in SIMA to avoid divergence.
hplin-ucar Jun 11, 2026
3729ad8
Fix pfUnit test in bulk aero construction.
hplin-ucar Jun 11, 2026
4280895
Fix pfUnit regression in aqu_gain_binfraction
hplin-ucar Jun 11, 2026
27af652
Further sync up to cam6_4_177 and work-in-progress microp_aero branch…
hplin-ucar Jun 11, 2026
0cee753
Update tke standard name.
jimmielin Jul 20, 2026
ca182e6
Draft registry and modal aerosol state updates for water_uptake.
hplin-ucar Jun 27, 2026
c9905bb
Implement spec_mw in modal aerosol properties.
jimmielin Jul 5, 2026
1e4d4f9
Sync up with CAM latest changes in MAM branch.
jimmielin Jul 21, 2026
28d3377
Registry generator: allocate 'allocatable, target' variables.
jimmielin Jul 20, 2026
3c06f5b
Fix pfUnit tests
jimmielin Jul 22, 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 @@ -229,6 +229,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