From 6725bd6b5ac248eb2bad58288f03d1dc550fe9b6 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 3 Oct 2024 13:46:47 -0400 Subject: [PATCH 01/27] working but still wip --- ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml | 12 ++++--- ci/cases/gfsv17/ocnanal.yaml | 2 +- ci/cases/pr/C48mx500_3DVarAOWCDA.yaml | 12 ++++--- env/HERCULES.env | 9 +----- jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN | 11 +++++-- jobs/JGLOBAL_MARINE_ANALYSIS_CHECKPOINT | 1 + jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE | 1 + jobs/JGLOBAL_MARINE_ANALYSIS_INITIALIZE | 1 + jobs/JGLOBAL_MARINE_ANALYSIS_VARIATIONAL | 1 + parm/config/gfs/config.base | 1 + parm/config/gfs/yaml/defaults.yaml | 3 +- ush/forecast_postdet.sh | 7 +++- ush/python/pygfs/task/marine_analysis.py | 37 +++++++++++----------- ush/python/pygfs/task/marine_bmat.py | 2 +- ush/python/pygfs/utils/marine_da_utils.py | 1 - 15 files changed, 57 insertions(+), 44 deletions(-) diff --git a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml index d97c9567e9..e69a5cfae4 100644 --- a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml +++ b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml @@ -6,13 +6,15 @@ arguments: pslot: {{ 'pslot' | getenv }} app: S2S resdetatmos: 384 + resensatmos: 192 resdetocean: 0.25 - nens: 0 - gfs_cyc: 4 - start: cold + nens: 3 + gfs_cyc: 0 + start: warm #cold comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - idate: 2021063000 + idate: 2021063018 edate: 2021070306 - icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2 + #icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2 + icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/hybrid-test yaml: {{ HOMEgfs }}/ci/cases/gfsv17/ocnanal.yaml diff --git a/ci/cases/gfsv17/ocnanal.yaml b/ci/cases/gfsv17/ocnanal.yaml index d559f544e4..2013aeff6c 100644 --- a/ci/cases/gfsv17/ocnanal.yaml +++ b/ci/cases/gfsv17/ocnanal.yaml @@ -8,7 +8,7 @@ base: DO_JEDIOCNVAR: "YES" DO_JEDISNOWDA: "NO" DO_MERGENSST: "NO" - DOHYBVAR: "NO" + DOHYBVAR: "YES" DO_FIT2OBS: "YES" DO_VERFOZN: "YES" DO_VERFRAD: "YES" diff --git a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml index e1b76f0db8..1ed41d7652 100644 --- a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml @@ -6,13 +6,17 @@ arguments: pslot: {{ 'pslot' | getenv }} app: S2S resdetatmos: 48 + resensatmos: 48 resdetocean: 5.0 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 - idate: 2021032412 - edate: 2021032418 - nens: 0 + #icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 + icsdir: /work/noaa/da/gvernier/ensda/ictest + #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/ictest/ + #/scratch1/NCEPDEV/da/Andrew.Eichmann/ICSDIR/C48mx500ens + idate: 2021032418 + edate: 2021032500 + nens: 3 gfs_cyc: 0 start: warm yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_gfs_defaults_ci.yaml diff --git a/env/HERCULES.env b/env/HERCULES.env index 9ec112c699..4c41e922a1 100755 --- a/env/HERCULES.env +++ b/env/HERCULES.env @@ -139,14 +139,7 @@ case ${step} in export APRUN_MARINEANLVAR="${APRUN_default}" ;; "ocnanalecen") - - export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" - - max_threads_per_task=$((max_tasks_per_node / tasks_per_node_ocnanalecen)) - - export NTHREADS_OCNANALECEN=${threads_per_task_ocnanalecen:-${max_threads_per_task}} - [[ ${NTHREADS_OCNANALECEN} -gt ${max_threads_per_task} ]] && export NTHREADS_OCNANALECEN=${max_threads_per_task} - export APRUN_OCNANALECEN="${launcher} -n ${ntasks_ocnanalecen} --cpus-per-task=${NTHREADS_OCNANALECEN}" + export APRUN_OCNANALECEN="${APRUN_default}" ;; "marineanlchkpt") diff --git a/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN b/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN index 7b8bb84809..098ad0d06c 100755 --- a/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN +++ b/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN @@ -1,6 +1,6 @@ #!/bin/bash source "${HOMEgfs}/ush/preamble.sh" -source "${HOMEgfs}/ush/jjob_header.sh" -e "ocnanalecen" -c "base ocnanal ocnanalecen" +source "${HOMEgfs}/ush/jjob_header.sh" -e "ocnanalecen" -c "base marineanl ocnanalecen" ############################################## # Set variables used in the script @@ -12,8 +12,13 @@ export gPDY=${GDATE:0:8} export gcyc=${GDATE:8:2} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ - COM_OCEAN_HISTORY_PREV:COM_OCEAN_HISTORY_TMPL \ - COM_ICE_HISTORY_PREV:COM_ICE_HISTORY_TMPL + COMIN_OCEAN_HISTORY_PREV:COM_OCEAN_HISTORY_TMPL \ + COMIN_ICE_HISTORY_PREV:COM_ICE_HISTORY_TMPL + +YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ + COMOUT_OCEAN_ANALYSIS:COM_OCEAN_ANALYSIS_TMPL \ + COMIN_ICE_RESTART:COM_ICE_RESTART_TMPL \ + COMOUT_ICE_ANALYSIS:COM_ICE_ANALYSIS_TMPL ############################################## # Begin JOB SPECIFIC work diff --git a/jobs/JGLOBAL_MARINE_ANALYSIS_CHECKPOINT b/jobs/JGLOBAL_MARINE_ANALYSIS_CHECKPOINT index 8cd7b1ab7c..7537937f82 100755 --- a/jobs/JGLOBAL_MARINE_ANALYSIS_CHECKPOINT +++ b/jobs/JGLOBAL_MARINE_ANALYSIS_CHECKPOINT @@ -2,6 +2,7 @@ source "${HOMEgfs}/ush/preamble.sh" export WIPE_DATA="NO" export DATAjob="${DATAROOT}/${RUN}marineanalysis.${PDY:-}${cyc}" +export DATAens="${DATAjob}/ensdata" export DATA="${DATAjob}/marinevariational" source "${HOMEgfs}/ush/jjob_header.sh" -e "marineanlchkpt" -c "base marineanl marineanlchkpt" diff --git a/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE b/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE index 2614639184..cdc6dfecc8 100755 --- a/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE +++ b/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE @@ -2,6 +2,7 @@ source "${HOMEgfs}/ush/preamble.sh" export WIPE_DATA="NO" export DATAjob="${DATAROOT}/${RUN}marineanalysis.${PDY:-}${cyc}" +export DATAens="${DATAjob}/ensdata" export DATA="${DATAjob}/marinevariational" source "${HOMEgfs}/ush/jjob_header.sh" -e "marineanlfinal" -c "base marineanl marineanlfinal" diff --git a/jobs/JGLOBAL_MARINE_ANALYSIS_INITIALIZE b/jobs/JGLOBAL_MARINE_ANALYSIS_INITIALIZE index eb167af94d..14f5490a70 100755 --- a/jobs/JGLOBAL_MARINE_ANALYSIS_INITIALIZE +++ b/jobs/JGLOBAL_MARINE_ANALYSIS_INITIALIZE @@ -2,6 +2,7 @@ source "${HOMEgfs}/ush/preamble.sh" export DATAjob="${DATAROOT}/${RUN}marineanalysis.${PDY:-}${cyc}" +export DATAens="${DATAjob}/ensdata" export DATA="${DATAjob}/marinevariational" source "${HOMEgfs}/ush/jjob_header.sh" -e "marineanlinit" -c "base marineanl marineanlinit" diff --git a/jobs/JGLOBAL_MARINE_ANALYSIS_VARIATIONAL b/jobs/JGLOBAL_MARINE_ANALYSIS_VARIATIONAL index 7780353294..1bc476bffc 100755 --- a/jobs/JGLOBAL_MARINE_ANALYSIS_VARIATIONAL +++ b/jobs/JGLOBAL_MARINE_ANALYSIS_VARIATIONAL @@ -3,6 +3,7 @@ source "${HOMEgfs}/ush/preamble.sh" export WIPE_DATA="NO" export DATAjob="${DATAROOT}/${RUN}marineanalysis.${PDY:-}${cyc}" +export DATAens="${DATAjob}/ensdata" export DATA="${DATAjob}/marinevariational" source "${HOMEgfs}/ush/jjob_header.sh" -e "marineanlvar" -c "base marineanl marineanlvar" diff --git a/parm/config/gfs/config.base b/parm/config/gfs/config.base index 7fa8245057..dd09c074ff 100644 --- a/parm/config/gfs/config.base +++ b/parm/config/gfs/config.base @@ -359,6 +359,7 @@ export DO_JEDIATMENS="@DO_JEDIATMENS@" export DO_JEDIOCNVAR="@DO_JEDIOCNVAR@" export DO_JEDISNOWDA="@DO_JEDISNOWDA@" export DO_MERGENSST="@DO_MERGENSST@" +export DO_STARTMEM_FROM_JEDIICE="@DO_STARTMEM_FROM_JEDIICE@" # Hybrid related export DOHYBVAR="@DOHYBVAR@" diff --git a/parm/config/gfs/yaml/defaults.yaml b/parm/config/gfs/yaml/defaults.yaml index dfc67d1237..82c00d2aac 100644 --- a/parm/config/gfs/yaml/defaults.yaml +++ b/parm/config/gfs/yaml/defaults.yaml @@ -5,6 +5,7 @@ base: DO_JEDIOCNVAR: "NO" DO_JEDISNOWDA: "NO" DO_MERGENSST: "NO" + DO_STARTMEM_FROM_JEDIICE: "NO" DO_GOES: "NO" DO_BUFRSND: "NO" DO_GEMPAK: "NO" @@ -43,7 +44,7 @@ atmensanlobs: atmensanlsol: JCB_ALGO_YAML: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" - + aeroanl: IO_LAYOUT_X: 1 IO_LAYOUT_Y: 1 diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 58755d41d9..3ab74bbfcc 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -585,7 +585,12 @@ CICE_postdet() { else # "${RERUN}" == "NO" restart_date="${model_start_date_current_cycle}" cice_restart_file="${COMIN_ICE_RESTART_PREV}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model.res.nc" - if [[ "${DO_JEDIOCNVAR:-NO}" == "YES" ]]; then + # Start the deterministic from the JEDI/SOCA analysis if the Marine DA in ON + if (( MEMBER == 0 )) && [[ "${DO_JEDIOCNVAR:-NO}" == "YES" ]]; then + cice_restart_file="${COMIN_ICE_ANALYSIS}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model_anl.res.nc" + fi + # Ignore the JEDI/SOCA ensemble analysis for the ensemble members if DO_START_FROM_JEDIICE is OFF + if (( MEMBER > 0 )) && [[ "${DO_JEDIOCNVAR:-NO}" == "YES" ]] && [[ "${DO_STARTMEM_FROM_JEDIICE:-NO}" == "YES" ]]; then cice_restart_file="${COMIN_ICE_ANALYSIS}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model_anl.res.nc" fi fi diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 4e4311b906..ddf3da7a27 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -51,9 +51,9 @@ def __init__(self, config): _window_begin = add_to_datetime(self.task_config.current_cycle, -to_timedelta(f"{self.task_config.assim_freq}H") / 2) _window_end = add_to_datetime(self.task_config.current_cycle, to_timedelta(f"{self.task_config.assim_freq}H") / 2) - # compute the relative path from self.task_config.DATA to self.task_config.DATAenspert + # compute the relative path from self.task_config.DATA to self.task_config.DATAens if self.task_config.NMEM_ENS > 0: - _enspert_relpath = os.path.relpath(self.task_config.DATAenspert, self.task_config.DATA) + _enspert_relpath = os.path.relpath(self.task_config.DATAens, self.task_config.DATA) else: _enspert_relpath = None @@ -69,7 +69,8 @@ def __init__(self, config): 'MARINE_WINDOW_MIDDLE_ISO': self.task_config.current_cycle.strftime('%Y-%m-%dT%H:%M:%SZ'), 'ENSPERT_RELPATH': _enspert_relpath, 'CALC_SCALE_EXEC': _calc_scale_exec, - 'OPREFIX': f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z." + 'OPREFIX': f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.", + 'APREFIX': f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z." } ) @@ -110,10 +111,14 @@ def initialize(self: Task) -> None: os.symlink('../staticb', 'staticb') # hybrid EnVAR case - if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS > 2: - # stage ensemble membersfiles for use in hybrid background error - logger.debug(f"Stage ensemble members for the hybrid background error") - mdau.stage_ens_mem(self.task_config) + if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS >= 3: + # stage the ensemble weights + logger.debug(f"Stage ensemble weights for the hybrid background error") + FileHandler({'copy': [[os.path.join(self.task_config.COMIN_OCEAN_BMATRIX, f'{self.task_config.APREFIX}ocean.ens_weights.nc'), + os.path.join(self.task_config.DATA, 'ocean.ens_weights.nc')], + [os.path.join(self.task_config.COMIN_ICE_BMATRIX, f'{self.task_config.APREFIX}ice.ens_weights.nc'), + os.path.join(self.task_config.DATA, 'ice.ens_weights.nc')] + ]}).sync() # prepare the yaml configuration to run the SOCA variational application self._prep_variational_yaml() @@ -137,8 +142,8 @@ def _fetch_observations(self: Task) -> None: obs_files = [] for ob in obs_list_config['observations']['observers']: - logger.info(f"******** {self.task_config.OPREFIX}{ob['obs space']['name'].lower()}.{to_YMD(self.task_config.PDY)}{self.task_config.cyc}.nc4") - obs_files.append(f"{self.task_config.OPREFIX}{ob['obs space']['name'].lower()}.{to_YMD(self.task_config.PDY)}{self.task_config.cyc}.nc4") + logger.info(f"******** {self.task_config.OPREFIX}{ob['obs space']['name'].lower()}.{to_YMD(self.task_config.PDY)}{self.task_config.cyc:02d}.nc4") + obs_files.append(f"{self.task_config.OPREFIX}{ob['obs space']['name'].lower()}.{to_YMD(self.task_config.PDY)}{self.task_config.cyc:02d}.nc4") obs_list = [] # copy obs from COM_OBS to DATA/obs @@ -202,7 +207,7 @@ def _prep_variational_yaml(self: Task) -> None: envconfig_jcb['PARMgfs'] = self.task_config.PARMgfs envconfig_jcb['nmem_ens'] = self.task_config.NMEM_ENS envconfig_jcb['berror_model'] = 'marine_background_error_static_diffusion' - if self.task_config.NMEM_ENS > 3: + if self.task_config.NMEM_ENS >= 3: envconfig_jcb['berror_model'] = 'marine_background_error_hybrid_diffusion_diffusion' envconfig_jcb['DATA'] = self.task_config.DATA envconfig_jcb['OPREFIX'] = self.task_config.OPREFIX @@ -219,12 +224,8 @@ def _prep_variational_yaml(self: Task) -> None: jcb_base_yaml = os.path.join(self.task_config.PARMsoca, 'marine-jcb-base.yaml') jcb_algo_yaml = os.path.join(self.task_config.PARMsoca, 'marine-jcb-3dfgat.yaml.j2') - jcb_base_config = YAMLFile(path=jcb_base_yaml) - jcb_base_config = Template.substitute_structure(jcb_base_config, TemplateConstants.DOUBLE_CURLY_BRACES, envconfig_jcb.get) - jcb_base_config = Template.substitute_structure(jcb_base_config, TemplateConstants.DOLLAR_PARENTHESES, envconfig_jcb.get) - jcb_algo_config = YAMLFile(path=jcb_algo_yaml) - jcb_algo_config = Template.substitute_structure(jcb_algo_config, TemplateConstants.DOUBLE_CURLY_BRACES, envconfig_jcb.get) - jcb_algo_config = Template.substitute_structure(jcb_algo_config, TemplateConstants.DOLLAR_PARENTHESES, envconfig_jcb.get) + jcb_base_config = parse_j2yaml(path=jcb_base_yaml, data=envconfig_jcb) + jcb_algo_config = parse_j2yaml(path=jcb_algo_yaml, data=envconfig_jcb) # Override base with the application specific config jcb_config = {**jcb_base_config, **jcb_algo_config} @@ -381,12 +382,10 @@ def list_all_files(dir_in, dir_out, wc='*', fh_list=[]): os.path.join(com_ocean_analysis, f'{RUN}.t{cyc}z.{domain}ana.nc')]) # Copy of the ssh diagnostics - ''' if nmem_ens > 2: for string in ['ssh_steric_stddev', 'ssh_unbal_stddev', 'ssh_total_stddev', 'steric_explained_variance']: - post_file_list.append([os.path.join(anl_dir, 'static_ens', f'ocn.{string}.incr.{bdate}.nc'), + post_file_list.append([os.path.join(anl_dir, 'staticb', f'ocn.{string}.incr.{bdate}.nc'), os.path.join(com_ocean_analysis, f'{RUN}.t{cyc}z.ocn.{string}.nc')]) - ''' # Copy DA grid (computed for the start of the window) post_file_list.append([os.path.join(anl_dir, 'soca_gridspec.nc'), diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index 93329f05ac..d8f0e2dbf6 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -318,7 +318,7 @@ def finalize(self: Task) -> None: FileHandler({'copy': diagb_list}).sync() # Copy the ensemble perturbation diagnostics to the ROTDIR - if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS > 3: + if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS >= 3: window_middle_iso = self.task_config.MARINE_WINDOW_MIDDLE.strftime('%Y-%m-%dT%H:%M:%SZ') weight_list = [] src = os.path.join(self.task_config.DATA, f"ocn.ens_weights.incr.{window_middle_iso}.nc") diff --git a/ush/python/pygfs/utils/marine_da_utils.py b/ush/python/pygfs/utils/marine_da_utils.py index e1b2ac2d4d..68b730aee7 100644 --- a/ush/python/pygfs/utils/marine_da_utils.py +++ b/ush/python/pygfs/utils/marine_da_utils.py @@ -87,7 +87,6 @@ def test_hist_date(histfile: str, ref_date: datetime) -> None: hist_date = dparser.parse(ncf.variables['time'].units, fuzzy=True) + timedelta(hours=int(ncf.variables['time'][0])) ncf.close() logger.info(f"*** history file date: {hist_date} expected date: {ref_date}") - if hist_date != ref_date: raise ValueError(f"FATAL ERROR: Inconsistent bkg date'") From f8418d849063181c81a5881f40ae8849c867fbd9 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 8 Oct 2024 08:48:37 -0500 Subject: [PATCH 02/27] fixed ic staging and deps --- parm/stage/ice.yaml.j2 | 9 ++++++++- scripts/exglobal_stage_ic.py | 2 +- ush/forecast_postdet.sh | 2 +- workflow/rocoto/gfs_tasks.py | 4 +++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/parm/stage/ice.yaml.j2 b/parm/stage/ice.yaml.j2 index 0e0aa40c7f..241f45a35b 100644 --- a/parm/stage/ice.yaml.j2 +++ b/parm/stage/ice.yaml.j2 @@ -1,5 +1,12 @@ +{% set START_ICE_FROM_ANA = False %} +{% if DO_JEDIOCNVAR == True and RUN == 'gdas' %} + {% set START_ICE_FROM_ANA = True %} +{% endif %} +{% if DO_STARTMEM_FROM_JEDIICE == False and RUN == 'enkfgdas' %} + {% set START_ICE_FROM_ANA = False %} +{% endif %} ice: - {% if DO_JEDIOCNVAR == True %} + {% if START_ICE_FROM_ANA == True %} mkdir: {% for mem in range(first_mem, last_mem + 1) %} {% set imem = mem - first_mem %} diff --git a/scripts/exglobal_stage_ic.py b/scripts/exglobal_stage_ic.py index d737d83b47..2ff4eb9927 100755 --- a/scripts/exglobal_stage_ic.py +++ b/scripts/exglobal_stage_ic.py @@ -21,7 +21,7 @@ def main(): keys = ['RUN', 'MODE', 'EXP_WARM_START', 'NMEM_ENS', 'assim_freq', 'current_cycle', 'previous_cycle', 'ROTDIR', 'ICSDIR', 'STAGE_IC_YAML_TMPL', 'DO_JEDIATMVAR', - 'OCNRES', 'waveGRD', 'ntiles', 'DOIAU', 'DO_JEDIOCNVAR', + 'OCNRES', 'waveGRD', 'ntiles', 'DOIAU', 'DO_JEDIOCNVAR', 'DO_STARTMEM_FROM_JEDIICE', 'REPLAY_ICS', 'DO_WAVE', 'DO_OCN', 'DO_ICE', 'DO_NEST'] stage_dict = AttrDict() diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 3ab74bbfcc..5f8ab9acbd 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -463,7 +463,7 @@ MOM6_postdet() { # TODO if [[ $RUN} == "gefs" ]] block maybe be needed # to ensure it does not interfere with the GFS when ensemble is updated in the GFS if (( MEMBER > 0 )) && [[ "${ODA_INCUPD:-False}" == "True" ]]; then - ${NCP} "${COMIN_OCEAN_ANALYSIS}/mom6_increment.nc" "${DATA}/INPUT/mom6_increment.nc" \ + ${NCP} "${COMIN_OCEAN_ANALYSIS}/${RUN}.t${cyc}z.ocninc.nc" "${DATA}/INPUT/mom6_increment.nc" \ || ( echo "FATAL ERROR: Unable to copy ensemble MOM6 increment, ABORT!"; exit 1 ) fi fi # if [[ "${RERUN}" == "NO" ]]; then diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 6b9d6358c6..52089daa52 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -673,7 +673,9 @@ def marinebmat(self): data = f'{ocean_hist_path}/gdas.ocean.t@Hz.inst.f009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep=deps) + dep_dict = {'type': 'metatask', 'name': f'{self.run}fcst', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('marinebmat') task_name = f'{self.run}marinebmat' From 4f009630dafd78dfad20fd84288433781cc7462a Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 10 Oct 2024 17:50:10 -0500 Subject: [PATCH 03/27] wip --- ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml | 6 ++++-- ci/cases/gfsv17/ocnanal.yaml | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml index e69a5cfae4..214beb9f60 100644 --- a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml +++ b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml @@ -8,7 +8,7 @@ arguments: resdetatmos: 384 resensatmos: 192 resdetocean: 0.25 - nens: 3 + nens: 30 gfs_cyc: 0 start: warm #cold comroot: {{ 'RUNTESTS' | getenv }}/COMROOT @@ -16,5 +16,7 @@ arguments: idate: 2021063018 edate: 2021070306 #icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2 - icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/hybrid-test + #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/hybrid-test + #icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75 + icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75/ yaml: {{ HOMEgfs }}/ci/cases/gfsv17/ocnanal.yaml diff --git a/ci/cases/gfsv17/ocnanal.yaml b/ci/cases/gfsv17/ocnanal.yaml index 2013aeff6c..5955866eb7 100644 --- a/ci/cases/gfsv17/ocnanal.yaml +++ b/ci/cases/gfsv17/ocnanal.yaml @@ -24,4 +24,5 @@ marineanl: prepoceanobs: SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml OBSPREP_YAML: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obsprep/obsprep_config.yaml - DMPDIR: /scratch1/NCEPDEV/da/common/ + #DMPDIR: /scratch1/NCEPDEV/da/common/ + DMPDIR: /work/noaa/da/marineda/gfs-marine/data/obs From 4792b44d5a918b160e7250eecaf034d7375388f2 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Wed, 16 Oct 2024 14:02:26 -0500 Subject: [PATCH 04/27] ens fcst waits for marine DA --- ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml | 16 ++++------- ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml | 19 +++++++++++++ .../gfsv17/{ocnanal.yaml => marine3dvar.yaml} | 8 +----- ci/cases/gfsv17/marinehyb.yaml | 21 ++++++++++++++ ci/cases/pr/C48mx500_3DVarAOWCDA.yaml | 14 ++++------ ci/cases/pr/C48mx500_hybAOWCDA.yaml | 28 +++++++++++++++++++ ush/python/pygfs/task/marine_analysis.py | 2 +- workflow/rocoto/gfs_tasks.py | 8 ++++-- 8 files changed, 87 insertions(+), 29 deletions(-) create mode 100644 ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml rename ci/cases/gfsv17/{ocnanal.yaml => marine3dvar.yaml} (64%) create mode 100644 ci/cases/gfsv17/marinehyb.yaml create mode 100644 ci/cases/pr/C48mx500_hybAOWCDA.yaml diff --git a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml index 214beb9f60..ad74a1dcc8 100644 --- a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml +++ b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml @@ -6,17 +6,13 @@ arguments: pslot: {{ 'pslot' | getenv }} app: S2S resdetatmos: 384 - resensatmos: 192 resdetocean: 0.25 - nens: 30 - gfs_cyc: 0 - start: warm #cold + nens: 0 + gfs_cyc: 4 + start: cold comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - idate: 2021063018 + idate: 2021063000 edate: 2021070306 - #icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2 - #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/hybrid-test - #icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75 - icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75/ - yaml: {{ HOMEgfs }}/ci/cases/gfsv17/ocnanal.yaml + icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2 + yaml: {{ HOMEgfs }}/ci/cases/gfsv17/marine3dvar.yaml diff --git a/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml b/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml new file mode 100644 index 0000000000..bf89a9cb50 --- /dev/null +++ b/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml @@ -0,0 +1,19 @@ +experiment: + system: gfs + mode: cycled + +arguments: + pslot: {{ 'pslot' | getenv }} + app: S2S + resdetatmos: 384 + resensatmos: 192 + resdetocean: 0.25 + nens: 30 + gfs_cyc: 0 + start: warm #cold + comroot: {{ 'RUNTESTS' | getenv }}/COMROOT + expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR + idate: 2021063018 + edate: 2021070306 + icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75/ + yaml: {{ HOMEgfs }}/ci/cases/gfsv17/marinehyb.yaml diff --git a/ci/cases/gfsv17/ocnanal.yaml b/ci/cases/gfsv17/marine3dvar.yaml similarity index 64% rename from ci/cases/gfsv17/ocnanal.yaml rename to ci/cases/gfsv17/marine3dvar.yaml index 5955866eb7..641e2c53ff 100644 --- a/ci/cases/gfsv17/ocnanal.yaml +++ b/ci/cases/gfsv17/marine3dvar.yaml @@ -8,7 +8,7 @@ base: DO_JEDIOCNVAR: "YES" DO_JEDISNOWDA: "NO" DO_MERGENSST: "NO" - DOHYBVAR: "YES" + DOHYBVAR: "NO" DO_FIT2OBS: "YES" DO_VERFOZN: "YES" DO_VERFRAD: "YES" @@ -20,9 +20,3 @@ marineanl: SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml SOCA_NINNER: 100 - -prepoceanobs: - SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml - OBSPREP_YAML: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obsprep/obsprep_config.yaml - #DMPDIR: /scratch1/NCEPDEV/da/common/ - DMPDIR: /work/noaa/da/marineda/gfs-marine/data/obs diff --git a/ci/cases/gfsv17/marinehyb.yaml b/ci/cases/gfsv17/marinehyb.yaml new file mode 100644 index 0000000000..c83625ac97 --- /dev/null +++ b/ci/cases/gfsv17/marinehyb.yaml @@ -0,0 +1,21 @@ +defaults: + !INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml + +base: + DOIAU: "YES" + DO_JEDIATMVAR: "NO" + DO_JEDIATMENS: "NO" + DO_JEDIOCNVAR: "YES" + DO_JEDISNOWDA: "NO" + DO_MERGENSST: "NO" + DOHYBVAR: "YES" + DO_FIT2OBS: "YES" + DO_VERFOZN: "YES" + DO_VERFRAD: "YES" + DO_VRFY_OCEANDA: "NO" + FHMAX_GFS: 240 + ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} + +marineanl: + SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca + SOCA_NINNER: 20 # revert to ~100 after the memory leak is fixed diff --git a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml index 1ed41d7652..7122b251cd 100644 --- a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml @@ -6,17 +6,13 @@ arguments: pslot: {{ 'pslot' | getenv }} app: S2S resdetatmos: 48 - resensatmos: 48 resdetocean: 5.0 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - #icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 - icsdir: /work/noaa/da/gvernier/ensda/ictest - #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/ictest/ - #/scratch1/NCEPDEV/da/Andrew.Eichmann/ICSDIR/C48mx500ens - idate: 2021032418 - edate: 2021032500 - nens: 3 + icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 + idate: 2021032412 + edate: 2021032418 + nens: 0 gfs_cyc: 0 start: warm yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_gfs_defaults_ci.yaml @@ -25,4 +21,4 @@ skip_ci_on_hosts: - wcoss2 - gaea - orion - - hercules + diff --git a/ci/cases/pr/C48mx500_hybAOWCDA.yaml b/ci/cases/pr/C48mx500_hybAOWCDA.yaml new file mode 100644 index 0000000000..c59b30e66a --- /dev/null +++ b/ci/cases/pr/C48mx500_hybAOWCDA.yaml @@ -0,0 +1,28 @@ +experiment: + system: gfs + mode: cycled + +arguments: + pslot: {{ 'pslot' | getenv }} + app: S2S + resdetatmos: 48 + resensatmos: 48 + resdetocean: 5.0 + comroot: {{ 'RUNTESTS' | getenv }}/COMROOT + expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR + #icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 + icsdir: /work/noaa/da/gvernier/ensda/ictest + #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/ictest/ + #/scratch1/NCEPDEV/da/Andrew.Eichmann/ICSDIR/C48mx500ens + idate: 2021032418 + edate: 2021032500 + nens: 3 + gfs_cyc: 0 + start: warm + yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_gfs_defaults_ci.yaml + +skip_ci_on_hosts: + - wcoss2 + - gaea + - orion + diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index ddf3da7a27..88b13f8742 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -118,7 +118,7 @@ def initialize(self: Task) -> None: os.path.join(self.task_config.DATA, 'ocean.ens_weights.nc')], [os.path.join(self.task_config.COMIN_ICE_BMATRIX, f'{self.task_config.APREFIX}ice.ens_weights.nc'), os.path.join(self.task_config.DATA, 'ice.ens_weights.nc')] - ]}).sync() + ]}).sync() # prepare the yaml configuration to run the SOCA variational application self._prep_variational_yaml() diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 52089daa52..e0a9e3eb48 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -673,8 +673,10 @@ def marinebmat(self): data = f'{ocean_hist_path}/gdas.ocean.t@Hz.inst.f009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'metatask', 'name': f'{self.run}fcst', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} - deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_hybvar: + dep_dict = {'type': 'metatask', 'name': 'enkfgdasfcst', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('marinebmat') @@ -2731,6 +2733,8 @@ def efcs(self): deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'task', 'name': f'{self.run}esfc'} deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalecen'} + deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dep_dict = {'type': 'task', 'name': f'{self.run}stage_ic'} dependencies.append(rocoto.add_dependency(dep_dict)) From ca9de605307b0c92fff3c155474735552d15cf46 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 17 Oct 2024 14:34:54 -0500 Subject: [PATCH 05/27] works but needs tidy --- ci/cases/pr/C48mx500_hybAOWCDA.yaml | 1 - ush/python/pygfs/task/marine_analysis.py | 1 + ush/python/pygfs/utils/marine_da_utils.py | 34 +++++++++++++++++++++++ workflow/rocoto/gfs_tasks.py | 4 +-- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/ci/cases/pr/C48mx500_hybAOWCDA.yaml b/ci/cases/pr/C48mx500_hybAOWCDA.yaml index c59b30e66a..443da1d227 100644 --- a/ci/cases/pr/C48mx500_hybAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_hybAOWCDA.yaml @@ -13,7 +13,6 @@ arguments: #icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 icsdir: /work/noaa/da/gvernier/ensda/ictest #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/ictest/ - #/scratch1/NCEPDEV/da/Andrew.Eichmann/ICSDIR/C48mx500ens idate: 2021032418 edate: 2021032500 nens: 3 diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 88b13f8742..73f9509733 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -215,6 +215,7 @@ def _prep_variational_yaml(self: Task) -> None: envconfig_jcb['cyc'] = os.getenv('cyc') envconfig_jcb['SOCA_NINNER'] = self.task_config.SOCA_NINNER envconfig_jcb['obs_list'] = ['adt_rads_all'] + envconfig_jcb['MOM6_LEVS'] = mdau.get_mom6_levels(str(self.task_config.OCNRES)) # Write obs_list_short save_as_yaml(parse_obs_list_file(self.task_config.MARINE_OBS_LIST_YAML), 'obs_list_short.yaml') diff --git a/ush/python/pygfs/utils/marine_da_utils.py b/ush/python/pygfs/utils/marine_da_utils.py index 68b730aee7..50d9d84e86 100644 --- a/ush/python/pygfs/utils/marine_da_utils.py +++ b/ush/python/pygfs/utils/marine_da_utils.py @@ -87,6 +87,7 @@ def test_hist_date(histfile: str, ref_date: datetime) -> None: hist_date = dparser.parse(ncf.variables['time'].units, fuzzy=True) + timedelta(hours=int(ncf.variables['time'][0])) ncf.close() logger.info(f"*** history file date: {hist_date} expected date: {ref_date}") + if hist_date != ref_date: raise ValueError(f"FATAL ERROR: Inconsistent bkg date'") @@ -165,3 +166,36 @@ def clean_empty_obsspaces(config, target, app='var'): # save cleaned yaml save_as_yaml(config, target) + + +@logit(logger) +def get_mom6_levels(ocnres: str) -> int: + """ + Temporary function that returns the number of vertical levels in MOM6 given the horizontal resolution. + This is requiered by the diffusion saber block that now makes use of oops::util::FieldSetHelpers::writeFieldSet + and requires the number of levels in the configuration. I have been told this will be changed in the future. + + Parameters + ----------- + ocnres: str + Input resolution for ocean in str format. e.g. '500', '100', '050', '025' + + Returns + ------- + nlev: int + number of levels in the ocean model given an input resolution + """ + + # Currently implemented resolutions + ocnres_to_nlev = { + '500': 25, + '100': 75, + '050': 75, + '025': 75 + } + try: + nlev = ocnres_to_nlev.get(ocnres) + except KeyError: + raise KeyError("FATAL ERROR: Invalid ocnres value. Aborting.") + + return nlev diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 7218911d24..18f28139f6 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -674,7 +674,7 @@ def marinebmat(self): dep_dict = {'type': 'data', 'data': data, 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_hybvar: - dep_dict = {'type': 'metatask', 'name': 'enkfgdasfcst', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} + dep_dict = {'type': 'metatask', 'name': 'enkfgdas_fcst', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) @@ -2733,7 +2733,7 @@ def efcs(self): deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'task', 'name': f'{self.run}_esfc'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalecen'} + dep_dict = {'type': 'task', 'name': f'{self.run.replace('enkf', '')}_ocnanalecen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dep_dict = {'type': 'task', 'name': f'{self.run}_stage_ic'} From adc9a2cee45e669e52cbc74caaf90efe0c29a586 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 17 Oct 2024 14:39:28 -0500 Subject: [PATCH 06/27] fixed pynorm --- ush/python/pygfs/task/marine_analysis.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 73f9509733..5e9725ba76 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -117,8 +117,7 @@ def initialize(self: Task) -> None: FileHandler({'copy': [[os.path.join(self.task_config.COMIN_OCEAN_BMATRIX, f'{self.task_config.APREFIX}ocean.ens_weights.nc'), os.path.join(self.task_config.DATA, 'ocean.ens_weights.nc')], [os.path.join(self.task_config.COMIN_ICE_BMATRIX, f'{self.task_config.APREFIX}ice.ens_weights.nc'), - os.path.join(self.task_config.DATA, 'ice.ens_weights.nc')] - ]}).sync() + os.path.join(self.task_config.DATA, 'ice.ens_weights.nc')]]}).sync() # prepare the yaml configuration to run the SOCA variational application self._prep_variational_yaml() From e4ea25be73579bcaf9816b9d0bc6186c57b0ef63 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 17 Oct 2024 14:53:41 -0500 Subject: [PATCH 07/27] ... --- workflow/rocoto/gfs_tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 18f28139f6..75a435f12e 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -2733,7 +2733,7 @@ def efcs(self): deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'task', 'name': f'{self.run}_esfc'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.run.replace('enkf', '')}_ocnanalecen'} + dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf", "")}_ocnanalecen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dep_dict = {'type': 'task', 'name': f'{self.run}_stage_ic'} From 1a95260975fad19a516ebd4bb4df2f652bbb7e14 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Mon, 28 Oct 2024 08:04:32 -0500 Subject: [PATCH 08/27] wip --- ush/python/pygfs/task/marine_bmat.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index d8f0e2dbf6..893cc62750 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -43,7 +43,8 @@ def __init__(self, config): 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, 'ENSPERT_RELPATH': _enspert_relpath, 'CALC_SCALE_EXEC': _calc_scale_exec, - 'APREFIX': f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z." + 'APREFIX': f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.", + 'MOM6_LEVS': mdau.get_mom6_levels(str(self.task_config.OCNRES)) } ) From b06b9c969d32166ae3f80a246acf49ba65e0a99f Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 29 Oct 2024 14:31:42 -0400 Subject: [PATCH 09/27] Update ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml Co-authored-by: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> --- ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml b/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml index bf89a9cb50..1fee03e04d 100644 --- a/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml +++ b/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml @@ -9,7 +9,7 @@ arguments: resensatmos: 192 resdetocean: 0.25 nens: 30 - gfs_cyc: 0 + interval: 0 start: warm #cold comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR From 446b3a23959914b96ad9e0ef1ddcf8794cb2cf79 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 31 Oct 2024 09:58:54 -0500 Subject: [PATCH 10/27] cold to warm, fixed ocnres --- ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml | 7 ++++--- ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml | 2 +- ci/cases/pr/C48mx500_hybAOWCDA.yaml | 3 +-- ush/python/pygfs/task/marine_analysis.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml index 16fbb74939..4147249a4c 100644 --- a/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml +++ b/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml @@ -9,10 +9,11 @@ arguments: resdetocean: 0.25 nens: 0 interval: 6 - start: cold + start: warm comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - idate: 2021063000 + idate: 2021063018 edate: 2021070306 - icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2 + #icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2 + icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75/ yaml: {{ HOMEgfs }}/ci/cases/gfsv17/marine3dvar.yaml diff --git a/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml b/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml index 1fee03e04d..f0e0b42c28 100644 --- a/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml +++ b/ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml @@ -10,7 +10,7 @@ arguments: resdetocean: 0.25 nens: 30 interval: 0 - start: warm #cold + start: warm comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR idate: 2021063018 diff --git a/ci/cases/pr/C48mx500_hybAOWCDA.yaml b/ci/cases/pr/C48mx500_hybAOWCDA.yaml index 443da1d227..eadb179fb9 100644 --- a/ci/cases/pr/C48mx500_hybAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_hybAOWCDA.yaml @@ -16,7 +16,7 @@ arguments: idate: 2021032418 edate: 2021032500 nens: 3 - gfs_cyc: 0 + interval: 0 start: warm yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_gfs_defaults_ci.yaml @@ -24,4 +24,3 @@ skip_ci_on_hosts: - wcoss2 - gaea - orion - diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 5e9725ba76..b75ad4ba61 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -214,7 +214,7 @@ def _prep_variational_yaml(self: Task) -> None: envconfig_jcb['cyc'] = os.getenv('cyc') envconfig_jcb['SOCA_NINNER'] = self.task_config.SOCA_NINNER envconfig_jcb['obs_list'] = ['adt_rads_all'] - envconfig_jcb['MOM6_LEVS'] = mdau.get_mom6_levels(str(self.task_config.OCNRES)) + envconfig_jcb['MOM6_LEVS'] = mdau.get_mom6_levels(str(self.task_config.OCNRES).zfill(3)) # Write obs_list_short save_as_yaml(parse_obs_list_file(self.task_config.MARINE_OBS_LIST_YAML), 'obs_list_short.yaml') From 6b6417d46ffd27ecec4b2a6e6f911eb9563e8098 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Fri, 1 Nov 2024 11:59:44 -0400 Subject: [PATCH 11/27] wcoss env --- env/WCOSS2.env | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/env/WCOSS2.env b/env/WCOSS2.env index c67c16f929..5404dd2c59 100755 --- a/env/WCOSS2.env +++ b/env/WCOSS2.env @@ -109,17 +109,16 @@ elif [[ "${step}" = "marinebmat" ]]; then export APRUNCFP="${launcher} -n \$ncmd --multi-prog" export APRUN_MARINEBMAT="${APRUN_default}" -elif [[ "${step}" = "ocnanalrun" ]]; then +elif [[ "${step}" = "marineanlvar" ]]; then export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + export APRUN_MARINEANLVAR="${APRUN_default}" - export APRUN_OCNANAL="${APRUN_default}" - -elif [[ "${step}" = "ocnanalchkpt" ]]; then +elif [[ "${step}" = "marineanlchkpt" ]]; then export APRUNCFP="${launcher} -n \$ncmd --multi-prog" - export APRUN_OCNANAL="${APRUN_default}" + export APRUN_MARINEANLCHKPT="${APRUN_default}" elif [[ "${step}" = "ocnanalecen" ]]; then @@ -130,7 +129,7 @@ elif [[ "${step}" = "marineanlletkf" ]]; then export NTHREADS_MARINEANLLETKF=${NTHREADSmax} export APRUN_MARINEANLLETKF="${APRUN_default}" - + elif [[ "${step}" = "atmanlfv3inc" ]]; then export NTHREADS_ATMANLFV3INC=${NTHREADSmax} From abf06ae01e75a794a3c28bd96606d78a2893798a Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 21 Nov 2024 08:02:24 -0600 Subject: [PATCH 12/27] bug fixes --- ci/cases/gfsv17/marinehyb.yaml | 2 +- ci/cases/pr/C48mx500_3DVarAOWCDA.yaml | 9 +++++---- ci/cases/pr/C48mx500_hybAOWCDA.yaml | 4 ++-- ci/cases/yamls/soca_gfs_defaults_ci.yaml | 3 +++ ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml | 8 ++++++++ parm/archive/gdas.yaml.j2 | 2 +- parm/config/gfs/config.base | 3 ++- parm/config/gfs/yaml/defaults.yaml | 1 + ush/python/pygfs/task/marine_analysis.py | 2 +- ush/python/pygfs/task/marine_bmat.py | 13 ++++--------- ush/python/pygfs/task/marine_letkf.py | 2 +- workflow/rocoto/gfs_tasks.py | 2 +- 12 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml diff --git a/ci/cases/gfsv17/marinehyb.yaml b/ci/cases/gfsv17/marinehyb.yaml index c83625ac97..ed62e607a8 100644 --- a/ci/cases/gfsv17/marinehyb.yaml +++ b/ci/cases/gfsv17/marinehyb.yaml @@ -8,7 +8,7 @@ base: DO_JEDIOCNVAR: "YES" DO_JEDISNOWDA: "NO" DO_MERGENSST: "NO" - DOHYBVAR: "YES" + DOHYBVAR_OCN: "YES" DO_FIT2OBS: "YES" DO_VERFOZN: "YES" DO_VERFRAD: "YES" diff --git a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml index 9b8d0a7300..1831ff9e2e 100644 --- a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml @@ -9,9 +9,11 @@ arguments: resdetocean: 5.0 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 - idate: 2021032412 - edate: 2021032418 + # TODO: Stage IC's on HPC + #icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 + icsdir: /work/noaa/da/gvernier/ensda/ictest + idate: 2021032418 + edate: 2021032500 nens: 0 interval: 0 start: warm @@ -21,4 +23,3 @@ skip_ci_on_hosts: - wcoss2 - gaea - orion - diff --git a/ci/cases/pr/C48mx500_hybAOWCDA.yaml b/ci/cases/pr/C48mx500_hybAOWCDA.yaml index 24ec6f58a5..d111612ce8 100644 --- a/ci/cases/pr/C48mx500_hybAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_hybAOWCDA.yaml @@ -16,10 +16,10 @@ arguments: #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/ictest/ idate: 2021032418 edate: 2021032500 - nens: 3 + nens: 2 interval: 0 start: warm - yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_gfs_defaults_ci.yaml + yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml skip_ci_on_hosts: - wcoss2 diff --git a/ci/cases/yamls/soca_gfs_defaults_ci.yaml b/ci/cases/yamls/soca_gfs_defaults_ci.yaml index 3d75cc911a..d086d31a9f 100644 --- a/ci/cases/yamls/soca_gfs_defaults_ci.yaml +++ b/ci/cases/yamls/soca_gfs_defaults_ci.yaml @@ -3,3 +3,6 @@ defaults: base: ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} DO_JEDIOCNVAR: "YES" +marineanl: + SOCA_NINNER: 1 + diff --git a/ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml b/ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml new file mode 100644 index 0000000000..bad760aca0 --- /dev/null +++ b/ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml @@ -0,0 +1,8 @@ +defaults: + !INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml +base: + ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} + DO_JEDIOCNVAR: "YES" + DOHYBVAR_OCN: "YES" +marineanl: + SOCA_NINNER: 1 diff --git a/parm/archive/gdas.yaml.j2 b/parm/archive/gdas.yaml.j2 index 1e9597ba1c..9b5f10aa99 100644 --- a/parm/archive/gdas.yaml.j2 +++ b/parm/archive/gdas.yaml.j2 @@ -26,7 +26,7 @@ gdas: - "logs/{{ cycle_YMDH }}/{{ RUN }}_marineanlvar.log" - "logs/{{ cycle_YMDH }}/{{ RUN }}_marineanlfinal.log" - "logs/{{ cycle_YMDH }}/{{ RUN }}_marineanlchkpt.log" - {% if DOHYBVAR %} + {% if DOHYBVAR_OCN %} - "logs/{{ cycle_YMDH }}/{{ RUN }}_ocnanalecen.log" {% endif %} {% endif %} diff --git a/parm/config/gfs/config.base b/parm/config/gfs/config.base index b905ac1a3d..a067dd43d5 100644 --- a/parm/config/gfs/config.base +++ b/parm/config/gfs/config.base @@ -360,6 +360,7 @@ export DO_STARTMEM_FROM_JEDIICE="@DO_STARTMEM_FROM_JEDIICE@" # Hybrid related export DOHYBVAR="@DOHYBVAR@" +export DOHYBVAR_OCN="@DOHYBVAR_OCN@" export NMEM_ENS=@NMEM_ENS@ export SMOOTH_ENKF="NO" export l4densvar=".true." @@ -471,7 +472,7 @@ export ARCH_FCSTICFREQ=1 # Archive frequency in days for gdas and gfs foreca # The monitor jobs are not yet supported for JEDIATMVAR. if [[ ${DO_JEDIATMVAR} = "YES" ]]; then - export DO_FIT2OBS="NO" # Run fit to observations package + export DO_FIT2OBS="NO" # Run fit to observations package export DO_VERFOZN="NO" # Ozone data assimilation monitoring export DO_VERFRAD="NO" # Radiance data assimilation monitoring export DO_VMINMON="NO" # GSI minimization monitoring diff --git a/parm/config/gfs/yaml/defaults.yaml b/parm/config/gfs/yaml/defaults.yaml index 0a42474e9b..258533bde6 100644 --- a/parm/config/gfs/yaml/defaults.yaml +++ b/parm/config/gfs/yaml/defaults.yaml @@ -22,6 +22,7 @@ base: GSI_SOILANAL: "NO" EUPD_CYC: "gdas" FHMAX_ENKF_GFS: 12 + DOHYBVAR_OCN: "NO" atmanl: JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 94d4863b48..dc463f75e8 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -111,7 +111,7 @@ def initialize(self: Task) -> None: os.symlink('../staticb', 'staticb') # hybrid EnVAR case - if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS >= 3: + if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: # stage the ensemble weights logger.debug(f"Stage ensemble weights for the hybrid background error") FileHandler({'copy': [[os.path.join(self.task_config.COMIN_OCEAN_BMATRIX, f'{self.task_config.APREFIX}ocean.ens_weights.nc'), diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index ead75faa40..8e2b84a673 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -130,12 +130,12 @@ def initialize(self: Task) -> None: self.jedi_dict['soca_parameters_diffusion_vt'].initialize(self.task_config) self.jedi_dict['soca_setcorscales'].initialize(self.task_config) self.jedi_dict['soca_parameters_diffusion_hz'].initialize(self.task_config) - if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS > 2: + if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: self.jedi_dict['soca_ensb'].initialize(self.task_config) self.jedi_dict['soca_ensweights'].initialize(self.task_config) # stage ensemble members for the hybrid background error - if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS > 2: + if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: logger.debug(f"Stage ensemble members for the hybrid background error") mdau.stage_ens_mem(self.task_config) @@ -182,7 +182,7 @@ def execute(self) -> None: self.jedi_dict['soca_parameters_diffusion_vt'].execute() # hybrid EnVAR case - if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS > 2: + if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: self.jedi_dict['soca_ensb'].execute() self.jedi_dict['soca_ensweights'].execute() @@ -221,11 +221,6 @@ def finalize(self: Task) -> None: f"{self.task_config.APREFIX}{diff_type}_ocean.nc") diffusion_coeff_list.append([src, dest]) - src = os.path.join(self.task_config.DATAstaticb, f"hz_ice.nc") - dest = os.path.join(self.task_config.COMOUT_ICE_BMATRIX, - f"{self.task_config.APREFIX}hz_ice.nc") - diffusion_coeff_list.append([src, dest]) - FileHandler({'copy': diffusion_coeff_list}).sync() # Copy diag B files to ROTDIR @@ -252,7 +247,7 @@ def finalize(self: Task) -> None: FileHandler({'copy': diagb_list}).sync() # Copy the ensemble perturbation diagnostics to the ROTDIR - if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS >= 3: + if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: window_middle_iso = self.task_config.MARINE_WINDOW_MIDDLE.strftime('%Y-%m-%dT%H:%M:%SZ') weight_list = [] src = os.path.join(self.task_config.DATA, f"ocn.ens_weights.incr.{window_middle_iso}.nc") diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index 54d40f8d66..98c4f29085 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -112,7 +112,7 @@ def initialize(self): # TODO(AFE) - this should be removed when the obs config yamls are jinjafied if 'distribution' not in ob['obs space']: ob['obs space']['distribution'] = {'name': 'Halo', 'halo size': self.task_config['DIST_HALO_SIZE']} - obs_filename = f"{self.task_config.RUN}.t{self.task_config.cyc}z.{obs_name}.{to_YMDH(self.task_config.current_cycle)}.nc4" + obs_filename = f"{self.task_config.OPREFIX}{obs_name}.{to_YMDH(self.task_config.current_cycle)}.nc4" obs_files.append((obs_filename, ob)) obs_files_to_copy = [] diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 48a6cb95e5..759c0ec887 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -673,7 +673,7 @@ def marinebmat(self): dep_dict = {'type': 'data', 'data': data, 'offset': f"-{timedelta_to_HMS(self._base['interval_gdas'])}"} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_hybvar: - dep_dict = {'type': 'metatask', 'name': 'enkfgdas_fcst', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} + dep_dict = {'type': 'metatask', 'name': 'enkfgdas_fcst', 'offset': f"-{timedelta_to_HMS(self._base['interval_gdas'])}"} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) From cdb7f6d1d1f7bf18ba50427db24c50599403e117 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 26 Nov 2024 10:27:26 -0600 Subject: [PATCH 13/27] point to staged ic's --- ci/cases/pr/C48mx500_3DVarAOWCDA.yaml | 4 +--- ci/cases/pr/C48mx500_hybAOWCDA.yaml | 5 +---- jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE | 2 +- sorc/gdas.cd | 2 +- sorc/gfs_utils.fd | 2 +- sorc/verif-global.fd | 2 +- ush/python/pygfs/task/marine_analysis.py | 2 +- workflow/hosts/hercules.yaml | 2 +- workflow/rocoto/gfs_tasks.py | 2 +- 9 files changed, 9 insertions(+), 14 deletions(-) diff --git a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml index 1831ff9e2e..9cc3d3c03a 100644 --- a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml @@ -9,9 +9,7 @@ arguments: resdetocean: 5.0 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - # TODO: Stage IC's on HPC - #icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 - icsdir: /work/noaa/da/gvernier/ensda/ictest + icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20241120 idate: 2021032418 edate: 2021032500 nens: 0 diff --git a/ci/cases/pr/C48mx500_hybAOWCDA.yaml b/ci/cases/pr/C48mx500_hybAOWCDA.yaml index d111612ce8..d0fe13a689 100644 --- a/ci/cases/pr/C48mx500_hybAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_hybAOWCDA.yaml @@ -10,10 +10,7 @@ arguments: resdetocean: 5.0 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - # TODO: Stage IC's on HPC - #icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20240610 - icsdir: /work/noaa/da/gvernier/ensda/ictest - #icsdir: /scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/prepics/ictest/ + icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20241120 idate: 2021032418 edate: 2021032500 nens: 2 diff --git a/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE b/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE index cdc6dfecc8..25f8ba19fa 100755 --- a/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE +++ b/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE @@ -39,6 +39,6 @@ status=$? # Remove the Temporary working directory ########################################## cd "${DATAROOT}" || exit 1 -[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" +#[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" exit 0 diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 9ab7994a0c..257513c697 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 9ab7994a0caf6b201613dd7e7ceae482ffa600e0 +Subproject commit 257513c697fcafcfebafe85f5831d3bb7be72a34 diff --git a/sorc/gfs_utils.fd b/sorc/gfs_utils.fd index 856a42076a..a00cc0949e 160000 --- a/sorc/gfs_utils.fd +++ b/sorc/gfs_utils.fd @@ -1 +1 @@ -Subproject commit 856a42076a65256aaae9b29f4891532cb4a3fbca +Subproject commit a00cc0949e2f901e73b58d54834517743916c69a diff --git a/sorc/verif-global.fd b/sorc/verif-global.fd index b2ee80cac7..e7e6bc4358 160000 --- a/sorc/verif-global.fd +++ b/sorc/verif-global.fd @@ -1 +1 @@ -Subproject commit b2ee80cac7921a3016fa5a857cc58acfccc4baea +Subproject commit e7e6bc43584e0b8911819b8f875cc8ee747db76d diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index b282fc2659..ebb1502634 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -458,7 +458,7 @@ def create_obs_space(data): # get the variable name, assume 1 variable per file nc = netCDF4.Dataset(obsfile, 'r') - variable = next(iter(nc.groups["ObsValue"].variables)) + variable = next(iter(nc.groups["ombg"].variables)) nc.close() # filling values for the templated yaml diff --git a/workflow/hosts/hercules.yaml b/workflow/hosts/hercules.yaml index f528761cf1..d0aa0260bb 100644 --- a/workflow/hosts/hercules.yaml +++ b/workflow/hosts/hercules.yaml @@ -9,7 +9,7 @@ STMP: '/work/noaa/stmp/${USER}/HERCULES' PTMP: '/work/noaa/stmp/${USER}/HERCULES' NOSCRUB: $HOMEDIR SCHEDULER: slurm -ACCOUNT: fv3-cpu +ACCOUNT: da-cpu QUEUE: batch QUEUE_SERVICE: batch PARTITION_BATCH: hercules diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index e365d4bb91..908683b09c 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -672,7 +672,7 @@ def marinebmat(self): data = f'{ocean_hist_path}/gdas.ocean.t@Hz.inst.f009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': f"-{timedelta_to_HMS(self._base['interval_gdas'])}"} deps.append(rocoto.add_dependency(dep_dict)) - if self.app_config.do_hybvar: + if self.options['do_hybvar']: dep_dict = {'type': 'metatask', 'name': 'enkfgdas_fcst', 'offset': f"-{timedelta_to_HMS(self._base['interval_gdas'])}"} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) From 7eb1660f9ac84b57e399c2a1a48590ec5cf86805 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Mon, 2 Dec 2024 12:04:38 -0500 Subject: [PATCH 14/27] Update jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> --- jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE b/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE index 25f8ba19fa..cdc6dfecc8 100755 --- a/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE +++ b/jobs/JGLOBAL_MARINE_ANALYSIS_FINALIZE @@ -39,6 +39,6 @@ status=$? # Remove the Temporary working directory ########################################## cd "${DATAROOT}" || exit 1 -#[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" +[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" exit 0 From 3bba19e1f791a6aab4c68cb9b9882982335152f9 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Mon, 2 Dec 2024 12:04:53 -0500 Subject: [PATCH 15/27] Update workflow/hosts/hercules.yaml Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> --- workflow/hosts/hercules.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/hosts/hercules.yaml b/workflow/hosts/hercules.yaml index d0aa0260bb..f528761cf1 100644 --- a/workflow/hosts/hercules.yaml +++ b/workflow/hosts/hercules.yaml @@ -9,7 +9,7 @@ STMP: '/work/noaa/stmp/${USER}/HERCULES' PTMP: '/work/noaa/stmp/${USER}/HERCULES' NOSCRUB: $HOMEDIR SCHEDULER: slurm -ACCOUNT: da-cpu +ACCOUNT: fv3-cpu QUEUE: batch QUEUE_SERVICE: batch PARTITION_BATCH: hercules From 35854958babbfbf1a1bc8d9077b4eda74dfa9aef Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Mon, 2 Dec 2024 11:16:57 -0600 Subject: [PATCH 16/27] marine hyb option --- workflow/applications/gfs_cycled.py | 1 + workflow/rocoto/gfs_tasks.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow/applications/gfs_cycled.py b/workflow/applications/gfs_cycled.py index 2d16b6a59c..420d8e67a5 100644 --- a/workflow/applications/gfs_cycled.py +++ b/workflow/applications/gfs_cycled.py @@ -40,6 +40,7 @@ def _get_run_options(self, conf: Configuration) -> Dict[str, Any]: run_options[run]['nens'] = base.get('NMEM_ENS', 0) if run_options[run]['do_hybvar']: run_options[run]['lobsdiag_forenkf'] = base.get('lobsdiag_forenkf', False) + run_options[run]['do_hybvar_ocn'] = base.get('DOHYBVAR_OCN', False) run_options[run]['do_fit2obs'] = base.get('DO_FIT2OBS', True) run_options[run]['do_jediatmvar'] = base.get('DO_JEDIATMVAR', False) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 4175515b3e..270cd9b902 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -774,7 +774,7 @@ def ocnanalecen(self): def marineanlchkpt(self): deps = [] - if self.options['do_hybvar']: + if self.options['do_hybvar_ocn']: dep_dict = {'type': 'task', 'name': f'{self.run}_ocnanalecen'} else: dep_dict = {'type': 'task', 'name': f'{self.run}_marineanlvar'} From 44254bd1770eb7af79ea08139e26a529d7fa2729 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Mon, 2 Dec 2024 12:28:39 -0500 Subject: [PATCH 17/27] Update workflow/rocoto/gfs_tasks.py Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> --- workflow/rocoto/gfs_tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 270cd9b902..b1c8510f85 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -672,7 +672,7 @@ def marinebmat(self): data = f'{ocean_hist_path}/gdas.ocean.t@Hz.inst.f009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': f"-{timedelta_to_HMS(self._base['interval_gdas'])}"} deps.append(rocoto.add_dependency(dep_dict)) - if self.options['do_hybvar']: + if self.options['do_hybvar_ocn']: dep_dict = {'type': 'metatask', 'name': 'enkfgdas_fcst', 'offset': f"-{timedelta_to_HMS(self._base['interval_gdas'])}"} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) From 541d8becb587efcd79b5cf1f77fdfd354a5ee430 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Mon, 2 Dec 2024 13:48:01 -0600 Subject: [PATCH 18/27] updated #'s --- sorc/gfs_utils.fd | 2 +- sorc/verif-global.fd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sorc/gfs_utils.fd b/sorc/gfs_utils.fd index a00cc0949e..856a42076a 160000 --- a/sorc/gfs_utils.fd +++ b/sorc/gfs_utils.fd @@ -1 +1 @@ -Subproject commit a00cc0949e2f901e73b58d54834517743916c69a +Subproject commit 856a42076a65256aaae9b29f4891532cb4a3fbca diff --git a/sorc/verif-global.fd b/sorc/verif-global.fd index e7e6bc4358..b2ee80cac7 160000 --- a/sorc/verif-global.fd +++ b/sorc/verif-global.fd @@ -1 +1 @@ -Subproject commit e7e6bc43584e0b8911819b8f875cc8ee747db76d +Subproject commit b2ee80cac7921a3016fa5a857cc58acfccc4baea From 0ec480a7169c2a43d370f5ab07e2e39c99ab3479 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Mon, 2 Dec 2024 20:16:28 -0600 Subject: [PATCH 19/27] wrong logic ... --- workflow/applications/gfs_cycled.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/applications/gfs_cycled.py b/workflow/applications/gfs_cycled.py index 420d8e67a5..e11f708aa6 100644 --- a/workflow/applications/gfs_cycled.py +++ b/workflow/applications/gfs_cycled.py @@ -37,10 +37,10 @@ def _get_run_options(self, conf: Configuration) -> Dict[str, Any]: base = conf.parse_config('config.base', RUN=run) run_options[run]['do_hybvar'] = base.get('DOHYBVAR', False) + run_options[run]['do_hybvar_ocn'] = base.get('DOHYBVAR_OCN', False) run_options[run]['nens'] = base.get('NMEM_ENS', 0) if run_options[run]['do_hybvar']: run_options[run]['lobsdiag_forenkf'] = base.get('lobsdiag_forenkf', False) - run_options[run]['do_hybvar_ocn'] = base.get('DOHYBVAR_OCN', False) run_options[run]['do_fit2obs'] = base.get('DO_FIT2OBS', True) run_options[run]['do_jediatmvar'] = base.get('DO_JEDIATMVAR', False) From f24bc6ebb3ff77aab8ad7f066a0dfd9de8a61b02 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 3 Dec 2024 12:27:50 -0600 Subject: [PATCH 20/27] new gdas.cd # --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 257513c697..d91663bb58 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 257513c697fcafcfebafe85f5831d3bb7be72a34 +Subproject commit d91663bb585fbfa30db99d6126a1d4f24906b69b From 618b92c10ca7a564e4f690559aafd14ba50250e4 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 3 Dec 2024 13:48:53 -0500 Subject: [PATCH 21/27] Update ush/forecast_postdet.sh Co-authored-by: Walter Kolczynski - NOAA --- ush/forecast_postdet.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 7af7fe917b..d8074e7713 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -585,13 +585,14 @@ CICE_postdet() { else # "${RERUN}" == "NO" restart_date="${model_start_date_current_cycle}" cice_restart_file="${COMIN_ICE_RESTART_PREV}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model.res.nc" - # Start the deterministic from the JEDI/SOCA analysis if the Marine DA in ON - if (( MEMBER == 0 )) && [[ "${DO_JEDIOCNVAR:-NO}" == "YES" ]]; then - cice_restart_file="${COMIN_ICE_ANALYSIS}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model_anl.res.nc" - fi - # Ignore the JEDI/SOCA ensemble analysis for the ensemble members if DO_START_FROM_JEDIICE is OFF - if (( MEMBER > 0 )) && [[ "${DO_JEDIOCNVAR:-NO}" == "YES" ]] && [[ "${DO_STARTMEM_FROM_JEDIICE:-NO}" == "YES" ]]; then - cice_restart_file="${COMIN_ICE_ANALYSIS}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model_anl.res.nc" + if [[ "${DO_JEDIOCNVAR:-NO}" == "YES" ]]; then + if (( MEMBER == 0 )); then + # Start the deterministic from the JEDI/SOCA analysis if the Marine DA in ON + cice_restart_file="${COMIN_ICE_ANALYSIS}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model_anl.res.nc" + elif (( MEMBER > 0 )) && [[ "${DO_STARTMEM_FROM_JEDIICE:-NO}" == "YES" ]]; then + # Ignore the JEDI/SOCA ensemble analysis for the ensemble members if DO_START_FROM_JEDIICE is OFF + cice_restart_file="${COMIN_ICE_ANALYSIS}/${restart_date:0:8}.${restart_date:8:2}0000.cice_model_anl.res.nc" + fi fi fi From f4959c0b96bfe09bce8ee31215238162afbf0cf9 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 3 Dec 2024 15:47:07 -0600 Subject: [PATCH 22/27] tidy comments, modified job dep --- ush/forecast_postdet.sh | 2 -- workflow/rocoto/gfs_tasks.py | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 7af7fe917b..a2c800f90b 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -460,8 +460,6 @@ MOM6_postdet() { fi # GEFS perturbations - # TODO if [[ $RUN} == "gefs" ]] block maybe be needed - # to ensure it does not interfere with the GFS when ensemble is updated in the GFS if (( MEMBER > 0 )) && [[ "${ODA_INCUPD:-False}" == "True" ]]; then ${NCP} "${COMIN_OCEAN_ANALYSIS}/${RUN}.t${cyc}z.ocninc.nc" "${DATA}/INPUT/mom6_increment.nc" \ || ( echo "FATAL ERROR: Unable to copy ensemble MOM6 increment, ABORT!"; exit 1 ) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index b1c8510f85..244c6b6a15 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -2760,8 +2760,9 @@ def efcs(self): deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'task', 'name': f'{self.run}_esfc'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf", "")}_ocnanalecen'} - deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_hybvar_ocn']: + dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf", "")}_ocnanalecen'} + deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dep_dict = {'type': 'task', 'name': f'{self.run}_stage_ic'} dependencies.append(rocoto.add_dependency(dep_dict)) From e20d99461024bcd825570c81f0220f09457264b1 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Wed, 4 Dec 2024 10:44:49 -0500 Subject: [PATCH 23/27] Update workflow/rocoto/gfs_tasks.py Co-authored-by: Walter Kolczynski - NOAA --- workflow/rocoto/gfs_tasks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 244c6b6a15..59b0951d44 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -675,7 +675,6 @@ def marinebmat(self): if self.options['do_hybvar_ocn']: dep_dict = {'type': 'metatask', 'name': 'enkfgdas_fcst', 'offset': f"-{timedelta_to_HMS(self._base['interval_gdas'])}"} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('marinebmat') From 7a7c715f7449271eb60243664b85e9c95c6d26de Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Wed, 4 Dec 2024 10:45:11 -0500 Subject: [PATCH 24/27] Update ush/forecast_postdet.sh Co-authored-by: Walter Kolczynski - NOAA --- ush/forecast_postdet.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 3deac59e37..488ac919cd 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -459,7 +459,6 @@ MOM6_postdet() { || ( echo "FATAL ERROR: Unable to copy MOM6 increment, ABORT!"; exit 1 ) fi - # GEFS perturbations if (( MEMBER > 0 )) && [[ "${ODA_INCUPD:-False}" == "True" ]]; then ${NCP} "${COMIN_OCEAN_ANALYSIS}/${RUN}.t${cyc}z.ocninc.nc" "${DATA}/INPUT/mom6_increment.nc" \ || ( echo "FATAL ERROR: Unable to copy ensemble MOM6 increment, ABORT!"; exit 1 ) From 364324836d4bb4cd9629bf66116d7c8562f7af31 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Wed, 4 Dec 2024 14:20:17 -0600 Subject: [PATCH 25/27] added envars to keys --- scripts/exglobal_archive.py | 2 +- scripts/exglobal_stage_ic.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/exglobal_archive.py b/scripts/exglobal_archive.py index 2d3fa58313..a10b3fb26f 100755 --- a/scripts/exglobal_archive.py +++ b/scripts/exglobal_archive.py @@ -29,7 +29,7 @@ def main(): 'DOIAU', 'OCNRES', 'ICERES', 'NUM_SND_COLLECTIVES', 'FHOUT_WAV', 'FHOUT_HF_WAV', 'FHMAX_WAV', 'FHMAX_HF_WAV', 'FHMAX_WAV_GFS', 'restart_interval_gdas', 'restart_interval_gfs', - 'DO_AERO_ANL', 'DO_AERO_FCST', 'DOIBP_WAV', 'DO_JEDIOCNVAR', + 'DO_AERO_ANL', 'DO_AERO_FCST', 'DOIBP_WAV', 'DO_JEDIOCNVAR', 'DOHYBVAR_OCN', 'NMEM_ENS', 'DO_JEDIATMVAR', 'DO_VRFY_OCEANDA', 'FHMAX_FITS', 'waveGRD', 'IAUFHRS', 'DO_FIT2OBS', 'NET', 'FHOUT_HF_GFS', 'FHMAX_HF_GFS', 'REPLAY_ICS', 'OFFSET_START_HOUR'] diff --git a/scripts/exglobal_stage_ic.py b/scripts/exglobal_stage_ic.py index 0a5bc97344..05ac739868 100755 --- a/scripts/exglobal_stage_ic.py +++ b/scripts/exglobal_stage_ic.py @@ -21,7 +21,8 @@ def main(): keys = ['RUN', 'MODE', 'EXP_WARM_START', 'NMEM_ENS', 'assim_freq', 'current_cycle', 'previous_cycle', 'ROTDIR', 'ICSDIR', 'STAGE_IC_YAML_TMPL', 'DO_JEDIATMVAR', - 'OCNRES', 'waveGRD', 'ntiles', 'DOIAU', 'DO_JEDIOCNVAR', 'DO_STARTMEM_FROM_JEDIICE', + 'OCNRES', 'waveGRD', 'ntiles', 'DOIAU', + 'DO_JEDIOCNVAR', 'DO_STARTMEM_FROM_JEDIICE', 'REPLAY_ICS', 'DO_WAVE', 'DO_OCN', 'DO_ICE', 'DO_NEST', 'USE_ATM_ENS_PERTURB_FILES', 'USE_OCN_ENS_PERTURB_FILES'] From dba159c4af2da1248a283b507946e0a5c183eedb Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Sat, 7 Dec 2024 16:39:28 -0600 Subject: [PATCH 26/27] added DO_STARTMEM_FROM_JEDIICE to gefs base --- parm/config/gefs/config.base | 1 + 1 file changed, 1 insertion(+) diff --git a/parm/config/gefs/config.base b/parm/config/gefs/config.base index 2bafde04f5..71112da519 100644 --- a/parm/config/gefs/config.base +++ b/parm/config/gefs/config.base @@ -282,6 +282,7 @@ export DO_JEDIATMENS="NO" export DO_JEDIOCNVAR="NO" export DO_JEDISNOWDA="NO" export DO_MERGENSST="NO" +export DO_STARTMEM_FROM_JEDIICE="@DO_STARTMEM_FROM_JEDIICE@" # Hybrid related export NMEM_ENS=@NMEM_ENS@ From 229e79163dc72e64b353fccfdb7e394329505bc2 Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Sat, 7 Dec 2024 20:00:28 -0500 Subject: [PATCH 27/27] set DO_STARTMEM_FROM_JEDIICE to NO in gefs config.base --- parm/config/gefs/config.base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/gefs/config.base b/parm/config/gefs/config.base index 71112da519..5ccafbb1ef 100644 --- a/parm/config/gefs/config.base +++ b/parm/config/gefs/config.base @@ -282,7 +282,7 @@ export DO_JEDIATMENS="NO" export DO_JEDIOCNVAR="NO" export DO_JEDISNOWDA="NO" export DO_MERGENSST="NO" -export DO_STARTMEM_FROM_JEDIICE="@DO_STARTMEM_FROM_JEDIICE@" +export DO_STARTMEM_FROM_JEDIICE="NO" # Hybrid related export NMEM_ENS=@NMEM_ENS@