diff --git a/dlnd/cime_config/config_component.xml b/dlnd/cime_config/config_component.xml
index 6fc60c254..ab40fa583 100644
--- a/dlnd/cime_config/config_component.xml
+++ b/dlnd/cime_config/config_component.xml
@@ -112,6 +112,16 @@
ending year to loop data over (only used when DLND_MODE is CPLHIST or GLC_CPLHIST)
+
+ logical
+ TRUE,FALSE
+ FALSE
+ run_component_dlnd
+ env_run.xml
+ If set to true, than dlnd restarts will not be read on a continuation run.
+
+
+
=========================================
DLND naming conventions
diff --git a/dlnd/cime_config/namelist_definition_dlnd.xml b/dlnd/cime_config/namelist_definition_dlnd.xml
index 8fd3b160e..b10350b74 100644
--- a/dlnd/cime_config/namelist_definition_dlnd.xml
+++ b/dlnd/cime_config/namelist_definition_dlnd.xml
@@ -99,4 +99,17 @@
+
+ logical
+ dlnd
+ dlnd_nml
+
+ If set to true, than dlnd restarts will not be read on a continuation run.
+ This capability is used, for example, in CTSM spinup runs.
+
+
+ $DLND_SKIP_RESTART_READ
+
+
+
diff --git a/dlnd/lnd_comp_nuopc.F90 b/dlnd/lnd_comp_nuopc.F90
index c97e5906e..cf99994c8 100644
--- a/dlnd/lnd_comp_nuopc.F90
+++ b/dlnd/lnd_comp_nuopc.F90
@@ -79,7 +79,7 @@ module cdeps_dlnd_comp
character(CL) :: restfilm = nullstr ! model restart file namelist
integer :: nx_global ! global nx dimension of model mesh
integer :: ny_global ! global ny dimension of model mesh
-
+ logical :: skip_restart_read = .false. ! true => skip restart read in continuation
! linked lists
type(fldList_type) , pointer :: fldsExport => null()
type(dfield_type) , pointer :: dfields => null()
@@ -173,7 +173,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
!-------------------------------------------------------------------------------
namelist / dlnd_nml / datamode, model_meshfile, model_maskfile, &
- nx_global, ny_global, restfilm, force_prognostic_true
+ nx_global, ny_global, restfilm, skip_restart_read
rc = ESMF_SUCCESS
@@ -207,17 +207,17 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
call shr_mpi_bcast(nx_global , mpicom, 'nx_global')
call shr_mpi_bcast(ny_global , mpicom, 'ny_global')
call shr_mpi_bcast(restfilm , mpicom, 'restfilm')
- call shr_mpi_bcast(force_prognostic_true , mpicom, 'force_prognostic_true')
+ call shr_mpi_bcast(skip_restart_read , mpicom, 'skip_restart_read')
! write namelist input to standard out
if (my_task == main_task) then
- write(logunit,F00)' model_meshfile = ',trim(model_meshfile)
- write(logunit,F00)' model_maskfile = ',trim(model_maskfile)
- write(logunit ,*)' datamode = ',datamode
- write(logunit ,*)' nx_global = ',nx_global
- write(logunit ,*)' ny_global = ',ny_global
- write(logunit ,*)' restfilm = ',trim(restfilm)
- write(logunit ,*)' force_prognostic_true = ',force_prognostic_true
+ write(logunit,F00)' model_meshfile = ',trim(model_meshfile)
+ write(logunit,F00)' model_maskfile = ',trim(model_maskfile)
+ write(logunit,F00)' datamode = ',datamode
+ write(logunit,F01)' nx_global = ',nx_global
+ write(logunit,F01)' ny_global = ',ny_global
+ write(logunit,F00)' restfilm = ',trim(restfilm)
+ write(logunit,F02)' skip_restart_read = ',skip_restart_read
endif
! Validate sdat datamode
@@ -278,7 +278,7 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
! Read restart if necessary
- if (restart_read) then
+ if (restart_read .and. .not. skip_restart_read) then
call dshr_restart_read(restfilm, rpfile, inst_suffix, nullstr, logunit, my_task, mpicom, sdat)
end if
diff --git a/docn/cime_config/buildnml b/docn/cime_config/buildnml
index 546e43acc..43d221223 100755
--- a/docn/cime_config/buildnml
+++ b/docn/cime_config/buildnml
@@ -94,6 +94,12 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path
if type(streamlist) == type(str()):
streamlist = []
+ # Determine if skip restart is asked for and if it is a valid request
+ skip_restart_read = case.get_value('DOCN_SKIP_RESTART_READ')
+ if skip_restart_read:
+ if docn_mode == 'som' or docn_mode == 'som_aquap':
+ expect (False, f"xml variable DOCN_SKIP_RESTART_READ cannot be TRUE for docn_mode {docn_mode}")
+
# Generate docn.streams.xml if needed
print("docn_mode is {}".format(docn_mode))
if (re.search(r'sst_aquap[0-9]+',docn_mode) is not None) or (docn_mode == 'sst_aquap_constant'):
diff --git a/docn/cime_config/config_component.xml b/docn/cime_config/config_component.xml
index 6c51147ac..b24c73269 100644
--- a/docn/cime_config/config_component.xml
+++ b/docn/cime_config/config_component.xml
@@ -248,6 +248,16 @@
This is only used when DOCN_MODE=prescribed.
+
+ logical
+ TRUE,FALSE
+ FALSE
+ run_component_docn
+ env_run.xml
+ If set to true, than docn restarts will not be read on a continuation run.
+
+
+
=========================================
DOCN naming conventions
diff --git a/docn/cime_config/namelist_definition_docn.xml b/docn/cime_config/namelist_definition_docn.xml
index c036ccd10..a33992213 100644
--- a/docn/cime_config/namelist_definition_docn.xml
+++ b/docn/cime_config/namelist_definition_docn.xml
@@ -190,4 +190,17 @@
+
+ logical
+ docn
+ docn_nml
+
+ If set to true, than docn restarts will not be read on a continuation run.
+ This capability is used, for example, in CTSM spinup runs.
+
+
+ $DOCN_SKIP_RESTART_READ
+
+
+
diff --git a/docn/ocn_comp_nuopc.F90 b/docn/ocn_comp_nuopc.F90
index 964beabeb..64fde4257 100644
--- a/docn/ocn_comp_nuopc.F90
+++ b/docn/ocn_comp_nuopc.F90
@@ -96,6 +96,7 @@ module cdeps_docn_comp
character(CL) :: restfilm = nullstr ! model restart file namelist
integer :: nx_global
integer :: ny_global
+ logical :: skip_restart_read = .false. ! true => skip restart read in continuation run
! linked lists
type(fldList_type) , pointer :: fldsImport => null()
@@ -191,7 +192,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
namelist / docn_nml / datamode, &
model_meshfile, model_maskfile, &
- restfilm, nx_global, ny_global, sst_constant_value
+ restfilm, nx_global, ny_global, sst_constant_value, skip_restart_read
rc = ESMF_SUCCESS
@@ -227,6 +228,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
write(logunit,F01)' nx_global = ',nx_global
write(logunit,F01)' ny_global = ',ny_global
write(logunit,F00)' restfilm = ',trim(restfilm)
+ write(logunit,F02)' skip_restart_read = ',skip_restart_read
endif
! Broadcast namelist input
@@ -237,6 +239,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
call shr_mpi_bcast(ny_global , mpicom, 'ny_global')
call shr_mpi_bcast(restfilm , mpicom, 'restfilm')
call shr_mpi_bcast(sst_constant_value , mpicom, 'sst_constant_value')
+ call shr_mpi_bcast(skip_restart_read , mpicom, 'skip_restart_read')
! Special logic for prescribed aquaplanet
if (datamode(1:9) == 'sst_aquap' .and. trim(datamode) /= 'sst_aquap_constant') then
@@ -499,7 +502,7 @@ subroutine docn_comp_run(importState, exportState, clock, target_ymd, target_tod
end select
! Read restart if needed
- if (restart_read) then
+ if (restart_read .and. .not. skip_restart_read) then
select case (trim(datamode))
case('sstdata', 'sst_aquap_file')
call docn_datamode_copyall_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat)
diff --git a/drof/cime_config/config_component.xml b/drof/cime_config/config_component.xml
index 7d0e8a62d..8400ada9d 100644
--- a/drof/cime_config/config_component.xml
+++ b/drof/cime_config/config_component.xml
@@ -125,6 +125,16 @@
ending year to loop data over (only used when DROF_MODE is CPLHIST)
+
+ logical
+ TRUE,FALSE
+ FALSE
+ run_component_drof
+ env_run.xml
+ If set to true, than drof restarts will not be read on a continuation run.
+
+
+
=========================================
DROF naming conventions
diff --git a/drof/cime_config/namelist_definition_drof.xml b/drof/cime_config/namelist_definition_drof.xml
index ead6e9209..846139e12 100644
--- a/drof/cime_config/namelist_definition_drof.xml
+++ b/drof/cime_config/namelist_definition_drof.xml
@@ -104,4 +104,17 @@
+
+ logical
+ drof
+ drof_nml
+
+ If set to true, than drof restarts will not be read on a continuation run.
+ This capability is used, for example, in CTSM spinup runs.
+
+
+ $DROF_SKIP_RESTART_READ
+
+
+
diff --git a/drof/rof_comp_nuopc.F90 b/drof/rof_comp_nuopc.F90
index c40f69932..281dc8a38 100644
--- a/drof/rof_comp_nuopc.F90
+++ b/drof/rof_comp_nuopc.F90
@@ -75,7 +75,7 @@ module cdeps_drof_comp
character(CL) :: restfilm = nullstr ! model restart file namelist
integer :: nx_global
integer :: ny_global
-
+ logical :: skip_restart_read = .false. ! true => skip restart read
logical :: diagnose_data = .true.
integer , parameter :: main_task=0 ! task number of main task
character(*) , parameter :: rpfile = 'rpointer.rof'
@@ -171,7 +171,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
!-------------------------------------------------------------------------------
namelist / drof_nml / datamode, model_meshfile, model_maskfile, &
- restfilm, nx_global, ny_global
+ restfilm, nx_global, ny_global, skip_restart_read
rc = ESMF_SUCCESS
@@ -206,6 +206,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
write(logunit,F01)' nx_global = ',nx_global
write(logunit,F01)' ny_global = ',ny_global
write(logunit,F00)' restfilm = ',trim(restfilm)
+ write(logunit,F02)' skip_restart_read = ',skip_restart_read
end if
! broadcast namelist input
@@ -215,6 +216,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
call shr_mpi_bcast(nx_global , mpicom, 'nx_global')
call shr_mpi_bcast(ny_global , mpicom, 'ny_global')
call shr_mpi_bcast(restfilm , mpicom, 'restfilm')
+ call shr_mpi_bcast(skip_restart_read , mpicom, 'skip_restart_read')
! Validate datamode
if (trim(datamode) == 'copyall') then
@@ -389,7 +391,7 @@ subroutine drof_comp_run(exportState, target_ymd, target_tod, restart_write, rc)
if (chkerr(rc,__LINE__,u_FILE_u)) return
! Read restart if needed
- if (restart_read) then
+ if (restart_read .and. .not. skip_restart_read) then
call dshr_restart_read(restfilm, rpfile, inst_suffix, nullstr, logunit, my_task, mpicom, sdat)
end if
diff --git a/dwav/cime_config/config_component.xml b/dwav/cime_config/config_component.xml
index a3c97663e..9ac5c516e 100644
--- a/dwav/cime_config/config_component.xml
+++ b/dwav/cime_config/config_component.xml
@@ -36,6 +36,16 @@
DWAV mode
+
+ logical
+ TRUE,FALSE
+ FALSE
+ run_component_dwav
+ env_run.xml
+ If set to true, than dwav restarts will not be read on a continuation run.
+
+
+
=========================================
DWAV naming conventions
diff --git a/dwav/cime_config/namelist_definition_dwav.xml b/dwav/cime_config/namelist_definition_dwav.xml
index ca479efbd..16517984f 100644
--- a/dwav/cime_config/namelist_definition_dwav.xml
+++ b/dwav/cime_config/namelist_definition_dwav.xml
@@ -97,4 +97,17 @@
+
+ logical
+ dwav
+ dwav_nml
+
+ If set to true, than dwav restarts will not be read on a continuation run.
+ This capability is used, for example, in CTSM spinup runs.
+
+
+ $DWAV_SKIP_RESTART_READ
+
+
+
diff --git a/dwav/wav_comp_nuopc.F90 b/dwav/wav_comp_nuopc.F90
index 5bbf17106..d16e87775 100644
--- a/dwav/wav_comp_nuopc.F90
+++ b/dwav/wav_comp_nuopc.F90
@@ -76,7 +76,7 @@ module cdeps_dwav_comp
character(CL) :: restfilm = nullstr ! model restart file namelist
integer :: nx_global
integer :: ny_global
-
+ logical :: skip_restart_read = .false. ! true => skip restart read
! constants
logical :: diagnose_data = .true.
integer , parameter :: main_task=0 ! task number of main task
@@ -168,7 +168,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
!-------------------------------------------------------------------------------
namelist / dwav_nml / datamode, model_meshfile, model_maskfile, &
- restfilm, nx_global, ny_global
+ restfilm, nx_global, ny_global, skip_restart_read
rc = ESMF_SUCCESS
@@ -203,6 +203,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
write(logunit,F01)' nx_global = ',nx_global
write(logunit,F01)' ny_global = ',ny_global
write(logunit,F00)' restfilm = ',trim(restfilm)
+ write(logunit,F02)' skip_restart_read = ',skip_restart_read
endif
! broadcast namelist input
@@ -212,6 +213,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
call shr_mpi_bcast(nx_global , mpicom, 'nx_global')
call shr_mpi_bcast(ny_global , mpicom, 'ny_global')
call shr_mpi_bcast(restfilm , mpicom, 'restfilm')
+ call shr_mpi_bcast(skip_restart_read , mpicom, 'skip_restart_read')
! Call advertise phase
if (trim(datamode) == 'copyall') then
@@ -266,7 +268,7 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
! Read restart if necessary
- if (restart_read) then
+ if (restart_read .and. .not. skip_restart_read) then
call dshr_restart_read(restfilm, rpfile, inst_suffix, nullstr, logunit, my_task, mpicom, sdat)
end if