Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
a9328ae
Add PUMAS directory with stub interstitial file.
nusbaume Jan 9, 2025
e7205c3
Add wv_sat_methods.F90, which is needed by PUMAS.
nusbaume Jan 9, 2025
8b56c47
Add PUMAS submodule.
nusbaume Jan 22, 2025
301f43e
Add init phase and metadata file to 'pre_main' scheme.
nusbaume Jan 30, 2025
ece068b
Add pumas_pre_main_namelist.xml based on micro_pumas_ccpp.meta
billsacks Jan 30, 2025
659327a
add pre and post dimension mapping schemes
peverwhee Jan 30, 2025
b188b67
add constituent metadata; fix stdname
peverwhee Jan 30, 2025
6b3cc4b
Moved from MP/PUMAS to pumas directory
cacraigucar Jul 14, 2025
50be090
reorder pumas directory
cacraigucar Jul 14, 2025
3ec547c
Add hackathon work from Kate and Cheryl
cacraigucar Jul 16, 2025
ffbac28
Add pumas test_suite
cacraigucar Jul 17, 2025
07b71dc
remove unused directory
cacraigucar Jul 17, 2025
335b649
Update NamesNotInDictionary.txt
cacraigucar Aug 14, 2025
fcc8453
Remove unused 'src/physics/pumas' directory.
nusbaume Sep 23, 2025
88c2e98
Fix unit metadata bugs in PUMAS and PUMAS namelist definition file.
nusbaume Sep 29, 2025
80ae20a
Update logical variable standard names, and create new 'ccpp_dimensio…
nusbaume Sep 30, 2025
1bc8363
fixes to get further in a CAM-SIMA build
cacraigucar Oct 21, 2025
90fed13
Updates to support accum_enhan
cacraigucar Dec 5, 2025
171fa8e
Next round of changes which compiled in CAM
cacraigucar Dec 10, 2025
7443df3
Remove extra copy - do subsetting and pumas_r8 conversion in same step
cacraigucar Dec 31, 2025
01d55b0
Fixes for CAM-SIMA prebuild processing
cacraigucar Dec 31, 2025
8b359bf
Merge tag 'atmos_phys0_20_000' into pumas_round3
cacraigucar Dec 31, 2025
485736b
Fix compiler errors
cacraigucar Jan 12, 2026
2b8b259
update pumas external
cacraigucar Jan 12, 2026
55fb203
update pumas external
cacraigucar Jan 12, 2026
ff987b8
Verified pumas_diagnostics routines are not currently used - Added co…
cacraigucar Jan 16, 2026
9050827
Mods for diagnostics init (and placeholder file which contains the pa…
cacraigucar Feb 5, 2026
263076d
Merge tag 'atmos_phys0_21_000' into pumas_round3
cacraigucar Feb 12, 2026
36a7324
Merge commit '87e76a' into pumas_round3
cacraigucar Mar 13, 2026
cc036fb
namelist and mods to get PUMAS suite to run
cacraigucar Mar 13, 2026
544d46a
Update PUMAS external
cacraigucar Mar 13, 2026
2fd07c6
Fix incorrect dimensions
cacraigucar Apr 23, 2026
fb7bc8b
Fix some dimensions
cacraigucar Apr 24, 2026
22510f2
Merge tag 'atmos_phys0_21_002' into pumas_round3
cacraigucar Apr 24, 2026
267712a
change namelist value
cacraigucar May 5, 2026
a76fdd3
Merge commit 'ced50be1' into pumas_round3
cacraigucar May 5, 2026
55eeade
Remove duplicate micro_pumas_ccpp files and update namelist settings
cacraigucar May 8, 2026
489806a
update hash for atmos_phys
cacraigucar May 13, 2026
090416b
Update namelist settings to CAM7 and fix inconsitent standard names
cacraigucar Jun 17, 2026
183661c
Fixes for PUMAS bfb with QPC7 CAM snapshot
hplin-ucar Jun 17, 2026
2b7ecfa
Merge pull request #1 from jimmielin/pumas_round3
cacraigucar Jun 18, 2026
94c5548
Merge remote-tracking branch 'upstream/main' into pumas_round3
cacraigucar Jun 18, 2026
22a3457
Update standard names
cacraigucar Jun 18, 2026
4b9ea65
Match standard names with RRTMGP names in atmos_phys
jimmielin Jul 14, 2026
31d342b
Match naai and dust size bin dimension standard names with microp_aer…
jimmielin Jul 16, 2026
3aa3f24
Update microp_aero standard names
jimmielin Jul 16, 2026
6e18593
Update Standard names
cacraigucar Jul 16, 2026
2a31c57
Merge remote-tracking branch 'haipeng/pumas_round3' into pumas_round3
cacraigucar Jul 16, 2026
835c233
Merge remote-tracking branch 'upstream/main' into pumas_round3
cacraigucar Jul 16, 2026
2226c40
Add cloud schemes to PUMAS SDF
cacraigucar Jul 16, 2026
26beeb8
Update .gitmodules
cacraigucar Jul 16, 2026
4656a6b
Put back files from Haipeng
cacraigucar Jul 16, 2026
787c32c
Port low stratiform cloud fraction optics limiter from CAM micro_puma…
jimmielin Jul 16, 2026
9020f31
Recompute pgam, lamc, degrau, dei for radiation from updated state in…
jimmielin Jul 16, 2026
e5494a7
Update PUMAS external to 59cebff (jesse/ccpp_fixes tip, matches fxtag)
jimmielin Jul 16, 2026
70cc4db
Recompute des (snow effective diameter) for radiation in pumas_post_main
jimmielin Jul 16, 2026
9b6e450
More robust fixes for the clamp and initialize; dimensions_pre unit fix
jimmielin Jul 17, 2026
8aa7e54
Dimension and various bfb fixes
jimmielin Jul 17, 2026
2ea30ba
Add back qneg to suite
jimmielin Jul 17, 2026
e56dc31
Change to avoid capgen bug.
jimmielin Jul 17, 2026
e2f5ec2
Merge pull request #3 from jimmielin/pumas_round3
cacraigucar Jul 20, 2026
25faf11
Update to official PUMAS tag
cacraigucar Jul 21, 2026
2797786
Merge tag 'atmos_phys0_26_000' into pumas_round3
cacraigucar Jul 21, 2026
4bc5b7f
Address AI review comments
cacraigucar Jul 22, 2026
b8fec30
Add pumas external
cacraigucar 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
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
path = schemes/pumas/pumas
url = https://github.com/ESCOMP/PUMAS
fxrequired = AlwaysRequired
fxtag = pumas_cam-release_v1.39
fxtag = pumas_cam-release_v1.40
fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS
[submodule "rte-rrtmgp"]
path = schemes/rrtmgp/ext
Expand Down
1,480 changes: 849 additions & 631 deletions doc/NamesNotInDictionary.txt

Large diffs are not rendered by default.

56 changes: 56 additions & 0 deletions schemes/microp_aero/ccpp/hetfrz_classnuc_stub.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
! Stub for heterogeneous freezing by classical nucleation theory (hetfrz_classnuc).

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.

Just a reminder to add all of the hetfrz_classnuc_stub.* code to the PR description!

!
! This scheme exists to read the use_hetfrz_classnuc namelist flag and expose it
! via its CCPP standard name so downstream schemes (e.g. nucleate_ice_ccpp,
! eventually PUMAS) can see the flag. It performs no heterogeneous-freezing

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.

I might replace eventually PUMAS with just PUMAS, as I believe it will be wired up correctly once this PR is merged?

Suggested change
! eventually PUMAS) can see the flag. It performs no heterogeneous-freezing
! PUMAS) can see the flag. It performs no heterogeneous-freezing

! computation -- the real hetfrz_classnuc_ccpp is not yet ported to CAM-SIMA.
!
! Safe to use with use_hetfrz_classnuc=.true. for snapshot-testing flows where
! the flag must propagate downstream; a warning is printed at init time.
module hetfrz_classnuc_stub
use ccpp_kinds, only: kind_phys

implicit none
private

public :: hetfrz_classnuc_stub_init

contains

!> \section arg_table_hetfrz_classnuc_stub_init Argument Table
!! \htmlinclude hetfrz_classnuc_stub_init.html
subroutine hetfrz_classnuc_stub_init( &
amIRoot, iulog, &
use_hetfrz_classnuc, &
errmsg, errflg)

logical, intent(in) :: amIRoot
integer, intent(in) :: iulog
logical, intent(in) :: use_hetfrz_classnuc

character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg

errmsg = ''
errflg = 0

if (amIRoot) then
if (use_hetfrz_classnuc) then
write(iulog, '(A)') 'WARNING: hetfrz_classnuc_stub: use_hetfrz_classnuc=.true., but ' // &
'heterogeneous freezing by classical nucleation theory is not yet ' // &
'implemented in CAM-SIMA (stub scheme).'
write(iulog, '(A)') 'WARNING: hetfrz_classnuc_stub: The flag is still propagated to ' // &
'downstream schemes (e.g. nucleate_ice_ccpp) via its CCPP standard ' // &
'name, but no hetfrz_classnuc computation will occur.'

! this is not intended to error out for now as the flag needs to be passed to downstream schemes
! (e.g., PUMAS) and modifies their behavior
else
write(iulog, '(A)') 'hetfrz_classnuc_stub: use_hetfrz_classnuc=.false. (stub scheme, ' // &
'no-op).'
end if
end if

end subroutine hetfrz_classnuc_stub_init

end module hetfrz_classnuc_stub
37 changes: 37 additions & 0 deletions schemes/microp_aero/ccpp/hetfrz_classnuc_stub.meta
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[ccpp-table-properties]
name = hetfrz_classnuc_stub
type = scheme

[ccpp-arg-table]
name = hetfrz_classnuc_stub_init
type = scheme
[ amIRoot ]
standard_name = flag_for_mpi_root
units = flag
type = logical
dimensions = ()
intent = in
[ iulog ]
standard_name = log_output_unit
units = 1
type = integer
dimensions = ()
intent = in
[ use_hetfrz_classnuc ]
standard_name = do_heterogeneous_ice_nucleation
units = flag
type = logical
dimensions = ()
intent = in
[ errmsg ]
standard_name = ccpp_error_message
units = none
type = character | kind = len=*
dimensions = ()
intent = out
[ errflg ]
standard_name = ccpp_error_code
units = 1
type = integer
dimensions = ()
intent = out
102 changes: 102 additions & 0 deletions schemes/microp_aero/ccpp/hetfrz_classnuc_stub_namelist.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"?>

<entry_id_pg version="2.0">


<!-- Each namelist variable is defined in an <entry> element. The
content of the element is the documentation of how the variable is
used. Other aspects of the variable's definition are expressed as
attributes of the <entry> element. Note that it is an XML requirement
that the attribute values are enclosed in quotes. The attributes are:

id
The variable's name. *** N.B. *** The name must be lower case.
The module convert all namelist variable names to lower case
since Fortran is case insensitive.

type
An abbreviation of the fortran declaration for the variable.
Valid declarations are:

char*n
integer
logical
real

Any of these types may be followed by a comma separated list of
integers enclosed in parenthesis to indicate an array.

The current namelist validation code only distinquishes between
string and non-string types.

input_pathname
Only include this attribute to indicate that the variable
contains the pathname of an input dataset that resides in the
CESM inputdata directory tree. Note that the variables
containing the names of restart files that are used in branch
runs don't reside in the inputdata tree and should not be given
this attribute.

The recognized values are "abs" to indicate that an absolute
pathname is required, or "rel:var_name" to indicate that the
pathname is relative and that the namelist variable "var_name"
contains the absolute root directory.

category
A category assigned for organizing the documentation.

group
The namelist group that the variable is declared in.

valid_values
This is an optional attribute that is mainly useful for variables
that have only a small number of allowed values. It is a
comma-separated list of valid values for the variable.

desc
This is a text description of the variable including its
purpose and use.

values
This is a grouping of all the cases where a value can be
assigned with the namelist generator has been run.

value
Each <value> tag specifies a case where a value is assigned
to this variable when the namelist generator is run. If the
tag has no attributes, it is a default value. In general,
the namelist generator attempts to find a value with the
maximum number of attribute matches (and no non-matches).

standard_name
This is the CCPP Standard Name of the variable

units
This is the CCPP unit specification of the variable (e.g., m s-1).
-->
<!-- hetfrz configuration options -->

<entry id="use_hetfrz_classnuc">
<type>logical</type>
<category>microphys</category>
<group>hetfrz_classnuc_nl</group>
<standard_name>do_heterogeneous_ice_nucleation</standard_name>
<units>flag</units>
<desc>
Switch to turn on heterogeneous freezing by classical nucleation theory.
Currently a stub in CAM-SIMA: the flag is propagated to downstream schemes
(nucleate_ice_ccpp, eventually PUMAS) but no hetfrz computation is performed.

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.

Remove eventually here?

Suggested change
(nucleate_ice_ccpp, eventually PUMAS) but no hetfrz computation is performed.
(nucleate_ice_ccpp, PUMAS) but no hetfrz computation is performed.

Setting this to TRUE is supported for snapshot-testing flows where the flag
must match CAM; a warning is emitted at init time.
Default: FALSE; TRUE for CAM6 and CAM7.
</desc>
<values>
<value>.false.</value>
<value phys_suite="cam6">.true.</value>
<value phys_suite="cam7">.true.</value>
</values>
</entry>

</entry_id_pg>
Loading
Loading