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_26_000
fxtag = atmos_phys0_27_000
fxrequired = AlwaysRequired
fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics

Expand Down
4 changes: 2 additions & 2 deletions bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -5362,7 +5362,7 @@ sub check_snapshot_settings {
# cam7 physpkg
push(@validList_ac, ("'chem_emissions'",
"'clubb_tend_cam'",
"'microp_section'"));
"'pumas_tend'"));
if ($use_subcol_microp =~ /$TRUE/io) {
push (@validList_bc, ("'microp_driver_tend_subcol'"));
}
Expand Down Expand Up @@ -5403,7 +5403,7 @@ sub check_snapshot_settings {
} else {
push (@validList_bc, ("'macrop_driver_tend'"));
}
push (@validList_bc, ("'microp_section'"));
push (@validList_bc, ("'pumas_tend'"));
if ($use_subcol_microp =~ /$TRUE/io) {
push (@validList_bc, ("'microp_driver_tend_subcol'"));
}
Expand Down
52 changes: 26 additions & 26 deletions bld/namelist_files/namelist_definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@
SpectralNring set the number of rings of equal-area points
in this sampling domain.
Each ring (kk) contains 8*(kk-1) sample points.

Nudge_SpectralNring Number of Sampling Points
------------------- -------------------------
1 1 (DEFAULT SampleGrid NOT used)
Expand Down Expand Up @@ -2554,11 +2554,11 @@ Number of RTTOV instruments to simulate.
This default logical is set in cospsimulator_intr.F90
Default: 0
</entry>

<entry id="cosp_rttov_instrument_namelists" type="char*256(50)" category="cosp"
group="cospsimulator_nl" valid_values="" >
List of RTTOV instrument namelist files to read when running RTTOV in COSP.
File paths are read relative to the case run directory
File paths are read relative to the case run directory
(e.g. /glade/derecho/scratch/$USER/$CASENAME/run/) if an absolute path is not provided (recommended). Each namelist file
contains information specifying the simulated instrument, channels, and
outputs. Templates and instructions can be found in src/physics/cosp2/COSP-RTTOV_examples/.
Expand Down Expand Up @@ -2604,56 +2604,56 @@ Default: none

<entry id="cosp_SWATH_LOCALTIMES_ISCCP" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath localtimes (hours) for masking COSP ISCCP data. The sampling
"local time" refers to a linear shift from UTC as a function of a
Swath localtimes (hours) for masking COSP ISCCP data. The sampling
"local time" refers to a linear shift from UTC as a function of a
gridcell’s longitude (t_local = t_UTC − longitude * 24/360).
Default: none
</entry>

<entry id="cosp_SWATH_LOCALTIMES_MISR" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath localtimes (hours) for masking COSP MISR data. The sampling
"local time" refers to a linear shift from UTC as a function of a
Swath localtimes (hours) for masking COSP MISR data. The sampling
"local time" refers to a linear shift from UTC as a function of a
gridcell’s longitude (t_local = t_UTC − longitude * 24/360).
Default: none
</entry>

<entry id="cosp_SWATH_LOCALTIMES_MODIS" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath localtimes (hours) for masking COSP MODIS data. The sampling
"local time" refers to a linear shift from UTC as a function of a
Swath localtimes (hours) for masking COSP MODIS data. The sampling
"local time" refers to a linear shift from UTC as a function of a
gridcell’s longitude (t_local = t_UTC − longitude * 24/360).
Default: none
</entry>

<entry id="cosp_SWATH_LOCALTIMES_CSCAL" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath localtimes (hours) for masking COSP CloudSat-CALIPSO data. The
sampling "local time" refers to a linear shift from UTC as a function of a
Swath localtimes (hours) for masking COSP CloudSat-CALIPSO data. The
sampling "local time" refers to a linear shift from UTC as a function of a
gridcell’s longitude (t_local = t_UTC − longitude * 24/360).
Default: none
</entry>

<entry id="cosp_SWATH_LOCALTIMES_PARASOL" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath localtimes (hours) for masking COSP PARASOL data. The sampling
"local time" refers to a linear shift from UTC as a function of a
Swath localtimes (hours) for masking COSP PARASOL data. The sampling
"local time" refers to a linear shift from UTC as a function of a
gridcell’s longitude (t_local = t_UTC − longitude * 24/360).
Default: none
</entry>

<entry id="cosp_SWATH_LOCALTIMES_ATLID" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath localtimes (hours) for masking COSP ATLID data. The sampling
"local time" refers to a linear shift from UTC as a function of a
Swath localtimes (hours) for masking COSP ATLID data. The sampling
"local time" refers to a linear shift from UTC as a function of a
gridcell’s longitude (t_local = t_UTC − longitude * 24/360).
Default: none
</entry>

<entry id="cosp_SWATH_WIDTHS_ISCCP" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath widths (kilometers) for masking COSP ISCCP data. The "swath width"
determines the spatial region around each local time that is simulated.
determines the spatial region around each local time that is simulated.
Supplying a swath width in units of distance rather than radians produces
a larger sampling density at higher latitudes that is consistent with
observations.
Expand All @@ -2663,7 +2663,7 @@ Default: none
<entry id="cosp_SWATH_WIDTHS_MISR" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath widths (kilometers) for masking COSP MISR data. The "swath width"
determines the spatial region around each local time that is simulated.
determines the spatial region around each local time that is simulated.
Supplying a swath width in units of distance rather than radians produces
a larger sampling density at higher latitudes that is consistent with
observations.
Expand All @@ -2673,7 +2673,7 @@ Default: none
<entry id="cosp_SWATH_WIDTHS_MODIS" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath widths (kilometers) for masking COSP MODIS data. The "swath width"
determines the spatial region around each local time that is simulated.
determines the spatial region around each local time that is simulated.
Supplying a swath width in units of distance rather than radians produces
a larger sampling density at higher latitudes that is consistent with
observations.
Expand All @@ -2683,7 +2683,7 @@ Default: none
<entry id="cosp_SWATH_WIDTHS_CSCAL" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath widths (kilometers) for masking COSP CSCAL data. The "swath width"
determines the spatial region around each local time that is simulated.
determines the spatial region around each local time that is simulated.
Supplying a swath width in units of distance rather than radians produces
a larger sampling density at higher latitudes that is consistent with
observations.
Expand All @@ -2693,7 +2693,7 @@ Default: none
<entry id="cosp_SWATH_WIDTHS_PARASOL" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath widths (kilometers) for masking COSP PARASOL data. The "swath width"
determines the spatial region around each local time that is simulated.
determines the spatial region around each local time that is simulated.
Supplying a swath width in units of distance rather than radians produces
a larger sampling density at higher latitudes that is consistent with
observations.
Expand All @@ -2703,7 +2703,7 @@ Default: none
<entry id="cosp_SWATH_WIDTHS_ATLID" type="real*10" category="cosp"
group="cospsimulator_nl" valid_values="" >
Swath widths (kilometers) for masking COSP ATLID data. The "swath width"
determines the spatial region around each local time that is simulated.
determines the spatial region around each local time that is simulated.
Supplying a swath width in units of distance rather than radians produces
a larger sampling density at higher latitudes that is consistent with
observations.
Expand Down Expand Up @@ -3940,7 +3940,7 @@ the dynamics core. Very experimental.
<entry id="clubb_l_ascending_grid" type="logical" category="pblrad"
group="clubbpbl_diff_nl" valid_values="" >
Causes advance_clubb_core to run in ascending mode, where the surface is at k=1, which is opposite
of the descending cam grid. This is mainly a testing/debugging option - it requires an expensive
of the descending cam grid. This is mainly a testing/debugging option - it requires an expensive
data flipping step and should not change answers significantly.
</entry>

Expand Down Expand Up @@ -4220,7 +4220,7 @@ Valid values: 0 (no grid adaptation), 1 (use Lscale and wp2)

<entry id="clubb_fill_holes_type" type="integer" category="pblrad"
group="clubb_params_nl" valid_values="0,1,2,3,4,5,6" >
Selects which algorithm the fill_holes routine uses to correct
Selects which algorithm the fill_holes routine uses to correct
below threshold values in field solutions.
0: off - Skip the mass conservative hole filling step, rely on blunt clipping
1: global - Fast but minimally local, most methods use this as a fallback step
Expand Down Expand Up @@ -4452,7 +4452,7 @@ calculated by down-gradient diffusion.

<entry id="clubb_l_ho_nontrad_coriolis" type="logical" category="pblrad"
group="clubb_params_nl" valid_values="" >
Flag to implement the nontraditional Coriolis terms in the
Flag to implement the nontraditional Coriolis terms in the
prognostic equations of w'w', u'w', and u'u.
</entry>

Expand Down Expand Up @@ -5976,15 +5976,15 @@ Default:
</entry>

<entry id="cam_take_snapshot_before" type="char*32" category="diagnostics"
group="phys_ctl_nl" valid_values="chem_emissions,aoa_tracers_timestep_tend,co2_cycle_set_ptend,chem_timestep_tend,orographic_form_drag_stress,vertical_diffusion_section,aero_model_drydep,gw_tend,qbo_relax,iondrag_calc_section,physics_dme_adjust,physics_dme_adjust,dadadj_tend,convect_deep_tend,convect_shallow_tend,convect_diagnostics_calc,macrop_driver_tend,clubb_tend_cam,microp_section,microp_driver_tend_subcol,aero_model_wetdep,radiation_tend,held_suarez_tend,kessler_tend,thatcher_jablonowski_precip_tend,rk_stratiform_tend,rayleigh_friction_tend,user_set" >
group="phys_ctl_nl" valid_values="pumas_tend,chem_emissions,aoa_tracers_timestep_tend,co2_cycle_set_ptend,chem_timestep_tend,orographic_form_drag_stress,vertical_diffusion_section,aero_model_drydep,gw_tend,qbo_relax,iondrag_calc_section,physics_dme_adjust,physics_dme_adjust,dadadj_tend,convect_deep_tend,convect_shallow_tend,convect_diagnostics_calc,macrop_driver_tend,clubb_tend_cam,,microp_driver_tend_subcol,aero_model_wetdep,radiation_tend,held_suarez_tend,kessler_tend,thatcher_jablonowski_precip_tend,rk_stratiform_tend,rayleigh_friction_tend,user_set" >
Name of parameterization to take snapshot before running
user_set is used when a user inserts a call to cam_snapshot_all_outfld
using cam_snapshot_before_num as the first argument.
Default: Unused
</entry>

<entry id="cam_take_snapshot_after" type="char*32" category="diagnostics"
group="phys_ctl_nl" valid_values="chem_emissions,aoa_tracers_timestep_tend,co2_cycle_set_ptend,chem_timestep_tend,orographic_form_drag_stress,vertical_diffusion_section,aero_model_drydep,gw_tend,qbo_relax,iondrag_calc_section,physics_dme_adjust,physics_dme_adjust,dadadj_tend,convect_deep_tend,convect_shallow_tend,convect_diagnostics_calc,macrop_driver_tend,clubb_tend_cam,microp_section,microp_driver_tend_subcol,aero_model_wetdep,radiation_tend,held_suarez_tend,kessler_tend,thatcher_jablonowski_precip_tend,rk_stratiform_tend,rayleigh_friction_tend,user_set" >
group="phys_ctl_nl" valid_values="pumas_tend,chem_emissions,aoa_tracers_timestep_tend,co2_cycle_set_ptend,chem_timestep_tend,orographic_form_drag_stress,vertical_diffusion_section,aero_model_drydep,gw_tend,qbo_relax,iondrag_calc_section,physics_dme_adjust,physics_dme_adjust,dadadj_tend,convect_deep_tend,convect_shallow_tend,convect_diagnostics_calc,macrop_driver_tend,clubb_tend_cam,,microp_driver_tend_subcol,aero_model_wetdep,radiation_tend,held_suarez_tend,kessler_tend,thatcher_jablonowski_precip_tend,rk_stratiform_tend,rayleigh_friction_tend,user_set" >
Name of parameterization to take snapshot after running
user_set is used when a user inserts a call to cam_snapshot_all_outfld
using cam_snapshot_after_num as the first argument.
Expand Down
58 changes: 58 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,61 @@

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

Tag name: cam6_4_196
Originator(s): cacraigucar
Date: August 17, 2026
One-line Summary: Modifications for bringing in PUMAS round3 ccpp'ization
Github PR URL: https://github.com/ESCOMP/CAM/pull/1600

Purpose of changes (include the issue number and title text for each relevant GitHub issue):
- bring in PUMAS round3 (no issue)

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, jimmielin

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 .gitmodules
M src/atmos_phys
- update atmos_phys tag to bring in PUMAS round3

M bld/build-namelist
M bld/namelist_files/namelist_definition.xml
M src/physics/cam/physpkg.F90
M src/physics/cam7/physpkg.F90
- add pumas_tend snapshot flag and remove microp_section

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: all BFB

derecho/nvhpc/aux_cam: still broken, but tested this tag with upcoming CMEPS external (cmeps1.1.58) and it ran to completion
This one-off test has its baselines saved so that the next tag which comes in
using the updated CMEPS has an appropriate baseline comparison.
FAIL ERS_Ln9.ne30pg3_ne30pg3_mt232.FHISTC_LTso.derecho_nvhpc.cam-outfrq9s_gpu_default MODEL_BUILD time=0
- pre-existing failure as of cam6_4_193


izumi/nag/aux_cam:
FAIL ERC_D_Ln9.f10_f10_mt232.FHIST_C5.izumi_nag.cam-outfrq3s_subcol COMPARE_base_rest
- pre-existing failure -- see https://github.com/ESCOMP/CAM/issues/1514

izumi/gnu/aux_cam: all BFB

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

Tag name: cam6_4_195
Expand Down
2 changes: 1 addition & 1 deletion src/atmos_phys
Submodule atmos_phys updated 54 files
+1 −1 .gitmodules
+849 −631 doc/NamesNotInDictionary.txt
+12 −11 schemes/chemistry/prescribed_aerosols.F90
+0 −6 schemes/chemistry/prescribed_aerosols.meta
+4 −11 schemes/chemistry/prescribed_ozone.F90
+0 −6 schemes/chemistry/prescribed_ozone.meta
+56 −0 schemes/microp_aero/ccpp/hetfrz_classnuc_stub.F90
+37 −0 schemes/microp_aero/ccpp/hetfrz_classnuc_stub.meta
+102 −0 schemes/microp_aero/ccpp/hetfrz_classnuc_stub_namelist.xml
+2 −2 schemes/mmm/bl_gwdo_compat.meta
+17 −17 schemes/mmm/bl_mynn_compat.meta
+8 −8 schemes/mmm/cu_ntiedtke_compat.meta
+264 −3 schemes/mmm/mmm_physics_compat.F90
+662 −13 schemes/mmm/mmm_physics_compat.meta
+484 −0 schemes/pumas/micro_pumas_ccpp_dimensions_post.F90
+1,171 −0 schemes/pumas/micro_pumas_ccpp_dimensions_post.meta
+235 −0 schemes/pumas/micro_pumas_ccpp_dimensions_pre.F90
+625 −0 schemes/pumas/micro_pumas_ccpp_dimensions_pre.meta
+60 −0 schemes/pumas/micro_pumas_ccpp_optics_limiter.F90
+77 −0 schemes/pumas/micro_pumas_ccpp_optics_limiter.meta
+1 −1 schemes/pumas/pumas
+157 −0 schemes/pumas/pumas_post_main.F90
+198 −0 schemes/pumas/pumas_post_main.meta
+45 −0 schemes/pumas/pumas_pre_main.F90
+47 −0 schemes/pumas/pumas_pre_main.meta
+602 −0 schemes/pumas/pumas_pre_main_namelist.xml
+2 −2 schemes/rasch_kristjansson/rk_stratiform.F90
+2 −2 schemes/rasch_kristjansson/rk_stratiform.meta
+12 −6 schemes/rrtmgp/rrtmgp_lw_calculate_fluxes.F90
+12 −6 schemes/rrtmgp/rrtmgp_lw_calculate_fluxes.meta
+2 −2 schemes/rrtmgp/rrtmgp_lw_cloud_optics.meta
+2 −2 schemes/rrtmgp/rrtmgp_post.meta
+15 −9 schemes/rrtmgp/rrtmgp_sw_calculate_fluxes.F90
+14 −8 schemes/rrtmgp/rrtmgp_sw_calculate_fluxes.meta
+2 −2 schemes/rrtmgp/rrtmgp_sw_cloud_optics.meta
+398 −0 schemes/sima_diagnostics/pumas_diagnostics.F90
+2,150 −0 schemes/sima_diagnostics/pumas_diagnostics.F90-keep_for_run
+142 −0 schemes/sima_diagnostics/pumas_diagnostics_calling.F90
+4 −4 schemes/sima_diagnostics/rk_stratiform_diagnostics.F90
+2 −2 schemes/sima_diagnostics/rk_stratiform_diagnostics.meta
+2 −2 schemes/sima_diagnostics/sima_state_diagnostics.F90
+117 −0 schemes/utilities/clamp_number_concentrations.F90
+59 −0 schemes/utilities/clamp_number_concentrations.meta
+39 −5 schemes/utilities/set_surface_coupling_vars.F90
+18 −0 schemes/utilities/set_surface_coupling_vars.meta
+94 −0 schemes/utilities/set_surface_coupling_vars_namelist.xml
+25 −2 suites/suite_cam5.xml
+29 −0 suites/suite_cam7.xml
+23 −0 test/test_schemes/clubb_stub.F90
+27 −0 test/test_schemes/clubb_stub.meta
+13 −13 test/test_schemes/initialize_constituents.F90
+60 −3 test/test_suites/suite_convection_permitting.xml
+33 −0 test/test_suites/suite_pumas.xml
+633 −6 test/unit-test/tests/mmm/mmm_physics_compat_tests.pf
13 changes: 6 additions & 7 deletions src/physics/cam/physpkg.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2786,17 +2786,16 @@ subroutine tphysbc (ztodt, state, &
call check_energy_timestep_init(state_sc, tend_sc, pbuf, col_type_subcol)
end if

if (trim(cam_take_snapshot_before) == "microp_section") then
call cam_snapshot_all_outfld_tphysbc(cam_snapshot_before_num, state, tend, cam_in, cam_out, pbuf, &
flx_heat, cmfmc, cmfcme, zdu, rliq, dlf, dlf2, rliq2, det_s, det_ice, net_flx)
end if

call carma_diags_obj%update(cam_in, state, pbuf)

call t_startf('microp_aero_run')
call microp_aero_run(state, ptend_aero, cld_macmic_ztodt, pbuf)
call t_stopf('microp_aero_run')

if (trim(cam_take_snapshot_before) == "pumas_tend") then
call cam_snapshot_all_outfld_tphysbc(cam_snapshot_before_num, state, tend, cam_in, cam_out, pbuf, &
flx_heat, cmfmc, cmfcme, zdu, rliq, dlf, dlf2, rliq2, det_s, det_ice, net_flx)
end if
call t_startf('microp_tend')

if (use_subcol_microp) then
Expand Down Expand Up @@ -2884,13 +2883,13 @@ subroutine tphysbc (ztodt, state, &

call diag_clip_tend_writeout(state, ptend, ncol, lchnk, ixcldliq, ixcldice, ixq, ztodt, rtdt)

if ( (trim(cam_take_snapshot_after) == "microp_section") .and. &
if ( (trim(cam_take_snapshot_after) == "pumas_tend") .and. &
(trim(cam_take_snapshot_before) == trim(cam_take_snapshot_after))) then
call cam_snapshot_ptend_outfld(ptend, lchnk)
end if
call physics_update (state, ptend, ztodt, tend)

if (trim(cam_take_snapshot_after) == "microp_section") then
if (trim(cam_take_snapshot_after) == "pumas_tend") then
call cam_snapshot_all_outfld_tphysbc(cam_snapshot_after_num, state, tend, cam_in, cam_out, pbuf, &
flx_heat, cmfmc, cmfcme, zdu, rliq, dlf, dlf2, rliq2, det_s, det_ice, net_flx)
end if
Expand Down
7 changes: 5 additions & 2 deletions src/physics/cam7/micro_pumas_cam.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1925,6 +1925,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
integer :: nlev
integer :: num_dust_bins

character(len=64) :: scheme_name
character(512) :: ccpp_errmsg ! CCPP return status (non-blank for error return)
character(128) :: pumas_errstring ! PUMAS return status (non-blank for error return)

Expand Down Expand Up @@ -2474,7 +2475,9 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
tnd_qsnow(:ncol,top_lev:), tnd_nsnow(:ncol,top_lev:), &
re_ice(:ncol,top_lev:), &
frzimm(:ncol,top_lev:), frzcnt(:ncol,top_lev:), &
frzdep(:ncol,top_lev:), rate1cld(:ncol,top_lev:), &
frzdep(:ncol,top_lev:), &
micro_mg_warm_rain, &
rate1cld(:ncol,top_lev:), &
tlat(:ncol,top_lev:), qvlat(:ncol,top_lev:), &
qcten(:ncol,top_lev:), qiten(:ncol,top_lev:), &
ncten(:ncol,top_lev:), niten(:ncol,top_lev:), &
Expand Down Expand Up @@ -2512,7 +2515,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
freqs(:ncol,top_lev:), freqr(:ncol,top_lev:), &
nfice(:ncol,top_lev:), qcrat(:ncol,top_lev:), &
prer_evap(:ncol,top_lev:), proc_rates, &
ccpp_errmsg, ierr )
scheme_name, ccpp_errmsg, ierr )

call handle_errmsg(ccpp_errmsg, subname="micro_pumas_cam_tend")

Expand Down
Loading
Loading