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

Implement IAU Cycling Type with Marine Data Assimilation Enabled #1944

12 changes: 9 additions & 3 deletions parm/config/gfs/config.resources
Original file line number Diff line number Diff line change
Expand Up @@ -394,13 +394,14 @@ elif [[ "${step}" = "ocnanalrun" ]]; then
case ${CASE} in
C384)
npes=480
export memory_ocnanalchkpt="2.8TB"
memory_ocnanalrun="128GB"
guillaumevernieres marked this conversation as resolved.
Show resolved Hide resolved
;;
C96)
npes=16
;;
C48)
npes=16
memory_ocnanalrun="64GB"
;;
*)
echo "FATAL: Resolution not supported'"
Expand All @@ -409,10 +410,11 @@ elif [[ "${step}" = "ocnanalrun" ]]; then

export wtime_ocnanalrun="00:15:00"
export npe_ocnanalrun=${npes}
export nth_ocnanalrun=1
export nth_ocnanalrun=2
export is_exclusive=True
npe_node_ocnanalrun=$(echo "${npe_node_max} / ${nth_ocnanalrun}" | bc)
export npe_node_ocnanalrun
export memory_ocnanalrun

elif [[ "${step}" = "ocnanalchkpt" ]]; then

Expand Down Expand Up @@ -648,7 +650,11 @@ elif [[ "${step}" = "fcst" || "${step}" = "efcs" ]]; then
declare -x "wtime_${step}"="00:30:00"
declare -x "wtime_${step}_gfs"="03:00:00"
;;
"C384" | "C768" | "C1152")
"C384")
declare -x "wtime_${step}"="00:20:00"
declare -x "wtime_${step}_gfs"="06:00:00"
guillaumevernieres marked this conversation as resolved.
Show resolved Hide resolved
;;
"C768" | "C1152")
declare -x "wtime_${step}"="01:00:00"
declare -x "wtime_${step}_gfs"="06:00:00"
;;
Expand Down
18 changes: 9 additions & 9 deletions parm/ufs/fv3/diag_table_da
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
"fv3_history2d", 0, "hours", 1, "hours", "time"
"ocn_da%4yr%2mo%2dy%2hr", 1, "hours", 1, "hours", "time", 1, "hours"
aerorahul marked this conversation as resolved.
Show resolved Hide resolved

"ocean_model", "geolon", "geolon", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "geolat", "geolat", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "SSH", "ave_ssh", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "MLD_0125", "MLD", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "u", "u", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "v", "v", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "h", "h", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "salt", "Salt", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "temp", "Temp", "ocn_da%4yr%2mo%2dy%2hr", "all", "none", "none", 2
"ocean_model", "geolon", "geolon", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model", "geolat", "geolat", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model", "SSH", "ave_ssh", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model", "MLD_0125", "MLD", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model_z", "u", "u", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model_z", "v", "v", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model_z", "h", "h", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model_z", "salt", "Salt", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model_z", "temp", "Temp", "ocn_da%4yr%2mo%2dy%2hr", "all", .false., "none", 2

"gfs_dyn", "ucomp", "ugrd", "fv3_history", "all", .false., "none", 2
"gfs_dyn", "vcomp", "vgrd", "fv3_history", "all", .false., "none", 2
Expand Down
4 changes: 2 additions & 2 deletions parm/ufs/mom6/MOM_input_template_025
Original file line number Diff line number Diff line change
Expand Up @@ -341,8 +341,8 @@ DIAG_COORDS = "z Z ZSTAR"
! A list of string tuples associating diag_table modules to
! a coordinate definition used for diagnostics. Each string
! is of the form "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME".
DIAG_COORD_DEF_Z="FILE:interpolate_zgrid_40L.nc,interfaces=zw"
DIAG_MISVAL = -1e34
DIAG_COORD_DEF_Z="FILE:@[MOM6_DIAG_COORD_DEF_Z_FILE],interfaces=zw"
DIAG_MISVAL = @[MOM6_DIAG_MISVAL]
!DIAG_COORD_DEF_RHO2 = "FILE:diag_rho2.nc,interfaces=rho2" ! default = "WOA09"
! Determines how to specify the coordinate resolution. Valid options are:
! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2
Expand Down
2 changes: 1 addition & 1 deletion parm/ufs/mom6/MOM_input_template_100
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ DIAG_COORDS = "z Z ZSTAR"
! a coordinate definition used for diagnostics. Each string
! is of the form "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME".
DIAG_COORD_DEF_Z="FILE:@[MOM6_DIAG_COORD_DEF_Z_FILE],interfaces=zw"
DIAG_MISVAL = -1e34
DIAG_MISVAL = @[MOM6_DIAG_MISVAL]
!AVAILABLE_DIAGS_FILE = "available_diags.002160" ! default = "available_diags.000000"
! A file into which to write a list of all available ocean diagnostics that can
! be included in a diag_table.
Expand Down
9 changes: 9 additions & 0 deletions parm/ufs/mom6/MOM_input_template_500
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,15 @@ Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False
! If True, then remap straight to model coordinate from file.

! === module MOM_diag_mediator ===
NUM_DIAG_COORDS = 1
! The number of diagnostic vertical coordinates to use.
! For each coordinate, an entry in DIAG_COORDS must be provided.
DIAG_COORDS = "z Z ZSTAR"
! A list of string tuples associating diag_table modules to
! a coordinate definition used for diagnostics. Each string
! is of the form "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME".
DIAG_COORD_DEF_Z="FILE:@[MOM6_DIAG_COORD_DEF_Z_FILE],interfaces=zw"
DIAG_MISVAL = @[MOM6_DIAG_MISVAL]
Comment on lines +261 to +269
Copy link
Contributor

Choose a reason for hiding this comment

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

Can these templates be updated in the UFS-weather-model.
In the GFS/global-workflow planning meeting, we discussed the need to use these templates from the ufs-weather-model. Jun Wang spent significant amount of time in getting them synced and identified how the S2S without waves in the global-workflow does does not reproduce the configuration in the ufs-weather-model.

In that spirit, please consider syncing these changes in the templates in the ufs-weather-model.

Copy link
Contributor

Choose a reason for hiding this comment

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

@aerorahul I will hopefully be working on this some today. I'll need to get @guillaumevernieres to help check things on Monday he'll be off this afternoon. So timeline is likely early next week.

Copy link
Contributor

Choose a reason for hiding this comment

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

Also need the 1-deg template (MOM_input_template_100) updated

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done @jswhit ... I think. Can you double check?


! === module MOM_MEKE ===
USE_MEKE = True ! [Boolean] default = False
Expand Down
15 changes: 7 additions & 8 deletions ush/forecast_postdet.sh
Original file line number Diff line number Diff line change
Expand Up @@ -678,12 +678,12 @@ MOM6_postdet() {
echo "SUB ${FUNCNAME[0]}: MOM6 after run type determination"

# Copy MOM6 ICs
${NLN} "${COM_OCEAN_RESTART_PREV}/${PDY}.${cyc}0000.MOM.res.nc" "${DATA}/INPUT/MOM.res.nc"
${NLN} "${COM_OCEAN_RESTART_PREV}/${sPDY}.${scyc}0000.MOM.res.nc" "${DATA}/INPUT/MOM.res.nc"
case ${OCNRES} in
"025")
for nn in $(seq 1 4); do
if [[ -f "${COM_OCEAN_RESTART_PREV}/${PDY}.${cyc}0000.MOM.res_${nn}.nc" ]]; then
${NLN} "${COM_OCEAN_RESTART_PREV}/${PDY}.${cyc}0000.MOM.res_${nn}.nc" "${DATA}/INPUT/MOM.res_${nn}.nc"
if [[ -f "${COM_OCEAN_RESTART_PREV}/${sPDY}.${scyc}0000.MOM.res_${nn}.nc" ]]; then
${NLN} "${COM_OCEAN_RESTART_PREV}/${sPDY}.${scyc}0000.MOM.res_${nn}.nc" "${DATA}/INPUT/MOM.res_${nn}.nc"
fi
done
;;
Expand Down Expand Up @@ -904,7 +904,7 @@ CICE_postdet() {

# Copy CICE ICs
echo "Link CICE ICs"
cice_restart_file="${COM_ICE_RESTART_PREV}/${PDY}.${cyc}0000.cice_model.res.nc"
cice_restart_file="${COM_ICE_RESTART_PREV}/${sPDY}.${scyc}0000.cice_model.res.nc"
if [[ ! -f "${cice_restart_file}" ]]; then
echo "FATAL ERROR: CICE restart file not found at '${cice_restart_file}', ABORT!"
exit 112
Expand Down Expand Up @@ -1038,7 +1038,7 @@ GOCART_postdet() {
rm -f "${COM_CHEM_HISTORY}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4"
fi

#To Do: Temporarily removing this as this will crash gocart, adding copy statement at the end
#To Do: Temporarily removing this as this will crash gocart, adding copy statement at the end
#${NLN} "${COM_CHEM_HISTORY}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" \
# "${DATA}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4"
done
Expand All @@ -1049,8 +1049,8 @@ GOCART_out() {

# Copy gocart.inst_aod after the forecast is run (and successfull)
# TO DO: this should be linked but there were issues where gocart was crashing if it was linked
local fhr
local vdate
local fhr
local vdate
for fhr in ${FV3_OUTPUT_FH}; do
if (( fhr == 0 )); then continue; fi
vdate=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${fhr} hours" +%Y%m%d%H)
Expand All @@ -1060,4 +1060,3 @@ GOCART_out() {


}

34 changes: 18 additions & 16 deletions ush/forecast_predet.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,24 @@ common_predet(){
next_cycle=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${assim_freq} hours" +%Y%m%d%H)
forecast_end_cycle=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${FHMAX} hours" +%Y%m%d%H)

# IAU options
IAU_OFFSET=${IAU_OFFSET:-0}
DOIAU=${DOIAU:-"NO"}
if [[ "${DOIAU}" = "YES" ]]; then
sCDATE=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} - 3 hours" +%Y%m%d%H)
sPDY="${sCDATE:0:8}"
scyc="${sCDATE:8:2}"
tPDY=${previous_cycle:0:8}
tcyc=${previous_cycle:8:2}
else
sCDATE=${current_cycle}
sPDY=${current_cycle:0:8}
scyc=${current_cycle:8:2}
tPDY=${sPDY}
tcyc=${scyc}
fi


cd "${DATA}" || ( echo "FATAL ERROR: Unable to 'cd ${DATA}', ABORT!"; exit 8 )
}

Expand Down Expand Up @@ -121,10 +139,8 @@ FV3_predet(){
PREFIX_ATMINC=${PREFIX_ATMINC:-""} # allow ensemble to use recentered increment

# IAU options
DOIAU=${DOIAU:-"NO"}
IAUFHRS=${IAUFHRS:-0}
IAU_DELTHRS=${IAU_DELTHRS:-0}
IAU_OFFSET=${IAU_OFFSET:-0}

# Model config options
ntiles=6
Expand Down Expand Up @@ -216,20 +232,6 @@ FV3_predet(){
mkdir -p "${DATA}/RESTART"
fi

if [[ "${DOIAU}" = "YES" ]]; then
sCDATE=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} - 3 hours" +%Y%m%d%H)
sPDY="${sCDATE:0:8}"
scyc="${sCDATE:8:2}"
tPDY=${previous_cycle:0:8}
tcyc=${previous_cycle:8:2}
else
sCDATE=${current_cycle}
sPDY=${current_cycle:0:8}
scyc=${current_cycle:8:2}
tPDY=${sPDY}
tcyc=${scyc}
fi

echo "SUB ${FUNCNAME[0]}: pre-determination variables set"
}

Expand Down