Skip to content

Commit

Permalink
Improve cycle cadence specification in CROW
Browse files Browse the repository at this point in the history
Replaces the old gfs_cyc method for determining cycling frequency with one that
explicitly sets the step length. In place of gfs_cyc there are two new variables
to determine step sizing: STEP_GFS and STEP_DA. Both are of the timedelta type.

STEP_GFS determines the frequency of GFS and defaults to 6 hours
STEP_DA determines the frequency of DA and also defaults to 6 hours

If STEP_GFS is set to 00:00:00, only the DA system is run
If STEP_DA is set to 00:00:00, only the GFS system is run (free-forecast mode)

Note that this new method currently requires the additional setting of STEP_DA
to zero, in addition to using free forecast layout.

If STEP_DA is non-zero, the first cycle is DA-only, so this should be kept in
mind when setting up your experiments (especially if you want GFS to run at
certain times of day). If both are non-zero, STEP_GFS should always be an
integer multiple of STEP_DA, otherwise unexpected behavior may occur. Other
than setting STEP_DA to zero for free forecast, STEP_DA is unlikely to be
changed from its default value in the near-future for GFS, but the new method
is flexible for any future incorporation of LAM system that requires faster DA
cycling.

Examples:

Full-cycling with DA & GFS:
STEP_GFS: !timedelta "06:00:00"
STEP_DA: !timedelta "06:00:00"
(since these are defaults, nothing needs to be placed in the case file, but you may
wish to for clarity)

Normal DA with GFS at each 00z starting 2013-04-01:
SDATE: 2013-03-31t18:00:00
STEP_GFS: !timedelta "24:00:00"

Free forecast with GFS every 24h at 00z starting 2013-04-01:
SDATE: 2013-04-01t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"

CROW ss updated to add a new tool that converts a timedelta to a string.

The wave model, which formerly used gfs_cyc to determine the wave cycling interval,
now determines WAVHCYC directly from STEP_GFS. Since this variable is only a number
of hours, this will only work for whole-hour GFS frequencies.

Case files have been updated to use the new settings in place of gfs_cyc, as well as
set STEP_DA to zero for free forecast cases. However, they have not all been tested.

Additional testing is needed to ensure these changes are fully operational for DA
cycling runs.

Refs: #260, #314
  • Loading branch information
WalterKolczynski-NOAA committed Jun 7, 2021
1 parent 3428097 commit c196176
Show file tree
Hide file tree
Showing 48 changed files with 117 additions and 88 deletions.
2 changes: 1 addition & 1 deletion workflow/CROW
Submodule CROW updated 1 files
+6 −0 crow/config/tools.py
4 changes: 2 additions & 2 deletions workflow/cases/aerosol_firex_forecast.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ case:
settings:
SDATE: 2019-07-01t00:00:00
EDATE: 2019-07-15t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"
max_job_tries: 1

gfs_cyc: 1

cplgocart: .true.
print_esmf: .true.
nems_temp: 'atm_aer'
Expand Down
20 changes: 13 additions & 7 deletions workflow/cases/aerosol_free_forecast.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ case:

settings:
SDATE: 2013-04-01t00:00:00
EDATE: 2013-04-01t00:00:00
EDATE: 2013-04-02t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"
max_job_tries: 1
rocoto_cycle_throttle: 1

cplgocart: .true.
print_esmf: .true.
Expand Down Expand Up @@ -35,12 +38,12 @@ case:
LEVS: 65
DELTIM: 450
layout:
x: 6
y: 8
nth: 1
WGRP: 1
WGRP_NTASKS: 24
WRTIOBUF: "32M"
x: 6
y: 8
nth: 1
WGRP: 1
WGRP_NTASKS: 24
WRTIOBUF: "32M"

chem_settings:
MOD: gsdchem
Expand All @@ -55,3 +58,6 @@ case:
post:
downset: 2
GOESF: no

archiving:
archive_to_hpss: False
2 changes: 2 additions & 0 deletions workflow/cases/atm_free_forecast.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ case:
settings:
SDATE: 2013-04-01t00:00:00
EDATE: 2013-04-01t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"

cplflx: .false.
print_esmf: .true.
Expand Down
2 changes: 2 additions & 0 deletions workflow/cases/coupled_free_forecast.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ case:
settings:
SDATE: 2013-04-01t00:00:00
EDATE: 2013-04-01t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"

onestep: .true.
cplmode: nems_frac
Expand Down
2 changes: 2 additions & 0 deletions workflow/cases/coupled_free_forecast_nofrac_wave.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ case:
settings:
SDATE: 2013-04-01t00:00:00
EDATE: 2013-04-01t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"

onestep: .true.
cplmode: nems_orig
Expand Down
2 changes: 2 additions & 0 deletions workflow/cases/coupled_free_forecast_wave.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ case:
settings:
SDATE: 2013-04-01t00:00:00
EDATE: 2013-04-01t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"

onestep: .true.
cplmode: nems_frac
Expand Down
5 changes: 1 addition & 4 deletions workflow/cases/dev/Run-From-HPSS-ICs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,7 @@ case:
# files instead.
chgres_and_convert_ics: yes

# gfs_cyc: this setting is used in a full data assimilation cycled
# workflow to only run the GFS every N cycles. Keep this at "4" to
# ensure it is run every cycle.
gfs_cyc: 4
STEP_GFS: !timedelta "06:00:00"

places:
# workflow_file: which workflow we're running. This specifies the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,5 +136,5 @@ case:
EDATE: 2018-08-30t18:00:00
chgres_and_convert_ics: No
realtime: true
gfs_cyc: 4
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ case:
EDATE: 2018-08-10t18:00:00
chgres_and_convert_ics: No
realtime: true
gfs_cyc: 4
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes

schedvar:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,5 +134,5 @@ case:
EDATE: 2016-04-18t12:00:00
chgres_and_convert_ics: No
realtime: false
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
Original file line number Diff line number Diff line change
Expand Up @@ -172,5 +172,5 @@ case:
EDATE: 2016-05-31t18:00:00
chgres_and_convert_ics: No
realtime: false
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
Original file line number Diff line number Diff line change
Expand Up @@ -186,5 +186,5 @@ case:
EDATE: 2016-02-14t12:00:00
chgres_and_convert_ics: No
realtime: false
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
Original file line number Diff line number Diff line change
Expand Up @@ -186,5 +186,5 @@ case:
EDATE: 2016-02-14t12:00:00
chgres_and_convert_ics: No
realtime: false
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
3 changes: 2 additions & 1 deletion workflow/cases/dev/fv3q2fy19retro5-GFS@C768_ff_fixed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -95,5 +95,6 @@ case:
EDATE: 2016-02-14t12:00:00
chgres_and_convert_ics: No
realtime: false
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
STEP_DA: !timedelta "00:00:00"
run_gsi: No
2 changes: 1 addition & 1 deletion workflow/cases/dev/gaea-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ case:
SDATE: 2015-11-26t00:00:00
EDATE: 2015-11-26t00:00:00
realtime: false
gfs_cyc: 4 # run gfs four cycles a day
STEP_GFS: !timedelta "06:00:00"
run_gsi: No # disable data assimilation
2 changes: 1 addition & 1 deletion workflow/cases/dev/lowrsecf@C384.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ case:
EDATE: 2018-05-31t12:00:00
chgres_and_convert_ics: No
REALTIME: true
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: YES

post:
Expand Down
2 changes: 1 addition & 1 deletion workflow/cases/dev/merge2dell_baseline.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ case:
EDATE: 2018-11-26t12:00:00
chgres_and_convert_ics: No
realtime: true
gfs_cyc: 4
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes

schedvar:
Expand Down
2 changes: 1 addition & 1 deletion workflow/cases/dev/merge2jet_baseline.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -181,5 +181,5 @@ case:
EDATE: 2019-05-02t00:00:00
chgres_and_convert_ics: No
realtime: false
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
2 changes: 1 addition & 1 deletion workflow/cases/dev/nco.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ case:
EDATE: 2018-09-22t06:00:00
chgres_and_convert_ics: No
realtime: true
gfs_cyc: 4
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes

schedvar:
Expand Down
2 changes: 1 addition & 1 deletion workflow/cases/dev/parallel@768_ENKF@384+80MEM.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ case:
IC_CDUMP: gdas # Get initial conditions from 1st cycle from GFS or GDAS
SDATE: 2018-05-03t00:00:00
EDATE: 2018-05-03t18:00:00
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
chgres_and_convert_ics: No

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,5 +119,5 @@ case:
EDATE: 2018-09-09t18:00:00
chgres_and_convert_ics: No
realtime: true
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,6 @@ case:
EDATE: 2018-06-04t12:00:00
chgres_and_convert_ics: No
realtime: true
gfs_cyc: 4 # run gfs at 0z, 12z
STEP_GFS: !timedelta "06:00:00"
run_gsi: Yes

3 changes: 2 additions & 1 deletion workflow/cases/free_forecast_case.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ case:
settings:
SDATE: 2019-05-01t00:00:00
EDATE: 2019-05-01t06:00:00
STEP_GFS: !timedelta "06:00:00"
STEP_DA: !timedelta "00:00:00"

DUMP_SUFFIX: "p"
run_gsi: No
chgres_and_convert_ics: Yes
gfs_cyc: 4 # run gfs every cycle

mom6ic_prepared: .true.
2 changes: 1 addition & 1 deletion workflow/cases/jet_cycled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ case:
DUMP_SUFFIX: ""
run_gsi: Yes
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
3 changes: 2 additions & 1 deletion workflow/cases/jet_free_forecast.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@ case:
settings:
SDATE: 2019-05-01t00:00:00
EDATE: 2019-05-01t00:00:00
STEP_GFS: !timedelta "06:00:00"
STEP_DA: !timedelta "00:00:00"

DUMP_SUFFIX: "p"
run_gsi: No
chgres_and_convert_ics: Yes
gfs_cyc: 4 # run gfs every cycle

suite_overrides: !FirstTrue
- when: !calc (doc.platform.name=="JET")
Expand Down
2 changes: 1 addition & 1 deletion workflow/cases/manual_mode.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ case:
DUMP_SUFFIX: "p"
run_gsi: Yes
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"

downstream: &downstream
DO_POST_PROCESSING: NO
Expand Down
2 changes: 2 additions & 0 deletions workflow/cases/prototype6.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ case:
settings:
SDATE: 2013-04-01t00:00:00
EDATE: 2013-04-01t00:00:00
STEP_GFS: !timedelta "24:00:00"
STEP_DA: !timedelta "00:00:00"

onestep: .true.
cplmode: nems_frac
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"

suite_overrides: !FirstTrue
- when: !calc (doc.platform.name=="JET")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ case:
IC_CDUMP: gfs
run_gsi: No
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
2 changes: 1 addition & 1 deletion workflow/cases/tutorial_cycled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ case:
KEEPDATA: Yes
run_gsi: Yes
chgres_and_convert_ics: No
gfs_cyc: 4 # run gfs every cycle
STEP_GFS: !timedelta "06:00:00"
3 changes: 2 additions & 1 deletion workflow/cases/tutorial_free_forecast.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ case:
settings:
SDATE: 2019-05-01t00:00:00
EDATE: 2019-05-01t06:00:00
STEP_GFS: !timedelta "06:00:00"
STEP_DA: !timedelta "00:00:00"

DUMP_SUFFIX: "p"
run_gsi: No
chgres_and_convert_ics: Yes
gfs_cyc: 4 # run gfs every cycle

suite_overrides: !FirstTrue
- when: !calc (doc.platform.name=="JET")
Expand Down
5 changes: 1 addition & 4 deletions workflow/config/base.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -191,10 +191,7 @@ config_base:
export FHMIN={doc.output_settings.FHMIN_GDAS}
export FHMAX={doc.output_settings.FHMAX_GDAS}
export FHOUT={doc.output_settings.FHOUT_GDAS}
# GFS cycle info
export gfs_cyc={doc.settings.gfs_cyc} # 0: no GFS cycle, 1: 00Z only, 2: 00Z and 12Z only, 4: all 4 cycles.
# GFS output and frequency
export FHMIN_GFS={doc.output_settings.FHMIN_GFS}
export FHMAX_GFS={doc.output_settings.FHMAX_GFS}
Expand Down
6 changes: 1 addition & 5 deletions workflow/config/wave.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,8 @@ config_wave:
WAVNCYC=4
WAVHCYC=6
FHMAX_WAV_CUR=48 # RTOFS forecasts only out to 8 days
elif [ $gfs_cyc -ne 0 ]
then
FHMAX_WAV_CUR=192 # RTOFS forecasts only out to 8 days
WAVHCYC=`expr 24 / $gfs_cyc`
else
WAVHCYC=0
WAVHCYC={tools.dt_to_HMS(doc.settings.STEP_GFS).split(':')[0]}
FHMAX_WAV_CUR=192 # RTOFS forecasts only out to 8 days
fi
export FHMAX_WAV_CUR WAVHCYC WAVNCYC
Expand Down
4 changes: 3 additions & 1 deletion workflow/defaults/settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ default_settings: &default_settings
ecflow_virtual_clock: no
ecflow_hybrid_clock: no

gfs_cyc: 4
nems_temp: 'atm'
nems_temp_cold: 'atm'
ics_from: opsgfs
Expand Down Expand Up @@ -78,6 +77,9 @@ default_settings: &default_settings
IAUFHRS: 6
IAU_DELTHRS: 6

STEP_DA: !timedelta "06:00:00"
STEP_GFS: !timedelta "06:00:00"

KEEPDATA: NO
DUMP_SUFFIX: ""
run_gsi: No
Expand Down
Loading

0 comments on commit c196176

Please sign in to comment.