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
bed8416
remove lcp_moist and line-by-line merge of subroutine vertical_remap
Mjoldnir Dec 13, 2024
5442b6b
forgot to remove lcp_moist from dp_coupling
Mjoldnir Dec 13, 2024
d4ae702
remove phys_dyn_cp, Rayleigh friction (incl. namelist), vertical diff…
Mjoldnir Dec 13, 2024
983b132
rename nu_s->nu_t
Mjoldnir Dec 13, 2024
ef7a274
remove unused variables (element_mod.F90 merged)
Mjoldnir Dec 14, 2024
5930c27
merge fvm_consistent.F90 (efficiency updates from Jim Edwards for Der…
Mjoldnir Dec 14, 2024
14ecf1f
merge use_cslam logic (instead of ntrac>0)
Mjoldnir Dec 17, 2024
e6edd62
merge fvm_reconstruction_mod
Mjoldnir Dec 17, 2024
8af4d32
first extensive merge with cam_development
Mjoldnir Dec 26, 2024
19d80f6
Merge branch 'development' into hplin/dycore_update_from_peter
hplin-ucar Dec 26, 2024
17eb407
Fix nested timer ESMF error
hplin-ucar Dec 26, 2024
f02b45a
Merge pull request #1 from jimmielin/hplin/dycore_update_from_peter
PeterHjortLauritzen Dec 27, 2024
0fdead0
remove debug statement
PeterHjortLauritzen Dec 27, 2024
5dd4566
change namelist defaults
PeterHjortLauritzen Dec 27, 2024
0330613
performance enhancements from https://github.com/ESCOMP/CAM/pull/1365
PeterHjortLauritzen Nov 24, 2025
14d9c11
minor fixes
PeterHjortLauritzen Nov 24, 2025
ff2ac42
Merge remote-tracking branch 'upstream/development' into CAM-SIMA-dyc…
nusbaume Feb 18, 2026
0aaa04f
Make modifications found during code review.
nusbaume Feb 19, 2026
3cffbcf
Additional clean-up found during code review.
nusbaume Feb 20, 2026
d8e1e5f
Another round of code review cleanup.
nusbaume Feb 23, 2026
7fff6fe
Yet another round of code review cleanup.
nusbaume Feb 24, 2026
50fc9d6
Final round of code review cleanup.
nusbaume Feb 25, 2026
fda0a85
Bring in changes from CAM tag cam6_4_150, plus minval->maxval bug fix.
nusbaume Feb 26, 2026
4b80fb1
Bring in changes from CAM tag cam6_4_154
nusbaume Feb 26, 2026
34dad5f
Bring in changes from CAM tag cam6_4_155
nusbaume Feb 26, 2026
0000915
Update history and constituents code for 'dyn_comp' and 'stepon'.
nusbaume Mar 2, 2026
67a07d5
Remove un-used testing code, and perform additional cleanup.
nusbaume Mar 3, 2026
985ec87
Implement final cleanup and history/constituent implementation steps.
nusbaume Mar 4, 2026
29950d3
Merge remote-tracking branch 'upstream/development' into CAM-SIMA-dyc…
nusbaume Mar 9, 2026
4ae8412
Fix build errors.
nusbaume Mar 19, 2026
8645388
Use constituent diagnostic names instead of standard names in history…
nusbaume Mar 20, 2026
69f1884
Merge remote-tracking branch 'upstream/development' into CAM-SIMA-dyc…
nusbaume Mar 24, 2026
3141f47
Implement changes needed for SE dycore to run with CAM4 and real ICs.
nusbaume Mar 27, 2026
acc6c3e
Remove unused 'readtrace' variable and cam_constituents 'readnl' subr…
nusbaume Mar 27, 2026
d9176b3
Add new grid and looping structure to output 'FX' variables on GLL grid.
nusbaume Apr 5, 2026
a1e2e76
Merge remote-tracking branch 'upstream/development' into CAM-SIMA-dyc…
nusbaume Apr 13, 2026
2d911ae
Proposed fix for statediag_numtrac
hplin-ucar Apr 14, 2026
70b2508
Add aquaplanet CAM4 regression tests with SE dycore.
nusbaume Apr 15, 2026
8de092e
Merge remote-tracking branch 'upstream/development' into CAM-SIMA-dyc…
nusbaume Apr 15, 2026
54d9e93
Fix comments and atm log output.
nusbaume Apr 15, 2026
fb4a1b0
Merge pull request #2 from jimmielin/CAM-SIMA-dycore-update
nusbaume Apr 15, 2026
2aafb57
Fix dbuf3 bug, and bring in latest atmospheric_physics tag.
nusbaume Apr 15, 2026
ab9bfaa
Merge remote-tracking branch 'refs/remotes/origin/CAM-SIMA-dycore-upd…
nusbaume Apr 15, 2026
3407979
Fix bug preventing SIMA from using metadata file in SourceMods.
nusbaume Apr 20, 2026
b2717e1
Merge remote-tracking branch 'upstream/development' into CAM-SIMA-dyc…
nusbaume Jun 10, 2026
5644177
Make SE dycore robust against tracer order in constituents object, an…
nusbaume Jun 16, 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
5 changes: 3 additions & 2 deletions cime_config/cam_autogen.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,8 +292,9 @@ def _find_metadata_files(source_dirs, scheme_finder):
bad_xml_sources.append(xml_file)
# end if
for scheme in schemes:
meta_files[scheme] = (path, source_file,
xml_file)
if scheme not in meta_files:
meta_files[scheme] = (path, source_file,
xml_file)
# End for
else:
# Add meta file to list of files
Expand Down
25 changes: 24 additions & 1 deletion cime_config/namelist_definition_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@
<value dyn="se" hgrid="ne5np4" nlev="66">${DIN_LOC_ROOT}/atm/waccm/ic/wa3_ne5np4_1950_spinup.cam2.i.1960-01-01-00000_c150810.nc</value>
<value dyn="se" hgrid="ne30np4" nlev="70" sim_year="1850">${DIN_LOC_ROOT}/atm/waccm/ic/waccm5_1850_ne30np4_L70_0001-01-11-00000_c151217.nc</value>
<value dyn="se" hgrid="ne30np4" nlev="70">${DIN_LOC_ROOT}/atm/waccm/ic/fw2000_ne30np4_L70_c181221.nc</value>
<value dyn="se" hgrid="ne16np4" nlev="58">${DIN_LOC_ROOT}/atm/cam/inic/se/FHISTC_LTso_ne16pg3_ne16pg3_mg17.i.c260220.nc</value>
<value dyn="se" hgrid="ne16np4" nlev="93">${DIN_LOC_ROOT}/atm/cam/inic/se/FHISTC_MTso_ne16pg3_ne16pg3_mg17.i.c260220.nc</value>

<!-- MPAS dycore ICs -->
<value dyn="mpas" hgrid="mpasa120" nlev="26" analytic_ic="1">${DIN_LOC_ROOT}/atm/cam/inic/mpas/mpasa120_L26_notopo_coords_c251105.nc</value>
Expand Down Expand Up @@ -116,7 +118,28 @@
<value>UNSET_PATH</value>
</values>
</entry>

<entry id="scale_dry_air_mass">
<type>real</type>
<category>initial_conditions</category>
<group>cam_initfiles_nl</group>
<desc>
Specify whether and how to perform
dry surface pressure scaling. If less than or equal to 0.0,
do not perform scaling. If greater than 0.0, perform scaling to scale_dry_air_mass
value (in Pa) as the average dry surface pressure target.
Default: 0.0
</desc>
<values>
<value>0.0D0</value>
<!-- Scale Dry Air Mass: for cases with topography -->
<value phys_suite="cam4" > 98288.0D0 </value>
<value phys_suite="cam5" > 98288.0D0 </value>
<value phys_suite="cam6" > 98288.0D0 </value>
<value phys_suite="cam7" > 98288.0D0 </value>
<!-- Scale Dry Air Mass: for cases with no topography (aquaplanet) -->
<value aquaplanet="1"> 101080.0D0 </value>
</values>
</entry>
<!-- Topography -->

<entry id="bnd_topo">
Expand Down
24 changes: 24 additions & 0 deletions cime_config/testdefs/testlist_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@
<option name="comment">Aquaplanet CAM4 test with MPAS dycore at 120 km resolution</option>
</options>
</test>

<test compset="QPC4" grid="mpasa120_mpasa120" name="SMS_D_Ln9" testmods="cam/outfrq_analy_ic_cam4">
<machines>
<machine name="derecho" compiler="intel" category="aux_sima"/>
Expand All @@ -253,4 +254,27 @@
<option name="comment">Aquaplanet CAM4 test with MPAS dycore at 120 km resolution in debug mode</option>
</options>
</test>

<test compset="QPC4" grid="ne3pg3_ne3pg3_mt232" name="SMS_Ln9" testmods="cam/outfrq_se_cam4">
<machines>
<machine name="derecho" compiler="intel" category="aux_sima"/>
<machine name="derecho" compiler="gnu" category="aux_sima"/>
</machines>
<options>
<option name="wallclock">00:20:00</option>
<option name="comment">Aquaplanet CAM4 test with SE-CSLAM dycore at ne3 (ultra-low) resolution</option>
</options>
</test>

<test compset="QPC4" grid="ne3pg3_ne3pg3_mt232" name="SMS_D_Ln9" testmods="cam/outfrq_se_cam4">
<machines>
<machine name="derecho" compiler="intel" category="aux_sima"/>
<machine name="derecho" compiler="gnu" category="aux_sima"/>
</machines>
<options>
<option name="wallclock">00:20:00</option>
<option name="comment">Aquaplanet CAM4 test with SE-CSLAM dycore at ne3 (ultra-low) resolution in debug mode</option>
</options>
</test>

</testlist>
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
hist_add_inst_fields;h1: T, Q, U, V, PS

! set analytic ICs
analytic_ic_type=held_suarez_1994

! setup history output
hist_output_frequency;h1: 1*nsteps
hist_write_nstep0;h1: .true.
analytic_ic_type=held_suarez_1994
hist_precision;h1: REAL64
hist_max_frames;h1: 1

! general atmospheric state variables
hist_add_inst_fields;h1: T, Q, U, V, PS

! history fields for CAM4 Hack shallow convection
hist_add_inst_fields;h1:CMFDT,CMFDQ,CMFDLIQ,CMFDICE,CMFDQR,DQP,ICWMRSH,CMFSL,CMFLQ,FREQSH,EVAPTCM,FZSNTCM,EVSNTCM,HKNTPRPD,HKNTSNPD,HKFLXPRC,HKFLXSNW,HKEIHEAT,EVAPQCM,PRECSH,CMFMCSH

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
./xmlchange CAM_LINKED_LIBS=" "
32 changes: 32 additions & 0 deletions cime_config/testdefs/testmods_dirs/cam/outfrq_se_cam4/user_nl_cam
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@

! setup history output
hist_output_frequency;h1: 1*nsteps
hist_write_nstep0;h1: .true.
hist_precision;h1: REAL64
hist_max_frames;h1: 1

! general atmospheric state variables (to match 'history_amwg' from CAM)
hist_add_inst_fields;h1: T, U, V, ZM, OMEGA, PS, PHIS, PMID

! constituent diagnostics
hist_add_inst_fields;h1: Q, CLDLIQ, CLDICE

! SE dycore variables (to test 'GLL_hist' grid outputs)
hist_add_inst_fields;h1: FU, FV, FT

! history fields for CAM4 gravity waves (to match 'history_amwg' from CAM):
hist_add_inst_fields;h1: TAUGWX, TAUGWY

! history fields for CAM4 RK microphysics (to match 'history_amwg' from CAM):
hist_add_inst_fields;h1: IWC, ICIMR, ICWMR, FICE

! cloud fraction history fields (to match 'history_amwg' from CAM):
hist_add_inst_fields;h1: CONCLD

! history fields for CAM4 boundary layer scheme (to match 'history_amwg' from CAM):
hist_add_inst_fields;h1: DTV, PBLH

! history fields for RRTMGP radiation scheme (to match 'history_amwg' from CAM):! shortwave fields
hist_add_inst_fields;h1: SOLIN, QRS, FSNT, FSNTC, FSNTOA, FSNTOAC, SWCF, FSNS, FSNSC, FSUTOA, FSDS, FSDSC
hist_add_inst_fields;h1: QRL, FLNT, FLNTC, FLUT, FLUTC, LWCF, FLNS, FLNSC, FLDS

16 changes: 14 additions & 2 deletions src/control/cam_initfiles.F90
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ module cam_initfiles
! cam_branch_file: Filepath of primary restart file for a branch run
character(len=cl) :: cam_branch_file = ' '

real(r8), public, protected :: scale_dry_air_mass = 0.0_r8 ! Toggle and target avg air mass

! rest_pfile: The restart pointer file contains name of most recently
! written primary restart file.
! The contents of this file are updated by cam_write_restart
Expand Down Expand Up @@ -89,7 +91,7 @@ subroutine cam_initfiles_readnl(nlfile)
character(len=*), parameter :: subname = 'cam_initfiles_readnl'

namelist /cam_initfiles_nl/ ncdata, bnd_topo, pertlim, cam_branch_file, &
unset_path_str
unset_path_str, scale_dry_air_mass
!------------------------------------------------------------------------

if (masterproc) then
Expand Down Expand Up @@ -122,6 +124,10 @@ subroutine cam_initfiles_readnl(nlfile)
if (ierr /= 0) then
call endrun(subname//": ERROR: mpi_bcast: cam_branch_file")
end if
call mpi_bcast(scale_dry_air_mass, 1, mpi_real8, mstrid, mpicom, ierr)
if (ierr /= 0) then
call endrun(subname//": ERROR: mpi_bcast: scale_dry_air_mass")
endif
call mpi_bcast(unset_path_str, len(unset_path_str), mpi_character, &
mstrid, mpicom, ierr)
if (ierr /= 0) then
Expand Down Expand Up @@ -198,7 +204,13 @@ subroutine cam_initfiles_readnl(nlfile)

write(iulog,*) ' Maximum abs value of scale factor used to ', &
'perturb initial conditions, pertlim= ', pertlim

if (scale_dry_air_mass > 0) then
write(iulog,*) &
' Initial condition dry mass will be scaled to: ',scale_dry_air_mass,' Pa'
else
write(iulog,*) &
' Initial condition dry mass will not be scaled.'
end if
end if

end subroutine cam_initfiles_readnl
Expand Down
2 changes: 0 additions & 2 deletions src/control/runtime_opts.F90
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ subroutine read_namelist(nlfilename, single_column, scmlat, scmlon)
use cam_abortutils, only: endrun
use cam_logfile, only: cam_logfile_readnl, iulog
use cam_initfiles, only: cam_initfiles_readnl
use cam_constituents, only: cam_constituents_readnl
use cam_ccpp_scheme_namelists, only: cam_read_ccpp_scheme_namelists
use runtime_obj, only: cam_set_runtime_opts, unset_str
use cam_ccpp_cap, only: ccpp_physics_suite_schemes
Expand Down Expand Up @@ -81,7 +80,6 @@ subroutine read_namelist(nlfilename, single_column, scmlat, scmlon)
call cam_logfile_readnl(nlfilename) !The log settings must always be read first
call physconst_readnl(nlfilename)
call cam_initfiles_readnl(nlfilename)
call cam_constituents_readnl(nlfilename)
call history_readnl(nlfilename)
call phys_readnl(nlfilename) ! Should set phys_suite_name
call vert_coord_readnl(nlfilename)
Expand Down
6 changes: 4 additions & 2 deletions src/data/air_composition.F90
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ subroutine air_composition_init()
use physics_grid, only: pcols => columns_on_task
use vert_coord, only: pver
use runtime_obj, only: wv_stdname
use cam_constituents, only: const_name, num_advected
use cam_constituents, only: num_constituents, num_advected
use cam_constituents, only: const_name, const_is_advected
use cam_constituents, only: const_set_thermo_active
use cam_constituents, only: const_set_water_species

Expand Down Expand Up @@ -237,7 +238,8 @@ subroutine air_composition_init()
icnst = 1
water_species_num = 0
dry_species_num = 0
do idx = 1, num_advected
do idx = 1, num_constituents
if (.not. const_is_advected(idx)) cycle ! Skip all non-advected constituents
cnst_stdname = const_name(idx)
has_liq = .false.
has_ice = .false.
Expand Down
13 changes: 3 additions & 10 deletions src/dynamics/mpas/dyn_comp_impl.F90
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,7 @@ module subroutine dyn_init(cam_runtime_opts, dyn_in, dyn_out)
! Module(s) from CAM-SIMA.
use cam_abortutils, only: check_allocate
use cam_constituents, only: const_name, const_is_water_species, &
num_advected, &
readtrace
num_advected
use cam_control_mod, only: initial_run
use cam_initfiles, only: initial_file_get_id, topo_file_get_id
use cam_logfile, only: debugout_debug, debugout_info
Expand Down Expand Up @@ -219,14 +218,8 @@ module subroutine dyn_init(cam_runtime_opts, dyn_in, dyn_out)
! the actual availability (checked and handled by MPAS).
call dyn_exchange_constituent_states(direction='e', exchange=.true., conversion=.false.)

! Namelist option that controls if constituents are to be read from a file.
if (readtrace) then
! Read variables that belong to the "input" stream in MPAS.
call mpas_dynamical_core % read_write_stream(pio_init_file, 'r', 'input')
else
! Read variables that belong to the "input" stream in MPAS, excluding constituents.
call mpas_dynamical_core % read_write_stream(pio_init_file, 'r', 'input-scalars')
end if
! Read variables that belong to the "input" stream in MPAS.
call mpas_dynamical_core % read_write_stream(pio_init_file, 'r', 'input')
end if
else
! Run type is branch or restart run.
Expand Down
Loading
Loading