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