diff --git a/driver-mct/cime_config/buildnml b/driver-mct/cime_config/buildnml
index cd38fcf06267..1b2c785a2714 100755
--- a/driver-mct/cime_config/buildnml
+++ b/driver-mct/cime_config/buildnml
@@ -144,20 +144,8 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files):
# Set up the pause_component_list if pause is active
pauseo = case.get_value('PAUSE_OPTION')
- if pauseo != 'never' and pauseo != 'none':
+ if pauseo is not None and pauseo != 'never' and pauseo != 'none':
pausen = case.get_value('PAUSE_N')
- pcl = nmlgen.get_default('pause_component_list')
- nmlgen.add_default('pause_component_list', pcl)
- # Check to make sure pause_component_list is valid
- pcl = nmlgen.get_value('pause_component_list')
- if pcl != 'none' and pcl != 'all':
- pause_comps = pcl.split(':')
- comp_classes = case.get_values("COMP_CLASSES")
- for comp in pause_comps:
- expect(comp == 'drv' or comp.upper() in comp_classes,
- "Invalid PAUSE_COMPONENT_LIST, {} is not a valid component type".format(comp))
- # End for
- # End if
# Set esp interval
if 'nstep' in pauseo:
esp_time = mindt
diff --git a/driver-mct/cime_config/config_component.xml b/driver-mct/cime_config/config_component.xml
index 5d8fa5410f6c..1e784dbecdcf 100644
--- a/driver-mct/cime_config/config_component.xml
+++ b/driver-mct/cime_config/config_component.xml
@@ -381,21 +381,6 @@
-
- char
- none
-
- cpl
-
- run_begin_stop_restart
- env_run.xml
-
- A colon-separated list of components to receive pause and resume signals
- A value of 'all' means all components will pause and resume
- A value of 'none' means that no components will pause or resume
-
-
-
char
1
@@ -424,13 +409,13 @@
run_begin_stop_restart
env_run.xml
- ESP component runs after driver 'pause cycle'
- If any component 'pauses' (see PAUSE_OPTION, PAUSE_N and
- PAUSE_COMPONENT_LIST XML variables), the ESP component (if
- present) will be run to process the component 'pause' (restart)
- files and set any required 'resume' signals.
- If true, esp_cpl_dt and esp_cpl_offset settings are ignored.
- default: false
+ ESP component runs after driver 'pause cycle' If any component
+ 'pauses' (see PAUSE_OPTION,
+ PAUSE_N and DATA_ASSIMILATION XML variables),
+ the ESP component (if present) will be run to process the
+ component 'pause' (restart) files and set any required 'resume'
+ signals. If true, esp_cpl_dt and esp_cpl_offset settings are
+ ignored. default: false
@@ -2583,11 +2568,21 @@
logical
TRUE,FALSE
- FALSE
external_tools
env_run.xml
Run the external tool pointed to by DATA_ASSIMILATION_SCRIPT after the model run completes
+
+ FALSE
+ FALSE
+ FALSE
+ FALSE
+ FALSE
+ FALSE
+ FALSE
+ FALSE
+
+
integer
diff --git a/driver-mct/cime_config/config_compsets.xml b/driver-mct/cime_config/config_compsets.xml
index 30439b457778..ff91128e9dbf 100644
--- a/driver-mct/cime_config/config_compsets.xml
+++ b/driver-mct/cime_config/config_compsets.xml
@@ -100,4 +100,11 @@
2000_XATM_XLND_XICE_XOCN_XROF_XGLC_XWAV
+
+
+
+ TRUE
+
+
+
diff --git a/driver-mct/cime_config/namelist_definition_drv.xml b/driver-mct/cime_config/namelist_definition_drv.xml
index 083b03fda4f4..8c2675cfa2ac 100644
--- a/driver-mct/cime_config/namelist_definition_drv.xml
+++ b/driver-mct/cime_config/namelist_definition_drv.xml
@@ -1643,13 +1643,13 @@
time
seq_timemgr_inparm
- true => ESP component runs after driver 'pause cycle'
- If any component 'pauses' (see PAUSE_OPTION, PAUSE_N and
- PAUSE_COMPONENT_LIST XML variables), the ESP component (if
- present) will be run to process the component 'pause' (restart)
- files and set any required 'resume' signals.
- If true, esp_cpl_dt and esp_cpl_offset settings are ignored.
- default: true
+ true => ESP component runs after driver 'pause cycle' If any
+ component 'pauses' (see PAUSE_OPTION,
+ PAUSE_N and DATA_ASSIMILATION_XXX XML
+ variables), the ESP component (if present) will be run to
+ process the component 'pause' (restart) files and set any
+ required 'resume' signals. If true, esp_cpl_dt and
+ esp_cpl_offset settings are ignored. default: true
.true.
@@ -2059,20 +2059,6 @@
-
- char
- time
- seq_timemgr_inparm
-
- A colon-separated list of component types (e.g., ocn,atm) to receive a
- resume signal after a pause has happened. Special values "all" or "none"
- may be used in place of a list
-
-
- $PAUSE_COMPONENT_LIST
-
-
-
char
driver
@@ -3934,4 +3920,100 @@
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component atm
+
+
+ $DATA_ASSIMILATION_ATM
+
+
+
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component CPL
+
+
+ $DATA_ASSIMILATION_CPL
+
+
+
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component ocn
+
+
+ $DATA_ASSIMILATION_OCN
+
+
+
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component wav
+
+
+ $DATA_ASSIMILATION_WAV
+
+
+
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component glc
+
+
+ $DATA_ASSIMILATION_GLC
+
+
+
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component rof
+
+
+ $DATA_ASSIMILATION_ROF
+
+
+
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component ice
+
+
+ $DATA_ASSIMILATION_ICE
+
+
+
+
+ logical
+ data_assimilation
+ seq_timemgr_inparm
+
+ Whether Data Assimilation is on for component lnd
+
+
+ $DATA_ASSIMILATION_LND
+
+
+
diff --git a/driver-mct/shr/seq_infodata_mod.F90 b/driver-mct/shr/seq_infodata_mod.F90
index 0136e3df2533..9a9421b54150 100644
--- a/driver-mct/shr/seq_infodata_mod.F90
+++ b/driver-mct/shr/seq_infodata_mod.F90
@@ -18,7 +18,7 @@
! !REVISION HISTORY:
! 2005-Nov-11 - E. Kluzek - creation of shr_inputinfo_mod
! 2007-Nov-15 - T. Craig - refactor for ccsm4 system and move to seq_infodata_mod
-! 2016-Dec-08 - R. Montuoro - updated for multiple coupler instances
+! 2016-Dec-08 - R. Montuoro - updated for multiple driver instances
!
! !INTERFACE: ------------------------------------------------------------------
diff --git a/driver-mct/shr/seq_timemgr_mod.F90 b/driver-mct/shr/seq_timemgr_mod.F90
index 9d1acbecb132..59d9286b31a1 100644
--- a/driver-mct/shr/seq_timemgr_mod.F90
+++ b/driver-mct/shr/seq_timemgr_mod.F90
@@ -306,7 +306,16 @@ subroutine seq_timemgr_clockInit(SyncClock, nmlfile, restart, restart_file, pioi
integer(SHR_KIND_IN) :: restart_ymd ! Restart date (YYYYMMDD)
character(SHR_KIND_CS) :: pause_option ! Pause option units
integer(SHR_KIND_IN) :: pause_n ! Number between pause intervals
- character(SHR_KIND_CS) :: pause_component_list ! Pause - resume components
+
+ logical :: data_assimilation_atm
+ logical :: data_assimilation_cpl
+ logical :: data_assimilation_ocn
+ logical :: data_assimilation_wav
+ logical :: data_assimilation_glc
+ logical :: data_assimilation_ice
+ logical :: data_assimilation_rof
+ logical :: data_assimilation_lnd
+
character(SHR_KIND_CS) :: history_option ! History option units
integer(SHR_KIND_IN) :: history_n ! Number until history interval
integer(SHR_KIND_IN) :: history_ymd ! History date (YYYYMMDD)
@@ -353,7 +362,16 @@ subroutine seq_timemgr_clockInit(SyncClock, nmlfile, restart, restart_file, pioi
namelist /seq_timemgr_inparm/ calendar, curr_ymd, curr_tod, &
stop_option, stop_n, stop_ymd, stop_tod, &
restart_option, restart_n, restart_ymd, &
- pause_option, pause_n, pause_component_list, &
+ pause_option, &
+ pause_n, &
+ data_assimilation_atm, &
+ data_assimilation_cpl, &
+ data_assimilation_ocn, &
+ data_assimilation_wav, &
+ data_assimilation_glc, &
+ data_assimilation_ice, &
+ data_assimilation_rof, &
+ data_assimilation_lnd, &
history_option, history_n, history_ymd, &
histavg_option, histavg_n, histavg_ymd, &
barrier_option, barrier_n, barrier_ymd, &
@@ -399,7 +417,15 @@ subroutine seq_timemgr_clockInit(SyncClock, nmlfile, restart, restart_file, pioi
restart_ymd = -1
pause_option = seq_timemgr_optNever
pause_n = -1
- pause_component_list = ' '
+ data_assimilation_atm = .false.
+ data_assimilation_cpl = .false.
+ data_assimilation_ocn = .false.
+ data_assimilation_wav = .false.
+ data_assimilation_glc = .false.
+ data_assimilation_ice = .false.
+ data_assimilation_rof = .false.
+ data_assimilation_lnd = .false.
+
history_option = seq_timemgr_optNever
history_n = -1
history_ymd = -1
@@ -541,9 +567,10 @@ subroutine seq_timemgr_clockInit(SyncClock, nmlfile, restart, restart_file, pioi
write(logunit,F0I) trim(subname),' restart_n = ',restart_n
write(logunit,F0I) trim(subname),' restart_ymd = ',restart_ymd
write(logunit,F0L) trim(subname),' end_restart = ',end_restart
- write(logunit,F0A) trim(subname),' pause_option = ',trim(pause_option)
- write(logunit,F0I) trim(subname),' pause_n = ',pause_n
- write(logunit,F0A) trim(subname),' pause_component_list = ',trim(pause_component_list)
+ write(logunit,F0A) trim(subname),' pause_option = ',&
+ trim(pause_option)
+ write(logunit,F0I) trim(subname),' pause_n = ',&
+ pause_n
write(logunit,F0L) trim(subname),' esp_run_on_pause = ',esp_run_on_pause
write(logunit,F0A) trim(subname),' history_option = ',trim(history_option)
write(logunit,F0I) trim(subname),' history_n = ',history_n
@@ -632,7 +659,15 @@ subroutine seq_timemgr_clockInit(SyncClock, nmlfile, restart, restart_file, pioi
call shr_mpi_bcast( restart_ymd, mpicom )
call shr_mpi_bcast( pause_n, mpicom )
call shr_mpi_bcast( pause_option, mpicom )
- call shr_mpi_bcast( pause_component_list, mpicom )
+ call shr_mpi_bcast(data_assimilation_atm, mpicom)
+ call shr_mpi_bcast(data_assimilation_cpl, mpicom)
+ call shr_mpi_bcast(data_assimilation_ocn, mpicom)
+ call shr_mpi_bcast(data_assimilation_wav, mpicom)
+ call shr_mpi_bcast(data_assimilation_glc, mpicom)
+ call shr_mpi_bcast(data_assimilation_ice, mpicom)
+ call shr_mpi_bcast(data_assimilation_rof, mpicom)
+ call shr_mpi_bcast(data_assimilation_lnd, mpicom)
+
call shr_mpi_bcast( history_n, mpicom )
call shr_mpi_bcast( history_option, mpicom )
call shr_mpi_bcast( history_ymd, mpicom )
@@ -701,45 +736,31 @@ subroutine seq_timemgr_clockInit(SyncClock, nmlfile, restart, restart_file, pioi
! --- Figure out which components (if any) are doing pause this run
rc = 1
i = 1
- if (trim(pause_component_list) == 'all') then
- pause_active = .true.
- else if (trim(pause_component_list) == 'none') then
- pause_active = .false.
- else
- do
- i = scan(trim(pause_component_list(rc:)), ':') - 1
- if ((i < 0) .and. (len_trim(pause_component_list) >= rc)) then
- i = len_trim(pause_component_list(rc:))
- end if
- if (i > 0) then
- found = .false.
- do n = 1, max_clocks
- if (pause_component_list(rc:rc+i-1) == trim(seq_timemgr_clocks(n))) then
- pause_active(n) = .true.
- found = .true.
- exit
- end if
- end do
- ! Special case for cpl -- synonym for drv
- if ((.not. found) .and. (pause_component_list(rc:rc+i-1) == 'cpl')) then
- pause_active(seq_timemgr_nclock_drv) = .true.
- found = .true.
- end if
- if (.not. found) then
- call shr_sys_abort(subname//': unknown pause component, '//pause_component_list(rc:rc+i-1))
- end if
- rc = rc + i
- if (pause_component_list(rc:rc) == ':') then
- rc = rc + 1
- end if
- if (rc >= len_trim(pause_component_list)) then
- exit
- end if
- else
- exit
- end if
- end do
- end if
+ if (data_assimilation_atm) then
+ pause_active(seq_timemgr_nclock_atm) = .true.
+ endif
+ if (data_assimilation_cpl) then
+ pause_active(seq_timemgr_nclock_drv) = .true.
+ endif
+ if (data_assimilation_ocn) then
+ pause_active(seq_timemgr_nclock_ocn) = .true.
+ endif
+ if (data_assimilation_wav) then
+ pause_active(seq_timemgr_nclock_wav) = .true.
+ endif
+ if (data_assimilation_glc) then
+ pause_active(seq_timemgr_nclock_glc) = .true.
+ endif
+ if (data_assimilation_ice) then
+ pause_active(seq_timemgr_nclock_ice) = .true.
+ endif
+ if (data_assimilation_rof) then
+ pause_active(seq_timemgr_nclock_rof) = .true.
+ endif
+ if (data_assimilation_lnd) then
+ pause_active(seq_timemgr_nclock_lnd) = .true.
+ endif
+
if ( ANY(pause_active) .and. &
(trim(pause_option) /= seq_timemgr_optNONE) .and. &
(trim(pause_option) /= seq_timemgr_optNever)) then