Skip to content
Open
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4eef80e
Add PUMAS atmospheric_physics branch to git submodules.
nusbaume Sep 23, 2025
1048fa9
Remove code that incorrectly (and needlessly) reset the log level.
nusbaume Sep 26, 2025
0943b88
Add PUMAS DDT metadata file to CAM-SIMA registry.
nusbaume Sep 26, 2025
62bc560
Update atmospheric_physics and PUMAS submodules to fix namelist varia…
nusbaume Sep 29, 2025
35a4b7b
Update atmospheric_physics to add ccpp_dimensions init phase, and fix…
nusbaume Sep 30, 2025
741f273
Update atmospheric_physics module with needed metadata changes needed…
nusbaume Oct 2, 2025
31ef05a
Update registry with required PUMAS variables
cacraigucar Oct 21, 2025
ada9d95
Updates to support accum_enhan
cacraigucar Dec 5, 2025
b6c8f6c
Fixed accre_enhan variable
cacraigucar Dec 10, 2025
aaa4459
Add snapshot variables for PUMAS
cacraigucar Dec 31, 2025
8fb613c
Merge tag 'sima0_09_000' into pumas_round3
cacraigucar Dec 31, 2025
848215c
fix standard name
cacraigucar Jan 12, 2026
84ffa8f
update atmos_phys external
cacraigucar Jan 12, 2026
306e077
Update atmos_phys external
cacraigucar Jan 12, 2026
3a8b3be
Add changes needed to include 'pumas_r8' in the CCPP cap.
nusbaume Jan 15, 2026
57232e3
Update ccpp-framework hash to include additional framework tests.
nusbaume Jan 16, 2026
2af61da
Add pbuf_ACCRE_ENHAN to registry.xml
cacraigucar Jan 26, 2026
b463d22
Revert "Add changes needed to include 'pumas_r8' in the CCPP cap."
cacraigucar Feb 10, 2026
3b85ad2
Merge remote-tracking branch 'upstream/development' into pumas_round3
cacraigucar Feb 10, 2026
01fbbaf
Update registry and remove old variable from generate_registry_data.xml
cacraigucar Feb 11, 2026
5dd4868
merge changes and pumas registry variables
cacraigucar Feb 13, 2026
1ee8436
Merge tag 'sima0_11_001' into pumas_round3
cacraigucar Feb 13, 2026
f958405
Update atmos_phys external and add diag_name to constituent instantia…
cacraigucar Feb 18, 2026
888393f
Updates to help PUMAS to run
cacraigucar Mar 13, 2026
963bd29
Fix merge bug and update atmos_phys external
cacraigucar Apr 27, 2026
f84a8da
Add numliq, etc to registry
cacraigucar May 13, 2026
44fed54
Update atmos_phys external
cacraigucar Jun 17, 2026
a18d032
changes required to get PUMAS to be BFB
cacraigucar Jun 18, 2026
2da5f3d
Merge tag 'sima0_15_000' into pumas_round3
cacraigucar Jun 24, 2026
d0a2ceb
update externals
cacraigucar Jun 24, 2026
bb01d83
update externals
cacraigucar Jun 24, 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
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
fxDONOTUSEurl = https://github.com/MPAS-Dev/MPAS-Model.git
[submodule "ncar-physics"]
path = src/physics/ncar_ccpp
url = https://github.com/ESCOMP/atmospheric_physics
fxtag = 827909005618d2e7806d0c910b8125f4ddaa0029
url = https://github.com/nusbaume/atmospheric_physics
fxtag = 22a3457
fxrequired = AlwaysRequired
fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics
[submodule "rrtmgp-data"]
Expand Down
10 changes: 0 additions & 10 deletions cime_config/create_readnl_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -995,16 +995,6 @@ def __init__(self, args, description, schema_paths=None, logger=None):
else:
self.__outdir = args.output_dir
# end if
if logger:
if args.debug:
loglevel = logging.DEBUG
elif args.quiet:
loglevel = logging.ERROR
else:
loglevel = logging.INFO
# end if
logger.setLevel(loglevel)
# end if
self.__scheme_read_file = None
self.__nlfile_arg = "nlfile"
self.__active_schemes_arg = "active_schemes"
Expand Down
246 changes: 244 additions & 2 deletions src/data/registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
<metadata_file>$SRCROOT/src/data/ref_pres.meta</metadata_file>
<metadata_file>$SRCROOT/src/dynamics/utils/vert_coord.meta</metadata_file>
<metadata_file>$SRCROOT/src/dynamics/utils/hycoef.meta</metadata_file>
<!-- PUMAS DDT metadata file -->
<metadata_file>$SRCROOT/src/physics/ncar_ccpp/schemes/pumas/pumas/micro_pumas_diags.meta</metadata_file>

<!-- Variables registered to physics_types -->
<file name="physics_types" type="module">
Expand All @@ -43,6 +45,15 @@
<use module="physconst" reference="rair"/>
<use module="physconst" reference="mwdry"/>
<use module="physconst" reference="zvir"/>

<!-- Dimensions -->
<variable local_name="dust_size_bins_dimension"
standard_name="dust_size_bins_dimension"
units="count" type="integer"
allocatable="parameter">
<initial_value>4</initial_value>
</variable>

<!-- State variables -->
<variable local_name="ps" standard_name="surface_air_pressure"
units="Pa" type="real" kind="kind_phys"
Expand Down Expand Up @@ -575,8 +586,21 @@
standard_name="specific_heat_of_air_used_in_dycore"
units="J kg-1 K-1" type="real" kind="kind_phys"
allocatable="allocatable">
<long_name>specific heat of air used in the dynamical core (enthalpy for pressure-based dynamical cores and internal energy for z-based dynamical cores)</long_name>
<long_name>specific heat of air used in the dynamical core (enthalpy for pressure-based dynamical cores and internal energy for z-based dynamical cores), updated mid-physics for post-mass-adjustment total energy diagnostics</long_name>
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<initial_value>0._kind_phys</initial_value>
</variable>
<variable local_name="cp_or_cv_dycore_at_start_of_physics_timestep"
standard_name="specific_heat_of_air_used_in_dycore_at_start_of_physics_timestep"
units="J kg-1 K-1" type="real" kind="kind_phys"
allocatable="allocatable">
<long_name>Specific heat of air used in the dynamical core (enthalpy for pressure-based dynamical cores and internal energy for z-based dynamical cores), at start of physics timestep, for energy-consistency scaling and energy checker</long_name>
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<!-- Note: this quantity is read from CAM snapshot from the dycore value
since the CAM fix in cam6_4_173 (CAM#1554) restores the mid-physics update
value (for total energy diagnostics) to the start of physics timestep
(d_p_coupling) value. It is used for running the energy checker for
individual physics scheme tests. -->
<ic_file_input_names>cp_or_cv_dycore</ic_file_input_names>
</variable>

Expand Down Expand Up @@ -623,6 +647,39 @@
<long_name>graupel mass mixing ratio with respect to moist air plus all airborne condensates</long_name>
<ic_file_input_names>GRAUQM cnst_GRAUQM</ic_file_input_names>
</variable>
<variable local_name="numliq"
standard_name="mass_number_concentration_of_cloud_liquid_wrt_moist_air_and_condensed_water"
units="kg kg-1" type="real" constituent="true">
<long_name>mass number concentration of cloud liquid water wrt moist air plus all airborne condensates</long_name>
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>NUMLIQ cnst_NUMLIQ</ic_file_input_names>
</variable>
<variable local_name="numice"
standard_name="mass_number_concentration_of_ice_wrt_moist_air_and_condensed_water"
units="kg kg-1" type="real" constituent="true">
<long_name>mass number concentration of Cloud ice mass mixing ratio with respect to moist air plus all airborne condensates</long_name>
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>NUMICE cnst_NUMICE</ic_file_input_names>
</variable>
<variable local_name="numrai"
standard_name="mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water"
units="kg kg-1" type="real" constituent="true">
<long_name>mass number concentration of rain mass mixing ratio with respect to moist air plus all airborne condensates</long_name>
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>NUMRAI cnst_NUMRAI</ic_file_input_names>
</variable>
<variable local_name="numsno"
standard_name="mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water"
units="kg kg-1" type="real" constituent="true">
<long_name>mass number concentration of snow mass mixing ratio with respect to moist air plus all airborne condensates</long_name>
<ic_file_input_names>NUMSNO cnst_NUMSNO</ic_file_input_names>
</variable>
<variable local_name="numgra"
standard_name="mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water"
units="kg kg-1" type="real" constituent="true">
<long_name>mass number concentration of graupel mass mixing ratio with respect to moist air plus all airborne condensates</long_name>
<ic_file_input_names>NUMGRA cnst_NUMGRA</ic_file_input_names>
</variable>
<variable local_name="H2O"
standard_name="H2O"
units="kg kg-1" type="real" constituent="true">
Expand Down Expand Up @@ -1464,6 +1521,13 @@
<initial_value>273.15_kind_phys</initial_value>
<ic_file_input_names>tpert pbuf_tpert</ic_file_input_names>
</variable>
<variable local_name="wsedl"
standard_name="sedimentation_velocity_of_liquid_stratus_cloud_droplet"
units="m s-1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>pbuf_WSEDL</ic_file_input_names>
</variable>

<!-- Temporary initializations for gravity wave parameterizations -->
<variable local_name="ttend_clubb"
Expand Down Expand Up @@ -1564,6 +1628,23 @@
</variable>

<!-- vertical diffusion solver variables - need to be kept in the CAM registry -->
<variable local_name="kvm"
standard_name="eddy_momentum_diffusivity_at_interfaces"
units="m2 s-1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_interface_dimension</dimensions>
<initial_value>0.0_kind_phys</initial_value>
<ic_file_input_names>pbuf_kvm</ic_file_input_names>
</variable>
<variable local_name="kvh"
standard_name="eddy_heat_diffusivity_at_interfaces"
units="m2 s-1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_interface_dimension</dimensions>
<initial_value>0.0_kind_phys</initial_value>
<ic_file_input_names>pbuf_kvh</ic_file_input_names>
</variable>

<variable local_name="tauresx"
standard_name="eastward_reserved_stress_at_surface_on_previous_timestep"
units="N m-2" type="real" kind="kind_phys"
Expand All @@ -1590,7 +1671,7 @@
</variable>
<!-- REMOVECAM: the final standard name for these quantities below are
{east,north}ward_turbulent_orographic_form_drag_stress_at_surface.
however, it is shared with tautmsx; in order to distinguish between these two in CAM snapshots,
however, it is shared with tautms{x,y}; in order to distinguish between these two in CAM snapshots,
an alternate standard name is currently used. When CAM snapshots are retired, only either
Beljaars or TMS (which are mutually exclusive) provide the {east,north}ward_orographic_form_drag_stress_at_surface. -->
<variable local_name="taubljx"
Expand All @@ -1609,6 +1690,36 @@
<initial_value>0.0_kind_phys</initial_value>
<ic_file_input_names>pbuf_taubljy</ic_file_input_names>
</variable>
<!-- REMOVECAM: the final standard name for these quantities below are
{east,north}ward_turbulent_orographic_form_drag_stress_at_surface.
however, it is shared with taublj{x,y}; in order to distinguish between these two in CAM snapshots,
an alternate standard name is currently used. When CAM snapshots are retired, only either
Beljaars or TMS (which are mutually exclusive) provide the {east,north}ward_orographic_form_drag_stress_at_surface. -->
<variable local_name="tautmsx"
standard_name="eastward_turbulent_mountain_surface_stress_tbd"
units="N m-2" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension</dimensions>
<initial_value>0.0_kind_phys</initial_value>
<ic_file_input_names>pbuf_tautmsx</ic_file_input_names>
</variable>
<variable local_name="tautmsy"
standard_name="northward_turbulent_mountain_surface_stress_tbd"
units="N m-2" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension</dimensions>
<initial_value>0.0_kind_phys</initial_value>
<ic_file_input_names>pbuf_tautmsy</ic_file_input_names>
</variable>
<variable local_name="ksrftms"
standard_name="turbulent_orographic_form_drag_coefficent_at_surface"
units="kg s-1 m-2" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension</dimensions>
<initial_value>0.0_kind_phys</initial_value>
<ic_file_input_names>pbuf_ksrftms</ic_file_input_names>
</variable>

<variable local_name="apply_non_wv_cflx_in_free_atm_vdiff"
standard_name="do_apply_ccpp_constituent_fluxes_excluding_water_vapor_in_vertical_diffusion"
units="flag" type="logical">
Expand Down Expand Up @@ -1707,6 +1818,20 @@
<ic_file_input_names>dust4 pbuf_dust4 cnst_dust4</ic_file_input_names>
</variable>

<!-- Prescribed volcanic aerosol (CAM4, CAM5) -->
<variable local_name="VOLC_MMR"
standard_name="VOLC_MMR"
units="kg kg-1" type="real" constituent="true">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>VOLC_MMR pbuf_VOLC_MMR</ic_file_input_names>
</variable>
<variable local_name="VOLC_RAD_GEOM"
standard_name="VOLC_RAD_GEOM"
units="m" type="real" constituent="true">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>VOLC_RAD_GEOM pbuf_VOLC_RAD_GEOM</ic_file_input_names>
</variable>

<!-- Zhang McFarlane (ZM) Variables -->
<variable local_name="ql"
standard_name="in_cloud_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_due_to_deep_convection"
Expand Down Expand Up @@ -1922,6 +2047,123 @@
<initial_value>.false.</initial_value>
</variable>

<!-- From cldfrc2m.F90-->
<variable local_name="rhmini"
standard_name="relative_humidity_threshold_for_ice_nucleation"
units="fraction" type="real" kind="kind_phys">
<initial_value>0.8_kind_phys</initial_value>
</variable>

Comment on lines +2050 to +2056

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This block can be removed after nusbaume/PUMAS#1 is merged since cldfrc2m is now CCPP'ized

<!-- From phys_control-->
<variable local_name="relvar_in"
standard_name="relative_variance_of_subgrid_cloud_condensate_distribution"
units="1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>RELVAR pbuf_RELVAR</ic_file_input_names>
</variable>
<variable local_name="strat_liq_cldfrc_in"
standard_name="stratiform_cloud_liquid_area_fraction"
units="fraction" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>ALST pbuf_ALST</ic_file_input_names>
</variable>
<variable local_name="strat_ice_cldfrc_in"
standard_name="stratiform_cloud_ice_area_fraction"
units="fraction" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>AIST pbuf_AIST</ic_file_input_names>
</variable>
<variable local_name="qsatfac_in"
standard_name="subgrid_cloud_water_saturation_scaling_factor_for_microphysics"
units="1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>QSATFAC pbuf_QSATFAC</ic_file_input_names>
</variable>
<variable local_name="naai_in"
standard_name="tendency_of_activated_ice_nuclei_mass_number_concentration"
units="kg-1 s-1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>NAAI pbuf_NAAI</ic_file_input_names>
</variable>
<variable local_name="npccn_in"
standard_name="tendency_of_activated_cloud_condensation_nuclei_mass_number_concentration"
units="kg-1 s-1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>NPCCN pbuf_NPCCN</ic_file_input_names>
</variable>
<variable local_name="rndst_in"
standard_name="dust_radii_by_size_bin"
units="m" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension dust_size_bins_dimension</dimensions>
<ic_file_input_names>RNDST pbuf_RNDST</ic_file_input_names>
</variable>
<variable local_name="nacon_in"
standard_name="dust_number_concentration_by_size_bin_for_contact_freezing"
units="m-3" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension dust_size_bins_dimension</dimensions>
<ic_file_input_names>NACON pbuf_NACON</ic_file_input_names>
</variable>
<variable local_name="effi_external_in"
standard_name="effective_radius_of_stratiform_cloud_ice_particle"
units="micron" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>REI pbuf_REI</ic_file_input_names>
</variable> <variable local_name="frzimm_in"
standard_name="tendency_of_cloud_liquid_droplet_number_concentration_due_to_immersion_freezing"
units="cm-3" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<initial_value>0</initial_value>
<ic_file_input_names>FRZIMM pbuf_FRZIMM</ic_file_input_names>
</variable>
<variable local_name="frzcnt_in"
standard_name="tendency_of_cloud_liquid_droplet_number_concentration_due_to_contact_freezing"
units="cm-3" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<initial_value>0</initial_value>
<ic_file_input_names>FRZCNT pbuf_FRZCNT</ic_file_input_names>
</variable>
<variable local_name="frzdep_in"
standard_name="tendency_of_cloud_ice_number_concentration_due_to_deposition_nucleation"
units="cm-3" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<initial_value>0</initial_value>
<ic_file_input_names>FRZDEP pbuf_FRZDEP</ic_file_input_names>
</variable><variable local_name="micro_accre_enhan_in"
standard_name="accretion_enhancement_factor"
units="1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>accre_enhan pbuf_accre_enhan pbuf_ACCRE_ENHAN</ic_file_input_names>

<!-- CACNOTE: Not sure these snapshot cnst_XXX variables are the same ones - check more carefully -->
</variable>
<variable local_name="snowice_tend_external_in"
standard_name="tendency_of_snow_mixing_ratio_wrt_moist_air_and_condensed_water_from_external"
units="kg kg-1 s-1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>cnst_SNOWQM tnd_qsnow pbuf_tnd_qsnow</ic_file_input_names>
</variable>
<variable local_name="numsnow_tend_external_in"
standard_name="tendency_of_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water_from_external"
units="kg-1 s-1" type="real" kind="kind_phys"
allocatable="allocatable">
<dimensions>horizontal_dimension vertical_layer_dimension</dimensions>
<ic_file_input_names>cnst_NUMSNO tnd_nsnow pbuf_tnd_nsnow</ic_file_input_names>
</variable>

<!-- CAM with MPAS-like "convection-permitting" physics suite (EXPERIMENTAL) -->
<!-- Variables for "bl_gwdo" physics scheme -->
<!-- TODO: `var` may be related or even equivalent to `sgh`. Should come back to investigate when
Expand Down