Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
06a4223
Some cleanup. Started adding LBC stream. Updates to NUOPC cap to inte…
dustinswales Sep 30, 2025
2ccee6b
fix compilation failure related to mpas timekeeping operators
grantfirl Oct 22, 2025
0eaf251
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into fea…
dustinswales Nov 13, 2025
5a084eb
Merge branch 'feature/mpas_lbc_plus_cleanup' of https://github.com/du…
dustinswales Nov 13, 2025
ae366af
Changes to decomposition in P2D. MPAS RTs on URSA now working.
dustinswales Nov 14, 2025
8749442
Omit from previous commit
dustinswales Nov 14, 2025
73da07a
Progress towards regional MPAS. Work in progress.
dustinswales Nov 20, 2025
88b0269
Turned on some more pieces of the coupling
dustinswales Nov 20, 2025
57d6b4e
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into fea…
dustinswales Dec 4, 2025
538a76e
Dycore only working!
dustinswales Dec 8, 2025
e43b741
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into fea…
dustinswales Dec 8, 2025
c671335
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
Dec 22, 2025
f9bd651
Stash for port to Ursa
Jan 6, 2026
acc8c4e
move private statement to fix compilation failure
grantfirl Jan 8, 2026
440cad9
fix private syntax
grantfirl Jan 8, 2026
1b576df
Changes to ingest scalars/constituents/tracers/yadayada correctly
dustinswales Jan 8, 2026
cf92982
Merge branch 'feature/mpas_lbc_plus_cleanup' into feature/mpas_lbc_pl…
grantfirl Jan 13, 2026
56ac173
update ccpp/physics branch
grantfirl Jan 15, 2026
0374ed2
add lat/lon from MPAS to physics state
grantfirl Jan 15, 2026
4000c89
fix DDT for lat/lon
grantfirl Jan 15, 2026
6b73cf7
testing
grantfirl Jan 15, 2026
12c44cb
fixed syntax - lat/lon transfer to physics working
grantfirl Jan 15, 2026
c82de92
move lat/lon read/transfer to ufs_mpas_grid_to_physics; fill out rest…
grantfirl Jan 16, 2026
a2142eb
fix compilation errors in atmos_coupling.F90
grantfirl Jan 16, 2026
d5e2c86
Merge pull request #7 from grantfirl/feature/mpas_lbc_plus_cleanup_gjf
dustinswales Jan 20, 2026
b310590
Updates for LBC scalars
dustinswales Jan 22, 2026
c012c59
Merge branch 'feature/mpas_lbc_plus_cleanup' of https://github.com/du…
dustinswales Jan 22, 2026
af37da5
Start adding model grid fields needed for physics
dustinswales Jan 22, 2026
3017442
More changes for LBCs
dustinswales Feb 2, 2026
b922351
LBCs working!
dustinswales Feb 4, 2026
07993cd
Updated/synced mpas dycore
dustinswales Feb 4, 2026
74a906e
Write MPAS output file and whitespace cleanup
scrasmussen Feb 7, 2026
e669b79
Move to MPAS UFS registry file.
dustinswales Feb 9, 2026
c4829e7
Merge branch 'mpas_lbc_plus_mpas_native_output' of https://github.com…
dustinswales Feb 9, 2026
3ace3bd
Revert "Move to MPAS UFS registry file."
dustinswales Feb 9, 2026
1532430
Update registry files in MPAS and stream definitions in UWM
dustinswales Feb 9, 2026
6da1c61
Cleanup
dustinswales Feb 24, 2026
c17e5eb
Sync physics
dustinswales Feb 24, 2026
36f8e85
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Feb 24, 2026
621ae26
Synced physics
dustinswales Mar 2, 2026
ba1d5fb
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Mar 2, 2026
de7d66a
Reorg module contents
dustinswales Mar 9, 2026
7dae4fd
Add control over output file frequency. Add timers to output section.
dustinswales Mar 9, 2026
cda6db2
Add diagnostic calculation to P2D
dustinswales Mar 12, 2026
5482114
Some P2D changes
dustinswales Mar 19, 2026
c727f70
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Mar 19, 2026
d0fab1a
Housekeeping
dustinswales Mar 20, 2026
ee69a66
Use Pnetcdf as the default for PIO
dustinswales Mar 30, 2026
53a1d41
Sync physics
dustinswales Mar 30, 2026
6cc02b4
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Mar 30, 2026
474e5c4
Sync physics
dustinswales Apr 9, 2026
cf9c11f
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Apr 9, 2026
87f7eb1
Mostly done. Some work remains
dustinswales Apr 13, 2026
6ca8e4f
Remove more FMS dependencies
dustinswales Apr 15, 2026
ce31e18
Bug in gcycle error message. Remove internal_nm_file from CCPP with MPAS
dustinswales Apr 15, 2026
f11639e
More FMS removal. Almost done!
dustinswales Apr 16, 2026
87ea99d
Remove some more FMS. Getting close!
dustinswales Apr 16, 2026
a18818f
Address reviewer comments
dustinswales Apr 20, 2026
1a7f1bb
Update physics
dustinswales Apr 20, 2026
da53618
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Apr 20, 2026
fd2767a
Omission from previous commit
dustinswales Apr 20, 2026
4bfa791
Merge branch 'feature/mpas_lbc_plus_cleanup' of https://github.com/du…
dustinswales Apr 20, 2026
e3a2eba
Bye Bye FMS
dustinswales Apr 21, 2026
6ce81d4
Match MPAS history file output exactly
dustinswales Apr 23, 2026
8533630
Update physics
dustinswales Apr 23, 2026
c533b41
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Apr 23, 2026
ce6548e
Update physics
dustinswales Apr 23, 2026
29ecd21
Merge branch 'feature/mpas_lbc_plus_cleanup' of https://github.com/du…
dustinswales Apr 23, 2026
0a19557
doh
dustinswales Apr 23, 2026
ae12357
Update default nml settings
dustinswales Apr 24, 2026
2053a02
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Apr 24, 2026
eb0627e
Merge branch 'feature/mpas_lbc_plus_cleanup' of https://github.com/du…
dustinswales Apr 28, 2026
bbfc817
Add stream_lists for MPAS ATM
dustinswales Apr 29, 2026
689d39c
Add restart frequency array
dustinswales Apr 29, 2026
6ac9fcf
SOme more housekeeping in NUOPC cap
dustinswales Apr 29, 2026
1dc825e
Some more stuff
dustinswales Apr 29, 2026
156f042
Updated physics
dustinswales Apr 29, 2026
be62474
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Apr 29, 2026
5ed1ac1
Working. Now move to using CDEPS tool
dustinswales Apr 29, 2026
7720a38
Use CDEPS/UFS utility to compute stream file output times
dustinswales Apr 30, 2026
c7a85dc
Some file unit cleaning
dustinswales May 4, 2026
e560779
Cmall changes to work with FV3 configurations
dustinswales May 6, 2026
0f1a1e2
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales May 6, 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: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,9 @@ list(APPEND fv3_io_srcs
io/fv3atm_history_io.F90
io/fv3atm_restart_io.F90)

list(APPEND ufs_srcs
${PROJECT_SOURCE_DIR}/CDEPS-interface/ufs/cdeps_share/shr_is_restart_fh_mod.F90)

###############################################################################
### UFSATM with FV3 dynamical core
###############################################################################
Expand Down Expand Up @@ -186,6 +189,7 @@ if (FV3)
${moving_nest_srcs}
${cdeps_inline_srcs}
${POST_SRC}
${ufs_srcs}
)
add_dependencies(${DYCORE_TARGET} fv3 fv3ccpp stochastic_physics)

Expand Down Expand Up @@ -248,6 +252,7 @@ if (MPAS)
mpas/ufs_mpas_constituents.F90
${coupling_srcs}
${io_srcs}
${ufs_srcs}
ccpp/data/MPAS_typedefs.F90
ccpp/driver/MPAS_init.F90
)
Expand Down
5 changes: 4 additions & 1 deletion ccpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,10 @@ endif()
if(NOT HYDRO)
add_definitions(-DMOIST_CAPPA -DUSE_COND -DNEMS_GSM)
endif()
add_definitions(-DINTERNAL_FILE_NML -DNEMS_GSM)
add_definitions(-DNEMS_GSM)
if (FV3)
add_definitions(-DINTERNAL_FILE_NML)
endif()

if(MULTI_GASES)
add_definitions(-DMULTI_GASES)
Expand Down
27 changes: 26 additions & 1 deletion ccpp/data/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ module GFS_typedefs

integer, parameter :: physics_no_tracer = -99


!> \section arg_table_GFS_typedefs
!! \htmlinclude GFS_typedefs.html
!!
Expand Down Expand Up @@ -8805,10 +8806,34 @@ function get_physics_tracer_index (name, Model)
!--- local variables
integer :: get_physics_tracer_index

get_physics_tracer_index = get_tracer_index(MODEL_ATMOS, name, verbose = (Model%me == Model%master) .and. Model%debug)
! UFS-FV3 uses FMS
if (Model%dycore_active == Model%dycore_fv3) then
get_physics_tracer_index = get_tracer_index(MODEL_ATMOS, name, verbose = (Model%me == Model%master) .and. Model%debug)
endif

! UFS-MPAS does not use FMS
if (Model%dycore_active == Model%dycore_mpas) then
get_physics_tracer_index = get_constituent_index(name, Model%tracer_names)
endif

if (get_physics_tracer_index == NO_TRACER) get_physics_tracer_index = physics_no_tracer

end function get_physics_tracer_index

! We don't use FMS when using the MPAS dynamical core. Here we simply grab the
! index from the input tracer list. This is the same as FMS get_tracer_index().
function get_constituent_index(const_name, tracer_names)
character(len=*), intent(in) :: const_name
character(len=*), intent(in) :: tracer_names(:)
integer :: itracer
integer :: get_constituent_index

get_constituent_index = 0
do itracer=1,size(tracer_names)
if (trim(const_name) == trim(tracer_names(itracer))) then
get_constituent_index = itracer
endif
enddo
end function get_constituent_index

end module GFS_typedefs
25 changes: 13 additions & 12 deletions mpas/atmos_coupling.F90
Original file line number Diff line number Diff line change
Expand Up @@ -489,8 +489,7 @@ subroutine ufs_mpas_grid_to_physics(physics_grid)
use mpas_kind_types, only : RKIND
use mpas_constants, only : pii
use mpas_log, only : mpas_log_write
use mpas_derived_types, only : MPAS_LOG_ERR, MPAS_LOG_WARN
use mpp_mod, only : mpp_error, FATAL
use mpas_derived_types, only : MPAS_LOG_ERR, MPAS_LOG_WARN, MPAS_LOG_CRIT
! Arguments
type(GFS_grid_type), intent(inout) :: physics_grid
! Locals
Expand All @@ -502,6 +501,7 @@ subroutine ufs_mpas_grid_to_physics(physics_grid)
real(RKIND), pointer :: nominalMinDc
real(RKIND), pointer :: config_len_disp
real(RKIND) :: rad2deg
character(len=*), parameter :: subname = 'atmos_coupling::ufs_mpas_grid_to_physics'

ierr = 0
rad2deg = 180.0_RKIND/pii
Expand All @@ -528,10 +528,10 @@ subroutine ufs_mpas_grid_to_physics(physics_grid)
if (config_len_disp > 0.0_RKIND) then
! But if nominalMinDc was available in the input file and is different, print a warning
if (nominalMinDc > 0.0_RKIND .and. abs(nominalMinDc - config_len_disp) > 1.0e-6_RKIND * config_len_disp) then
call mpas_log_write('nominalMinDc was read from input file as a positive value ($r) that differs', &
realArgs=[nominalMinDc], messageType=MPAS_LOG_WARN)
call mpas_log_write('from the specified config_len_disp value ($r)', &
realArgs=[config_len_disp], messageType=MPAS_LOG_WARN)
call mpas_log_write(subname // ' WARNING: nominalMinDc was read from input file as a positive value ($r) that differs', &
realArgs=[nominalMinDc], messageType=MPAS_LOG_WARN)
call mpas_log_write(subname // ' WARNING: from the specified config_len_disp value ($r)', &
realArgs=[config_len_disp], messageType=MPAS_LOG_WARN)
end if
nominalMinDc = config_len_disp
! Otherwise, try to use nominalMinDc
Expand All @@ -540,15 +540,16 @@ subroutine ufs_mpas_grid_to_physics(physics_grid)
call mpas_log_write('Setting config_len_disp to $r based on nominalMinDc value in input file', realArgs=[nominalMinDc])
config_len_disp = nominalMinDc
else
call mpas_log_write('Both config_len_disp and nominalMinDc are <= 0.0.', messageType=MPAS_LOG_ERR)
call mpas_log_write('Please either specify config_len_disp in the &nhyd_model namelist group,', &
messageType=MPAS_LOG_ERR)
call mpas_log_write('or use an input file that provides a valid value for the nominalMinDc variable.', &
messageType=MPAS_LOG_ERR)
call mpas_log_write(subname // ' ERROR: Both config_len_disp and nominalMinDc are <= 0.0.', &
messageType=MPAS_LOG_ERR)
call mpas_log_write(subname // ' ERROR: Please either specify config_len_disp in the &nhyd_model namelist group,', &
messageType=MPAS_LOG_ERR)
call mpas_log_write(subname // ' ERROR: or use an input file that provides a valid value for the nominalMinDc variable.', &
messageType=MPAS_LOG_ERR)
ierr = 1
end if
end if
if (ierr/=0) call mpp_error(FATAL, 'Call to ufs_mpas_grid_to_physics() failed')
if (ierr/=0) call mpas_log_write(subname // ' ERROR: Call to ufs_mpas_grid_to_physics() failed', messageType=MPAS_LOG_CRIT)

do i=1, nCellsSolve
physics_grid % xlat(i) = lat(i)
Expand Down
Loading
Loading