From 1a444c52977334780f2c8e622c0d2a1a85f22fcf Mon Sep 17 00:00:00 2001 From: "jian.kuang" Date: Wed, 4 Mar 2020 22:04:53 +0000 Subject: [PATCH 1/6] bug fix, POSTGRB2TBL undefined --- workflow/config/base.yaml | 1 + workflow/platforms/hera.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow/config/base.yaml b/workflow/config/base.yaml index eaed2f8771..afafeb1dbe 100644 --- a/workflow/config/base.yaml +++ b/workflow/config/base.yaml @@ -75,6 +75,7 @@ config_base: # Utilities needed in the scripts (mostly post) {doc.platform.config_base_extras} + export POSTGRB2TBL="{doc.places.HOMEgfs}/sorc/gfs_post.fd/parm/params_grib2_tbl_new" # Toggle to turn on/off GFS downstream processing. export DO_BUFRSND="{tools.YES_NO(doc.downstream.DO_BUFRSND)}" # Run GFS_POSTSND diff --git a/workflow/platforms/hera.yaml b/workflow/platforms/hera.yaml index 6f1159dc80..b5e8c8c3cf 100644 --- a/workflow/platforms/hera.yaml +++ b/workflow/platforms/hera.yaml @@ -36,7 +36,7 @@ platform: !Platform BASE_GIT: "/scratch1/NCEPDEV/global/glopara/git/" config_base_extras: !expand | - echo "place holder for NWPROD and associated utilities, now go through load_gfs_modules.sh" + echo "place holder for NWPROD and associated utilities, all except POSTGRB2TBL are going through load_gfs_modules.sh" CHGRP_RSTPROD_COMMAND: "chgrp rstprod" From 57b03622e769fbf6d1218bb3427877a1ea5d7eb6 Mon Sep 17 00:00:00 2001 From: "jian.kuang" Date: Fri, 6 Mar 2020 16:12:54 +0000 Subject: [PATCH 2/6] clean up unused schema move default value into defaults/ --- workflow/defaults/case.yaml | 30 +++++++++++------------------- workflow/defaults/downstream.yaml | 6 ++++++ workflow/defaults/post.yaml | 14 ++++++++++++++ workflow/schema/case.yaml | 31 ------------------------------- workflow/schema/chgres.yaml | 10 ---------- workflow/schema/downstream.yaml | 23 ----------------------- workflow/schema/post.yaml | 12 ++++-------- 7 files changed, 35 insertions(+), 91 deletions(-) delete mode 100644 workflow/schema/case.yaml delete mode 100644 workflow/schema/chgres.yaml diff --git a/workflow/defaults/case.yaml b/workflow/defaults/case.yaml index 62ce042292..e06cedfe0c 100644 --- a/workflow/defaults/case.yaml +++ b/workflow/defaults/case.yaml @@ -3,13 +3,6 @@ # of the case files, default files, platform file, and everywhere # else, and applies any validation from the schema/ directory. -fv3_settings: !Immediate - - !MergeMapping - - CDUMP: gfs - Template: *fv3_settings_template - - !calc doc.fv3_defaults - - !calc doc.case.get('fv3_settings',{}) - ocn_settings: !Immediate - !MergeMapping - CDUMP: gfs @@ -32,7 +25,6 @@ schedvar: !Immediate fv3_gfs_settings: !Immediate - !MergeMapping - - !calc doc.fv3_settings - CDUMP: gfs Template: *fv3_settings_template - !calc doc.fv3_gfs_defaults @@ -41,32 +33,31 @@ fv3_gfs_settings: !Immediate fv3_enkf_settings: !Immediate - !MergeMapping - - !calc doc.fv3_settings - - !calc doc.fv3_enkf_defaults - CDUMP: gdas Template: *fv3_settings_template + - !calc doc.fv3_enkf_defaults - !calc doc.case.get('fv3_enkf_settings',{}) - !calc doc.get('user_fv3_enkf_settings',{}) fv3_gdas_settings: !Immediate - !MergeMapping - - !calc doc.fv3_settings - CDUMP: gdas Template: *fv3_settings_template - !calc doc.fv3_gdas_defaults - !calc doc.case.get('fv3_gdas_settings',{}) - - !calc doc.get('user_fv3_gfs_settings',{}) + - !calc doc.get('user_fv3_gdas_settings',{}) -gfs_output_settings: !Immediate +output_settings: !Immediate - !MergeMapping - - !calc doc.gfs_output_settings_defaults - - { Template: *gfs_output_settings_template } - - !calc doc.case.get('gfs_output_settings',{}) - - !calc doc.get('user_gfs_output_settings',{}) + - Template: *output_settings_template + - !calc doc.output_settings_defaults + - !calc doc.case.get('output_settings',{}) + - !calc doc.get('user_output_settings',{}) data_assimilation: !Immediate - !MergeMapping - { Template: *data_assimilation_template } + - !calc doc.data_assimilation_defaults - !calc doc.case.get('data_assimilation',{}) - !calc doc.get('user_data_assimilation',{}) @@ -101,6 +92,7 @@ places: !Immediate nsst: !Immediate - !MergeMapping - Template: *nsst_schema + - !calc doc.nsst_defaults - !calc doc.case.get('nsst',{}) - !calc doc.get('user_nsst',{}) @@ -119,6 +111,7 @@ settings: !Immediate archiving: !Immediate - !MergeMapping - Template: *archive_settings_template + - !calc doc.archiving_defaults - !calc doc.case.get('archiving',{}) - !calc doc.get('user_archiving',{}) @@ -129,11 +122,10 @@ suite_overrides: !Immediate - !calc doc.get('user_suite_overrides',[]) validate_me: - - fv3_settings - fv3_gfs_settings - fv3_enkf_settings - fv3_gdas_settings - - gfs_output_settings + - output_settings - data_assimilation - post - downstream diff --git a/workflow/defaults/downstream.yaml b/workflow/defaults/downstream.yaml index d9ba91a7eb..ab1f8b6647 100644 --- a/workflow/defaults/downstream.yaml +++ b/workflow/defaults/downstream.yaml @@ -1,4 +1,6 @@ downstream_defaults: &downstream_defaults + CDUMPFCST: gdas + CDFNL: gdas DO_POST_PROCESSING: NO DO_BUFRSND: NO DO_GEMPAK: NO @@ -6,6 +8,10 @@ downstream_defaults: &downstream_defaults DO_FAX: NO DO_WAFS: NO DO_BULLETINS: NO + FHOUT_CYCLONE_GFS: 6 + FHOUT_CYCLONE_GDAS: 3 + MKPGB4PRCP: yes + VDUMP: gfs VRFYFITS: NO VSDB_STEP1: NO VSDB_STEP2: NO diff --git a/workflow/defaults/post.yaml b/workflow/defaults/post.yaml index 4bb05e63b0..b3588fa7a5 100644 --- a/workflow/defaults/post.yaml +++ b/workflow/defaults/post.yaml @@ -1,7 +1,21 @@ # default settings for post jobs post_defaults: &post_defaults + GOESF: yes + GTGF: no + FLXF: yes + PGB1F: yes + GFS_DOWNSTREAM: yes + downset: 1 NPOSTGRP: 5 + master_grid: "0p25deg" ocnpost_defaults: &ocnpost_defaults + GOESF: yes + GTGF: no + FLXF: yes + PGB1F: yes + GFS_DOWNSTREAM: yes + downset: 2 NPOSTGRP: 1 + master_grid: "0p25deg" diff --git a/workflow/schema/case.yaml b/workflow/schema/case.yaml deleted file mode 100644 index 3ee39bbffe..0000000000 --- a/workflow/schema/case.yaml +++ /dev/null @@ -1,31 +0,0 @@ -case_template: !Template &case_template - gfs_cyc: - type: int - default: 2 - allowed: [ 0, 1, 2, 4 ] - description: | - When to run GFS forecast. Data assimilation is run for every - cycle regardless of these values - * 0: no GFS cycle - * 1: 00Z only - * 2: 00Z and 12Z only - * 4: all 4 cycles (0, 6, 12, 18 Z) - - SDATE: - type: datetime - description: | - First cycle to run. In the cycled workflow, this is a - "half-cycle" in that it only runs the parts of the workflow that - do not require a prior cycle. The first "real" cycle is the - following cycle. - - EDATE: - type: datetime - description: Last cycle to run GDAS. - - experiment_name: - type: string - default: !calc doc.experiment_name - description: | - User-defined experiment name; should be a-z followed by alphanumeric. - Formerly known as PSLOT. diff --git a/workflow/schema/chgres.yaml b/workflow/schema/chgres.yaml deleted file mode 100644 index 4de42b7a6d..0000000000 --- a/workflow/schema/chgres.yaml +++ /dev/null @@ -1,10 +0,0 @@ -chgres_template: !Template &chgres_template - CHGRESVARS_ENKF: - type: string - default: "use_ufo=.true.,nopdpvv=.true." - - CHGRESTHREAD: - type: int - default: 12 - description: Number of threads to use for chgres - diff --git a/workflow/schema/downstream.yaml b/workflow/schema/downstream.yaml index bc936f8b6b..816a6e1fbd 100644 --- a/workflow/schema/downstream.yaml +++ b/workflow/schema/downstream.yaml @@ -8,83 +8,63 @@ downstream_schema: &downstream_schema !Template VDUMP: type: string - default: "gfs" description: verifying dump CDUMPFCST: type: string - default: "gdas" description: Fit-to-obs with GDAS/GFS prepbufr CDFNL: type: string - default: "gdas" description: Scores verification against GDAS/GFS analysis MKPGB4PRCP: type: bool - default: yes description: make 0.25-deg pgb files in ARCDIR for precip verification VRFYFITS: type: bool - default: YES description: "Fit to observations" VSDB_STEP1: type: bool - default: YES description: "populate VSDB database" VSDB_STEP2: type: bool - default: NO VRFYG2OBS: type: bool - default: YES description: "Grid to observations, see note below if turning ON" VRFYPRCP: type: bool - default: YES description: "Precip threat scores" VRFYRAD: type: bool - default: YES description: "Radiance data assimilation monitoring" VRFYOZN: type: bool - default: YES description: "Ozone data assimilation monitoring" VRFYMINMON: type: bool - default: YES description: "GSI minimization monitoring" VRFYTRAK: type: bool - default: YES description: "Hurricane track verification" VRFYGENESIS: type: bool - default: YES description: "Cyclone genesis verification" RUNMOS: type: bool - default: YES description: "Run GFS MOS" DO_POST_PROCESSING: type: bool - default: NO description: "Run post processing tasks (BUFRSND, GEMPAK, AWIPS, FAX, WAFS, BULLETINS" DO_BUFRSND: type: bool - default: NO description: "Run GFS_POSTSND" DO_GEMPAK: type: bool - default: NO description: "Run GEMPAK" DO_AWIPS: type: bool - default: NO description: "Run AWIPS" DO_FAX: type: bool - default: NO description: "Run FAX" DO_WAFS: type: bool @@ -92,12 +72,9 @@ downstream_schema: &downstream_schema !Template description: "Run WAFS" DO_BULLETINS: type: bool - default: NO description: "Run BULLETINS" FHOUT_CYCLONE_GFS: type: int - default: 6 FHOUT_CYCLONE_GDAS: type: int - default: 3 diff --git a/workflow/schema/post.yaml b/workflow/schema/post.yaml index 1d71b6ac10..1ce3862a7c 100644 --- a/workflow/schema/post.yaml +++ b/workflow/schema/post.yaml @@ -4,22 +4,18 @@ post_schema: &post_schema !Template GOESF: type: bool - default: yes description: make synthetic goes imagery GTGF: type: bool - default: no description: make gtg icing product FLXF: type: bool - default: yes description: grib2 flux file written by post - PGB1F: { type: bool, default: yes } - GFS_DOWNSTREAM: { type: bool, default: yes } - downset: { type: int, default: 1 } - NPOSTGRP: { type: int, default: 5 } + PGB1F: { type: bool } + GFS_DOWNSTREAM: { type: bool } + downset: { type: int } + NPOSTGRP: { type: int } master_grid: type: string - default: "0p25deg" allowed: [ "1deg", "0p5deg", "0p25deg", "0p125deg" ] description: Original grid of the post From 2068e438e959be3342b89a71620c9b0e0b3747a0 Mon Sep 17 00:00:00 2001 From: "jian.kuang" Date: Fri, 6 Mar 2020 19:40:23 +0000 Subject: [PATCH 3/6] move all default values into /defaults from /schema It's better if we have one place to manage default values for configurable variables other than two Default values only for reference. Please throughly test to make sure it could reproduce. --- workflow/cases/coupled_free_forecast.yaml | 23 +- workflow/config/base.yaml | 38 ++-- workflow/config/fcst.yaml | 44 ++-- workflow/config/fv3.yaml | 60 +++--- workflow/defaults/archiving.yaml | 10 + workflow/defaults/data_assimilation.yaml | 37 ++++ workflow/defaults/default_resources.yaml | 4 +- workflow/defaults/fv3.yaml | 15 -- workflow/defaults/fv3_enkf.yaml | 201 ++++++++++++++--- workflow/defaults/fv3_gdas.yaml | 156 +++++++++++++- workflow/defaults/fv3_gfs.yaml | 158 +++++++++++++- workflow/defaults/gfs_output_settings.yaml | 7 - workflow/defaults/nsst.yaml | 8 + workflow/defaults/output_settings.yaml | 38 ++++ workflow/defaults/places.yaml | 12 ++ workflow/defaults/settings.yaml | 14 +- workflow/layout/cycled_gfs.yaml | 14 +- workflow/layout/free_forecast_gfs.yaml | 6 +- workflow/layout/nco.yaml | 14 +- workflow/layout/public_release_v1.yaml | 2 +- workflow/schema/archiving.yaml | 9 - workflow/schema/data_assimilation.yaml | 44 +--- workflow/schema/downstream.yaml | 1 - workflow/schema/fv3.yaml | 240 +++------------------ workflow/schema/ice.yaml | 1 - workflow/schema/nsst.yaml | 6 - workflow/schema/ocn.yaml | 1 - workflow/schema/output.yaml | 35 +-- workflow/schema/places.yaml | 28 +-- workflow/schema/post.yaml | 2 +- workflow/schema/settings.yaml | 54 +---- workflow/top.yaml | 4 +- 32 files changed, 760 insertions(+), 526 deletions(-) create mode 100644 workflow/defaults/archiving.yaml create mode 100644 workflow/defaults/data_assimilation.yaml delete mode 100644 workflow/defaults/fv3.yaml delete mode 100644 workflow/defaults/gfs_output_settings.yaml create mode 100644 workflow/defaults/nsst.yaml create mode 100644 workflow/defaults/output_settings.yaml diff --git a/workflow/cases/coupled_free_forecast.yaml b/workflow/cases/coupled_free_forecast.yaml index 31b575a004..3303f6c084 100644 --- a/workflow/cases/coupled_free_forecast.yaml +++ b/workflow/cases/coupled_free_forecast.yaml @@ -1,9 +1,4 @@ case: - fv3_settings: - nst_anl: False - hord_mt_nh_nonmono: 5 - hord_xx_nh_nonmono: 5 - places: workflow_file: layout/free_forecast_gfs.yaml MOM6IC: /scratch1/NCEPDEV/nems/Bin.Li/S2S/FROM_HPSS @@ -21,7 +16,7 @@ case: nsst: NST_MODEL: 0 - gfs_output_settings: + output_settings: OCN_INTERVAL: 24 FHOUT_GFS: 6 FHMIN_GFS: 0 @@ -33,16 +28,16 @@ case: CASE: C384 LEVS: 65 DELTIM: 450 - layout_x: 6 - layout_y: 8 - fv3_threads: 2 - WRITE_GROUP: 1 - WRTTASK_PER_GROUP: 24 - WRTIOBUF: "32M" + nst_anl: no + layout: + x: 6 + y: 8 + nth: 2 + WGRP: 1 + WGRP_NTASKS: 24 + WRTIOBUF: "32M" OCNPETS: 120 ICEPETS: 48 - hord_mt_nh_nonmono: 5 - hord_xx_nh_nonmono: 5 cdmbgwd: "1.0,1.2" post: diff --git a/workflow/config/base.yaml b/workflow/config/base.yaml index afafeb1dbe..ac646f4404 100644 --- a/workflow/config/base.yaml +++ b/workflow/config/base.yaml @@ -158,7 +158,7 @@ config_base: #export COMOUTwmo="$ROTDIR/$CDUMP.$PDY/$cyc/wmo" # Resolution specific parameters - export LEVS={doc.fv3_settings.LEVS} + export LEVS={doc.fv3_gfs_settings.LEVS} export CASE="{doc.fv3_gfs_settings.CASE}" export CASE_ENKF="{doc.fv3_enkf_settings.CASE}" @@ -171,30 +171,30 @@ config_base: fi # Output frequency of the forecast model (for cycling) - export FHMIN={doc.gfs_output_settings.FHMIN_GDAS} - export FHMAX={doc.gfs_output_settings.FHMAX_GDAS} - export FHOUT={doc.gfs_output_settings.FHOUT_GDAS} + export FHMIN={doc.output_settings.FHMIN_GDAS} + export FHMAX={doc.output_settings.FHMAX_GDAS} + export FHOUT={doc.output_settings.FHOUT_GDAS} # GFS cycle info export gfs_cyc={doc.settings.gfs_cyc} # 0: no GFS cycle, 1: 00Z only, 2: 00Z and 12Z only, 4: all 4 cycles. # GFS output and frequency - export FHMIN_GFS={doc.gfs_output_settings.FHMIN_GFS} - export FHMAX_GFS={doc.gfs_output_settings.FHMAX_GFS} - export FHOUT_GFS={doc.gfs_output_settings.FHOUT_GFS} - export FHMAX_HF_GFS={doc.gfs_output_settings.FHMAX_HF_GFS} - export FHOUT_HF_GFS={doc.gfs_output_settings.FHOUT_HF_GFS} - export FHRLST="{doc.gfs_output_settings.gfs_forecast_hours}" + export FHMIN_GFS={doc.output_settings.FHMIN_GFS} + export FHMAX_GFS={doc.output_settings.FHMAX_GFS} + export FHOUT_GFS={doc.output_settings.FHOUT_GFS} + export FHMAX_HF_GFS={doc.output_settings.FHMAX_HF_GFS} + export FHOUT_HF_GFS={doc.output_settings.FHOUT_HF_GFS} + export FHRLST="{doc.output_settings.gfs_forecast_hours}" # I/O QUILTING, true--use Write Component; false--use GFDL FMS # if quilting=true, choose OUTPUT_GRID as cubed_sphere_grid in netcdf or gaussian_grid # if gaussian_grid, set OUTPUT_FILE for nemsio or netcdf - export QUILTING="{tools.fort(doc.fv3_settings.QUILTING)}" - export OUTPUT_GRID="{doc.gfs_output_settings.OUTPUT_GRID}" - export OUTPUT_FILE="{doc.gfs_output_settings.OUTPUT_FILE_TYPE}" + export QUILTING="{tools.fort(doc.fv3_gdas_settings.QUILTING)}" + export OUTPUT_GRID="{doc.output_settings.OUTPUT_GRID}" + export OUTPUT_FILE="{doc.output_settings.OUTPUT_FILE_TYPE}" # Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL - export imp_physics={doc.fv3_settings.imp_physics} + export imp_physics={doc.fv3_gfs_settings.imp_physics} # Shared parameters # Hybrid related @@ -206,20 +206,20 @@ config_base: # EnKF output frequency if [ $DOHYBVAR = "YES" ]; then - export FHMIN_ENKF={doc.gfs_output_settings.FHMIN_ENKF} - export FHMAX_ENKF={doc.gfs_output_settings.FHMAX_ENKF} - export FHOUT_ENKF={doc.gfs_output_settings.FHOUT_ENKF} + export FHMIN_ENKF={doc.output_settings.FHMIN_ENKF} + export FHMAX_ENKF={doc.output_settings.FHMAX_ENKF} + export FHOUT_ENKF={doc.output_settings.FHOUT_ENKF} if [ $l4densvar = ".true." ]; then export FHOUT=1 fi fi # If YES, NSST is turned on in anal and/or fcst steps - export DONST="{tools.YES_NO(doc.fv3_settings.DONST)}" + export DONST="{tools.YES_NO(doc.fv3_gdas_settings.DONST)}" if [ $DONST = "YES" ]; then export FNTSFA=" "; fi # The switch to apply SST elevation correction or not - export nst_anl={tools.fort(doc.fv3_settings.nst_anl)} + export nst_anl={tools.fort(doc.fv3_gfs_settings.nst_anl)} # Analysis increments to zero in CALCINCEXEC export INCREMENTS_TO_ZERO="{tools.join(doc.data_assimilation.INCREMENTS_TO_ZERO,',')}" diff --git a/workflow/config/fcst.yaml b/workflow/config/fcst.yaml index 7c14856d4f..f15ed81d28 100644 --- a/workflow/config/fcst.yaml +++ b/workflow/config/fcst.yaml @@ -9,18 +9,18 @@ config_fcst: do: "nems_fv3_mom6_cice5.x" - otherwise: "global_fv3gfs.x" more_exports_for_microphys: !FirstTrue - - when: !calc ( doc.fv3_settings.imp_physics==11 ) + - when: !calc ( doc.fv3_gdas_settings.imp_physics==11 ) do: !expand | - export hord_mt_nh_nonmono={doc.fv3_settings.hord_mt_nh_nonmono} - export hord_xx_nh_nonmono={doc.fv3_settings.hord_xx_nh_nonmono} - export vtdm4_nh_nonmono={doc.fv3_settings.vtdm4_nh_nonmono} - export nord={doc.fv3_settings.nord} - export dddmp={doc.fv3_settings.dddmp} - export d4_bg={doc.fv3_settings.d4_bg} + export hord_mt_nh_nonmono={doc.fv3_gdas_settings.phy_dependent_var.hord_mt_nh_nonmono} + export hord_xx_nh_nonmono={doc.fv3_gdas_settings.phy_dependent_var.hord_xx_nh_nonmono} + export vtdm4_nh_nonmono={doc.fv3_gdas_settings.phy_dependent_var.vtdm4_nh_nonmono} + export nord={doc.fv3_gdas_settings.phy_dependent_var.nord} + export dddmp={doc.fv3_gdas_settings.phy_dependent_var.dddmp} + export d4_bg={doc.fv3_gdas_settings.phy_dependent_var.d4_bg} - otherwise: "" level_127: !FirstTrue - - when: !calc doc.fv3_settings.LEVS==128 + - when: !calc doc.fv3_gdas_settings.LEVS==128 do: !expand | export tau=5.0 export rf_cutoff=1.0e3 @@ -60,8 +60,8 @@ config_fcst: export npe_fcst="{resource_a[0].mpi_ranks}" export npe_fcst_gfs="{resource_b[0].mpi_ranks}" export npe_node_fcst="{resource_a[0].max_ppn}" - export nth_fcst="{doc.fv3_gfs_settings.fv3_threads}" - export NTHREADS_FV3="{doc.fv3_gfs_settings.fv3_threads}" + export nth_fcst="{doc.fv3_gfs_settings.layout.nth}" + export NTHREADS_FV3="{doc.fv3_gfs_settings.layout.nth}" export memory_fcst="1024M" ####################################################################### @@ -83,24 +83,24 @@ config_fcst: export FCSTEXEC="{FCSTEXEC}" # Model configuration - export TYPE="{doc.fv3_settings.nh_type}" - export MONO="{doc.fv3_settings.MONO}" + export TYPE="{doc.fv3_gdas_settings.nh_type}" + export MONO="{doc.fv3_gdas_settings.MONO}" # Use stratosphere h2o physics - export h2o_phys="{tools.fort(doc.fv3_settings.h2o_phys)}" + export h2o_phys="{tools.fort(doc.fv3_gdas_settings.h2o_phys)}" # Options of stratosphere O3 physics reaction coefficients - export new_o3forc="{tools.YES_NO(doc.fv3_settings_template.new_o3force)}" + export new_o3forc="{tools.YES_NO(doc.fv3_gdas_settings.new_o3force)}" # Microphysics configuration - export dnats={doc.fv3_settings.dnats} - export cal_pre="{tools.fort(doc.fv3_settings.cal_pre)}" - export do_sat_adj="{tools.fort(doc.fv3_settings.do_sat_adj)}" - export random_clds="{tools.fort(doc.fv3_settings.random_clds)}" - #export cnvcld="{tools.fort(doc.fv3_settings.cnvcld)}" - export ncld={doc.fv3_settings.ncld} - export FIELD_TABLE="{doc.fv3_settings.FIELD_TABLE}" - export nwat={doc.fv3_settings.nwat} + export dnats={doc.fv3_gfs_settings.phy_dependent_var.dnats} + export cal_pre="{tools.fort(doc.fv3_gfs_settings.phy_dependent_var.cal_pre)}" + export do_sat_adj="{tools.fort(doc.fv3_gfs_settings.phy_dependent_var.do_sat_adjust)}" + export random_clds="{tools.fort(doc.fv3_gfs_settings.phy_dependent_var.random_clds)}" + #export cnvcld="{tools.fort(doc.fv3_gdas_settings.cnvcld)}" + export ncld={doc.fv3_gfs_settings.phy_dependent_var.ncld} + export FIELD_TABLE="{doc.fv3_gdas_settings.phy_dependent_var.FIELD_TABLE}" + export nwat={doc.fv3_gfs_settings.phy_dependent_var.nwat} {more_exports_for_microphys} {level_127} diff --git a/workflow/config/fv3.yaml b/workflow/config/fv3.yaml index cfe7bfa550..c8d173fce6 100644 --- a/workflow/config/fv3.yaml +++ b/workflow/config/fv3.yaml @@ -43,57 +43,57 @@ config_fv3: forecast_mode=$( echo "$1" | tr a-z A-Z ) case $forecast_mode in - "GFS") + "gfs") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_gfs_settings.DELTIM} - export layout_x={doc.fv3_gfs_settings.layout_x} - export layout_y={doc.fv3_gfs_settings.layout_y} - export layout_x_gfs={doc.fv3_gfs_settings.layout_x} - export layout_y_gfs={doc.fv3_gfs_settings.layout_y} + export layout_x={doc.fv3_gfs_settings.layout.x} + export layout_y={doc.fv3_gfs_settings.layout.y} + export layout_x_gfs={doc.fv3_gfs_settings.layout.x} + export layout_y_gfs={doc.fv3_gfs_settings.layout.y} export npe_node_fcst={doc.partition_common.resources.run_gdasfcst[0].max_ppn} export nth_fv3=2 export npe_fv3={doc.partition_common.resources.run_gdasfcst[0].mpi_ranks} export cdmbgwd={doc.fv3_gfs_settings.cdmbgwd} # mountain blocking and gravity wave drag - export WRITE_GROUP={doc.fv3_gfs_settings.WRITE_GROUP} - export WRTTASK_PER_GROUP={doc.fv3_gfs_settings.WRTTASK_PER_GROUP} - export WRITE_GROUP_GFS={doc.fv3_gfs_settings.WRITE_GROUP} - export WRTTASK_PER_GROUP_GFS={doc.fv3_gfs_settings.WRTTASK_PER_GROUP} - export WRTIOBUF={doc.fv3_gfs_settings.WRTIOBUF} + export WRITE_GROUP={doc.fv3_gfs_settings.layout.WGRP} + export WRTTASK_PER_GROUP={doc.fv3_gfs_settings.layout.WGRP_NTASKS} + export WRITE_GROUP_GFS={doc.fv3_gfs_settings.layout.WGRP} + export WRTTASK_PER_GROUP_GFS={doc.fv3_gfs_settings.layout.WGRP_NTASKS} + export WRTIOBUF={doc.fv3_gfs_settings.layout.WRTIOBUF} ;; - "GDAS") + "gdas") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_gdas_settings.DELTIM} - export layout_x={doc.fv3_gdas_settings.layout_x} - export layout_y={doc.fv3_gdas_settings.layout_y} - export layout_x_gfs={doc.fv3_gdas_settings.layout_x} - export layout_y_gfs={doc.fv3_gdas_settings.layout_y} + export layout_x={doc.fv3_gdas_settings.layout.x} + export layout_y={doc.fv3_gdas_settings.layout.y} + export layout_x_gfs={doc.fv3_gdas_settings.layout.x} + export layout_y_gfs={doc.fv3_gdas_settings.layout.y} export npe_node_fcst={doc.partition_common.resources.run_gdasfcst[0].max_ppn} export nth_fv3=2 export npe_fv3={doc.partition_common.resources.run_gdasfcst[0].mpi_ranks} export cdmbgwd={doc.fv3_gdas_settings.cdmbgwd} - export WRITE_GROUP={doc.fv3_gdas_settings.WRITE_GROUP} - export WRTTASK_PER_GROUP={doc.fv3_gdas_settings.WRTTASK_PER_GROUP} - export WRITE_GROUP_GFS={doc.fv3_gdas_settings.WRITE_GROUP} - export WRTTASK_PER_GROUP_GFS={doc.fv3_gdas_settings.WRTTASK_PER_GROUP} - export WRTIOBUF={doc.fv3_gdas_settings.WRTIOBUF} + export WRITE_GROUP={doc.fv3_gdas_settings.layout.WGRP} + export WRTTASK_PER_GROUP={doc.fv3_gdas_settings.layout.WGRP_NTASKS} + export WRITE_GROUP_GFS={doc.fv3_gdas_settings.layout.WGRP} + export WRTTASK_PER_GROUP_GFS={doc.fv3_gdas_settings.layout.WGRP_NTASKS} + export WRTIOBUF={doc.fv3_gdas_settings.layout.WRTIOBUF} ;; - "ENKF") + "enkf") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_enkf_settings.DELTIM} - export layout_x={doc.fv3_enkf_settings.layout_x} - export layout_y={doc.fv3_enkf_settings.layout_y} - export layout_x_gfs={doc.fv3_enkf_settings.layout_x} - export layout_y_gfs={doc.fv3_enkf_settings.layout_y} + export layout_x={doc.fv3_enkf_settings.layout.x} + export layout_y={doc.fv3_enkf_settings.layout.y} + export layout_x_gfs={doc.fv3_enkf_settings.layout.x} + export layout_y_gfs={doc.fv3_enkf_settings.layout.y} export npe_node_fcst={doc.partition_common.resources.run_efcs[0].max_ppn} export nth_fv3=2 export npe_fv3={doc.partition_common.resources.run_efcs[0].mpi_ranks} export cdmbgwd={doc.fv3_enkf_settings.cdmbgwd} - export WRITE_GROUP={doc.fv3_enkf_settings.WRITE_GROUP} - export WRTTASK_PER_GROUP={doc.fv3_enkf_settings.WRTTASK_PER_GROUP} - export WRITE_GROUP_GFS={doc.fv3_enkf_settings.WRITE_GROUP} - export WRTTASK_PER_GROUP_GFS={doc.fv3_enkf_settings.WRTTASK_PER_GROUP} - export WRTIOBUF={doc.fv3_enkf_settings.WRTIOBUF} + export WRITE_GROUP={doc.fv3_enkf_settings.layout.WGRP} + export WRTTASK_PER_GROUP={doc.fv3_enkf_settings.layout.WGRP_NTASKS} + export WRITE_GROUP_GFS={doc.fv3_enkf_settings.layout.WGRP} + export WRTTASK_PER_GROUP_GFS={doc.fv3_enkf_settings.layout.WGRP_NTASKS} + export WRTIOBUF={doc.fv3_enkf_settings.layout.WRTIOBUF} ;; *) echo "CDUMP undefined!" diff --git a/workflow/defaults/archiving.yaml b/workflow/defaults/archiving.yaml new file mode 100644 index 0000000000..9d227a2297 --- /dev/null +++ b/workflow/defaults/archiving.yaml @@ -0,0 +1,10 @@ +archiving_defaults: &archiving_defaults + archive_to_hpss: yes + arch_cyc: 18 + arch_warmicfreq: 6 + arch_fcsticfreq: 3 + copy_fit2obs_files: yes + scrub_in_archive: yes + scrub_in_archive_start: 144 + scrub_in_archive_end: 24 + ATARDIR: "/NCEPDEV/$HPSS_PROJECT/1year/$USER/$machine/scratch/$PSLOT" diff --git a/workflow/defaults/data_assimilation.yaml b/workflow/defaults/data_assimilation.yaml new file mode 100644 index 0000000000..43654dbac6 --- /dev/null +++ b/workflow/defaults/data_assimilation.yaml @@ -0,0 +1,37 @@ +data_assimilation_defaults: &data_assimilation_defaults + DOHYBVAR: YES + NMEM_ENKF: 80 + NMEM_EOMGGRP: 10 + NMEM_EFCSGRP: 10 + NMEM_EARCGRP: 10 + RECENTER_ENKF: YES + SMOOTH_ENKF: YES + assim_freq: 6 + l4densvar: YES + lwrite4danl: NO + + NSPLIT: 4 + NAM_ENKF: "analpertwtnh=0.9,analpertwtsh=0.9,analpertwttr=0.9" + INCREMENTS_TO_ZERO: [ delz_inc, clwmr_inc, icmr_inc ] + PREP_REALTIME: no + DO_EMCSFC: NO + PROCESS_TROPCY: no + DO_RELOCATE: no + DO_MAKEPREPBUFR: YES + OPREFIX: "$CDUMP.$cycle." + COM_OBS: "$DMPDIR" + COMIN_OBS: !FirstTrue + - when: !calc ( COM_OBS=="$DMPDIR" ) + do: "$DMPDIR/$CDATE/$CDUMP$DUMP_SUFFIX" + - when: !calc ( COM_OBS=="$COMROOT" ) + do: "$COMROOT/$CDUMP.$PDY/$CYC" + - otherwise: !error "Unknown COM_OBS value: {COM_OBS}" + RERUN_EFCSGRP: NO + RERUN_EOMGGRP: YES + GENDIAG: YES + NEPOSGRP: 7 + OBSINPUT_INVOBS: "dmesh(1)=225.0,dmesh(2)=225.0" + OBSQC_INVOBS: "tcp_width=60.0,tcp_ermin=2.0,tcp_ermax=12.0" + ENKF_INNOVATE_GROUPS: !calc ( NMEM_ENKF // NMEM_EOMGGRP ) + ENKF_FORECAST_GROUPS: !calc ( NMEM_ENKF // NMEM_EFCSGRP ) + ENKF_ARCHIVE_GROUPS: !calc ( NMEM_ENKF // NMEM_EARCGRP ) diff --git a/workflow/defaults/default_resources.yaml b/workflow/defaults/default_resources.yaml index da42441c7f..3b41ebbbca 100644 --- a/workflow/defaults/default_resources.yaml +++ b/workflow/defaults/default_resources.yaml @@ -308,7 +308,7 @@ default_resources: &default_resources - batch_memory: "1024M" mpi_ranks: !icalc doc.fv3_gfs_settings.ATMPETS+doc.fv3_gfs_settings.OCNPETS+doc.fv3_gfs_settings.ICEPETS max_ppn: !icalc doc.gfs_resource_table.gfsfcst_ppn - OMP_NUM_THREADS: !icalc doc.fv3_gfs_settings.fv3_threads + OMP_NUM_THREADS: !icalc doc.fv3_gfs_settings.layout.nth walltime: !icalc doc.gfs_resource_table.coupfcst_wall memory_per_rank: !icalc doc.gfs_resource_table.get('gfsfcst_mem_per_rank',None) @@ -316,7 +316,7 @@ default_resources: &default_resources - batch_memory: "1024M" mpi_ranks: !icalc doc.fv3_gfs_settings.ATMPETS+doc.fv3_gfs_settings.OCNPETS+doc.fv3_gfs_settings.ICEPETS max_ppn: !icalc doc.gfs_resource_table.gfsfcst_ppn - OMP_NUM_THREADS: !icalc doc.fv3_gfs_settings.fv3_threads + OMP_NUM_THREADS: !icalc doc.fv3_gfs_settings.layout.nth walltime: !icalc doc.gfs_resource_table.coupfcst_medcold_wall memory_per_rank: !icalc doc.gfs_resource_table.get('gfsfcst_mem_per_rank',None) diff --git a/workflow/defaults/fv3.yaml b/workflow/defaults/fv3.yaml deleted file mode 100644 index 4363267e25..0000000000 --- a/workflow/defaults/fv3.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# default settings for fv3 core - -fv3_defaults: &fv3_defaults - CASE: C384 - LEVS: 65 - DELTIM: 450 - layout_x: 6 - layout_y: 8 - fv3_threads: 2 - cdmbgwd: "3.5,0.25" - WRITE_GROUP: 1 - WRTTASK_PER_GROUP: 24 - WRTIOBUF: "32M" - OCNPETS: 120 - ICEPETS: 48 diff --git a/workflow/defaults/fv3_enkf.yaml b/workflow/defaults/fv3_enkf.yaml index 85e53a6fe8..fdbf459abe 100644 --- a/workflow/defaults/fv3_enkf.yaml +++ b/workflow/defaults/fv3_enkf.yaml @@ -1,32 +1,32 @@ -# This file is used to configure the ENKF-related config files. The -# ENKF is not included in this release, so these settings are not -# needed. However, they do need to be set to valid values because -# there is validation of the fv3_enkf_settings variables elsewhere in -# the YAML documents. - fv3_enkf_defaults: &fv3_enkf_defaults - QUILTING: True - layout_x: 4 - layout_y: 6 - ATMPETS: !FirstTrue - - when: !calc doc.fv3_enkf_settings.QUILTING - do: !calc layout_x * layout_y * 6 + WRITE_GROUP * WRTTASK_PER_GROUP - - otherwise: !calc layout_x * layout_y * 6 - - FHSWR: 3600. - FHLWR: 3600. - IEMS: 1 - ISOL: 2 - IAER: 111 - ICO2: 2 - dspheat: YES - shal_cnv: NO - FHZER: 6 + CDUMP: gdas + CASE: C192 + LEVS: 65 FHCYC: 1 - restart_interval: 6 + FHCYC_GDAS: 1 + FHCYC_GFS: 24 + FHSWR: 3600 + FHLWR: 3600 + FHZER: 6 FHMAX: 6 + QUILTING: True + WRITE_NEMSIOFILE: YES + WRITE_NEMSIOFLIP: yes + nst_anl: yes + lprecip_accu: yes + DONST: YES + MONO: "non-mono" + MEMBER: -1 + d4_bg: 0.15 + dddmp: 0.2 + ISEED: 0 + SET_STP_SEED: YES + + DO_SHUM: YES + SHUM: 0.005 + SHUM_TAU: 21600. + SHUM_LSCALE: 500000. -# Stochastic physics parameters (only for ensemble forecasts) DO_SKEB: YES SKEB: 0.3 SKEB_TAU: 21600. @@ -34,20 +34,157 @@ fv3_enkf_defaults: &fv3_enkf_defaults SKEBNORM: 0 SKEB_NPASS: 30 SKEB_VDOF: 5 - DO_SHUM: YES - SHUM: 0.005 - SHUM_TAU: 21600. - SHUM_LSCALE: 500000. + DO_SPPT: YES - DOIAU_ENKF: NO - IAUFHRS_ENKF: 6 - IAU_DELTHRS_ENKF: 6 SPPT: 0.5 SPPT_TAU: 21600. SPPT_LSCALE: 500000. SPPT_LOGIT: YES SPPT_SFCLIMIT: YES + DOIAU_ENKF: NO + IAUFHRS_ENKF: 6 + IAU_DELTHRS_ENKF: 6 + k_split: 1 n_split: 12 + + RUN_EFCSGRP: NO + zhao_mic: YES + nh_type: 'nh' + USE_COUPLER_RES: NO + cdmbgwd: !FirstTrue + - when: !calc CASE=="C48" + do: "0.071,2.1,1.0,1.0" + - when: !calc CASE=="C96" + do: "0.14,1.8,1.0,1.0" + - when: !calc CASE=="C192" + do: "0.23,1.5,1.0,1.0" + - when: !calc CASE=="C384" + do: "1.1,0.72,1.0,1.0" + - when: !calc CASE=="C768" + do: "4.0,0.15,1.0,1.0" + - when: !calc CASE=="C1152" + do: "4.0,0.10,1.0,1.0" + - when: !calc CASE=="C3072" + do: "4.0,0.05,1.0,1.0" + - otherwise: "" + message: "Newly defined CASE, please make sure cdmbgwd is set correctly in case file under fv3_enkf_settings!" + + DELTIM: !FirstTrue + - when: !calc CASE=="C384" + do: 240 + - when: !calc CASE=="C768" + do: 225 + - when: !calc CASE=="C1152" + do: 150 + - when: !calc CASE=="C3072" + do: 90 + - otherwise: 450 + + layout: !Select + select: !calc CASE + otherwise: !error "Unknown FV3 deterministic grid: {doc.fv3_enkf_settings.CASE}" + cases: + C48: { x: 2,y: 4, nth: 1, WGRP: 1, WGRP_NTASKS: 24, WRTIOBUF: "4M" } + C96: { x: 4,y: 4, nth: 1, WGRP: 1, WGRP_NTASKS: 24, WRTIOBUF: "4M" } + C192: { x: 4, y: 6, nth: 2, WGRP: 2, WGRP_NTASKS: 24, WRTIOBUF: "8M" } + C384: { x: 6, y: 6, nth: 2, WGRP: 3, WGRP_NTASKS: 24, WRTIOBUF: "16M" } + C768: { x: 8, y: 16, nth: 2, WGRP: 4, WGRP_NTASKS: 60, WRTIOBUF: "32M" } + C1152: { x: 8, y: 16, nth: 4, WGRP: 4, WGRP_NTASKS: 84, WRTIOBUF: "48M" } + C3072: { x: 16,y: 32, nth: 4, WGRP: 4, WGRP_NTASKS: 120, WRTIOBUF: "64M" } +# layout_x: layout.x +# layout_y: layout.y +# fv3_thread: layout.nth +# WRITE_GROUP: layout.WGRP +# WRTTASK_PER_GROUP: layout.WGRP_NTASKS +# WRTIOBUF: layout.WRTIOBUF + + new_o3force: yes + h2o_phys: yes + do_vort_damp: yes + cnvcld: true consv_te: 1. + fv_sg_adj: 450 + dspheat: YES + shal_cnv: NO + agrid_vel_rst: yes + IEMS: 1 + IALB: 1 + ISOL: 2 + IAER: 111 + ICO2: 2 + warm_start: true + read_increment: no + restart_interval: 6 + imp_physics: "11" +# if_present: !FirstTrue +# - when: !calc ( imp_physics==99 ) +# do: +# ncld: 1 +# nwat: 2 + phy_dependent_var: !Select + select: !calc imp_physics + otherwise: !error "Unknown imp_physics option: {imp_physics} !" + cases: + "99": + ncld: 1 + nwat: 2 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_zhaocarr" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "6": + ncld: 2 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_wsm6" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "8": + ncld: 2 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_thompson" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "11": + ncld: 5 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_gfdl_satmedmf" + dnats: 1 + cal_pre: false + do_sat_adjust: true + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + + ATMPETS: !FirstTrue + - when: !calc QUILTING + do: !calc layout.x * layout.y * 6 + layout.WGRP * layout.WGRP_NTASKS + - otherwise: !calc layout.x * layout.y * 6 diff --git a/workflow/defaults/fv3_gdas.yaml b/workflow/defaults/fv3_gdas.yaml index 416fc3b9b4..0d9900b6ea 100644 --- a/workflow/defaults/fv3_gdas.yaml +++ b/workflow/defaults/fv3_gdas.yaml @@ -1,6 +1,156 @@ fv3_gdas_defaults: &fv3_gdas_defaults + CDUMP: gdas + CASE: C384 + LEVS: 65 + FHCYC: 24 + FHCYC_GDAS: 1 + FHCYC_GFS: 24 QUILTING: True + WRITE_NEMSIOFILE: YES + WRITE_NEMSIOFLIP: yes + nst_anl: yes + lprecip_accu: yes + DONST: YES + MONO: "non-mono" + MEMBER: -1 + d4_bg: 0.15 + dddmp: 0.2 + ISEED: 0 + SET_STP_SEED: YES + DO_SHUM: NO + DO_SKEB: NO + DO_SPPT: NO + RUN_EFCSGRP: NO + zhao_mic: YES + nh_type: 'nh' + USE_COUPLER_RES: NO + cdmbgwd: !FirstTrue + - when: !calc CASE=="C48" + do: "0.071,2.1,1.0,1.0" + - when: !calc CASE=="C96" + do: "0.14,1.8,1.0,1.0" + - when: !calc CASE=="C192" + do: "0.23,1.5,1.0,1.0" + - when: !calc CASE=="C384" + do: "1.1,0.72,1.0,1.0" + - when: !calc CASE=="C768" + do: "4.0,0.15,1.0,1.0" + - when: !calc CASE=="C1152" + do: "4.0,0.10,1.0,1.0" + - when: !calc CASE=="C3072" + do: "4.0,0.05,1.0,1.0" + - otherwise: "" + message: "Newly defined CASE, please make sure cdmbgwd is set correctly in case file under fv3_gdas_settings!" + + DELTIM: !FirstTrue + - when: !calc CASE=="C384" + do: 240 + - when: !calc CASE=="C768" + do: 225 + - when: !calc CASE=="C1152" + do: 150 + - when: !calc CASE=="C3072" + do: 90 + - otherwise: 450 + + layout: !Select + select: !calc CASE + otherwise: !error "Unknown FV3 deterministic grid: {doc.fv3_gdas_settings.CASE}" + cases: + C48: { x: 2,y: 4, nth: 1, WGRP: 1, WGRP_NTASKS: 24, WRTIOBUF: "4M" } + C96: { x: 4,y: 4, nth: 1, WGRP: 1, WGRP_NTASKS: 24, WRTIOBUF: "4M" } + C192: { x: 4, y: 6, nth: 2, WGRP: 2, WGRP_NTASKS: 24, WRTIOBUF: "8M" } + C384: { x: 6, y: 6, nth: 2, WGRP: 3, WGRP_NTASKS: 24, WRTIOBUF: "16M" } + C768: { x: 8, y: 16, nth: 2, WGRP: 4, WGRP_NTASKS: 60, WRTIOBUF: "32M" } + C1152: { x: 8, y: 16, nth: 4, WGRP: 4, WGRP_NTASKS: 84, WRTIOBUF: "48M" } + C3072: { x: 16,y: 32, nth: 4, WGRP: 4, WGRP_NTASKS: 120, WRTIOBUF: "64M" } +# layout_x: layout.x +# layout_y: layout.y +# fv3_thread: layout.nth +# WRITE_GROUP: layout.WGRP +# WRTTASK_PER_GROUP: layout.WGRP_NTASKS +# WRTIOBUF: layout.WRTIOBUF + + new_o3force: yes + h2o_phys: yes + do_vort_damp: yes + cnvcld: true + consv_te: 1. + fv_sg_adj: 450 + dspheat: YES + shal_cnv: YES + agrid_vel_rst: yes + IEMS: 1 + IALB: 1 + ISOL: 2 + IAER: 111 + ICO2: 2 + warm_start: true + read_increment: no + restart_interval: 6 + imp_physics: "11" + phy_dependent_var: !Select + select: !calc imp_physics + otherwise: !error "Unknown imp_physics option: {imp_physics} !" + cases: + "99": + ncld: 1 + nwat: 2 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_zhaocarr" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "6": + ncld: 2 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_wsm6" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "8": + ncld: 2 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_thompson" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "11": + ncld: 5 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_gfdl_satmedmf" + dnats: 1 + cal_pre: false + do_sat_adjust: true + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + ATMPETS: !FirstTrue - - when: !calc doc.fv3_gdas_settings.QUILTING - do: !calc layout_x * layout_y * 6 + WRITE_GROUP * WRTTASK_PER_GROUP - - otherwise: !calc layout_x * layout_y * 6 + - when: !calc QUILTING + do: !calc layout.x * layout.y * 6 + layout.WGRP * layout.WGRP_NTASKS + - otherwise: !calc layout.x * layout.y * 6 diff --git a/workflow/defaults/fv3_gfs.yaml b/workflow/defaults/fv3_gfs.yaml index 7fd97d8b0f..f8cacbf154 100644 --- a/workflow/defaults/fv3_gfs.yaml +++ b/workflow/defaults/fv3_gfs.yaml @@ -1,6 +1,158 @@ fv3_gfs_defaults: &fv3_gfs_defaults + CDUMP: gfs + CASE: C384 + LEVS: 65 + FHCYC: 24 + FHCYC_GDAS: 1 + FHCYC_GFS: 24 QUILTING: True + WRITE_NEMSIOFILE: YES + WRITE_NEMSIOFLIP: yes + nst_anl: yes + lprecip_accu: yes + DONST: YES + MONO: "non-mono" + MEMBER: -1 + d4_bg: 0.15 + dddmp: 0.2 + ISEED: 0 + SET_STP_SEED: YES + DO_SHUM: NO + DO_SKEB: NO + DO_SPPT: NO + RUN_EFCSGRP: NO + zhao_mic: YES + nh_type: 'nh' + USE_COUPLER_RES: NO + cdmbgwd: !FirstTrue + - when: !calc CASE=="C48" + do: "0.071,2.1,1.0,1.0" + - when: !calc CASE=="C96" + do: "0.14,1.8,1.0,1.0" + - when: !calc CASE=="C192" + do: "0.23,1.5,1.0,1.0" + - when: !calc CASE=="C384" + do: "1.1,0.72,1.0,1.0" + - when: !calc CASE=="C768" + do: "4.0,0.15,1.0,1.0" + - when: !calc CASE=="C1152" + do: "4.0,0.10,1.0,1.0" + - when: !calc CASE=="C3072" + do: "4.0,0.05,1.0,1.0" + - otherwise: "" + message: "Newly defined CASE, please make sure cdmbgwd is set correctly in case file under fv3_gfs_settings!" + + DELTIM: !FirstTrue + - when: !calc CASE=="C384" + do: 240 + - when: !calc CASE=="C768" + do: 225 + - when: !calc CASE=="C1152" + do: 150 + - when: !calc CASE=="C3072" + do: 90 + - otherwise: 450 + + layout: !Select + select: !calc CASE + otherwise: !error "Unknown FV3 deterministic grid: {doc.fv3_gfs_settings.CASE}" + cases: + C48: { x: 2,y: 4, nth: 1, WGRP: 1, WGRP_NTASKS: 24, WRTIOBUF: "4M" } + C96: { x: 4,y: 4, nth: 1, WGRP: 1, WGRP_NTASKS: 24, WRTIOBUF: "4M" } + C192: { x: 4, y: 6, nth: 2, WGRP: 2, WGRP_NTASKS: 24, WRTIOBUF: "8M" } + C384: { x: 6, y: 6, nth: 2, WGRP: 3, WGRP_NTASKS: 24, WRTIOBUF: "16M" } + C768: { x: 8, y: 16, nth: 2, WGRP: 4, WGRP_NTASKS: 60, WRTIOBUF: "32M" } + C1152: { x: 8, y: 16, nth: 4, WGRP: 4, WGRP_NTASKS: 84, WRTIOBUF: "48M" } + C3072: { x: 16,y: 32, nth: 4, WGRP: 4, WGRP_NTASKS: 120, WRTIOBUF: "64M" } +# layout_x: layout.x +# layout_y: layout.y +# fv3_thread: layout.nth +# WRITE_GROUP: layout.WGRP +# WRTTASK_PER_GROUP: layout.WGRP_NTASKS +# WRTIOBUF: layout.WRTIOBUF + + new_o3force: yes + h2o_phys: yes + do_vort_damp: yes + cnvcld: true + consv_te: 1. + fv_sg_adj: 450 + dspheat: YES + shal_cnv: YES + agrid_vel_rst: yes + IEMS: 1 + IALB: 1 + ISOL: 2 + IAER: 111 + ICO2: 2 + warm_start: true + read_increment: no + restart_interval: 6 + imp_physics: "11" + phy_dependent_var: !Select + select: !calc imp_physics + otherwise: !error "Unknown imp_physics option: {imp_physics} !" + cases: + "99": + ncld: 1 + nwat: 2 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_zhaocarr" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "6": + ncld: 2 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_wsm6" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "8": + ncld: 2 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_thompson" + dnats: 0 + cal_pre: false + do_sat_adjust: false + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + "11": + ncld: 5 + nwat: 6 + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_gfdl_satmedmf" + dnats: 1 + cal_pre: false + do_sat_adjust: true + random_clds: false + hord_mt_nh_nonmono: 5 + hord_xx_nh_nonmono: 5 + vtdm4_nh_nonmono: 0.02 + nord: 2 + dddmp: 0.1 + d4_bg: 0.12 + ATMPETS: !FirstTrue - - when: !calc doc.fv3_gfs_settings.QUILTING - do: !calc layout_x * layout_y * 6 + WRITE_GROUP * WRTTASK_PER_GROUP - - otherwise: !calc layout_x * layout_y * 6 + - when: !calc QUILTING + do: !calc layout.x * layout.y * 6 + layout.WGRP * layout.WGRP_NTASKS + - otherwise: !calc layout.x * layout.y * 6 + OCNPETS: 120 + ICEPETS: 48 diff --git a/workflow/defaults/gfs_output_settings.yaml b/workflow/defaults/gfs_output_settings.yaml deleted file mode 100644 index 7b04d97dc2..0000000000 --- a/workflow/defaults/gfs_output_settings.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# This file sets default values for the GFS output settings. See -# schema/output.yaml for documentation. - -gfs_output_settings_defaults: &gfs_output_settings_defaults - FHMAX_GFS: 384 - FHOUT_GFS: 3 - OUTPUT_GRID: gaussian_grid diff --git a/workflow/defaults/nsst.yaml b/workflow/defaults/nsst.yaml new file mode 100644 index 0000000000..1ac6909398 --- /dev/null +++ b/workflow/defaults/nsst.yaml @@ -0,0 +1,8 @@ +nsst_defaults: &nsst_defaults + NST_MODEL: 2 + NST_RESV: 0 + ZSEA1: 0 + ZSEA2: 0 + NST_GSI: 3 + NSTINFO: 0 + NST_SPINUP: 0 diff --git a/workflow/defaults/output_settings.yaml b/workflow/defaults/output_settings.yaml new file mode 100644 index 0000000000..fad2f14d3f --- /dev/null +++ b/workflow/defaults/output_settings.yaml @@ -0,0 +1,38 @@ +# This file sets default values for the GFS output settings. See +# schema/output.yaml for documentation. + +output_settings_defaults: &output_settings_defaults + FHMIN_GFS: 0 + FHMAX_GFS: 384 + FHOUT_GFS: 3 + FHMIN_ENKF: 3 + FHMAX_ENKF: 9 + FHOUT_ENKF: !FirstTrue + - when: doc.data_assimilation.l4densvar + do: 1 + - otherwise: 3 + FHMIN_GDAS: 0 + FHMAX_GDAS: 9 + FHOUT_GDAS: 3 + + FHMAX_HF_GFS: 0 + FHOUT_HF_GFS: 1 + OCN_INTERVAL: 120 + + NCO_NAMING_CONV: YES + OUTPUT_FILE_TYPE: nemsio + OUTPUT_GRID: gaussian_grid + + gfs_forecast_hours: !calc >- + tools.uniq(sorted( + tools.seq(FHMIN_GFS,FHMAX_HF_GFS,FHOUT_HF_GFS) + + tools.seq(FHMIN_GFS,FHMAX_GFS, FHOUT_GFS))) + gdas_forecast_hours: !calc "tools.seq(FHMIN_GDAS,FHMAX_GDAS,FHOUT_GDAS)" + ocnpost_hours: !calc "tools.seq(FHMIN_GFS,FHMAX_GFS-OCN_INTERVAL,OCN_INTERVAL)" + enkf_epos_fhr: !calc "tools.seq(FHMIN_ENKF,FHMAX_ENKF,FHOUT_ENKF)" + wafs_last_hour: 120 + awips_g2_hours: !calc ( tools.seq(0,240,6) ) + awips_20km_1p0_hours: !calc >- + tools.uniq(sorted( + tools.seq(0,84,3) + + tools.seq(90,240,6))) diff --git a/workflow/defaults/places.yaml b/workflow/defaults/places.yaml index 9d0dcd1b7a..24c40ddb15 100644 --- a/workflow/defaults/places.yaml +++ b/workflow/defaults/places.yaml @@ -21,6 +21,18 @@ default_places: &default_places # SHORT_TERM_TEMP: !error GOT HERE # LONG_TERM_TEMP: !error GOT HERE TOO + NOSCRUB: !FirstTrue + - when: !calc doc.platform.get('NOSCRUB_DIR','') + do: !calc doc.platform.NOSCRUB_DIR + - otherwise: !expand "{doc.places.EXPROOT}/noscrub/{tools.env('USER')}" + + BASE_SVN: !calc doc.platform.BASE_SVN + BASE_GIT: !calc doc.platform.BASE_GIT + + ics_from: opsgfs + parexp: prnemsrn + HPSS_PAR_PATH: !expand "/5year/NCEPDEV/emc-global/emc.glopara/WCOSS_C/{parexp}" + ECF_ROOT: !calc tools.env("ECF_ROOT","/dev/null/ECF_ROOT") ECF_HOME: !calc tools.env("ECF_HOME","/dev/null/ECF_HOME") ecflow_def_dir: !expand '{ECF_ROOT}/defs' diff --git a/workflow/defaults/settings.yaml b/workflow/defaults/settings.yaml index b09e8b86ee..d01946f141 100644 --- a/workflow/defaults/settings.yaml +++ b/workflow/defaults/settings.yaml @@ -18,19 +18,29 @@ default_settings: &default_settings rocoto_cycle_throttle: 2 max_job_tries: 2 + dev_safeguards: true # REALTIME and realtime - an alias that should be removed once we're # sure it is consistent among the yaml files: realtime: NO + run_vrfy_jobs: true four_cycle_mode: NO nco_mode: NO use_nco_ecflow_headers: NO print_esmf: .false. + prod_util_module: !calc doc.platform.get("prod_util_module","prod_util") + ecflow_real_clock: no + ecflow_virtual_clock: no + ecflow_hybrid_clock: no gfs_cyc: 4 nems_temp: 'atm' nems_temp_cold: 'atm' + ics_from: opsgfs + + parexp: prnemsrn + HPSS_PAR_PATH: !expand "/5year/NCEPDEV/emc-global/emc.glopara/WCOSS_C/{parexp}" cplflx: .false. cplice: !calc cplflx @@ -43,6 +53,7 @@ default_settings: &default_settings KEEPDATA: NO DUMP_SUFFIX: "" run_gsi: No + run_enkf: !calc run_gsi chgres_and_convert_ics: Yes # awips setting @@ -55,9 +66,6 @@ default_settings: &default_settings ecflow_module: !calc doc.platform.get("ecflow_module","ecflow") - ecflow_real_clock: no - ecflow_virtual_clock: no - ecflow_hybrid_clock: no ecflow_totality_limit: yes ecflow_rocoto_cdate_workaround: !FirstTrue diff --git a/workflow/layout/cycled_gfs.yaml b/workflow/layout/cycled_gfs.yaml index f7cf895216..8c39f26769 100644 --- a/workflow/layout/cycled_gfs.yaml +++ b/workflow/layout/cycled_gfs.yaml @@ -153,7 +153,7 @@ suite: !Cycle post: !TaskArray RUN: !calc up.RUN Dimensions: - fhr: !calc doc.gfs_output_settings.gdas_forecast_hours + fhr: !calc doc.output_settings.gdas_forecast_hours post_manager_el: !TaskElement <<: *exclusive_task_template RUN: !calc up.RUN @@ -308,7 +308,7 @@ suite: !Cycle post: !TaskArray Trigger: !Depend forecast Dimensions: - fhr: !calc doc.gfs_output_settings.enkf_epos_fhr + fhr: !calc doc.output_settings.enkf_epos_fhr jgdas_enkf_post_fhr: !TaskElement <<: *exclusive_task_template Foreach: [ fhr ] @@ -436,7 +436,7 @@ suite: !Cycle post: !TaskArray RUN: !calc up.RUN Dimensions: - fhr: !calc doc.gfs_output_settings.gfs_forecast_hours + fhr: !calc doc.output_settings.gfs_forecast_hours jgfs_post_manager_el: !TaskElement <<: *exclusive_task_template RUN: !calc up.RUN @@ -504,7 +504,7 @@ suite: !Cycle /usr/bin/env post_times={FHR} FHRLST={FHR} FHRGRP={FHR} &HOMEgfs;/jobs/{J_JOB} jgfs_pgrb2_spec_post: !FirstTrue - - when: !calc max(doc.gfs_output_settings.gfs_forecast_hours)>=384 + - when: !calc max(doc.output_settings.gfs_forecast_hours)>=384 do: !Task <<: *exclusive_task_template Dummy: true ## <-- Node is not implemented yet @@ -548,7 +548,7 @@ suite: !Cycle grib_wafs: !TaskArray Disable: !calc not doc.downstream.DO_WAFS Dimensions: - fhr: !calc tools.seq(0,doc.gfs_output_settings.wafs_last_hour,6) + fhr: !calc tools.seq(0,doc.output_settings.wafs_last_hour,6) jgfs_wafs: !TaskElement <<: *exclusive_task_template Name: !expand 'jgfs_wafs_f{dimval.fhr:03d}' @@ -609,7 +609,7 @@ suite: !Cycle awips_20km_1p0: !TaskArray Disable: !calc not doc.downstream.DO_AWIPS Dimensions: - fhr: !calc " sorted(list(set(doc.gfs_output_settings.gfs_forecast_hours)&set(doc.gfs_output_settings.awips_20km_1p0_hours))) " + fhr: !calc " sorted(list(set(doc.output_settings.gfs_forecast_hours)&set(doc.output_settings.awips_20km_1p0_hours))) " # tasks every 6 hours till f240 jgfs_awips: !TaskElement <<: *exclusive_task_template @@ -626,7 +626,7 @@ suite: !Cycle awips_g2: !TaskArray Disable: !calc not doc.downstream.DO_AWIPS Dimensions: - fhr: !calc " sorted(list(set(doc.gfs_output_settings.gfs_forecast_hours)&set(doc.gfs_output_settings.awips_g2_hours))) " + fhr: !calc " sorted(list(set(doc.output_settings.gfs_forecast_hours)&set(doc.output_settings.awips_g2_hours))) " jgfs_awips: !TaskElement <<: *exclusive_task_template Foreach: [ fhr ] diff --git a/workflow/layout/free_forecast_gfs.yaml b/workflow/layout/free_forecast_gfs.yaml index 1b6e667749..e205e6efaa 100644 --- a/workflow/layout/free_forecast_gfs.yaml +++ b/workflow/layout/free_forecast_gfs.yaml @@ -77,7 +77,7 @@ suite: !Cycle post: !TaskArray RUN: !calc up.RUN Dimensions: - fhr: !calc doc.gfs_output_settings.gfs_forecast_hours + fhr: !calc doc.output_settings.gfs_forecast_hours jgfs_post_manager_el: !TaskElement <<: *exclusive_task_template RUN: !calc up.RUN @@ -145,14 +145,14 @@ suite: !Cycle RUN: !calc up.RUN Disable: !calc not doc.settings.cplflx Dimensions: - fhr: !calc doc.gfs_output_settings.ocnpost_hours + fhr: !calc doc.output_settings.ocnpost_hours jgfs_ocnpost_fhr_el: !TaskElement <<: *exclusive_task_template Foreach: [ fhr ] resources: !calc partition.resources.run_one_node_downstream Name: !expand p_{dimval.fhr:03d} FHR: !expand "{dimval.fhr:03d}" - OCN_FHRLST: !calc "tools.seq(dimval.fhr, dimval.fhr+doc.gfs_output_settings.OCN_INTERVAL, 6)" + OCN_FHRLST: !calc "tools.seq(dimval.fhr, dimval.fhr+doc.output_settings.OCN_INTERVAL, 6)" J_JOB: rocoto/ocnpost.sh Trigger: !Depend up.forecast ecflow_def: !expand "edit FHR '{FHR}'" diff --git a/workflow/layout/nco.yaml b/workflow/layout/nco.yaml index b199e543a5..ad9d82cb11 100644 --- a/workflow/layout/nco.yaml +++ b/workflow/layout/nco.yaml @@ -119,7 +119,7 @@ suite: !Cycle post: !TaskArray RUN: !calc up.RUN Dimensions: - fhr: !calc doc.gfs_output_settings.gdas_forecast_hours + fhr: !calc doc.output_settings.gdas_forecast_hours post_manager_el: !TaskElement <<: *exclusive_task_template RUN: !calc up.RUN @@ -254,7 +254,7 @@ suite: !Cycle post: !TaskArray Trigger: !Depend forecast Dimensions: - fhr: !calc doc.gfs_output_settings.enkf_epos_fhr + fhr: !calc doc.output_settings.enkf_epos_fhr jgdas_enkf_post_fhr: !TaskElement <<: *exclusive_task_template Foreach: [ fhr ] @@ -351,7 +351,7 @@ suite: !Cycle post: !TaskArray RUN: !calc up.RUN Dimensions: - fhr: !calc doc.gfs_output_settings.gfs_forecast_hours + fhr: !calc doc.output_settings.gfs_forecast_hours jgfs_post_manager_el: !TaskElement <<: *exclusive_task_template RUN: !calc up.RUN @@ -415,7 +415,7 @@ suite: !Cycle export post_times={FHR} FHRLST={FHR} FHRGRP={FHR} &HOMEgfs;/jobs/{J_JOB} jgfs_pgrb2_spec_post: !FirstTrue - - when: !calc max(doc.gfs_output_settings.gfs_forecast_hours)>=384 + - when: !calc max(doc.output_settings.gfs_forecast_hours)>=384 do: !Task <<: *exclusive_task_template Trigger: !Depend ( jgfs_post_f336 & jgfs_post_f348 & jgfs_post_f360 & jgfs_post_f372 & jgfs_post_f384 ) @@ -455,7 +455,7 @@ suite: !Cycle grib_wafs: !TaskArray Dimensions: - fhr: !calc tools.seq(0,doc.gfs_output_settings.wafs_last_hour,6) + fhr: !calc tools.seq(0,doc.output_settings.wafs_last_hour,6) jgfs_wafs: !TaskElement <<: *exclusive_task_template Name: !expand 'jgfs_wafs_f{dimval.fhr:03d}' @@ -512,7 +512,7 @@ suite: !Cycle awips_20km_1p0: !TaskArray Dimensions: - fhr: !calc " sorted(list(set(doc.gfs_output_settings.gfs_forecast_hours)&set(doc.gfs_output_settings.awips_20km_1p0_hours))) " + fhr: !calc " sorted(list(set(doc.output_settings.gfs_forecast_hours)&set(doc.output_settings.awips_20km_1p0_hours))) " # tasks every 6 hours till f240 jgfs_awips: !TaskElement <<: *exclusive_task_template @@ -527,7 +527,7 @@ suite: !Cycle awips_g2: !TaskArray Dimensions: - fhr: !calc " sorted(list(set(doc.gfs_output_settings.gfs_forecast_hours)&set(doc.gfs_output_settings.awips_g2_hours))) " + fhr: !calc " sorted(list(set(doc.output_settings.gfs_forecast_hours)&set(doc.output_settings.awips_g2_hours))) " jgfs_awips: !TaskElement <<: *exclusive_task_template Foreach: [ fhr ] diff --git a/workflow/layout/public_release_v1.yaml b/workflow/layout/public_release_v1.yaml index 4c6fed5071..c8475770fe 100644 --- a/workflow/layout/public_release_v1.yaml +++ b/workflow/layout/public_release_v1.yaml @@ -57,7 +57,7 @@ suite: !Cycle post: !TaskArray model: !calc up.model Dimensions: - fhr: !calc doc.gfs_output_settings.gfs_forecast_hours + fhr: !calc doc.output_settings.gfs_forecast_hours # jgfs_post_manager_el - used to generate the jgfs_post_manager # task. That task is only executed in ecFlow; it watches the diff --git a/workflow/schema/archiving.yaml b/workflow/schema/archiving.yaml index fd89781b2d..b8bc4a25da 100644 --- a/workflow/schema/archiving.yaml +++ b/workflow/schema/archiving.yaml @@ -1,45 +1,36 @@ archive_settings_template: !Template &archive_settings_template archive_to_hpss: - default: yes description: save data to HPSS archive type: bool arch_cyc: - default: 18 description: cycle for archiving files for warm_start capability type: int arch_warmicfreq: - default: 6 description: archive frequency in days for warm_start capability type: int arch_fcsticfreq: - default: 3 descripton: archive frequency in days for gdas/gfs forecast-only capability type: int copy_fit2obs_files: - default: yes description: online archive of nemsio files for fit2obs verification type: bool scrub_in_archive: type: bool - default: yes description: "delete GDAS/GFS COM directories at the end of the archive job" scrub_in_archive_start: type: int - default: 144 description: "starting hour of previous cycles to be removed from rotating directory during archive job" scrub_in_archive_end: type: int - default: 24 description: "ending hour of previous cycles to be removed from rotating directory during archive job" ATARDIR: type: string - default: "/NCEPDEV/$HPSS_PROJECT/1year/$USER/$machine/scratch/$PSLOT" description: "Archiving directory on HPSS for the current workflow. Default is a shell expression typically used in config.base." diff --git a/workflow/schema/data_assimilation.yaml b/workflow/schema/data_assimilation.yaml index b141a83691..20ab15928a 100644 --- a/workflow/schema/data_assimilation.yaml +++ b/workflow/schema/data_assimilation.yaml @@ -5,111 +5,85 @@ data_assimilation_template: !Template &data_assimilation_template DOHYBVAR: type: bool - default: YES description: flag (YES or NO) for hybrid ensemble variational option NMEM_ENKF: type: int - default: 80 description: Number of members of the GFS ENKF ensemble. - NMEM_EOMGGRP: { type: int, default: 10 } - NMEM_EFCSGRP: { type: int, default: 10 } - NMEM_EARCGRP: { type: int, default: 10 } - RECENTER_ENKF: { type: bool, default: YES } - SMOOTH_ENKF: { type: bool, default: YES } - assim_freq: { type: int, default: 6 } - l4densvar: { type: bool, default: YES } - lwrite4danl: { type: bool, default: NO } + NMEM_EOMGGRP: { type: int } + NMEM_EFCSGRP: { type: int } + NMEM_EARCGRP: { type: int } + RECENTER_ENKF: { type: bool } + SMOOTH_ENKF: { type: bool } + assim_freq: { type: int } + l4densvar: { type: bool } + lwrite4danl: { type: bool } NSPLIT: type: int - default: 4 description: "Execute prepbufr in parallel. Operational GFS default is 3." NAM_ENKF: type: string - default: "analpertwtnh=0.9,analpertwtsh=0.9,analpertwttr=0.9" INCREMENTS_TO_ZERO: type: string list - default: [ delz_inc, clwmr_inc, icmr_inc ] PREP_REALTIME: type: bool - default: no DO_EMCSFC: type: bool - default: NO description: "Whether to run EMC SFC job" PROCESS_TROPCY: type: bool - default: no DO_RELOCATE: type: bool - default: no DO_MAKEPREPBUFR: type: bool - default: YES description: If NO, will copy prepbufr from globaldump. Otherwise, generates prepbufr file anew. OPREFIX: type: string - default: "$CDUMP.$cycle." description: Format for dump file name prefix COM_OBS: type: string - default: "$DMPDIR" description: Top folder for COMIN_OBS (DMPDIR or COMROOT) COMIN_OBS: type: string description: Location to draw observation data from (global dump archive or com) - default: !FirstTrue - - when: !calc ( COM_OBS=="$DMPDIR" ) - do: "$DMPDIR/$CDATE/$CDUMP$DUMP_SUFFIX" - - when: !calc ( COM_OBS=="$COMROOT" ) - do: "$COMROOT/$CDUMP.$PDY/$CYC" - - otherwise: !error "Unknown COM_OBS value: {COM_OBS}" RERUN_EFCSGRP: type: bool - default: NO description: Rerun failed ensemble forecast group members automatically. RERUN_EOMGGRP: type: bool - default: YES GENDIAG: type: bool - default: YES NEPOSGRP: type: int - default: 7 OBSINPUT_INVOBS: type: string - default: "dmesh(1)=225.0,dmesh(2)=225.0" + OBSQC_INVOBS: type: string - default: "tcp_width=60.0,tcp_ermin=2.0,tcp_ermax=12.0" ENKF_INNOVATE_GROUPS: type: int - default: !calc ( NMEM_ENKF // NMEM_EOMGGRP ) ENKF_FORECAST_GROUPS: type: int - default: !calc ( NMEM_ENKF // NMEM_EFCSGRP ) ENKF_ARCHIVE_GROUPS: type: int - default: !calc ( NMEM_ENKF // NMEM_EARCGRP ) # These variable largely eliminate the need for explicitly setting # USH directories, FIX files, PARM files, EXECutables below diff --git a/workflow/schema/downstream.yaml b/workflow/schema/downstream.yaml index 816a6e1fbd..8e3859bfe2 100644 --- a/workflow/schema/downstream.yaml +++ b/workflow/schema/downstream.yaml @@ -68,7 +68,6 @@ downstream_schema: &downstream_schema !Template description: "Run FAX" DO_WAFS: type: bool - default: NO description: "Run WAFS" DO_BULLETINS: type: bool diff --git a/workflow/schema/fv3.yaml b/workflow/schema/fv3.yaml index 35540698e8..61aaba6eb3 100644 --- a/workflow/schema/fv3.yaml +++ b/workflow/schema/fv3.yaml @@ -4,97 +4,57 @@ fv3_settings_template: !Template &fv3_settings_template imp_physics: - type: int - allowed: [ 99, 8, 6, 10, 11 ] - default: 11 + type: string + allowed: [ "99", "8", "6", "10", "11" ] description: "Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL" - if_present: !FirstTrue - - when: !calc ( imp_physics==99 ) - do: !Template - ncld: { type: int, default: 1 } - nwat: { type: int, default: 2 } - FIELD_TABLE: - type: string - default: "$HOMEgfs/parm/parm_fv3diag/field_table_zhaocarr" - - when: !calc ( imp_physics == 6 ) - do: !Template - ncld: { type: int, default: 2 } - nwat: { type: int, default: 6 } - FIELD_TABLE: - type: string - default: "$HOMEgfs/parm/parm_fv3diag/field_table_wsm6" - - when: !calc ( imp_physics == 8 ) - do: !Template - ncld: { type: int, default: 2 } - nwat: { type: int, default: 6 } - FIELD_TABLE: - type: string - default: "$HOMEgfs/parm/parm_fv3diag/field_table_thompson" - - when: !calc ( imp_physics == 11 ) - do: !Template - ncld: { type: int, default: 5 } - nwat: { type: int, default: 6 } - FIELD_TABLE: - type: string - default: "$HOMEgfs/parm/parm_fv3diag/field_table_gfdl" - dnats: { type: int, default: 1 } - cal_pre: { type: bool, default: false } - do_sat_adj: { type: bool, default: true } - random_clds: { type: bool, default: false } - hord_mt_nh_nonmono: { type: int, default: 6 } - hord_xx_nh_nonmono: { type: int, default: 6 } - vtdm4_nh_nonmono: { type: float, default: 0.02 } - nord: { type: int, default: 2 } - dddmp: { type: float, default: 0.1 } - d4_bg: { type: float, default: 0.12 } - - otherwise: !error "Unknown imp_physics value: {imp_physics}" new_o3force: type: bool - default: yes description: Options of stratosphere O3 physics reaction coefficients h2o_phys: type: bool - default: yes description: Use stratosphere h2o physics do_vort_damp: type: bool - default: yes description: vorticity and divergence damping consv_te: type: float - default: 1. description: conserve total energy fv_sg_adj: type: int - default: 450 description: time-scale to remove 2dz instability dspheat: type: bool - default: YES description: dissipative heating shal_cnv: type: bool - default: YES description: shallow convection flag agrid_vel_rst: type: bool - default: yes description: "write velocity restarts on A grid?" - cal_pre: { type: bool, default: true } - do_sat_adjust: { type: bool, default: false } - random_clds: { type: bool, default: true } - cnvcld: { type: bool, default: true } - dnats: { type: int, default: 0 } - IEMS: { type: int, default: 1 } - IALB: { type: int, default: 1 } - ISOL: { type: int, default: 2 } - IAER: { type: int, default: 111 } - ICO2: { type: int, default: 2 } - warm_start: { type: bool, default: true } - read_increment: { type: bool, default: no } - restart_interval: { type: int, default: 6 } +# cal_pre: { type: bool } +# do_sat_adjust: { type: bool } +# random_clds: { type: bool } + cnvcld: { type: bool } +# ncld: { type: int } +# nwat: { type: int } +# hord_mt_nh_nonmono: { type: int } +# hord_xx_nh_nonmono: { type: int } +# vtdm4_nh_nonmono: { type: float } +# nord: { type: int } +# dddmp: { type: float } +# d4_bg: { type: float } +# dnats: { type: int } + IEMS: { type: int } + IALB: { type: int } + ISOL: { type: int } + IAER: { type: int } + ICO2: { type: int } + warm_start: { type: bool } + read_increment: { type: bool } + restart_interval: { type: int } +# FIELD_TABLE: { type: string } LEVS: type: int @@ -102,53 +62,42 @@ fv3_settings_template: !Template &fv3_settings_template FHCYC: type: int - default: 24 description: Surface cycle update frequency (gdas=1,gfs=24) FHCYC_GDAS: type: int - default: 1 description: Surface cycle update frequency for the GDAS FHCYC_GFS: type: int - default: 24 description: Surface cycle update frequency for the GFS QUILTING: type: bool - default: YES description: Should output quilting be used? WRITE_NEMSIOFILE: type: bool - default: YES description: Should nemsio output be used (yes/true) instead of netcdf (no/false)? - WRITE_NEMSIOFLIP: { type: bool, default: yes } - nst_anl: { type: bool, default: yes } - lprecip_accu: { type: bool, default: yes, + WRITE_NEMSIOFLIP: { type: bool } + nst_anl: { type: bool } + lprecip_accu: { type: bool, description: "Precipitation accumulation, true--no bucket, false--bucket=FHZER" } - DONST: { type: bool, default: YES } + DONST: { type: bool } MONO: type: string - default: "non-mono" allowed: [ mono, non-mono ] MEMBER: type: int stage: [ execution ] - default: -1 description: "-1: control, 0: ensemble mean, >0: ensemble member $MEMBER" - d4_bg: { type: float, default: 0.15 } - dddmp: { type: float, default: 0.2 } - ISEED: type: int - default: 0 stage: [ execution ] description: > Default seed for shum, skeb, and sppt, if specific seeds @@ -156,152 +105,31 @@ fv3_settings_template: !Template &fv3_settings_template SET_STP_SEED: type: bool - default: YES description: > Automatically set seeds for SKEB, SHUM, and SPPT at execution time based on simulation date and member. DO_SHUM: type: bool - default: NO - if_present: !FirstTrue - - when: !calc DO_SHUM - do: - ISEED_SHUM: { type: int, optional: true } - SHUM: { type: float, default: -999. } - SHUM_TAU: { type: float, default: -999. } - SHUM_LSCALE: { type: float, default: -999. } - - otherwise: null DO_SKEB: type: bool - default: NO - if_present: !FirstTrue - - when: !calc DO_SKEB - do: - ISEED_SHUM: { type: int, optional: true } - SKEB_TAU: { type: float, default: -999. } - SKEB_LSCALE: { type: float, default: -999. } - SKEBNORM: { type: int, default: 1 } - SKEB: { type: float, default: -999. } - - otherwise: null DO_SPPT: type: bool - default: NO - if_present: !FirstTrue - - when: !calc DO_SPPT==True - do: - ISEED_SHUM: { type: int, optional: true } - SPPT: { type: float } - SPPT_TAU: { type: float, default: -999. } - SPPT_LSCALE: { type: float, default: -999. } - SPPT_SFCLIMIT: { type: bool, default: yes } - - otherwise: !Message "Don't SPPT" - RUN_EFCSGRP: { type: bool, default: NO } - ncld: { type: int, default: 1 } - nwat: { type: int, default: 2 } - zhao_mic: { type: bool, default: YES } - nh_type: { type: string, default: 'nh' } - USE_COUPLER_RES: { type: bool, default: NO } + RUN_EFCSGRP: { type: bool } + zhao_mic: { type: bool } + nh_type: { type: string } + USE_COUPLER_RES: { type: bool } cdmbgwd: { type: string, optional: true } CDUMP: type: string allowed: [ gfs, gdas ] + DELTIM: { type: int } + CASE: type: string allowed: [ 'C48', 'C96', 'C192', 'C384', 'C768', 'C1152', 'C3072' ] - if_present: !FirstTrue - - when: !calc (CASE == "C48") - do: !Template - DELTIM: { type: int, default: 450 } - layout_x: { type: int, default: 2 } - layout_y: { type: int, default: 4 } - fv3_threads: { type: int, default: 1 } - cdmbgwd: - type: string - default: "0.062,3.5,1.0,1.0" - description: "mountain blocking and gravity wave drag" - WRITE_GROUP: { type: int, default: 1 } - WRTTASK_PER_GROUP: { type: int, default: 24 } - WRTIOBUF: { type: string, default: "4M" } - - - when: !calc (CASE == "C96") - do: !Template - DELTIM: { type: int, default: 450 } - layout_x: { type: int, default: 4 } - layout_y: { type: int, default: 4 } - fv3_threads: { type: int, default: 1 } - cdmbgwd: - type: string - default: "0.125,3.0,1.0,1.0" - description: "mountain blocking and gravity wave drag" - WRITE_GROUP: { type: int, default: 1 } - WRTTASK_PER_GROUP: { type: int, default: 24 } - WRTIOBUF: { type: string, default: "4M" } - - - when: !calc (CASE == "C192") - do: !Template - DELTIM: { type: int, default: 450 } - layout_x: { type: int, default: 4 } - layout_y: { type: int, default: 6 } - fv3_threads: { type: int, default: 2 } - cdmbgwd: - type: string - default: "0.23,1.5,1.0,1.0" - description: "mountain blocking and gravity wave drag" - WRITE_GROUP: { type: int, default: 2 } - WRTTASK_PER_GROUP: { type: int, default: 24 } - WRTIOBUF: { type: string, default: "8M" } - - - when: !calc (CASE == "C384") - do: !Template - DELTIM: { type: int, default: 240 } - layout_x: { type: int, default: 6 } - layout_y: { type: int, default: 6 } - fv3_threads: { type: int, default: 2 } - cdmbgwd: - type: string - default: "1.1,0.72,1.0,1.0" - description: "mountain blocking and gravity wave drag" - WRITE_GROUP: { type: int, default: 3 } - WRTTASK_PER_GROUP: { type: int, default: 24 } - WRTIOBUF: { type: string, default: "16M" } - - - when: !calc (CASE == "C768") - do: !Template - DELTIM: { type: int, default: 225 } - layout_x: { type: int, default: 8 } - layout_y: { type: int, default: 16 } - fv3_threads: { type: int, default: 2 } - cdmbgwd: - type: string - default: "3.5,0.25,1.0,1.0" - description: "mountain blocking and gravity wave drag" - WRITE_GROUP: { type: int, default: 4 } - WRTTASK_PER_GROUP: { type: int, default: 60 } - WRTIOBUF: { type: string, default: "32M" } - - - when: !calc (CASE == "C1152") - do: !Template - DELTIM: { type: int, default: 150 } - layout_x: { type: int, default: 8 } - layout_y: { type: int, default: 16 } - fv3_threads: { type: int, default: 4 } - WRITE_GROUP: { type: int, default: 4 } - WRTTASK_PER_GROUP: { type: int, default: 84 } - WRTIOBUF: { type: string, default: "48M" } - - - when: !calc (CASE == "C3072") - do: !Template - DELTIM: { type: int, default: 90 } - layout_x: { type: int, default: 16 } - layout_y: { type: int, default: 32 } - fv3_threads: { type: int, default: 4 } - WRITE_GROUP: { type: int, default: 4 } - WRTTASK_PER_GROUP: { type: int, default: 120 } - WRTIOBUF: { type: string, default: "64M" } - - otherwise: !error "Unknown case: {CASE}" diff --git a/workflow/schema/ice.yaml b/workflow/schema/ice.yaml index 089e798316..afbcf32552 100644 --- a/workflow/schema/ice.yaml +++ b/workflow/schema/ice.yaml @@ -3,5 +3,4 @@ ice_settings_template: !Template &ice_settings_template MOD: type: string allowed: [ cice5, cice6 ] - default: cice5 description: "model selection for ice" diff --git a/workflow/schema/nsst.yaml b/workflow/schema/nsst.yaml index cf195664ba..1efcc8eb05 100644 --- a/workflow/schema/nsst.yaml +++ b/workflow/schema/nsst.yaml @@ -2,24 +2,19 @@ nsst_schema: &nsst_schema !Template NST_MODEL: type: int allowed: [ 0, 1, 2 ] - default: 2 description: >- nstf_name(1) : NST_MODEL (NSST Model) : 0 = OFF, 1 = ON but uncoupled, 2 = ON and coupled NST_RESV: type: int - default: 0 allowed: [ 0, 1 ] ZSEA1: type: int - default: 0 ZSEA2: type: int - default: 0 NST_GSI: type: int allowed: [ 0, 1, 2, 3, 4 ] - default: 3 description: | 0: No NST info at all; 1: Input NST info but not used in GSI; @@ -28,7 +23,6 @@ nsst_schema: &nsst_schema !Template NSTINFO: type: int - default: 0 description: number of elements added in obs. data array NST_SPINUP: type: int diff --git a/workflow/schema/ocn.yaml b/workflow/schema/ocn.yaml index d8f79d48e5..a349d09fd9 100644 --- a/workflow/schema/ocn.yaml +++ b/workflow/schema/ocn.yaml @@ -6,5 +6,4 @@ ocn_settings_template: !Template &ocn_settings_template MOD: type: string allowed: [ mom6, hycom ] - default: mom6 description: "model selection for ocean" diff --git a/workflow/schema/output.yaml b/workflow/schema/output.yaml index 42868b8143..50500481c8 100644 --- a/workflow/schema/output.yaml +++ b/workflow/schema/output.yaml @@ -1,99 +1,72 @@ -gfs_output_settings_template: !Template &gfs_output_settings_template +output_settings_template: !Template &output_settings_template FHOUT_GFS: type: int - default: 3 description: GFS forecast output frequency in hours FHMIN_GFS: type: int - default: 0 description: GFS forecast initial hour for output + FHMAX_GFS: + type: int + description: GFS total forecast hour for output FHMIN_ENKF: type: int - default: 3 description: GDAS ENKF initial hour for output FHMAX_ENKF: type: int - default: 9 description: GDAS ENKF forecast length FHOUT_ENKF: type: int description: GDAS ENKF output frequency in hours - default: !FirstTrue - - when: doc.data_assimilation.l4densvar - do: 1 - - otherwise: 3 FHMIN_GDAS: type: int - default: 0 description: GDAS initial hour for output FHMAX_GDAS: type: int - default: 9 description: GDAS forecast length FHOUT_GDAS: type: int - default: 3 description: GDAS output frequency in hours FHMAX_HF_GFS: type: int - default: 0 description: Last forecast hour with high-frequency output for gfs FHOUT_HF_GFS: type: int - default: 1 description: Output frequency until FHMAX_HF_GFS hours. OCN_INTERVAL: type: int - default: 120 description: Interval for separating ocean post job. NCO_NAMING_CONV: type: bool - default: YES description: "YES = use standard, operational, naming conventions. NO = use non-standard naming conventions" OUTPUT_FILE_TYPE: type: string - default: nemsio description: "Type of model output file" gfs_forecast_hours: type: int list - default: !calc >- - tools.uniq(sorted( - tools.seq(FHMIN_GFS,FHMAX_HF_GFS,FHOUT_HF_GFS) + - tools.seq(FHMIN_GFS,FHMAX_GFS, FHOUT_GFS))) ocnpost_hours: type: int list - default: !calc "tools.seq(FHMIN_GFS,FHMAX_GFS-OCN_INTERVAL,OCN_INTERVAL)" gdas_forecast_hours: type: int list - default: !calc "tools.seq(FHMIN_GDAS,FHMAX_GDAS,FHOUT_GDAS)" enkf_epos_fhr: type: int list - default: !calc "tools.seq(FHMIN_ENKF,FHMAX_ENKF,FHOUT_ENKF)" wafs_last_hour: type: int - default: !calc 120 awips_g2_hours: type: int list - default: !calc ( tools.seq(0,240,6) ) awips_20km_1p0_hours: type: int list - default: !calc >- - tools.uniq(sorted( - tools.seq(0,84,3) + - tools.seq(90,240,6))) - diff --git a/workflow/schema/places.yaml b/workflow/schema/places.yaml index 10d98ef194..23ed39f515 100644 --- a/workflow/schema/places.yaml +++ b/workflow/schema/places.yaml @@ -19,19 +19,15 @@ places_schema: &places_schema !Template # SHORT_TERM_TEMP: { type: string } # LONG_TERM_TEMP: { type: string } - HOMEDIR: - type: string - default: !FirstTrue - - when: !calc doc.platform.get('SAVE_DIR','') - do: !calc doc.platform.SAVE_DIR - - otherwise: !expand "{doc.places.EXPROOT}/save/{tools.env('USER')}" +# HOMEDIR: +# type: string +# default: !FirstTrue +# - when: !calc doc.platform.get('SAVE_DIR','') +# do: !calc doc.platform.SAVE_DIR +# - otherwise: !expand "{doc.places.EXPROOT}/save/{tools.env('USER')}" NOSCRUB: type: string - default: !FirstTrue - - when: !calc doc.platform.get('NOSCRUB_DIR','') - do: !calc doc.platform.NOSCRUB_DIR - - otherwise: !expand "{doc.places.EXPROOT}/noscrub/{tools.env('USER')}" description: "Disk area used to store reduced output, verification statistics, and other small files that may be desired between runs. The workflow will not scrub this." FIXgsi: { type: string, optional: true } @@ -40,28 +36,16 @@ places_schema: &places_schema !Template HOMEobsproc_prep: type: string optional: true - default: !expand "{doc.platform.BASE_GIT}/obsproc/obsproc_prep_RB-5.2.0" HOMEobsproc_network: type: string optional: true - default: !expand "{doc.platform.BASE_GIT}/obsproc/obsproc_global_RB-3.2.0" BASE_VERIF: { type: string, optional: true } BASE_SVN: type: string - default: !calc doc.platform.BASE_SVN BASE_GIT: type: string - default: !calc doc.platform.BASE_GIT ics_from: type: string - default: opsgfs allowed: [ opsgfs, pargfs ] description: initial conditions from opsgfs or pargfs - if_present: !Template - parexp: - type: string - default: prnemsrn - HPSS_PAR_PATH: - type: string - default: !expand "/5year/NCEPDEV/emc-global/emc.glopara/WCOSS_C/{parexp}" diff --git a/workflow/schema/post.yaml b/workflow/schema/post.yaml index 1ce3862a7c..7d2e0d67ad 100644 --- a/workflow/schema/post.yaml +++ b/workflow/schema/post.yaml @@ -1,4 +1,4 @@ -# This is used to set default values for grib product generation. +# This is used to set variable design for grib product generation. # Reconfiguring These variables are not supported in this release. post_schema: &post_schema !Template diff --git a/workflow/schema/settings.yaml b/workflow/schema/settings.yaml index c4a275db52..7606d59234 100644 --- a/workflow/schema/settings.yaml +++ b/workflow/schema/settings.yaml @@ -1,24 +1,30 @@ settings_schema: !Template &settings_schema + gfs_cyc: + type: int + allowed: [ 0, 1, 2, 4 ] + description: | + When to run GFS forecast. Data assimilation is run for every + cycle regardless of these values + * 0: no GFS cycle + * 1: 00Z only + * 2: 00Z and 12Z only + * 4: all 4 cycles (0, 6, 12, 18 Z) dev_safeguards: type: bool - default: true description: "Add backup triggers in workflow to handle scheduling delays, such as the forecast finishing any posts start. Only turn this off for NCO operational deliveries." realtime: type: bool - default: false description: "Simulation of an event that is currently happening (ie.: a forecast)" run_vrfy_jobs: type: bool - default: true description: "Run the EMC product generation jobs." four_cycle_mode: type: bool description: "Enable NCO-like four cycle suite. Requires a special setup for your ecFlow server, and a prepared directory structure designed to look like NCEP production. Do not use unless you know what you're doing." - default: false if_present: !FirstTrue - when: !calc four_cycle_mode take: !FirstTrue @@ -28,52 +34,36 @@ settings_schema: !Template &settings_schema - otherwise: !error "In four cycle mode, the experiment must be prod, para, or test, not {doc.names.experiment}." - otherwise: null -# ecf_module_commands: -# type: str -# default: !FirstTrue -# - when: !calc four_cycle_mode -# take: !calc doc.platform.four_cycle_mode_modules -# - otherwise: !expand | -# source "$HOMEgfs/ush/load_fv3gfs_modules.sh" {task_type} - rocoto_cycle_throttle: type: int description: "Maximum number of cycles active at once in a Rocoto workflow" - default: 2 rocoto_task_throttle: type: int description: "Maximum number of tasks active (queued/running) at once in a Rocoto workflow" - default: 5 use_nco_ecflow_headers: type: bool description: "Use the NCO model-ver.h instead of experiment-specific paths. This will cause you to use the scripts and code in NCEP Operational areas instead of your own scripts and code. Only use this option if you know what you're doing." - default: !calc four_cycle_mode prod_util_module: - type: str - default: !calc doc.platform.get("prod_util_module","prod_util") + type: string description: Name of the unix modulefile to load to obtain NCEP production shell utilities. ecflow_real_clock: type: bool - default: no description: the ecflow suite definition should specify a real clock ecflow_virtual_clock: type: bool - default: no description: the ecflow suite definition should specify a virtual clock ecflow_hybrid_clock: type: bool - default: no description: the ecflow suite definition should specify a hybrid clock ecflow_totality_limit: type: bool - default: yes description: 'Place the entire suite in the "/totality_limit:TOTALITY" limit so that the server can limit the total number of jobs running.' run_gsi: @@ -83,7 +73,6 @@ settings_schema: !Template &settings_schema run_enkf: type: bool description: "Enable Ensemble Kalman Filter" - default: !calc run_gsi chgres_and_convert_ics: type: bool @@ -91,7 +80,6 @@ settings_schema: !Template &settings_schema max_job_tries: type: int - default: 1 description: "Number of times to try running a job. Set to 1 for no retries." IC_CDUMP: @@ -100,18 +88,6 @@ settings_schema: !Template &settings_schema optional: true description: Get initial conditions from gfs or gdas - gfs_cyc: - type: int - default: 4 - allowed: [ 0, 1, 2, 4 ] - description: | - When to run GFS forecast. Data assimilation is run for every - cycle regardless of these values - * 0: no GFS cycle - * 1: 00Z only - * 2: 00Z and 12Z only - * 4: all 4 cycles (0, 6, 12, 18 Z) - SDATE: type: datetime description: | @@ -126,13 +102,5 @@ settings_schema: !Template &settings_schema ics_from: type: string - default: opsgfs allowed: [ opsgfs, pargfs ] description: initial conditions from opsgfs or pargfs - if_present: !Template - parexp: - type: string - default: prnemsrn - HPSS_PAR_PATH: - type: string - default: !expand "/5year/NCEPDEV/emc-global/emc.glopara/WCOSS_C/{parexp}" diff --git a/workflow/top.yaml b/workflow/top.yaml index 57d3cdbd1e..e7375eba74 100644 --- a/workflow/top.yaml +++ b/workflow/top.yaml @@ -15,8 +15,8 @@ fv3_gdas_settings: !Immediate fv3_enkf_settings: !Immediate - !calc doc.case.fv3_enkf_settings -gfs_output_settings: !Immediate - - !calc doc.case.get('gfs_output_settings',{}) +output_settings: !Immediate + - !calc doc.case.get('output_settings',{}) schedvar: !Immediate - !MergeMapping From e3f74f0e4592369d6c44c9ae1b10683a7f252f4a Mon Sep 17 00:00:00 2001 From: "jian.kuang" Date: Mon, 9 Mar 2020 20:33:14 +0000 Subject: [PATCH 4/6] bug fix: imp_physics="11" instead of 11 default field table change to match current selection --- workflow/config/fcst.yaml | 28 ++++++++++++++-------------- workflow/defaults/fv3_gfs.yaml | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/workflow/config/fcst.yaml b/workflow/config/fcst.yaml index f15ed81d28..39c12daa55 100644 --- a/workflow/config/fcst.yaml +++ b/workflow/config/fcst.yaml @@ -9,18 +9,18 @@ config_fcst: do: "nems_fv3_mom6_cice5.x" - otherwise: "global_fv3gfs.x" more_exports_for_microphys: !FirstTrue - - when: !calc ( doc.fv3_gdas_settings.imp_physics==11 ) + - when: !calc ( doc.fv3_gfs_settings.imp_physics=="11" ) do: !expand | - export hord_mt_nh_nonmono={doc.fv3_gdas_settings.phy_dependent_var.hord_mt_nh_nonmono} - export hord_xx_nh_nonmono={doc.fv3_gdas_settings.phy_dependent_var.hord_xx_nh_nonmono} - export vtdm4_nh_nonmono={doc.fv3_gdas_settings.phy_dependent_var.vtdm4_nh_nonmono} - export nord={doc.fv3_gdas_settings.phy_dependent_var.nord} - export dddmp={doc.fv3_gdas_settings.phy_dependent_var.dddmp} - export d4_bg={doc.fv3_gdas_settings.phy_dependent_var.d4_bg} + export hord_mt_nh_nonmono={doc.fv3_gfs_settings.phy_dependent_var.hord_mt_nh_nonmono} + export hord_xx_nh_nonmono={doc.fv3_gfs_settings.phy_dependent_var.hord_xx_nh_nonmono} + export vtdm4_nh_nonmono={doc.fv3_gfs_settings.phy_dependent_var.vtdm4_nh_nonmono} + export nord={doc.fv3_gfs_settings.phy_dependent_var.nord} + export dddmp={doc.fv3_gfs_settings.phy_dependent_var.dddmp} + export d4_bg={doc.fv3_gfs_settings.phy_dependent_var.d4_bg} - otherwise: "" level_127: !FirstTrue - - when: !calc doc.fv3_gdas_settings.LEVS==128 + - when: !calc doc.fv3_gfs_settings.LEVS==128 do: !expand | export tau=5.0 export rf_cutoff=1.0e3 @@ -83,23 +83,23 @@ config_fcst: export FCSTEXEC="{FCSTEXEC}" # Model configuration - export TYPE="{doc.fv3_gdas_settings.nh_type}" - export MONO="{doc.fv3_gdas_settings.MONO}" + export TYPE="{doc.fv3_gfs_settings.nh_type}" + export MONO="{doc.fv3_gfs_settings.MONO}" # Use stratosphere h2o physics - export h2o_phys="{tools.fort(doc.fv3_gdas_settings.h2o_phys)}" + export h2o_phys="{tools.fort(doc.fv3_gfs_settings.h2o_phys)}" # Options of stratosphere O3 physics reaction coefficients - export new_o3forc="{tools.YES_NO(doc.fv3_gdas_settings.new_o3force)}" + export new_o3forc="{tools.YES_NO(doc.fv3_gfs_settings.new_o3force)}" # Microphysics configuration export dnats={doc.fv3_gfs_settings.phy_dependent_var.dnats} export cal_pre="{tools.fort(doc.fv3_gfs_settings.phy_dependent_var.cal_pre)}" export do_sat_adj="{tools.fort(doc.fv3_gfs_settings.phy_dependent_var.do_sat_adjust)}" export random_clds="{tools.fort(doc.fv3_gfs_settings.phy_dependent_var.random_clds)}" - #export cnvcld="{tools.fort(doc.fv3_gdas_settings.cnvcld)}" + #export cnvcld="{tools.fort(doc.fv3_gfs_settings.cnvcld)}" export ncld={doc.fv3_gfs_settings.phy_dependent_var.ncld} - export FIELD_TABLE="{doc.fv3_gdas_settings.phy_dependent_var.FIELD_TABLE}" + export FIELD_TABLE="{doc.fv3_gfs_settings.phy_dependent_var.FIELD_TABLE}" export nwat={doc.fv3_gfs_settings.phy_dependent_var.nwat} {more_exports_for_microphys} {level_127} diff --git a/workflow/defaults/fv3_gfs.yaml b/workflow/defaults/fv3_gfs.yaml index f8cacbf154..877e9779de 100644 --- a/workflow/defaults/fv3_gfs.yaml +++ b/workflow/defaults/fv3_gfs.yaml @@ -138,7 +138,7 @@ fv3_gfs_defaults: &fv3_gfs_defaults "11": ncld: 5 nwat: 6 - FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_gfdl_satmedmf" + FIELD_TABLE: "$HOMEgfs/parm/parm_fv3diag/field_table_gfdl" dnats: 1 cal_pre: false do_sat_adjust: true From 1b49bb0d5c07f78efa4a84fe0642249e5ff2421c Mon Sep 17 00:00:00 2001 From: "Jian.Kuang" Date: Fri, 27 Mar 2020 11:17:29 -0400 Subject: [PATCH 5/6] update sandbox environment to enable FIX_SCRUB settings. --- workflow/platforms/_sandbox.yaml | 51 +++++++++----------------------- 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/workflow/platforms/_sandbox.yaml b/workflow/platforms/_sandbox.yaml index 3251393edb..61001958ad 100644 --- a/workflow/platforms/_sandbox.yaml +++ b/workflow/platforms/_sandbox.yaml @@ -37,14 +37,8 @@ platform: !Platform # DMPDIR - location of the global dump data. This is used by the observation # processing scripts, which are not included in the public release. - DMPDIR: !calc doc.user_places.EXPROOT + DMPDIR: !calc doc.user_places.COMROOT #"/Users/jiankuang/Documents/Eclipse_workspace/ecfutils_007" - #DMPDIR: !FirstTrue - # - do: "/gpfs/gp1/emc/globaldump" - # when: !calc tools.isdir(do) - # - do: "/gpfs/tp1/emc/globaldump" - # when: !calc tools.isdir(do) - # - otherwise: !error "Cannot find globaldump directory." # RTMFIX - location of the CRTM fixed data files used by the GSI data # assimilation. The data assimilation is not included in this public release @@ -147,39 +141,22 @@ platform: !Platform # Path to mmlsquota, the program used to get GPFS disk usage information: #mmlsquota: "/usr/lpp/mmfs/bin/mmlsquota" - # Automatically detect the least used scrub area the user can access: - #least_used_ptmp: !Immediate - # - !FirstMax - # - do: /gpfs/hps3/ptmp - # when: !calc ( int(tools.can_write(do)) * tools.gpfs_gb(do,"hps3-ptmp","hps3",mmlsquota) ) - # message: Use {do} for long-term temp. - # - do: /gpfs/hps/ptmp - # when: !calc ( int(tools.can_write(do)) * tools.gpfs_gb(do,"hps-ptmp","hps",mmlsquota) ) - # message: Use {do} for long-term temp. - # - do: /gpfs/hps2/ptmp - # when: !calc ( int(tools.can_write(do)) * tools.gpfs_gb(do,"hps2-ptmp","hps2",mmlsquota) ) - # message: Use {do} for long-term temp. - #least_used_stmp: !Immediate - # - !FirstMax - # - do: /gpfs/hps/stmp - # when: !calc ( int(tools.can_write(do)) * tools.gpfs_gb(do,"hps-stmp","hps",mmlsquota) ) - # message: Use {do} for short-term temp. - # - do: /gpfs/hps2/stmp - # when: !calc ( int(tools.can_write(do)) * tools.gpfs_gb(do,"hps2-stmp","hps2",mmlsquota) ) - # message: Use {do} for short-term temp. - # - do: /gpfs/hps3/stmp - # when: !calc ( int(tools.can_write(do)) * tools.gpfs_gb(do,"hps3-stmp","hps3",mmlsquota) ) - # message: Use {do} for short-term temp. - - # long_term_temp - area for storage of data that must be passed # between jobs or shared with programs external to this workflow. - long_term_temp: !calc doc.user_places.EXPROOT - #!expand "{least_used_ptmp}/{tools.env('USER')}" + long_term_temp: !calc doc.user_places.COMROOT # short_term_temp - area for data that is only needed within one job: - short_term_temp: !calc doc.user_places.EXPROOT - #!expand "{least_used_stmp}/{tools.env('USER')}" + short_term_temp: !calc doc.user_places.DATAROOT + + COMROOT: !FirstTrue + - do: !expand "{doc.user_places.COMROOT}" + when: !calc doc.user_places.FIX_SCRUB + - otherwise: !expand "{doc.platform.least_used_temp}/{tools.env('USER')}" + + # short_term_temp - area for data that is only needed within one job: + DATAROOT: !FirstTrue + - do: !expand "{doc.user_places.DATAROOT}" + when: !calc doc.user_places.FIX_SCRUB + - otherwise: !expand "{doc.platform.least_used_temp}/{tools.env('USER')}" # EXPROOT - Parent directory of the expdir (experiment directory) EXPROOT: !calc doc.user_places.EXPROOT - #!expand "{doc.user_places.EXPROOT}/noscrub/{tools.env('USER')}" From 03212a9b527a8544cc744f24554eac017c42bc7c Mon Sep 17 00:00:00 2001 From: "Jian.Kuang" Date: Tue, 31 Mar 2020 13:37:24 -0500 Subject: [PATCH 6/6] bug fix: label in fv3.yaml should be capital case. (GFS, GDAS, ENKF) --- workflow/config/fv3.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workflow/config/fv3.yaml b/workflow/config/fv3.yaml index c8d173fce6..5ea5b6ca7f 100644 --- a/workflow/config/fv3.yaml +++ b/workflow/config/fv3.yaml @@ -43,7 +43,7 @@ config_fv3: forecast_mode=$( echo "$1" | tr a-z A-Z ) case $forecast_mode in - "gfs") + "GFS") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_gfs_settings.DELTIM} export layout_x={doc.fv3_gfs_settings.layout.x} @@ -61,7 +61,7 @@ config_fv3: export WRTTASK_PER_GROUP_GFS={doc.fv3_gfs_settings.layout.WGRP_NTASKS} export WRTIOBUF={doc.fv3_gfs_settings.layout.WRTIOBUF} ;; - "gdas") + "GDAS") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_gdas_settings.DELTIM} export layout_x={doc.fv3_gdas_settings.layout.x} @@ -78,7 +78,7 @@ config_fv3: export WRTTASK_PER_GROUP_GFS={doc.fv3_gdas_settings.layout.WGRP_NTASKS} export WRTIOBUF={doc.fv3_gdas_settings.layout.WRTIOBUF} ;; - "enkf") + "ENKF") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_enkf_settings.DELTIM} export layout_x={doc.fv3_enkf_settings.layout.x}