Skip to content

Commit 35cf8d7

Browse files
authored
Merge branch 'NOAA-GFDL:main' into feature/general-indices-diag-manager-tests
2 parents fa77ebe + 1b81f1a commit 35cf8d7

18 files changed

Lines changed: 1004 additions & 457 deletions

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,7 @@ if(UNIT_TESTS)
723723
test_fms/mpp/test_mpp_domains.F90
724724
test_fms/mpp/test_mpp.F90
725725
test_fms/mpp/test_mpp_gatscat.F90
726+
test_fms/mpp/test_mpp_pelist_gatscat_gen_ind.F90
726727
test_fms/mpp/test_mpp_get_ascii_lines.F90
727728
test_fms/mpp/test_mpp_global_field_ug.F90
728729
test_fms/mpp/test_mpp_global_sum_ad.F90

coupler/ensemble_manager.F90

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,26 @@ module ensemble_manager_mod
4949

5050
integer :: ensemble_size = 1
5151
integer :: ensemble_id = 1
52+
!> @brief Starting index for ensemble numbering in I/O filenames.
53+
!!
54+
!! Defines an offset applied to the local ensemble_id when constructing
55+
!! filename appendices via fms2_io_set_filename_appendix.
56+
!!
57+
!! The effective ensemble index used in filenames is:
58+
!! global_ens = starting_ensemble_id + ensemble_id - 1
59+
!!
60+
!! For example:
61+
!! ensemble_size = 2
62+
!! starting_ensemble_id = 10
63+
!! results in filenames using ens_10 and ens_11.
64+
!!
65+
!! @note This parameter affects only I/O filename construction (e.g.,
66+
!! restart and diagnostic files). It does not affect ensemble-specific
67+
!! input selection such as data_override, which uses explicit filenames
68+
!! or data_table.ens_XX.yaml.
69+
!!
70+
!! @default 1
71+
integer :: starting_ensemble_id = 1
5272
integer :: pe, total_npes_pm=0,ocean_npes_pm=0,atmos_npes_pm=0
5373
integer :: land_npes_pm=0,ice_npes_pm=0
5474

@@ -75,7 +95,11 @@ subroutine ensemble_manager_init()
7595

7696
integer :: i, io_status, npes, ierr
7797

78-
namelist /ensemble_nml/ ensemble_size
98+
!> @namelist ensemble_nml
99+
!! @param ensemble_size Number of ensemble members.
100+
!! @param starting_ensemble_id Offset applied to ensemble_id when
101+
!! constructing I/O filename appendices.
102+
namelist /ensemble_nml/ ensemble_size, starting_ensemble_id
79103

80104
read (input_nml_file, ensemble_nml, iostat=io_status)
81105
ierr = check_nml_error(io_status, 'ensemble_nml')
@@ -85,6 +109,8 @@ subroutine ensemble_manager_init()
85109
if(ensemble_size > max_ensemble_size) call mpp_error(FATAL, &
86110
'ensemble_manager_mod: ensemble_nml variable ensemble_size should be no larger than MAX_ENSEMBLE_SIZE, '// &
87111
'change ensemble_size or increase MAX_ENSEMBLE_SIZE')
112+
if(starting_ensemble_id < 1) call mpp_error(FATAL, &
113+
'ensemble_manager_mod: ensemble_nml variable starting_ensemble_id must be a positive integer')
88114

89115
pe = mpp_pe()
90116
npes = mpp_npes()
@@ -238,7 +264,7 @@ subroutine ensemble_pelist_setup(concurrent, atmos_npes, ocean_npes, land_npes,
238264
integer :: atmos_pe_start, atmos_pe_end, ocean_pe_start, ocean_pe_end
239265
integer :: land_pe_start, land_pe_end, ice_pe_start, ice_pe_end
240266
character(len=10) :: pelist_name, text
241-
integer :: npes, n, m ,i
267+
integer :: npes, n, m ,i, global_ens
242268

243269
npes = total_npes_pm
244270

@@ -401,7 +427,8 @@ subroutine ensemble_pelist_setup(concurrent, atmos_npes, ocean_npes, land_npes,
401427
!can be used for non-ensemble experiments
402428
!
403429
if (ensemble_size > 1) then
404-
write( text,'(a,i2.2)' ) 'ens_', ensemble_id
430+
global_ens = starting_ensemble_id + ensemble_id - 1
431+
write( text,'(a,i2.2)' ) 'ens_', global_ens
405432
!Append ensemble_id to the restart filenames
406433
call fms2_io_set_filename_appendix(trim(text))
407434
endif

0 commit comments

Comments
 (0)