Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GEFS Staging in exglobal_stage_ic #1892

Merged
Merged
Show file tree
Hide file tree
Changes from 56 commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
43bdac8
start stagging the code
AnilKumar-NOAA Sep 12, 2023
1456514
Add gefs selections and modified source and target in ATMOS INPUT
AnilKumar-NOAA Sep 18, 2023
7d348dc
remove comment line
AnilKumar-NOAA Sep 18, 2023
4b7a978
gefs sourcing and target updates
AnilKumar-NOAA Sep 19, 2023
a05819c
updated code to read mem_dir in gefs
AnilKumar-NOAA Sep 19, 2023
2794a19
update the gefs ensemble source dir
AnilKumar-NOAA Sep 20, 2023
4b6e50a
updated source for the gfs_ctrl.nc
AnilKumar-NOAA Sep 20, 2023
944f49a
Add Ensemble flag check
AnilKumar-NOAA Sep 21, 2023
f78761e
Removed if block from gefs selection
AnilKumar-NOAA Sep 22, 2023
5c52db3
fixed loop in ATMOS sections
AnilKumar-NOAA Sep 25, 2023
9dd29b8
assign value to ensemble members
AnilKumar-NOAA Sep 25, 2023
1c9f446
GEFS Stagging in ocean, ice, and wave
AnilKumar-NOAA Sep 26, 2023
c3934a3
GEFS Stagging with NSEM_ENS fixed
AnilKumar-NOAA Sep 27, 2023
3fdd4a8
Removing Shell checks
AnilKumar-NOAA Sep 27, 2023
fc173ec
Removing Shell checks
AnilKumar-NOAA Sep 27, 2023
eac7d37
Removing Shell checks
AnilKumar-NOAA Sep 27, 2023
bb2cb50
Removing Shell checks
AnilKumar-NOAA Sep 27, 2023
7849bfb
made modifications with =GFS
AnilKumar-NOAA Sep 28, 2023
246854b
Fixed
AnilKumar-NOAA Sep 28, 2023
be72d5c
fixed if loops for gfs and gefs
AnilKumar-NOAA Sep 28, 2023
ac0a101
looping over memdir for all staging components
AnilKumar-NOAA Sep 28, 2023
f7e37fb
memdir loop over all the components of exglobal_stage_ic
AnilKumar-NOAA Sep 29, 2023
3197351
fixed shellcheck warning for memdir loop
AnilKumar-NOAA Sep 29, 2023
3d37401
Merge branch 'NOAA-EMC:develop' into upstream/develop
AnilKumar-NOAA Sep 29, 2023
5c3094a
completed patch for PR 1892
AnilKumar-NOAA Oct 2, 2023
e34a3c6
Checked all indent issues
AnilKumar-NOAA Oct 2, 2023
d0547a5
Merge branch 'NOAA-EMC:develop' into upstream/develop
AnilKumar-NOAA Oct 3, 2023
a4fe130
Fixed indent issues for exglobal_stage_ic.sh
AnilKumar-NOAA Oct 3, 2023
ebc0eba
removed -r switch for all the generate_com
AnilKumar-NOAA Oct 4, 2023
0967029
remove if condition and gefs manually staged condition in setup_expt.py
AnilKumar-NOAA Oct 5, 2023
bdd775c
Add stage_ic to GEFS job mesh and update dependencies
WalterKolczynski-NOAA Oct 5, 2023
0c1b0a1
Add BASE_CPLIC to GEFS config.base
WalterKolczynski-NOAA Oct 5, 2023
906e3e0
Add stage_ic to GEFS config
WalterKolczynski-NOAA Oct 5, 2023
2c3819b
Remove stale coupled_ic config from GEFS
WalterKolczynski-NOAA Oct 5, 2023
23b172d
Fix low-res staged IC directory names
WalterKolczynski-NOAA Oct 5, 2023
abb512f
Add GEFS forecast dependency on stage_ic
WalterKolczynski-NOAA Oct 5, 2023
26ca715
Fix indentation of print in setup_expt
WalterKolczynski-NOAA Oct 5, 2023
b1d9368
Load stage_ic config during exp setup for GEFS
WalterKolczynski-NOAA Oct 5, 2023
9fb206b
Change BASE_CPLIC location to temp new structure on Hera
WalterKolczynski-NOAA Oct 5, 2023
bd148ca
Update rocoto generation for new stage_ic and add GEFS from WalterKol…
AnilKumar-NOAA Oct 6, 2023
df68735
indent issue resolved
AnilKumar-NOAA Oct 10, 2023
b678b47
indent issue resolved
AnilKumar-NOAA Oct 10, 2023
cd2c740
Merge pull request #4 from WalterKolczynski-NOAA/feature/stage_gefs
AnilKumar-NOAA Oct 10, 2023
d3799d2
Merge branch 'NOAA-EMC:develop' into upstream/develop
AnilKumar-NOAA Oct 10, 2023
29f4144
gefs staging-exglobal_stage_ic.sh file is tested and code is running …
AnilKumar-NOAA Oct 19, 2023
5da2ab2
Merge branch 'NOAA-EMC:develop' into upstream/develop
AnilKumar-NOAA Oct 19, 2023
e925422
Update prototype IC paths for refactored directories
WalterKolczynski-NOAA Oct 19, 2023
b0bdc4c
successful- tested coupled ic for gefs and gfs
AnilKumar-NOAA Oct 26, 2023
5c168cf
Merge branch 'upstream/develop' of https://github.com/AnilKumar-NOAA/…
AnilKumar-NOAA Oct 26, 2023
5590aaa
Merge pull request #5 from WalterKolczynski-NOAA/feature/stage_gefs
AnilKumar-NOAA Oct 26, 2023
8113cae
changes write permission to config.resource file
AnilKumar-NOAA Oct 26, 2023
4e0604e
config file permission to write for gfs
AnilKumar-NOAA Oct 26, 2023
93621ee
undo permission for both gfs ad gefs
AnilKumar-NOAA Oct 26, 2023
b6c8e99
undo permission for gfs/config.ocn
AnilKumar-NOAA Oct 26, 2023
a271675
Merge branch 'develop' into upstream/develop
WalterKolczynski-NOAA Oct 26, 2023
bdc4846
Update scripts/exglobal_stage_ic.sh
aerorahul Oct 27, 2023
aeb1879
Update scripts/exglobal_stage_ic.sh
aerorahul Oct 27, 2023
3178ced
Delete parm/config/gefs/config.waveinit
aerorahul Oct 27, 2023
de8a7d9
Update workflow/rocoto/gefs_tasks.py
aerorahul Oct 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions parm/config/gefs/config.base.emc.dyn
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export FIXreg2grb2=${HOMEgfs}/fix/reg2grb2
export PACKAGEROOT="@PACKAGEROOT@" # TODO: set via prod_envir in Ops
export COMROOT="@COMROOT@" # TODO: set via prod_envir in Ops
export COMINsyn="@COMINsyn@"
export BASE_CPLIC="@BASE_CPLIC@"

# USER specific paths
export HOMEDIR="@HOMEDIR@"
Expand Down
43 changes: 0 additions & 43 deletions parm/config/gefs/config.coupled_ic

This file was deleted.

12 changes: 6 additions & 6 deletions parm/config/gefs/config.resources
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if [[ $# -ne 1 ]]; then

echo "Must specify an input task argument to set resource variables!"
echo "argument can be any one of the following:"
echo "coupled_ic aerosol_init"
echo "stage_ic aerosol_init"
echo "sfcanl analcalc analdiag fcst post vrfy fit2obs metp arch echgres"
echo "ecen esfc efcs epos earc"
echo "init_chem mom6ic ocnpost"
Expand Down Expand Up @@ -416,12 +416,12 @@ elif [[ ${step} = "arch" || ${step} = "earc" ]]; then
eval "export memory_${step}=50GB"
fi

elif [[ ${step} = "coupled_ic" ]]; then
elif [[ ${step} = "stage_ic" ]]; then

export wtime_coupled_ic="00:15:00"
export npe_coupled_ic=1
export npe_node_coupled_ic=1
export nth_coupled_ic=1
export wtime_stage_ic="00:15:00"
export npe_stage_ic=1
export npe_node_stage_ic=1
export nth_stage_ic=1
export is_exclusive=True

elif [[ ${step} = "ecen" ]]; then
Expand Down
23 changes: 23 additions & 0 deletions parm/config/gefs/config.stage_ic
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#! /usr/bin/env bash

########## config.stage_ic ##########

echo "BEGIN: config.stage_ic"

# Get task specific resources
source "${EXPDIR}/config.resources" stage_ic

case "${CASE}" in
"C48")
export CPL_ATMIC="gefs_test"
export CPL_ICEIC="gefs_test"
export CPL_OCNIC="gefs_test"
export CPL_WAVIC="gefs_test"
;;
*)
echo "FATAL ERROR Unrecognized resolution: ${CASE}"
exit 1
;;
esac

echo "END: config.stage_ic"
14 changes: 14 additions & 0 deletions parm/config/gefs/config.waveinit
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#! /usr/bin/env bash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this being added? Are we running with waves in GEFS at this point?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we just copy that files from gfs when we were trying to run with wave.


########## config.waveinit ##########
# Wave steps specific

echo "BEGIN: config.waveinit"

# Get task specific resources
. $EXPDIR/config.resources waveinit
Fixed Show fixed Hide fixed
Fixed Show fixed Hide fixed

# Step label
export sigMODE=${sigMODE:-init}

echo "END: config.waveinit"
24 changes: 12 additions & 12 deletions parm/config/gfs/config.stage_ic
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,22 @@ source "${EXPDIR}/config.resources" stage_ic

case "${CASE}" in
"C48" | "C96")
export CPL_ATMIC=workflowtest
export CPL_ICEIC=workflowtest
export CPL_OCNIC=workflowtest
export CPL_WAVIC=workflowtest
export CPL_ATMIC="workflow_${CASE}_refactored"
export CPL_ICEIC="workflow_${CASE}_refactored"
export CPL_OCNIC="workflow_${CASE}_refactored"
export CPL_WAVIC="workflow_${CASE}_refactored"
;;
"C384")
export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c
export CPL_ICEIC=CPC
export CPL_OCNIC=CPC3Dvar
export CPL_WAVIC=GEFSwave20210528v2
export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored
export CPL_ICEIC=CPC_refactored
export CPL_OCNIC=CPC3Dvar_refactored
export CPL_WAVIC=GEFSwave20210528v2_refactored
;;
"C768")
export CPL_ATMIC=HR2
export CPL_ICEIC=HR1
export CPL_OCNIC=HR1
export CPL_WAVIC=HR1
export CPL_ATMIC=HR2_refactored
export CPL_ICEIC=HR1_refactored
export CPL_OCNIC=HR1_refactored
export CPL_WAVIC=HR1_refactored
;;
*)
echo "FATAL ERROR Unrecognized resolution: ${CASE}"
Expand Down
148 changes: 69 additions & 79 deletions scripts/exglobal_stage_ic.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#! /usr/bin/env bash
#!/usr/bin/env bash

source "${HOMEgfs}/ush/preamble.sh"

Expand All @@ -8,99 +8,89 @@ GDATE=$(date --utc -d "${PDY} ${cyc} - ${assim_freq} hours" +%Y%m%d%H)
gPDY="${GDATE:0:8}"
gcyc="${GDATE:8:2}"

MEMDIR_ARRAY=()
if [[ "${RUN}" == "gefs" ]]; then
# Populate the member_dirs array based on the value of NMEM_ENS
for ((ii = 0; ii <= "${NMEM_ENS}"; ii++)); do
MEMDIR_ARRAY+=("mem$(printf "%03d" "${ii}")")
done
else
MEMDIR_ARRAY+=("")
fi

# Initialize return code
err=0

error_message(){
echo "FATAL ERROR: Unable to copy ${1} to ${2} (Error code ${3})"
error_message() {
echo "FATAL ERROR: Unable to copy ${1} to ${2} (Error code ${3})"
}

###############################################################
# Start staging

# Stage the FV3 initial conditions to ROTDIR (cold start)
YMD=${PDY} HH=${cyc} generate_com -r COM_ATMOS_INPUT
[[ ! -d "${COM_ATMOS_INPUT}" ]] && mkdir -p "${COM_ATMOS_INPUT}"
source="${BASE_CPLIC}/${CPL_ATMIC}/${PDY}${cyc}/${CDUMP}/${CASE}/INPUT/gfs_ctrl.nc"
target="${COM_ATMOS_INPUT}/gfs_ctrl.nc"
${NCP} "${source}" "${target}"
rc=$?
(( rc != 0 )) && error_message "${source}" "${target}" "${rc}"
err=$((err + rc))
for ftype in gfs_data sfc_data; do
for tt in $(seq 1 6); do
source="${BASE_CPLIC}/${CPL_ATMIC}/${PDY}${cyc}/${CDUMP}/${CASE}/INPUT/${ftype}.tile${tt}.nc"
target="${COM_ATMOS_INPUT}/${ftype}.tile${tt}.nc"
${NCP} "${source}" "${target}"
rc=$?
(( rc != 0 )) && error_message "${source}" "${target}" "${rc}"
err=$((err + rc))
done
done

# Stage ocean initial conditions to ROTDIR (warm start)
if [[ "${DO_OCN:-}" = "YES" ]]; then
YMD=${gPDY} HH=${gcyc} generate_com -r COM_OCEAN_RESTART
[[ ! -d "${COM_OCEAN_RESTART}" ]] && mkdir -p "${COM_OCEAN_RESTART}"
source="${BASE_CPLIC}/${CPL_OCNIC}/${PDY}${cyc}/ocn/${OCNRES}/MOM.res.nc"
target="${COM_OCEAN_RESTART}/${PDY}.${cyc}0000.MOM.res.nc"
${NCP} "${source}" "${target}"
for MEMDIR in "${MEMDIR_ARRAY[@]}"; do
# Stage the FV3 initial conditions to ROTDIR (cold start)
YMD=${PDY} HH=${cyc} generate_com COM_ATMOS_INPUT
[[ ! -d "${COM_ATMOS_INPUT}" ]] && mkdir -p "${COM_ATMOS_INPUT}"
src="${BASE_CPLIC}/${CPL_ATMIC}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc"
tgt="${COM_ATMOS_INPUT}/gfs_ctrl.nc"
${NCP} "${src}" "${tgt}"
rc=$?
(( rc != 0 )) && error_message "${source}" "${target}" "${rc}"
((rc != 0)) && error_message "${src}" "${tgt}" "${rc}"
err=$((err + rc))
case "${OCNRES}" in
"500" | "100") # Only 5 degree or 1 degree ocean does not have MOM.res_[1-4].nc files
;;
"025") # Only 1/4 degree ocean has MOM.res_[1-4].nc files
for nn in $(seq 1 4); do
source="${BASE_CPLIC}/${CPL_OCNIC}/${PDY}${cyc}/ocn/${OCNRES}/MOM.res_${nn}.nc"
if [[ -f "${source}" ]]; then
target="${COM_OCEAN_RESTART}/${PDY}.${cyc}0000.MOM.res_${nn}.nc"
${NCP} "${source}" "${target}"
rc=$?
(( rc != 0 )) && error_message "${source}" "${target}" "${rc}"
err=$((err + rc))
fi
done
;;
*)
echo "FATAL ERROR: Unsupported ocean resolution ${OCNRES}"
rc=1
for ftype in gfs_data sfc_data; do
for ((tt = 1; tt <= 6; tt++)); do
src="${BASE_CPLIC}/${CPL_ATMIC}/${PDY}${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc"
tgt="${COM_ATMOS_INPUT}/${ftype}.tile${tt}.nc"
${NCP} "${src}" "${tgt}"
rc=$?
tgt="${COM_ATMOS_INPUT}/${ftype}.tile${tt}.nc"
${NCP} "${src}" "${tgt}"
rc=$?
((rc != 0)) && error_message "${src}" "${tgt}" "${rc}"
err=$((err + rc))
;;
esac
fi

# Stage ice initial conditions to ROTDIR (warm start)
if [[ "${DO_ICE:-}" = "YES" ]]; then
YMD=${gPDY} HH=${gcyc} generate_com -r COM_ICE_RESTART
[[ ! -d "${COM_ICE_RESTART}" ]] && mkdir -p "${COM_ICE_RESTART}"
ICERESdec=$(echo "${ICERES}" | awk '{printf "%0.2f", $1/100}')
source="${BASE_CPLIC}/${CPL_ICEIC}/${PDY}${cyc}/ice/${ICERES}/cice5_model_${ICERESdec}.res_${PDY}${cyc}.nc"
target="${COM_ICE_RESTART}/${PDY}.${cyc}0000.cice_model.res.nc"
${NCP} "${source}" "${target}"
rc=$?
(( rc != 0 )) && error_message "${source}" "${target}" "${rc}"
err=$((err + rc))
fi
done
done

# Stage the WW3 initial conditions to ROTDIR (warm start; TODO: these should be placed in $RUN.$gPDY/$gcyc)
if [[ "${DO_WAVE:-}" = "YES" ]]; then
YMD=${PDY} HH=${cyc} generate_com -r COM_WAVE_RESTART
[[ ! -d "${COM_WAVE_RESTART}" ]] && mkdir -p "${COM_WAVE_RESTART}"
for grdID in ${waveGRD}; do # TODO: check if this is a bash array; if so adjust
source="${BASE_CPLIC}/${CPL_WAVIC}/${PDY}${cyc}/wav/${grdID}/${PDY}.${cyc}0000.restart.${grdID}"
target="${COM_WAVE_RESTART}/${PDY}.${cyc}0000.restart.${grdID}"
${NCP} "${source}" "${target}"
# Stage ocean initial conditions to ROTDIR (warm start)
if [[ "${DO_OCN:-}" = "YES" ]]; then
YMD=${gPDY} HH=${gcyc} generate_com COM_OCEAN_RESTART
[[ ! -d "${COM_OCEAN_RESTART}" ]] && mkdir -p "${COM_OCEAN_RESTART}"
src="${BASE_CPLIC}/${CPL_OCNIC}/${PDY}${cyc}/${MEMDIR}/ocean/${PDY}.${cyc}0000.MOM.res.nc"
tgt="${COM_OCEAN_RESTART}/${PDY}.${cyc}0000.MOM.res.nc"
${NCP} "${src}" "${tgt}"
rc=$?
(( rc != 0 )) && error_message "${source}" "${target}" "${rc}"
[[ ${rc} -ne 0 ]] && error_message "${src}" "${tgt}" "${rc}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why [[ ${rc} -ne 0 ]] here?
Elsewhere we have (( rc != 0 ))

aerorahul marked this conversation as resolved.
Show resolved Hide resolved
err=$((err + rc))
done
fi
fi
# Stage ice initial conditions to ROTDIR (warm start)
if [[ "${DO_ICE:-}" = "YES" ]]; then
YMD=${gPDY} HH=${gcyc} generate_com COM_ICE_RESTART
[[ ! -d "${COM_ICE_RESTART}" ]] && mkdir -p "${COM_ICE_RESTART}"
src="${BASE_CPLIC}/${CPL_ICEIC}/${PDY}${cyc}/${MEMDIR}/ice/${PDY}.${cyc}0000.cice_model.res.nc"
tgt="${COM_ICE_RESTART}/${PDY}.${cyc}0000.cice_model.res.nc"
${NCP} "${src}" "${tgt}"
rc=$?
((rc != 0)) && error_message "${src}" "${tgt}" "${rc}"
err=$((err + rc))
fi

# Stage the WW3 initial conditions to ROTDIR (warm start; TODO: these should be placed in $RUN.$gPDY/$gcyc)
if [[ "${DO_WAVE:-}" = "YES" ]]; then
YMD=${PDY} HH=${cyc} generate_com COM_WAVE_RESTART
[[ ! -d "${COM_WAVE_RESTART}" ]] && mkdir -p "${COM_WAVE_RESTART}"
for grdID in ${waveGRD}; do # TODO: check if this is a bash array; if so adjust
src="${BASE_CPLIC}/${CPL_WAVIC}/${PDY}${cyc}/${MEMDIR}/wave/${PDY}.${cyc}0000.restart.${grdID}"
tgt="${COM_WAVE_RESTART}/${PDY}.${cyc}0000.restart.${grdID}"
${NCP} "${src}" "${tgt}"
rc=$?
((rc != 0)) && error_message "${src}" "${tgt}" "${rc}"
err=$((err + rc))
done
fi

done # for MEMDIR in "${MEMDIR_ARRAY[@]}"; do
###############################################################
# Check for errors and exit if any of the above failed
if [[ "${err}" -ne 0 ]] ; then
if [[ "${err}" -ne 0 ]]; then
echo "FATAL ERROR: Unable to copy ICs from ${BASE_CPLIC} to ${ROTDIR}; ABORT!"
exit "${err}"
fi
Expand Down
4 changes: 2 additions & 2 deletions workflow/applications/gefs.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def _get_app_configs(self):
"""
Returns the config_files that are involved in gefs
"""
configs = ['fcst']
configs = ['stage_ic', 'fcst']

if self.nens > 0:
configs += ['efcs']
Expand All @@ -32,7 +32,7 @@ def _update_base(base_in):

def get_task_names(self):

tasks = ['fcst']
tasks = ['stage_ic', 'fcst']

if self.nens > 0:
tasks += ['efcs']
Expand Down
2 changes: 1 addition & 1 deletion workflow/hosts/hera.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BASE_GIT: '/scratch1/NCEPDEV/global/glopara/git'
DMPDIR: '/scratch1/NCEPDEV/global/glopara/dump'
BASE_CPLIC: '/scratch1/NCEPDEV/climate/role.ufscpara/IC'
BASE_CPLIC: '/scratch1/NCEPDEV/global/glopara/data/ICSDIR/prototype_ICs'
PACKAGEROOT: '/scratch1/NCEPDEV/global/glopara/nwpara'
COMROOT: '/scratch1/NCEPDEV/global/glopara/com'
COMINsyn: '${COMROOT}/gfs/prod/syndat'
Expand Down
2 changes: 1 addition & 1 deletion workflow/hosts/wcoss2.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BASE_GIT: '/lfs/h2/emc/global/save/emc.global/git'
DMPDIR: '/lfs/h2/emc/dump/noscrub/dump'
BASE_CPLIC: '/lfs/h2/emc/couple/noscrub/Jiande.Wang/IC'
BASE_CPLIC: '/lfs/h2/emc/global/noscrub/emc.global/data/ICSDIR/prototype_ICs'
PACKAGEROOT: '${PACKAGEROOT:-"/lfs/h1/ops/prod/packages"}'
COMROOT: '${COMROOT:-"/lfs/h1/ops/prod/com"}'
COMINsyn: '${COMROOT}/gfs/v16.3/syndat'
Expand Down
Loading