From 2aa654cab3c91696b92463ee933a2e7d090a879f Mon Sep 17 00:00:00 2001 From: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Mon, 28 Nov 2022 23:11:22 -0500 Subject: [PATCH] Adds group size and nmem for GEFS (#1127) Adds additional settings for ensemble forecast group size and number of members since gfs CDUMP (GEFS) will have different values than GDAS. NMEM_EFCS sets the number of members for GEFS (default: 30) NMEM_EFCSGRP_GFS sets the number of members per job for GEFS (default: 1) Fixes #1117 --- jobs/JGDAS_ENKF_FCST | 3 +++ parm/config/config.base.emc.dyn | 1 + parm/config/config.efcs | 1 + scripts/exgdas_enkf_post.sh | 4 ++++ workflow/rocoto/workflow_tasks.py | 2 ++ 5 files changed, 11 insertions(+) diff --git a/jobs/JGDAS_ENKF_FCST b/jobs/JGDAS_ENKF_FCST index c8fc6b3d7f..87bec80a5d 100755 --- a/jobs/JGDAS_ENKF_FCST +++ b/jobs/JGDAS_ENKF_FCST @@ -75,6 +75,9 @@ export FHMAX=$FHMAX_ENKF # Get ENSBEG/ENSEND from ENSGRP and NMEM_EFCSGRP +if [[ $CDUMP == "gfs" ]]; then + export NMEM_EFCSGRP=${NMEM_EFCSGRP_GFS:-${NMEM_EFCSGRP:-1}} +fi export ENSEND=$((NMEM_EFCSGRP * 10#${ENSGRP})) export ENSBEG=$((ENSEND - NMEM_EFCSGRP + 1)) diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index b0a1408117..107441b6be 100755 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -332,6 +332,7 @@ export DO_JEDIENS="NO" # Hybrid related export DOHYBVAR="YES" export NMEM_ENKF=@NMEM_ENKF@ +export NMEM_EFCS=30 export SMOOTH_ENKF="NO" export l4densvar=".true." export lwrite4danl=".true." diff --git a/parm/config/config.efcs b/parm/config/config.efcs index 4dedc38d3a..848ede9a64 100755 --- a/parm/config/config.efcs +++ b/parm/config/config.efcs @@ -24,6 +24,7 @@ export OUTPUT_FILETYPE_SFC="netcdf" # Number of enkf members per fcst job export NMEM_EFCSGRP=2 +export NMEM_EFCSGRP_GFS=1 export RERUN_EFCSGRP="NO" # Turn off inline UPP for EnKF forecast diff --git a/scripts/exgdas_enkf_post.sh b/scripts/exgdas_enkf_post.sh index 2ef2895d19..970dbce6f5 100755 --- a/scripts/exgdas_enkf_post.sh +++ b/scripts/exgdas_enkf_post.sh @@ -46,6 +46,10 @@ SUFFIX=${SUFFIX:-""} FHMIN=${FHMIN_EPOS:-3} FHMAX=${FHMAX_EPOS:-9} FHOUT=${FHOUT_EPOS:-3} + +if [[ $CDUMP == "gfs" ]]; then + NMEM_ENKF=${NMEM_EFCS:-${NMEM_ENKF:-30}} +fi NMEM_ENKF=${NMEM_ENKF:-80} SMOOTH_ENKF=${SMOOTH_ENKF:-"NO"} ENKF_SPREAD=${ENKF_SPREAD:-"NO"} diff --git a/workflow/rocoto/workflow_tasks.py b/workflow/rocoto/workflow_tasks.py index 95791c9ff7..67c2847a53 100644 --- a/workflow/rocoto/workflow_tasks.py +++ b/workflow/rocoto/workflow_tasks.py @@ -1163,6 +1163,8 @@ def efcs(self): groups = self._get_hybgroups(self._base['NMEM_ENKF'], self._configs['efcs']['NMEM_EFCSGRP']) + if self.cdump == "gfs": + groups = self._get_hybgroups(self._base['NMEM_EFCS'], self._configs['efcs']['NMEM_EFCSGRP_GFS']) cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump resources = self.get_resource('efcs') task = create_wf_task('efcs', resources, cdump=self.cdump, envar=efcsenvars, dependency=dependencies,