diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 70fc07ab6f..f55d17a59c 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -44,12 +44,16 @@ atm/cam/inic/cam_vcoords_L32_c180105.nc -atm/cam/inic/mpas/mpasa480_L32_notopo_coords_c201125.nc -atm/cam/inic/mpas/mpasa120_L32_notopo_coords_c201216.nc -atm/cam/inic/mpas/mpasa120_L32_topo_coords_c201022.nc -atm/cam/inic/mpas/mpasa120_L32_topo_coords_c201022.nc -atm/cam/inic/mpas/mpasa60_L32_notopo_coords_c230707.nc -atm/cam/inic/mpas/mpasa30_L32_notopo_coords_c230707.nc +atm/cam/inic/mpas/mpasa480_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa120_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa60_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa30_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa480_L58_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa120_L58_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa60_L58_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa480_L93_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa120_L93_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa60_L93_notopo_coords_c240814.nc atm/cam/inic/fv/cami_0000-01-01_0.23x0.31_L26_c100513.nc @@ -280,10 +284,14 @@ atm/waccm/ic/FW2000_CONUS_30x8_L70_01-01-0001_c200602.nc -atm/waccm/ic/mpasa120km.waccm_fulltopo_c220818.nc +atm/waccm/ic/mpasa120_L70.waccm_topography_SC_c240904.nc -atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L32_CFSR_c210426.nc -atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L32_CFSR_c211013.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L32_CFSR_c240508.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L32_CFSR_c240508.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L58_CFSR_c240814.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L58_CFSR_c240814.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L93_CFSR_c240814.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L93_CFSR_c240814.nc atm/cam/topo/topo-from-cami_0000-01-01_256x512_L26_c030918.nc @@ -335,8 +343,8 @@ atm/cam/topo/se/ne30x4_ARCTIC_nc3000_Co060_Fi001_MulG_PF_RR_Nsw042_c200428.nc atm/cam/topo/se/ne30x8_ARCTICGRIS_nc3000_Co060_Fi001_MulG_PF_RR_Nsw042_c200428.nc -atm/cam/topo/mpas/mpas_120_nc3000_Co060_Fi001_MulG_PF_Nsw042_c200921.nc -atm/cam/topo/mpas_480_nc3000_Co240_Fi001_MulG_PF_Nsw170.nc +atm/cam/topo/mpas/mpasa480_gmted2010_modis_bedmachine_nc3000_Laplace0400_noleak_20240507.nc +atm/cam/topo/mpas/mpasa120_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240507.nc 0.0D0 diff --git a/doc/ChangeLog b/doc/ChangeLog index 933de28d36..1f35e8621b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,133 @@ =============================================================== +Tag name: cam6_4_033 +Originator(s): gdicker1 (gdicker@ucar.edu) +Date: Tue 10 Sep 2024 +One-line Summary: Add updated meshes and topo for v8 MPAS-A dycore +Github PR URL: https://github.com/ESCOMP/CAM/pull/1029 + +Purpose of changes (include the issue number and title text for each relevant GitHub issue): + +Add files created by v8 MPAS init_atmosphere model for frontogenesis fields +#995 - Runs with MPAS-A dycore and CAM7 physics fail - missing variables in inic files: https://github.com/ESCOMP/CAM/issues/995 +#1094 - Wrap MPAS-A longitudes to [0,2pi) range: https://github.com/ESCOMP/CAM/issues/1094 + +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: adamrher, jtruesdal, cacraigucar, mgduda + +List all files eliminated: + +- mpasa120_L32_topo_coords_c201022.nc + +Eliminated, replaced by newer versions: +- mpasa480_L32_notopo_coords_c201125.nc +- mpasa120_L32_notopo_coords_c201216.nc +- mpasa60_L32_notopo_coords_c230707.nc +- mpasa30_L32_notopo_coords_c230707.nc +- mpasa120km.waccm_fulltopo_c220818.nc +- cami_01_01_2000_00Z_mpasa120_L32_CFSR_c210426.nc +- cami_01_01_2000_00Z_mpasa480_L32_CFSR_c211013.nc +- mpas_120_nc3000_Co060_Fi001_MulG_PF_Nsw042_c200921.nc +- mpas_480_nc3000_Co240_Fi001_MulG_PF_Nsw170.nc + +List all files added and what they do: + +New input 32, 58, and 93L without real-data (analytic-ICs only): +- mpasa480_L32_notopo_coords_c240507.nc +- mpasa120_L32_notopo_coords_c240507.nc +- mpasa60_L32_notopo_coords_c240507.nc +- mpasa30_L32_notopo_coords_c240507.nc +- mpasa480_L58_notopo_coords_c240814.nc +- mpasa120_L58_notopo_coords_c240814.nc +- mpasa60_L58_notopo_coords_c240814.nc +- mpasa480_L93_notopo_coords_c240814.nc +- mpasa120_L93_notopo_coords_c240814.nc +- mpasa60_L93_notopo_coords_c240814.nc + +New input L70 file for waccm cases: +- mpasa120_L70.waccm_topography_SC_c240904.nc + +New input data with topology and real-data ICs: +- cami_01-01-2000_00Z_mpasa480_L32_CFSR_c240508.nc +- cami_01-01-2000_00Z_mpasa120_L32_CFSR_c240508.nc +- cami_01-01-2000_00Z_mpasa480_L58_CFSR_c240814.nc +- cami_01-01-2000_00Z_mpasa120_L58_CFSR_c240814.nc +- cami_01-01-2000_00Z_mpasa480_L93_CFSR_c240814.nc +- cami_01-01-2000_00Z_mpasa120_L93_CFSR_c240814.nc + +New bnd_topo files: +- mpasa480_gmted2010_modis_bedmachine_nc3000_Laplace0400_noleak_20240507.nc +- mpasa120_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240507.nc + +List all existing files that have been modified, and describe the changes: +M bld/namelist_files/namelist_defaults_cam.xml + - Add new ncdata and bnd_topo files above so they can be used +M src/dynamics/mpas/dyn_grid.F90 + - Modifies setup_time_invariant to ensure lonCell values are in [0,2pi) range + +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: + + ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s (Overall: FAIL) + - pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856 + + SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s (Overall: PEND) + - pre-existing failure -- need fix in CLM external + + ERS_Ln9_P288x1.mpasa120_mpasa120.F2000climo.derecho_intel.cam-outfrq9s_mpasa120 (Overall: DIFF) + ERS_Ln9_P36x1.mpasa480_mpasa480.F2000climo.derecho_intel.cam-outfrq9s_mpasa480 (Overall: DIFF) + - expected fails of BASELINE and NLCOMP steps, new mpas input data + +derecho/nvhpc/aux_cam: ALL PASS + +izumi/nag/aux_cam: + + FAIL DAE.f45_f45_mg37.FHS94.izumi_nag.cam-dae + - pre-existing failure - issue #670 + + ERC_D_Ln9.mpasa480z32_mpasa480.FHS94.izumi_nag.cam-outfrq3s_usecase (Overall: DIFF) + - expected fails of BASELINE and NLCOMP steps, new mpas input data + +izumi/gnu/aux_cam: ALL PASS + +CAM tag used for the baseline comparison tests if different than previous +tag: + +Summarize any changes to answers, i.e., +- what code configurations: +- what platforms/compilers: +- nature of change (roundoff; larger than roundoff but same climate; new + climate): + +If bitwise differences were observed, how did you show they were no worse +than roundoff? + +If this tag changes climate describe the run(s) done to evaluate the new +climate in enough detail that it(they) could be reproduced, i.e., +- source tag (all code used must be in the repository): +- platform/compilers: +- configure commandline: +- build-namelist command (or complete namelist): +- MSS location of output: + +MSS location of control simulations used to validate new climate: + +URL for AMWG diagnostics output used to validate new climate: + +=============================================================== +=============================================================== + Tag name: cam6_4_032 Originator(s): eaton Date: diff --git a/src/dynamics/mpas/dyn_grid.F90 b/src/dynamics/mpas/dyn_grid.F90 index d0b53c5fa0..7efcc866dd 100644 --- a/src/dynamics/mpas/dyn_grid.F90 +++ b/src/dynamics/mpas/dyn_grid.F90 @@ -453,6 +453,8 @@ subroutine setup_time_invariant(fh_ini) type(mpas_pool_type), pointer :: meshPool real(r8), pointer :: rdzw(:) real(r8), allocatable :: dzw(:) + integer, pointer :: nCells + real(r8), dimension(:), pointer :: lonCell integer :: k, kk integer :: ierr @@ -473,6 +475,7 @@ subroutine setup_time_invariant(fh_ini) call mpas_pool_get_dimension(meshPool, 'nEdgesSolve', nEdgesSolve) call mpas_pool_get_dimension(meshPool, 'nVerticesSolve', nVerticesSolve) call mpas_pool_get_dimension(meshPool, 'nVertLevels', nVertLevelsSolve) ! MPAS always solves over the full column + call mpas_pool_get_dimension(meshPool, 'nCells', nCells) ! check that number of vertical layers matches MPAS grid data if (plev /= nVertLevelsSolve) then @@ -482,6 +485,17 @@ subroutine setup_time_invariant(fh_ini) ') does not match plev ('//int2str(nVertLevelsSolve)//').') end if + ! Ensure longitudes are within the [0,2*pi) range, and only remap values that + ! are outside the range. Some non-simple physics in CAM require this + ! longitude range, the MPAS-A dycore does not require any specific range for + ! lonCell + call mpas_pool_get_array(meshPool, 'lonCell', lonCell) + do k=1,nCells + if (lonCell(k) < 0._r8 .or. lonCell(k) >= (2._r8 * pi)) then + lonCell(k) = lonCell(k) - (2._r8 * pi) * floor(lonCell(k) / (2._r8 * pi)) + end if + end do + ! Initialize fields needed for reconstruction of cell-centered winds from edge-normal winds ! Note: This same pair of calls happens a second time later in the initialization of ! the MPAS-A dycore (in atm_mpas_init_block), but the redundant calls do no harm