From 9104a8ce966c08545857596e69530c8f52b260e0 Mon Sep 17 00:00:00 2001 From: Tony Craig Date: Fri, 18 Nov 2022 08:18:39 -0800 Subject: [PATCH] Rename cicedynB to cicedyn, update test suites (#790) * Rename cicedynB to cicedyn, update test suites - Rename cicedynB directory to cicedyn (See #660) - Add softlink for cicedynB - Update path in cice.build - Update documentation - Fix sig1, sig2, sigP grid on history file (See #789) - Fix Fortran warning messages for long lines - Fix test suite order in cice.setup - Update test suites to reduce bfbcomp failures due to time outs - Add tests to first_suite to help - Add dyneap and dynpicard decomp tests, add set_nml.dyneap - Add TAB check in github actions in all .F90 and .c files github actions will fail if source files have TABs * Remove tabs * Update documentation * Update documentation --- .github/workflows/test-cice.yml | 14 +++ cice.setup | 17 ++- .../analysis/ice_diagnostics.F90 | 0 .../analysis/ice_diagnostics_bgc.F90 | 0 .../analysis/ice_history.F90 | 12 +- .../analysis/ice_history_bgc.F90 | 0 .../analysis/ice_history_drag.F90 | 0 .../analysis/ice_history_fsd.F90 | 0 .../analysis/ice_history_mechred.F90 | 0 .../analysis/ice_history_pond.F90 | 0 .../analysis/ice_history_shared.F90 | 0 .../analysis/ice_history_snow.F90 | 0 .../dynamics/ice_dyn_eap.F90 | 0 .../dynamics/ice_dyn_evp.F90 | 0 .../dynamics/ice_dyn_evp_1d.F90 | 0 .../dynamics/ice_dyn_shared.F90 | 0 .../dynamics/ice_dyn_vp.F90 | 0 .../dynamics/ice_transport_driver.F90 | 0 .../dynamics/ice_transport_remap.F90 | 0 .../general/ice_flux.F90 | 0 .../general/ice_flux_bgc.F90 | 0 .../general/ice_forcing.F90 | 4 +- .../general/ice_forcing_bgc.F90 | 0 .../general/ice_init.F90 | 9 +- .../general/ice_state.F90 | 0 .../general/ice_step_mod.F90 | 0 .../infrastructure/comm/mpi/ice_boundary.F90 | 3 - .../infrastructure/comm/mpi/ice_broadcast.F90 | 0 .../comm/mpi/ice_communicate.F90 | 0 .../infrastructure/comm/mpi/ice_exit.F90 | 0 .../comm/mpi/ice_gather_scatter.F90 | 0 .../comm/mpi/ice_global_reductions.F90 | 0 .../infrastructure/comm/mpi/ice_reprosum.F90 | 0 .../infrastructure/comm/mpi/ice_timers.F90 | 0 .../comm/serial/ice_boundary.F90 | 3 - .../comm/serial/ice_broadcast.F90 | 0 .../comm/serial/ice_communicate.F90 | 0 .../infrastructure/comm/serial/ice_exit.F90 | 0 .../comm/serial/ice_gather_scatter.F90 | 0 .../comm/serial/ice_global_reductions.F90 | 0 .../comm/serial/ice_reprosum.F90 | 0 .../infrastructure/comm/serial/ice_timers.F90 | 0 .../infrastructure/ice_blocks.F90 | 0 .../infrastructure/ice_domain.F90 | 0 .../infrastructure/ice_grid.F90 | 0 .../infrastructure/ice_memusage.F90 | 0 .../infrastructure/ice_memusage_gptl.c | 2 +- .../infrastructure/ice_read_write.F90 | 0 .../infrastructure/ice_restart_driver.F90 | 0 .../infrastructure/ice_restoring.F90 | 0 .../infrastructure/ice_shr_reprosum86.c | 0 .../io/io_binary/ice_history_write.F90 | 0 .../io/io_binary/ice_restart.F90 | 0 .../io/io_netcdf/ice_history_write.F90 | 0 .../io/io_netcdf/ice_restart.F90 | 0 .../io/io_pio2/ice_history_write.F90 | 0 .../infrastructure/io/io_pio2/ice_pio.F90 | 0 .../infrastructure/io/io_pio2/ice_restart.F90 | 0 cicecore/cicedynB | 1 + configuration/scripts/cice.build | 12 +- configuration/scripts/options/set_nml.dyneap | 1 - configuration/scripts/tests/decomp_suite.ts | 2 + configuration/scripts/tests/first_suite.ts | 6 + configuration/scripts/tests/gridsys_suite.ts | 13 ++- configuration/scripts/tests/omp_suite.ts | 108 ++++++++++-------- doc/source/developer_guide/dg_dynamics.rst | 22 ++-- doc/source/developer_guide/dg_forcing.rst | 2 +- doc/source/user_guide/ug_case_settings.rst | 14 +-- doc/source/user_guide/ug_implementation.rst | 2 +- doc/source/user_guide/ug_testing.rst | 83 ++++++++++---- doc/source/user_guide/ug_troubleshooting.rst | 20 ++++ 71 files changed, 231 insertions(+), 119 deletions(-) rename cicecore/{cicedynB => cicedyn}/analysis/ice_diagnostics.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_diagnostics_bgc.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history.F90 (99%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history_bgc.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history_drag.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history_fsd.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history_mechred.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history_pond.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history_shared.F90 (100%) rename cicecore/{cicedynB => cicedyn}/analysis/ice_history_snow.F90 (100%) rename cicecore/{cicedynB => cicedyn}/dynamics/ice_dyn_eap.F90 (100%) rename cicecore/{cicedynB => cicedyn}/dynamics/ice_dyn_evp.F90 (100%) rename cicecore/{cicedynB => cicedyn}/dynamics/ice_dyn_evp_1d.F90 (100%) rename cicecore/{cicedynB => cicedyn}/dynamics/ice_dyn_shared.F90 (100%) rename cicecore/{cicedynB => cicedyn}/dynamics/ice_dyn_vp.F90 (100%) rename cicecore/{cicedynB => cicedyn}/dynamics/ice_transport_driver.F90 (100%) rename cicecore/{cicedynB => cicedyn}/dynamics/ice_transport_remap.F90 (100%) rename cicecore/{cicedynB => cicedyn}/general/ice_flux.F90 (100%) rename cicecore/{cicedynB => cicedyn}/general/ice_flux_bgc.F90 (100%) rename cicecore/{cicedynB => cicedyn}/general/ice_forcing.F90 (99%) rename cicecore/{cicedynB => cicedyn}/general/ice_forcing_bgc.F90 (100%) rename cicecore/{cicedynB => cicedyn}/general/ice_init.F90 (99%) rename cicecore/{cicedynB => cicedyn}/general/ice_state.F90 (100%) rename cicecore/{cicedynB => cicedyn}/general/ice_step_mod.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_boundary.F90 (99%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_broadcast.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_communicate.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_exit.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_gather_scatter.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_global_reductions.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_reprosum.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/mpi/ice_timers.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_boundary.F90 (99%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_broadcast.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_communicate.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_exit.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_gather_scatter.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_global_reductions.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_reprosum.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/comm/serial/ice_timers.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_blocks.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_domain.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_grid.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_memusage.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_memusage_gptl.c (98%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_read_write.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_restart_driver.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_restoring.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/ice_shr_reprosum86.c (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/io/io_binary/ice_history_write.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/io/io_binary/ice_restart.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/io/io_netcdf/ice_history_write.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/io/io_netcdf/ice_restart.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/io/io_pio2/ice_history_write.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/io/io_pio2/ice_pio.F90 (100%) rename cicecore/{cicedynB => cicedyn}/infrastructure/io/io_pio2/ice_restart.F90 (100%) create mode 120000 cicecore/cicedynB diff --git a/.github/workflows/test-cice.yml b/.github/workflows/test-cice.yml index c60a07721..70fdc4c14 100644 --- a/.github/workflows/test-cice.yml +++ b/.github/workflows/test-cice.yml @@ -74,6 +74,20 @@ jobs: ln -s ${GITHUB_WORKSPACE}/../CICE ${HOME}/cice # ls -al ${HOME}/ # ls -al ${GITHUB_WORKSPACE}/ + - name: check for tabs + run: | + cd $HOME/cice/cicecore + set cnt = 0 + set ffiles = `find -P . -iname "*.f*"` + set cfiles = `find -P . -iname "*.c*"` + foreach file ($ffiles $cfiles) + set fcnt = `sed -n '/\t/p' $file | wc -l` + @ cnt = $cnt + $fcnt + if ($fcnt > 0) then + echo "TAB found: $fcnt $file" + endif + end + exit $cnt - name: setup conda env shell: /bin/bash {0} run: | diff --git a/cice.setup b/cice.setup index 586fe3464..30da0ed2e 100755 --- a/cice.setup +++ b/cice.setup @@ -455,7 +455,22 @@ if ( ${dosuite} == 0 ) then set sets = "" else - set tarrays = `echo ${testsuite} | sed 's/,/ /g' | fmt -1 | sort -u` + # generate unique set of suites in tarrays in order they are set + set tarrays0 = `echo ${testsuite} | sed 's/,/ /g' | fmt -1 ` + #echo "${0}: tarrays0 = ${tarrays0}" + set tarrays = $tarrays0[1] + foreach t1 ( ${tarrays0} ) + set found = 0 + foreach t2 ( ${tarrays} ) + if ( ${t1} == ${t2} ) then + set found = 1 + endif + end + if ( ${found} == 0 ) then + set tarrays = ( ${tarrays} ${t1} ) + endif + end + #echo "${0}: tarrays = ${tarrays}" set testsuitecnt = 0 foreach tarray ( ${tarrays} ) @ testsuitecnt = ${testsuitecnt} + 1 diff --git a/cicecore/cicedynB/analysis/ice_diagnostics.F90 b/cicecore/cicedyn/analysis/ice_diagnostics.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_diagnostics.F90 rename to cicecore/cicedyn/analysis/ice_diagnostics.F90 diff --git a/cicecore/cicedynB/analysis/ice_diagnostics_bgc.F90 b/cicecore/cicedyn/analysis/ice_diagnostics_bgc.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_diagnostics_bgc.F90 rename to cicecore/cicedyn/analysis/ice_diagnostics_bgc.F90 diff --git a/cicecore/cicedynB/analysis/ice_history.F90 b/cicecore/cicedyn/analysis/ice_history.F90 similarity index 99% rename from cicecore/cicedynB/analysis/ice_history.F90 rename to cicecore/cicedyn/analysis/ice_history.F90 index f5e7d0d16..2142310b9 100644 --- a/cicecore/cicedynB/analysis/ice_history.F90 +++ b/cicecore/cicedyn/analysis/ice_history.F90 @@ -102,6 +102,8 @@ subroutine init_hist (dt) character (len=25) :: & cstr_gat, cstr_gau, cstr_gav, & ! mask area name for t, u, v atm grid (ga) cstr_got, cstr_gou, cstr_gov ! mask area name for t, u, v ocn grid (go) + character (len=25) :: & + gridstr2D, gridstr ! temporary string names character(len=char_len) :: description character(len=*), parameter :: subname = '(init_hist)' @@ -1307,21 +1309,25 @@ subroutine init_hist (dt) select case (grid_ice) case('B') description = ", on U grid (NE corner values)" + gridstr2d = trim(ustr2D) + gridstr = trim(ucstr) case ('CD','C') description = ", on T grid" + gridstr2d = trim(tstr2D) + gridstr = trim(tcstr) end select - call define_hist_field(n_sig1,"sig1","1",ustr2D, ucstr, & + call define_hist_field(n_sig1,"sig1","1",gridstr2d, gridstr, & "norm. principal stress 1", & "sig1 is instantaneous" // trim(description), c1, c0, & ns1, f_sig1) - call define_hist_field(n_sig2,"sig2","1",ustr2D, ucstr, & + call define_hist_field(n_sig2,"sig2","1",gridstr2d, gridstr, & "norm. principal stress 2", & "sig2 is instantaneous" // trim(description), c1, c0, & ns1, f_sig2) - call define_hist_field(n_sigP,"sigP","1",ustr2D, ucstr, & + call define_hist_field(n_sigP,"sigP","1",gridstr2d, gridstr, & "ice pressure", & "sigP is instantaneous" // trim(description), c1, c0, & ns1, f_sigP) diff --git a/cicecore/cicedynB/analysis/ice_history_bgc.F90 b/cicecore/cicedyn/analysis/ice_history_bgc.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_history_bgc.F90 rename to cicecore/cicedyn/analysis/ice_history_bgc.F90 diff --git a/cicecore/cicedynB/analysis/ice_history_drag.F90 b/cicecore/cicedyn/analysis/ice_history_drag.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_history_drag.F90 rename to cicecore/cicedyn/analysis/ice_history_drag.F90 diff --git a/cicecore/cicedynB/analysis/ice_history_fsd.F90 b/cicecore/cicedyn/analysis/ice_history_fsd.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_history_fsd.F90 rename to cicecore/cicedyn/analysis/ice_history_fsd.F90 diff --git a/cicecore/cicedynB/analysis/ice_history_mechred.F90 b/cicecore/cicedyn/analysis/ice_history_mechred.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_history_mechred.F90 rename to cicecore/cicedyn/analysis/ice_history_mechred.F90 diff --git a/cicecore/cicedynB/analysis/ice_history_pond.F90 b/cicecore/cicedyn/analysis/ice_history_pond.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_history_pond.F90 rename to cicecore/cicedyn/analysis/ice_history_pond.F90 diff --git a/cicecore/cicedynB/analysis/ice_history_shared.F90 b/cicecore/cicedyn/analysis/ice_history_shared.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_history_shared.F90 rename to cicecore/cicedyn/analysis/ice_history_shared.F90 diff --git a/cicecore/cicedynB/analysis/ice_history_snow.F90 b/cicecore/cicedyn/analysis/ice_history_snow.F90 similarity index 100% rename from cicecore/cicedynB/analysis/ice_history_snow.F90 rename to cicecore/cicedyn/analysis/ice_history_snow.F90 diff --git a/cicecore/cicedynB/dynamics/ice_dyn_eap.F90 b/cicecore/cicedyn/dynamics/ice_dyn_eap.F90 similarity index 100% rename from cicecore/cicedynB/dynamics/ice_dyn_eap.F90 rename to cicecore/cicedyn/dynamics/ice_dyn_eap.F90 diff --git a/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 b/cicecore/cicedyn/dynamics/ice_dyn_evp.F90 similarity index 100% rename from cicecore/cicedynB/dynamics/ice_dyn_evp.F90 rename to cicecore/cicedyn/dynamics/ice_dyn_evp.F90 diff --git a/cicecore/cicedynB/dynamics/ice_dyn_evp_1d.F90 b/cicecore/cicedyn/dynamics/ice_dyn_evp_1d.F90 similarity index 100% rename from cicecore/cicedynB/dynamics/ice_dyn_evp_1d.F90 rename to cicecore/cicedyn/dynamics/ice_dyn_evp_1d.F90 diff --git a/cicecore/cicedynB/dynamics/ice_dyn_shared.F90 b/cicecore/cicedyn/dynamics/ice_dyn_shared.F90 similarity index 100% rename from cicecore/cicedynB/dynamics/ice_dyn_shared.F90 rename to cicecore/cicedyn/dynamics/ice_dyn_shared.F90 diff --git a/cicecore/cicedynB/dynamics/ice_dyn_vp.F90 b/cicecore/cicedyn/dynamics/ice_dyn_vp.F90 similarity index 100% rename from cicecore/cicedynB/dynamics/ice_dyn_vp.F90 rename to cicecore/cicedyn/dynamics/ice_dyn_vp.F90 diff --git a/cicecore/cicedynB/dynamics/ice_transport_driver.F90 b/cicecore/cicedyn/dynamics/ice_transport_driver.F90 similarity index 100% rename from cicecore/cicedynB/dynamics/ice_transport_driver.F90 rename to cicecore/cicedyn/dynamics/ice_transport_driver.F90 diff --git a/cicecore/cicedynB/dynamics/ice_transport_remap.F90 b/cicecore/cicedyn/dynamics/ice_transport_remap.F90 similarity index 100% rename from cicecore/cicedynB/dynamics/ice_transport_remap.F90 rename to cicecore/cicedyn/dynamics/ice_transport_remap.F90 diff --git a/cicecore/cicedynB/general/ice_flux.F90 b/cicecore/cicedyn/general/ice_flux.F90 similarity index 100% rename from cicecore/cicedynB/general/ice_flux.F90 rename to cicecore/cicedyn/general/ice_flux.F90 diff --git a/cicecore/cicedynB/general/ice_flux_bgc.F90 b/cicecore/cicedyn/general/ice_flux_bgc.F90 similarity index 100% rename from cicecore/cicedynB/general/ice_flux_bgc.F90 rename to cicecore/cicedyn/general/ice_flux_bgc.F90 diff --git a/cicecore/cicedynB/general/ice_forcing.F90 b/cicecore/cicedyn/general/ice_forcing.F90 similarity index 99% rename from cicecore/cicedynB/general/ice_forcing.F90 rename to cicecore/cicedyn/general/ice_forcing.F90 index ff79778c5..3a2d83530 100755 --- a/cicecore/cicedynB/general/ice_forcing.F90 +++ b/cicecore/cicedyn/general/ice_forcing.F90 @@ -5684,7 +5684,7 @@ subroutine wave_spec_data integer (kind=int_kind) :: & ncid , & ! netcdf file id - i, j, freq , & + i, j, freq , & ixm,ixx,ixp , & ! record numbers for neighboring months recnum , & ! record number maxrec , & ! maximum record number @@ -5785,7 +5785,7 @@ subroutine wave_spec_data call ice_read_nc_xyf(ncid,recnum,'efreq',wave_spectrum_data(:,:,:,2,:),debug_n_d, & field_loc=field_loc_center, & field_type=field_type_scalar) - call ice_close_nc(ncid) + call ice_close_nc(ncid) ! Interpolate diff --git a/cicecore/cicedynB/general/ice_forcing_bgc.F90 b/cicecore/cicedyn/general/ice_forcing_bgc.F90 similarity index 100% rename from cicecore/cicedynB/general/ice_forcing_bgc.F90 rename to cicecore/cicedyn/general/ice_forcing_bgc.F90 diff --git a/cicecore/cicedynB/general/ice_init.F90 b/cicecore/cicedyn/general/ice_init.F90 similarity index 99% rename from cicecore/cicedynB/general/ice_init.F90 rename to cicecore/cicedyn/general/ice_init.F90 index 45ae58d8b..2bfe0d8e5 100644 --- a/cicecore/cicedynB/general/ice_init.F90 +++ b/cicecore/cicedyn/general/ice_init.F90 @@ -2027,11 +2027,14 @@ subroutine input_data if (trim(wave_spec_type) == 'none') then tmpstr2 = ' : no wave data provided, no wave-ice interactions' elseif (trim(wave_spec_type) == 'profile') then - tmpstr2 = ' : use fixed dummy wave spectrum for testing, sea surface height generated using constant phase (1 iteration of wave fracture)' + tmpstr2 = ' : use fixed dummy wave spectrum for testing, sea surface height generated '// & + 'using constant phase (1 iteration of wave fracture)' elseif (trim(wave_spec_type) == 'constant') then - tmpstr2 = ' : wave spectrum data file provided, sea surface height generated using constant phase (1 iteration of wave fracture)' + tmpstr2 = ' : wave spectrum data file provided, sea surface height generated '// & + 'using constant phase (1 iteration of wave fracture)' elseif (trim(wave_spec_type) == 'random') then - tmpstr2 = ' : wave spectrum data file provided, sea surface height generated using random number (multiple iterations of wave fracture to convergence)' + tmpstr2 = ' : wave spectrum data file provided, sea surface height generated using '// & + 'random number (multiple iterations of wave fracture to convergence)' else tmpstr2 = ' : unknown value' endif diff --git a/cicecore/cicedynB/general/ice_state.F90 b/cicecore/cicedyn/general/ice_state.F90 similarity index 100% rename from cicecore/cicedynB/general/ice_state.F90 rename to cicecore/cicedyn/general/ice_state.F90 diff --git a/cicecore/cicedynB/general/ice_step_mod.F90 b/cicecore/cicedyn/general/ice_step_mod.F90 similarity index 100% rename from cicecore/cicedynB/general/ice_step_mod.F90 rename to cicecore/cicedyn/general/ice_step_mod.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_boundary.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_boundary.F90 similarity index 99% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_boundary.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_boundary.F90 index 9fda67dad..68436cd0f 100644 --- a/cicecore/cicedynB/infrastructure/comm/mpi/ice_boundary.F90 +++ b/cicecore/cicedyn/infrastructure/comm/mpi/ice_boundary.F90 @@ -6915,9 +6915,6 @@ subroutine primary_grid_lengths_global_ext( & ! This subroutine adds ghost cells to global primary grid lengths array ! ARRAY_I and outputs result to array ARRAY_O -! Note duplicate implementation of this subroutine in: -! cicecore/cicedynB/infrastructure/comm/serial/ice_boundary.F90 - use ice_constants, only: c0 use ice_domain_size, only: nx_global, ny_global diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_broadcast.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_broadcast.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_broadcast.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_broadcast.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_communicate.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_communicate.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_communicate.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_communicate.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_exit.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_exit.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_exit.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_exit.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_gather_scatter.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_gather_scatter.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_gather_scatter.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_gather_scatter.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_global_reductions.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_global_reductions.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_global_reductions.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_global_reductions.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_reprosum.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_reprosum.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_reprosum.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_reprosum.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/mpi/ice_timers.F90 b/cicecore/cicedyn/infrastructure/comm/mpi/ice_timers.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/mpi/ice_timers.F90 rename to cicecore/cicedyn/infrastructure/comm/mpi/ice_timers.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_boundary.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_boundary.F90 similarity index 99% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_boundary.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_boundary.F90 index f10a9f432..2b81c4441 100644 --- a/cicecore/cicedynB/infrastructure/comm/serial/ice_boundary.F90 +++ b/cicecore/cicedyn/infrastructure/comm/serial/ice_boundary.F90 @@ -4686,9 +4686,6 @@ subroutine primary_grid_lengths_global_ext( & ! This subroutine adds ghost cells to global primary grid lengths array ! ARRAY_I and outputs result to array ARRAY_O -! Note duplicate implementation of this subroutine in: -! cicecore/cicedynB/infrastructure/comm/mpi/ice_boundary.F90 - use ice_constants, only: c0 use ice_domain_size, only: nx_global, ny_global diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_broadcast.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_broadcast.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_broadcast.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_broadcast.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_communicate.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_communicate.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_communicate.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_communicate.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_exit.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_exit.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_exit.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_exit.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_gather_scatter.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_gather_scatter.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_gather_scatter.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_gather_scatter.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_global_reductions.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_global_reductions.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_global_reductions.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_global_reductions.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_reprosum.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_reprosum.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_reprosum.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_reprosum.F90 diff --git a/cicecore/cicedynB/infrastructure/comm/serial/ice_timers.F90 b/cicecore/cicedyn/infrastructure/comm/serial/ice_timers.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/comm/serial/ice_timers.F90 rename to cicecore/cicedyn/infrastructure/comm/serial/ice_timers.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_blocks.F90 b/cicecore/cicedyn/infrastructure/ice_blocks.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_blocks.F90 rename to cicecore/cicedyn/infrastructure/ice_blocks.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_domain.F90 b/cicecore/cicedyn/infrastructure/ice_domain.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_domain.F90 rename to cicecore/cicedyn/infrastructure/ice_domain.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_grid.F90 b/cicecore/cicedyn/infrastructure/ice_grid.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_grid.F90 rename to cicecore/cicedyn/infrastructure/ice_grid.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_memusage.F90 b/cicecore/cicedyn/infrastructure/ice_memusage.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_memusage.F90 rename to cicecore/cicedyn/infrastructure/ice_memusage.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_memusage_gptl.c b/cicecore/cicedyn/infrastructure/ice_memusage_gptl.c similarity index 98% rename from cicecore/cicedynB/infrastructure/ice_memusage_gptl.c rename to cicecore/cicedyn/infrastructure/ice_memusage_gptl.c index 309c8824b..32b31171d 100644 --- a/cicecore/cicedynB/infrastructure/ice_memusage_gptl.c +++ b/cicecore/cicedyn/infrastructure/ice_memusage_gptl.c @@ -196,7 +196,7 @@ int ice_memusage_gptl (int *size, int *rss, int *share, int *text, int *datastac */ ret = fscanf (fd, "%d %d %d %d %d %d %d", - size, rss, share, text, datastack, &dum, &dum); + size, rss, share, text, datastack, &dum, &dum); ret = fclose (fd); return 0; diff --git a/cicecore/cicedynB/infrastructure/ice_read_write.F90 b/cicecore/cicedyn/infrastructure/ice_read_write.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_read_write.F90 rename to cicecore/cicedyn/infrastructure/ice_read_write.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_restart_driver.F90 b/cicecore/cicedyn/infrastructure/ice_restart_driver.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_restart_driver.F90 rename to cicecore/cicedyn/infrastructure/ice_restart_driver.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_restoring.F90 b/cicecore/cicedyn/infrastructure/ice_restoring.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_restoring.F90 rename to cicecore/cicedyn/infrastructure/ice_restoring.F90 diff --git a/cicecore/cicedynB/infrastructure/ice_shr_reprosum86.c b/cicecore/cicedyn/infrastructure/ice_shr_reprosum86.c similarity index 100% rename from cicecore/cicedynB/infrastructure/ice_shr_reprosum86.c rename to cicecore/cicedyn/infrastructure/ice_shr_reprosum86.c diff --git a/cicecore/cicedynB/infrastructure/io/io_binary/ice_history_write.F90 b/cicecore/cicedyn/infrastructure/io/io_binary/ice_history_write.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/io/io_binary/ice_history_write.F90 rename to cicecore/cicedyn/infrastructure/io/io_binary/ice_history_write.F90 diff --git a/cicecore/cicedynB/infrastructure/io/io_binary/ice_restart.F90 b/cicecore/cicedyn/infrastructure/io/io_binary/ice_restart.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/io/io_binary/ice_restart.F90 rename to cicecore/cicedyn/infrastructure/io/io_binary/ice_restart.F90 diff --git a/cicecore/cicedynB/infrastructure/io/io_netcdf/ice_history_write.F90 b/cicecore/cicedyn/infrastructure/io/io_netcdf/ice_history_write.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/io/io_netcdf/ice_history_write.F90 rename to cicecore/cicedyn/infrastructure/io/io_netcdf/ice_history_write.F90 diff --git a/cicecore/cicedynB/infrastructure/io/io_netcdf/ice_restart.F90 b/cicecore/cicedyn/infrastructure/io/io_netcdf/ice_restart.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/io/io_netcdf/ice_restart.F90 rename to cicecore/cicedyn/infrastructure/io/io_netcdf/ice_restart.F90 diff --git a/cicecore/cicedynB/infrastructure/io/io_pio2/ice_history_write.F90 b/cicecore/cicedyn/infrastructure/io/io_pio2/ice_history_write.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/io/io_pio2/ice_history_write.F90 rename to cicecore/cicedyn/infrastructure/io/io_pio2/ice_history_write.F90 diff --git a/cicecore/cicedynB/infrastructure/io/io_pio2/ice_pio.F90 b/cicecore/cicedyn/infrastructure/io/io_pio2/ice_pio.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/io/io_pio2/ice_pio.F90 rename to cicecore/cicedyn/infrastructure/io/io_pio2/ice_pio.F90 diff --git a/cicecore/cicedynB/infrastructure/io/io_pio2/ice_restart.F90 b/cicecore/cicedyn/infrastructure/io/io_pio2/ice_restart.F90 similarity index 100% rename from cicecore/cicedynB/infrastructure/io/io_pio2/ice_restart.F90 rename to cicecore/cicedyn/infrastructure/io/io_pio2/ice_restart.F90 diff --git a/cicecore/cicedynB b/cicecore/cicedynB new file mode 120000 index 000000000..70695ca4b --- /dev/null +++ b/cicecore/cicedynB @@ -0,0 +1 @@ +cicedyn \ No newline at end of file diff --git a/configuration/scripts/cice.build b/configuration/scripts/cice.build index d75d74253..66b7b1321 100755 --- a/configuration/scripts/cice.build +++ b/configuration/scripts/cice.build @@ -128,12 +128,12 @@ endif ### List of source code directories (in order of importance). cat >! Filepath << EOF ${ICE_SANDBOX}/cicecore/drivers/${ICE_DRVOPT} -${ICE_SANDBOX}/cicecore/cicedynB/dynamics -${ICE_SANDBOX}/cicecore/cicedynB/general -${ICE_SANDBOX}/cicecore/cicedynB/analysis -${ICE_SANDBOX}/cicecore/cicedynB/infrastructure -${ICE_SANDBOX}/cicecore/cicedynB/infrastructure/io/$IODIR -${ICE_SANDBOX}/cicecore/cicedynB/infrastructure/comm/${ICE_COMMDIR} +${ICE_SANDBOX}/cicecore/cicedyn/dynamics +${ICE_SANDBOX}/cicecore/cicedyn/general +${ICE_SANDBOX}/cicecore/cicedyn/analysis +${ICE_SANDBOX}/cicecore/cicedyn/infrastructure +${ICE_SANDBOX}/cicecore/cicedyn/infrastructure/io/$IODIR +${ICE_SANDBOX}/cicecore/cicedyn/infrastructure/comm/${ICE_COMMDIR} ${ICE_SANDBOX}/cicecore/shared ${ICE_SANDBOX}/icepack/columnphysics EOF diff --git a/configuration/scripts/options/set_nml.dyneap b/configuration/scripts/options/set_nml.dyneap index 0a5140ac7..6ebab625e 100644 --- a/configuration/scripts/options/set_nml.dyneap +++ b/configuration/scripts/options/set_nml.dyneap @@ -1,2 +1 @@ kdyn = 2 - diff --git a/configuration/scripts/tests/decomp_suite.ts b/configuration/scripts/tests/decomp_suite.ts index c39c3ddfe..8d47506d6 100644 --- a/configuration/scripts/tests/decomp_suite.ts +++ b/configuration/scripts/tests/decomp_suite.ts @@ -3,6 +3,8 @@ restart gx3 4x2x25x29x4 dslenderX2 restart gx1 64x1x16x16x10 dwghtfile restart gbox180 16x1x6x6x60 dspacecurve,debugblocks decomp gx3 4x2x25x29x5 none +decomp gx3 4x2x25x29x5 dynpicard,reprosum +decomp gx3 4x2x25x29x5 dyneap restart gx3 1x1x50x58x4 droundrobin,thread restart_gx3_4x2x25x29x4_dslenderX2 restart gx3 4x1x25x116x1 dslenderX1,thread restart_gx3_4x2x25x29x4_dslenderX2 restart gx3 6x2x4x29x18 dspacecurve restart_gx3_4x2x25x29x4_dslenderX2 diff --git a/configuration/scripts/tests/first_suite.ts b/configuration/scripts/tests/first_suite.ts index b42d917ea..d9db20f6d 100644 --- a/configuration/scripts/tests/first_suite.ts +++ b/configuration/scripts/tests/first_suite.ts @@ -4,3 +4,9 @@ restart gx3 4x2x25x29x4 dslenderX2 smoke gx3 4x2x25x29x4 debug,run2day,dslenderX2 smoke gx3 4x2x25x29x4 dslenderX2,diag1,reprosum,cmplog smoke gx3 1x2 run2day +smoke gx3 1x1x100x116x1 reprosum,run10day +smoke gx1 32x1x16x16x32 reprosum,run10day +smoke gx3 1x1x100x116x1 reprosum,run10day,gridcd +smoke gx1 32x1x16x16x32 reprosum,run10day,gridcd +smoke gx3 1x1x100x116x1 reprosum,run10day,gridc +smoke gx1 32x1x16x16x32 reprosum,run10day,gridc diff --git a/configuration/scripts/tests/gridsys_suite.ts b/configuration/scripts/tests/gridsys_suite.ts index d9752073f..faf01344a 100644 --- a/configuration/scripts/tests/gridsys_suite.ts +++ b/configuration/scripts/tests/gridsys_suite.ts @@ -1,4 +1,11 @@ # Test Grid PEs Sets BFB-compare +smoke gx3 1x1x100x116x1 reprosum,run10day +smoke gx1 32x1x16x16x32 reprosum,run10day +smoke gx3 1x1x100x116x1 reprosum,run10day,gridcd +smoke gx1 32x1x16x16x32 reprosum,run10day,gridcd +smoke gx3 1x1x100x116x1 reprosum,run10day,gridc +smoke gx1 32x1x16x16x32 reprosum,run10day,gridc + smoke gx3 8x2 diag1,run5day smoke gx3 8x4 diag1,run5day,debug restart gx3 4x2 debug,diag1 @@ -12,11 +19,9 @@ smoke gbox80 4x2 boxclosed,boxforcee,run1day smoke gbox80 4x1 boxclosed,boxforcene,run1day,kmtislands smoke gbox80 4x2 boxopen,kmtislands,boxforcee,run1day smoke gbox80 2x2 boxclosed,boxforcen,run1day,vargrid -smoke gx3 1x1x100x116x1 reprosum,run10day smoke gx3 1x1x25x29x16 reprosum,run10day,dwblockall smoke_gx3_1x1x100x116x1_reprosum_run10day smoke gx3 1x1x5x4x580 reprosum,run10day,dwblockall smoke_gx3_1x1x100x116x1_reprosum_run10day smoke gx3 1x1x5x4x580 reprosum,run10day smoke_gx3_1x1x100x116x1_reprosum_run10day -smoke gx1 32x1x16x16x32 reprosum,run10day smoke gx1 32x1x16x16x32 reprosum,run10day,cmplogrest,dwblockall smoke_gx1_32x1x16x16x32_reprosum_run10day smoke gx1 32x1x16x12x40 reprosum,run10day,cmplogrest,dwblockall smoke_gx1_32x1x16x16x32_reprosum_run10day smoke gx1 32x1x16x12x40 reprosum,run10day,cmplogrest smoke_gx1_32x1x16x16x32_reprosum_run10day @@ -34,11 +39,9 @@ smoke gbox80 4x2 boxclosed,boxforcee,run1day,gridcd smoke gbox80 4x1 boxclosed,boxforcene,run1day,kmtislands,gridcd smoke gbox80 4x2 boxopen,kmtislands,boxforcee,run1day,gridcd smoke gbox80 2x2 boxclosed,boxforcen,run1day,vargrid,gridcd -smoke gx3 1x1x100x116x1 reprosum,run10day,gridcd smoke gx3 1x1x25x29x16 reprosum,run10day,dwblockall,gridcd smoke_gx3_1x1x100x116x1_gridcd_reprosum_run10day smoke gx3 1x1x5x4x580 reprosum,run10day,dwblockall,gridcd smoke_gx3_1x1x100x116x1_gridcd_reprosum_run10day smoke gx3 1x1x5x4x580 reprosum,run10day,gridcd smoke_gx3_1x1x100x116x1_gridcd_reprosum_run10day -smoke gx1 32x1x16x16x32 reprosum,run10day,gridcd smoke gx1 32x1x16x16x32 reprosum,run10day,cmplogrest,dwblockall,gridcd smoke_gx1_32x1x16x16x32_gridcd_reprosum_run10day smoke gx1 32x1x16x12x40 reprosum,run10day,cmplogrest,dwblockall,gridcd smoke_gx1_32x1x16x16x32_gridcd_reprosum_run10day smoke gx1 32x1x16x12x40 reprosum,run10day,cmplogrest,gridcd smoke_gx1_32x1x16x16x32_gridcd_reprosum_run10day @@ -56,11 +59,9 @@ smoke gbox80 4x2 boxclosed,boxforcee,run1day,gridc smoke gbox80 4x1 boxclosed,boxforcene,run1day,kmtislands,gridc smoke gbox80 4x2 boxopen,kmtislands,boxforcee,run1day,gridc smoke gbox80 2x2 boxclosed,boxforcen,run1day,vargrid,gridc -smoke gx3 1x1x100x116x1 reprosum,run10day,gridc smoke gx3 1x1x25x29x16 reprosum,run10day,dwblockall,gridc smoke_gx3_1x1x100x116x1_gridc_reprosum_run10day smoke gx3 1x1x5x4x580 reprosum,run10day,dwblockall,gridc smoke_gx3_1x1x100x116x1_gridc_reprosum_run10day smoke gx3 1x1x5x4x580 reprosum,run10day,gridc smoke_gx3_1x1x100x116x1_gridc_reprosum_run10day -smoke gx1 32x1x16x16x32 reprosum,run10day,gridc smoke gx1 32x1x16x16x32 reprosum,run10day,cmplogrest,dwblockall,gridc smoke_gx1_32x1x16x16x32_gridc_reprosum_run10day smoke gx1 32x1x16x12x40 reprosum,run10day,cmplogrest,dwblockall,gridc smoke_gx1_32x1x16x16x32_gridc_reprosum_run10day smoke gx1 32x1x16x12x40 reprosum,run10day,cmplogrest,gridc smoke_gx1_32x1x16x16x32_gridc_reprosum_run10day diff --git a/configuration/scripts/tests/omp_suite.ts b/configuration/scripts/tests/omp_suite.ts index 686fa72db..c9bbae0a2 100644 --- a/configuration/scripts/tests/omp_suite.ts +++ b/configuration/scripts/tests/omp_suite.ts @@ -1,5 +1,7 @@ # Test Grid PEs Sets BFB-compare +#gridB + smoke gx3 8x4 diag1,reprosum,run10day smoke gx3 6x2 alt01,reprosum,run10day smoke gx3 8x2 alt02,reprosum,run10day @@ -25,6 +27,62 @@ smoke gbox128 14x2 boxrestore,reprosum,run10day smoke gbox80 4x5 box2001,reprosum,run10day smoke gbox80 11x3 boxslotcyl,reprosum,run10day +#gridC + +smoke gx3 8x4 diag1,reprosum,run10day,gridc +smoke gx3 6x2 alt01,reprosum,run10day,gridc +smoke gx3 8x2 alt02,reprosum,run10day,gridc +#smoke gx3 12x2 alt03,droundrobin,reprosum,run10day,gridc +smoke gx3 4x4 alt04,reprosum,run10day,gridc +smoke gx3 4x4 alt05,reprosum,run10day,gridc +smoke gx3 8x2 alt06,reprosum,run10day,gridc +smoke gx3 7x2 alt07,reprosum,run10day,gridc +smoke gx3 8x2 bgczm,reprosum,run10day,gridc +smoke gx1 15x2 reprosum,run10day,gridc +smoke gx1 15x2 seabedprob,reprosum,run10day,gridc +smoke gx3 14x2 fsd12,reprosum,run10day,gridc +smoke gx3 11x2 isotope,reprosum,run10day,gridc +smoke gx3 8x4 snwitdrdg,snwgrain,icdefault,reprosum,run10day,gridc +#smoke gx3 6x4 dynpicard,reprosum,run10day,gridc +smoke gx3 8x3 zsal,reprosum,run10day,gridc +smoke gx3 1x1x100x116x1 reprosum,run10day,gridc,thread + +smoke gbox128 8x2 reprosum,run10day,gridc +smoke gbox128 12x2 boxnodyn,reprosum,run10day,gridc +#smoke gbox128 9x2 boxadv,reprosum,run10day,gridc +smoke gbox128 14x2 boxrestore,reprosum,run10day,gridc +smoke gbox80 4x5 box2001,reprosum,run10day,gridc +smoke gbox80 11x3 boxslotcyl,reprosum,run10day,gridc + +#gridCD + +smoke gx3 8x4 diag1,reprosum,run10day,gridcd +smoke gx3 6x2 alt01,reprosum,run10day,gridcd +smoke gx3 8x2 alt02,reprosum,run10day,gridcd +#smoke gx3 12x2 alt03,droundrobin,reprosum,run10day,gridcd +smoke gx3 4x4 alt04,reprosum,run10day,gridcd +smoke gx3 4x4 alt05,reprosum,run10day,gridcd +smoke gx3 8x2 alt06,reprosum,run10day,gridcd +smoke gx3 7x2 alt07,reprosum,run10day,gridcd +smoke gx3 8x2 bgczm,reprosum,run10day,gridcd +smoke gx1 15x2 reprosum,run10day,gridcd +smoke gx1 15x2 seabedprob,reprosum,run10day,gridcd +smoke gx3 14x2 fsd12,reprosum,run10day,gridcd +smoke gx3 11x2 isotope,reprosum,run10day,gridcd +smoke gx3 8x4 snwitdrdg,snwgrain,icdefault,reprosum,run10day,gridcd +#smoke gx3 6x4 dynpicard,reprosum,run10day,gridcd +smoke gx3 8x3 zsal,reprosum,run10day,gridcd +smoke gx3 1x1x100x116x1 reprosum,run10day,gridcd,thread + +smoke gbox128 8x2 reprosum,run10day,gridcd +smoke gbox128 12x2 boxnodyn,reprosum,run10day,gridcd +#smoke gbox128 9x2 boxadv,reprosum,run10day,gridcd +smoke gbox128 14x2 boxrestore,reprosum,run10day,gridcd +smoke gbox80 4x5 box2001,reprosum,run10day,gridcd +smoke gbox80 11x3 boxslotcyl,reprosum,run10day,gridcd + +#gridB + smoke gx3 4x2 diag1,reprosum,run10day,cmplogrest smoke_gx3_8x4_diag1_reprosum_run10day smoke gx3 4x1 diag1,reprosum,run10day,cmplogrest,thread smoke_gx3_8x4_diag1_reprosum_run10day smoke gx3 8x1 alt01,reprosum,run10day,cmplogrest,thread smoke_gx3_6x2_alt01_reprosum_run10day @@ -54,31 +112,6 @@ smoke gbox80 8x1 boxslotcyl,reprosum,run10day,cmplogrest,thread #gridC -smoke gx3 8x4 diag1,reprosum,run10day,gridc -smoke gx3 6x2 alt01,reprosum,run10day,gridc -smoke gx3 8x2 alt02,reprosum,run10day,gridc -#smoke gx3 12x2 alt03,droundrobin,reprosum,run10day,gridc -smoke gx3 4x4 alt04,reprosum,run10day,gridc -smoke gx3 4x4 alt05,reprosum,run10day,gridc -smoke gx3 8x2 alt06,reprosum,run10day,gridc -smoke gx3 7x2 alt07,reprosum,run10day,gridc -smoke gx3 8x2 bgczm,reprosum,run10day,gridc -smoke gx1 15x2 reprosum,run10day,gridc -smoke gx1 15x2 seabedprob,reprosum,run10day,gridc -smoke gx3 14x2 fsd12,reprosum,run10day,gridc -smoke gx3 11x2 isotope,reprosum,run10day,gridc -smoke gx3 8x4 snwitdrdg,snwgrain,icdefault,reprosum,run10day,gridc -#smoke gx3 6x4 dynpicard,reprosum,run10day,gridc -smoke gx3 8x3 zsal,reprosum,run10day,gridc -smoke gx3 1x1x100x116x1 reprosum,run10day,gridc,thread - -smoke gbox128 8x2 reprosum,run10day,gridc -smoke gbox128 12x2 boxnodyn,reprosum,run10day,gridc -#smoke gbox128 9x2 boxadv,reprosum,run10day,gridc -smoke gbox128 14x2 boxrestore,reprosum,run10day,gridc -smoke gbox80 4x5 box2001,reprosum,run10day,gridc -smoke gbox80 11x3 boxslotcyl,reprosum,run10day,gridc - smoke gx3 4x2 diag1,reprosum,run10day,cmplogrest,gridc smoke_gx3_8x4_diag1_gridc_reprosum_run10day smoke gx3 4x1 diag1,reprosum,run10day,cmplogrest,thread,gridc smoke_gx3_8x4_diag1_gridc_reprosum_run10day smoke gx3 8x1 alt01,reprosum,run10day,cmplogrest,thread,gridc smoke_gx3_6x2_alt01_gridc_reprosum_run10day @@ -108,31 +141,6 @@ smoke gbox80 8x1 boxslotcyl,reprosum,run10day,cmplogrest,thread #gridCD -smoke gx3 8x4 diag1,reprosum,run10day,gridcd -smoke gx3 6x2 alt01,reprosum,run10day,gridcd -smoke gx3 8x2 alt02,reprosum,run10day,gridcd -#smoke gx3 12x2 alt03,droundrobin,reprosum,run10day,gridcd -smoke gx3 4x4 alt04,reprosum,run10day,gridcd -smoke gx3 4x4 alt05,reprosum,run10day,gridcd -smoke gx3 8x2 alt06,reprosum,run10day,gridcd -smoke gx3 7x2 alt07,reprosum,run10day,gridcd -smoke gx3 8x2 bgczm,reprosum,run10day,gridcd -smoke gx1 15x2 reprosum,run10day,gridcd -smoke gx1 15x2 seabedprob,reprosum,run10day,gridcd -smoke gx3 14x2 fsd12,reprosum,run10day,gridcd -smoke gx3 11x2 isotope,reprosum,run10day,gridcd -smoke gx3 8x4 snwitdrdg,snwgrain,icdefault,reprosum,run10day,gridcd -#smoke gx3 6x4 dynpicard,reprosum,run10day,gridcd -smoke gx3 8x3 zsal,reprosum,run10day,gridcd -smoke gx3 1x1x100x116x1 reprosum,run10day,gridcd,thread - -smoke gbox128 8x2 reprosum,run10day,gridcd -smoke gbox128 12x2 boxnodyn,reprosum,run10day,gridcd -#smoke gbox128 9x2 boxadv,reprosum,run10day,gridcd -smoke gbox128 14x2 boxrestore,reprosum,run10day,gridcd -smoke gbox80 4x5 box2001,reprosum,run10day,gridcd -smoke gbox80 11x3 boxslotcyl,reprosum,run10day,gridcd - smoke gx3 4x2 diag1,reprosum,run10day,cmplogrest,gridcd smoke_gx3_8x4_diag1_gridcd_reprosum_run10day smoke gx3 4x1 diag1,reprosum,run10day,cmplogrest,thread,gridcd smoke_gx3_8x4_diag1_gridcd_reprosum_run10day smoke gx3 8x1 alt01,reprosum,run10day,cmplogrest,thread,gridcd smoke_gx3_6x2_alt01_gridcd_reprosum_run10day diff --git a/doc/source/developer_guide/dg_dynamics.rst b/doc/source/developer_guide/dg_dynamics.rst index 48dead1cb..1f1430e71 100644 --- a/doc/source/developer_guide/dg_dynamics.rst +++ b/doc/source/developer_guide/dg_dynamics.rst @@ -9,14 +9,14 @@ Dynamics The CICE **cicecore/** directory consists of the non icepack source code. Within that directory there are the following subdirectories -**cicecore/cicedynB/analysis** contains higher level history and diagnostic routines. +**cicecore/cicedyn/analysis** contains higher level history and diagnostic routines. -**cicecore/cicedynB/dynamics** contains all the dynamical evp, eap, and transport routines. +**cicecore/cicedyn/dynamics** contains all the dynamical evp, eap, and transport routines. -**cicecore/cicedynB/general** contains routines associated with forcing, flux calculation, +**cicecore/cicedyn/general** contains routines associated with forcing, flux calculation, initialization, and model timestepping. -**cicecore/cicedynB/infrastructure** contains most of the low-level infrastructure associated +**cicecore/cicedyn/infrastructure** contains most of the low-level infrastructure associated with communication (halo updates, gather, scatter, global sums, etc) and I/O reading and writing binary and netcdf files. @@ -29,7 +29,7 @@ coupling layers. Dynamical Solvers -------------------- -The dynamics solvers are found in **cicecore/cicedynB/dynamics/**. A couple of different solvers are +The dynamics solvers are found in **cicecore/cicedyn/dynamics/**. A couple of different solvers are available including EVP, EAP and VP. The dynamics solver is specified in namelist with the ``kdyn`` variable. ``kdyn=1`` is evp, ``kdyn=2`` is eap, ``kdyn=3`` is VP. @@ -41,7 +41,7 @@ with the tripole grid. Transport ----------------- -The transport (advection) methods are found in **cicecore/cicedynB/dynamics/**. Two methods are supported, +The transport (advection) methods are found in **cicecore/cicedyn/dynamics/**. Two methods are supported, upwind and remap. These are set in namelist via the ``advection`` variable. Transport can be disabled with the ``ktransport`` namelist variable. @@ -94,11 +94,11 @@ Two low-level communications packages, mpi and serial, are provided as part of C provides a middle layer between the model and the underlying libraries. Only the CICE mpi or serial directories are compiled with CICE, not both. -**cicedynB/infrastructure/comm/mpi/** +**cicedyn/infrastructure/comm/mpi/** is based on MPI and provides various methods to do halo updates, global sums, gather/scatter, broadcasts and similar using some fairly generic interfaces to isolate the MPI calls in the code. -**cicedynB/infrastructure/comm/serial/** support the same interfaces, but operates +**cicedyn/infrastructure/comm/serial/** support the same interfaces, but operates in shared memory mode with no MPI. The serial library will be used, by default in the CICE scripts, if the number of MPI tasks is set to 1. The serial library allows the model to be run on a single core or with OpenMP parallelism only without requiring an MPI library. @@ -112,15 +112,15 @@ Only one of the three IO directories can be built with CICE. The CICE scripts w by default, but other options can be selecting by setting ``ICE_IOTYPE`` in **cice.settings** in the case. This has to be set before CICE is built. -**cicedynB/infrastructure/io/io_netcdf/** is the +**cicedyn/infrastructure/io/io_netcdf/** is the default for the standalone CICE model, and it supports writing history and restart files in netcdf format using standard netcdf calls. It does this by writing from and reading to the root task and gathering and scattering fields from the root task to support model parallelism. -**cicedynB/infrastructure/io/io_binary/** supports files in binary format using a gather/scatter +**cicedyn/infrastructure/io/io_binary/** supports files in binary format using a gather/scatter approach and reading to and writing from the root task. -**cicedynB/infrastructure/io/io_pio/** support reading and writing through the pio interface. pio +**cicedyn/infrastructure/io/io_pio/** support reading and writing through the pio interface. pio is a parallel io library (https://github.com/NCAR/ParallelIO) that supports reading and writing of binary and netcdf file through various interfaces including netcdf and pnetcdf. pio is generally more parallel in memory even when using serial netcdf than the standard gather/scatter methods, diff --git a/doc/source/developer_guide/dg_forcing.rst b/doc/source/developer_guide/dg_forcing.rst index d3c406b43..0b90a9b2e 100644 --- a/doc/source/developer_guide/dg_forcing.rst +++ b/doc/source/developer_guide/dg_forcing.rst @@ -15,7 +15,7 @@ generally not been maintained by the Consortium and only a subset of the code is tested by the Consortium. The forcing implementation can be found in the file -**cicecore/cicedynB/general/ice_forcing.F90**. As noted above, only a subset of the +**cicecore/cicedyn/general/ice_forcing.F90**. As noted above, only a subset of the forcing modes are tested and supported. In many ways, the implemetation is fairly primitive, in part due to historical reasons and in part because standalone runs are discouraged for evaluating complex science. In general, most implementations diff --git a/doc/source/user_guide/ug_case_settings.rst b/doc/source/user_guide/ug_case_settings.rst index a34c69822..bf227e145 100644 --- a/doc/source/user_guide/ug_case_settings.rst +++ b/doc/source/user_guide/ug_case_settings.rst @@ -847,13 +847,13 @@ icefields_nml There are several icefield namelist groups to control model history output. See the source code for a full list of supported output fields. -* ``icefields_nml`` is in **cicecore/cicedynB/analysis/ice_history_shared.F90** -* ``icefields_bgc_nml`` is in **cicecore/cicedynB/analysis/ice_history_bgc.F90** -* ``icefields_drag_nml`` is in **cicecore/cicedynB/analysis/ice_history_drag.F90** -* ``icefields_fsd_nml`` is in **cicecore/cicedynB/analysis/ice_history_fsd.F90** -* ``icefields_mechred_nml`` is in **cicecore/cicedynB/analysis/ice_history_mechred.F90** -* ``icefields_pond_nml`` is in **cicecore/cicedynB/analysis/ice_history_pond.F90** -* ``icefields_snow_nml`` is in **cicecore/cicedynB/analysis/ice_history_snow.F90** +* ``icefields_nml`` is in **cicecore/cicedyn/analysis/ice_history_shared.F90** +* ``icefields_bgc_nml`` is in **cicecore/cicedyn/analysis/ice_history_bgc.F90** +* ``icefields_drag_nml`` is in **cicecore/cicedyn/analysis/ice_history_drag.F90** +* ``icefields_fsd_nml`` is in **cicecore/cicedyn/analysis/ice_history_fsd.F90** +* ``icefields_mechred_nml`` is in **cicecore/cicedyn/analysis/ice_history_mechred.F90** +* ``icefields_pond_nml`` is in **cicecore/cicedyn/analysis/ice_history_pond.F90** +* ``icefields_snow_nml`` is in **cicecore/cicedyn/analysis/ice_history_snow.F90** .. csv-table:: **icefields_nml namelist options** :header: "variable", "options/format", "description", "default value" diff --git a/doc/source/user_guide/ug_implementation.rst b/doc/source/user_guide/ug_implementation.rst index a7cc66948..5ed2092c0 100644 --- a/doc/source/user_guide/ug_implementation.rst +++ b/doc/source/user_guide/ug_implementation.rst @@ -47,7 +47,7 @@ as follows **cicecore/** CICE source code -**cicecore/cicedynB/** +**cicecore/cicedyn/** routines associated with the dynamics core **cicecore/drivers/** diff --git a/doc/source/user_guide/ug_testing.rst b/doc/source/user_guide/ug_testing.rst index 284de72f1..289f626a9 100644 --- a/doc/source/user_guide/ug_testing.rst +++ b/doc/source/user_guide/ug_testing.rst @@ -23,7 +23,8 @@ The testing scripts support several features - Ability to compare results to prior baselines to verify bit-for-bit (``--bcmp``) - Ability to define where baseline tests are stored (``--bdir``) - Ability to compare tests against each other (``--diff``) - - Ability to set account number (``--acct``), which is otherwise not set and may result in tests not being submitted + - Ability to set or overide the batch account number (``--acct``) and queue name (``--queue``) + - Ability to control how test suites execute (``--setup-only``, ``--setup-build``, ``--setup-build-run``, ``--setup-build-submit``) .. _indtests: @@ -301,22 +302,6 @@ results.csh script in the testsuite.[testid]:: cd testsuite.[testid] ./results.csh -The script **create_fails.csh** will process the output from results.csh and generate a new -test suite file, **fails.ts**, from the failed tests. -**fails.ts** can then be edited and passed into ``cice.setup --suite fails.ts ...`` to rerun -subsets of failed tests to more efficiently move thru the development, testing, and -validation process. However, a full test suite should be run on the final development -version of the code. - -To report the test results, as is required for Pull Requests to be accepted into -the master the CICE Consortium code see :ref:`testreporting`. - -If using the ``--tdir`` option, that directory must not exist before the script is run. The tdir directory will be -created by the script and it will be populated by all tests as well as scripts that support the -test suite:: - - ./cice.setup --suite base_suite --mach wolf --env gnu --testid myid --tdir /scratch/$user/testsuite.myid - Multiple suites are supported on the command line as comma separated arguments:: ./cice.setup --suite base_suite,decomp_suite --mach wolf --env gnu --testid myid @@ -329,9 +314,48 @@ The option settings defined at the command line have precedence over the test su values if there are conflicts. The predefined test suites are defined under **configuration/scripts/tests** and -the files defining the suites -have a suffix of .ts in that directory. The format for the test suite file -is relatively simple. +the files defining the suites have a suffix of .ts in that directory. Some of the +available tests suites are + +``quick_suite`` + consists of a handful of basic CICE tests + +``base_suite`` + consists of a much large suite of tests covering much of the CICE functionality + +``decomp_suite`` + checks that different decompositions and pe counts produce bit-for-bit results + +``omp_suite`` + checks that OpenMP single thread and multi-thread cases are bit-for-bit identical + +``io_suite`` + tests the various IO options including binary, netcdf, and pio. PIO should be installed locally and accessible to the CICE build system to make full use of this suite. + +``perf_suite`` + runs a series of tests to evaluate model scaling and performance + +``reprosum_suite`` + verifies that CICE log files are bit-for-bit with different decompositions and pe counts when the bfbflag is set to reprosum + +``gridsys_suite`` + tests B, C, and CD grid_ice configurations + +``prod_suite`` + consists of a handful of tests running 5 to 10 model years and includes some QC testing. These tests will be relatively expensive and take more time compared to other suites. + +``unittest_suite`` + runs unit tests in the CICE repository + +``travis_suite`` + consists of a small suite of tests suitable for running on low pe counts. This is the suite used with Github Actions for CI in the workflow. + +``first_suite`` + this small suite of tests is redundant with tests in other suites. It runs several of the critical baseline tests that other test compare to. It can improve testing turnaround if listed first in a series of test suites. + +When running multiple suites on the command line (i.e. ``--suite first_suite,base_suite,omp_suite``) the suites will be run in the order defined by the user and redundant tests across multiple suites will be created and executed only once. + +The format for the test suite file is relatively simple. It is a text file with white space delimited columns that define a handful of values in a specific order. The first column is the test name, the second the grid, the third the pe count, @@ -423,6 +447,22 @@ which means by default the test suite builds and submits the jobs. By defining By leveraging the **cice.setup** command line arguments ``--setup-only``, ``--setup-build``, and ``--setup-build-run`` as well as the environment variables SUITE_BUILD, SUITE_RUN, and SUITE_SUBMIT, users can run **cice.setup** and **suite.submit** in various combinations to quickly setup, setup and build, submit, resubmit, run interactively, or rebuild and resubmit full testsuites quickly and easily. See :ref:`examplesuites` for an example. +The script **create_fails.csh** will process the output from results.csh and generate a new +test suite file, **fails.ts**, from the failed tests. +**fails.ts** can then be edited and passed into ``cice.setup --suite fails.ts ...`` to rerun +subsets of failed tests to more efficiently move thru the development, testing, and +validation process. However, a full test suite should be run on the final development +version of the code. + +To report the test results, as is required for Pull Requests to be accepted into +the master the CICE Consortium code see :ref:`testreporting`. + +If using the ``--tdir`` option, that directory must not exist before the script is run. The tdir directory will be +created by the script and it will be populated by all tests as well as scripts that support the +test suite:: + + ./cice.setup --suite base_suite --mach wolf --env gnu --testid myid --tdir /scratch/$user/testsuite.myid + .. _examplesuites: @@ -695,9 +735,12 @@ The following are brief descriptions of some of the current unit tests, both sets of software are tested independently and correctness is verified. - **calchk** is a unit test that exercises the CICE calendar over 100,000 years and verifies correctness. This test does not depend on the CICE initialization. + - **gridavgchk** is a unit test that exercises the CICE grid_average_X2Y methods and verifies results. - **helloworld** is a simple test that writes out helloworld and uses no CICE infrastructure. This tests exists to demonstrate how to build a unit test by specifying the object files directly in the Makefile + - **optargs** is a unit test that tests passing optional arguments down a calling tree and verifying + that the optional attribute is preserved correctly. - **sumchk** is a unit test that exercises the methods in ice_global_reductions.F90. This test requires that a CICE grid and decomposition be initialized, so CICE_InitMod.F90 is leveraged to initialize the model prior to running a suite of unit validation tests to verify correctness. diff --git a/doc/source/user_guide/ug_troubleshooting.rst b/doc/source/user_guide/ug_troubleshooting.rst index d20b14ffc..315b2f869 100644 --- a/doc/source/user_guide/ug_troubleshooting.rst +++ b/doc/source/user_guide/ug_troubleshooting.rst @@ -7,6 +7,16 @@ Troubleshooting Check the FAQ: https://github.com/CICE-Consortium/CICE/wiki +.. _dirsetup: + +Directory Structure +--------------------- + +In November, 2022, the cicedynB directory was renamed to cicedyn. +A soft link was temporarily added to preserve the ability to use +cicedynB as a path when compiling CICE in other build systems. This +soft link will be removed in the future. + .. _setup: Initial setup @@ -221,6 +231,16 @@ be found in the `Icepack documentation `_. +VP dynamics results +---------------------------------------- + +The VP dynamics solver (`kdyn=3`) requires a global sum. This global sum +is computed by default via an efficient implementation that is not bit-for-bit +for different decompositions or pe counts. Bit-for-bit identical results +can be recovered for the VP dynamics solver by setting the namelist +`bfbflag = reprosum` or using the `-s reprosum` option when setting up a case. + + Proliferating subprocess parameterizations -------------------------------------------------------