diff --git a/modulefiles/tasks/hera/task.prep_obs.lua b/modulefiles/tasks/hera/task.prep_obs.lua
index d57971da..a287714b 100644
--- a/modulefiles/tasks/hera/task.prep_obs.lua
+++ b/modulefiles/tasks/hera/task.prep_obs.lua
@@ -10,5 +10,6 @@ load(pathJoin("py-cartopy", py_cartopy_ver))
load(pathJoin("py-matplotlib", py_matplotlib_ver))
load(pathJoin("py-netcdf4", py_netcdf4_ver))
load(pathJoin("py-numpy", py_numpy_ver))
+load(pathJoin("py-pandas", py_pandas_ver))
load(pathJoin("py-pyyaml", py_pyyaml_ver))
diff --git a/parm/config_samples/config.ATML.warmstart.yaml b/parm/config_samples/config.ATML.warmstart.yaml
new file mode 100644
index 00000000..90cf93dd
--- /dev/null
+++ b/parm/config_samples/config.ATML.warmstart.yaml
@@ -0,0 +1,38 @@
+account: epic
+app: ATML
+atm_io_layout_x: 1
+atm_io_layout_y: 1
+atm_layout_x: 2
+atm_layout_y: 4
+coldstart: 'NO'
+coupler_calendar: 3
+date_cycle_freq_hr: 24
+date_first_cycle: 2022122300
+date_last_cycle: 2022122400
+dt_atmos: 720
+dt_runseq: 720
+envir: test_atml_warm
+exp_case_name: atml_warmstart_00
+fcsthr: 24
+fhrot: 0
+ic_data_model: GFS
+imo: 384
+jmo: 190
+lnd_calc_snet: .false.
+lnd_ic_type: sfc
+lnd_initial_albedo: 0.2
+lnd_layout_x: 1
+lnd_layout_y: 2
+lnd_output_freq_sec: 21600
+med_coupling_mode: ufs.frac
+model_ver: v2.1.0
+net: landda
+nprocs_analysis: 6
+nprocs_fcst_ic: 36
+output_fh: '6 -1'
+res: 96
+restart_interval: '6 -1'
+run: landda
+we2e_test: 'NO'
+write_groups: 1
+write_tasks_per_group: 6
diff --git a/parm/templates/template.land_analysis.yaml b/parm/templates/template.land_analysis.yaml
index fcc11ead..337a81f7 100644
--- a/parm/templates/template.land_analysis.yaml
+++ b/parm/templates/template.land_analysis.yaml
@@ -78,10 +78,11 @@ workflow:
LOGFN_SUFFIX: "_@Y@m@d@H.log"
PDY: "@Y@m@d"
cyc: "@H"
- DATADEP_FILE1: "&DATAROOT;/DATA_SHARE/RESTART/ufs_land_restart.@Y-@m-@d_@H-00-00.tile6.nc"
- DATADEP_FILE2: "&WARMSTART_DIR;/ufs_land_restart.@Y-@m-@d_@H-00-00.tile6.nc"
+ DATADEP_LRST1: "&DATAROOT;/DATA_SHARE/RESTART/ufs_land_restart.@Y-@m-@d_@H-00-00.tile6.nc"
+ DATADEP_LRST2: "&WARMSTART_DIR;/ufs_land_restart.@Y-@m-@d_@H-00-00.tile6.nc"
DATADEP_COLDSTART: "&EXP_BASEDIR;/exp_case/&EXP_CASE_NAME;/task_skip_coldstart_@Y@m@d@H.txt"
- DATADEP_SFCDATA: "&DATAROOT;/DATA_SHARE/RESTART/@Y@m@d.@H0000.sfc_data.tile6.nc"
+ DATADEP_SFC1: "&DATAROOT;/DATA_SHARE/RESTART/@Y@m@d.@H0000.sfc_data.tile6.nc"
+ DATADEP_SFC2: "&WARMSTART_DIR;/@Y@m@d.@H0000.sfc_data.tile6.nc"
log: "&LOGDIR;/workflow.log"
tasks:
task_prep_obs:
@@ -177,15 +178,15 @@ workflow:
join: "&LOGDIR;/pre_anal&LOGFN_SUFFIX;"
dependency:
or:
- datadep_file1:
+ datadep_lrst1:
attrs:
age: 5
- value: "&DATADEP_FILE1;"
+ value: "&DATADEP_LRST1;"
{%- if coldstart == "NO" %}
- datadep_file2:
+ datadep_lrst2:
attrs:
age: 5
- value: "&DATADEP_FILE2;"
+ value: "&DATADEP_LRST2;"
{%- endif %}
{%- endif %}
task_analysis:
@@ -214,6 +215,7 @@ workflow:
PDY: "&PDY;"
RES: "&RES;"
SCHED: "&SCHED;"
+ WARMSTART_DIR: "&WARMSTART_DIR;"
WE2E_TEST: "&WE2E_TEST;"
WE2E_ATOL: "&WE2E_ATOL;"
WE2E_LOG_FN: "&WE2E_LOG_FN;"
@@ -234,10 +236,15 @@ workflow:
attrs:
task: pre_anal
{%- else %}
- datadep_sfcdata:
- attrs:
- age: 5
- value: "&DATADEP_SFCDATA;"
+ or:
+ datadep_sfc1:
+ attrs:
+ age: 5
+ value: "&DATADEP_SFC1;"
+ datadep_sfc2:
+ attrs:
+ age: 5
+ value: "&DATADEP_SFC2;"
{%- endif %}
task_post_anal:
attrs:
@@ -263,6 +270,7 @@ workflow:
RES: "&RES;"
RUN: "&RUN;"
SCHED: "&SCHED;"
+ WARMSTART_DIR: "&WARMSTART_DIR;"
WE2E_TEST: "&WE2E_TEST;"
WE2E_ATOL: "&WE2E_ATOL;"
WE2E_LOG_FN: "&WE2E_LOG_FN;"
diff --git a/scripts/exlandda_analysis.sh b/scripts/exlandda_analysis.sh
index ba69216d..53067cdb 100755
--- a/scripts/exlandda_analysis.sh
+++ b/scripts/exlandda_analysis.sh
@@ -37,11 +37,19 @@ esac
GFSv17="NO"
B=30 # back ground error std for LETKFOI
-# Import input files
+# copy sfc_data files into work directory
for itile in {1..6}
do
- cp ${DATA_RESTART}/${FILEDATE}.sfc_data.tile${itile}.nc .
+ sfc_fn="${FILEDATE}.sfc_data.tile${itile}.nc"
+ if [ -f ${DATA_RESTART}/${sfc_fn} ]; then
+ cp -p ${DATA_RESTART}/${sfc_fn} .
+ elif [ -f ${WARMSTART_DIR}/${sfc_fn} ]; then
+ cp -p ${WARMSTART_DIR}/${sfc_fn} .
+ else
+ err_exit "Initial sfc_data files do not exist"
+ fi
done
+# Copy obserbation file to work directory
ln -nsf ${COMIN}/obs/GHCN_${YYYY}${MM}${DD}${HH}.nc .
# update coupler.res file
diff --git a/scripts/exlandda_forecast.sh b/scripts/exlandda_forecast.sh
index 9e59f31f..0a644872 100755
--- a/scripts/exlandda_forecast.sh
+++ b/scripts/exlandda_forecast.sh
@@ -197,7 +197,7 @@ if [ "${COLDSTART}" = "NO" ] || [ "${PDY}${cyc}" != "${DATE_FIRST_CYCLE:0:10}" ]
if [ "${COLDSTART}" = "NO" ] && [ "${PDY}${cyc}" = "${DATE_FIRST_CYCLE:0:10}" ]; then
data_dir="${WARMSTART_DIR}"
else
- data_dir="${COMINm1}"
+ data_dir="${COMINm1}/RESTART"
fi
# NoahMP restart files
@@ -208,10 +208,10 @@ if [ "${COLDSTART}" = "NO" ] || [ "${PDY}${cyc}" != "${DATE_FIRST_CYCLE:0:10}" ]
# CMEPS restart and pointer files
r_fn="ufs.cpld.cpl.r.${YYYY}-${MM}-${DD}-${HHsec_5d}.nc"
- if [ -f "${data_dir}/RESTART/${r_fn}" ]; then
- ln -nsf "${data_dir}/RESTART/${r_fn}" RESTART/.
+ if [ -f "${data_dir}/${r_fn}" ]; then
+ ln -nsf "${data_dir}/${r_fn}" RESTART/.
else
- err_exit "${data_dir}/RESTART/${r_fn} file does not exist."
+ err_exit "${data_dir}/${r_fn} file does not exist."
fi
ls -1 "./RESTART/${r_fn}">rpointer.cpl
fi
@@ -266,7 +266,7 @@ if [ "${APP}" = "ATML" ]; then
if [ "${COLDSTART}" = "NO" ] || [ "${PDY}${cyc}" != "${DATE_FIRST_CYCLE:0:10}" ]; then
# Set path to directory where restart files exist
if [ "${COLDSTART}" = "NO" ] && [ "${PDY}${cyc}" = "${DATE_FIRST_CYCLE:0:10}" ]; then
- data_dir="${WARMSTART_DIR}/RESTART"
+ data_dir="${WARMSTART_DIR}"
else
data_dir="${COMINm1}/RESTART"
fi