From 69d54ea1a16d4a9a8d253209bdb48868b3cef53a Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Thu, 19 Sep 2024 04:28:32 +0000 Subject: [PATCH 1/8] Update realtime branch, gsl_ufs_rtdev1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit 4e0a81f7acf5ccba5de8d3bdf7ab19cae80812cb Author: kayee.wong Date: Wed Sep 18 18:37:50 2024 +0000 Fix typos/links/dependancy. commit d5fdcbf8d6e987dbdfcd6b4da34d0934c8d82c3b Author: kayee.wong Date: Wed Sep 18 07:37:52 2024 +0000 Fixed missing config.base files. commit c6239f925369b20fd8488e8537969e2f4f9e7725 Author: kayee.wong Date: Wed Sep 18 06:53:47 2024 +0000 Update submodule hashs. commit 32bf790f67b818ff50a7f6b74388fb81ed175b3a Author: kayee.wong Date: Wed Sep 18 06:09:41 2024 +0000 Update develop branch, gsl_ufs_dev - based on gsl_ufs_dev from KaYee's fork global-workflow: 07Aug24,37c53ac [develop_07Aug2024_37c53ac] UFS: 19Jul24, c127601 FV3: 19Jul24, 2527c11 UPP: 23Apr24, be0410e CCPP-PHYSICS: 19Jul24, 46df080 UFS_UTILS: 26Jun24, 3ef2e6b Squashed commit of the following: commit 70b557836379bb7e545fcc6642e28d66cfc17735 Merge: 5edbd123e 37c53ac69 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Wed Aug 7 11:02:24 2024 -0600 Merge branch 'NOAA-EMC:develop' into develop commit 37c53ac692274eb5e9f9a3220033406e8c4b4a04 Author: Kate Friedman Date: Wed Aug 7 08:11:21 2024 -0400 Revert MSU FIX_DIRs back to glopara (#2811) commit 876dfee26ad67e1f729bbf52b3167d48ea5a7517 Author: TerrenceMcGuinness-NOAA Date: Tue Aug 6 14:47:36 2024 -0400 Bugfix for updating label states in Jenkins (#2808) Quick bug fix for updating state labels in CI during finalize. (did not reference GitHub CLI executable correctly in the pipeline script) commit 8fee36f0307b0c08080e3a8fa8fa6703e7da5fce Author: Rahul Mahajan Date: Tue Aug 6 11:02:45 2024 -0400 Clean-up temporary rundirs - take 2. (#2753) This PR: - is a follow-up to a previous PR that aggressively pruned run directories. - removes run directories for the current cycle in the clean-up if the cycle is successful. If the cycle is not successful, cleanup is not called and all run directories for the cycle are safe from being purged. - also updates the PR template to list/query for any updates to submodules. --------- Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Co-authored-by: David Huber Co-authored-by: Walter Kolczynski - NOAA commit d599fff4aedd41ae587dbe02226acb12ff48efc1 Author: HelinWei-NOAA <48133472+HelinWei-NOAA@users.noreply.github.com> Date: Mon Aug 5 05:31:31 2024 -0400 Change land surface for HR4 (#2787) Resets the default value of opt_diag to 2 corresponding to the land surface upgrades in ufs-weather-model for HR4. Resolves #2786 commit 6d7f7e860a0c7062f90bf09fdf9a5d19dc77cfdb Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Aug 2 15:41:29 2024 -0400 Run METplus serially and correct the name of prod tasks (#2804) Adds 2 hot fixes: - METplus v9.1.3 has a bug in it that sometimes attempts to create multiple copies of the same directory when running in parallel, causing a Python error and downstream problems. This PR makes METplus run in serial mode, preventing such issues. - Corrects the name of the atmos_prod, ocean_prod, and ice_prod tasks in workflow/rocoto/tasks.py (was accidentally changed to e.g. atmosprod) commit 0706c59ac53cc3bbfbaa56cbd7fa75ab51117830 Author: TerrenceMcGuinness-NOAA Date: Fri Aug 2 15:03:45 2024 -0400 Update Java Agent launching script for Jenkins connections (#2762) Made updates to the Jenkins Launching Script for robustness and less ambiguous documentation: - Clearer distinction between required user token for the remote api and the systems token for launching - Added pre-checks: `gh` is authenticating, named compliant token and secret file exists - More robust Jason based parser of the remote api response for checking the state of the Node connection - For `cron` use a 5 minute pause and recheck was added before re-launching of the java agent - Added concise header documentation of requirements and purpose --------- Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Co-authored-by: Walter Kolczynski - NOAA commit b73b1fd203496db97f8067652659573a632bcc67 Author: Walter Kolczynski - NOAA Date: Fri Aug 2 07:59:06 2024 -0400 Fix erroneous cdump addition (#2803) commit 49877046ac3306f6b78ca0ab5d5089ba1aa3e3e3 Author: Rahul Mahajan Date: Thu Aug 1 20:26:13 2024 -0400 Update ocean post-processing triggers (#2784) This PR: - replaces `check_netcdf.sh` checker for ocean post-processing with with ocean output at the next forecast hour or finishing of the forecast job for ocean prod - removes no longer needed `ush/check_netcdf.sh` commit aa2af1ca8d59424a60a1730722bf528775d9e606 Author: GeorgeGayno-NOAA <52789452+GeorgeGayno-NOAA@users.noreply.github.com> Date: Thu Aug 1 16:46:10 2024 -0400 Update the gfs_utils repository hash (#2801) # Description Point to the latest hash of the gfs-utils repository, which contains the bug fix to gaussian_sfcanl. Resolves #2669. Refs: https://github.com/NOAA-EMC/gfs-utils/pull/73 commit d3d85f0e0d573f16a71ca44778021dfc0ccf50c8 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Thu Aug 1 08:12:14 2024 -0400 Add fixes for metplus jobs when gfs_cyc=2 or 4 (#2791) Changes how METplus jobs run so that they run on the last GFS cycle for a given `PDY`. This is a departure from operations where the METplus jobs run on the 00Z cycle for the previous 3 cycles and 00Z (i.e. `${PDYm1}06` through `${PDY}00`). With this PR, for gfs_cyc=4, METplus jobs will run on `${PDY}18` for cycles 00-18. See https://github.com/NOAA-EMC/EMC_verif-global/pull/131 for more details. commit 1cf8b448af562dbb7af198399c78c585977e81da Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Jul 30 10:38:49 2024 -0400 Simplify resource-related variables, remove CDUMP where unneeded (#2727) This overhauls resource-related variables to use a common set of variables for each job. In the process, this also removed the use of CDUMP in most cases. Resolves #1299 #2693 commit 61875f25c9e971f82ae499b5b612d7f095deebd4 Author: Eric Sinsky - NOAA <48259628+EricSinsky-NOAA@users.noreply.github.com> Date: Mon Jul 29 14:40:03 2024 -0400 Remove f000 from atmos rocoto tasks for replay cases (#2778) The main purpose of this PR is to remove the f000 from atmosphere-related rocoto tasks when `REPLAY_ICS` is set to `YES`. In cases where `REPLAY_ICS` is `YES` and `OFFSET_START_HOUR `is greater than `0`, it becomes necessary to have the first lead hour set to `OFFSET_START_HOUR ` for the atmosphere-related rocoto tasks. For example, when `OFFSET_START_HOUR ` is set to `3`, then the minimum lead time for the atmos_prod and atmos_ensstat rocoto tasks needs to be 3 and the minimum lead time for the ocean_prod rocoto task needs to be 6 (assuming `FHOUT_OCN` is 6). This PR makes this rocoto workflow set up possible by removing 0 from fhrs for atmosphere-related tasks in `gefs_tasks.py` when replaying. This PR also moves where f000 is being removed for the ocean_prod and ice_prod tasks. The if-block that performs this f000 removal has been moved from `tasks.py` to `gefs_tasks.py` and `gfs_tasks.py`. --------- Co-authored-by: Rahul Mahajan commit f156a7894d639f177e3e2588f98eec1f6f59aa68 Author: Jessica Meixner Date: Fri Jul 26 14:18:32 2024 -0500 HR4 GWD update (#2732) This update is a combination of the gravity wave drag (GWD) versions from the NOAA/GSL and NOAA/PSL commit a7f6b32ed63efa0de21bfb0ce63364a5b22b9891 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Thu Jul 25 14:26:52 2024 -0400 Temporarily disable METplus jobs (#2796) commit 848659691fdbf47e7ccdbbb2ebf22a6e470633a2 Author: Guillaume Vernieres Date: Wed Jul 24 15:00:35 2024 -0400 Refactoring of the marine B-matrix job (#2749) Refactor the functionality of B-matrix generation from the GDASApp Resolves #2743 commit 65a7ab75dc0e4baba06a02e11ed0455787056a68 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Jul 23 08:35:48 2024 -0400 Replace Jinja namespaces with replace_tmpl filter and disable ACCOUNT_SERVICE option (#2775) Removes the namespace-based construction of EnKF member COM directories in the enkf archive template. commit c45b9611f3e701b819bd33dc5af29033f060bb91 Author: Eric Sinsky - NOAA <48259628+EricSinsky-NOAA@users.noreply.github.com> Date: Tue Jul 23 00:33:16 2024 -0400 Add task to process reforecast variables to save on WCOSS2 (#2680) # Description This PR adds an optional task to the global-workflow to process a subset of ocean, ice, wave and atmosphere products to be saved on WCOSS2 for the GEFSv13 reforecast. This task is designed to process GEFS variables so that specific reforecast product requirements are met. A new variable in `config.base` called `DO_EXTRACTVARS` enables this task, which is currently called `extractvars`. `DO_EXTRACTVARS` is set to `NO` by default and is specifically a task designed to be executed for the GEFSv13 reforecast. Refs #1878 # Type of change - New feature (adds functionality) # Change characteristics - Is this a breaking change (a change in existing functionality)? NO - Does this change require a documentation update? NO # How has this been tested? This has been cloned and tested on WCOSS2. This will need to be tested on Hera and other platforms on which the reforecast may be running. # Checklist - [ ] Any dependent changes have been merged and published - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [x] My changes generate no new warnings - [x] New and existing tests pass with my changes - [ ] I have made corresponding changes to the documentation if necessary --------- Co-authored-by: Rahul Mahajan commit 71dc33c6ca991c16ce743760d99feaaf60f2218a Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Jul 22 14:51:53 2024 -0400 Set METplus process count in config.metp; add verif-global support for Rocky 9 (#2774) Fix metp* resources and check that they completed properly; add support for Orion Rocky 9 commit 56df67a90fe090c425199f1285e5aac722c398b1 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Jul 22 09:28:18 2024 -0400 Hotfix: Update jcb to avoid git-lfs files (#2782) Removes git-lfs files from the `GDASApp` `jcb` submodule, allowing it to be cloned on Hera. This hotfix points to a non-authoritative branch of the GDASApp (https://github.com/DavidHuber-NOAA/GDASApp/tree/hotfix/update_jcb) and should be updated ASAP back to the authoritative repository. commit fc668aa422ebbad76ceda1b3bbf8dc0ea432defd Author: Rahul Mahajan Date: Tue Jul 16 09:44:00 2024 -0400 Address issues in creating XML for GFS forecast-only with app S2SWA (#2757) This bugfix PR: - fixes an issue where a user is unable to generate the XML for a GFS forecast-only experiment with APP=S2SWA Specifically, the changes are related to defining `aero_fcst_cdumps`. Following `setup_expt.py`, the user will have to set `AERO_FCST_CDUMPS="gdas|gfs|both" depending on their use case in `config.base`. commit e0878dba0e53706a7f53429b61aee2936e2c21bf Author: Kate Friedman Date: Mon Jul 15 10:25:11 2024 -0400 Updated prepobs and fit2obs versions for Orion Rocky9 (#2758) Update prepobs to v1.0.2 and fit2obs to v1.1.2 These versions now support Orion Rocky9. Updates are included for new install locations on WCOSS2, Hera, Orion/Hercules, and Jet. commit 4968f3a8de9a5f90651cacd74e38f97bc80b7bbb Author: TerrenceMcGuinness-NOAA Date: Thu Jul 11 17:48:47 2024 +0000 CI maintenance updates and adding CI Unit Tests (#2740) This PR has a few maintenance updates to the CI pipeline and adds a test directory with Unit Tests **Major Maintenance updates:** - Added try blocks with appropriate messaging to GitHub PR of failure for: - - **scm** checkout - - build fail (with error logs sent as gists) - - create experiment fails with `stderr` sent to GitHub PR messaging - Pre-stage FAILS from the above are now captured these fails allow FINALIZE to update the label to FAIL (i.e. no more "hanging" CI state labels in GitHub - see image below) **Minor Maintenance updates:** - Fix for STALLED cases reviled from PR 2700 (just needed a lambda specifier) - Fixed path to experiment directory in PR message (had dropped EXPDIR in path) - Needed `latin-1` decoder in reading log files for publishing **Added python Unit Tests for CI functionality:** - Installed **Rocoto** and **wxfow** in GitHub Runner for testing key CI utility codes - Cashed the install of Rocoto in the GitHub Runners to greatly reduce stetup time for running the unit tests - Unit Tests Python scripts added - `test_rocostat.py`: rocoto_statcount() rocoto_summary() rocoto_stalled() - `test_setup.py`: setup_expt() test_setup_xml() - `test_create_experment`: test_create_experiment() - - Runs all PR cases that do not have ICs in the GItHub Runner - Reporting mechanism in the Actions tab for Python Unit Testing results - Test case data for STALLED and RUNNING stored on S3 and pulled using wget during runtime of tests commit 5ef4db74649b8be03402c17aa29c024e71699a7b Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Jul 11 08:59:24 2024 -0400 Adds contents of constructor and initialize methods to marine LETKF class (#2635) Adds contents of constructor and initialize methods to marine LETKF class Partially addresses https://github.com/NOAA-EMC/GDASApp/issues/1091 --------- Co-authored-by: Rahul Mahajan Co-authored-by: Cory Martin commit 8998ec7b74123e953b97a93fa14cc78d471a1aee Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Jul 9 08:31:57 2024 -0400 Fix GDAS group B restart archiving (#2735) Archives the GDAS restartb dataset at a 6-hour offset from restarta This allows cycled experiments to restart from the archives. The tabbing for the master archive templates was also added to improve readability. Resolves #2722 commit 3ca74771255727033b9dc043c652ac585178629c Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Tue Jul 9 08:28:54 2024 -0400 Add fcst dependency to ocnanalprep (#2728) Add previous cycle's `fcst` as a dependency to `ocnanalprep` This ensures that the availability of restart files to the latter. This addresses a seldomly-encountered race condition where `ocnanalprep` fails due to the lack of the files. commit 58fca1668aecd6fb1afd12a441256ad35900e075 Author: Rahul Mahajan Date: Fri Jul 5 15:02:23 2024 -0400 Update (partially) global-workflow for orion+rocky9 (#2741) This PR: - updates a few submodules (GSI, GSI-utils, GSI-monitor, UFS_utils, GFS-utils) to include recent update to their modulefiles for Orion+Rocky9 upgrade - updates the modulefiles in global-workflow to load modules from Orion+Rocky9 paths - updates modulefiles for `gwsetup` and `gwci` as well. - removes NCL and GEMPAK from Orion. NCL is not used and GEMPAK is not installed. - adds `parm/config.gfs/config.resources.ORION` to address GSI performance degradation after Rocky 9 upgrade. This PR: - does not update the build for UPP. Standalone UPP is not available via ufs-weather-model as of #2729 - will need a follow-up update for `prepobs` and `fit2obs` updated locations when they are installed in `glopara` space on Orion. # Type of change - Maintenance (code refactor, clean-up, new CI test, etc.) # Change characteristics - Is this a breaking change (a change in existing functionality)? NO - Does this change require a documentation update? NO # How has this been tested? This PR is not sufficient for Orion. This PR must be tested on other platforms (Hera, WCOSS2) as this PR updates submodules. # Checklist - [ ] Any dependent changes have been merged and published - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] My changes generate no new warnings - [ ] New and existing tests pass with my changes - [ ] I have made corresponding changes to the documentation if necessary --------- Co-authored-by: Kate Friedman commit d65d3d257b38225fac74e86b770f43e1f8ae2d5a Author: Jessica Meixner Date: Wed Jul 3 21:07:49 2024 -0400 Update ufs model hash to 20240625 (#2729) Updates UFS weather model hash to hash from 2024-06-24 which has orion porting updates + a few namelist updates. commit 2bd106a013805ba4e16dbdc456d6731f8f36ec85 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed Jul 3 11:32:40 2024 -0400 Hotfix for undefined CLUSTERS (#2748) Defines `CLUSTERS` as an empty string for all hosts except Gaea and uses the native `dict` `get` method to prevent grabbing an unset entry. commit 7dc6651a3b92194d963675bdc0a9ec3c28499abf Author: GwenChen-NOAA <95313292+GwenChen-NOAA@users.noreply.github.com> Date: Wed Jul 3 09:56:08 2024 -0400 Update gempak job to run one fcst hour per task (#2671) This PR updates gempak jobs (gfs, gdas, and goes) from processing all forecast hours at once to one forecast hour at a time. This will reduce the job runtime to less than 5 min, so restart capability is not needed. Resolves #1250 Ref #2666 #2667 --------- Co-authored-by: Walter.Kolczynski commit 8215ae654202186a4f753c3abe937b7b9b91a9c7 Author: Rahul Mahajan Date: Tue Jul 2 16:22:11 2024 -0400 Hotfix for clusters from #2701 (#2747) Fixes an issue created from #2701 that added `CLUSTERS` to the `gaea.yaml`. commit 11943e36ba12b3df49c51942da780698fab02d38 Author: DavidBurrows-NCO <82525974+DavidBurrows-NCO@users.noreply.github.com> Date: Tue Jul 2 12:58:10 2024 -0400 Fix xml file setup and complete C48 ATM and S2SW runs for CI on Gaea (#2701) This PR sets up the ability on Gaea for auto generation of a clean xml file, i.e., an xml file that does not need any alterations before running rocoto. Refs #2572 Refs #2664 commit de8706702ead0630beb54d868f83aa2cb23f8f79 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon Jul 1 09:29:14 2024 -0400 Update for JCB policies and stage DA job files with Jinja2-templates (#2700) This PR updates the `gdas.cd` hash to bring in new JCB conventions. Resolves #2699 From #2654 This PR will move much of the staging code that take place in the python initialization subroutines of the variational and ensemble DA jobs into Jinja2-templated YAML files to be passed into the wxflow file handler. Much of the staging has already been done this way, but this PR simply expands that strategy. The old Python routines that were doing this staging are now removed. This is part of a broader refactoring of the pygfs tasking. wxflow PR [#30](https://github.com/NOAA-EMC/wxflow/pull/30) is a companion to this PR. Co-authored-by: danholdaway Co-authored-by: DavidNew-NOAA Co-authored-by: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Co-authored-by: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> commit c49e4eee1a2ca818b3ecdcb9ea41c3f3e91d585b Author: Rahul Mahajan Date: Fri Jun 28 14:56:19 2024 -0400 Revert PR 2681 (#2739) This PR: - reverts #2681 in part - keeps some changes for `RUN`. - is a hotfix - should be merged ASAP after consensus w/ @guillaumevernieres @CatherineThomas-NOAA @WalterKolczynski-NOAA commit 9476c1237af4adbc95f90bd1bdd34b6b99f2f8a3 Author: TerrenceMcGuinness-NOAA Date: Wed Jun 26 15:46:08 2024 -0400 updated Finalize in Jenkinsfile and added try block around scm checkout (#2692) We are updating the Jenkins Pipeline with a try block around checkout to capture errors for the user. Also cleaned up Finalize and added section to clean out workspace on success. commit 968568f682bac7564095440bdb7813abefd76821 Author: Walter Kolczynski - NOAA Date: Wed Jun 26 13:27:19 2024 -0400 Activate snow DA test on WCOSS (#2720) Activate the snow DA test on WCOSS. commit 7706760bb8adbdf78cb640b02739023c886e7699 Author: Rahul Mahajan Date: Wed Jun 26 10:02:22 2024 -0400 Cleanup of stale RUNDIRS from an experiment (#2719) This PR: - removes stale temporary scratch run directories from `$DATAROOT/` every 3 days. - should help to scrub failed attempts. - removes an unused variable `RUNDIR` defined in `config.base` commit 8962991691b5f0857b813bddfd28aa1034d4bd2b Author: Jessica Meixner Date: Wed Jun 26 09:43:48 2024 -0400 Update logic for MOM6 number of layers/exception values (#2681) Updates the logic to be by run instead of for DO_JEDIOCNVAR to determine how many layers and sets the exception value for MOM6 to be 1e-34 for all scenarios. Note, we will no longer have zeros in the ocean grib output and the DA will also run without issues. Fixes https://github.com/NOAA-EMC/global-workflow/issues/2615 commit 12431f76bdce807067929415007592cffc8a2457 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Jun 26 07:42:35 2024 -0600 Update wave jobs to use COMIN/COMOUT (#2643) NCO has requested that each COM variable specify whether it is an input or an output. This completes that process for the global-workflow wave model and products tasks. Refs #2451 commit b902c0bac126c323a07186ad8881384b032b6fda Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Jun 25 07:48:46 2024 -0400 Assign machine- and RUN-specific resources (#2672) Redefine resource variables based explicitly on RUN or CDUMP Additionally, machine-specific resources are moved out of config.resources and placed in respective config.resources.{machine} files. Resolves #177 #2672 commit 5edbd123e2878a07f5cce8e3c7ea6147f286633a Merge: 09333c01d 4e1b937b6 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Mon Jun 24 12:44:05 2024 -0600 Merge branch 'NOAA-EMC:develop' into develop commit 4e1b937b67ed220120e81925c4507f03b9b8965f Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Jun 24 10:50:52 2024 -0400 Add minimum software requirements (#2712) Adds a table to HPC documentation stating the minimum support versions commit f43a86276aaef91efa28faadc71a3cf50e749efe Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Jun 21 13:44:29 2024 -0400 Fix and simplify online archiving and reenable METplus jobs (#2687) This fixes the online archiving portion of the `*arch` and `*earc00` jobs, a prerequisite for running METplus. This also reenables METplus by default. The approach previously taken created `FileHandler` dictionaries at varying levels within the resulting yaml, which was not properly parsed by `exglobal_archive.py`. This approach creates a single `FileHandler` dictionary and is much less complicated overall. Resolves #2673 #2647 commit 8993b42cb91144c0ab0501dc7841ea8d675c4701 Author: Walter Kolczynski - NOAA Date: Wed Jun 19 21:51:22 2024 -0400 Eliminate post groups (#2667) Eliminates the post groups used for upp and products jobs so that each task only processes one forecast hour. This is more efficient and greatly simplifies downstream dependencies that depend on a specific forecast hour. Resolves #2666 Refs #2642 commit 0b810c888239853fedd0e4584fe62536c6aaacdf Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Jun 18 20:32:48 2024 -0600 Removes misleading "No such file or directory" syntax errors from output files (#2688) This PR addresses issue #1252. The following is accomplished: - Prior to removing files, the existence of a file is checked prior to attempting to remove; this is performed as noted [here](https://github.com/NOAA-EMC/global-workflow/issues/1252#issue-1538627369); this PR only addresses the the `chgrp` issue. Refs #1252 --------- Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit 3270ac3bf00c3ebc8166c70d84647ec44431fbae Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Jun 18 12:17:59 2024 -0600 Hotfix for bug in template names. (#2697) This PR is a hotfix for an incorrectly named (e.g., non-existent) `COM/` template. Resolves #2696 Refs #2451 commit 35d4d99eaac669721add9ddcc793153e5ab3b30a Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Jun 18 08:06:53 2024 -0600 Update archive job to use COMIN/COMOUT (#2668) NCO has requested that each COM variable specify whether it is an input or an output. This completes that process for the global-workflow archive task. Refs #2451 --------- Co-authored-by: Walter Kolczynski - NOAA Co-authored-by: Rahul Mahajan Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit 47b3a581c8257fa24411fb400df8bb0e1e04972a Author: Walter Kolczynski - NOAA Date: Mon Jun 17 22:55:38 2024 -0400 Turn on high-frequency output in extended test (#2679) Turns on high-frequency (hourly) output in the extended products test to exercise that aspect of the code. This test only runs on WCOSS. Also adds the hooks to optionally turn on the metplus jobs, but that is deferred as they are not currently working correctly. commit 38f2df9fb0c074b1f80d3c637080be79be693161 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Jun 17 17:12:55 2024 +0000 Optimize wavepostpnt (#2657) Optimize the gfswavepostpnt, gfswavepostbndpntbll, and gfswavepostbndpnt jobs This is done by 1) reducing the number of calls to `sed`, `awk`, `grep`, and `cat` by - performing operations on all files at once instead of looping over each file - removing piped `cat` calls (e.g. `cat | sed 'something'`) - combining `sed` and `grep` calls when possible - adding logic to `awk` calls instead of handling that logic in bash 2) minimizing as much as possible the amount of data on disk that has to be read in (e.g. limiting sed to read only the line numbers it needs) --------- Co-authored-by: Walter Kolczynski - NOAA commit 5af325a6a4e0a14d180514a418603ca79fada487 Author: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Fri Jun 14 18:05:23 2024 -0400 Update GDASapp hash to move JCB into GDASapp (#2665) This PR moves JCB into GDASapp. The PR also bumps up the hash of GDASapp to what is in `feature/move_jcb`, which at time of writing is develop plus the absorption of JCB into GDASapp. Note that I also took the changes from https://github.com/NOAA-EMC/global-workflow/pull/2641 to follow the testing @RussTreadon-NOAA has done. commit 6c93b4554e235fcb4d0004e99a4c4498d55d461b Author: Yaping Wang <49168260+ypwang19@users.noreply.github.com> Date: Fri Jun 14 10:18:17 2024 -0500 Add observation preparation job for aerosols DA to workflow (#2624) Add a prepaeroobs job to prepare aerosol obs files for DA. This job does quality control of the VIIRS aerosol raw observations and convert them to ioda format. Resolves #2623 --------- Co-authored-by: ypwang19 Co-authored-by: TerrenceMcGuinness-NOAA Co-authored-by: Cory Martin Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit 5a5fc2be7555f094a0f90fd3a3df22d071ccdfd4 Author: Jessica Meixner Date: Fri Jun 14 11:04:41 2024 -0400 Remove ocean daily files (#2689) This PR removes the ocn_daily files that are produced by the ocean component. These files can be recreated by averaging data that exists in the 6 hour aveaged files if needed. Fixes https://github.com/NOAA-EMC/global-workflow/issues/2675 Fixes https://github.com/NOAA-EMC/global-workflow/issues/2659 (by removing them and making this obsolete) commit 603a4a8052a5c43ce5986f028c3fcfd5fd248ad4 Author: TerrenceMcGuinness-NOAA Date: Thu Jun 13 12:22:03 2024 -0400 Update Jenkinsfile needed a comma commit dc21eac6c3941d7f30803891d91d82f4cc1f8183 Author: TerrenceMcGuinness-NOAA Date: Thu Jun 13 11:41:14 2024 -0400 Add Hercules-EMC to the Jenkins configurable parameter list (#2685) This quick-fix PR is to update the Jenkins Pipeline's configurable parameter list to include the **Hercules-EMC** node. This allows Jenkins users to restart Jobs in the controller when no updates have been made. commit ebacebfbe458634b8c80af6a735d6b6d01e4e406 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu Jun 13 11:20:24 2024 -0400 Update gdas.cd and gsi_utils hashes (#2641) This PR updates the `sorc/gdas.cd` and `sorc/gsi_utils` hashes. The updated hashes bring in bug fixes, new UFS DA functionality, and a Gaea build for gsi_utils. Resolves #2640 commit 34155fb4767769600a1ff95f0a65e37081addc2a Author: Neil Barton <103681022+NeilBarton-NOAA@users.noreply.github.com> Date: Thu Jun 13 11:18:22 2024 -0400 Add ability to use GEFS replay ICs (#2559) The PR allows the use of ICs from PSL's replay analysis. These replay ICs will be used for GEFS reforecasting and SFS. Two main changes are associated with these updates: (1) replay ICs being valid at 3Z, and (2) the use of warm starts. Resolves #1838 --------- Co-authored-by: Jessica Meixner Co-authored-by: Walter Kolczynski - NOAA Co-authored-by: Rahul Mahajan commit 6c19a0e3fc4400e1d39288be4ee4fc244b74f699 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Jun 12 19:25:42 2024 -0600 Replace `sleep` with `wait_for_file` (#2586) This PR addresses issue #2444. The following is accomplished: - All `sleep` statements are replaced with `wait_for_file` for the relevant scripts beneath `scripts` and `ush`; - Indentation and shell-norms are updated where applicable. Note: The WAFS scripts are not updated as per @aerorahul direction. Resolves #2444 --------- Co-authored-by: henrywinterbottom-wxdev Co-authored-by: Walter Kolczynski - NOAA commit 5b2a3d449a0835cec2663aabb06f1c47a3faf84e Author: Walter Kolczynski - NOAA Date: Wed Jun 12 13:31:55 2024 -0400 Add COM template for JEDI obs (#2678) Adds a COM template to define a path to store obs processed for JEDI. This will allow UFSDA to stop writing to COM_OBS, which should be read-only as it belongs to obsproc in operations. No functional change yet. commit 2e6f1fcde9935619352b1b26cba42ec0f4d845ed Author: Guoqing Ge Date: Wed Jun 12 09:06:23 2024 -0600 Link both global-nest fix files and non-nest ones at the same time (#2632) This PR enables linking both global-nest fix files and non-nest ones at the same time and users can run both nesting and non-nesting experiments at the same time without worries about what fix files to be linked. Resolves #2631 commit 61de004d4f9e9edf8a31bb173f2719b46451a36a Author: Jessica Meixner Date: Wed Jun 12 11:03:13 2024 -0400 Update ufs-weather-model (#2663) Updates ufs-weather-model, this updates RDHPCS to the newer spack-stack allowing some temporary fixes to be reverted. * removes upp submodule * uses upp from the ufs-weather-model * restores the build and link that were hacked during the Hera Rocky 8 transition to allow for UPP submodule * Removes forecast directories in clean-up Resolves #2617 Resolves #2437 --------- Co-authored-by: Rahul Mahajan commit 15eaf35fb13f361be400be38a5f7ca7b5461ab1d Author: Eric Sinsky - NOAA <48259628+EricSinsky-NOAA@users.noreply.github.com> Date: Wed Jun 12 01:15:37 2024 -0400 Add ability to process ocean/ice products specific to GEFS (#2561) This PR begins to add the capability to produce GEFSv13 ocean and ice products in the global-workflow according to stakeholder requirements. The following features are added. - An oceanice prod yaml file has been added to address the ocean and ice products specific to GEFSv13. - The rocoto dependencies and config.base for GEFS have also been modified to allow for 24-hour averaged ocean and ice output. - Various scripts have been modified to allow for ocean and ice output frequencies of 24 hours. - `FHOUT_OCNICE` has been split into two variables called `FHOUT_OCN` and `FHOUT_ICE`. The same has been done for `FHOUT_OCNICE_GFS`. Refs #1878 commit 6691e7489650e0b738c176fbd096109288dc09b6 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Jun 11 21:15:07 2024 -0600 Update cleanup job to use COMIN/COMOUT (#2649) NCO has requested that each COM variable specify whether it is an input or an output. This completes that process for the global-workflow clean-up task. Refs #2451 --------- Co-authored-by: Walter Kolczynski - NOAA commit 23a8d8835dd4c5d69ca20f5ff23705f30f17b4b0 Author: TerrenceMcGuinness-NOAA Date: Tue Jun 11 16:17:25 2024 -0400 Add overwrite to creat experiment in BASH CI (#2676) This is a quick hotfix to the CI BASH driver script adding `--overwrite` to create experiment script to avoid errors from restarting an experiment. commit e7909af8d9e1f34140388a3f8556d8e582c58fe5 Author: emilyhcliu <36091766+emilyhcliu@users.noreply.github.com> Date: Mon Jun 10 15:11:27 2024 -0400 Add handling to select CRTM cloud optical table based on cloud scheme and update calcanal_gfs.py (#2645) This PR proposes updates for the following two scripts: 1. In **scripts/exglobal_atmos_analysis.sh** --- Add handling to select CRTM cloud optical table based on cloud microphysical scheme indicated by `imp_physics' The default scheme in the GFS forecast model is Thompson scheme (imp_physics = 8). 2. In **/ush/calcanl_gfs.py** --- Increase the MPI number declared in the script due to increased variables to interplate increments and calculate analysis in the netcdf_io routines in GSI-utils. Here is the related [PR #46 for GSI-utils](https://github.com/NOAA-EMC/GSI-utils/pull/46). --------- Co-authored-by: Rahul Mahajan Co-authored-by: Walter Kolczynski - NOAA commit 9caa51de8fb7be07d2e61775da01937d576964f6 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Jun 6 22:15:23 2024 -0600 Update RDHPCS Hera resource for `eupd` task (#2636) As per @wx20jjung, the resource for the `eupd` task have been updated for RDHPCS Hera to account for memory issues for C384 `gdaseupd` job fails. Resolves #2454 --------- Co-authored-by: Walter Kolczynski - NOAA commit acf3aaa2b1d3e3024b0b5d2fe23eee8c317a980b Author: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu Jun 6 11:49:03 2024 -0400 Parameterize some things in config.atmanl and config.atmensanl (#2661) This PR adds some parameters in config.atmanl and config.atmensanl that can be altered with the defaults.yaml. The motivation is to make these files match those in the GDASApp JJOB tests (example: https://github.com/NOAA-EMC/GDASApp/blob/develop/test/atm/global-workflow/config.atmanl), so we can just use the Global Workflow config.atmanl and config.atmensanl in the tests rather than custom ones in GDASApp that have to be separately updated every time the ones in the Global Workflow are updated. commit 54ea0b73a07921be5fbb07fe41e976888bd3e549 Author: Guillaume Vernieres Date: Thu Jun 6 01:36:02 2024 -0400 Add links to the ocean insitu obs processing tools (#2644) Add links to the marine bufr to ioda converters for the marine insitu observations. - fixes https://github.com/NOAA-EMC/GDASApp/issues/1106 - waiting for https://github.com/NOAA-EMC/GDASApp/pull/1135 commit 205d0c2b13e2d7755cec75bf8c978ab20d453862 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed Jun 5 17:31:30 2024 +0000 Update S4 point of contact in docs (#2660) Update the point of contact for global workflow issues on S4. commit aa23ccf1d0d229f9ff1398d84af1fa7ee5bed262 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Wed Jun 5 12:50:14 2024 -0400 Enable wcoss2 ufsda build and module load (#2620) This PR enables ufsda (`sorc/gdas.cd`) to be built and run on WCOSS2. Resolves #2602 Resolves #2579 commit 67b833e0c7bc390865d453588b4609a1a7ede981 Author: Jessica Meixner Date: Tue Jun 4 13:33:43 2024 -0400 Update ufs-weather-model (#2646) Updates UFS model to the commit https://github.com/ufs-community/ufs-weather-model/commit/5bec704243286421fc613838fc67a2129e96acd6 This should resolve the issue and allow C768 runs on Hera and allow for CICE to run on WCOSS2 (due to library updates to allow linking). From what I can tell, all updates needed were done by @HenryWinterbottom-NOAA which were updates for CICE Fixes #2490 commit c44d0ac86cfdf78eb87492431bf6d825e8bae637 Author: GwenChen-NOAA <95313292+GwenChen-NOAA@users.noreply.github.com> Date: Tue Jun 4 10:29:49 2024 -0400 Update wmo parm files to fix WMO header (#2652) This PR updates wmo parm files to switch WMO header of precipitation type products (CRAIN, CFRZR, CICEP, and CSNOW) from time averaged to instantaneous. Resolves #2566 commit 237d6dd213e8b1455d2f45dc5978fb2d3de93e60 Author: Cory Martin Date: Tue Jun 4 13:55:33 2024 +0000 Add IAU to snow DA (and its test) (#2610) This PR enables IAU for the snow DA which is necessary for GFSv17. A snow analysis is created for the center of the window regardless, and an additional at the beginning of the window is added if IAU is on. The former is needed for UPP and the latter, to initialize the model. The increment is valid throughout the window for 3DVar, so the same increment is added to both forecasts. Additionally, the input file that goes into global_cycle has been updated to be the output of the JEDI snow analysis instead of the forecast (@jiaruidong2017 I recall discussing this, can you confirm this is right or am I mistaken) This PR also makes the CI test for snow DA (and aerosol DA) include IAU rather than without IAU,. --------- Co-authored-by: Rahul Mahajan Co-authored-by: Walter Kolczynski - NOAA commit c92bf415060750127c9c05a62a1d2851c489551a Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Sat Jun 1 05:11:07 2024 +0000 Archiving cleanup (#2621) 1) Adds a lot of comments to the jinja templates for archiving 2) Rearranges the gdas and enkf templates to a more logical order 3) Fixes a couple of bugs in the enkf archiving of increments and analyses 4) Disables archiving for the half cycle 5) Removes the `FITSARC` key from `config.base` and `arcdir.yaml.j2`, instead relying on `DO_FIT2OBS` 6) Updates wxflow to add the option to not allow undefined variables when parsing jinja templates and invokes this feature when running archives Resolves #2612 commit 12aa1e9cd2d159e2b303d2b33d6c79c365688eec Author: Walter Kolczynski - NOAA Date: Fri May 31 04:57:08 2024 -0400 Switch to Rocky 9 built external packages on Hercules (#2608) The workflow was updated to use modules built on Rocky 9, but the external packages (like prepobs) were still pointing to the versions built on CentOS (Orion). This transitions to packages built on Rocky 9. Updating of the tracker package has been deferred until later. As such, the tracker jobs have been disabled by returning immediately if they are on Hercules. Since these jobs are small, resource-wise, it should not meaningfully impact turnover time. commit 4422550c01c9214a2b3b8890bdcc898123ee216a Author: Guoqing Ge Date: Thu May 30 08:05:23 2024 -0600 Add the capability to use slurm reservation nodes (#2627) Add the capability to use slurm reservation nodes Add "ACCOUNT_SERVICE" for jobs to run in PARTITION_SERVICE Resolves #2626 commit a54153fd9d26126206bc07a1da4e80f50c0c5910 Author: Walter Kolczynski - NOAA Date: Wed May 29 23:24:07 2024 -0400 Update forecast job to use COMIN/COMOUT (#2622) NCO has requested that each COM variable specify whether it is an input or an output. This completes that process for the forecast job. Refs #2451 --------- Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit d69a8af95d492982b918670322ed5c41ab074335 Author: Jessica Meixner Date: Wed May 29 21:29:03 2024 -0400 Update to add 1-deg global wave grid (#2619) This PR adds options to use a global 1 deg grid, intended for testing with the SFS application. Requires new fix file changes NOAA-EMC/global-workflow#2618 commit 0b4670ecf83b99b72835c8380573b2bca7cf5324 Author: Jessica Meixner Date: Wed May 29 17:17:21 2024 -0400 Add C384mx025_3DVarAOWCDA yamls (#2625) Adds the C384mx025_3DVarAOWCDA yaml files for one experiment into a new GFSv17 folder. commit 2e885d05c64b947f00a3cf055a1277fbfac195c9 Author: TerrenceMcGuinness-NOAA Date: Wed May 29 13:00:51 2024 -0400 Script to keep Jenkins Agent persistent from cron (#2634) This "persistent" Java Agent launch script can be ran from a cron job: - Uses Jenkins Remote API to check the status of the Node connection using curl for a given machine. - If it is not connected a new agent is launched for that node. Resolves #2633 commit bb58e064d8e82ce51802bd6064cfa84cae2cc4d5 Author: GwenChen-NOAA <95313292+GwenChen-NOAA@users.noreply.github.com> Date: Tue May 28 17:17:11 2024 -0400 Change GRIB2 parameter names and vertical levels for ocean/ice post (#2611) Based on users' feedback, this PR do the following: 1. Change GRIB2 parameter names DLWRF -> NLWRF and DSWRF -> NSWRF 2. Change the vertical level of ocean 3D variables (WTMP, SALIN, UOGRD, and VOGRD) from "%g m below water surface" to "%g m below sea level" 3. Round up depth numbers to integer (e.g. 4481.0625 -> 4481 m) Co-authored-by: Rahul Mahajan commit e53c5e8e0abbc0edf95970a71df0e6e8a2be9f31 Author: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Tue May 28 17:16:23 2024 -0400 Add atmensanlfv3inc job (#2592) This PR creates the atmensanlfv3inc job, the ensemble version of atmanlfv3inc, created in GW PR #2420. Its GDASApp companion PR is #[1104](https://github.com/NOAA-EMC/GDASApp/pull/1104), and its JCB-GDAS companion PR is #[3](https://github.com/NOAA-EMC/jcb-gdas/pull/3). commit 50c2b8951b29a3c883a778becbf8582f9519eb48 Author: Anil Kumar <108816337+AnilKumar-NOAA@users.noreply.github.com> Date: Tue May 28 13:23:53 2024 -0400 Global-workflow (AR) Generic updates for Gaea C5 (#2515) - Port global-workflow’s build and run capability to Gaea-C5 - Building global-workflow on Gaea-C5 - Setting up experiments with global-workflow on Gaea-C5 --------- Co-authored-by: AnilKumar-NOAA Co-authored-by: DavidBurrows-NCO <82525974+DavidBurrows-NCO@users.noreply.github.com> commit b6ca771a0c584cbfcbbf9be739765d5f3815df97 Author: TerrenceMcGuinness-NOAA Date: Fri May 24 10:52:45 2024 -0400 Update STMP and PTMP settings in host file for Orion and Hercules (#2614) - Updating STMP and PTMP settings in host file for Orion and Hercules because they are cross mounted. - Also took the opportunity to finally update **SLURM_ACCOUNT** to **HPC_ACCOUT** in CI over rides. - Added a refactor of the `rocotostat.py` tool that is more pythonic and as a execute retry feature because the `rocotostat` utility on Orion has been failing sometimes. commit 7d2c539f45194cd4e5b21bfd4b83a9480189cd0f Author: Guillaume Vernieres Date: Tue May 21 23:50:50 2024 -0400 Sea-ice analysis insertion (#2584) Allows cycling and restarting CICE with the sea-ice analysis if the marine DA is switched on. Resolves #2568 Resolves NOAA-EMC/GDASApp#1103 commit 5369a1ff3a3969149fcf32810fad0e50216752b7 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue May 21 22:12:29 2024 +0000 Refactored archiving (#2491) This provides a new pygfs task, archive.py, that provides all of the tools necessary to archive data to the local (`ARCDIR`) and backup (`ATARDIR`) archive directories. YAML-Jinja2 templates are provided to define the file to be archived or tarred to replace the `hpssarch_gen.sh`, `exglobal_earc`, and `exglobal_archive.sh` scripts and make it easier to add new data and explicitly handle optional and required files. For `ATARDIR` archiving, a master jinja template is provided for each `RUN` (i.e. master_gdas.yaml.j2, master_gfs.yaml.j2, master_enkf.yaml.j2). The master_enkf.yaml.j2 template is used for both `enkfgdas` and `enkfgfs` `RUN`s. These templates then include the appropriate `RUN`-specific jinja templates (e.g. gdas.yaml.j2) based on experiment, cycle, and coupled parameters. Each of these templates corresponds to a single tarball to populate and are tabbed 4 spaces so they are defined within the master `datasets` dictionary. Future developers should not have to make modifications to archive.py unless archiving is being enabled for a new `RUN` (e.g. `gefs`) and then only a single `elif` needs to be added to the configure method to specify the master `ATARDIR` template to archive (e.g. `master_gefs.yaml.j2`). If a new component is coming online that needs to be archived to `ATARDIR` (e.g. SNOW), then create a new template for each `RUN` that it needs to be archived for (e.g. `gdassnow.yaml.j2`) and reference the template in the appropriate master templates, e.g. `master_gdas.yaml:` ```jinja {% if DO_SNOW %} {% include "gdassnow.yaml.j2" %} {% endif %} ``` A few other issues were addressed along the way: 1. Aerosols have been reenabled. Aerosol forecasts should only be performed during gdas cycles, but analyses can be performed for both gfs and gdas cycles. This was accomplished by setting separate `AERO__CDUMP` variables to parse on for both `ANL` and `FCST` jobs. 2. Fixed the name of the `cice6_rst_ok` variable in `forecast_det.sh`. This prevented restarts from being used for cice-enable experiments. This feature was not tested. 3. Create a temporary fix for the `wgrib` utility. For spack-stack 1.6.0, the `grib-util` module file does not declare `WGRIB`. An issue is open (https://github.com/JCSDA/spack-stack/issues/1097) to fix this in existing installations. Once complete, this temporary fix should be removed. 4. The number of `earc` jobs has been reduced for lower resolution experiments. Both C48 and C96 experiments will now only have two earc jobs (one for the non-member files to archive and another for the member files). C192 will have up to 3 earc jobs (one non-member, one for members 1-40 and another for members 41-80, if needed). Resolves #2345 Resolves #2318 --------- Co-authored-by: Walter Kolczynski - NOAA commit 9aad86f27d37d19165b9a0b64cf70c7a4dd6362c Author: TerrenceMcGuinness-NOAA Date: Fri May 17 12:57:59 2024 -0400 Add remove RUNDIRS step in CI before creating experements (#2607) As had been done in Bash CI we need to remove the RUNDIR in Jenkins before a creating an experiment in the event that case had beem previously ran. commit 09333c01dbafddb2d2fe7e181b479af3cc6d3621 Merge: f7e9f4489 bb930050b Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Thu May 16 14:33:19 2024 -0600 Merge branch 'NOAA-EMC:develop' into develop commit bb930050b3cd51d28ecba6b231c8675f6d11856c Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu May 16 12:28:30 2024 -0400 Adds jjob and other necessities for marine LETKF task (#2564) Adds jjob, rocoto script, config file, and other necessities for new marine LETKF task. Partially addresses NOAA-EMC/GDASApp#1091 commit 2c50fbde4d6cc3e53c55dca56925353a02fd1730 Author: TerrenceMcGuinness-NOAA Date: Thu May 16 12:12:06 2024 -0400 Updating CI Machine configs with redundant PTMP (#2605) Quick fix adding PTMP as STMP in Machine configs for CI for completeness commit ef340ff33a6f89adf70838206ba3fd56a953fa7a Author: TerrenceMcGuinness-NOAA Date: Thu May 16 11:37:30 2024 -0400 Fix race condition in CI between Orion and Hercules (#2604) Hotfix to solve race conditions in the CI system due to cross-mounted file systems between Orion and Hercules commit e8b17e27f719df280170dc3f5bd9f19917cefaf2 Author: TerrenceMcGuinness-NOAA Date: Wed May 15 17:16:30 2024 -0400 Remove existing EXPDIRs and COMROTs when CI is re-run (#2601) Quick hotfix for having default for re-runing jobs to start clean with new EXPDIRs and COMROTs commit b5d113efb1970ede5cd1d3d4dff8d96320519c41 Author: TerrenceMcGuinness-NOAA Date: Wed May 15 16:52:49 2024 -0400 Moving logic for skipping hosts in pr cases (#2573) This PR removes the logic of skipping hosts for pr cases from `create_experiment.py` and moves it to a test in the cron bash driver using a `parse_yaml.py` python tool. The Jenkins pipeline was not effected as it uses the `get_host_case_list.py` utility to form the cases on a per host bases. Co-authored-by: Rahul Mahajan commit 3cd0c68c0de9900bc7b73e1ed7621573dff5e916 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Wed May 15 13:13:30 2024 -0400 Update gsi_utils.fd hash (#2598) This PR updates the `gsi_utils.fd` hash to bring in updates which add safeguards to - `src/EnKF/gfs/src/getsigensmeanp_smooth.fd/getsigensmeanp_smooth_ncep.f90` - `src/EnKF/gfs/src/recentersigp.fd/recentersigp.f90` The safeguards are described in GSI-utils PR [#41](https://github.com/NOAA-EMC/GSI-utils/pull/41) and the associated issue. Resolves #2597 commit d5366c66bd67f89d118b18956fe230207cbf0aea Author: Kate Friedman Date: Wed May 15 13:12:56 2024 -0400 Update CICE and MOM6 fix versions (#2600) This PR updates the CICE (`cice_ver`) and MOM6 (`mom6_ver`) fix versions to the newer `20240416` timestamps, which includes updates and fixes to the `100` (1-deg) resolution files. Resolves #2480 Resolves #2483 Resolves #2595 commit 6ca106e6c0466d7165fc37b147e0e2735a1d6a0b Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon May 13 22:57:38 2024 +0000 Limit gfswavepostpnt to 40 PEs/node (#2588) This fixes the slow runtime of the gfswavepostpnt job on Hercules. The job is very I/O intensive and does not scale well to large nodes, so limit the number of jobs/node to 40. Resolves #2587 commit 4fb7c12c325702a47f27c802a5067efd33d0327c Author: Fanglin Yang Date: Mon May 13 16:37:51 2024 -0400 Update damping and time-step (#2575) Updates the model to use explicit Rayleigh damping for u/v and implicit damping to w. This improves model stability and allows for longer timesteps. Also unifies the GDAS and GFS to use the same damping. Results from a test at the C1152 resolution (coupled model) can be found at https://www.emc.ncep.noaa.gov/gmb/wx24fy/C1152/newdamp/ Resolves #2574 Co-authored-by: Walter Kolczynski - NOAA Co-authored-by: Lisa Bengtsson Co-authored-by: Rahul Mahajan commit 6a9c1372ecce9e50e4f6e10e56f6e504cde1afe6 Author: TerrenceMcGuinness-NOAA Date: Fri May 10 14:17:13 2024 -0400 Do not use BUILT_semphore to force rebuilds when re-run (#2593) Remove the placement of the `BUILT_semaphore` file after the build in the Jenkins Pipeline and force it to rebuild any changes after a PR is re-ran. commit 2346c6161f75ae02369cbf30f30c6150d3e12b66 Author: Innocent Souopgui <162634017+InnocentSouopgui-NOAA@users.noreply.github.com> Date: Thu May 9 21:17:06 2024 -0500 Migration to Rocky8 spack-stack installations on Jet (#2458) # Description Migrates Global Workflow to Rocky8 spack-stack installations on Jet. Jet has moved from CentOS7 to Rocky8. Resolves #2377 Refs NOAA-EMC/UPP#919 Refs NOAA-EMC/gfs-utils#60 Refs NOAA-EMC/GSI#732 Refs NOAA-EMC/GSI-Monitor#130 Refs NOAA-EMC/GSI-utils#33 commit c7b3973014480a20dd8e24edaeb83a9e9e68159f Author: Jessica Meixner Date: Thu May 9 11:36:58 2024 -0400 Updates for cold start half cycle, then continuing with IAU for WCDA (#2560) This PR allows us to run C384 S2S with IAU, but starting with the first half-cycle as a cold-start. This will be necessary for cycled testing as we build towards the full system for GFSv17. This updates the copying of the restarts for RUN=gdas for both ocean and ice copying what the atm model is doing. It also reduced the amount of restart files from 4 to 3. Other updates: * Add DOJEDI ocean triggers for archiving certain files update from: @CatherineThomas-NOAA * Adds COPY_FINAL_RESTARTS option to turn on/off copying the last restart file to COM. Defaults to off... * Defines model_start_date_current_cycle & model_start_date_next_cycle to help with knowing which IC to grab. Refs #2546 Co-authored-by: Rahul Mahajan commit b405b7d3d11d384ce9fe3b9cd2180f315f7b38f2 Author: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Wed May 8 20:52:48 2024 -0400 Use JCB for assembling JEDI YAML files for atmospheric GDAS (#2477) Change the JEDI YAML assembly for the atmospheric GDAS to use the JEDI Configuration Builder (JCB) tool so that YAMLs can be made more portable and invoke the observation chronicle mechanism. Resolves #2476 Co-authored-by: danholdaway Co-authored-by: Walter Kolczynski - NOAA commit 0cf0349c1f88048806e68ab58e93a3261b7a0e95 Author: Walter Kolczynski - NOAA Date: Wed May 8 02:04:16 2024 -0400 Add CI test for products (#2567) Adds a new version of the atm3DVar test that runs the full forecast length and produces most of the secondary products. For now, this test will only run on WCOSS due to gempak failures on other machines as well as computational needs. On other machines, the original version will run (the original version will not run on WCOSS). AWIPS remains off for now in this extended test due to a bug involving tocgrib2 and the convective precip fields (see #2566). The new test runs for 4½ cycles and the full 384-hr forecast length to ensure all gempak scripts are exercised. Since the cycle throttle is 3 and the bulk of the time is in the free forecast, the cycles run mostly concurrently so it doesn't extend the total test time too much beyond that of a single 384-hr forecast. Fixes a bug in NPOESS that was introduced when the post filenames were reverted to the previous format for the GOES products until the final filenames are determined (#2499). Also removes the AWIPS g2 job from the rocoto mesh to complete the retirement of grib1 products. Resolves #2132 Resolves #2445 commit 9b6f8404ac4507d14adc404b77cfdf002b55e832 Author: Rahul Mahajan Date: Tue May 7 00:14:36 2024 -0400 Add task to prepare emissions for GEFS (#2562) This PR: - introduces a task to prepare emissions for a forecast into the GEFS application. - adds configuration, j-job, rocoto job, ex-script and the python class for this job - updates GEFS workflow to be able to generate the XML to call this job. - updates the `fcst` and `efcs` job dependencies in the GEFS application to depend on `prep_emissions` if aerosols are turned ON. - provides a placeholder for @bbakernoaa to work on the details for preparing emissions. Co-authored-by: Walter Kolczynski - NOAA commit 233c18815d2e8e6b344f161fd0c102a4fbdfb66d Author: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Mon May 6 18:11:35 2024 -0400 Single Executable for main GDAS JEDI applications (#2565) Changes that accompany GDAS PR (NOAA-EMC/GDASApp/pull/1075) that allows building of a single gdas executable, which should be more compliant with NCO requirements. Addresses https://github.com/NOAA-EMC/GDASApp/issues/1085 commit a005244bbfb2f1c525bca60d966f8095aa1acb8e Author: Guoqing Ge Date: Thu May 2 20:32:53 2024 -0600 Add nest capability (#2545) This PR adds the global nesting capability to the global workflow so that one can run a regional domain nested in a global run. Resolves #2544 Co-authored-by: Rahul Mahajan commit cb87daaced9fddd17f8370a1842d7e4ddab24e8f Author: DavidBurrows-NCO <82525974+DavidBurrows-NCO@users.noreply.github.com> Date: Thu May 2 15:30:53 2024 -0400 Update gfs_utils for Gaea (#2556) What: add build capability to the gfs_utils submod within the global workflow on Gaea Refs #2535 Co-authored-by: Rahul Mahajan commit 707a1cc5124bcd8e006839a17f76ceb88f45f902 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed May 1 18:13:02 2024 -0600 Updated GEMPAK version and APRUN launcher. (#2555) This PR addresses issue #2248 and #2513. The following is accomplished: - Updates the parallel executable for GEMPAK applications; - Updates the GEMPAK version for RDHPCS Hera. Describe your changes. Focus on the *what* and *why*. The *how* will be evident from the changes. In particular, be sure to note any interface changes, such as command line syntax, that will need to be communicated to users. At the end of your description, please be sure to add the issue this PR solves using the word "Resolves". If there are any issues that are related but not yet resolved (including in other repos), you may use "Refs". Resolves #2248 Resolves #2513 Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Co-authored-by: henrywinterbottom-wxdev commit f151cbf394e998ca0fdae893ca174499468d0c85 Author: Travis Elless <113720457+TravisElless-NOAA@users.noreply.github.com> Date: Wed May 1 11:01:18 2024 -0400 Utilize scale-dependent localization for atmospheric analysis (#2542) The plan for GFSv17 is to use a scale-dependent localization for the atmospheric analysis. This PR adds the necessary parameters to allow this feature to be used by default. commit 53b6764392cb4c0f3b4506ccd3f8cba5c5d2c56e Author: Walter Kolczynski - NOAA Date: Tue Apr 30 16:37:54 2024 -0400 Remove implicit symlink names (#2527) Lustre has a defect under Rocky 9 that results in symlink sometimes failing when the link name is not explicit. This updates all link creation to use explicit names. `config.base` is updated to turn off two monitor jobs on Hercules because the executables are not yet built there. This, combined with the previous change, should make workflow available for use on Hercules. Also removes the redundant utility names for NCP, NLN, etc. in the gdas scripts that are already defined in `config.base`. Resolves #2131 Resolves #2522 commit f7e9f4489fc0b10830f621fdf149e8e3149d6a51 Merge: 67a4810c4 762f040a2 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Apr 30 12:24:48 2024 -0600 Merge branch 'NOAA-EMC:develop' into develop commit 762f040a2045db17cdacd9026df9c4b8fd520156 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Apr 29 22:26:28 2024 -0400 Fixes sea ice archiving (#2541) Removes/changes sea ice output files that are failing to be added to list for archiving, causing `gdasarch` to fail in WCDA cycling. Resolves https://github.com/NOAA-EMC/GDASApp/issues/1044 commit 2ecf4f86e0cbe59407ba2c4e105ee7292f1eda01 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon Apr 29 22:25:57 2024 -0400 Link ensemble analysis increment files to COMROOT for warm_start (#2553) Scripting is added to `setup_expt.py` to link ensemble analysis increment files to COMROOT for warm_start experiments. Resolves #2552 commit 3a7abe1d63c573006e0e656237f1220002c3f579 Author: TerrenceMcGuinness-NOAA Date: Tue Apr 30 02:25:28 2024 +0000 Launch Multiple Platforms to Jenkins with polling (#2548) When launching Jenkins CI Tests all requested RDHPCS machines can now be selected via the Ready label at once. This is all that is required sense polling also works now on the controller end. Killing the jobs still needs to be done directly on the Jenkins Controller. Do not try to update the CI process using Labels. It is for launching only. Jenkins will update the labels as the states change. NOTE: When a case fails the label will be update to a **Fail** for that system but will continue to report failures of subsequent cases until otherwise stopped in the Jenkins Controller directly. Do not update any labels to **Ready** until a push has been made to the repo of the PR, and The job has been completed or stopped directly on the controller first. You can do this at anytime without having to wait until the other machines are completed. Co-authored-by: tmcguinness Co-authored-by: Rahul Mahajan commit 4b96c1237c562b67650c2d2fa015984c95b228eb Author: Jessica Meixner Date: Sat Apr 27 19:03:26 2024 -0400 Turn C48mx500_3DVarAOWCDA back on (#2543) This PR turns the C48mx500_3DVarAOWCDA test back on. This required a few bugfixes in GDAS app which have now been merged. Resolves #2438 Resolves #2528 co-authors: @guillaumevernieres and @aerorahul who provided the bug fixes. commit 48489b4e7758e80660941279652431e49fdd3cfa Author: Guoqing Ge Date: Sat Apr 27 00:23:00 2024 -0600 Add option to link different orog/ugwd fix files for global nest (#2532) The global nest runs use a different set of tiles and need a different set of orog and ugwd fix files. The PR add an option to link correct fix files for global nest. Resolves #2530 Resolves #2529 commit 7911f12ef0213f487a0681b260e4c982c946c17c Author: GwenChen-NOAA <95313292+GwenChen-NOAA@users.noreply.github.com> Date: Fri Apr 26 16:20:44 2024 -0400 Retire AWIPS GRIB1 products (#2547) This PR retires AWIPS GRIB1 products by deleting the files that are responsible for it. This PR does not remove the awips_g2 tasks from rocoto task list. It will be addressed in a follow up PR by workflow developers Refs #2445 commit 93c853d464908a88222d5a6eeca686cd1a413c0e Author: James Jung Date: Fri Apr 26 13:16:47 2024 -0400 Add CADS use flexibility (#2540) The current design requires a script change to turn CADS on/off for specific instruments. The new design moves the on/off (true/false) flags to the config.anal file. Resolves #2538 commit 11bf141319ef2a29398742007a29d79bbf4439d5 Author: TerrenceMcGuinness-NOAA Date: Thu Apr 25 23:35:57 2024 +0000 Hot fix for bash CI on WCOSS2 (#2536) A couple of minor hotfixes need for bash CI to work on WCOSS2. PR tested in bash on WCOSS with these changes Co-authored-by: tmcguinness commit f11bf3dc2bc062c070b901ce3aa808bd6b69a007 Author: Walter Kolczynski - NOAA Date: Tue Apr 23 16:00:51 2024 -0400 Fix comment indentation (#2526) Corrects comment indentation to satisfy PEP-8 complaints from pynorms. commit d0e1cc8456546904ce5895bf67aa626d2c41cce8 Author: Guoqing Ge Date: Tue Apr 23 11:17:15 2024 -0600 Add CCPP suite and FASTER option to UFS build (#2521) This PR updates related build scripts to (1) include the global-nest physics in the compilation step (2) be able to use the -DFASTER=ON compiling option through the "-f" command line switch. Resolves #2520 commit ee8cce593e645705c5aad926e9bd9e488b59ed3b Author: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Tue Apr 23 13:13:43 2024 -0400 New "atmanlfv3inc" Rocoto job (#2420) This PR, a companion to GDASApp PR [#983](https://github.com/NOAA-EMC/GDASApp/pull/983), creates a new Rocoto job called "atmanlfv3inc" that computes the FV3 atmosphere increment from the JEDI variational increment using a JEDI OOPS app in GDASApp, called fv3jedi_fv3inc.x, that replaces the GDASApp Python script, jediinc2fv3.py, for the variational analysis. The "atmanlrun" job is renamed "atmanlvar" to better reflect the role it plays of running now one of two JEDI executables for the atmospheric analysis jobs. Previously, the JEDI variational executable would interpolate and write its increment, during the atmanlrun job, to the Gaussian grid, and then the python script, jediinc2fv3.py, would read it and then write the FV3 increment on the Gaussian grid during the atmanlfinal job. Following the new changes, the JEDI increment will be written directly to the cubed sphere. Then during the atmanlfv3inc job, the OOPS app will read it and compute the FV3 increment directly on the cubed sphere and write it out onto the Gaussian grid. The reason for writing first to the cubed sphere grid is that otherwise the OOPS app would have to interpolate twice, once from Gaussian to cubed sphere before computing the increment and then back to the Gaussian, since all the underlying computations in JEDI are done on the native grid. The motivation for this new app and job is that eventually we wish to transition all intermediate data to the native cubed sphere grid, and the OOPS framework allows us the flexibility to read and write to/from any grid format we wish by just changing the YAML configuration file rather than hardcoding. When we do switch to the cubed sphere, it will be an easy transition. Moreover, it the computations the OOPS app will be done with a compiled executable rather than an interpreted Python script, providing some performance increase. It has been tested with a cycling experiment with JEDI in both Hera and Orion to show that it runs without issues, and I have compared the FV3 increments computed by the original and news codes. The delp and hydrostatic delz increments, the key increments produced during this step, differ by a relative error of 10^-7 and 10^-2 respectively. This difference is most likely due to the original python script doing its internal computation on the interpolated Gaussian grid, while the new OOPS app does its computations on the native cubed sphere before interpolating the the Gaussian grid. commit 3d0f643f84102d4aa2e254c902ea29eeebf1ea3f Author: TerrenceMcGuinness-NOAA Date: Tue Apr 23 15:37:25 2024 +0000 Hotfix to disable STALLED in CI as an error (#2523) This **_hotfix_** to the last CI updates disables the STALLED feature by not flagging it as an error until a more succinct algorithm is determined (i.e. the STALLED state will be at par with RUNNING). A second minor bug is in the event that no error log is produced when a Case fails, the error of the fail is still reported to the general user in GitHub. (Jenkins enabled users can always see the full comprehensive state of system by following the links at the bottom of the PR). commit 3b208124f5aee8356021d6c7c5c8f5310cb47315 Author: Rahul Mahajan Date: Mon Apr 22 22:01:00 2024 -0400 Add restart on failure capability for the forecast executable (#2510) This PR: - enables restart capability of the forecast executable from a previous failure. - saves restarts during the run in a new `DATA` structure. The current `DATA` structure: ![current `DATA`](https://github.com/NOAA-EMC/global-workflow/assets/11394126/03383e2f-b7f8-43e0-8b78-c8f37a79ab84) is being replaced by: ![Screenshot 2024-04-19 at 12 55 44 PM](https://github.com/NOAA-EMC/global-workflow/assets/11394126/8ab6e6df-bbdb-43cf-b0dc-8e066f537ee7) where, the colored boxes are described as: ![Screenshot 2024-04-19 at 12 56 14 PM](https://github.com/NOAA-EMC/global-workflow/assets/11394126/30b20e50-6cc8-4433-988a-02d5b484e7b5) - saves model output from `MOM6` and `CICE` within `MOM6_OUTPUT/` and `CICE_OUTPUT/` sub-directories. This is done to keep the run directory clean and easily identify component output. This PR also: - replaces link with copy. This enables the creation of a `DATA` directory that is self-contained and can be used to diagnose issues during failures. This is a NCO EE2 requirement and addresses part of an outstanding bugzilla. In the process of enabling the restart capability, functionality from `forecast_postdet.sh` is moved to `forecast_predet.sh` that does not depend on the outcome of `forecast_det.sh`. `forecast_det.sh` determines where the initial conditions will come from; `COM` in the case of a clean run or `DATArestart` in the case of a `RERUN`. This should make it easier to separate **static** configuration and data (fix files, etc) from **runtime** configuration (namelists, etc) and data (initial conditions) Additionally, this PR: - adds 3 utility shell scripts in `test/`. - 'nccmp.sh` - compare netCDF files using `nccmp` - `g2cmp.sh` - compare grib2 files using `wgrib2` - `f90nmlcmp.sh` - compare Fortran90 nml files using `f90nml` (Requires modulefiles to load `py-f90nml` module on RDHPCS platforms) They are not used in the workflow, but are useful for users to compare files. Resolves #2273 Co-authored-by: Walter Kolczynski - NOAA commit 1b6cef52e707b6417f5596415cb7d773e294565b Author: Kate Friedman Date: Mon Apr 22 15:42:19 2024 -0400 Update parm/transfer list files to match vetted GFSv16 set (#2517) This PR updates the `parm/transfer/*.list` files within `develop` to match the vetted set within the GFSv16 `dev/gfs.v16` branch. This completes [bugzilla #1383](http://www2.spa.ncep.noaa.gov/bugzilla/show_bug.cgi?id=1383) and duplicates cleanup already done in the `dev/gfs.v16` branch @ https://github.com/NOAA-EMC/global-workflow/commit/d466e830589682f4e5f5fa1e83f6f6526211b7d5. The sets now match - showing comparison between `dev/gfs.v16` `parm/transfer` folder contents and PR branch set: ``` [Kate.Friedman@fe5 feature-bugzilla_1383]$ pwd /lfs4/HFIP/hfv3gfs/Kate.Friedman/git/feature-bugzilla_1383 [Kate.Friedman@fe5 feature-bugzilla_1383]$ diff -r ../dev-gfs.v16/parm/transfer/ parm/transfer/ [Kate.Friedman@fe5 feature-bugzilla_1383]$ ``` Resolves #2516 commit b5a7338dab6f4c61723f31a87f25a74bb1c407ff Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon Apr 22 15:40:58 2024 -0400 Update gdas_gsibec_ver to 20240416 (#2497) This PR updates `gdas_gsibec_ver` to use the default `qoption=1` when running `fv3jedi_var.x`. This is the recommended configuration when using the statiic GSI-B in `fv3jedi_var.x`. Resolves #2496 Resolves #2493 commit 36e2febf391da43d5f92ea9f7ab01fa4e69c93c9 Author: GwenChen-NOAA <95313292+GwenChen-NOAA@users.noreply.github.com> Date: Mon Apr 22 15:39:20 2024 -0400 Adding more cycles to gempak script gfs_meta_sa2.sh (#2518) This PR changes gfs_meta_sa2.sh running from 06 cycle only to all cycles. This change will satisfy NCO Bugzilla #1211 request to add 00 cycle run in order to consolidate GFS and UKMET gempak jobs. Resolves #291 commit d839a68db6bd86b169396bc1aae9fa195e410ca5 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon Apr 22 13:37:20 2024 -0400 Update gsi_enkf.sh hash to 457510c (#2514) The `gsi_enkf.fd` hash is updated to bring in revisions to GSI source code file `src/gsi/correlated_obsmod.F90`. The order in which set up checks are performed have been modified to allow `gsi.x` to successfully run retrospective GFS v17 cases with correlated error active. Resolves #2507 commit 7f59229a159a3d1655b8f508ae4b374738410f4d Author: Guoqing Ge Date: Mon Apr 22 08:20:21 2024 -0600 Enable using the FV3_global_nest_v1 CCPP suite (#2512) The ufs-weather-model has included a new "FV3_global_nest_v1" CCPP suite which has been used by the UFS Atmospheric River community. This PR is to provide the functionality to enable using the "FV3_global_nest_v1" CCPP suite in the global-workflow Resolves #2511 commit 1cfc8e5458cda3b909dd1c9839215845fd934308 Author: TerrenceMcGuinness-NOAA Date: Sat Apr 20 00:13:43 2024 +0000 CI Refactoring and STALLED case detection (#2488) These updates to the CI Framework does some bash refactoring and adds python tools in order to effectively create the feature for detecting when a CI Case has an experiment that is in a state where it can not advance such as missing a requisite dependency: - Added separate python script for checking the status of Rocoto driven cases and integrated its use into the bash CI drivers and Jenkins having state logic done in one place. - Added log publishing python utilities into the bash CI drivers as part of refactoring and consolidations of functionalities - Update Jenkins behavior while incorporating the above python codes for Rocoto state checking: - polling on PR works with one update away from including multiple labels as well - Label updates to FAIL as soon as first case fails and continues other cases until completes or is killed by user Resolves #2008 Co-authored-by: TerrenceMcGuinness-NOAA Co-authored-by: terrance.mcguinness Co-authored-by: terry mcguinness Co-authored-by: Walter Kolczynski - NOAA commit e4a552eae7803fde07847e9b0a2dc6e38e393713 Author: Jessica Meixner Date: Fri Apr 19 13:20:19 2024 -0400 Add C768 and C1152 S2SW test cases (#2509) Adds two yaml files for testing free-forecast S2SW at either C768 or C1152. ICs are on WCOSS2, Orion and Hera. Resolves #2502 commit 1f04a80511a43b97c93db56312c8d9bc9682ebf7 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Apr 18 16:38:47 2024 -0400 Fix paths for refactored prepocnobs task (#2504) # Description Cycled testing of the refactoring of prepocnobs revealed more issues with paths, which this PR should fix. Refs https://github.com/NOAA-EMC/GDASApp/issues/1047 commit c679d94ae25462603c2a418c5d9f5e216e47e013 Author: Rahul Mahajan Date: Wed Apr 17 12:06:20 2024 -0400 Add rocoto `sh` tag, script to check netcdf file and apply this to check ocean output (#2484) This PR: - adds a Rocoto dependency tag that executes a shell command. The return code of the shell expression serves as a dependency check - adds a script that executes `ncdump` on a netCDF file. If the file is a valid netCDF file, the return code is 0, else it is non-zero - combines the above 2 to use as a dependency check for MOM6 output. If the model is still in the process of writing out the ocean output, the rocoto will execute the shell script and gather the return code. This PR also: - changes permissions on some `ush/` scripts that did not have executable permissions. Resolves #2328 commit b0c2a30cd4c3a7c427c4d5bfda945272ad7af166 Author: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Tue Apr 16 19:30:44 2024 -0400 Revert file name changes in off-line post (#2499) This PR addresses inconsistent file naming conventions in both inline post and offline post. Resolves #2191 commit 9052ec4a1a0c6a6af4207ed6c96d7d651e67620a Author: Walter Kolczynski - NOAA Date: Tue Apr 16 16:53:43 2024 -0400 Add mean/spread for atmos grib2 (#2482) Adds the basic mean and spread grib2 products for the atmosphere. The new mean/spread files are named according to the new convention, though `pres_${grid_type}` may be changed to `pgrb_${grid_type}`. Either way, the input filenames will need to be updated when that change is made. For now, the mismatch means the unlettered grib files result in `pres_`. Resolves #2296 Refs #1522 commit b7e5b6ef76d13270c56ae5b919c4334084d3d569 Author: TerrenceMcGuinness-NOAA Date: Tue Apr 16 17:59:23 2024 +0000 Upadte and tested CI Bash for WCOSS2 (#2481) Updates to the driver scripts to the CI framework to work on WCOSS with Cron Bash. Resolves #2268 commit 28b840cfd69e1af490f0c93b25694a5bfbba427f Author: Walter Kolczynski - NOAA Date: Mon Apr 15 14:07:42 2024 -0400 Update fbwind for COM refactor (#2479) Updates fbwind job for the COM refactor and some other cleanup. This works on WCOSS but not on Orion. There seems to be a problem with either `grbindex` or `GETGB()` on Orion that causes the executable to be unable to read the grib1 index file. The grib1 data file produced there seems fine. Haven't checked Hera yet, maybe there is a problem with the spack-stack build of `grbindex`. Resolves: #2160 Refs: #289 commit 7e35a6649cdf2d9aca656a820da23dbee2ea8663 Author: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Mon Apr 15 12:55:17 2024 -0400 Update parm files for atm product (#2486) This PR is for updating parm files for gfs pgrb generation to support GFS HR4. Resoves #2485 commit 80e46842b0dfc2ad45b0b6b2e6b13338004de7e2 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri Apr 12 16:08:47 2024 -0400 Fix paths in prepocnobs task (#2459) This PR fixes path for exglobal_prep_ocean_obs.py in jobs/JGLOBAL_PREP_OCEAN_OBS and associated config file Fixes https://github.com/NOAA-EMC/global-workflow/issues/2353, replaces PR https://github.com/NOAA-EMC/global-workflow/pull/2356 commit 36f3841d21b1550343e728842cd9a84af68e58a2 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri Apr 12 10:39:37 2024 -0400 Add oceanalecn to workflow generator (#2409) Adds task oceanalecn to the workflow generator, plus some necessary env var work to the jjob. The workflow generator adds oceanalecn only if ~~`nens > 0`~~ `self.do_hybvar`. Resolves https://github.com/NOAA-EMC/GDASApp/issues/912 commit 8edf94a0c7e12566b5a339f7df1d160a8d4081cc Author: James Jung Date: Thu Apr 11 12:34:18 2024 -0400 Add support for CADS IR cloud detection scheme in the GSI (#2478) A new infrared cloud detection scheme "CADS" was added to the GSI. These changes allow the use of this new scheme within the global-workflow. Setting the namelist variables to .true. (e.g. cris_cads=.true.) will envoke the the new scheme for that instrument. Resolves #2473 commit 6d40dbf2c44de05aab325ad842feca2976d84c60 Author: Kate Friedman Date: Wed Apr 10 10:55:57 2024 -0400 Improve error messaging to resolve bugzilla (#2468) The error messaging for fatal errors in ush/forecast_postdet.sh is improved to add "FATAL" where missing and state the file that is missing (when not already mentioned). Correction of the error message mentioned in the bugzilla is included in this. Bugzilla 1374 is resolved with this commit. Resolves #1253 commit ddd91b146270862beb20d2a83c4da0394efc31a2 Author: Jiarui Dong Date: Tue Apr 9 14:10:18 2024 -0400 Check the DO_JEDISNOWDA condition before adding snow DA analysis to the list (#2471) This PR added checking the DO_JEDISNOWDA condition before adding snow DA analysis to the archive list. Resolves #2469 commit 0237dba612a18c64eb513b6e186701cf37a1a5ef Author: Rahul Mahajan Date: Mon Apr 8 09:41:34 2024 -0400 Flip the build for GFS and GEFS with waves (#2462) This PR: - builds the unstructured waves as default when invoked with `build_all.sh`. - updates the CI testing infrastructure to handle this change. - updates the documentation to reflect this change in behaviour. To build with structured grid for waves, the flag `-w` needs to be passed to `./build_all.sh`. Previously, this would trigger the unstructured grid. Since GFSv17 will move to unstructured grid as default for waves, this makes it easier for a majority of developers. Resolves #2461 commit 4f0f7730dc2af0351a34263a6bbb80bd32aa2cc6 Author: Andrew Collard <40322596+ADCollard@users.noreply.github.com> Date: Fri Apr 5 19:39:17 2024 -0400 Add new data sources used in GFS v16.3.12 (#2283) Changes to `scripts/exglobal_atmos_analysis.sh` to include new data that are being operationally assimilated in GFS v16.3.12. **Note that this requires CRTM v2.4.0.1 ** commit 59cdc0ee81926ee8dc7b8e544337bfc85130ad18 Author: Guillaume Vernieres Date: Fri Apr 5 09:55:49 2024 -0400 The soca fix path is needed in config.prepoceanobs (#2460) # Description Give the prepoceanobs task access to SOCA_INPUT_FIX_DIR, which will be needed for some of the obs processing. # How has this been tested? Ran the ocean obs prep job commit 90502b33585971617b2de5df18c91c740a2689a0 Author: CatherineThomas-NOAA <59020064+CatherineThomas-NOAA@users.noreply.github.com> Date: Thu Apr 4 19:14:51 2024 -0400 Turn off reducedgrid in the EnKF (#2456) The reducedgrid feature no longer results in reduced runtime for the current EnKF configuration. This feature also cannot be used in soil DA due to masked fields. It will be set to .false. by default. Resolves #2455 commit 108ce2a83d8dc7279838cba9c3e2ef81623d46d5 Author: Walter Kolczynski - NOAA Date: Thu Apr 4 13:31:22 2024 -0400 Rename generate_com to declare_from_tmpl (#2453) # Description The `generate_com` function is renamed to `declare_from_tmpl`. NCO requested the change, and the new name more accurately represents the functionality. Resolves #2344 commit c54fe98c4fe8d811907366d4ba6ff16347bf174c Author: Walter Kolczynski - NOAA Date: Tue Apr 2 15:58:49 2024 -0400 Move bash utility functions out of preamble (#2447) The preamble was accumulating a bunch of utility functions. These functions are now moved to a separate file that is sourced by the preamble. The only functions remaining in the preamble are those related to script control and logging (`set_trace()`, `set_strict()`, `postamble()`). Resolves #2346 commit 4a39c8afc0555a8f2d621efb55589b9b309a416c Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Apr 2 18:00:21 2024 +0000 Reenable the minimization monitor on Hera (#2446) This allows the minimization monitor to run on Hera Rocky 8. A missing perl module was added (List/MoreUtils.pm), but had to be installed under the perl/5.38.0 installation, thus that module needs to be loaded. Resolves #2439 commit 0eaa53771b5e8d476d3b5feabd3181c8dc48629a Author: Travis Elless <113720457+TravisElless-NOAA@users.noreply.github.com> Date: Tue Apr 2 00:31:14 2024 -0400 Fix rotating member bugs (#2443) When PR #2427 introduced the rotating subset of member guess states for the early-cycle EnKF, the rotating member calculation function was omitted from the DOSFCANL_ENKF if block in the enkf surface script. This PR adds this feature to this section. This PR also removes hard coded values that were included in this function and are replaced with a variable equal to the number of late cycle members. Resolves #2441 commit 39ba9d720c38ac85239a1eb1696c78df82396644 Author: CatherineThomas-NOAA <59020064+CatherineThomas-NOAA@users.noreply.github.com> Date: Mon Apr 1 17:48:42 2024 -0400 Remove the reset of upper layer humidity (#2449) # Description The parameter "nudge_qv" resets the upper layer humidity to HALOE climatology when cold starting. This parameter has been set to ".true." but is no longer needed using v16+ ICs and will now be set to ".false." by default. Resolves: #2448 commit 7f6bf216566e92bbe072ebe4b64d26cc60fb53f1 Author: Jiarui Dong Date: Mon Apr 1 13:08:33 2024 -0400 Archive the snow DA analysis into HPSS (#2414) This PR adds the capabilities to archive the snow analysis output into HPSS. Changes are made to archive the snow stats, letkfoi yaml file and snow analysis into HPSS. commit c1b11a2559e618f61866498b5dad503ba74d8332 Author: Neil Barton <103681022+NeilBarton-NOAA@users.noreply.github.com> Date: Mon Apr 1 13:05:57 2024 -0400 Add GEFS ENS Atmos options (#2392) This PR adds the FV3 atmos perturbation options when running GEFS. This is needed for GEFS reforecasts and GEFS operational forecasts. This PR continues to address the below issues #1720 #1921 Co-authored-by: Rahul Mahajan Co-authored-by: Walter Kolczynski - NOAA Co-authored-by: Bing Fu <48262811+bingfu-NOAA@users.noreply.github.com> commit 67a4810c4869741912622ee2ef58678ed8848547 Merge: 10e817614 834ce3134 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Fri Mar 29 12:15:41 2024 -0600 Merge branch 'NOAA-EMC:develop' into develop commit 834ce31348a627e14d448cdbe33d4ec0dabe99e4 Author: Walter Kolczynski - NOAA Date: Fri Mar 29 13:17:08 2024 -0400 Refactor gempak jobs for new COM and style (#2374) Updates the gempak jobs to fit the new COM structure while also refactoring them some to improve the style. Despite these technical changes, the overall structure is left unchanged for most scripts, though some have been rewritten to make the needed changes easier. Some of these scripts had already been updated some in the original COM refactor and thus needed fewer updates. Style updates includes converting all gempak scripts to bash, making them shellcheck compliant, and removing trailing whitespace. Further refactoring to improve maintainability will be needed in the future (see #2341, #2342, #2343, #2348). The GFS gif scripts were identical except the forecast hour, so they are collapsed down into two: one for f000 and one for other forecast hours. The gempak executables have short path limits. To get around this without having the gempak module recompiled, target directories (mostly relevant for the gempak meta jobs) are symlinked into the working directory to drasticly reduce the path lengths. Part of this update includes replacing existing MPMD calls with the new standard `ush/run_mpmd.sh` script. A new function, `wait_for_file()`, is introduced to standardize waiting for a file to be available. Gempak forecast hours are often hard-coded within scripts. In addition to issues with maintainability, this causes problems for shorter forecasts, such as we typically run for testing purposes. For now, we simply check the values against the forecast length and reduce if necessary. Future work (#2348) will be needed to remove these hard-coded values with variables set in the config file (or just use update gempak products to match standard output time variables). One-degree gempak files have been updated to include `1p00` in the filename. Several gempak job dependencies are corrected. Fake gempak data for external models is being staged on tier-1 machines to allow testing. **Output has not been verified.** Future PRs will likely be needed to bring full functionality online. Resolves #2158 Resolves #2152 Resolves #2151 Resolves #2249 Resolves #2247 Refs #2157 Refs #2348 commit 20635b0639656769842218d544ec7ce2436337c5 Author: TerrenceMcGuinness-NOAA Date: Fri Mar 29 08:15:29 2024 +0000 Turn GEFS CI test on for Hera (#2442) Re-enabling gefs case to test gefs system builds in Jenkins on Hera. Co-authored-by: TerrenceMcGuinness-NOAA Co-authored-by: terrance.mcguinness Co-authored-by: Walter.Kolczynski commit ba6a9d5fa6a079b1e3fdd424a493252bbf499c5d Author: Walter Kolczynski - NOAA Date: Thu Mar 28 17:34:22 2024 -0400 Modify APP based on RUN (#2413) There is a need to change which coupled components are on depending on the current `RUN`. To facilitate this, the `APP` is modified prior to the setting of the `DO_` variables based on `RUN`, turning off components as desired. This new system also replaces the `DO__ENKF` switches that were formerly used to turn components off for the ensemble. Also expands allows apps for cycled to include S2SWA. Resolves #2318 commit 3ff7a92c25564ddf984cb09cb5667ae8fafe01a0 Author: TerrenceMcGuinness-NOAA Date: Thu Mar 28 17:48:00 2024 +0000 Fix post log arg check and don't create build semaphore (#2440) Two Hot Fixes to Jenkins latest updates: 1. Logic fixed in checking for mutually exclusive use of gists and repo for publishing error files 2. Removed creation of build success file semaphore forcing complete rebuild as the default behavior for rerun/restarts Co-authored-by: TerrenceMcGuinness-NOAA Co-authored-by: terrance.mcguinness commit d6be3b5c3a1b8fd025a303b40e0660e2914906a7 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Mar 27 20:56:18 2024 -0600 Update global-workflow and subcomponents to Hera/Rocky 8 partition (#2421) This PR addresses issue #2329. The following is accomplished: - All submodule RDHPCS Hera stacks are updated to be compatible with the Rocky-8 distro spack-stack; - The global-workflow version files `versions/build.hera.ver` and `versions/run.hera.ver` are updated for Rocky-8; - All submodule hashes have been updated to be compliant with the Rocky-8 distro spack-stack (see the reference PRs below); - Update to `parm/config/config.base` is made for not yet compliant packages; - Relevant updates are made to `modulefiles/module_base.hera.lua` and `modulefiles/module_gwsetup.lua`. Resolves #2329 Refs: [#958](https://github.com/NOAA-EMC/GDASApp/issues/958) [#49](https://github.com/NOAA-EMC/gfs-utils/issues/49) [#124](https://github.com/NOAA-EMC/GSI-Monitor/issues/124) [#31](https://github.com/NOAA-EMC/GSI-utils/issues/31) [#2167](https://github.com/ufs-community/ufs-weather-model/issues/2167) [#2143](https://github.com/ufs-community/ufs-weather-model/issues/2143) [#913](https://github.com/ufs-community/UFS_UTILS/issues/913) Co-authored-by: Rahul Mahajan Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit 47302153f13f6b23539be841b78ed78664599c08 Author: Travis Elless <113720457+TravisElless-NOAA@users.noreply.github.com> Date: Wed Mar 27 21:14:57 2024 -0400 Add a rotating subset of members for early-cycle enkf (#2427) The early-cycle EnKF needs the ability to run with fewer members than the late-cycle due to operational resource constraints. Because of this requirement, the introduction of a rotating subset of member first-guess states used by the early-cycle ensemble is also needed in order to preserve the rotating member initial condition functionality currently used by the GEFS. Co-authored-by: Travis J Elless Co-authored-by: travis elless commit 94c282ef6fdcd47076e932bcadb5bdd55236aa05 Author: TerrenceMcGuinness-NOAA Date: Wed Mar 27 20:28:15 2024 +0000 Uploading error logs to GitHub from Jenkins CI Runs (#2429) This PR enhances the user experience within GitHub for when errors occur during build and running of CI cases from within the PR messages. This is done by uploading the error logs to GitHub Gists and then publishing the links to them along with the full paths of the logs on disk. This PR adds the python Class **GitHubPR** in `${HOMEgfs}/ci/scripts/utils/githubpr.py` by inhearting the GitHub Class from **pyGitHub**. We use this module to introduce a helper python utility that can publish a list of log files into a GitHub Gist and/or the designated branch **error_logs** in the **emcbot** repo **ci-global-workflows** for storing error log files for review from any git configured terminal. This upload feature will also create persistence of errors over time. Also the `build_all.sh -k` script has been updated to support a "quick kill" feature (thanks David) that stops the parallel builds whenever one fails and creates an error_log file that has the paths to the error files that are also uploaded and published in the PR messages in GitHub. Co-authored-by: TerrenceMcGuinness-NOAA Co-authored-by: terrance.mcguinness Co-authored-by: DavidHuber Co-authored-by: Walter Kolczynski - NOAA commit 6c5065e2e83a45b14505e7575aa4500482ef7452 Author: Rahul Mahajan Date: Wed Mar 27 03:39:16 2024 -0400 Add option to use traditional threading in the UFS (#2384) # Description This PR: - adds the option of running the ufs-weather-model with traditional threading in addition to ESMF-managed threading. See new toggle `USE_ESMF_THREADING=YES|NO` set in `config.fcst` - does not change the current default of using ESMF-managed threading. Traditional threading use might need a little more fine tuning for the job-card specification. This will be achieved when the UFSWM RT completely switches over to traditional threading - updates the hash of the ufs-weather-model to the PR https://github.com/ufs-community/ufs-weather-model/pull/2172 Resolves #2277 In addition to the above stated objectives, this PR also addresses open issues. In particular, this PR: - adds a newline at the end of `diag_table_aod`. Fixes #2407 @zhanglikate - reserves more memory on WCOSS2 for offline UPP when running at C768. Fixes #2408 @WenMeng-NOAA Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit bc1c46dfd7393c5164abcdc2dfa76a9c4bc834b8 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Mar 26 22:27:30 2024 -0400 Correct GDASApp paths (#2435) The changes in this PR - account for changes in GDASApp directory structure - generalize how the path to the GDASApp python ioda library is specified Resolves #2434 commit f0b912be6f2cf2fac590272253f19cb082fbf5f2 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Mar 25 21:46:32 2024 +0000 Fix *earc jobs where the number of members isn't a multiple of 10 (#2424) This limits the earc search for ensemble members to the maximum number of members, which prevents attempting to send non-existent members to HPSS if the number of ensemble members is not a multiple of 10. Resolves #2390s commit daeb0c855017f8ffd6f06870744b825b276097f3 Author: TerrenceMcGuinness-NOAA Date: Fri Mar 22 17:40:04 2024 +0000 hotfix to update full path to error logs on CI case fail (#2425) This hotfix PR prepends the full path to the error logs on disk to be communitated correctly to the GitHub message to the PR that is being processed when there is a failure in from a case. commit 50f75526549245f2b5d984cdb44e402852e086ec Author: YaliMao-NOAA <53870326+YaliMao-NOAA@users.noreply.github.com> Date: Thu Mar 21 16:58:25 2024 +0000 Add WAFS jobs, scripts and ush to GFS v17 workflow repository (#2412) # Description This PR adds WAFS jobs, scripts and ush to GFS v17 workflow repository --------- Co-authored-by: yali mao Co-authored-by: Rahul Mahajan Co-authored-by: yali mao commit 03ba78ae3df589211d2776254c6e8584ecdc226f Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Thu Mar 21 13:33:50 2024 +0000 Hotfix: send the correct number of build jobs for the UFS (#2423) This fixes a bug in build_ufs.sh that was causing the UFS to always build with 8 jobs (except on the cloud). commit 4d1bf5266f00b35778ea47896f438e3ef612628d Author: Kate Friedman Date: Wed Mar 20 14:00:31 2024 -0400 Updates to RTD documentation (#2418) Updates to the RTD documentation include: - Textual updates - Better definition of GDA subfolder structure - Added note about GDAur having been discontinued - Adjust copyright and author information - Fix Git version table and update its contents - Add "Table of Contents" header before table of contents on front page - Add AWS ICs path to init page - Add link to UFS_UTILS gdas_init RTD documentation - Add note about bash to `gw_setup.sh` section and added a warning block Refs #2395 commit afe874ee8b28942e459796cd1005ec598458a5b7 Author: Neil Barton <103681022+NeilBarton-NOAA@users.noreply.github.com> Date: Tue Mar 19 14:35:02 2024 -0400 Add GEFS Ocean Perturbation Options (#2385) This PR adds the MOM6 ocean perturbation options when running GEFS. This is needed for GEFS reforecasts and GEFS operational forecasts. This PR continues to address the below issues https://github.com/NOAA-EMC/global-workflow/issues/1720 https://github.com/NOAA-EMC/global-workflow/issues/1921 Fixes #2403 commit fa855baa851b0cb635edd1b9ae1bfed5112d41e5 Author: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Mon Mar 18 12:49:14 2024 -0600 Add initial GSI-based soil analysis capability (#2263) First set of changes for adding the new soil analysis, from the assimilation of screen-level T and q. The changes here enable the screen-level observations to be assimilated in the Hybrid (Var and EnKF) update, and the soil temperature and soil moisture updates to be made in the EnKF only. The functionality is turned on by setting GSI_SOILANAL to YES in config.base. Resolves #1479 commit e9700d84b521907ee23e1584712f80e25e60f08e Author: Jessica Meixner Date: Mon Mar 18 09:32:13 2024 -0400 re-enable ci/cases/pr/C48mx500_3DVarAOWCDA.yaml (#2405) Updates to re-enable C48mx500_3DVarAOWCDA CI test after it was disabled in https://github.com/NOAA-EMC/global-workflow/pull/2371 Fixes github.com/NOAA-EMC/global-workflow/issues/2404 commit 3ccffeee120340ab580fc9d96b552970c9f42a8f Author: Rahul Mahajan Date: Mon Mar 18 09:30:35 2024 -0400 Parse jediyaml only once (#2387) `JEDIYAML` was being parsed 3 times; once in `get_obs_dict`, second in `get_bias_dict` and a third time in `initialize` for the specific component analysis task. This PR: - eliminates the duplications and constructs the `jedi_config` dictionary just once. The dictionary is written out before calling the executable. - updates hash to gdasapp - updates configs for snow, aerosol, atmvar and atmens JEDI-DA to include `JEDI_FIX_YAML` and `CRTM_FIX_YAML` . This allows greater flexibility and control over the contents of these fix data sets to be copied into the run directory. - Combines snowDA and aerosolDA into a single test Co-authored-by: Cory Martin Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit a5f24951c5bef142747c6f6cc6abd474f0b53ac2 Author: CatherineThomas-NOAA <59020064+CatherineThomas-NOAA@users.noreply.github.com> Date: Fri Mar 15 14:47:54 2024 -0400 Fix ensemble archive groups to include all members (#2402) The number of groups used in the ensemble archive step (earc) needs to include a task for the ensemble stat files such as the mean and the spread, resulting in `n_groups+1` tasks for `earc`. Resolves: #2390 commit 056cfdca9e7fd7426a315fcbffc38d8ee2891212 Author: TerrenceMcGuinness-NOAA Date: Fri Mar 15 18:30:23 2024 +0000 GitHub message error paths (#2401) Add feature to message paths to error logs of failed experiments to GitHub Messaging the PR from Jenkins. commit d897ee4936d62160811d936248c8555187f81b65 Author: Rahul Mahajan Date: Thu Mar 14 12:37:49 2024 -0400 Missed a comma from the hotfix this AM (#2399) This PR is a hotfix to the hotfix from earlier this AM. A comma was missing. commit 906540acacf1b2ce4c0489d0d9d4913f53a4e8ad Author: Rahul Mahajan Date: Thu Mar 14 10:40:03 2024 -0400 Fix KeyError issue in ocean/ice postprocessing job. (#2398) The jjob for ocean and ice pp, only defines the component specific history and grib directory. This causes an error in the exscript trying to pull keys for both ocean and ice. Fix this. Surprised this has not caused failures before today Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> commit c27f243ce24c60261718f15628f6ab30d7b09f7b Author: Rahul Mahajan Date: Wed Mar 13 13:31:57 2024 -0400 Remove documentation about generating ICs using global-workflow (#2397) Removes instructions on generating ics using global-workflow and directs the user to use ufs-utils. commit 10e817614a9cba9858ee47c7bdfb7f7ae606558c Merge: 0ad4eb403 0edbdc197 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Mar 12 15:12:20 2024 -0600 Merge branch 'NOAA-EMC:develop' into develop commit 0edbdc197441582f9c402da0f3a7f144b88960c7 Author: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Tue Mar 12 16:30:45 2024 -0400 Changed config.atmanl to allow non-hybrid background error yamls (#2394) # Description Makes change so that if DOHYBVAR equals "NO", then the JEDI background error yaml is set to staticb_${STATICB_TYPE}.yaml.j2 rather than hybvar_${STATICB_TYPE}.yaml.j2. This allows GDAS to run without hybvar, which may be necessary for development purposes. This is all accomplished by a simple switch in config.atmanl. commit ccb1f528489e740bb2adc4958146552323dd8709 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Mar 12 10:45:39 2024 -0400 Add JEDI atmosphere only CI (#2357) The PR contains a minimal set of changes to enable JEDI atmospheric DA CI testing. Prototype JEDI atmospheric cycling has begun. The JEDI atmosphere DA CI case provides an automated way to see if future PRs impact JEDI atmospheric cycling. Resolves #2294 Dependency: GDASApp PR [#937](https://github.com/NOAA-EMC/GDASApp/pull/937) commit b96f5ebbb1968bd539336652b87a2faa8ce68fd4 Author: Kate Friedman Date: Tue Mar 12 07:58:40 2024 -0400 Add switch to control `debug=true` on WCOSS2 for development testing (#2388) Adds a switch (`DEBUG_POSTSCRIPT`) to control whether `debug=true` is set when submitting development rocoto jobs to PBS schedulers (currently just WCOSS2). There isn't an equivalent flag to set for SLURM on the RDHPCS. Have added this new switch to documentation. Refs #619 commit 02d650500353663d0b193ef14003897daa5dd86c Author: TerrenceMcGuinness-NOAA Date: Mon Mar 11 21:51:16 2024 +0000 Rewrote pr_list_database.py to use wxflow's SQLiteDB Class (#2376) This PR updates the `pr_list_database.py` code to use **wxflow** SQLiteDB Class - Improved code's readability - Uses better code style matching project's software culture - Better docstring standards Co-authored-by: tmcguinness Co-authored-by: Rahul Mahajan Co-authored-by: Walter Kolczynski - NOAA commit a3374607d01fbdabbec0660afb82b5eb3677b4af Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri Mar 8 16:08:42 2024 -0500 Return ocnanalrun npes resource setting back to previous value (#2386) Variable `npes` in `ocnanalrun` entry of `config.resources` was erroneously changed in https://github.com/NOAA-EMC/global-workflow/pull/2299 and this PR changes it back. Resolves https://github.com/NOAA-EMC/GDASApp/issues/962 commit d7e9bde84aebe922039589bd2bcd65832c1074eb Author: BoCui-NOAA <53531984+BoCui-NOAA@users.noreply.github.com> Date: Thu Mar 7 16:14:28 2024 -0500 Add new BUFR table file parm/product/bufr_ij9km.txt for GFSv17 C1152 (#2383) This PR will add a new table file parm/product/bufr_ij9km.txt, and modify ush/gfs_bufr.sh to choose the different bufr table files based on the GFSv17 run resolution, i.e. use file bufr_ij9km.txt for C1152 or bufr_ij13km.txt, for C768. Resolves #2382 commit 4a525bef3bbed2ea60a71f71b3740c82df125c36 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Mar 7 16:12:31 2024 -0500 Add global-workflow infrastructure for ocean analysis recentering task (#2299) Adds jjob, rocoto script, config file, and basic `config.resources` entry for ocean analysis recentering task This PR is a dependency for further work on the associated issue within global-workflow and GDASApp Refs https://github.com/NOAA-EMC/GDASApp/issues/912 commit f83d17a937006add55241ed453e42f4fcbae50aa Author: Kate Friedman Date: Thu Mar 7 09:29:14 2024 -0500 Clean out non-gfs top level variables (#2366) Clean out non-gfs top level variables that are duplicates or no longer needed. Also standardize how we set these variables in scripts. Refs #2332 commit c7b306e052497aef0022cd53550a168d2c5b6e5b Author: Guillaume Vernieres Date: Wed Mar 6 16:16:08 2024 -0500 Forgotten templated DO_VRFY_OCEANDA (#2379) # Description This PR adds the possibility to use the switch for the ocean and sea-ice DA verify task from the yaml configuration. - fixes [GDASApp/issues/954](https://github.com/NOAA-EMC/GDASApp/issues/954) commit 0ad4eb403a0d68ea8592799b8db4b3b46e5f26c3 Merge: 4038e8ac4 ba6a4fdf6 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Wed Mar 6 10:40:54 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit ba6a4fdf6e245b57530f2b20e6f0ccf567115720 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Mar 5 19:09:48 2024 +0000 Add Hercules support for the GSI monitor (#2373) # Description This updates the GSI monitor hash and updates the modulefiles to add support for the monitor on Hercules. commit 732a874a2c6793296f136afb23545fab9869b181 Author: Rahul Mahajan Date: Mon Mar 4 16:04:26 2024 -0500 Reformat snowDA templates to jinja2 (#2371) # Description This PR: - replaces use of non-jinja2 templates in the yaml templates. Specifically `$( )` in favor of pure jinja2. - uses jinja2's built-in capability to include templates within templates, thereby allowing to assemble a completely rendered template before passing it to for e.g. yaml loader. - requires updates to `wxflow` and `gdasapp` - Changes in `wxflow` in `parse_j2yaml` are **not** backwards compatible Additionally, this PR: - renames `config.base.emc.dyn` to `config.base`. Resolves #2347 commit d1fa41106e991556606b0f62a15bf45f469f4f79 Author: TerrenceMcGuinness-NOAA Date: Sat Mar 2 04:54:26 2024 +0000 Reduce Jenkins messaging to GitHub (#2370) This PR updates the Jenkins Pipeline code with safeguards against the errors caused when Jenkins fails to authenticate with GitHub to message or update a label. This was achieved simply by: - Reducing the number out messages sent to the GitHub PR - Putting try blocks around most of the update label calls Co-authored-by: tmcguinness commit 52fa3cb32d8b50e47f391b82ea8901435fc88aff Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Fri Mar 1 12:36:27 2024 -0700 Adding debug option for all build scripts (#2326) This PR addresses issue #300 that allows building in `debug` mode. Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Co-authored-by: Rahul Mahajan commit 91738cbf871d8cdce46912e2c11e304d567a2aae Author: DWesl <22566757+DWesl@users.noreply.github.com> Date: Fri Mar 1 13:46:42 2024 -0500 Sort list of coupler restart files for restart time determination (#2360) The loop in the following conditional seems to assume the list is sorted, so make that explicit in the array construction. commit 23c25527ad2a62275cd9105bd103b8520a28e573 Author: Neil Barton <103681022+NeilBarton-NOAA@users.noreply.github.com> Date: Fri Mar 1 13:45:39 2024 -0500 Update stage IC to handle ocean perturbations (#2364) This PR adds the option to stage ocean perturbation files for ensemble forecasts. These perturbation files are used in GEFS forecasts. A new variable is introduced in config.base to use the ocean perturbation files. This PR does not include using these perturbation files. A future PR will address this. commit 8efe05f475b81e7cf6376745d5f1ce31987cb4eb Author: Jessica Meixner Date: Fri Mar 1 07:41:56 2024 -0500 Turn on C48mx500_3DVarAOWCDA test on hera (#2363) This PR activates the C48mx500_3DVarAOWCDA test on hera. This required an update of the gdas app. commit 4038e8ac4bbcad4e8c36557fb56fe1acd29463fd Merge: e2d88ddce 516659394 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Thu Feb 29 13:42:22 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit 5166593945e9ecc04dfa3409752576c08797d09f Author: TerrenceMcGuinness-NOAA Date: Thu Feb 29 20:14:41 2024 +0000 Move Jenkinsfile into ci subdirectory (#2355) Just moves the Jenkinsfile into the ci directory Co-authored-by: tmcguinness commit b7af315bb9dea77b37c6d030b71060b87bedf33e Author: Walter Kolczynski - NOAA Date: Wed Feb 28 22:20:58 2024 +0000 Fix rocoto forecast hour determination for GEFS (#2351) The function that generates the list of forecast hours for rocoto was trying to use variables that are not defined for GEFS, causing workflow generation to fail. The function is updated to not try to load these variables before loading the ones actually used for GFS/ GEFS. Also turns GEFS CI test back on and adds an entry to stage C192 ICs (note: these have not been placed in the centralized location.) commit d3a49271b6c3816a9feeb7f6fb474797bacf1d7e Author: Cory Martin Date: Wed Feb 28 09:38:49 2024 -0500 Rename the land DA jobs to snow DA to better reflect what they are doing (#2330) This PR renames all of the land DA jobs to snow DA to better reflect that this is a JEDI-based snow analysis capability and not a more generic land surface analysis. commit 2693810d6ea9d9b20090777ff3a98e3d072c76d7 Author: Jessica Meixner Date: Tue Feb 27 01:25:51 2024 -0500 Update ufs-waether-model hash (#2338) Routine update of ufs-weather-model hash. Other small updates: * removes comment referencing closed issue. * Updates the CICE diag frequency to once per day as recommend here: https://github.com/NOAA-EMC/global-workflow/issues/1810#issuecomment-1686278925 * Updated amount of time for C384 gdas forecast as it was running out of time * Removed unused variable wave_sys_ver commit 9608852784871ebf03d92b53bde891b6dcab8684 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon Feb 26 14:10:01 2024 -0500 Update JEDI ATM to use .nc for obs and generalize x,y layout (#2336) # Description The changes in this PR are twofold 1. replace `.nc4` suffix for JEDI ATM observation related files with `.nc` 2. use templated variables to specify `{layout_x, layout_y}` for JEDI ATM variational and local ensemble apps The first change conforms with the Unidata recommendation that netCDF files end with the suffix `.nc`. The second change replaces hardwired JEDI ATM var and ens `{layout_x, layout_y}` in `config.resources` with a more flexible approach. Resolves #2335 commit c5c84660f10f0ef9ce939231b2f7fda498b39a29 Author: Kate Friedman Date: Mon Feb 26 10:18:50 2024 -0500 Remove FIX* variables for fix subfolders (#2337) Remove `FIX*` variables for fix subfolders and replace them with the remaining `FIXgfs` variable and the subfolder name (e.g. `${FIXam}` -> `${FIXgfs}/am`). The UFS_UTILS and GDASApp repos were similarly updated. This PR includes a new UFS_UTILS hash. The updated GDASAPP hash was already committed within the spack-stack/1.6.0 PR #2239. Resolves #2184 commit 950c38a093c6a4e2b67e18c76390280d8bfbaef7 Author: TerrenceMcGuinness-NOAA Date: Fri Feb 23 21:15:46 2024 +0000 Fix several Jenkins issues (#2334) Jenkins Updates Resolving final kinks: - Removed all `git` shell commands and now exclusively use Software Control Manger (**scm**) plugin. - Add feature for skipping hosts per configuration specified in case yaml files. - Solved and tested false positive builds and experiments. - Tested archiving of task error log on case fail - First case fail quits pipeline and cancels all pending scheduled jobs - Duel build per yaml configuration arguments supported - All designated case files in PR directory pass on intended host (fully tested on Hera) Remaining updates: - Fist build fail short circuit when building sub-modules and archiving build error log. - Re-build/no-build built in logic for Replay and Rerunning previously failed experiments. commit c67393a203285792b852da0d83fd10fa47155669 Merge: 6f9afff07 79d305e8c Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Feb 23 14:18:15 2024 +0000 Merge pull request #2239 from DavidHuber-NOAA/ss160 Update to spack-stack 1.6.0 Includes all submodules except the UFS, which will be updated at a later time. commit 79d305e8cbc339208ea6fe0475ddc56af94a285b Author: David Huber Date: Thu Feb 22 14:53:57 2024 -0600 Disable snow DA tests commit 0459203e97211b041520b39e93a188951396ba33 Author: David Huber Date: Thu Feb 22 12:55:51 2024 -0600 Update GDASApp hash to current develop commit 5c96eb2272fe6117f9e4a4c0c790db58e4870d46 Author: David Huber Date: Thu Feb 22 12:37:47 2024 -0600 Update GDAS hash to allow modified snow DA analysis commit 79144f2403a33d08140577cc3e8a61d6c4924403 Merge: abbb0b8a7 6f9afff07 Author: DavidHuber Date: Thu Feb 22 15:14:39 2024 +0000 Merge remote-tracking branch 'origin/develop' into ss160 commit abbb0b8a76b39d34433802fd4e3d7973fb9f0a39 Merge: 4ad837ea1 4529e8cf3 Author: DavidHuber Date: Thu Feb 22 15:11:03 2024 +0000 Merge remote-tracking branch 'henry/feature/gwdev_issue_2129' into ss160 commit 4ad837ea157b98d2bd173cb696c4d30d142e5540 Merge: 516b2a270 7ca45db8f Author: DavidHuber Date: Thu Feb 22 15:10:24 2024 +0000 Merge remote-tracking branch 'henry/feature/gfsv17_issue_2125' into ss160 commit 516b2a270234bdab5714ef2705c83dd3835b134d Author: DavidHuber Date: Thu Feb 22 14:19:16 2024 +0000 Updated GDAS to include rocoto/1.3.6 on Hera. commit 6f9afff073dd589096f992a3448fb7f0e62c9804 Author: Jessica Meixner Date: Wed Feb 21 13:09:44 2024 -0500 Add some flexibility for ocean/ice output (#2327) This adds functionality to have ocean/ice output frequency be separate from the atm model. One time was created because there's an assumption in the post that these are the same. This could be further modified to remove this assumption. Refs #1629 commit e2d88ddcec863d1762be19e31a4ac5bddcda4d34 Merge: 3e6b1e2c5 a23b7f2fd Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Feb 20 16:08:46 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit f6d3015ab9f9fd23ce0081baa2edbc5d9f5f3e16 Author: David Huber Date: Tue Feb 20 09:53:08 2024 -0600 Update GDASApp hash to include SS/1.6.0 support. commit 0bf340bce2f865c582e5305f0c5984cd3affe74e Author: David Huber Date: Tue Feb 20 09:07:32 2024 -0600 Construct SS paths from version variables. commit 3330cd7310bde8090b68720c225656074676d6b2 Author: David Huber Date: Tue Feb 20 09:06:19 2024 -0600 Removed MET/METplus 'not available' comments commit fdc638ca1616b347912caec77e5abc2d3e6f18af Author: David Huber Date: Tue Feb 20 08:35:15 2024 -0600 Move SS module path to version files. commit d7d28a6b65b84c8d821abd2c13d0c068bd5ad6d8 Author: David Huber Date: Tue Feb 20 07:53:15 2024 -0600 Update comment about METplus support. commit a812f88af3fc043d57494840e81a7527723858e4 Author: David Huber Date: Tue Feb 20 07:45:45 2024 -0600 Update verif-global to latest WCOSS2 support. commit d81f07fbf53666a37ab01bd463152e10252869ae Author: David Huber Date: Tue Feb 20 07:41:38 2024 -0600 Clean up build_upp.sh. -Corrected whitespace (tabs instead of spaces) -Removed debug print statement -Alphebetized flags commit ae7eb194cbe2213e564807dd7bc03a28d493eff2 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Feb 16 16:15:40 2024 -0500 Fix whitespace in build_upp.sh. Co-authored-by: Rahul Mahajan commit 48b34d0f388a398bb91f7c3b1e5f8338f4beb7b9 Author: David Huber Date: Fri Feb 16 20:56:55 2024 +0000 Added verif-global support back to WCOSS2. commit 4529e8cf3736ffbacf615a27e99f4d1beec391aa Author: henrywinterbottom-wxdev Date: Fri Feb 16 11:12:01 2024 -0700 Bug fix. commit 8e4f94d13d32849b2862a9d59aa070f4103c61ae Author: henrywinterbottom-wxdev Date: Fri Feb 16 11:04:41 2024 -0700 Updates requested by reviewer Rahul Mahajan. commit 4624ce21c99ab303afa10c1dd8ddcce7b6f715ca Author: henrywinterbottom-wxdev Date: Fri Feb 16 10:52:11 2024 -0700 Updates requested by reviewer; testing -- DO NOT REVIEW. commit ed25bbd0b26a893d32ce4a10b368dec2bb722424 Author: henrywinterbottom-wxdev Date: Fri Feb 16 09:33:59 2024 -0700 Linter corrections. commit 6a0b7bf214815c13eec98a93bd3abe9978de04e4 Merge: f9fb64ef8 2415b7b4f Author: David Huber Date: Fri Feb 16 09:50:22 2024 -0600 Merge branch 'ss160' of github.com:DavidHuber-NOAA/global-workflow into ss160 commit f9fb64ef802b683d7b369f8e8268d423ab581481 Merge: 777d97d3a a23b7f2fd Author: David Huber Date: Fri Feb 16 09:49:42 2024 -0600 Merge remote-tracking branch 'emc/develop' into ss160 commit 7ca45db8fa32c84ef117ff2938a650822c81a786 Merge: 73bc76bfd a23b7f2fd Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Fri Feb 16 07:46:35 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gfsv17_issue_2125 commit eb2ed53857eb3387735488a1ce5d701ff680e3db Merge: 9929277dc a23b7f2fd Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Fri Feb 16 07:46:24 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gwdev_issue_2129 commit a23b7f2fdca5be700d257e28052a0104f2173a0f Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Feb 16 09:37:58 2024 -0500 Add JEDI 3DEnVar atmosphere only CI test stub (#2309) commit cf83885548bb3a6740c033f42479ce2ad283a4a9 Author: Jessica Meixner Date: Fri Feb 16 01:55:02 2024 -0500 Add unstructured grid for HR3/GFS (#2230) This adds the capability to use unstructured grids in the global workflow, which will be used in HR3. There are new fix files for a low-resolution 100km grid and a grid closer to our targeted GFSv17 grid which has the resolution combined from the older multi_1 and GFSv16 grids. The fix file update is here: NOAA-EMC/global-workflow#2229 Note: This now means that GFS tests need a new build option: `./build_all.sh -w` So that PDLIB=ON is turned on for compiling relevant UFS and WW3 codes. Resolves NOAA-EMC/global-workflow#1547 commit 9929277dc7d0ad90f5366faf4b5f2278969a0aa2 Merge: eb8791ccb 094e3b86d Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Feb 15 15:05:50 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gwdev_issue_2129 commit 094e3b86da44f1d3fc1d99f68f6fdfcd36deb09f Author: Cory Martin Date: Thu Feb 15 14:43:55 2024 -0500 Move IMS remapping files from COM_OBS to FIXgdas (#2322) * Add in IMS obs fix directory and update submodule for gdas commit d465ea06e8b2a8f3a5eb1120647c1e2ce5197d66 Author: TerrenceMcGuinness-NOAA Date: Thu Feb 15 19:25:02 2024 +0000 Set HOMEgfs for module_setup in CI driver (#2321) Hotfixes to CI Bash system from updates with sourcing `detect_machine.sh` in `ush/module-setup.sh` using **HOMEgfs**. commit 2415b7b4f3e6c376aca27707510001141cc9dd92 Author: David Huber Date: Thu Feb 15 19:21:17 2024 +0000 Load default rocoto on Jet. commit eb8791ccbe684828dc529d0e553551969274fc22 Merge: 60d5ee64b 638684e0b Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Feb 15 11:56:40 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gwdev_issue_2129 commit 777d97d3a1c9f5ec5e8af3ca40a41224ec7099a1 Author: David Huber Date: Thu Feb 15 12:34:59 2024 -0600 Fixed Orion cdo version. commit ef0723503c72f295de93521c7102c43e75c47417 Author: DavidHuber Date: Thu Feb 15 16:29:32 2024 +0000 Revert UFS hash. commit 0ce8c0dbc13227884fef1c637e93616a28c68d34 Author: DavidHuber Date: Thu Feb 15 14:55:48 2024 +0000 Fix git version in Hera's gwsetup module. commit 3080a34253e8e24105bf2be72b6a872b1c072935 Author: DavidHuber Date: Wed Feb 14 20:52:34 2024 +0000 Fixed xarray version for SS/1.6.0. commit 49392dd47ff84b6586052aeae6879d7d8050b746 Author: DavidHuber Date: Wed Feb 14 20:29:41 2024 +0000 Updated GSI-Utils hash to head of develop. commit c3553f0d8e6a05c6234e7c14a179983aa44fd6f3 Merge: 4568653a6 638684e0b Author: DavidHuber Date: Wed Feb 14 20:28:14 2024 +0000 Merge remote-tracking branch 'origin/develop' into ss160 commit 4568653a67aa37c902379db628fb10f69fe7190f Author: David Huber Date: Wed Feb 14 14:22:13 2024 -0600 Reupgrade Hercules to SS/1.6.0 commit 638684e0bfcd06700cc8695f09824891a0a1eee1 Author: Kate Friedman Date: Wed Feb 14 14:55:21 2024 -0500 Remove `finddate.sh` from system (#2308) * Retire finddate.sh usage from system * Update gfs-utils hash to 7a84c88 - New hash includes removal of finddate.sh Refs #2279 commit 2b160f8470bed16c513ca4a5665e2b6d4448c50e Author: DavidHuber Date: Wed Feb 14 18:31:28 2024 +0000 Reenable METplus jobs on Hercules. commit 8f5900265a31e894060bbe9c89b262f4df0b1760 Author: DavidHuber Date: Wed Feb 14 18:30:23 2024 +0000 Update GSI hashes. commit 73bc76bfd47f2cff54df55e15d9ed8969683367d Author: henrywinterbottom-wxdev Date: Wed Feb 14 09:27:37 2024 -0700 Updates based on user request. commit e4bc674cf3b2df10e0b0dfd50a8ecb0f4f7825d8 Author: henrywinterbottom-wxdev Date: Wed Feb 14 08:03:45 2024 -0700 Corrected based on reviewer review. commit 60d5ee64bda7a16c1f2dc20c8badcd7c8fc4e592 Merge: 40f2cf6cd 1aaef05d3 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Feb 13 18:08:33 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gwdev_issue_2129 commit 03304112347a673b7a0fcc404703bb10960bc47a Merge: 929b90330 1aaef05d3 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Feb 13 17:58:12 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gfsv17_issue_2125 commit 1aaef05d317cd1eec548ef2b9842679c531cef8b Author: TerrenceMcGuinness-NOAA Date: Tue Feb 13 18:15:59 2024 -0500 Jenkins Pipeline updates for Canceling Jobs (#2307) Tuning updates for Jenkins Pipeline : - Added short circuit for all parallel runs of cases on error of any - Fixed canceling of all scheduled jobs on first case error - Added feature to save error log files to Jenkins Archive facility on fail commit 64048926627f8c9edb087de286095e3b93a214c2 Author: Rahul Mahajan Date: Tue Feb 13 14:57:37 2024 -0500 Ocean/ice product generation for GFS and GEFS (#2286) This PR does several things: 1. the model output for ocean and ice in the `COM/` directory are now named per EE2 convention for coupled model. E.g `gfs.ocean.t12z.6hr_avg.f120.nc` and `gfs.ocean.t12z.daily.f120.nc` 2. The products are generated using the `ocnicepost.fd` utility developed by @DeniseWorthen in https://github.com/NOAA-EMC/gfs-utils and converted to grib2 using example scripts provided by @GwenChen-NOAA using `wgrib2`. 3. NetCDF products on the native grid are also generated by subsetting variables from the raw model output. This is done with `xarray`. 4. updates the hash of https://github.com/NOAA-EMC/gfs-utils to include fixes in `ocnicepost.fd` 5. removes NCL related scripting that was previously used for ocean/ice interpolation and `reg2grb2` used for converting to grib2. 6. updates archive scripts to accommodate updated file names 7. removes intermediate ocean processed files such as 2D/3D/xsect data- sets 8. separate jobs are added for ocean and ice product generation. 9. removes intermediate restarts for the mediator and only saves the medi- ator restart at the end of the forecast in `COM`. 10. Increases memory for offline UPP when run at C768. The program segfaults with an OOM when memory is self allocated based on PEs by the scheduler on Hera. 11. Enables ocean/ice ensemble product generation for GEFS 12. Some minor clean-ups Fixes #935 Fixes #1317 Fixes #1864 commit 40f2cf6cd70ac94e01babc96982f37ae1b0c7e79 Author: henrywinterbottom-wxdev Date: Tue Feb 13 10:18:53 2024 -0700 Implemented ush/detect_machine.sh for host determination and removed redundant checks for expected file paths. commit 929b90330c7eb345011c2c850915e0004ca26b11 Merge: 2d08d015a 3f99f700c Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Feb 13 08:31:06 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gfsv17_issue_2125 commit 3f99f700c987526c8eb754b3f4c7b698b3e9b1dc Author: Walter Kolczynski - NOAA Date: Tue Feb 13 00:57:18 2024 -0500 Add wave post jobs to GEFS (#2292) Adds the wave post jobs for gridded and points to GEFS. Boundary point jobs are added even though the current GEFS buoy file does not contain any (tested by manually subbing in the GFS buoy file). Resolves #827 commit 842adf38087aec9f1c0bca9567e4b11d494e14c7 Author: TerrenceMcGuinness-NOAA Date: Mon Feb 12 12:50:08 2024 -0500 Added additional test cases to the pr list in Jenkins (#2306) C48mx500_3DVarAOWCDA, C96C48_hybatmDA, and C96_atmsnowDA Co-authored-by: terrance.mcguinness commit bb4ca65fe5524f76e40b97346339f1dda6680ce1 Author: CatherineThomas-NOAA <59020064+CatherineThomas-NOAA@users.noreply.github.com> Date: Mon Feb 12 14:50:41 2024 +0000 Redo v16.3 config.base changes for DA increments (#2304) Include the additional hydrometeors to the INCREMENTS_TO_ZERO and INCVARS_ZERO_STRAT variables in config.base that were modified in v16.3. Resolves: #2303 commit 061992bb6160554430cf688adf6184f01b732098 Author: TerrenceMcGuinness-NOAA Date: Sat Feb 10 01:33:36 2024 -0500 Fix Jenkins success reporting (#2302) Moving the post section back outside of main Run Experiments stage. This allows the system to correctly report the **Success** status until after all tests pass. _Had originally moved them in attempts to solve "Not an SCM GitHub Job" issue and cause the reporting to misbehave._ Also ran through Jenkins linter and updated some messaging that was incorrectly reporting system build type. commit 28ccf78073a20ba1e4d3b379d164109b54ff6708 Merge: b972f66fc 54daa31ce Author: David Huber Date: Fri Feb 9 14:00:43 2024 -0600 Merge remote-tracking branch 'emc/develop' into ss160 commit b972f66fc924790c48f38d395e7141fa78ef9d90 Author: David Huber Date: Fri Feb 9 10:47:00 2024 -0600 Fix SS versions for CI modules. commit 4b01d8eeca26c3b3d843a4b1e7b1618f281de68f Author: David Huber Date: Fri Feb 9 10:44:30 2024 -0600 Revert Hercules modules to SS/1.5.1. commit 54daa31ce0a3c23d4d74def5e54436a39a899ed4 Author: TerrenceMcGuinness-NOAA Date: Thu Feb 8 15:48:38 2024 -0500 Jenkins Declartive Pipeline for CI with gfs/gefs multibuilds (#2246) Adding top level Jenkins file for CI tests running on Jenkins Controller: - Declarative Multi-branch Pipeline (has enhanced restart capabilities on a per section bases) - Starts Pipeline from Label PR same as BASH system (for now) - Progress and restarts can me managed with CAC Login at [EPIC OAR Jenkins](https://jenkins.epic.oarcloud.noaa.gov) - Has logic for multi **gfs/gefs** system builds (arguments based on a configuration file `ci/casts/yamls/build.yaml`) - Any number of **systems** may be added by manual adding an ele- ment to the matrix in the Jenkinsfile - _It may be possible to dynamic add matrix values with a specialty plug-in_ - Currently only runs on **Orion** and **Hera** using `mterry` account Resolves #2119 Resolves #2118 commit 43429e23c12c1f2050b3a3f356abdec98dc73ea0 Author: Rahul Mahajan Date: Thu Feb 8 15:30:28 2024 -0500 Enable AO WCDA test (#1963) This PR: - adds GSI + SOCA C48 5-deg ocean 3DVar test (courtesy @guillaumevernieres) - adds a toggle to optionally disable ocnanalvrfy job. commit 2d08d015afb9c850577efd9754add16b10c45ae6 Merge: 4745d4a06 f56352874 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Feb 8 07:24:54 2024 -0700 Merge branch 'NOAA-EMC:develop' into feature/gfsv17_issue_2125 commit f56352874d6dc133a4f1181f77c8f91ca38a6416 Author: Kate Friedman Date: Wed Feb 7 15:09:12 2024 -0500 Update JGLOBAL_FORECAST for octal error (#2295) Add "10#" to ENSMEM value > 0 check to handle octal errors. commit 4745d4a06148cc6c702c647e12ede4875e3a5862 Author: henrywinterbottom-wxdev Date: Wed Feb 7 08:45:49 2024 -0700 Removed jlogfile references. commit 5894ca2bf11e8ab7910c69781a9fbe51352a7e8c Author: henrywinterbottom-wxdev Date: Wed Feb 7 08:32:16 2024 -0700 Removed dummy variable passed to perl scripts. commit dae884a7c48b4a30c1844685c3d0ef50c9b78344 Author: henrywinterbottom-wxdev Date: Wed Feb 7 08:29:49 2024 -0700 Removed jlogfile and postmsg references within gempak scripts. commit 801058ffb0cbbfe101fd5b686aed79c5bf7538c1 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Feb 7 00:41:59 2024 -0700 Consolidate `npe_node_max` (#2289) - The environment variable `npe_node_max` is removed from all files beneath `global-workflow/env`; - The environment variable `npe_node_max` is removed from `parm/config/gefs/config.ufs` and `parm/config/gfs/config.ufs`; - The environment variable `npe_node_max` is maintained only within `parm/config/gefs/config.resources` and `parm/config/gfs/config.resources`. Resolves #2133 commit b0325e0157598702cbba6c3cc09af0120881e2b4 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Feb 7 00:40:20 2024 -0700 Removes files module loading file no longer used by the GW (#2281) Removes `module-setup.csh.inc` and `module-setup.sh.inc`. The module `ush/module-setup.sh` is updated such that it now sources `ush/detect_machine.sh` to determine which supported platform the global-workflow is being execute on. Resolves #2130 commit 3e6b1e2c530bd94864cb1da1b259b325a8551db6 Merge: f4c8e003e 1ccc9896b Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Feb 6 10:43:55 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit 1ccc9896b361f2aaef8e6e7592a06ae4cfb7c491 Author: Walter Kolczynski - NOAA Date: Mon Feb 5 14:16:07 2024 -0500 Remove EnKF forecast groups (#2280) Removes the grouping of EnKF forecasts so each job only runs one forecast. Member and MEMDIR are now set at the workflow manager (rocoto) level. This change makes much of the system simpler (especially dependencies) and allows the elimination of the separate efcs scripts. Metatask names of updated jobs have been updated to make them a little less opaque by using the same name name as its constituent tasks (e.g. the forecast metatask is named `enkgdasfcst`, not `enkfgdasefcs`). Metatasks that weren't updated retain the same names as before for now. Resolves #2254 commit 9f3383fd8d8322428a40b94764a172a16872995e Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Mon Feb 5 12:15:13 2024 -0700 Updated detect_machine.sh using that from UFS WM. (#2252) Updates `ush/detect_machine.sh` to match the UFS weather-model `tests/detect_machine.sh` prepared by @BrianCurtis-NOAA Resolves #2228 commit 7d68b0b164f0ffcd56867ae4fdab67905d9589eb Author: CatherineThomas-NOAA <59020064+CatherineThomas-NOAA@users.noreply.github.com> Date: Sun Feb 4 22:02:41 2024 +0000 Update global_cycle for fractional grid (#2262) The hash for ufs_utils is updated to include the changes for fractional grid support within global_cycle. This commit also removes the hack to skip global_cycle in cycling mode with v17 physics. Resolves: #1775 Refs: ufs-community/UFS_UTILS#815 Refs: ufs-community/UFS_UTILS#891 commit ed592a6ecfabc0d0b64a6e276531b7bc5ae3b8ea Author: Kate Friedman Date: Sat Feb 3 02:55:14 2024 -0500 Retire cycle-specific FHMAX_GFS variables (#2278) This PR retires the `FHMAX_GFS_${cyc}` variables that allowed users to specify different gfs forecast lengths for each cycle. This function is no longer supported in global-workflow. The `FHMAX_GFS_*` variables will be removed and will no longer be checked to set the final `FHMAX_GFS` variable. The same forecast length will be set for every cycle. This PR also includes a small fix to add new post parm files into the `.gitignore` file. This was intended to be included in a different PR but that PR is on hold for further testing so it is being included here to get it into `develop` sooner. Resolves #2218 commit 977e2d67b268477321aa26fc56073dd373e4f979 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Fri Feb 2 07:49:09 2024 -0700 New GDASApp hash. (#2285) commit b5f2bd9ec5632c4be43004604eed0e130dfe1735 Merge: 4d667421d 0400e1f35 Author: David Huber Date: Tue Jan 30 13:55:00 2024 -0600 Merge branch 'ss160' of github.com:DavidHuber-NOAA/global-workflow into ss160 commit 0400e1f3558be8e34c1298d32e14999c9dd46f8c Author: David Huber Date: Tue Jan 30 09:57:11 2024 -0600 Fix gfs_utils Orion spack-stack env path. commit 6bbe823e729291db326d108765d3a92a99552a58 Author: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon Jan 29 21:15:30 2024 -0500 Use seq to generate the list of times, instead of a bash for-loop (#2264) I'm running a year-long forecast, which means I get a large portion of the log file dedicated to these loops. `seq ${START} ${STEP} ${STOP}` will generate a sequence going from START to STOP by STEP, including STOP if relevant. That seems to be the purpose of these loops. It will by default separate the list with newlines, but `seq -s ' ' ${START} ${STEP} ${STOP}` will separate them with spaces instead, more closely mimicing the previous behavior. I would like this to be two lines in the log, rather than a few hundred, and this may also be faster, though probably more for reasons of fewer writes to disk than because bash isn't designed for arithmetic. commit f4c8e003eb1bf264f0a66196c7cbde773c55a378 Merge: 61975cf58 d5bee3897 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Mon Jan 29 15:38:56 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit d5bee38979cde547861261d1cd150f3a61601d4b Author: Kate Friedman Date: Mon Jan 29 14:35:02 2024 -0500 Correct typos in GFS config.resources (#2267) This PR corrects some typos in `parm/config/gfs/config.resources` that were introduced in PR #2216. The esfc job was failing in tests on WCOSS2 due to insufficient memory. This lead to discovering the other typos. The esfc job completes without error after its memory is set back to `80GB` from the incorrect `8GB`. Resolves #2266 commit 81557beca9eecd878e7b25b3822e30a4276f4a16 Author: David Huber Date: Mon Jan 29 12:13:31 2024 -0600 Update monitor hash to noaa-emc with SS/1.6.0 support. commit 2238dd6ac0094ba2ff5e1027e964ef29ad33352c Author: DavidHuber Date: Mon Jan 29 13:21:30 2024 +0000 Update Orion, Hercules, S4 modulefiles. commit 6ffd94fd95f54ceb940f0c9201774ad73fbb055b Author: DavidHuber Date: Fri Jan 26 16:01:23 2024 +0000 Update GDAS hash to include SS/1.6.0 support. commit be11f85f28cf832e5fbb390fdd387f1bdecb5f82 Merge: 56b968080 04e0772d9 Author: DavidHuber Date: Fri Jan 26 15:34:24 2024 +0000 Merge branch 'ss160' of github.com:DavidHuber-NOAA/global-workflow into ss160 commit 8ff344844e28c3b2d03a0356f88b14635f318c12 Author: Rahul Mahajan Date: Fri Jan 26 10:12:18 2024 -0500 Add a yaml for snow DA testing. (#2199) - adds a new test yaml C96_atmsnowDA.yaml for 3DVar atmosphere with GSI and Land (Snow) DA with JEDI - moves a few yamls from platforms/ to yamls/ - adds ability to overwrite a previously created experiment as an addition to user input. --------- Co-authored-by: Cory Martin commit 04e0772d9d3e77ac5a24ce4570d48cb41424a08b Author: David Huber Date: Fri Jan 26 07:16:25 2024 -0600 Update ufs_utils hash for spack-stack/1.6.0 support. commit 3d44ff38c5c3324c22fc104fe3259b4ac864c6d6 Author: Barry Baker Date: Thu Jan 25 14:33:27 2024 -0500 GOCART ExtData biogenic climatology fix (#2253) Updates the ExtData for biogenic emissions to be climatology rather than for current time. Fixes an issue which will crash by default for other years. commit 66f58b8ab1a9524d6be95271f27a06c2f32e5f78 Author: Guillaume Vernieres Date: Thu Jan 25 13:16:41 2024 -0500 Added missing container case in gfs/config.resources (#2258) fixes #2257 commit 553b4f2e74ef610115436b75f7f6df100babd8dd Author: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Thu Jan 25 13:00:45 2024 -0500 Fix post parm links (#2243) Change symbolic links under parm/post with the latest version of develop branch from UPP repository and enable MERRA2 aerosol fields. Resolves #2259 commit 4d667421d5eefea2347ea1dd8097e39e167d7201 Merge: 6c058039e afa09e356 Author: David Huber Date: Thu Jan 25 07:49:08 2024 -0600 Merge branch 'ss160' of github.com:DavidHuber-NOAA/global-workflow into ss160 commit 6c058039e209c67ea477d37d2d6f76b7a2fa68ac Author: David Huber Date: Thu Jan 25 07:48:42 2024 -0600 Fix wgrib2/gfs_utils on Hercules. commit ee6f536ea0228c60f5a8bec4037cd6f7ea63b816 Author: Kate Friedman Date: Thu Jan 25 07:43:13 2024 -0500 Update GFS version to v16.3.13 in index.rst (#2256) GFSv16.3.13 WAFS update was implemented Refs #2013 commit 2445d44d0d66f35512080b0bd5867501660793bb Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu Jan 25 06:17:11 2024 -0500 Simplify and extend load_ufsda_modules to Hercules (#2245) GDASApp jobs do not run on Hercules because `ush/load_ufsda_modules.sh` does not include logic to load the appropriate GDASApp modules on Hercules. This PR extends `load_ufsda_modules.sh` functionality to Hercules, thereby enabling GDASApp jobs to run on Hercules. Resolves #2244 commit 56b9680803f109720f6439276a0e5783a9c49352 Author: DavidHuber Date: Wed Jan 24 19:47:34 2024 +0000 Update hashes (revert WCOSS2 modules). commit afa09e356503f1befc162df9a79dc9ce7414dc22 Author: DavidHuber Date: Wed Jan 24 18:59:40 2024 +0000 New (cleaner history) gdas hash. commit a9eaec23d5103ea766342ff81d77df8e0f6d9a58 Author: DavidHuber Date: Wed Jan 24 18:52:27 2024 +0000 Update gdasapp to include ss/1.6.0 support. commit 5ef8eb24eeaeaff9c9a03767d929f2114fd4840f Merge: 4c463548b e400068a2 Author: DavidHuber Date: Wed Jan 24 17:08:54 2024 +0000 Merge branch 'ss160' of github.com:DavidHuber-NOAA/global-workflow into ss160 commit 4c463548b0c38f36c13c01716fa0b1e91544e440 Author: DavidHuber Date: Wed Jan 24 17:05:12 2024 +0000 Reenable verif-global support commit f775755df5f1579edfafbce9a7b47034907d023f Author: DavidHuber Date: Wed Jan 24 16:59:10 2024 +0000 Assign fcsthrs for awips_g2 job. commit e400068a2951e5fa3b130369861b4a60ece01491 Author: David Huber Date: Mon Jan 22 15:01:07 2024 -0600 More gsi-addon path fixes. commit f663d4786f226f8164d348d403e8d105cc3d801b Author: David Huber Date: Mon Jan 22 14:41:59 2024 -0600 Fix gsi-addon paths for hercules, orion, and S4. commit e304bbeb364067e411fb50801796d000b44d9147 Author: DavidHuber Date: Mon Jan 22 18:59:34 2024 +0000 Better optimize build jobs (more ufs jobs). commit ccc6e2d445d4c2e2f44fb907c7bc972b1e69f6ff Author: DavidHuber Date: Mon Jan 22 18:56:18 2024 +0000 Reenable verif-global. #2195 commit 3ef3411f856b0c5a9cf51686f3a51a2252596690 Merge: 4365f63e5 f4d187f4e Author: DavidHuber Date: Mon Jan 22 18:39:10 2024 +0000 Merge remote-tracking branch 'origin/develop' into ss160 commit 4365f63e54e2ddb9b88e768a6e88a92504b5d482 Author: DavidHuber Date: Mon Jan 22 18:37:25 2024 +0000 Corrected the SS env. name in the version files. #2195 commit f4d187f4e45fe89583d18987d68a883490827104 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Jan 22 12:28:28 2024 -0500 Converts obsproc to obsprep in prepoceanobs config file (#2236) Converts obsproc to obsprep in prepoceanobs config file as a compliment to mutually depended GDASApp PR NOAA-EMC/GDASApp#858 The motivations are explained in refs NOAA-EMC/GDASApp#857 commit 9a09d3082208ad206cf6e7103a53bfb7c4946f4a Author: DavidHuber Date: Fri Jan 19 21:23:50 2024 +0000 Corrected gsi-addon-dev spelling. commit 21ff6458aac9372b26cc223f6a114953a137067e Author: DavidHuber Date: Fri Jan 19 21:11:34 2024 +0000 Update modulefiles, submodules to spack-stack 1.6.0. #2195 commit d4c55d1011f8b0385d25b62ac04710837ed8413e Author: Kate Friedman Date: Fri Jan 19 15:43:37 2024 -0500 Update typing hint for WCOSS version of python (#2238) The typing hint `typing.List` was deprecated with python 3.9 in favor of using the primitive `list[str]`, but the functional version of python on WCOSS2 is <3.9, causing `setup_xml.py` to fail there. This replaces `list[str]` as a typing hint with the deprecated form until the supported version on WCOSS2 is >=3.9. commit 61975cf583169525febd8117999017d85c85b644 Merge: 1344313c4 491928712 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Fri Jan 19 08:38:17 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit 491928712ae1dabac62750450c9cad8f538c2a3e Author: Barry Baker Date: Thu Jan 18 22:31:27 2024 -0500 GOCART Emission updates for GEFSv13 and GDAS (#2201) This PR addresses several things needed for more recent simulations using GOCART2G as well as preparing for the GEFSv13 30 year run. The main updates are: - Update CEDS to use monthly emission files instead of daily. This will drastically reduce the number of files needed. No science change - Update biogenic MEGAN inputs to use a climatology rather than the offline biogenic previously used. This is needed to deal with simulations where the current dataset is not available. - Update volcanic SO4 emissions to use degassing emissions only. This is to support the need for more recent simulations where data is not available. commit 13d25cfc3614de978bfd4b7f273d1f13cb820878 Author: Kate Friedman Date: Thu Jan 18 22:29:43 2024 -0500 Add `POSTAMBLE_CMD` into preamble postamble (#2235) This PR adds the ability to run a command at the end of jobs via the preamble's postamble function. A new command can be set via `POSTAMBLE_CMD` and will be invoked at the end of jobs. Users can add the command to the top of an env file to have every job run it or it can be placed within a job if-block in the env file to run for just that job. Resolves #1145 commit 7759163c668eb6ccc11dc1ecd39c0dc5d433cdc1 Author: Rahul Mahajan Date: Thu Jan 18 01:13:49 2024 -0500 Add option to create WGNE atmosphere products (#2233) Adds option to create WGNE products for the atmosphere. Resolves #1951 Resolves #2226 commit d95ed8588379b2c94d771f9aa680c445d6cf6c5a Author: Rahul Mahajan Date: Wed Jan 17 18:04:56 2024 -0500 Use ufs.configure, model_configure, MOM_input, data_table, and ice_in templates from UFS-weather-model (#2051) This PR: - links `ufs.configure.*.IN`, `model_configure.IN`, `MOM_input_${OCNRES}.in`, `MOM6_data_table.IN`, and `ice_in.IN` from ufs-weather-model into the global-workflow `parm/ufs` directory - prepares local variables for use in the templates in the respective functions for FV3, MOM6, and CICE6 - uses `atparse.bash` to render these templates into fully formed namelists - Work was performed by @DeniseWorthen in the ufs-weather-model to templatize several variables that are hard-wired in the ufs-weather-model for CICE. See ufs-community/ufs-weather-model/#2010 commit 44a66dd508aac1f15e56377bb04eb1af6832fe5b Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Wed Jan 17 13:52:09 2024 -0500 Update gdas.cd hash to use gsibec tag 1.1.3 (#2231) (#2234) commit 9046d97b4cc0e0132633054f880b60422fd3b1c7 Author: Walter Kolczynski - NOAA Date: Wed Jan 17 10:19:18 2024 -0500 Add basic atmos products for GEFS and refactor resources (#2216) * Add basic atmos products for GEFS Adds basic atmosphere products for GEFS members (no mean or spread). To facilitate the addition of GEFS parameter lists, the existing GFS lists are renamed. They are also relocated to `parm/products/` direc tory instead of `parm/post/`. GEFS v12 uses different parameter lists for different resolutions, but for this implementation, the 0p25 lists are used for all resolutions. However, to hedge against the final con- figuration, all of the GEFS parameter lists have been added to parm. Implementation of different parameter lists for each resolution will take additional refactoring of the atmos_products job, as it currently assumes all resolutions use the same lists. The new GEFS rocoto task is implented as two loops of metatasks (made possible by PR #2189). The member is set at the rocoto level, so the setting in `config.base` had to be updated to accept a pass-through. The generation of a forecast hour list is moved up to its own function in `rocoto.tasks`, separate from the post groups which are not used. This can be used as a model for future metatasks (or refactoring of old ones). `rocoto_viewer.py` does function with the nested metatasks, though only one level of folding is available and the metatask name is that of the lower metatask (though it encompasses the entire outer metatask). Additionally, the GEFS `config.resources` had diverged from the GFS version, which included not having a section for the atm products job. This led to the refactoring of the GFS `config.resources`, including switching to using a `case` statement instead of sequential `elif`. This refactored script was then copied over to GEFS, replacing the old one, with all jobs not currently implemented for GEFS removed (except wave post, whose inclusion is immenent). New blocks can be copied over from GFS as they are added. Resolves #823 commit fbba174c8b0a2e2d1c669ae3c74bec45fa995d6d Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Jan 16 14:05:48 2024 -0500 Update GDASApp (gdas.cd) hash (#2225) GDASApp now uses gitsubmodules commit 1344313c4fac78ba8d60fb0274c83395891af4ee Merge: 4b5889161 dddd83796 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Jan 16 11:13:59 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit dddd83796c8cd52f6264f73282fc68eb7857a475 Author: Rahul Mahajan Date: Tue Jan 16 12:17:19 2024 -0500 Fix ocean resolution for the S2SWA test (#2223) commit 83edaf145382fe15e53f0af8937570488ef5440d Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Jan 16 11:07:02 2024 -0500 Apply fixes to archiving jobs (#2221) Add checks for potentially missing log/data files and update log names for archiving. Missing sflux index files are also added to the products script. Resolves #2076 commit c59047614c29f6ec15a4d4a6fa1855929287debd Author: Rahul Mahajan Date: Fri Jan 12 19:21:02 2024 -0500 Update hash to ufs-weather-model. The noahmptable.tbl was reorganized, so update link_workflow.sh to use the same one used in UFSWM RT (#2219) commit c041968e165c07da785376f1441374687b55d6cc Author: Kate Friedman Date: Fri Jan 12 12:09:35 2024 -0500 Add ocean resolution to setup_expt invocation and retire/reduce COMROT/ROTDIR usage (#2214) Two series of updates: 1) Update setup scripts to now allow users to provide ocean resolution 2) Housekeeping to retire the `COMROT` variable, replacing it with other variables as needed, and reduce the `ROTDIR` variable usage. Both updates change options for the workflow setup API. Refs #2061 commit 997f97816493d9ed0242e169b6dcf84e5c9338d6 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri Jan 12 10:46:36 2024 -0500 Allow use of ocean obs prep in WCDA cycling and remove R2D2 (#2215) Enables use of ocean obs prep task in WCDA cycling and removes R2D2 from same. Runs task gdasprepoceanobs before gdasocnanalprep -- obtains ocean data nc4 files from DMPDIR, processes them into IODA format and copies them to COM_OBS. Replaces the current R2D2 processing. commit 12a5bb192ab6282d44c008c06dc14947abd37249 Merge: 4cb580201 6492c2da5 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Jan 12 09:26:27 2024 -0500 Merge pull request #2217 from DavidHuber-NOAA/update/versions Update and clean up version and module files commit 6492c2da5f49bd31575d0bef5278c9a7f8ba3412 Author: David Huber Date: Thu Jan 11 11:49:08 2024 -0600 Update orion module/version files for met/metplus #2123 commit 94c9937f0bff380b0ebd6acdcfd2509e1ae99389 Author: DavidHuber Date: Thu Jan 11 17:42:53 2024 +0000 Comment met/metplus out from Hera modulefile. #2123 commit 8c32f8b7d00bba6e3e954f149e6548fb27713a3c Merge: a65e4c675 4cb580201 Author: David Huber Date: Thu Jan 11 11:34:44 2024 -0600 Merge branch 'develop' of github.com:noaa-emc/global-workflow into develop commit a65e4c675f21dbe72198d263e85e894e62b41e13 Author: David Huber Date: Thu Jan 11 11:34:19 2024 -0600 Initial update of version/module files #2123 commit 4b5889161abb10f131a0d398336a6f070b2b7d3c Merge: a75e73e2c 4cb580201 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Wed Jan 10 10:15:48 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit 4cb580201af68c1c0e2ae19faf0727dcbbe43b4d Author: souopgui Date: Wed Jan 10 08:30:22 2024 -0600 Fix OpenMP over-allocation of resources in exglobal_atmos_products.sh when running MPMD tasks (#2212) Fix OpenMP over-allocation of resources running MPMD tasks Co-authored-by: Innocent Souopgui commit b056b531faee6929687cb8a588ffafa1a66426fb Author: TerrenceMcGuinness-NOAA Date: Mon Jan 8 17:28:05 2024 -0500 Add Hercules as valid machine in CI scripts (#2207) Few updates to CI scripts to include names for hercules that where missed the first time. commit 6574d29a8c26b0695614874c344bccc5182363f4 Author: Rahul Mahajan Date: Mon Jan 8 17:25:47 2024 -0500 Fix invalid GH action and restart file name (#2210) Resolves a typo that leads to an invalid workflow yaml and fixes the restart filename in restart detection. Resolves #2205 commit 69605eac299df381ea9e0e329654487e26380ff5 Author: Rahul Mahajan Date: Mon Jan 8 17:00:28 2024 -0500 Stop attempting to comment link to RTD for non-PRs (#2209) Adds a check so comments with a link to documentation are only generated for PRs. commit 4e160a895bfb31c281e21557dd86c13954a1a967 Author: Rahul Mahajan Date: Mon Jan 8 13:10:15 2024 -0500 Enable UPP for GOES processing (#2203) Wnables the creation of special master grib2 files from UPP for GOES processing commit c15875b6dbf685327af9316ee43b3d01f0fc815e Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Jan 8 09:56:06 2024 -0500 Port cycling to Hercules (#2196) Adds cycled support for Hercules (excluding gsi-monitor). Partially resolves #1588 GSI monitoring is disabled on Hercules due to missing Perl modules. That will be enabled in a later PR. commit ef6827dd6abdab2996d1e19f9e0ff5d3071e0fdd Author: Walter Kolczynski - NOAA Date: Mon Jan 8 09:43:12 2024 -0500 Refactor rocoto task XML creation (#2189) Refactors the rocoto task generation to be recursive. This will allow nested metatasks to loop over multiple variables, which is needed for GEFS product generation. As part of this refactor, there is no longer separate arguments to designate metatasks. Instead, task dicts can include a nested 'task_dict' as well as a 'var_dict' containing the variables to loop over. The nested task dict can then either have another layer, or be the innermost task. To accommodate the new recursive nature, some defaults that were previously defined in create_wf_task() had to be pushed down into the function that creates the innermost task. Also, former keywords have been absorbed by the task dict. Refs #823 Refs #827 commit 2b81cfac16f103fb29b3aeb9748941787abf7287 Author: Walter Kolczynski - NOAA Date: Mon Jan 8 09:41:03 2024 -0500 Update fix versions (#2198) Updates fix versions for a few components: - Update cice and mom6 versions to support C96/1p00 marine - Update wave to change betamax setting for glo_025 waves Resolves #2004 Resolves #2107 commit a75e73e2c1942f9e0c5da324a9e62edd931fc3fa Merge: 5adc47b72 9d901dbbf Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Jan 2 12:44:40 2024 -0700 Merge branch 'NOAA-EMC:develop' into develop commit 5adc47b727306dc58a4ce99f8fc805debe2a3e9c Merge: a3ce9db20 a3c50998d Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Dec 26 12:40:08 2023 -0700 Merge branch 'NOAA-EMC:develop' into develop commit a3ce9db20c6ff3444bd52c781e884af61a45db4e Merge: 2b1a8e3eb a81da33e8 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Tue Dec 19 09:12:48 2023 -0700 Merge branch 'NOAA-EMC:develop' into develop commit 2b1a8e3eb32ecffcd3eaa5f87d10e68cef881b22 Merge: 4562dec4f 9505cb4ab Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Fri Dec 15 09:50:35 2023 -0700 Merge branch 'NOAA-EMC:develop' into develop commit 4562dec4f964e03ce844452a1e5903fd8e4a79f8 Merge: 9f7eebaf6 29d34172a Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Mon Dec 11 12:10:25 2023 -0700 Merge pull request #34 from NOAA-EMC/develop Sync develop branch with EMC develop commit 07cfc3b8dfa58372f75c3630add26606d66e3447 Author: kayee.wong Date: Thu Aug 1 04:40:34 2024 +0000 Added alpha_fd coefficient for Beljaars TOFD in GSL drag bug fix Update INFO commit 768d7a280decea730112c32c8567d27a432c83b8 Author: kayeekayee Date: Fri May 17 08:50:10 2024 -0600 Temporary fix for Rocky8 (dev) (#59) * temporary fix for Rocky8 * use temporary gfs_utils from KaYee * replace gfs_utils.fd pointer to KaYee * increase wallclock time to run 120hrs * increase more wallclock time to run 120hrs commit afe0a7dd47c55a1956e036b4ef0ec4de4edcab0e Merge: db6a85e0c 3a7409359 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Thu Mar 28 18:50:46 2024 -0600 Merge pull request #52 from jderrico-noaa/gsl_ufs_dev update ufs_model.fd and ufs_utils.fd pointers for rocky 8 changes commit 3a7409359316c1b891b03209bf347b45ff113dbf Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Thu Mar 28 18:40:26 2024 -0600 update ufs_model.fd pointer for rocky 8 changes commit db6a85e0ce36cec28714a4c9d6e13565253cf7bb Author: jderrico-noaa Date: Tue Mar 19 19:33:28 2024 +0000 29Jan ufs_model.fd, 29Jan FV3 with C3 files commit de7b382c4b259d99d39e8857cbcee7efe64c1956 Author: jderrico-noaa Date: Mon Mar 18 16:23:05 2024 +0000 update pointer for atmos_cubed_sphere to Feb 1 hash commit 0fc27835205aaf57bdba228b1769e0ac7b37712e Merge: b2c8ef812 db06f7c57 Author: jderrico-noaa Date: Thu Mar 14 00:17:24 2024 +0000 Merge branch 'gsl_ufs_dev' of https://github.com/NOAA-GSL/global-workflow into gsl_ufs_dev commit b2c8ef81229b5e9b8e7592cb12c2f3e8e3179d92 Author: jderrico-noaa Date: Wed Mar 13 23:51:45 2024 +0000 ccpp pointer updates to framework and physics commit 484a18df8c9022190c8900c80e40507a6771e314 Author: jderrico-noaa Date: Wed Mar 13 23:43:18 2024 +0000 ccpp pointer update in ufs_model.fd/FV3 commit db06f7c57d4cfc863352a4613c8260b0dffd9afe Merge: 579f90c1e 2dbd12a69 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Wed Mar 13 15:55:48 2024 -0600 Merge pull request #43 from kayeekayee/gsl_ufs_dev update GSL C3_MYNN files and change dt_inner=75 commit 2dbd12a695c4349071ee8470e597540e71bc0292 Author: kayee.wong Date: Wed Mar 13 03:48:51 2024 +0000 update GSL C3_MYNN files commit 579f90c1e0e2896710046c1885f68560ea435fa6 Author: jderrico-noaa Date: Thu Mar 7 19:20:46 2024 +0000 update ufs_model.fd submodule pointer commit 2f2622d68eb8444afde9c1ddad470cfee1b63b99 Author: jderrico-noaa Date: Thu Mar 7 19:15:23 2024 +0000 update ufs_model.fd submod pointer commit 706a0c52bb11af78e016014550ebd6847cc0ee19 Author: jderrico-noaa Date: Thu Mar 7 19:12:35 2024 +0000 update ufs_model.fd/FV3 path commit 352f188f095e19442ade1f3fd167ff2fed501cd2 Merge: 5a8edc766 96545dcb6 Author: jderrico-noaa Date: Thu Mar 7 17:58:38 2024 +0000 update ufs model pointer commit 5a8edc766f2f4d3e12c692069d46c02fd766c354 Author: jderrico-noaa Date: Thu Mar 7 17:42:00 2024 +0000 update FV3 and UPP commit 96545dcb63e3f8f7dfc036961d818db15fa1a003 Author: jderrico-noaa Date: Wed Mar 6 10:05:39 2024 -0700 update pointer for ufs_model.fd commit 25c026ef03a8d8c0db0b7368d2836f0b2e866eae Author: jderrico-noaa Date: Thu Feb 29 20:35:11 2024 +0000 update ufs_model pointer commit a28617a951c46b765aa996bfe4d28b554ec4e0a4 Author: jderrico-noaa Date: Thu Feb 22 06:16:26 2024 +0000 removed unneeded gsl directories commit 6fb4f90e8572e98c977a1d2ab385f033111f3ea7 Author: jderrico-noaa Date: Thu Feb 22 06:08:13 2024 +0000 update ufs_utils.fd pointer commit 9264f0c09239d046c5cd862d807e9b82f51dc3bd Author: jderrico-noaa Date: Wed Feb 21 19:33:26 2024 +0000 update .gitmodules file commit f8edfa966147506f2c207728039e3a736cb95415 Author: jderrico-noaa Date: Wed Feb 21 19:30:47 2024 +0000 update pointer to ufs_utils.fd commit 5e0d2ab02d58e6a7a40db55a149a93008b28aa8b Author: jderrico-noaa Date: Wed Feb 21 19:25:52 2024 +0000 update pointer to ufs_model.fd commit ebc9e1d02987a1c6aa8cabedf2323642748fab3c Merge: e7a81511e 50cb1e6f0 Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Thu Feb 15 13:40:33 2024 -0700 Merge pull request #40 from kayeekayee/gsl_ufs_dev Merge to 2024 Jan 12 NOAA-EMC/develop and update to 2024 Jan 29 UFS commit 50cb1e6f0c661e4c6e2ef0be4527cce58379b2c9 Author: kayee.wong Date: Thu Feb 15 20:30:34 2024 +0000 Add pygraf workflow. commit 38b726125d49cff6cae4c0e5fff2438fc33143c5 Author: kayee.wong Date: Wed Feb 14 17:43:15 2024 +0000 Add double quote for the arguments when calling setup_expt.py. commit 053f2025fb0b0679c7d4f84958973c1534ec050c Author: kayee.wong Date: Tue Feb 13 23:57:06 2024 +0000 more fix. commit 6f80ea2edc5444e275a79b371d02b6e98e963662 Author: kayee.wong Date: Tue Feb 13 23:50:01 2024 +0000 more bug fix. commit 56e283f1f666a38a4a3b30e1528e96eeb5c622e7 Author: kayee.wong Date: Tue Feb 13 23:40:02 2024 +0000 Minor bug fix. commit 2dcfed06ff6789eb77cf92e22b80f5475923fafc Author: kayee.wong Date: Tue Feb 13 23:19:03 2024 +0000 Update parameter for c3 case Add c3 and mynn template commit cc46b19ccc7cdb54878340eff79dda9e747abdf7 Author: kayee.wong Date: Tue Feb 13 20:51:23 2024 +0000 Update INFO. Add c3 SDF in the build. commit a444ed48a23f24724853036e522b4437bf412c59 Author: kayee.wong Date: Tue Feb 13 18:42:33 2024 +0000 Update to UFS 2024 Jan 29 version. commit 88595707c7521cdce37ae1cf78720a7827242b24 Author: kayee.wong Date: Tue Feb 13 18:16:46 2024 +0000 Minor bug fix. commit baa0e9f10b132098d5134efaad712a51ebc26b83 Author: kayee.wong Date: Tue Feb 13 17:59:27 2024 +0000 Update parameters for setup_expt.py in p8_ugwpv1.sh to resdetatmos and comroot. commit 5875f06903f82a47fafb05f89f840e3b099d18d8 Author: kayee.wong Date: Tue Feb 13 17:51:11 2024 +0000 Remove old gsl SDFs. Remove 'rrtmg_lw_pre' from C3 and MYNN SDFs. commit 9e0d1342f4e1edce96c9b2baeec55c2cffb964cd Author: kayee.wong Date: Thu Feb 8 22:14:01 2024 +0000 Merge to 2024 Jan 12 NOAA-EMC/develop. Squashed commit of the following: commit c59047614c29f6ec15a4d4a6fa1855929287debd Author: Rahul Mahajan Date: Fri Jan 12 19:21:02 2024 -0500 Update hash to ufs-weather-model. The noahmptable.tbl was reorganized, so update link_workflow.sh to use the same one used in UFSWM RT (#2219) commit c041968e165c07da785376f1441374687b55d6cc Author: Kate Friedman Date: Fri Jan 12 12:09:35 2024 -0500 Add ocean resolution to setup_expt invocation and retire/reduce COMROT/ROTDIR usage (#2214) Two series of updates: 1) Update setup scripts to now allow users to provide ocean resolution 2) Housekeeping to retire the `COMROT` variable, replacing it with other variables as needed, and reduce the `ROTDIR` variable usage. Both updates change options for the workflow setup API. Refs #2061 commit 997f97816493d9ed0242e169b6dcf84e5c9338d6 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri Jan 12 10:46:36 2024 -0500 Allow use of ocean obs prep in WCDA cycling and remove R2D2 (#2215) Enables use of ocean obs prep task in WCDA cycling and removes R2D2 from same. Runs task gdasprepoceanobs before gdasocnanalprep -- obtains ocean data nc4 files from DMPDIR, processes them into IODA format and copies them to COM_OBS. Replaces the current R2D2 processing. commit 12a5bb192ab6282d44c008c06dc14947abd37249 Merge: 4cb58020 6492c2da Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Jan 12 09:26:27 2024 -0500 Merge pull request #2217 from DavidHuber-NOAA/update/versions Update and clean up version and module files commit 6492c2da5f49bd31575d0bef5278c9a7f8ba3412 Author: David Huber Date: Thu Jan 11 11:49:08 2024 -0600 Update orion module/version files for met/metplus #2123 commit 94c9937f0bff380b0ebd6acdcfd2509e1ae99389 Author: DavidHuber Date: Thu Jan 11 17:42:53 2024 +0000 Comment met/metplus out from Hera modulefile. #2123 commit 8c32f8b7d00bba6e3e954f149e6548fb27713a3c Merge: a65e4c67 4cb58020 Author: David Huber Date: Thu Jan 11 11:34:44 2024 -0600 Merge branch 'develop' of github.com:noaa-emc/global-workflow into develop commit a65e4c675f21dbe72198d263e85e894e62b41e13 Author: David Huber Date: Thu Jan 11 11:34:19 2024 -0600 Initial update of version/module files #2123 commit 4cb580201af68c1c0e2ae19faf0727dcbbe43b4d Author: souopgui Date: Wed Jan 10 08:30:22 2024 -0600 Fix OpenMP over-allocation of resources in exglobal_atmos_products.sh when running MPMD tasks (#2212) Fix OpenMP over-allocation of resources running MPMD tasks Co-authored-by: Innocent Souopgui commit b056b531faee6929687cb8a588ffafa1a66426fb Author: TerrenceMcGuinness-NOAA Date: Mon Jan 8 17:28:05 2024 -0500 Add Hercules as valid machine in CI scripts (#2207) Few updates to CI scripts to include names for hercules that where missed the first time. commit 6574d29a8c26b0695614874c344bccc5182363f4 Author: Rahul Mahajan Date: Mon Jan 8 17:25:47 2024 -0500 Fix invalid GH action and restart file name (#2210) Resolves a typo that leads to an invalid workflow yaml and fixes the restart filename in restart detection. Resolves #2205 commit 69605eac299df381ea9e0e329654487e26380ff5 Author: Rahul Mahajan Date: Mon Jan 8 17:00:28 2024 -0500 Stop attempting to comment link to RTD for non-PRs (#2209) Adds a check so comments with a link to documentation are only generated for PRs. commit 4e160a895bfb31c281e21557dd86c13954a1a967 Author: Rahul Mahajan Date: Mon Jan 8 13:10:15 2024 -0500 Enable UPP for GOES processing (#2203) Wnables the creation of special master grib2 files from UPP for GOES processing commit c15875b6dbf685327af9316ee43b3d01f0fc815e Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Jan 8 09:56:06 2024 -0500 Port cycling to Hercules (#2196) Adds cycled support for Hercules (excluding gsi-monitor). Partially resolves #1588 GSI monitoring is disabled on Hercules due to missing Perl modules. That will be enabled in a later PR. commit ef6827dd6abdab2996d1e19f9e0ff5d3071e0fdd Author: Walter Kolczynski - NOAA Date: Mon Jan 8 09:43:12 2024 -0500 Refactor rocoto task XML creation (#2189) Refactors the rocoto task generation to be recursive. This will allow nested metatasks to loop over multiple variables, which is needed for GEFS product generation. As part of this refactor, there is no longer separate arguments to designate metatasks. Instead, task dicts can include a nested 'task_dict' as well as a 'var_dict' containing the variables to loop over. The nested task dict can then either have another layer, or be the innermost task. To accommodate the new recursive nature, some defaults that were previously defined in create_wf_task() had to be pushed down into the function that creates the innermost task. Also, former keywords have been absorbed by the task dict. Refs #823 Refs #827 commit 2b81cfac16f103fb29b3aeb9748941787abf7287 Author: Walter Kolczynski - NOAA Date: Mon Jan 8 09:41:03 2024 -0500 Update fix versions (#2198) Updates fix versions for a few components: - Update cice and mom6 versions to support C96/1p00 marine - Update wave to change betamax setting for glo_025 waves Resolves #2004 Resolves #2107 commit e7a81511e37f86e881da020e06b95990b470d952 Merge: af47b77c7 75ad3754f Author: Janet Derrico <143837053+jderrico-noaa@users.noreply.github.com> Date: Thu Feb 1 13:14:02 2024 -0700 Merge pull request #37 from jderrico-noaa/gsl_ufs_dev Add GSL archive script and correct typos/fixed paths commit 75ad3754f8bef5411c2570b5e392cd08e95cb6cb Author: jderrico-noaa Date: Thu Feb 1 20:00:52 2024 +0000 adding consistent [[ ]] for if statements commit 67b99668c82a5fd8c42479b9b1bfe8b0bad0be25 Author: Judy.K.Henderson Date: Thu Feb 1 19:37:47 2024 +0000 Updated HOMEgfs in GSL XML templates commit 4d3719c086e7907a6eeff03112042d392e0d8c5e Author: Judy.K.Henderson Date: Thu Feb 1 17:27:39 2024 +0000 Correct syntax errors in GSL scripts Add new GSL archive script for archiving grib2 and ICs, but no netcdf files commit 4309dd0b3b2d5625e7e1740d7cd3e39aacd5bc29 Author: Judy.K.Henderson Date: Mon Jan 29 18:05:45 2024 +0000 Add GSL diag tables to parm/ufs/fv3 Update GSL template for hera Create EMC and GSL versions of files under workflow/rocoto - tasks.py, workflow_tasks.py commit af47b77c7ee59a11c798995b4362b57e9096b090 Author: Judy.K.Henderson Date: Sat Jan 27 02:07:43 2024 +0000 Create GSL version of archive script commit 529d9f71f97b6e643e76a53bc9871901ae861faf Author: Judy.K.Henderson Date: Sat Jan 27 01:37:09 2024 +0000 Create GSL version of tracker.sh - this is a placeholder with changes from last year's HFIP experiment; will likely need to be updated in the future commit 8457e12c313bee602265b863129734354b019271 Author: Judy.K.Henderson Date: Sat Jan 27 01:27:42 2024 +0000 Link config.base.emc.dyn_hera to config.base.emc.dyn commit 7a05f5bd947944d8c3be828aeef9cc03bf9e073a Author: Judy.K.Henderson Date: Sat Jan 27 01:22:54 2024 +0000 Create GSL version of hpssarch_gen.sh - assume we only run cold starts - archive only 0p25 grib2 files (no 0p50 opr 1p00) - assume no pgrb2b or flux files are created so no need to archive to HPSS commit 98f5d6b16437e2a340bf16f83187e389a53f8bf0 Author: Judy.K.Henderson Date: Sat Jan 27 00:24:06 2024 +0000 Update workflow directory - add GSL template for jet (based on last year's experiment) - create EMC and GSL versions of yaml files under hosts; defaults point to GSL files commit 38a7e5629ceeb23d399643a021e9a0a88468a07c Author: Judy.K.Henderson Date: Thu Jan 25 18:40:37 2024 +0000 Update atmos_products configuration file for GSL - set downset to 1 so pgrb2b files are not created - set FLXGF to "NO" so interpolated sflux.1p00 files are not created commit fe8a953658d092ce2b597e14f31678624606fd8a Author: Judy.K.Henderson Date: Thu Jan 25 17:02:25 2024 +0000 Update nodes for gfsfcst task in GSL template for hera to match default configuration in config.ufs (12x12, 2 threads, 1 write group, 40 write tasks ==> 56 nodes) Increase walltime to 4:10 for gfsfcst task commit 9d85b0f6d50e8ed142557fcb87c89d2e5d63c617 Author: Judy.K.Henderson Date: Tue Jan 23 19:08:52 2024 +0000 Added default location for PTMP/STMP in workflow/hosts/hera.yaml Added GSL XML template for hera commit 1cf317d327fae78c5469712c9e5a6aa1ffa4b23b Author: Judy.K.Henderson Date: Wed Jan 17 22:33:13 2024 +0000 Add sjet partition Make syntax consistent in "if" statements in config.resources commit 2755e203751f50113849b06769173285e093290b Author: Judy.K.Henderson Date: Wed Jan 17 22:32:26 2024 +0000 Update configuration files for GSL - create Hera and Jet versions of config.base.emc.dyn - correct typo in config.fcst - create different versions of config.ufs; default is 12x12, 2 threads, 1 write group/40 write tasks (56 nodes) commit 3c0c126a376af31866a93aef4cdd0b4145150c58 Author: Judy.K.Henderson Date: Tue Jan 16 17:32:25 2024 +0000 Add script for remapping 1/4 degree grib2 grids to other domains commit f217d4ed9a500e9a1bdcc17548729d972a1763ac Author: Judy.K.Henderson Date: Tue Jan 16 16:46:25 2024 +0000 Update link script for ufs_utils.fd commit 5b21b31900955013b4e8106d3ae906b9da93b361 Author: Judy.K.Henderson Date: Tue Jan 16 16:45:25 2024 +0000 Add GSL archive scripts for initial conditions commit abb88baf9dd536a3b2ea1e24eaa99cbfe85af799 Author: Judy.K.Henderson Date: Tue Jan 16 16:42:17 2024 +0000 Move configuration files for getic and init from jobs/rocoto to parm/config/gfs commit 45b235180719ab79d2514f0317207fbebfb8aedd Author: Judy.K.Henderson Date: Sun Jan 14 03:21:15 2024 +0000 Add suite definition file for v17p8_ugwpv1_c3 to sorc/ufs_model.fd_gsl commit 147b1fce99254dcb602c333cc559feaa9a396e81 Author: Judy.K.Henderson Date: Sun Jan 14 01:57:22 2024 +0000 Add getic and init tasks to workflow to create initial conditions in realtime commit 4e4e50803d95566e1c7967cf4cfa575391d77f25 Author: Judy.K.Henderson Date: Fri Jan 12 00:44:59 2024 +0000 Change default HPSS_PROJECT to fim Change restart_interval_gfs to -1 so no files are written ro RERUN_RESTART directory commit 791d7a27c6b12f07d9c12ce491338e3da59eb1d8 Author: Judy.K.Henderson Date: Thu Jan 11 23:34:36 2024 +0000 Add namelist parameter, nord_tr, for GSL suites commit c4a41de7ebcda2f80ce69ac94bd2b3a6f5d04ed5 Author: Judy.K.Henderson Date: Thu Jan 11 23:31:22 2024 +0000 Add changes for running v17p8_mynn - new field table, field_table_thompson_aero_tke_progsigma - updated namelist parameters in config.fcst commit 982a1f02e3b880be43f4ae8a3f0ffbb34c056aea Author: Judy.K.Henderson Date: Tue Jan 9 02:26:22 2024 +0000 Add experiment setup script for p8_ugwpv1 commit c5a3697d22fdbb02bb80ddffee2629dddc10c702 Author: Judy.K.Henderson Date: Tue Jan 9 02:19:13 2024 +0000 Add memory report to srun command in env/HERA.env commit ece7e516ca65ec0240899e7d84321310a6887595 Author: Judy.K.Henderson Date: Tue Jan 9 02:13:42 2024 +0000 Updated GSL-specific files under ufs_utils.fd_gsl commit 1b153fc95b93a16eb40b791be7322100fde4a3d4 Author: Judy.K.Henderson Date: Tue Jan 9 01:52:56 2024 +0000 Create new branch, gsl_ufs_dev, from dev_02jan24_9d901db Add initial GSL modifications - changes to workflow files * GSL paths, projects, entities - new FV3_GFS_v17_p8_ugwpv1_mynn suite definition file (SDF) - updated namelist parameters in ush/parsing_namelists_FV3.sh - create new GSL directories: ufs_model.fd_gsl and ufs_utils.fd_gsl * new SDFs, add instantaneous flux variables to grib2 configuration files * add Thompson tracers to initial conditions - new sync script: rsync_gsl.sh - new job files: getic.sh, makeinit_link.sh - modify build_ufs.sh to include MYNN SDF commit 9d901dbbff4d41586580316bdc094d24760119e6 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Jan 2 10:30:33 2024 -0700 Stop Gempak pgrb2 spec from modifying $DATA (#2147) This PR addresses issue #1224. The following is accomplished: - Instances where `DATA` is modified, corrections are made to use a locally defined variable such that `DATA` is no longer modified at run-time; - Shell linter exceptions are addressed accordingly; - The respective GEMPAK tasks is added to the Rocoto mesh. Resolves #1224 commit 31ad23527802f7d07171132cc620f7135c4d8cba Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Jan 2 10:27:30 2024 -0700 Reorganize NPOESS scripts (#2166) This PR addresses issue #1226. The following is accomplished: - Using the GEMPAK j-job script `JGFS_ATMOS_GEMPAK_PGRB2_SPEC`, the structure of `JGFS_ATMOS_PGRB2_SPEC_NPOESS` is updated; - Environment variables specific to the script `exgfs_atmos_grib2_special_npoess.sh` are moved accordingly; this specifically applies to the environment variable `FHOUR`, `SHOUR`, `FHINC`, `SLEEP_TIME`, and `SLEEP_INT`; - The `SLEEP_TIME` and `SLEEP_INT` parameters can now be defined at the top-level (if necessary); - Restart file checks are move to `exgfs_atmos_grib2_special_npoess.sh`; however, this may not be necessary (see `TODO` note within draft PR. Resolves #1226 commit 22bd82fa93b49e5ce98eb3f69123956dd5018049 Author: Kate Friedman Date: Tue Jan 2 11:55:03 2024 -0500 Orog fix file reorg and fix directory variable standardization (#2181) This PR makes updates to use the newly reorganized `orog/20231027` fix file version and standardizes the fix file directory variables. Changes: 1. Update UFS_UTILS hash to ce385ce 2. Update fix file version file to use new orog timestamp: `orog_ver=20231027` 3. Add ".mx$(OCNRES)" to `oro_data` filenames in scripts 4. Remove ".mx$(ocn_res)_frac" from the directory names for atmosphere resolutions under the `/orog` folder 5. Adds fix file directory variables to `config.base`, many of which are pulled up out of lower scripts; introduce `FIXcpl` 6. Renamed/replaced the following fix file directory variables: - `FV3JEDI_FIX` --> `FIXgdas` - `FIXfv3`, `FIX_orog` and `OROFIX` --> `FIXorog` - `FIX_ugwd` and `OROFIX_ugwd` --> `FIXugwd` - `FIX_am`, `FIXgsm`, `FIXSYND` --> `FIXam` - `FIX_lut` --> `FIXlut` - `FIX_aer` --> `FIXaer` - `FIX_SFC` --> `FIXsfc` - `FIX_DIR` --> `FIXgfs` - `RTMFIX` and `FIXCRTM` --> `CRTM_FIX` (is `CRTM_FIX` in crtm module, so not using `FIXcrtm`) 7. Correct the defaults for `FIXwave` in wave JJOB scripts 8. Update variable names in `*fixed_files.yaml` files, as well as update naming convention for `oro_data` files Resolves #1984 Resolves #1981 Resolves #2175 commit 03d03bf53b43914a55c384cb33eb06f6a9a443a6 Author: Andrew Collard <40322596+ADCollard@users.noreply.github.com> Date: Tue Jan 2 11:53:44 2024 -0500 Remove HIRS from GSI processing (#2183) With the update to CRTM 2.4.0.1, an issue with versioning of CRTM HIRS files has been exposed. This is documented in JCSDA/crtm#42. As HIRS radiances are no longer used in the GSI, these data should be removed from processing until a suitable update to CRTM is available. Resolves #2182 commit a3c50998d35525a39a66d5592fbf327ab3569e8b Author: Jessica Meixner Date: Fri Dec 22 18:07:48 2023 -0500 Update ufs-weather-model version (#2186) * update model to latest version which includes needed bugfixes for HR3 commit 774c7302e618370ef578bec3ccabc70486d6da1b Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Dec 22 11:34:53 2023 -0500 Fix analysis post processing's handling of 0-padded negative integers (#2187) This screens for the analysis 'forecast' hour (-001) and handles the '-' and circumvents octal issues. commit d1251360325faf75af9df0608557fcd10202a883 Author: Barry Baker Date: Thu Dec 21 11:23:48 2023 -0500 Fix for restoring cycling aerosols in fo-mode post COM refactor (#2179) - Update to COM reorg aerosol initialization job - Address bug in joining paths for data dependency in this job --------- Co-authored-by: Rahul Mahajan commit e55a05980709288d902ad1bd894164bfa5a18a65 Author: Walter Kolczynski - NOAA Date: Wed Dec 20 22:14:01 2023 -0500 Stop calling ufs-utils link script (#2172) The `link_workflow.sh` script was calling the ufs_utils version of the same. That step is only necessary if a user is going to run one of the stand-alone ufs-utils, which is rare. commit ef3e5ad7c63be1644c82333c95853c3caf2d8995 Author: TerrenceMcGuinness-NOAA Date: Tue Dec 19 22:02:55 2023 -0500 Fix handling of excluded hosts list (#2170) This PR fixes the issue with `create_experment.py` so that the yaml configuration file can have a string of list of strings when specifying the host name to exclude from the CI tests. commit ea74a5719efc8f0fe631c5ff93426a4299a614f3 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Tue Dec 19 16:21:41 2023 -0500 Add COMOUT_OBS to marine obs prep (#2173) Adds `COMOUT_OBS` (defined from `COM_OBS_TMPL`) to marine obs prep task to properly handle marine obs prep files. Used to keep obs after IODA conversion, QC, and other prep. Towards resolving NOAA-EMC/GDASApp#815 commit c2500feace0bb7c04ce67a90dd3182120ee67b2e Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Dec 19 14:55:20 2023 -0500 Return failed status if a build fails. (#2171) If any of the builds fail, this makes build_all.sh return the sum of the error codes encountered. Fixes #2168 commit 76fdd81cd84ed812181996a102379d8d964ba27a Author: Kate Friedman Date: Tue Dec 19 13:24:34 2023 -0500 Update index.rst for new GFSv16.3.12 in ops (#2169) Refs #2096 commit a81da33e8fe7541a36f68e7a4f14a384cadd36c8 Author: Kate Friedman Date: Tue Dec 19 10:22:21 2023 -0500 Set place=shared for shared jobs on WCOSS2 (develop) (#2156) Set job as shared when not exclusive on WCOSS2 WCOSS2 defaults to exclusive when it is not specified as either exclusive (place=exclhost) or shared (place=shared). Now set shared when job should be shared. Refs #2135 commit 89aea972f7964dac3f515e8070d7c534812c5fb4 Author: Walter Kolczynski - NOAA Date: Fri Dec 15 16:31:06 2023 -0500 Update gfs-utils version for Hercules (#2163) An update of gfs-utils was misssing from the previous PR that added initial Hercules support (#2128). Also includes gfs-utils update for new marine post. commit 9505cb4abc6ca2643a8ab254d14ca2000747fa44 Author: TerrenceMcGuinness-NOAA Date: Thu Dec 14 16:15:31 2023 -0500 CI Updates to support Hercules (#2155) If merged, this PR will update the CI scripts so they will run on Hercules for forecast only NOTE: This is a stop gap to issue #2131 until its block on #1588 is removed. Resolves #2154 commit c5ca82f04a2efae78389dec1c46b94ef4fb5bbe5 Author: Rahul Mahajan Date: Thu Dec 14 16:05:33 2023 -0500 Correct fbwind (#2161) commit f3f3e05e6325e6c2e8ddab186f1ed2f985fec49a Author: Kate Friedman Date: Thu Dec 14 12:06:23 2023 -0500 Add MOS jobs to rocoto mesh (#2148) Create separate jobs for GFS MOS - extracted from now-retired vrfy job Refs #2068 commit bb6151aa50c27253cb9b8f0a6601ddd58526b8b3 Author: Walter Kolczynski - NOAA Date: Thu Dec 14 05:38:29 2023 -0500 Replace checkout script with submodules (#2142) Replaces the checkout script with git submodules. This change brings workflow in line with other repos and git standards. Due to these changes, the build system is updated slightly. First, the options that were formerly used with `checkout.sh` to reduce unneeded builds (`-g` for GSI and `-u` for UFSDA) are moved to `build_all.sh` instead. This is needed since build all will not be able to key off directories existing or not to determine which com- ponents to build. Second, the partial build system is removed. It was rarely, if ever, used, and parts of it were already ignored with the previous changes to base builds off whether directories exist. The manage externals file is also removed since that is also not being used. Following these changes, clones/checkout will need to either be recursive, or `git submodule update` will need to be called separately to make sure components are properly checked out (non-exhaustive list): ``` ## Checkout develop (method 1) git clone --recursive https://github.com/NOAA-EMC/global-workflow destination ## Checkout develop (method 2) git clone --jobs 8 https://github.com/NOAA-EMC/global-workflow destination cd destination git submodule update --init --recursive --jobs 8 ## Checkout existing branch some_branch (method 1) git clone --recursive --jobs 8 -b some_branch https://github.com/NOAA-EMC/global-workflow destination ## Checkout existing branch some_branch (method 2) git clone https://github.com/NOAA-EMC/global-workflow destination cd destination git checkout --recurse-submodules some_branch ## Checkout existing branch some_branch (method 3) git clone https://github.com/NOAA-EMC/global-workflow destination cd destination git checkout some_branch git submodule update --init --recursive --jobs 8 ## Checkout new branch new_branch git clone https://github.com/NOAA-EMC/global-workflow destination cd destination git checkout -b new_branch git submodule update --init --recursive --jobs 8 ``` The git ignore list had to be updated to use explicit paths as the wildcard paths pick up the ones that are now submodules. UFS creates files during the build process that are not in its ignore list, so that sub- module ignores the "dirty" state to avoid confusing users running `git status`. CI and documentation are also updated to reflect the changes. Resolves #2141 commit 1332188ce2409e012ec127d44880e49732f7f379 Author: Walter Kolczynski - NOAA Date: Wed Dec 13 09:32:57 2023 -0500 Enable radar reflectivity output (#2143) Turns on radar reflectivity output from FV3. This eliminates missing values appearing in the grib2 files. commit 24d898ec0ec0c7fcbda6966988f9a986f528ed14 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed Dec 13 09:32:24 2023 -0500 Fix Hercules hostname (#2150) * Allow lower or upper hostname on hercules. * Add Hercules to issue template. commit 2896bb8787698be28ad20f2298589e6e95eaf9fb Author: Kate Friedman Date: Tue Dec 12 09:13:06 2023 -0500 Fix module load typo (#2145) Fix typo with loading the crtm module in the UPP hack for WCOSS2 Refs #2144 commit 29d34172a67d976f910e78158ff0337e1ef099ca Author: Cory Martin Date: Thu Dec 7 15:12:05 2023 -0500 Update GDAS hash to most recent stable versions (#2138) commit 93da9f105502e24f1a1a621f05ea49e1fdfe0102 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Dec 7 10:41:05 2023 -0700 Corrected typo in a gempak job gempakncdcupapgif . (#2137) commit 3483f550db1ae35a680de49f7485ce5a11902dd9 Author: Cory Martin Date: Thu Dec 7 12:34:56 2023 -0500 Add support for FGAT and IAU for aerosol DA (#1940) commit e2664c011bf5fb03a9b1b37878cad423a1fde6f9 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Thu Dec 7 12:33:46 2023 -0500 Enable forecast-only experiments on Hercules (#2128) This add forecast-only support for Hercules to the global workflow. Partially satisfies #1588. Co-authored-by: Walter Kolczynski - NOAA commit a29f751aed05312da3d80d396159bb5a906d6ce4 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Dec 6 13:45:56 2023 -0700 Adds GEMPAK and related jobs to rocoto task mesh (#2127) commit 1fc8b5bf55581de18e786611c65bc3f84bb0c082 Author: Rahul Mahajan Date: Tue Dec 5 15:47:52 2023 -0500 Separate offline UPP from interpolated grib2 product generation (#2110) This PR: - Replaces the use of `JGLOBAL_ATMOS_POST` with `JGLOBAL_ATMOS_UPP` and `JGLOBAL_ATMOS_PRODUCTS`. - Introduces `JGLOBAL_ATMOS_PRODUCTS` that is responsible for creating grib2 products from the master file produced by UPP (inline from the model, or offline by running `JGLOBAL_ATMOS_UPP`). Rocoto job `atmos_products.sh`, ex-script `exglobal_atmos_products.sh` are also added along with a `config.atmos_products`. Updates are made to the relevant `env` files as well as `config.resources` to reflect the addition of this job. - reduces the number of cores needed appropriately for forecast products when there is no offline UPP necessary. - renames older `fv3gfs_dwn_nems.sh` to `interp_atmos_master.sh` and `inter_flux.sh` to `interp_atmos_sflux.sh` - removes `fv3gfs_downstream_nems.sh` as it is absorbed into `exglobal_atmos_products.sh` - removes no longer used scripts for `gfs_post.sh`, `gfs_transfer.sh` (DBN alerts are absorbed into `exglobal_atmos_products.sh`), `post.sh`, `JGLOBAL_ATMOS_POST`, `ex${RUN}_atmos_post.sh` scripts. - Rocoto workflow related scripts are updated to add `atmos_products` as a job. When `WRITE_DOPOST` is `.false.`, `upp.sh` job to run the UPP offline is also added. Dependencies have been appropriately applied. - removes `PGB1F` option that creates 1-degree grib1 products that are no longer needed in GFSv17. The hacks from (now deleted) `post.sh` had to be reinstated in `upp.sh` to load the modules from UPP instead of `load_fv3gfs_modules.sh`. commit 44186f594aaf5f8feea0eadd4c5c3b59de3a825e Author: Kate Friedman Date: Tue Dec 5 12:28:08 2023 -0500 Update index.rst for new GFSv16.3.11 version (#2121) Refs #1356 commit e62a3a73cd22701962b7bf210fdfee37f37a5474 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Dec 5 09:08:12 2023 -0700 Splits AWIPS jobs into seperate tasks (#2094) This PR addresses issue #1228. The following is accomplished: - Separate rocoto jobs have been created beneath `jobs/rocoto/` -- `awips_20sh` and `awips_g2sh`; these jobs replace `awips.sh` which was calling multiple J-jobs within the respective `awips.sh` scripts; - New tasks has been added to `workflow/rocoto/tasks.py` for the new AWIPS scripts; - The `gfs_cycled` and `gfs_forecast_only` modules beneath `workflow/rocoto` have been updated accordingly. Resolves #1228 commit 04d97e9aa7ab84b9754ab670074cfb19d543aa26 Author: Kate Friedman Date: Mon Dec 4 13:38:30 2023 -0500 Consolidate VMINMON and cleanup monitor scripts (#2088) This PR combines the GDAS and GFS versions of the VMINMON JJOB and ex-driver scripts into single GLOBAL/global versions. Additionally: * some further cleanup of the GSI-Monitor scripts is done; variable settings in ex-driver scripts are moved up to the JJOB level * the fix symlinks are consolidated into a new `fix/mon` subfolder (formerly `fix/gdas`) and copies of the gfs monitor fix files under `fix/products` are removed Resolves #1925 commit a286a11fdcbc31c8bc6d944890bc56294bc8caf6 Author: TerrenceMcGuinness-NOAA Date: Mon Dec 4 17:48:44 2023 +0000 Robust CI Restarts (#2093) Improved CI robustness for reverting back to **CI-Ready** from any given state New Features: - Improved `scancel` routine (refactored into bash "subroutine") - Improved messaging (see below) when ever a user changes state - Any and all previous build scripts and running experiments are killed as a result of reset to **Ready** Resolves #2060 commit 73621e9b20b20f85e8b21e4c1e09ed1d80ecd46f Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Sun Dec 3 11:19:19 2023 -0500 Upgrade to spack-stack/1.5.1 and Intel 2022 on non-production machines (#2084) Update module files to spack-stack/1.5.1 and compilers to Intel 2022+ on all non-production machines. commit 6d548b250688861eb20a7e0dc852a0e4ba9e64f4 Author: jiandewang Date: Thu Nov 30 12:00:21 2023 -0500 Add variable tob in diag_table for ocean model output(#2105) commit c19810cce252fcdb25fd9960c05b08b5f8d8b1ad Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Wed Nov 29 15:17:36 2023 -0500 Added variables to config.prepoceanobs (#2101) commit c2d78a61a224678fb804eed19f39d1f07408ae5f Author: Kate Friedman Date: Wed Nov 29 12:39:08 2023 -0500 Add missing cut to VDATE setting in JGFS_ATMOS_VERIFICATION (#2098) Refs #2097 commit c1c025f91ddac73aea595cc9fa4dd0bea80575fc Author: Walter Kolczynski - NOAA Date: Wed Nov 29 17:15:10 2023 +0000 Add wave init to GEFS (#2089) Adds the wave init job to GEFS. Since the output would be the same for every member, the job is only run once for the control, then links are created in each of the member directories pointing to that copy. New ww3_multi and ww3_shell templates for GEFS are copied from the GFS versions. The GEFS restart frequency is changed to not be zero, and the comment about not setting it to zero is copied from the gfs config.base. The restart interval for the GEFS perturbed members is changed to equal that of the control. Also fixes a bug where `RUNwave` was not defined for ensemble forecasts, and another bug in the GEFS stage_ic dependency. Resolves #2017 commit 64a2470ce29b7d8d5cb85ebcb4048ff82958f64e Author: Kate Friedman Date: Wed Nov 29 11:26:34 2023 -0500 Adjust permissions for jobs/JGFS_ATMOS_VERIFICATION (#2095) Add execute permissions (755) commit 964b77bc6de67291973c2c70598a1f8cb72501c5 Author: Walter Kolczynski - NOAA Date: Tue Nov 28 18:45:51 2023 +0000 Make proper j-job for MET+ (#2090) Creates a proper j-job for the metp job, moving much of the material from the `jobs/rocoto` script there (some of it within `jjob_header`). Also updates the old `COMIN` variable for the COM refactor (although it does not appear used in the verify scripts currently). This is a partial step towards restoring/improving metp functionality and remains untested. Refs #1575 commit 8c11eeb8556619e8db4e0efb6394ce5a2c1aae0f Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Nov 23 10:31:32 2023 -0700 Adds FBWINDS support to global-workflow (#2082) This PR addresses issue #1221. The following was accomplished: - A new Rocoto job is added; `jobs/rocoto/fbwinds.sh`; - `workflow/applications/gfs_cycled.py` is updated to include the `fbwinds` task; - `workflow/applications/gfs_forecast_only.py` is updated to include the `fbwinds` task; - A new function is added to `workflow/rocoto/gfs_tasks.py`, `fbwinds` is added as new GFS (only) task; - `workflow/rocoto/tasks.py` is updated to include the `fbwinds` task. Resolves #1221 commit 513db190d21f9ede0724a2cd5606372b1d7605de Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Nov 21 22:52:58 2023 -0700 Adds NPOESS support to global-workflow (#2083) This PR addresses issue #1225. The following was accomplished: - A new Rocoto job is added; `jobs/rocoto/npoess.sh`; - `workflow/applications/gfs_cycled.py` is updated to include the `npoess` task; - `workflow/applications/gfs_forecast_only.py` is updated to include the `npoess` task; - A new function is added to `workflow/rocoto/gfs_tasks.py`, `npoess` is added as new GFS (only) task; - `workflow/rocoto/tasks.py` is updated to include the `npoess` task. Resolves #1225 commit 62d8e99e77ffe44784f4c61c3f2296c6d1a72413 Author: Kate Friedman Date: Fri Nov 17 20:25:50 2023 -0500 Retire vrfy job (#2080) Retires the `vrfy` job from the global-workflow system. All associated scripts, configs, and references to the job are removed. Additionally, the switches listed in RTD were updated to reflect new ones added in other PRs for issue #235. Resolves #2069 Refs #235 commit ea386abf11ecbacef407388e8d57e71b30148a35 Author: Walter Kolczynski - NOAA Date: Fri Nov 17 23:59:46 2023 +0000 Enable different coupled settings for ensemble (#2030) Adds the ability to turn off some coupled components for the ensemble. To enable this, many settings are moved out of `config.fcst` and into `config.ufs` so they are calculated after any overrides of `DO_*` have been made. Some settings also had to be moved out of `config.base` for the same reason. A switch to turn on gocart is added to `config.ufs`, but unlike the other switches this one takes no arguments. The name of the ufs configure template used is converted from a partial file name to the full file name. Resolves #1692 commit fe792c0c9a1c46908cbd18c7e71eb836974cf1de Author: Kate Friedman Date: Fri Nov 17 17:19:16 2023 -0500 Add --cpus-per-task to srun commands for Hera and Orion (#2077) This PR adds the `--cpus-per-task` flag to non-CFP `APRUN`/srun commands in the env files for Orion and Hera. This is needed as a result of an upgrade to SLURM on Orion that no longer exported the thread value to the environment. Issue #1996 was a hotfix to add this flag for the analysis job that was suddenly running slowly after the SLURM upgrade. A similar SLURM upgrade was done on Hera but the sysadmins there implemented a workaround so this issue did not appear there. This PR adds the `--cpus-per-task` flag for both machines...needed on Orion and as a safety measure on Hera. Also included in this PR is a fix to indentations in the `scripts/exglobal_diag.sh` script that was noticed during work for this PR. Timing differences were not observed for other jobs after adding this srun flag. Job timings were of a similar variation between control and test runs. Any potential additional speedup was not observed. The test runs also reproduced the control runs with `develop`. Resolves #2044 commit 42c943be305c297a56b104bb50727938c1ba688f Author: Kate Friedman Date: Fri Nov 17 15:41:34 2023 -0500 Adjust modules in post.sh for WCOSS2 (#2079) On WCOSS2 the grib_util module is named a bit different and needs the libjpeg module loaded beforehand. commit cd4e6a1987e7fd71dff06766f540b5d32c8b648d Author: Jessica Meixner Date: Fri Nov 17 11:49:32 2023 -0500 Update ufs-weather-model and remove upp hack (#2071) Updates the model to the most recent commit of ufs-weather-model. This should allow for the removal of the UPP hack that was added in PR #2042 This required changing nems.configure -> ufs.configure. Resolves #1942 commit 5a2d97e142aa4999b122fd5a130c63e59ea9f8e2 Author: Walter Kolczynski - NOAA Date: Thu Nov 16 22:15:53 2023 +0000 Fix check for existence of preamble functions (#2066) A few of the setup scripts were checking for the existence of functions set by the preamble before calling them so they could also be used stand-alone. However, the `type` command returns `1` if the function name does not exist, which will cause the script to die is `set -e` is on. Now the `type` command fails over to an empty string. commit ed2ee7c2b1457b71b271a2c40f0dfa356e0f52f8 Author: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Thu Nov 16 16:38:11 2023 -0500 Update UPP products for GFS v17 (#1973) Updates of generating GFS V17 UPP products to support HR3: - Update g2tmpl to 1.0.12 - Add changes to launch cfp on WCOSS2 to generate pgrb2/pgrb2b files - Changes for generating new products (MERRA2, six winter weather variables, 1km HLCY, SDEN) in pgrb2 files Resolves #1965 Resolves #1994 commit 635c4719e603538ce7cccf9ea6b31f3f84f20849 Author: Walter Kolczynski - NOAA Date: Thu Nov 16 20:35:30 2023 +0000 Fix some rocoto dependencies (#2074) A few small errors/cleanup in the dependencies, mostly in fcst: A few small errors/cleanup have crept into the dependencies with recent changes, mostly in fcst: - Fixed the offset, as it would yield a string rocoto doesn't recognize when the interval was 24+ hrs - Removed the duplicate wave dependency. When `waveprep` is included, it depends on `waveinit` so there is no need to add a `waveinit` dependency. - Converted an interval in the archive job that was missed in #2039 Resolves #2075 commit d4c7508260975c6b94fc92fd085f39d4faf3f027 Author: Rahul Mahajan Date: Wed Nov 15 16:44:03 2023 -0500 Fix missing _PREV in ocean restart file location (#2070) commit 255616d37505c785bdddd5d3e39e8399110b626e Author: mdtoyNOAA <73618848+mdtoyNOAA@users.noreply.github.com> Date: Wed Nov 15 12:02:09 2023 -0700 Update functionality for Prototype HR3 UGWP (#1987) This PR adds/modifies namelist options and activates new 'ccpp' suite definition files for the updated Unified Gravity Wave Physics (UGWP) in the ufs-weather- model recently updated for HR3. The changes to UGWP are the use of the GSL drag suite for orographic gravity wave drag (GWD) and blocking, as well as the new UGWP Version 1 non-stationary GWD. See ufs-community/ufs-weather-model#1923 for details. Resolves #1986 commit be9085e62aae147e3c74602e2f82a99b374fc783 Author: Guillaume Vernieres Date: Wed Nov 15 13:48:58 2023 -0500 Save the required CICE history for the sea-ice DA (#2062) The hist_avg setting of CICE was changed to be an array. commit 85f1f5131ffd70061231304ea477bde0559eb67b Author: Guoqing Ge Date: Wed Nov 15 11:47:21 2023 -0700 Use assim_freq to configure "offset" in dependencies (#2039) Use the assim_freq from config.base to configure "offset" in dependencies instead of hard-coding them. Resolves #2038 commit 4e3d82ba3a1fa7cdd4443bcd4cf83b2f8835137c Author: Kate Friedman Date: Wed Nov 15 13:39:14 2023 -0500 Resolve ENKF archive script bugs (#2065) Fix two bugs in the exgdas_enkf_earc.sh script: 1) Replace ARCH_LIST with DATA to match changes done in PR #2000 and update path to generated archive list files. 2) Add status check and exit after script attempts to make tarball on HPSS. Refs #2064 commit 42d7f2f0c48fab898b764e09cfbbd7a9fabbae08 Author: Kate Friedman Date: Tue Nov 14 17:54:29 2023 -0500 Separate tracker and genesis jobs from vrfy job (#2058) This PR creates new individual jobs for the tracker and genesis jobs that are being pulled out of the `vrfy` job (issue #235). The `tracker` and `genesis` jobs will be on by default while the `genesis_fsu` job will be off by default. This mimics the current settings in the `vrfy` job. No enhancements or upgrades are made to the jobs themselves in this PR, only to separate them from the `vrfy` job. However, one change compared to how they currently run in the `vrfy` job is to no longer run the `tracker` in the gdas suite. This mimics how the `ens_tracker` package is run in operations (gfs only). Changes in this PR: 1. Create rocoto job scripts for tracker/genesis jobs. 2. Create configs for tracker/genesis jobs, as well as `config.tropcy` for shared settings. 3. Add tracker/genesis jobs to `config.resources`; use resources from the ecf scripts for `ens_tracker` jobs in operations 4. Add tracker/genesis jobs to rocoto setup for both cycled and forecast-only modes. 5. Update arguments for `jjob_header.sh` script in tracker/genesis JJOB scripts to use specific job names and configs instead of vrfy. 6. Rename `tracker_ver` to `ens_tracker_ver` in version files to mimic variable within tracker package. 7. Rename and move tracker/genesis switches to `config.base`. 8. Remove tracker/genesis jobs from `vrfy` job (`jobs/rocoto/vrfy` and `config.vrfy`). 9. Reduce vrfy job resources to accommodate tasks having been removed. Refs #235 Resolves #1988 Resolves #2048 commit 0a0d6984e094d2a551d5d8331102142e7db13fc2 Author: Rahul Mahajan Date: Tue Nov 14 14:08:26 2023 -0500 Enable warm starting of the model for forecast-only mode (#2031) This PR: - adds an option to warm|cold start the ufs-weather-model when setting up an experiment for GFS/GEFS - adds the capability to stage FV3 restarts when the atmosphere is warm started from FV3 restarts. This would be used in the GEFS free-forecast for part of the reforecast capability. - If a coupled model is warm started for the atmosphere, also check if mediator restarts are present. If so, stage mediator restarts to allow restarting the coupled model. Fixes #2016 commit 2cd6a589305a9ac9d3a9a0d2136e66e42f09d3bf Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Nov 14 12:05:20 2023 -0700 Moves UFS WM configuration files to `COM_CONF` (#2054) The UFS weather-model (WM) files are place in the COM_CONF path rather than the respective component model COM history paths. Resolves #2015 commit 6f1693081662f241fafc930b1afc88125f7f5aff Author: Kate Friedman Date: Tue Nov 14 11:15:02 2023 -0500 Refine fit2obs job in rocoto mesh (#2047) This PR adjusts the `fit2obs` job in the rocoto mesh to better define when it exists and how the archive job dependencies accommodate it not being in the first half cycle. Changes in PR: 1. Remove the `fit2obs` job from the first half cycle `cycledef`. 2. Adjust the archive job dependencies to now include the `fit2obs` job in the new logic check added in PR #1983. The `gdasarch` job in the first half cycle will check if `gdasfit2obs` is complete OR no prior cycle exists. Also cleaned up this new logic check block some to make it a tad simpler. 3. Also, fix the addition of the `fit2obs` config to the config list in setup scripts. Now tied to whether `fit2obs` job is on instead of always adding the config to the list. Resolves #2043 commit 5730a71fa5d311e49d9bb11528b500f27f33d69d Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Nov 14 09:13:11 2023 -0700 Add `waveinit` and `waveprep` to half-cycle. (#2037) This PR addresses issue #1444. The `waveinit` and `waveprep` tasks have been added to the GDAS have cycle. The downstream dependencies for the respective GFS and GDAS forecast tasks have been removed. Resolves #1444 commit 28d2e93c3857de95b0309a089cd7dac736ccaded Author: Walter Kolczynski - NOAA Date: Tue Nov 14 16:11:47 2023 +0000 Update wave IC source for C384 (#2055) The default wave grid for C384 has changed since P8, so a single wave IC on the new grid is available under a different IC name. commit 81dd2d9855091315611106a5afbdaeaa15e6e4ae Author: Walter Kolczynski - NOAA Date: Thu Nov 9 17:19:57 2023 +0000 Fix analysis and post on Orion (#2046) Fixes a couple things to get workflow to work on Orion again: First, while #2042 allowed post to be built, the `upp.x` executable would fail due to a missing library. Now post jobs (temporarily) uses the UPP modules (plus others needed for runtime) instead of the normal workflow runtime module. This should actually fix #2041. This hack can likely be removed once we move to spack-stack. Second, the launcher command for the analysis jobs on Orion are updated to specify the number of CPUs per task. This was necessary as a recent slurm update on Orion discontinued reading that value from the scheduler. Other jobs will be handled later (see #2044). Additionally, a change is made to `module-setup.sh` that will eliminate the annoyance of `gw_setup.sh` breaking tab completion because undefined variable checking was turned on for the script but not back off. Resolves #1996 Resolves #2041 Refs #2044 commit 13d06ded4155cba2d08ef2a2cd553024c5abe29d Author: Walter Kolczynski - NOAA Date: Wed Nov 8 18:25:47 2023 +0000 Hack UPP version (#2042) The stack UPP was using on Orion was recently deleted, leaving us unable to build the UFS verison of UPP there. UPP has an updated version using spack-stack that works, so the checkout script is modified to check out that version of UPP after UFS has been checked out. This temporary hack can be removed once we move to a UFS version that advances the UPP version to or beyond 78f369b. Resolves #2041 commit 20f6eceb8ff58f84174a27eb849c1d74566a3e03 Author: jiandewang Date: Wed Nov 8 11:14:55 2023 -0500 Add basic C1152 settings (#2020) Adding C1152 setting in host.yaml, config.base and config.stage_ic so that can run C1152 S2SW. Resolves #2019 commit 5183c43bbbd07285869feacb49d8680afe85929a Author: Barry Baker Date: Tue Nov 7 01:14:40 2023 -0500 Update UFS for dust fix and remove nitrates by default (#1989) This PR updates the `ufs-weather-model` to the latest hash that included the dust fix (PR #1922). Along with this I removed the nitrates by default in support of the GEFSv13 EP4 and EP5 experiments. Removed unneeded inputs that should help with speed improvements. commit 34a73cf2ed5afefc776d9cc73b6ebf439122a1bb Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Nov 6 14:00:51 2023 -0500 Reduce gdas builds to 8 #2029 (#2036) Reduce the default number of build jobs for the GDASApp to 8 from 16. This is needed for Orion as the build crashes during a linking step. Though not verified, it appears this may be caused by using too much memory with 16 builds. The issue disappears when using 8 build jobs. Resolves #2029 commit 75269e4bb9764b81589efc7d703825b80e74c8f5 Author: TerrenceMcGuinness-NOAA Date: Mon Nov 6 17:34:47 2023 +0000 Streamline CI reporting to PRs (#2026) Cleaned up the logs for CI PRs sent to the GitHub Messages: - Eliminates redundant accumulative reporting - Reports on all created or skipped experiment instantiations in a single message - Gives one line report once for each experiment completion - Single final report completion of CI See some examples in forked [PR 195](https://github.com/TerrenceMcGuinness-NOAA/global-workflow/pull/195) Resolves #2007 commit 8d55126bb0b27c79c8bee7f72b014abd34950ff9 Author: Guillaume Vernieres Date: Fri Nov 3 17:06:09 2023 -0400 Implement IAU Cycling Type with Marine Data Assimilation Enabled (#1944) Allows cycling in IAU mode with the S2S UFS model, soca and the GSI. Most of the work related to making IAU work was done by @JessicaMeixner-NOAA . Thanks @JessicaMeixner-NOAA ! Resolves #1943 Refs #1776 commit 2563806821d4ae3b57120bc61aa0575139a708f0 Author: jiandewang Date: Fri Nov 3 11:49:37 2023 -0400 Add two ucx modules in load_ufswm_modules.sh to solve C768 and C1152 S2SW job hanging issue on WCOSS2 (#2021) commit cbdc09711a83493f363a737d1e3e46c48a09719d Author: Walter Kolczynski - NOAA Date: Fri Nov 3 04:09:33 2023 +0000 Fix staging of MOM data (#2028) During the update to stage_ic, the copying of the additional res_N files for 0p25 was omitted. These are now properly copied. Resolves #2027 commit bd4c56d99c23c5c41f0bd5f8a980ef99ee160888 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Nov 2 16:09:59 2023 -0400 changed optional script name vars for ocean analysis (#2025) commit 93bc918cdabee771c182c6f33cc54a20b5bb86c6 Author: Kate Friedman Date: Thu Nov 2 16:01:18 2023 -0400 Create separate GSI monitor jobs and remove from vrfy job (#1983) This PR will move the GSI monitor tasks from the `vrfy` job into their own separate jobs in the rocoto mesh. This takes care of part of issue #235. Changes in this PR: 1. Create new individual GSI monitor jobs in the rocoto mesh to match how it is done in operations. The new jobs are: `gdasverfozn`, `gdasverfrad`, `gdasvminmon`, and `gfsvminmon`. The names correspond to the names in operations and the ecf script names. The jobs are only added to cycled mode, none of the jobs are run in forecast-only mode. 2. Updates to GSI monitor scripts: * Update `ush/jjob_header.sh` arguments in JJOB scripts to call new individual job names and configs. * Introduce `COM_*` variables and use of the `generate_com` utility. This results in the outputs landing in `COM` subfolders, like occurs in operations, instead of landing in the online archive. * Some variable cleanup in JJOB and ush scripts, includes cleaning up usage of `DATA` variable and its removal at the end of the jobs. * Add missing exit statements to `JGFS_ATMOS_VMINMON` and `JGDAS_ATMOS_VERFRAD`. 3. Create new rocoto job scripts for the new individual GSI monitor jobs. 4. Create new configs for the new individual GSI monitor jobs. 5. Add new individual GSI monitor jobs to resource configuration, using the same resources as in operations. 6. Move and rename GSI monitor job switches from `config.vrfy` to `config.base`. Also add switches to setup system. New switches to control each job being added to the rocoto mesh are: `DO_VERFOZN`, `DO_VERFRAD`, `DO_VMINMON` 7. Add GSI monitor job output to archival job and into resulting HPSS tarballs or local tarballs. This now matches what is done in operations. 8. Remove the GSI monitor tasks from the rocoto `vrfy` job and associated `config.vrfy`. Example output locations and files (not showing contents of oznmon/horiz or oznmon/time for brevity, see archival script for full list of output files): ``` kate.friedman@dlogin09:/lfs/h2/emc/ptmp/kate.friedman/comrot/testmonitor2> ll gdas.20211221/00/products/atmos/*mon gdas.20211221/00/products/atmos/minmon: total 112 -rw-r--r-- 1 kate.friedman emc 14030 Oct 25 15:00 2021122100.costs.txt -rw-r--r-- 1 kate.friedman emc 84932 Oct 25 15:00 2021122100.cost_terms.txt -rw-r--r-- 1 kate.friedman emc 808 Oct 25 15:00 2021122100.gnorms.ieee_d -rw-r--r-- 1 kate.friedman emc 808 Oct 25 15:00 2021122100.reduction.ieee_d -rw-r--r-- 1 kate.friedman emc 80 Oct 25 15:00 gnorm_data.txt gdas.20211221/00/products/atmos/oznmon: total 8 drwxr-sr-x 2 kate.friedman emc 4096 Oct 25 15:05 horiz drwxr-sr-x 2 kate.friedman emc 4096 Oct 25 15:05 time gdas.20211221/00/products/atmos/radmon: total 21036 -rw-r--r-- 1 kate.friedman emc 231 Oct 25 15:12 bad_diag.2021122100 -rw-r--r-- 1 kate.friedman emc 9035 Oct 25 15:12 bad_pen.2021122100 -rw-r--r-- 1 kate.friedman emc 1449 Oct 25 15:12 low_count.2021122100 -rw-r--r-- 1 kate.friedman emc 20523403 Oct 25 15:07 radmon_angle.tar.gz -rw-r--r-- 1 kate.friedman emc 217272 Oct 25 15:08 radmon_bcoef.tar.gz -rw-r--r-- 1 kate.friedman emc 502151 Oct 25 15:10 radmon_bcor.tar.gz -rw-r--r-- 1 kate.friedman emc 264480 Oct 25 15:12 radmon_time.tar.gz -rw-r--r-- 1 kate.friedman emc 684 Oct 25 15:12 warning.2021122100 kate.friedman@dlogin09:/lfs/h2/emc/ptmp/kate.friedman/comrot/testmonitor2> ll gfs.20211221/00/products/atmos/minmon/ total 88 -rw-r--r-- 1 kate.friedman emc 10530 Oct 25 14:55 2021122100.costs.txt -rw-r--r-- 1 kate.friedman emc 63882 Oct 25 14:55 2021122100.cost_terms.txt -rw-r--r-- 1 kate.friedman emc 808 Oct 25 14:55 2021122100.gnorms.ieee_d -rw-r--r-- 1 kate.friedman emc 608 Oct 25 14:55 2021122100.reduction.ieee_d -rw-r--r-- 1 kate.friedman emc 80 Oct 25 14:55 gnorm_data.txt ``` Lingering work and considerations: 1. Issue #1925 2. Consider not hardcoding the list of types in archival and perhaps tie it to something reliable or configurable (maybe into `config.verfozn`?): `subtyplist="gome_metop-b omi_aura ompslp_npp ompsnp_n20 ompsnp_npp ompstc8_n20 ompstc8_npp sbuv2_n19"` Resolves #1908 commit 31b05a99b77d0f6eaa8b116485a41a43867d20e1 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Nov 2 12:23:32 2023 -0600 Move analysis post to new stand-alone task (#1979) This PR addresses issue #1130. A new task `postanl.sh` has been added such that the `anl` post-processing is not it's own task within the Rocoto workflow. This change prevents the GDAS experiment from breaking due to failures caused by the `anl` not being available for the first cycle. Resolves #1130 commit 247cdf8c7e10e6c98f782799fc51c069b6474e70 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Nov 2 11:18:53 2023 -0600 Corrects missing local variable reference (#2023) Fixes missing `$` in variable reference in archive job. Resolves #2022 commit 241742b246da1794646b68e41c3d6fe00b95dd07 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Wed Nov 1 14:19:55 2023 -0400 Updates to prep ocean obs task (#1870) commit 77be0ec6a3117b9f7e71a19c69ac64c09b521ecd Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Nov 1 12:09:33 2023 -0600 No longer write archive lists COM (#2000) Changes the respective `.txt` files used for the HPSS archive to the `DATA` path. Each defined text file has been updated to explicitly write to `DATA` rather than `COM` such that the files are deleted rather than being archived. Resolves #760 commit 517b92f9c20c9e44abba3183325e35a95a7334a5 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Oct 31 16:33:11 2023 -0400 Parallelize the build scripts (#1998) Optimized/parallelized build scripts. A few notes: 1) The default number of build jobs is 20, but one could argue for using 40. When researching this, I looked up what the SRW is compiling with. That system uses 40 cores, which seems a little excessive, but on testing the global workflow, the actual number of cores being used at any given time rarely exceeds 16 when running with 40 cores. This is because the builds tend to use multiple threads in the beginning when compiling low-level modules while the higher-level modules are more or less serial AND because the GDASApp takes several minutes to initialize all of its subrepositories by which time the smaller builds are complete. 2) I also updated checkout.sh so that all checkouts are simultaneous. The CPU load for `git submodule` is quite low, so running 16 instead of 8 jobs at once is not much more expensive. 3) To make this work, I had to add `-j` options to most of the build scripts. The only exception is build_upp, for which the build script within the UPP is hard coded to use 6 cores. 4) I fixed a few small bugs in the build scripts along the way. 5) Lastly, this reduce the total build time from ~2.5 hours for the entire system (including GDAS and GSI in the same build) to ~40 minutes when running with `-j 40`. Resolves #1978 commit 67c050c201f92e855d09211e41a5f51ee1cb5230 Author: Walter Kolczynski - NOAA Date: Tue Oct 31 19:00:47 2023 +0000 Add missing export for rCDUMP in stage_ic (#2009) rCDUMP is needed by the exscript but was never exported by the jjob. commit 872068cb5ea78b311f7a77e97ee1428ae027cb61 Author: TerrenceMcGuinness-NOAA Date: Tue Oct 31 14:37:55 2023 +0000 Add output error log to user for create_experiment.py on fail in CI (#1974) Small changes to driver CI bash scripts to recapture error log from `create_experment.py` logger Fixes #1939 commit b2e4a2e9d269842acbb1b37dd563ee5dee2adf0f Author: TerrenceMcGuinness-NOAA Date: Tue Oct 31 13:57:02 2023 +0000 Allow CI case to exclude running on certain platforms (#2001) commit 7cc137116f1619bf1e5a12eaacb98d17da97c223 Author: Jeff Whitaker Date: Tue Oct 31 07:54:24 2023 -0600 Add initial C96/1 deg coupled model support (#1991) commit 7086ddc4bece6fb2a8c1c2e6090800d4293e410e Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Oct 30 19:58:43 2023 -0400 Add ocean analysis files to HPSS archiving task (#1985) This PR adds the files under `analysis/ocean` (except those in `bump` and `vrfy`) to the HPSS archiving job, in `gdasocean_analysis.tar`, which were previously not archived. Resolves NOAA-EMC/GDASApp/issues/693 commit eabc82ad30c118645c0e6e216162d823882a8139 Author: Guillaume Vernieres Date: Mon Oct 30 10:31:27 2023 -0400 Make the early cycle work with the coupled UFS configured as S2S (#1954) commit aff6ca7ae559e424dae128d6cfd5da4a4e3049e7 Author: Anil Kumar <108816337+AnilKumar-NOAA@users.noreply.github.com> Date: Fri Oct 27 14:11:55 2023 -0400 GEFS Staging in exglobal_stage_ic (#1892) Adjusts source paths for forecast-only ICs in support of extension to ensembles. New paths omit the resolution (that is captured by the IC id name) and allow for a member level. Directories with the reorganized ICs have been added to the three tier-1 machines under glopara space. Building on this, also adds capability to stage GEFS ICs. Resolves #911 commit 77c1ff2bfa26b341b01f41e50ee0ecb31cc4f661 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu Oct 26 23:44:27 2023 -0400 Update GDASApp hash (#1975) Update GDASApp hash to bring recent UFSDA development into g-w. Resolves #1972 commit 962368884991670d3a1ee1c5a065d5bce4b7561a Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Thu Oct 26 16:10:23 2023 -0400 Test tarballs for rstprod before calling chgrp (#1967) Certain tarballs may or may not contain `rstprod` data. For instance, the first half cycle gdas and enkfgdas tarballs will not contain `rstprod`, while future cycles likely will. Also, some systems do not have `rstprod` on them. This will test the contents of the tarballs first before attempting to change the group to rstprod. Resolves #1460 commit c02e118c0ac5485109c9bd33472ff42db309cd9b Author: Jessica Meixner Date: Thu Oct 26 15:05:05 2023 -0400 Update ufs model to version from 10-12-23 (#1933) This updates the ufs-weather-model to the commit hash from 10-12-23 from the HR2 tag. The diffs can be seen here: https://github.com/ufs-community/ufs-weather-model/compare/GFSv17.HR2...68050e58589a82ab509aaefaafdc2a6b90f34e48 Resolves #1811 commit 8556541daa79b0180fde48a58a8dcfb2f8c56ea5 Author: Rahul Mahajan Date: Wed Oct 25 16:15:28 2023 -0400 Fix incorrect usage of CFP on WCOSS2 (#1977) commit 0b5cf9b67a8146d9d4815ea6545f7f2524120d83 Author: Kate Friedman Date: Wed Oct 25 13:17:28 2023 -0400 Update GFS version in index.rst to v16.3.10 (#1976) Update the "State of operations" GFS version number to new v16.3.10 (Annual CO2 fix file update in operations). Refs #1924 commit e817f5dd38c26a88f76d90eb71124f1acbfc5a8f Author: Walter Kolczynski - NOAA Date: Wed Oct 25 02:03:14 2023 +0000 Fix path for marine products (#1966) When PR #1823 was merged, the name of the marine product template was not updated in ocnpost, leading the products to be placed in the wrong location and missed by the archive job. Resolves #1902 commit 7cdfad4eaa7abe0769ff13396c54e6d93afebf8f Author: TerrenceMcGuinness-NOAA Date: Tue Oct 24 22:19:46 2023 +0000 Build GDASapp for CI tests (#1964) * added -u to global checkout so CI test builds tests for GDASapps * Update check_ci.sh needed more quotes --------- Co-authored-by: TerrenceMcGuinness-NOAA commit c58deae0cf078d1ee093529064d74f60482aa3f4 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Oct 24 16:19:04 2023 -0600 Updates for NOAA CSP AWS global-workflow related file paths. (#1970) Co-authored-by: henrywinterbottom-wxdev commit 1b00224e18842cd873eb1779be08f96687e49e1f Author: Kate Friedman Date: Tue Oct 24 14:48:24 2023 -0400 Set SENDCOM=YES for tracker/genesis tasks (#1971) Set SENDCOM to YES in config.vrfy to get outputs copied back to COM. Will reevaluate the need for SENDCOM when moving the tracker/genesis jobs out of the vrfy job with issue #235 work. Refs #1947 commit e2c624d8904cd988394c73d0edb22fa593229d3f Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Oct 24 13:32:52 2023 -0400 Refactor UFSDA ATM var and ens layout (#1945) commit 8940adddfe9d21189740e71487603fb2acee2336 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Oct 24 11:02:29 2023 -0400 Optimize the checkout script (#1956) * Multithread the checkout script #1953 commit 4b5cd0bc435fc158258ca38c3d5f44add6b60469 Author: Rahul Mahajan Date: Mon Oct 23 12:04:26 2023 -0400 Fix nth_eupd in gfs/config.resources. remove sections of jobs not run as part of gefs from gefs/config.resources (#1952) commit 08ce4f8d3ed8e07b4d488a80b5054c6206b04404 Author: Walter Kolczynski - NOAA Date: Fri Oct 20 16:14:53 2023 +0000 Fix enkfgfs cleanup dependency (#1941) When #1906 was merged, the dependency for enkf cycles was hard-coded to use the enkfgdas archive instead of depending on the `RUN`. commit 1a5d0b51642eb70f71e693355e86212d3607b7b3 Author: Walter Kolczynski - NOAA Date: Fri Oct 20 15:54:33 2023 +0000 Split clean-up into separate job (#1906) Moves the clean-up that was previously done in the archive jobs into their own separate job. The clean-up is also streamlined considerably by using only `COM_TOP` instead of going through every template. There is also additional streamlining/corrections in the function that does the actual removing. Some settings used by both jobs were elevated to `config.base`. Others only needed for cleanup were moved to the new config for that job. Also corrects a small error encountered when attempting to rerun an ensemble forecast. Resolves #583 Resolves #1872 commit 3de102c28daf9eb50ce65e0afe911f5a416ce861 Author: Rahul Mahajan Date: Tue Oct 17 09:30:18 2023 -0400 Updates to CI to clarify HOMEgfs (#1931) * replace HOMEgfs_PR with HOMEgfs, and HOMEgfs with ROOT_DIR. ROOT_DIR is the location where the ci scripts live * update type to system in case yamls * move create_experiment.py to workflow/ * detect HOMEgfs in create_experiment.py based on location. update to use jinja templates in the cases * remove export of HOMEgfs from driver.sh commit bfea2594207a477ea00e3b7fef95c2d7befd492b Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Sun Oct 15 23:27:47 2023 -0600 Remove SENDCOM (#1929) This PR addresses issue #1501. All instances of `SENDCOM` gates have been removed. The workflow was inconsistent in its use of `SENDCOM` to gate movement of files to `COM` and have been removed based on NCO guidelines. Resolves #1501. commit 9a8911a0b30f0367d061facfb3b835480728081d Author: TerrenceMcGuinness-NOAA Date: Fri Oct 13 14:21:01 2023 +0000 update nth_eupd to 8 for Orion because of out of memmory errors (#1927) Co-authored-by: TerrenceMcGuinness-NOAA commit ea4dfa5800b5cb529478cc64d329f567393fa37d Author: Guillaume Vernieres Date: Thu Oct 12 21:29:19 2023 -0400 Marine DA configuration updates (#1922) Minor updates the configuration related to running the marine DA and the coupled UFS. What's proposed in this PR: - Memory increased for the marine DA analysis step - The coupled UFS is (was?) running out of memory without the changes in `config.ufs`. - Updates to the IAU section of MOM_input to allow for a current increment. commit c2d112b40a926c9f33a653cfbb832cb811a60352 Author: TerrenceMcGuinness-NOAA Date: Thu Oct 12 23:52:43 2023 +0000 Fix missing pipe in check_ci (#1926) Bugfix: left out pipe to word count` | wc -l` after updating: `num_platforms=$(ls ../platforms/config.* | wc -l)` to `num_platforms=$(find ../platforms -type f -name "config.*")` when it was flagged by the BASH linter. commit 51d93e15eb30382017aaf72813d34f7010f47948 Author: TerrenceMcGuinness-NOAA Date: Tue Oct 10 19:09:26 2023 +0000 Updated cron bash ci script to remove weekly CI test PR on success (#1915) This PR updates the check CI bash script in cron to remove the PR that is created by the weekly CI test driver when all the tests has passed on all the platforms. This is done by the script checking if all other labels for all the platforms for the PR that has currently been flagged to have run to a successful completion by the check ci bash script. commit 2d64b74a0b0407d01d6f657efa6af9637a131448 Author: TerrenceMcGuinness-NOAA Date: Wed Oct 4 22:33:25 2023 +0000 CI driver_weekly bugfix deleting new branch if is already on repo (#1899) Bugfix and updates to weekly CI test that deletes the new modified branch if it is already on the repo but now also makes sure that the intermediary branch that creates the PR is coming from emcbot. commit e4a6c35ae020253f07921ca34a17f19e928b0b6c Author: Rahul Mahajan Date: Wed Oct 4 09:42:12 2023 -0400 Fix typo in cice history filename commit d50938bc4f6705b722338bbea03f925614f953ed Author: Walter Kolczynski - NOAA Date: Tue Oct 3 23:37:39 2023 -0400 Change metp dependency (#1900) MET+ jobs rely on files already having been placed in the local archive directory, but the job only depended on post, resulting in the job prematurely firing. The dependency is now updated to be on the archive job instead. Resolves #1756 commit 836642bb201cd2e5e205eda2ae4a28993623355d Author: Rahul Mahajan Date: Tue Oct 3 14:45:57 2023 -0400 Use deterministic marine resolutions for ensemble (#1894) This PR determines the ensemble resolution for ocean, ice and waves based on the deterministic configuration as there is no dual-resolution capability requested for these model components. For cycled DA, if the deterministic uses a coupled model, the ensemble will also be a coupled model. This can be turned off manually via adding `DO_AERO_ENKF`, `DO_OCN_ENKF`, `DO_ICE_ENKF` and `DO_WAVE_ENKF` flags set in `config.base` or `config.efcs`. This is currently handled manually and will be automated when a requirement arises for this flexibility. Fixes #1730 commit 48ba775909870f0d27275128bd07ec134b92c356 Author: Kate Friedman Date: Mon Oct 2 13:34:02 2023 -0400 Update vrfy.sh to only run MINMON in cycled mode (#1901) Update MINMON if-block in jobs/rocoto/vrfy.sh to only invoke this section when MODE is cycled. Refs #1076 commit e65162f3083c34b639854e3216e2355ff6fccc0b Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Sep 29 19:18:07 2023 -0400 Update module loads to intel/2022 for jobs running gsi.x and enkf.x (#1882) This PR changes the module loads in g-w jobs `anal.sh`, `eobs.sh`, and `eupd.sh` to use machine specific modulefiles from `sorc/gsi_enkf.fd/modulefiles`. This is necessary because [NOAA-EMC/GSI#571](https://github.com/NOAA-EMC/GSI/pull/571) updated `gsi.x` and `enkf.x` builds to intel/2022 on NOAA RDHPCS machines. Resolves #1863 commit cd439d0bf2ae5fb57139fcb9983aa2755fdc9b2c Author: Rahul Mahajan Date: Fri Sep 29 15:35:54 2023 -0400 Add coupled forecast-only tests for S2S and S2SW (#1895) This PR: - replaces the PR C48 S2S forecast-only test with a S2SW configuration - adds a weekly C384 S2SWA forecast-only test. The C384 S2SWA is a weekly test and will not be triggered/tested in this PR, but will be tested on Friday. See notes on Orion below in the testing section. @JessicaMeixner-NOAA kindly provided the details in https://github.com/NOAA-EMC/global-workflow/issues/1794#issuecomment-1740768751 commit 02787fe9ba9e5a6881e5ccf9a9e352545eeadb9d Author: TerrenceMcGuinness-NOAA Date: Fri Sep 29 18:03:23 2023 +0000 Ci rename platform scripts (#1896) Simply renaming the platform config files in ${HOMEgfs}/ci/platforms to config.${MACHINE} so wxflow can read them too in support of up and coming functional testing. commit bb5a58541d6514d16901dca240dfbbc810bd31c8 Author: Walter Kolczynski - NOAA Date: Fri Sep 29 13:28:39 2023 -0400 Merge S2S defaults config back into other configs (#1876) When the prototype S2S was first added, we placed some settings in a `config.defaults.s2sw` file to avoid interference with existing settings. Now that we are moving towards v17 and run S2S regularly, it is time to merge these settings back into the other config files. The wave output frequency settings are updated to the coarser fre- quency as that is more suitable for development. The prior (ops) settings are noted as comments. There are a couple of settings that control ice fields within FV3. These are placed in `config.ice`, so when the ice model is on those settings are still used. Changes the output frequency from 3 to 6. While we may leave this setting as the default for development, it is required right now because the ocean frequency is hard-coded to 6 but links are created based on `$FHOUT_GFS`. Resolving #1629 should correct this limitation. "Gaussian" archive is updated to the former override values. Resolves #1606 Refs #1629 commit 49dc315c1ef6c5f4952a06b0ba70c36e771f128e Author: Walter Kolczynski - NOAA Date: Fri Sep 29 13:25:58 2023 -0400 Move product functions to separate script (#1891) PR #1822 converted some formerly stand-alone scripts and moved them inside one of the standard product scripts. However, `trim_rh.sh` is also used by gempak and AWIPS, so this change caused those jobs to start failing (they are not yet tested by CI). Those functions have now been moved into a separate product functions script that can be sourced by all the scripts that need the functions. A third similar script was also eliminated and converted into a function. Additionally fixes a base bug in AWIPS and updates some scripts to satisfy (or at least mostly satisfy) the linter. **AWIPS still failing when creating GRIB1 products.** That will be addressed in a future PR (and may need a subject-matter expert). Resolves #1890 commit 3e750d10be577106fb269a78e18765b8d2b8030d Author: Rahul Mahajan Date: Thu Sep 28 16:21:52 2023 -0400 Fix a few bugs reported by devs (#1893) This PR fixes a few bugs that were reported by developers: - a namelist section is unclosed in `parsing_namelists_FV3.sh` - resolution is not being properly cut from `CASE` - date should be in UTC to properly go back and forth around DST dates. Resolves #1796 commit e886e8aef633389d65e23cc42456827e1db2a771 Author: Kate Friedman Date: Tue Sep 26 13:01:17 2023 -0400 Fix wavepostbndpntbll data dependency (#1888) Update the data dependency path for the wavepostbndpntbll job to use the ATMOS/atmos subfolder instead of WAVE/wave for the atm.logf file it needs to fire off. Refs #1887 commit bb1e561c6a519b9b1cf3fb3ac724e2d240bc3b5b Author: Andy Tangborn <71304161+andytangborn@users.noreply.github.com> Date: Tue Sep 26 11:08:49 2023 -0400 Update aero analysis for new bump files and archive aero diags (#1886) This PR updates the global workflow so that it can handle the latest version of the JEDI aero staticb, and also archives the aerosol diagnostic files. commit 3d2b72ecd395585f650b2801b2ec3471bd938d63 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Sep 26 02:59:18 2023 -0400 Fix IC linking in setup_expt.py (#1885) This fixes a bug in IC linking within setup_expt.py by correcting the date string based on experiment start type -- warm starts should look at `rdate` (-6 hours) and cold starts should look at `idate` (current cycle). Fixes #1783 commit 527aa16d8e003ddb65e6ed4e1b5b47fb79fa5921 Author: TerrenceMcGuinness-NOAA Date: Mon Sep 25 19:59:25 2023 +0000 Update main CI driver to remove previous RUNDIR (#1883) Removes `${STMP}/RUNDIR/${pslot}_sha` before creating an experiment to avoid name cashing on restarts Resolves #1881 commit 11c90d8b028660e1d33ec267db408d36f3b91adf Author: TerrenceMcGuinness-NOAA Date: Mon Sep 25 18:17:22 2023 +0000 syntax error and NOAA-EMC user update and update PR as draft (#1880) Co-authored-by: Terry McGuinness commit d1dcad98092174f3aa86d1dc96a494d6026c5321 Author: TerrenceMcGuinness-NOAA Date: Thu Sep 21 14:17:43 2023 +0000 BASH GitHub CLI version of High Resolution cases used for CI weekly tests (#1869) A BASH script using **GitHub CLI** is added to create a branch from _develop_ named _weekly_tests_ and moves the cases from `$HOMEgfs/ci/cases/weekly` to `$HOMEgfs/ci/cases/pr` and then opens a PR and labels it with _CI-Hera-Ready_ and _CI-Orion-Ready_ thus creating a weekly high resolution test run that can easily be launched by a **cron** job. Resolves #1663 commit 861cfc3a643ee322b4ee04cdcb04f824444cc8d7 Author: Walter Kolczynski - NOAA Date: Mon Sep 18 13:29:49 2023 -0400 Fix post octal bugs (#1859) Yet more base bugs were found in post. To eliminate these once and for all, `fhr` is changed to have no leading zeros, and places where the zero-padded string is needed now use `fhr3`. Resolves #1195 commit a749f116558f9cf50958228d89482c62b19726ec Author: Rahul Mahajan Date: Fri Sep 15 16:35:58 2023 -0400 Simplify downstream atmos product generation scripts (#1822) This PR came about attempting to understand how the atmos downstream products are generated from the master grib2 files before they are updated to python-based scripts and improved control. This PR: - removes explicit if blocks over the two downsets that largely repeats the same operations and condenses into a loop - introduces a generic `run_mpmd.sh` that is tested on Hera and WCOSS2 and can be used elsewhere in the global-workflow. Its input is a script that needs the instructions to be executed, one-per-line. No change in information content is expected from this update to the products. This PR is necessary if the global-workflow team is to mange the post processing and product generation scripts. commit 2b73f0e69cb1e8e590e23244032a49f3ca3f5714 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Sep 14 09:51:01 2023 -0400 Remove STRICT=NO from OCEAN jjobs (#1861) commit 9d5d316872e6b7c32ea144415a67d897e552c0cd Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Wed Sep 13 22:43:56 2023 -0400 Update gsi analysis script and fix files with gfs v16.3.9 changes. (#1858) GFS v16.3.9 was implemented 20230911 12Z. The following changes were implemented into operations: - turns off ingest of NOAA-21 radiances into the GSI, - PlanetIQ GPSRO and NOAA-20 OMPS (Ozone Mapping and Profiler Suite) Ozone retrievals will be actively assimilated, - OMPS observation errors will be adjusted. g-w PR #1852 brought these changes into g-w branch [`dev/gfs.v16`](https://github.com/NOAA-EMC/global-workflow/tree/dev/gfs.v16). This PR brings the same changes into g-w `develop`. Fixes #1856 Fixes #1857 Related to, but not dependent on, GSI [#621](https://github.com/NOAA-EMC/GSI/pull/621) commit ffa9445dc965a0dc95074468ab6eb50fb10ef191 Author: Jiarui Dong Date: Wed Sep 13 09:59:39 2023 -0400 Add the capability to assimilate the MADIS snow depth data from GTS (#1836) * Update the GDASApp's commit hash. commit 5d04b6587e212121a9982e9ddb15f8dc43a43f5e Author: Kate Friedman Date: Tue Sep 12 12:21:06 2023 -0400 Update RTD index.rst for new GFS version (#1853) GFS now v16.3.9 in operations. Refs #1813 commit 1842c22f4f4afe945e32382dec6f48a2b2830123 Author: Anil Kumar <108816337+AnilKumar-NOAA@users.noreply.github.com> Date: Tue Sep 12 09:21:11 2023 -0400 Convert IC staging job into a proper j-job (#1806) commit 0a84646a7b312dad82997a028dcc970aac705d01 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Sep 11 17:21:55 2023 -0400 Add jjob stub for prospective ocean analysis prep observation task (#1831) commit 06c2e284bf41a812c9f6c38bc31cbc9737454d72 Author: TerrenceMcGuinness-NOAA Date: Mon Sep 11 11:25:57 2023 -0400 Introducing weekly vs pr cases for CI (#1844) * adding cases for weekly tests and tests for each pr * updated path for cases to cases/pr in the main cron driver script to reflect new tree structor in cases dir in support of weekly vs pr based ci tests --------- Co-authored-by: Terry McGuinness commit af876c2fe858daf287eb139d9d3dfa793cbcd927 Author: Cory Martin Date: Fri Sep 8 14:38:12 2023 -0400 Fix eupd after GSI PR 602 (#1835) https://github.com/NOAA-EMC/GSI/pull/602 was merged in without the subsequent script changes needed in the workflow. This PR fixes that. commit 4d6ba2f621321b867198702f97a04de2632df373 Author: Saeideh Banihashemi <91982033+sbanihash@users.noreply.github.com> Date: Thu Sep 7 15:19:27 2023 -0700 adding gefs wave points to parm.wave (#1841) Co-authored-by: saeideh banihashemi commit 09530b44a814c4d1cbe229345a5e81fdb196ea08 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu Sep 7 15:33:39 2023 -0400 Add a job to prepare ioda format dumps for use in atmospheric UFS-DA (#1826) Add a job to convert bufr format GDA dumps to ioda format for use in atmospheric UFS-DA. Resolves #1820 commit 48e9a99a5968f09a126b126511a59954ce50f651 Author: Kate Friedman Date: Thu Sep 7 13:16:35 2023 -0400 Fix bufr sounding job (#1834) * Update logf filenames for postsnd job scripts * Update gfs-utils hash in checkout.sh Refs #1832 commit 573ecce89262bb8d11e7ce2808742b7f1d9be938 Author: Cory Martin Date: Thu Aug 31 15:53:40 2023 -0400 Changes to get C48 aerosol test ready (#1829) This PR partially addresses #1821 in that it allows for a C48 simplified aerosol 3DVar test using the workflow to run in GDASApp CI testing. The workflow team will be able to adapt this test case for their CI testing with minimal effort. This limits the C48 aerosol analysis to 6 PEs and updates the hash of GDASApp to a stable build from this morning. Refs #1821 commit 63270daf00ddb6c9b3cb546bcb2e4532d181def7 Author: Jessica Meixner Date: Wed Aug 30 15:49:51 2023 -0400 Final Updates for HR2 (#1827) This PR has the final updates for HR2. There was one added variable for diagnostic output: `iopt_diag=3` and required from land team. This also points to HR2 updates for initial conditions which update the land states in `sfc*` files compared to HR1. Lastly, it was determined that the setting to enable running on hera `WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20` actually will fail on WCOSS2. While not ideal, a setting that would run out of the box on both hera and wcoss2 for C768 could not be found, therefore a comment was added noting WCOSS2 needs to use a different setting until it can be resolved. Resolves #1500 commit 181d2e790b07aa36a06f7729ef4496cf38f05634 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Mon Aug 28 08:03:56 2023 -0600 Add documentation to RTD for NOAA-cloud(#1779) commit 11ecb2033e4411c4c00b32dd6de1430b06122f8d Author: Walter Kolczynski - NOAA Date: Mon Aug 28 09:35:16 2023 -0400 Update issue templates to use forms and improve all templates (#1817) * Convert issue templates into forms (PR's do not allow forms) Resolves #1747 commit 0ab4d72d3ec467272c7a66113b54570324b9f0a4 Author: Rahul Mahajan Date: Mon Aug 28 09:30:34 2023 -0400 Rename COM_ATMOS_GRIB_TMPL as COM_ATMOS_GRIB_GRID_TMPL. (#1823) commit 1f8bf784b89d89a2602ce951948043f2b4115660 Author: Walter Kolczynski - NOAA Date: Fri Aug 25 09:52:04 2023 -0400 Add filter to doc build action for PRs (#1809) A path filter was applied to pushes, but none was applied to PRs, causing the GH action to build documentation to fire every time a PR is opened or updated. Resolves #1791 commit cc21f2bea2e40c69ae96b8e70fb913008f86332e Author: Walter Kolczynski - NOAA Date: Thu Aug 24 00:05:14 2023 -0400 Replace full-path restart links with relative links (#1816) Symlinks for the final restart time used the full path name, even though the targets are in the same directory. This means the links would break if the directory were moved or (more importantly) put in a tarball. The links have now been replaced with relative links. Resolves #1446 commit c7fdee864700984914f6172e1e2d371b491c6c8a Author: Jiarui Dong Date: Tue Aug 22 22:34:55 2023 -0400 Copy land increments and land DA confs to COM (#1797) This PR creates `COM_CONF_TMPL`, copies the YAML files generated for land DA from initialize to COM and copies the increment files to COM. commit 282a10c04635e1a1fb4b56e8e79643a052b33eac Author: Jessica Meixner Date: Mon Aug 21 11:08:30 2023 -0400 Fix hi-res resources and CMEPS write time, add WW3 restart (#1805) We're getting ready to run HR2 and in the process have found a few minor bugs. While these shouldn't effect others running low resolution cases, I wanted to push these bug fixes for anyone trying to run high resolution. These bugs address: * Issue #1793 Adding extra tasks to write component for hera for C768 (otherwise crashes due to memory) * Avoiding requesting two wave restarts at the same time (this is a known bug that the workflow usually has work around for. A fix for the underlying WW3 bug should be coming within the next month, but this will get us through that waiting period) * Adding a setting that was missed when updating the ufs-waether-model that ensure that CMEPS restarts are written in a reasonable time (See: https://github.com/ufs-community/ufs-weather-model/issues/1873 for more details) commit df5f941dee574940ac4fc7e710e64f66aaad986c Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Aug 18 15:16:49 2023 -0400 Create and populate ensemble directory for UFS-based ATM DA (#1801) Adds scripting to stage ensemble files for use in hybrid variational and ensemble UFS-based atmospheric DA. commit 17c9d5789566a030b0628617e56fb14993ed2cc8 Author: Rahul Mahajan Date: Thu Aug 17 15:25:32 2023 -0400 Remove RUN_ENVIR from as many places as possible (#1802) This PR: - eliminates superfluous `RUN_ENVIR` definitions from jobs and scripts as `config.base` contains that definition and all jobs must source `config.base`. - retains `RUN_ENVIR` conditionals in `configs` where it is necessary to distinguish between datasets as well as in genesis and tracker jobs where external directories to GFS are created to place products. Fixes #1220 commit 61c9186279a00ff3acf99e260e3b2848a6626805 Author: Rahul Mahajan Date: Thu Aug 17 15:24:28 2023 -0400 Fix RTD deprecation notice (#1803) This PR: - describes the `requirements.txt` file for RTD documentation deprecation notice described in issue #1798 fixes #1798 commit 8b19f4217e2b200b3ea3995d0038acdce19e6a6b Author: Walter Kolczynski - NOAA Date: Sun Aug 13 22:42:51 2023 -0400 Fix f-o mode not sourcing postsnd when soundings are on (#1790) Soundings are allowed in forecast-only mode, but the config file would not be sourced during experiment creation. Now the config file is sourced if bufr soundings (`DO_BUFRSND`) are on. Resolves #1431 commit 8d088b30c34947f391bb823e1e8399b5b8f0154b Author: Walter Kolczynski - NOAA Date: Wed Aug 9 17:50:31 2023 -0400 Fix typo in PR RTD message commit a4b66c312277d6e8e49c5dc7521cb2f285b88c9a Author: TerrenceMcGuinness-NOAA Date: Wed Aug 9 21:42:12 2023 +0000 Add link to RTD build for PRs (#1786) Create a message in PR with link to the PR's ReadTheDocs before it's merged. Fixes #1610 commit 1d38e971692aa84f451cf34b3517eb2f4aaf13a0 Author: Walter Kolczynski - NOAA Date: Wed Aug 9 15:13:55 2023 -0400 Use GEFS post file for GEFS (#1782) The GEFS configuration is updated to override the default (GFS) post flatfiles when running GEFS. Resolves #1750 commit ba566f53b3b9ff86c66dbddf449974f492bb2630 Author: Walter Kolczynski - NOAA Date: Tue Aug 8 21:04:43 2023 -0400 Fix unbound PS1 message from module-setup (#1781) Turns off unbound variable checking when calling `module reset` on Hera and Orion to supress message about PS1 being unbound since correcting it is outside the control of workflow. Resolves #1780 commit ca7d242e893b8f0f3f54f08608990cac5e5f01f3 Author: Cory Martin Date: Tue Aug 8 13:37:12 2023 -0400 Move GDASApp to CRTM 2.4 (#1773) This PR moves the GDASApp to CRTM 2.4. It also removes the need for the global-workflow team to maintain CRTM coefficients in their fix space, instead we should be linking/copying them from wherever the CRTM coefficients are stored (like the way GSI does it). For now, that is an 'unofficial' location, but will eventually be the 'official' one. commit fe97b1963fa4ea75b2edd4e50e8968dc5a09b55e Author: Rahul Mahajan Date: Mon Aug 7 05:01:42 2023 -0400 Add a gefs test (#1774) This PR: - temporarily adds a hack to allow testing of the GEFS forecast until the staging is automated. - adds a test for GEFS - updates `setup_expt.py` to compartmentalize gfs and gefs setup options. GEFS has a single mode `forecast-only` and is necessary for `create_experiment.py` to work as designed. To eliminate it would need major work. commit 570206aeaecb6701569bc127ee858387038d9439 Author: Walter Kolczynski - NOAA Date: Fri Aug 4 16:47:52 2023 -0400 Fix previous restart paths for ensemble (#1772) GEFS was failing because the rCDUMP in the forecast job was hard- coded to enkfgdas. This resulted in always looking in that directory for previous cycle restart files. This was not caught previously because the manual staging method was copying the gdas directories as well, masking the problem. Resolves #1771 commit ff0778afe6a9ecf39f967cb9a5ec4694badbfac3 Author: Rahul Mahajan Date: Thu Jul 27 20:57:28 2023 -0600 Move UFS parm directories into `parm/ufs/` (#1767) This PR: - moves `parm/parm_fv3diag -> parm/ufs/fv3` - moves `parm/mom6 -> parm/ufs/mom6` - moves `parm/chem -> parm/ufs/chem` - updates scripts referencing this updated path Fixes #1510 commit e8fa7086656053324f46c6cf52634070ab3bef1b Author: HelinWei-NOAA <48133472+HelinWei-NOAA@users.noreply.github.com> Date: Thu Jul 27 22:57:01 2023 -0400 Add soil color data and change the way to read in Noah-MP parameter table (#1697) - A new soil color dataset is introduced to Noah MP to reflect the right soil albedo to reduce the large warm bias found in the Sahel desert. The more-recent and higher resolution BNU soil texture data will be used to replace the old data. - Noah MP parameter table is part of the source code in the current version. The UFS model has to be recompiled whenever there is any parameter change in the table. Therefore we change this structure and the table will become one of the input file to the model. Closes #1614 Closes #1617 commit 04933711eae062499fb891235cfbf7b8e1d8bf94 Author: Rahul Mahajan Date: Thu Jul 27 16:13:33 2023 -0600 Rename parm_gdas as gdas (#1766) commit de7b10aaaf820717e5c618d0c8650db373677349 Author: Cory Martin Date: Thu Jul 27 11:37:30 2023 -0400 Make small changes to get (aerosol) cycling going at C384 (#1763) Trying both ATM C384/C192 cycling with GSI hybrid-4DEnVar (half res of ops) and ATMA C384 3DVar on Hera, I ran into several problems. This PR solves them (for now!) Change summary: 1. The aeroanl layouts are now all 8x8, this is just so that we can use the C96 BUMP files that are 8x8 layout for higher resolutions (this is not expected to be a permanent change, and we will have 'optimized' values later) 2. analcalc would fail (Closes #1738 ), this specifies the amount of memory and allows it to complete 3. The first half cycle C384 forecast would fail, changing `nthreads_fv3` to 2 fixes this 4. The epos jobs do not need 14 nodes allocated, this changes it to 2 nodes, and it runs at this resolution in only 3 mins on Hera 5. A bugfix (missing `f` before a f-string) and changed `_res_enkf` to `_res_anl` because `CASE_ANL` is set in `config.aeroanl` but `CASE_ENKF` will not be set by the setup_expt script if you specify `nmem` to be 0 commit 5ee225a6d099dc37d5d9e5fc57e5a0601a0ef9e6 Author: Bing Fu <48262811+bingfu-NOAA@users.noreply.github.com> Date: Thu Jul 27 15:34:51 2023 +0000 Fix field table missing \n (#1765) commit 3d7bee4802ba314c7897993526df09cd00457cd8 Author: Jiarui Dong Date: Tue Jul 25 23:35:48 2023 -0400 Prepare GTS snow depth observations for JEDI-based Land DA (#1761) This PR: - adds a job to prepare GTS snow depth observations as a task in the workflow. This task depends on the `prep.sh` job to bring GTS adpsfc bufr data. To test this type of data DMPDIR in `config.base` needed to be pointed to "/scratch1/NCEPDEV/global/Jiarui.Dong/JEDI/GlobalWorkflow/para_gfs/glopara_dump". - land_analysis.py introduces a method `prepare_GTS` for this type of data. - Updates are necessary in the GDASApp repo. See companion PR NOAA-EMC/GDASApp#541 The `preplandobs` job runs at the all four cycles in the workflow. The `prepare_IMS` job runs only at 18z cycle, and this is controlled in the script. commit 03c33b5b04897ffcd23b724904ee4d90234d5324 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Jul 24 15:58:06 2023 -0400 Add ush/soca to pythonpath (#1762) Adds ush/soca to pythonpath in ocean vrfy task jjob in anticipation of python code to be added to said subdirectory. commit 4f31327b19cd8b4a58cf5e34191bd6c9b49c5b6a Author: Walter Kolczynski - NOAA Date: Fri Jul 21 18:19:30 2023 -0400 Support coupled GEFS forecast, use mem000 for GEFS control (#1755) Makes the necessary updates to allow the workflow to run (non-wave) coupled forecasts. Some of the coupled functions in postdet had to be updated because they only checked for gfs and gdas runs, so necessary code was never executed. Also updates so that the GEFS control uses `mem000` as the memdir so it appears at the same level as the perturbed members. Relatedly, the default member number in coupled files is changed to 000 instead of 01. Finally, an unrelated error in the earc job is corrected where a character from the middle of the line was moved to the beginning. Resolves #1754 commit 09c66507a5917a4fad71ad99bbddbc355a4ee75c Author: Rahul Mahajan Date: Fri Jul 21 18:18:38 2023 -0400 Add atm-only CI test (#1759) Adds a single atmosphere forecast-only test at C48. commit 14cca3879ef6b3ec748d9bebefd9acbd68967d35 Author: Jiarui Dong Date: Thu Jul 20 12:00:24 2023 -0400 Update snow DA cycling for the fractional grid setting. (#1687) * Update the GDASApp stable-nightly commit hash. * Remove FRAC_GRID dependency from land analysis. Fractional grid will be always be assumed here. * Use SNOWDEPTHVAR="snodl" commit be54ca472ab19f42eb41ff1acc2c2e271365944a Author: Walter Kolczynski - NOAA Date: Thu Jul 20 11:57:58 2023 -0400 Remove unneeded scripts from ufs_utils (#1758) Some of the scripts being linked in from ufs_utils are not needed for global workflow. commit cebad69c754b6033227f5c2a6fe8271360137e00 Author: Rahul Mahajan Date: Wed Jul 19 21:27:18 2023 -0400 Fix SDATE_GFS issue in cycled and forecast-only modes (#1753) On further examination, `SDATE_GFS` in the context of `metp` task is the first date that METP was run and started generating statistics. This is different when doing cycled (`gfs_cyc` determines `SDATE_GFS`). In the case of forecast-only, `SDATE_GFS` is always the date the first free-forecast was launched (`SDATE`) While the fix by @RussTreadon-NOAA worked for cycling, it broke for forecast-only setups and needed to account for the other mode of operation. Fixes #1748 commit 7c7d1c8c7e92f4a25a6e39d3ba5a940d4ba02631 Author: TerrenceMcGuinness-NOAA Date: Wed Jul 19 07:24:48 2023 -0700 Fix CI driver (#1757) Fix bug with HOMEgfs getting populated incorrectly commit 653a8979231bbd6defebac8034494d88f8ef84c7 Author: Rahul Mahajan Date: Mon Jul 17 17:40:39 2023 -0400 Revert "Correct the format for `SDATE_GFS` for `metp` in XML." (#1752) This reverts commit e95228c0566e8dab7e8811d484ecf54af3a0110a. The problem in cycled may be fixed, but it breaks forecast-only. commit e95228c0566e8dab7e8811d484ecf54af3a0110a Author: Rahul Mahajan Date: Mon Jul 17 12:43:00 2023 -0400 Correct the format for `SDATE_GFS` for `metp` in XML. commit 511120ed2c67f06bf508d6d16288ce0c59ec1976 Author: Rahul Mahajan Date: Mon Jul 17 09:45:24 2023 -0400 Enable setup scripts to be callable from elsewhere (#1742) commit 3e96ed5ad84d752fd65cff88bf1804610ec54bf0 Author: TerrenceMcGuinness-NOAA Date: Fri Jul 14 22:15:34 2023 +0000 GitHub Workflow Pipeline (#1740) * added two files for this PR (now that devlop has pslot tag updates) Co-authored-by: TerrenceMcGuinness-NOAA Co-authored-by: Rahul Mahajan commit 15ef84db7283d91cb7ca102194a73005f9614b1f Author: Cory Martin Date: Fri Jul 14 16:05:21 2023 -0400 Change JEDI jobs to grab fieldmetadata from GDASApp rather than glopara fix (#1739) * change YAMLs that are copied * Use new gdasapp hash commit 3520bcbbfe17411a9ef240d38c4cc1f29f55b354 Author: Rahul Mahajan Date: Fri Jul 14 04:18:45 2023 -0400 Move nems.configure templates to `parm/ufs` (#1737) This PR: - moves `nems.configure.*.IN` templates from `ush` to `parm/ufs`. - uses `atparse.bash` from the ufs-weather-model to fill those templates. - make `gefs/config.resources` in WW3 same as in `gfs/config.resources`. - makes use of `HOMEgfs` instead of `SCRIPTDIR` and `script_dir` local variables that are unnecessary aliases and make code understanding easier. - initializes PETS to 0 and then sets the right value if that component is enabled. A follow-up PR will reconcile the templates and use them directly from the ufs-weather-model. Several differences were noticed between the ones in `global-workflow` and `ufs-weather-model` and help may be needed from @junwang-noaa to update the ufs-weather-model (if required). Fixes: #1599 commit 1c40babb64720cc4e5453a1a1488423e7c052c36 Author: Walter Kolczynski - NOAA Date: Thu Jul 13 21:32:15 2023 -0400 Update fit2obs for COM refactor (#1719) Fixes #1486 * Turn fit2obs back on by default Fit2obs had been turned off during the COM refactor because it had not yet been updated for the new paths. Now that the job has been updated, it can be turned back on. commit 631fe61b1fa469abdc9d19dd5e2cc4a7e686ac5c Author: TerrenceMcGuinness-NOAA Date: Thu Jul 13 04:18:45 2023 +0000 Add hash to CI experiment paths to avoid collisions (#1735) commit 84842f455da5dfc976eda21336ae383616ac96d0 Author: Walter Kolczynski - NOAA Date: Tue Jul 11 10:17:44 2023 -0400 Add GEFS atm-only fcst job support (#1731) * Add GEFS fcst job support - Makes the minor changes necessary to run GEFS fcst job only from pre-staged ICs. Also many unnecessary DA settings are removed from the GEFS version of `config.base`. - Stop using DA diag table from GEFS, remove unneeded settings Also removed more unneeded DA settings from the GEFS side. - Use RUN instead of CDUMP to determine output frequencies in forecast Refs: #826 commit 4fdf14421db060f464e03a98650725e4f9b54ca9 Author: Rahul Mahajan Date: Mon Jul 10 12:45:43 2023 -0400 Remove `pygw` and checkout `wxflow` (#1722) `pygw` from the global-workflow has been moved to its own repository at [wxflow](https://github.com/NOAA-EMC/wxflow). This PR: - removes `pygw` and replaces it with a checkout of `wxflow` in `checkout.sh` and `Externals.cfg` Going forward, until `wxflow` becomes a fixture as a module, `global-workflow` will be required to be checked out and is done as part of `checkout.sh` and `Externals.cfg` commit 0a17478260d8ca497eb4606f9e5cf91ceacd1fcd Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri Jul 7 18:24:44 2023 -0400 Updating pythonpath to match changes to ioda (#1724) commit fe5ea7a75e25bf72a728a40af7ec024dc553a8be Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Jul 6 15:19:24 2023 -0600 Add AWS cpu info to resources (#1728) Partition name and node size for AWS were missing from `config.resources`. This information has now been added. Resolves #1727 commit e64b22548e898fb3283c77bb9234100aba54fd44 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Thu Jul 6 13:18:52 2023 -0600 Updates for deprecated numpy versions. (#1726) Using numpy to cast type has been deprecated in favor of using the native python functions (i.e. `int()`, `float()`, etc.). Resolves #1725 commit 188344a01297a8dede34f2f3735536b94b9ab843 Author: Rahul Mahajan Date: Fri Jun 30 11:08:50 2023 -0400 Enable cycling atmosphere DA in 3DEnVar mode with coupled ensemble. (#1718) This PR: - allows self cycling of the ocean and ice components in a cycled atmosphere with 3DEnVar (without IAU). - allows staging of initial conditions for coupled ensemble when setting up cycled ensemble. This PR also includes: - numerous improvements involving appropriate locations for defining relevant variables for components. This PR does not: - address archiving of ensemble data when cycling - probably many other issues that are necessary e.g. IAU Partially addresses #613 commit 2d31847c520e1eebb033970f090d7728929226bb Author: Walter Kolczynski - NOAA Date: Fri Jun 30 09:46:00 2023 -0400 Add S2SA nems.configure template (#1593) * Add S2SA nems.configure template Most of the configuration was setup to allow S2SA, but there was no appropriate nems.configure template. A new one was created by starting with the S2SWA template and removing the wave portions. Also added two UFSDA scripts that were missing from the git ignore list. Fixes #1592 * Update documentation for cycled mode setup The experiment setup documentation for cycled mode had not been updated as coupled capability was added. Also added notes to both the cycled and forecast-only section that ATMW is currently not working. * Update setup_expt to recognize more S2S cycled exps setup_expt would only detect two of the possible S2S options when staging cycled ICs. Refs: #1592 * Change path to volcanic aerosol data The volcanic aerosol data was moved to a new location within the GOCART emissions directory. Refs: #1592 * Disable enkf versions of coupled settings The enkf versions of coupled settings (DO_OCN, etc.) do not work properly because some settings have already been determined by that point based on the non-enkf versions of the settings. The enkf versions are now disabled until there is a solution (see #1692). Refs: #1593 Refs: #1692 * Fix ocnpost detection for gfs free-forecast The task list for the free-forecast was checking against a list of apps that did not include S2SA to determine whether ocnpost is included. That check is now changed to check on do_ocean rather than looking at the app directly. Refs: #1593 commit 279b38df9766a1290dea7f7a1cb8e139a8737974 Author: Walter Kolczynski - NOAA Date: Wed Jun 28 15:54:26 2023 -0400 Fix ocean file locations in archive job (#1716) During the COM refactor, a location for the ocn/ice daily files was defined within the products directory. However, the daily files are output directly by the model and land in the history directory. The archive job was looking in the otherwise unused daily product directory for the files and not finding them. The 2D and 3D ocean files had the opposite problem: archive was looking in the history directory, but these files have their own directories in products. This update now: - Removes the COM variable for the daily files - Updates the archive job to: - pull the daily ocean files from history - pull 2D ocean files from the 2D product directory - pull 3D ocean files from the 3D product directory Fixes #1709 commit ae56219c0059bbe6d34044df490023e17225e6f8 Author: Rahul Mahajan Date: Tue Jun 27 00:48:45 2023 -0400 Move BASE_CPLIC locations to machine host files (#1715) `BASE_CPLIC` depends on the machine. It is now defined in `hosts/machine.yaml` together with other machine specific paths. commit cfc3d9cf6506b9432e414781a40fe6bf637f8ec4 Author: Walter Kolczynski - NOAA Date: Mon Jun 26 14:20:12 2023 -0400 Create gw_setup script and extend to other machines (#1706) * Create gw_setup script and extend to other machines Add a new script to handle setting up the lmod environment needed to run all the setup for checkout and experiment generation. C `checkout.sh` now uses this script as more recent versions of `git` are needed on some machines. Documentation has been updated to recommend this method on all machines rather than the previous instructions. Updates documentation to add the checkout with UFSDA option. Closes #1677 commit 4f03d8b9cf71b3410bf16955d8eb64f62eb26835 Author: Rahul Mahajan Date: Mon Jun 26 14:12:21 2023 -0400 Make consistent use of `restart_interval` across UFS applications (#1700) user will provide a single integer restart_interval (hours) via config.base and config.fcst, config.efcs. scripts will convert this as necessary for model_configure and nems.configure. Logic for determining RERUN revisited based on files available rather than restart list. Fixed a bunch of shell norms --------- Co-authored-by: Walter Kolczynski - NOAA commit 524c71307b4f44729775da420de3fdfcc6a5e1fa Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Mon Jun 26 10:10:02 2023 -0600 Add NOAA CSPs to allowable hosts. (#1714) commit 69946cf786388b17da97ef95e6227f78fa6c61fe Author: Walter Kolczynski - NOAA Date: Mon Jun 26 12:07:07 2023 -0400 Fix octal bug in ocean post (#1712) Fix Ocean post treating zero-padded forecast hours as octals. Fixes #1710 Refs #1195 commit 9b81ad072ad862fdf6fe9d754874767fc709e8c4 Author: Travis Elless <113720457+TravisElless-NOAA@users.noreply.github.com> Date: Mon Jun 26 02:40:52 2023 -0400 Fix early-cycle analysis switch (#1705) By default, the early-cycle EnKF is designed to write analysis files. The switch controlling this was using `$CDUMP` which was changed by PR #1421. This current PR updates this switch to use `$RUN` in accordance with issue #1299, and restores the default analysis file write capability. commit a5d714652231a9c75acd7a5a8e89c1a24c8f4179 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Fri Jun 23 13:07:25 2023 -0600 Add AWS functionality to workflow setup and forecast job (#1708) This PR provides support for running UFS weather model forecasts, using the global-workflow, on the AWS Parallel Works (PW) platform. This PR accomplishes the following: - Building the UFS weather model within the global-workflow build system; - Running a UFS weather model atmosphere-only deterministic forecast using the global-workflow infrastructure. Follow-up PRs will include the following: - Adding documentation for building and using the AWS PW UFSWM spack-stack environment; this is heavily borrowed from Sadegh Sadeghi Tabas's presentation 03 May 2023; - Addressing remaining `TODO` issues within this PR; several notes are made throughout as to how to better streamline the connections between the UFSWM and the global-workflow for the respective cloud platforms; - Adding data-transfer capabilities within the global-workflow for cloud deployments; - Testing additional UFSWM capabilities (e.g., coupling, etc.,) and resolutions (this PR has been tested at C48 and has not been configured for other cubed-sphere resolutions). No dependencies other than the loading of the appropriate AWS PW modules are required. These are included in this PR. commit cc1bea74d34f74d5d8c1fc66194f4ec16462221f Author: Walter Kolczynski - NOAA Date: Thu Jun 22 16:39:44 2023 -0400 Revert "Add AWS functionality to workflow setup and forecast job (#1667)" (#1707) This reverts commit 38cd0bc9722bd17829da2d04828858d901812f9b. commit 38cd0bc9722bd17829da2d04828858d901812f9b Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Sun Jun 18 08:33:22 2023 -0600 Add AWS functionality to workflow setup and forecast job (#1667) commit 53a88c352f85563133cfd22484e1c2b22d5652ad Author: TerrenceMcGuinness-NOAA Date: Thu Jun 15 13:09:28 2023 -0400 Report error logs from experiment setup to GitHub (#1694) When setup_expt.py or setup_xml.py fails in CI, the error logs are now reported back to the user via the message stream in the PR. Fixes #1672 commit 173a25bd6d6afdf2be5f3fe3541b7c6ccc0d8e59 Author: Jessica Meixner Date: Wed Jun 14 16:31:30 2023 -0400 Fix wave gridded post logic for glo_025 (#1689) A recent fix of another issue meant that wave config settings were set incorrectly for glo_025 resolution. This removes pass through options which caused the issue since a few variables were intentionally set to nothing but then were set incorrectly to another default. commit 7ede78d2663a6fa62cfc89ba7ac3f6b37a185e85 Author: Rahul Mahajan Date: Wed Jun 14 13:54:28 2023 -0400 Update UFS hash and update compile signature (#1690) Updates the UFS hash to bf60924. This required a change in the compile signature due to changes in UFS to how the compiler is defined. commit 1e7657c1d014136c78b1c1fb0f9d6cfc39b263ef Author: TerrenceMcGuinness-NOAA Date: Tue Jun 13 19:56:40 2023 +0000 Update README.md badges based on PR CI Labels (#1685) Updates the state of GitHub badges based on the results of CI testing of the last PR to easily see the state and stability of the develop branch. GitHub's Workflow Actions are used to generate the badges in the README.md file for the development branch. The GitHub Actions will update the badges only when a PR is merged to the **develop** branch and only update them according to the state of the Labels in the PR itself. This Action must be able to use the final state of the CI labels of the PR. The labels must therefore be dynamically "pulled" from the PR just before it is merged. Here is the map between the Label states and the Badges (for Orion and Hera respectively): ``` Pass -> Pass Fail -> Fail None -> Pending ``` For example, if the Badges are currently _Pass_ and a PR is merged without CI test Pass Label the corresponding Badge will be updated to _Pending_. Fixes #1643 commit 1595ce026cf76ac50cc7f824063d221e1ca2554f Author: TerrenceMcGuinness-NOAA Date: Tue Jun 13 19:18:55 2023 +0000 Use test cases from PR for CI (#1670) This feature changes the CI system to use the test cases from the PR in question. This allows the PR to add or modify tests and have them applied to itself to ensure they work. Fixes #1662 commit 47f1954b5c73b2fbb2e38e3a165bf3c2520147d2 Author: Rahul Mahajan Date: Mon Jun 12 16:23:03 2023 -0400 Add new python-based offline UPP (#1676) The global-workflow runs offline UPP to generate master (and optionally flux) grib2 files for: - analysis - GOES simulated satellite imagery - WAFS products WAFS has been removed from the global-workflow in a previous PR. The offline UPP and product generation in the current workflow is done in a single job. This PR aims to partition the offline UPP from the product generation (for atmos grib2 files). The changes in this PR are not yet activated in the workflow. The offline post is now completely yaml driven for all the variants of the upp run conditions. In a future PR, product generation jobs will be added and subsequently current post-processing jobs will be retired. commit ab6c325aa2b0ae598a1e0b5ee27daa31d5b34221 Author: Rahul Mahajan Date: Fri Jun 9 11:28:57 2023 -0400 Perform JEDI LETKFOI analysis for snow depth (#1635) Add JEDI-based LETKFOI update for snow depth analysis in the global-workflow. These jobs are run in a single landanl task. Additional filter to_f90bool is added to jinja template processing. commit 1eb2c91b3526ee4422f7ba3c23a879013eebf42c Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Jun 6 18:45:11 2023 -0400 Update GSI hash to bring in updated GSI-fix, change gsi_ver to be consistent with updated GSI-fix (#1650) (#1666) commit 5c57509498af2e80534e4ecac3c1c972d02f1f73 Author: Rahul Mahajan Date: Tue Jun 6 18:44:16 2023 -0400 Update dependency on mom restarts for 1/4 degree in coupled_ic job (#1665) commit 72650dd97bbd1991613e6c34b384a5eec46f9634 Author: Walter Kolczynski - NOAA Date: Fri Jun 2 02:57:20 2023 -0400 Update pyenv on Hera and Orion (#1661) Switches the runtime pyenv from ufswm to gfs_workflow on Hera and Orion. gfs_workflow is the new one created just for workflow and is the target going forward. CI modules have already been using it. commit 1c40edff7c18cb168edf8a258f1ad11dc6cd9bfa Author: Jessica Meixner Date: Thu Jun 1 17:23:12 2023 -0400 Fix bug in wave interpolated post config file (#1659) Update logic for interpolated wave gridded post Fixes #1658 commit 755230bad6a6ccbee9f8c3e7b9e5760d07f3db4e Author: Walter Kolczynski - NOAA Date: Thu Jun 1 16:53:03 2023 -0400 Remove vestigial applications.py (#1660) In PR #1601, the removal of the old `applications.py` was inadvertently excluded. commit c6964caaf636c089ffb06eee7622ebc77e9ada47 Author: Walter Kolczynski - NOAA Date: Thu Jun 1 15:40:41 2023 -0400 Add GEFS support to rocoto XML generation (#1601) To facilitate this, a few classes were refactored into abstract classes with child classes for each of the three `$NET`/`$MODE` combinations (gfs/cycled, gfs/forecast-only, and gefs). These child classes then implement the details particular to their configuration. GEFS is implemented as only forecast jobs right now: a fcst job intended for the control and a metatask of efcs jobs intended for the perturbed members. A couple of additional config files were needed in order to parse the configs; these were copied from the gfs versions. Beyond that, changes have not yet been made to update any configs for GEFS. For instance, in contrast to GFS, even the control member of GEFS will want `MEMDIR` defined (to 'mem000'). Fixes #1577 commit dce693bc9834116a2afd75c5eb195d526139a016 Author: TerrenceMcGuinness-NOAA Date: Thu Jun 1 14:41:43 2023 +0000 Reset CI tests when PR tags are set back to 'Ready' (#1651) Adds updates to the CI cron BASH scripts that track an ID based on how many times the label gets updated to Ready. This ID count is used in the driver script so that it can distinguish a real fail and one caused by removing the current build that is overwritten by a new Ready request. Fixes #1649 commit 8697c4cf9b6c45001b59f58db57a2d214724d247 Author: Jessica Meixner Date: Thu Jun 1 10:01:34 2023 -0400 Add support for waves at low resolution (#1653) This adds an option for 2 or 5 deg global wave models, which will provide a light weight version to assist in engineering development. -- This PR requires PR #1648 to be merged as this builds on it as well as issue #1652 which adds the fix files needed for this PR to be addressed first. The resources were chosen to stay under 1 or 2 node and be faster than the atm component. - Fixes #1333 commit a95b2ffb342a46844b08feba53640c8ec33f3fa3 Author: CatherineThomas-NOAA <59020064+CatherineThomas-NOAA@users.noreply.github.com> Date: Wed May 31 04:59:03 2023 +0000 Explicitly define IAUFHRS for DOIAU=NO case (#1657) IAUFHRS and IAUFHRS_ENKF are defined in config.base, but they were not reset to the default value if IAU is off. This commit sets IAUFHRS and IAUFHRS_ENKF to "6" in config.base if DOIAU or DOIAU_ENKF are set to NO. Refs: #1557 commit d6ae3d00080d22f9a546a6991040d7d99011c068 Author: Jessica Meixner Date: Tue May 30 15:13:45 2023 -0400 Add support for forecast-only low resolution (#1648) This PR ensures that we can run C96 5deg and C48 5 deg for 2021032312. Two accompanying fix file updates for this PR: #1645 and #1647. Thank you to: @sanatcumar @barlage @HelinWei-NOAA Bing Fu @jiandewang @guillaumevernieres @aerorahul @NeilBarton-NOAA and others who helped provide input, fix files, directions, and other help! commit 7db620859507b12fcc858f784bfb5b610d055db2 Author: Kate Friedman Date: Tue May 30 00:29:18 2023 -0400 Introduce version file support into develop branch (#1644) Introduces the use of version files in the `develop` branch. This initial introduction will use version files for runtime only. The ability to force version files for build is included but commented out for now. A follow-up PR will turn on build version forcing when ready. Changes include: 1. Update `module_base.*.lua` modulefiles to use module version variables and remove hardcoded versions. 2. Introduce `build..ver`, `run..ver` files in the `/versions` folder. 3. Update `sorc/link_workflow.sh` to create `build.ver` and `run.ver` under `/versions` folder based on `build..ver` and `run..ver`. 4. Introduce sourcing of `run.ver` in `ush/load_fv3gfs_modules.sh` 5. Introduce sourcing of `build.ver` in `sorc/build_all.sh` but commented out for now. Components will continue setting their module versions for the time being. 6. Update `HOMEens_tracker` in `config.vrfy` to use `tracker_ver` from version files. 7. Replace obsproc version in `HOMEobsproc` setting in `parm/config/gfs/config.base.emc.dyn` to use `obsproc_run_ver` from version files. Resolves #671 Resolves #1625 commit 0004efef16fb12af771dc7cf780991ea8aa37de7 Author: Kate Friedman Date: Fri May 26 19:55:21 2023 -0400 Update DMPDIR for WCOSS2 (#1656) Updates `DMPDIR` (global dump archive path) on WCOSS2 to the new dedicated path: `/lfs/h2/emc/dump/noscrub/dump` Closes #1655 commit 25082d8a6ca2c3b635b925d1252e5df942f3c5cf Author: Kate Friedman Date: Fri May 26 10:12:28 2023 -0400 Update issue template assignees to remove KateFriedman-NOAA (#1654) * Update fix_file.md - remove KateFriedman-NOAA * Update production_update.md - Change auto assignee from KateFriedman-NOAA to WalterKolczynski-NOAA * Update NCO_bug_report.md - Remove KateFriedman-NOAA commit 334fc6fc682e49ea645cddbeae3b45de4917baa5 Author: Rahul Mahajan Date: Tue May 23 19:44:02 2023 -0400 Remove WAFS references from global-workflow (#1642) This PR removes WAFS references, etc. from the global-workflow following the approval from NCEP director on making WAFS a standalone post-processing package. Fixes #1641 commit 75c5126a01b0c50dcee361923ddfcd4a163a8066 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon May 22 13:40:03 2023 -0400 Add UFSDA ATM var and ens files to hpssarch_gen.sh (#1633) This PR adds UFSDA ATM var and ens files to `hpssarch_gen.sh`. Logic is also added to check for the existence of GSI-EnKF DA specific output files before adding said files to the archive list. With this change `hpssgen_arch.sh` works for both GSI and UFS based DA. Fixes #1628 commit 5f76a30da8ebeb7a80a816310f01f234795dd1db Author: TerrenceMcGuinness-NOAA Date: Fri May 19 20:48:36 2023 +0000 Fully automate CI Framework with emcbot account (#1634) This PR fixes logic in the main driver so it can function in cron along with the check and run scripts. It also runs with the emcbot account so messaging to the user on the status to GitHub will come from emcbot commit 0fae23fa0012ef52b37ad70ab7c3eeb8a8c6b1bd Author: Rahul Mahajan Date: Fri May 19 14:01:30 2023 -0400 Cast dict as an AttDict to handle nested dicts properly in update_configs (#1630) Some of the keys in the `defaults` were not being updated in `update_configs()` because it was using a regular `**dict` that would only update keys at the top-level. These dictionaries are nested and deep. This fixes the bug by replacing `**dict` with the `update` method from `AttrDict`. commit b29c95b83d217a57422f7fc4c480af728fdc6452 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri May 19 11:42:21 2023 -0400 Adding path to atmosphere analysis in ocean verification job (#1632) commit 5e687f098b179d2f995bad831f34016152006535 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri May 19 09:48:16 2023 -0400 fixes use of wrong directory variables (#1631) commit 10a6776351b1d1a62ff761016c0207913698aeda Author: Jessica Meixner Date: Thu May 18 16:59:53 2023 -0400 Add GEFS wave grid to scripts and ensure post runs (#1608) This is an expansion of @NeilBarton-NOAA 's work in PR #1488 * Adds new glo_025 grid to workflow which will be used by GEFSv13 (fixes #1434) * Ensures post works * Creates a section in config.wave for various wave grids so that it's easier to switch between grids * Adds documentation for adding a wave grid so that it will hopefully be easier the next time * Initial condition was added to hera for 2013010100 for this new grid so that C384/ P8 like tests can be made. (Needs to be synced to other platforms if desired). This work expands on the work in PR #1605 Fixes #1434 Fixes #1604 commit 4bebafd61d5a0fc2f52910294204af5f1f51cb21 Author: Kate Friedman Date: Thu May 18 13:30:56 2023 -0400 Fixes for enkf archival bugs in ush/hpssarch_gen.sh (#1626) Fixes for enkf archival bugs Refs #1622 and #1623 commit 481b65903f9f4f55039ed68e24c929378dee3cca Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu May 18 11:37:09 2023 -0400 Bugfix in atm_analysis.py and setup_expt.py. resens was mischaracterized as ensres. CASE_ANL is not used in atmens_analysis.py set CASE_ANL=CASE in config.atmanl commit 26ea93396ca6dad7ae9d86ec2890fc69725fa122 Author: Rahul Mahajan Date: Wed May 17 17:32:08 2023 -0400 Allow use of nested yamls during setup_expt.py (#1624) This PR: - allows a user to define their own configuration via a yaml during `setup_expt.py`, while retaining the `defaults.yaml` which is a must when templates are being set - updates to `setup_expt.py` to allow the above. - adds a `test_ci.yaml` as a demonstration for use in CI This PR will facilitate deprecating `config.defaults.s2s` as well as allowing users to make their own configurations. commit 580f09ac1f169e2b9bb5986d55cee5fd0a05acfe Author: TerrenceMcGuinness-NOAA Date: Wed May 17 14:21:41 2023 -0400 Add throttling to CI (#1568) Adds the ability to throttle the number of PRs and cases being run concurrently. commit 53ba0753b962fbcbbccfcba74b645a1a07a99689 Author: Walter Kolczynski - NOAA Date: Tue May 16 19:43:17 2023 -0400 Fix type of donst for sfcanl namelist (#1620) The variable type expected by gaussian_sfcanl for donst was recently changed from YES/NO to a boolean (.true./.false.) Fixes #1619 commit 472cf8d0116ffab79f9bfdc4055d9eeb8cd199ed Author: Rahul Mahajan Date: Tue May 16 17:26:32 2023 -0400 Prepare snow depth observations for JEDI-based Land DA. (#1609) This PR: - adds a job to prepare IMS snow depth observations as a task in the workflow. This task depends on the `prep.sh` job to bring IMS data. To test this type of data `DMPDIR` in `config.base` needed to be pointed to `"/scratch1/NCEPDEV/global/Jiarui.Dong/JEDI/GlobalWorkflow/para_gfs/glopara_dump"` - `land_analysis.py` introduces a method `prepare_IMS` for this type of data. - Updates are necessary in the `GDASApp` repo. See companion PR https://github.com/NOAA-EMC/GDASApp/pull/472 This job only runs at the `18z` cycle in the workflow. This is controlled in the XML and not in the script. Consequently, updates are in the `workflow/` scripts to make this happen. Other updates included: - Adds a method (and associated test) to provide a datetime in the form of Julian day of the year. The method is `to_julian` in `timetools.py` - `executable.py` was updated to accept a `list` of arguments (in addition to `str`). **Note:** - `calcfIMS.exe` is a serial executable and yet requires to be run with `srun`. I recommend compiling this executable without MPI. @jiaruidong2017 @CoryMartin-NOAA - There are several deprecation warnings from the python IODA converter that will need to be addressed. I recommend creating an issue to be resolved later. @jiaruidong2017 @CoryMartin-NOAA Part of Land DA work for snow depth assimilation, for which there is no issue open. commit c005fbcdfef7803b8bde1b6138183ccb62db4d01 Author: Jessica Meixner Date: Mon May 15 17:15:31 2023 -0400 Code Updates for New Wave Fix Files (#1605) Updates the code to point to correct fix files with name changes. Fixes #1493 commit 255d99b7f2151682699f181197529c0ac0f7050e Author: Cory Martin Date: Fri May 12 09:20:00 2023 -0400 Make JEDI cycling toggle switches YAML configurable and their names more explicit (#1607) * make some JEDI cycling options configurable through YAML commit a8edbc7b429a740f444b42b5708ca70d59e7e5e8 Author: Kate Friedman Date: Thu May 11 15:02:18 2023 -0400 Update gfs-utils hash to 8965258 (#1586) New gfs-utils hash includes gfs_bufr code fix to resolve bugzilla #1208 Other commits included in new hash are: - Partial removal of deprecated utilities and code - Updated Jet's module to point to the EPIC hpc-stack Refs #1245 commit f7e60f9a4e4e45428b0e9fecc4f6ec445e21c9a2 Author: Cory Martin Date: Thu May 11 14:03:44 2023 -0400 Allow YAML input to override config.base and make HPSS_PROJECT configurable (#1603) commit 8544015c668d0d2196fab5e0eb3d0f55b7df0d18 Author: Walter.Kolczynski Date: Wed May 10 12:39:32 2023 -0500 Fix RTD python requirements path Refs: #1595 commit c7cc877ca675db8731e7276c4280dbd66aa8dd65 Author: Walter.Kolczynski Date: Wed May 10 12:37:11 2023 -0500 Clean up RTD python install settings Refs: #1595 commit 2392a413bb704be4b0b90d4c357fba0c6552161a Author: Walter.Kolczynski Date: Wed May 10 12:30:47 2023 -0500 Use RTD python system packages Still trying to resolve issues with RTD build. Refs: #1595 commit 805f203a8f95cf62ee92149ad14386b429148642 Author: Walter.Kolczynski Date: Wed May 10 12:22:38 2023 -0500 Fix python RTD parameter name Refs: #1595 commit c4a090c19b7343be1f68b3506cd979cb34b5f5c1 Author: Walter.Kolczynski Date: Wed May 10 12:19:08 2023 -0500 Update RTD python install Refs: #1595 commit 7fa59a1302ba947917d774da04f7fdc7a0742f25 Author: Walter.Kolczynski Date: Wed May 10 11:58:05 2023 -0500 Restore RTD python version and add requirements Restored the python version to 3.11 after degrading it to 3.7 did not solve the bibtex issue. Instead, specify the requirements file in the config (the file already existed). Refs: #1595 commit 98bd25c465cae6fb6293a686a70d050ef770e76f Author: Walter Kolczynski - NOAA Date: Wed May 10 12:03:16 2023 -0400 Revert python version for RTD (#1598) Reverts the python version for RTD back to 3.7 to see if that solves the missing bibtex import issue. Fixes #1595 commit 9f837d008cee71a0bceadc86cd576075086d3846 Author: Walter Kolczynski - NOAA Date: Wed May 10 11:45:02 2023 -0400 Move RTD config to root of repo (#1597) Read-the-docs config file was in the wrong location. Fixes #1595 commit c24b9ade80106808d72b96d499b1ad26f672192e Author: Walter Kolczynski - NOAA Date: Wed May 10 11:32:36 2023 -0400 Add RTD config (#1596) Adds a read the docs config to get around docker image/library mismatch. Fixes #1595 commit e55f090208de1ce52ddde51732cbaf26e2323480 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed May 10 08:24:05 2023 -0600 Add `schema` library to manage schema for variety of input configurations. (#1567) Adds schema.py from https://github.com/keleshev/schema Adds a test harness and additional functions to setup the Schema object. Co-authored-by: Rahul Mahajan commit 6b0172ba1543ce682c6f28a826002788f298ed11 Author: Walter Kolczynski - NOAA Date: Tue May 9 23:16:24 2023 -0400 Add S2SA to the allowed app list in setup expt (#1591) Adds S2SA to the list of allowed apps for all experiment types. The workflow config files already supported this option, but it was not on the allowed list. Refs: #1589 commit bd8585b7289c675df76fb5b53792fc27a8f08934 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue May 9 22:36:25 2023 -0400 Avoid parsing group name when checking RadMon diagnostic files (#1559) This changes the way the RadMon diagnostic file checker determines if a diagnostic file is 0-sized. Instead of attempting to parse the output of `tar -tv`, the script now extracts the `radstat` file and runs `du -b` on each gzipped diagnostic file. On S4, the primary group is `domain users`, which, containing a space, caused issues with the previous method. Fixes #1515 commit 106e74726a82573c09c5196a3866770968bfda34 Author: Rahul Mahajan Date: Tue May 9 22:33:35 2023 -0400 Remove gldas from global-workflow (#1590) Removes all instances of GLDAS from the global-workflow `develop` as it will not be used in GFS v17. Also updates the documentation to reflect this change. Fixes #1512 commit da2da72ded007386bfdd2f5c7b3c62b135ac66f5 Author: Walter Kolczynski - NOAA Date: Tue May 9 18:46:34 2023 -0400 Add GEFS capability to setup_expt (#1582) Allows GEFS experiment directories to be set up using `setup_expt.py`. This only creates the experiment directory; workflow generation will be added in a follow-up PR. To facilitate this, a new positional argument is added in the first position to specify which system to set up: `gfs` or `gefs`. If gfs is chosen, the second positional argument is to choose the mode, and allows the same values as before: `cycled` and `forecast-only`. If gefs is chosen, forecast-only is assumed and no second positional argument is required. To allow both gfs and gefs configure files to exist in workflow concurrently, the `parm/config` directory contains two new directories: gfs and gefs. All of the old config files have been moved into the gfs directory. A few select config files have also been copied to the gefs directory. As yet, they are un- modified (except the changes noted below). These config files will be updated in a future PR so the modifications for GEFS are not hidden in the new file creation. The `yaml/defaults` is also copied over, but the contents were removed since GEFS will not be running its own analyses. A couple variables have been renamed to be more appropriate for use in both systems: `NMEM_ENKF`, `NMEM_EFCS`, and `CASE_ENKF` are now `NMEM_ENS`, `NMEM_ENS_GFS`, and `CASE_ENS` respectively. Further, `HOMEfv3gfs` were removed as unused. Finally, resolution validation was extended to the ensemble resolution as well. Fixes: #1576 commit 2fd43d134f9d8479eb37c3800f6bcb715ceb7c3f Author: Kate Friedman Date: Mon May 8 16:53:21 2023 -0400 Redo v16.3 GSI script updates to scripts/exglobal_atmos_analysis.sh (#1535) Updates to scripts/exglobal_atmos_analysis.sh are being put in again after a CRTM issue was resolved. These updates are needed to resolve an issue with the GSI assimilating too low of a number of observations. Also update gsi_ver to 20230112 in fix.ver Refs #1494 #1550 commit 6838c0ba5a1dc9033c2e7488ab1a970f70fea506 Author: Guillaume Vernieres Date: Fri May 5 16:41:36 2023 -0400 Fix bugs in the COM refactor of marine DA (#1566) Fixes a couple bugs and does a little cleanup of the COM refactor for marine DA. COM variable definitions are also updated to match the style used in other scripts. commit dd19f05afa8b80e207de215c3d5f447107924f13 Author: Rahul Mahajan Date: Fri May 5 16:36:34 2023 -0400 Retire `getic.sh` and `init.sh` jobs from global-workflow (#1578) This PR removes: - `getic.sh` - job used to get initial conditions from HPSS from a past experiment/ops - `init.sh` - job used to create experiment resolution specific initial conditions from the ones fetched by `getic.sh`. Both these jobs were primarily used by the atmosphere model component developers in the past. They have since been staging pre-generated ICs making these jobs obsolete. Documentation will point to ufs-utils to generate the initial conditions. The utilities from ufs-utils were used to identify the appropriate HPSS tarball as well as performing interpolation for the atmospheric model component. There is no such utility available for the other model components making these scripts only partially useful. In a future PR, an update to the definition of `BASE_CPLIC` and `coupled_ic` jobs will be made to make use of `--icsdir` to point to pre-staged locations of initial conditions. Fixes #1569 commit 63d5522e98fa65ce62d7ff681ed8923f48f0517e Author: Kate Friedman Date: Fri May 5 16:35:24 2023 -0400 New UFS_UTILS hash for gdas_init COM reorg updates (#1581) This PR updates the UFS_UTILS hash to get `gdas_init` updates for the recent COM reorg. A few additional UFS_UTILS commits are also included but aren't significant changes, as noted by @GeorgeGayno-NOAA: "Updates since that hash have been mostly small things like bug fixes. However, the w3nco library was replaced by the w3emc library at https://github.com/ufs-community/UFS_UTILS/commit/7efbe0fd2dd373ae54d6c2954ebd484e0a3aab48". Updates to improve repo build are also included with this hash (https://github.com/ufs-community/UFS_UTILS/commit/b4900c483bd9cdb274aae6f75c0815a5f86bdaae). New hash from completion of https://github.com/ufs-community/UFS_UTILS/pull/820 Resolves #1527 commit cf064a5c043106ea5ea6c2ce27e036e6d40babf5 Author: Walter Kolczynski - NOAA Date: Fri May 5 16:32:31 2023 -0400 Update documentation for PR standards (#1573) The section on commit message standards is updated to be for pull requests instead. Additional messaging about using the provided template is added, and bullets not relevant to PRs (line-wrapping and leaving a space between subject and body) are removed. commit 8ff4c380d59ffa12f74dcef2cfa0e112b44b97c2 Author: Kate Friedman Date: Thu May 4 16:43:54 2023 -0400 Update prepobs install copy for atm log filename fix (#1571) Begin using feature-GFSv17_com_reorg_log_update install which updated the atm logf filename checked for by prepobs getges_nc.sh. Refs #1570 commit 3768c11e564ff82bfd2766a54513b49b4853e44c Author: Rahul Mahajan Date: Wed May 3 11:40:25 2023 -0400 Update LandDA related job post COM refactor plus other minor fixes (#1564) This PR: - updates the j-jobs to accommodate post COM refactor upgrades. - minor updates to config.resources for land DA tasks - add task dependencies in the rocoto workflow - when doing LandDA, use sfc_data.tile{{ t }}.nc created by Land DA is used as input of global_cycle for the deterministic and case w/ DOIAU=NO. commit a4177bb97722a6e90487af2b9744f3cbc960fb6b Author: Rahul Mahajan Date: Wed May 3 02:52:38 2023 -0400 Replace `CDATE` with `PDYcyc` combo (#1561) Replaces `${CDATE}` with `${PDY}${cyc}` in all `config.*` files. Also fixes permissions on some of the config files that were turned to be executable in some of the JEDI PRs. Fixes #1560 Partially fixes #198 commit 1242952faa4ce95d9a1fe2ce3e4ea20425d440d0 Author: Kate Friedman Date: Tue May 2 16:23:18 2023 -0400 Update init.rst cycled coupled IC info (#1562) * Update init.rst cycled coupled IC info * The cycled ATM w/ coupled (S2S) model ICs were updated and the folder was renamed from "C48mx500" to "C48C48mx500" * Added note to mention that the EnKF member ICs are currently just dummy duplicates of the deterministic. commit 2e2357bc067390d51d1320d982abdce23b67d4ed Author: Walter Kolczynski - NOAA Date: Tue May 2 11:06:52 2023 -0400 Use correct number of tasks in CICE when using threads (#1558) When the workflow was updated to use ESMF threading, the CICE namelist was not updated to use the new ntasks_cic6 variable instead of ICEPETS. This caused the incorrect number to be used when using multiple threads. Fixes #1549 commit 608ff650fbc902114203a8d03893e3d26fa05d70 Author: Kate Friedman Date: Mon May 1 22:19:39 2023 -0400 Remove gdas bump fix files (#1553) * Remove bump_ver from versions/fix.ver - No longer need a bump version variable in fix.ver. Refs #1552 commit 810071bff4878b16e5b70113fff990a1b1e80a4f Author: Walter Kolczynski - NOAA Date: Mon May 1 22:18:31 2023 -0400 Remove remnant WAVE_RUN from archive (#1556) `$WAVE_RUN` is no longer used in workflow, but one reference remained in the archive job, which would cause failures. The conditional did not need to be replaced by `$RUN` since `$RUN` has already been checked at that point. Fixes #1548 commit f2ea92bf7345be1669677affab401bf25dd917ff Author: Walter Kolczynski - NOAA Date: Mon May 1 17:08:30 2023 -0400 Update UFS to develop as of 2023 Apr 17 (#1509) Updates the UFS model hash to the version as of 2023 Apr 17. Some associated changes accompany this update - Restart filenames for MOM6 (ufs-community/ufs-weather-model#1599) - Remove store coriolis setting from MOM6 namelist (ufs-community/ufs-weather-model#1599) - Change in atm 'log' file names (ufs-community/ufs-weather-model#1704) - Additions to diag_table for frozen species (ufs-community/ufs-weather-model#1529) - Restart quilting (ufs-community/ufs-weather-model#1633) - Update to post itag (ufs-community/ufs-weather-model#1690) The switch to restart quilting adds an additional constraint on the size of write groups to be divisible by the number of tiles, so all were increased to the next multiple of 6. In the process of updating the diag tables, unused tables were removed. Closes #1279 as moot Closes #1445 Closes #1499 Partially addresses #1277 commit 6d3ed8ac4b71759fbace38f3dd544f7ee018b821 Author: Guillaume Vernieres Date: Mon May 1 14:36:01 2023 -0400 Adapt the marine DA to the new COM structure (#1554) commit 6c48e94b4f3c7cf180cd443a13b957c8ab87ab4c Author: Cory Martin Date: Mon May 1 02:02:37 2023 -0400 Update aerosol DA to use new COM structure (#1551) This PR updates the j-jobs and python classes for aerosol DA to use the new COM directory structure. This PR also includes removing of the chem history staging for the ICSDIR in setup_expt.py. The aerosol fields are treated as FV3 tracers, so they are either available (warm start) with the fv_tracer files or start at 0 (cold start) and must be spun up from emissions. Fixes #1516 commit ec2dd3ab8fb78c4e0aff7d81cb64095fe6130ad6 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Apr 28 14:45:09 2023 -0400 Update UFSDA ATM ens for new COM directory structure (#1538) g-w PR #1421 changed the GFS COM directory structure. This PR updates UFSDA ATM ensemble analysis jobs and python script to work with the updated GFS COM directory structure. Fixes #1518 commit 406d6900963ca9c5152ef4b84de0d2840b0c2fd3 Author: Rahul Mahajan Date: Fri Apr 28 12:55:05 2023 -0400 Run an ensemble forecast of the coupled model (#1545) commit ff37168eddd52e00b288cde4bdbdb1927369abe6 Author: Walter Kolczynski - NOAA Date: Fri Apr 28 12:53:59 2023 -0400 Fix ocean anl path in staging (#1544) The path for ocean analysis files was not properly updated after analysis was moved out of model_data into its own directory. commit 8506ec6977c53018a100fd4881c296016a7df630 Author: Cory Martin Date: Thu Apr 27 15:48:47 2023 -0400 Two minor bugfixes (#1542) Found some odd bugs in the aerosol DA changes that need to be fixed to work properly. Not sure how they worked before with testing (by luck?) but these are straightforward fixes to implement. one has a missing / in a path for FileHandler and the other has a missing .nc causing files to not be found commit 5f66da919c2525e189a169bad1f3fcbab3a64739 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Apr 27 14:04:55 2023 -0400 Move guts of ocean analysis post out of j-job (#1539) Removes most of content of JGDAS_GLOBAL_OCEAN_ANALYSIS_POST to scripts/exgdas_global_marine_analysis_post.py in GDASApp, now just calls that script. Addresses first bullet of #1480 commit 3dd6bbe7a77145ab31d00bd4c23af7649353cbd9 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Wed Apr 26 17:02:05 2023 -0400 Update UFSDA ATM anl for new COM directory structure (#1537) g-w PR #1421 changed the GFS COM directory structure. This PR updates UFSDA ATM variational analysis jobs and python scripts to work with the updated GFS COM directory structure. Fixes #1517 commit b5d173f6a95ccc5df55aecb9dc490fffb79b26ca Author: Walter Kolczynski - NOAA Date: Wed Apr 26 13:39:45 2023 -0400 Fix incorrect ocean history tmpl during workflow generation (#1533) The trailing '_TMPL' was accidentally ommited from the ocean history template used during workflow generation. Refs: #1532 commit 789ae97a1210117b9b629c4a47d6cfa999b551ab Author: Walter Kolczynski - NOAA Date: Wed Apr 26 13:39:31 2023 -0400 Fix ocean stating from flat structure (#1531) A typo led to the same variable being defined twice instead of the variable that was supposed to be defined. Fixes #1530 commit 1e4a24c35088a3db6348156c15bbc81b6f814e40 Author: Guillaume Vernieres Date: Wed Apr 26 00:17:56 2023 -0400 Fix warm-start IC staging (#1529) The incorrect path was used for staging coupled components during the COM refactor update (#1421). These are now corrected. Fixes #1528 commit 7421d805e6f50a59cd0be611d3ad7568ae603985 Author: Walter Kolczynski - NOAA Date: Tue Apr 25 15:37:04 2023 -0400 Quiet generate_com (#1526) Turns off trace for the duration of the generate_com function unless DEBUG_WORKFLOW is not set to "NO" (the default). In its place, the function will now echo the assignment. Closes #1524 commit 23e6cc22a456c4a4294216037673473db0a144af Author: Guillaume Vernieres Date: Tue Apr 25 11:45:16 2023 -0400 Add ocnanlvrfy job and bugfixes. (#1514) commit efa5180462f71ec476aeb6c5de4ba074a9d38a29 Author: Walter Kolczynski - NOAA Date: Mon Apr 24 15:37:52 2023 -0400 Reorganize COM and refactor to use templates (#1421) Reorganizes the entire COM directory into a more hierarchical structure and uses centrally-defined templates to define COM paths. ## Hierarchical Structure To organize output a lot better and not have 30000+ files in a single directory, all of the component COM directories are divided into a number of subdirectories for each type of output. Sample directory trees ### Cycled atmosphere only ``` gdas.20211222/00 ├── analysis │   └── atmos │   └── gsidiags │   ├── dir.0000 │   ├── dir.0001 │ ├── (Additional dir.* directories omitted for brevity) │   └── dir.0083 ├── model_data │   └── atmos │   ├── history │   ├── master │   └── restart ├── obs └── products └── atmos ├── cyclone │   └── tracks └── grib2 ├── 0p25 ├── 0p50 └── 1p00 101 directories ``` ``` enkfgdas.20211222/00 ├── earc00 ├── ensstat │   ├── analysis │   │   └── atmos │   │   └── gsidiags │   │   ├── dir.0000 │   │   ├── dir.0001 │   │   ├── (Additional dir.* omitted for brevity) │   │   └── dir.0039 │   └── model_data │   └── atmos │   └── history ├── mem001 │   ├── analysis │   │   └── atmos │   └── model_data │   └── atmos │   ├── history │   ├── master │   └── restart └── mem002 ├── analysis │   └── atmos └── model_data └── atmos ├── history ├── master └── restart 64 directories ``` ``` gfs.20211222/00 ├── analysis │   └── atmos ├── model_data │   └── atmos │   ├── history │   ├── master │   └── restart ├── obs └── products └── atmos ├── bufr ├── cyclone │   ├── genesis_vital │   └── tracks ├── gempak │   ├── 0p25 │   ├── 0p50 │   ├── 1p00 │   ├── 35km_atl │   ├── 35km_pac │   └── 40km ├── grib2 │   ├── 0p25 │   ├── 0p50 │   └── 1p00 └── wmo 26 directories ``` ``` enkfgfs.20211222/00 ├── earc00 ├── ensstat │   ├── analysis │   │   └── atmos │   │   └── gsidiags │   │   ├── dir.0000 │   │   ├── dir.0001 │   │   ├── (Additional dir.* directories removed for brevity) │   │   └── dir.0039 │   └── model_data │   └── atmos │   └── history ├── mem001 │   ├── analysis │   │   └── atmos │   └── model_data │   └── atmos │   ├── history │   ├── master │   └── restart └── mem002 ├── analysis │   └── atmos └── model_data └── atmos ├── history ├── master └── restart 64 directories ``` ### S2SWA coupled prototype (forecast-only): ``` gfs.20130401/00/ ├── model_data │   ├── atmos │   │   ├── history │   │   ├── input │   │   ├── master │   │   └── restart │   ├── chem │   │   └── history │   ├── ice │   │   ├── history │   │   ├── input │   │   └── restart │   ├── med │   │   └── restart │   ├── ocean │   │   ├── history │   │   ├── input │   │   └── restart │   └── wave │   ├── history │   ├── prep │   └── restart └── products ├── atmos │   ├── cyclone │   │   ├── genesis_vital │   │   └── tracks │   ├── gempak │   │   ├── 0p25 │   │   ├── 0p50 │   │   ├── 1p00 │   │   ├── 35km_atl │   │   ├── 35km_pac │   │   └── 40km │   ├── grib2 │   │   ├── 0p25 │   │   ├── 0p50 │   │   └── 1p00 │   └── wmo ├── ocean │   ├── 2D │   ├── 3D │   ├── grib │   │   ├── 0p25 │   │   └── 0p50 │   └── xsect └── wave ├── gempak ├── gridded ├── station └── wmo 51 directories ``` ### Trees with files gdas: https://gist.github.com/WalterKolczynski-NOAA/f1de04901e2703fd24d38146d2669789 gfs: https://gist.github.com/WalterKolczynski-NOAA/5d1b7c0a0f4b8cfff0be1ae54082316a enkfgdas: https://gist.github.com/WalterKolczynski-NOAA/860aaa804e3e70e191e7cae2ebb1055b enkfgfs: https://gist.github.com/WalterKolczynski-NOAA/130bfff4650ed8b07cf395079b65d318 S2SWA P8: https://gist.github.com/WalterKolczynski-NOAA/6ae90c6eafb573878f60682ce47179db ## Templating All of the COM paths have been replaced with new variables that are derived from a set of templates centrally defined in `config.com`. Variables in the templates are then substituted at runtime to generate the COM paths via the use of `envsubst`. To facilitate this, there is a new function, `generate_com` (see below), provided to automatically generate the COM paths. Where possible, COM paths are defined at the j-job level and made read-only. However, many of the EnKF scripts loop over the ensemble members, forcing the definitions to be made at the exscript level instead (and be mutable). The arguments to `generate_com()` are the list of COM variables to generate, optionally accompanied by a template to use using a colon to separate them. When no template is specified, the variable will be generated using the ${varname}_TMPL template. Two options are accepted, `-r` and `-x`, which will mark the variable as read-only and for export, respectively (the same as with the `declare` builtin). It is best practice to define any additional variables needed by the template on the same line to avoid adding them to the calling script’s scope. Here are some examples used in the code: Generate the path to the atmos analysis directory for the current cycle and `$RUN` (implicitly from the `$COM_ATMOS_ANALYSIS_TMPL` template) and mark as read-only and export: ``` YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS ``` Generate the path to the atmos history directory for the previous cycle's gdas from the `$COM_ATMOS_HISTORY_TMPL` template and mark as read-only and export: ``` RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} generate_com -rx \ COM_ATMOS_HISTORY_PREV:COM_ATMOS_HISTORY_TMPL ``` Generate the path to the first ensemble member's history directory of the current cycle and `$RUN` and mark for export: ``` MEMDIR=’mem001’ YMD=${PDY} HH=${cyc} generate_com -x COM_ATMOS_HISTORY ``` ## Additional information The staging of initial conditions in `setup_expy.py` has been updated to stage in the new locations. The source of the initial conditions can **either** be in the new hierarchical structure or in the old flat structure and the script will stage the files in the new structure. The destination paths are hard-coded here, so if any changes are made to the analysis, input, or restart templates, they will need to be mirrored in `setup_expy.py`. ### Stipulations All changes in this PR are subject to approval by several stakeholders, including NCO. Sample COM trees above are subject to revision based on feedback (for instance, file X isn't really an obs file). File name updates are not included in this PR. File names (primarily for coupled components) will be updated to comply with NCO standards in a future PR. AWIPS jobs are now almost working (they do not in current develop), but one last program is still ending with an error. Work on fit2obs is deferred, so that portion of the verify job does not work. WAFS scripts are all external and have not yet been updated. WAFS is expected to be packaged separately going forward, so will need to be updated like any other downstream package. Some scripts that are not part of our normal development workflow have not yet been updated. I may be able to knock a few more off this list, but some just aren’t available in development mode currently: - All UFSDA app jobs (to be handled separately) - With associated dev jobs (may still modify and test) - JGDAS_ATMOS_GLDAS - ~~JGLOBAL_WAVE_GEMPAK~~ - ~~JGLOBAL_WAVE_POST_BNDPNT~~ - ~~JGLOBAL_WAVE_POST_BNDPNTBLL~~ - ~~JGLOBAL_WAVE_PRDGEN_BULLS~~ - ~~JGLOBAL_WAVE_PRDGEN_GRIDDED~~ - ~~JGLOBAL_WAVE_PREP~~ - With no associated dev job - JGDAS_ATMOS_GEMPAK_META_NCDCJGFS_ATMOS_FBWIND - JGFS_ATMOS_FSU_GENESIS - JGFS_ATMOS_GEMPAK_META - JGFS_ATMOS_GEMPAK_NCDC_UPAPGIF - JGLOBAL_ATMOS_EMCSFC_SFC_PREP - JGLOBAL_ATMOS_POST_MANAGER - JGLOBAL_ATMOS_TROPCY_QC_RELOC + All downstream scripts for the above There are also a few scripts that are not available to the development workflow that I have already made a good-faith effort at updating: - JGDAS_ATMOS_GEMPAK - JGFS_ATMOS_PGRB2_SPEC_NPOESS ## Related Issues Closes #761 Fixes #978 Fixes #999 Fixes #1207 Partially addresses #198 Partially addresses #289 Partially addresses #293 Partially addresses #1299 Partially addresses #1326 commit 408ef65a8e2318125ad61478746024b2d0ef463d Author: Walter Kolczynski - NOAA Date: Mon Apr 24 15:26:58 2023 -0400 Move GDASApp hash to stable version (#1508) Changes the GDASApp hash to a more stable version than the tip of develop. See post-merge converastion in #1506 commit 699a759f80352aaade4203425c5df24842fcefa3 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon Apr 24 13:37:04 2023 -0400 update GDASApp hash to d34f616 (#1505) (#1506) commit 44f5c28518a7d4b9e06658c6c21b9b1ee1d0918e Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Apr 24 12:26:14 2023 -0400 ignore archiving sfluxgrbf00[124578] files when they are not present (#1498) * ignore archiving certain sfluxgrbf??? files when they are not present. Co-authored-by: Rahul Mahajan commit 2e88dbfc5ff7a0bb2c6c1630b0c2783d76049d21 Author: Jiarui Dong Date: Mon Apr 24 09:17:48 2023 -0400 Add initial land DA cycling scripts (#1351) This PR adds rocoto jobs, jjobs, config files and updates to the machine.env to enable land-da cycling capability. commit f159d39a3b28dfcc120cdcdf87d11a611c75061f Author: TerrenceMcGuinness-NOAA Date: Fri Apr 21 15:46:35 2023 -0400 Add CI cron jobs (#1476) As a maintainer of the CI framework, I need a set of cron jobs that will fully automate the CI pipeline so that whenever the appropriate label on GitHub is created the PR gets cloned and built followed by a set of functional experiments that are executed and reported on. commit 587e469a1be5e278326fc0cbceefedc90caf75bf Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Apr 21 13:28:11 2023 -0400 Refactor UFS-DA ATM ens component to use python g-w (#1373) This PR contains UFS-DA ATM ens changes originally in PR #1354. Below is a list of changes in this PR - rename UFS-DA ATM ens jobs atmensanalprep, atmensanalrun, and atmensanalpost as atmensanlinit, atmensanlrun, and atmensanlfinal, respectively - replace UFS-DA ATM ens shell scripts with python scripts - rename UFS-DA ATM ens j-jobs consistent with initialize, run, and finalize functions. Update j-jobs to execute python scripts instead of shell scripts - rename UFS-DA ATM ens rocoto jobs to be consistent with initialize, run, and finalize functions. Update jobs to set python paths and execute renamed j-jobs - update rocoto workflow generation to new names for UFS-DA ATM ens jobs - update UFS-DA ATM ens job names in machine dependent env files to new job names - rename UFS-DA ATM ens configuration files consistent with change in job names - add python class for UFS-DA ATM ens analysis - unify JEDIEXE link for UFS-DA Aerosol, ATM, and ENS - properly set `cycledefs` for `gfsatmanlinit` - remove unused `FV3JEDI_FIX` from atmanl and atmensanl config The above changes are part of a larger g-w effort to transition from shell scripts to python. UFS-DA Aerosol was the first GDASApp system to be converted. PR #1372 converted UFS-DA atmospheric variational DA to the python based approach. This PR converts converts UFS-DA atmospheric local ensemble DA to the python based approach. Fixes #1313 Depends (in part) on #1370 and #1372 and NOAA-EMC/GDASApp#388 commit 7db70496063fe32928cacb9790e45a1e987a3510 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Apr 21 12:42:00 2023 -0400 Added Fit2Obs to S4. #1489 (#1497) Adds Fit2Obs support for S4 by adding the module use/load commands to the module_base.s4.lua modulefile. Fixes #1489. commit fb236523140b09686a4c2961e0552e7bd5dbf04f Author: Guillaume Vernieres Date: Fri Apr 21 12:40:11 2023 -0400 Add new task to post-process marine DA (#1485) The work in this PR is only meant to bring us closer to a viable WCDA system. The refactoring of the marine DA to the new standard introduced by @aerorahul and used by @RussTreadon-NOAA and @CoryMartin-NOAA will be addressed after this [Epic](https://github.com/noaa-emc/gdasapp/issues/416) is resolved. ### Motivation and context This work adds a separate j-job ```JGDAS_GLOBAL_OCEAN_ANALYSIS_CHKPT ``` that calls a script that will be in the GDASApp for the time being (PR to come once this is merged) and does the following: - prepares the `SOCA` increment for `MOM6` IAU - recursively apply the `SOCA2CICE` change of variable. A mapping from the 2D seaice analysis variable to the CICE6 dynamical and thermodynamic variables. - merge the `Tref` increment from the `NSST` analysis with the `SOCA` increment ### Summary of the change - HPC environment: the new j-job runs a `JEDI` executable twice and one python script. All are serial jobs but the JEDI exec need to be called as an MPI job with 1 pe. - `jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_CHKPT`, that script point to a ex-script that is not in the GDASApp develop yet. - addition of the option to merge the Tref NSST increment with the MOM6 increment. This is triggered with the `DO_MERGENSST` switch - The new j-job dependency was added, with the option to wait for the surface analysis file `sfcanl.nc` if `do_mergensst` is true. Refs: #1480. Fixes NOAA-EMC/GDASApp/#418 commit 740daba8d6d34a327199701c1df7d6e10da73ec5 Author: Kate Friedman Date: Fri Apr 21 03:11:51 2023 -0400 Create fix file issue template (#1495) Create fix_file.md template file for new fix file request issue. This should help formalize the process and document updates. New issue will auto-assign to @KateFriedman-NOAA and @WalterKolczynski-NOAA (the developers with access to make fix files changes). Fixes #1492 commit 35942896ca4eeef243fe35d47416be64fe0058ff Author: Kate Friedman Date: Thu Apr 20 10:00:23 2023 -0400 Update TC_tracker version to v1.1.15.6 New ens_tracker.v1.1.15.6 tag installed on supported platforms. Adds Jet support and moves package to use new EPIC-installed hpc-stacks on R&Ds. Refs #1463 commit 86c3923bf60b1ce39165070bf2e5c3d60193d6dd Author: Kate Friedman Date: Thu Apr 20 09:39:56 2023 -0400 Update GSI-Monitor hash to reflect recent assimilation changes. New GSI-Monitor hash to 45783e3 to update two fix files. Refs #1483 commit 2f347f6ddc770f2524394af25561a8da0d8dfb50 Author: Kate Friedman Date: Wed Apr 19 15:54:19 2023 -0400 Fit2Obs updates for package reorganization and invocation via module (#1484) The Fit2Obs repo has been reorganized to meet a few NCO standards and to add a module for invoking it from other packages. Refs #1472 commit b2ed8648f80946de85983a51664b120540854cc9 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Apr 18 16:21:14 2023 -0400 Refactor UFS-DA ATM var component to use python g-w (#1372) This PR contains UFS-DA ATM var changes in PR https://github.com/NOAA-EMC/global-workflow/pull/1354. Below is a list of changes in this PR - rename UFS-DA ATM var jobs `atmanalprep`, `atmanalrun`, and `atmanalpost` as `atmanlinit`, `atmanlrun`, and `atmanlfinal`, respectively - replace UFS-DA ATM var shell scripts with python scripts - rename UFS-DA ATM var j-jobs consistent with initialize, run, and finalize functions. Update j-jobs to execute python scripts instead of shell scripts - rename UFS-DA ATM var rocoto jobs to be consistent with initialize, run, and finalize functions. Update jobs to set python paths and execute renamed j-jobs - update rocoto workflow generation to new names for UFS-DA ATM var jobs - update UFS-DA ATM var job names in machine dependent `env` files to new job names - rename UFS-DA ATM var configuration files consistent with change in job names - add UFS-DA ATM yaml files for UFS-DA fix files, crtm files, and increments - add python class for UFS-DA ATM var analysis - link UFS-DA python increment conversion script from GDASApp to g-w `ush` directory The above changes are part of a larger g-w effort to transition from shell scripts to python. UFS-DA Aerosol was the first GDASApp system to be converted. This PR represents the second GDASApp system, UFS-DA atmospheric variational DA, to be converted. PR #1373 contains changes to convert the UFS-DA ensemble DA to a python based approach. Fixes (in part) #1313 Depends (in part) on PR #1370 and [GDASApp #388](https://github.com/NOAA-EMC/GDASApp/pull/388) commit 70a7d99bb65fd7661d7d2bac10633c0dda5d39fd Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Apr 18 10:26:00 2023 -0400 Port the global workflow to Jet (#1301) Provides initial cycled and free-forecast support for the global workflow on Jet. References #357. Not included in this port is support for GLDAS, verif-global, and TC_tracker. Jet will eventually support the following, with the currently tested options bolded, on xjet and kjet partitions - uncoupled, cycled and free-forecast experiments at C48, C96, C192, C384, and C768 resolutions - coupled, free-forecast experiments (ATMA, ATMW, S2S, and S2SW) at C384 ~Note that currently coupled ICs are not available on Jet, so only ATM-only experiments can performed.~ Fixes #357 commit d2b268ab3d965c9a2cf998dd048ac7a3ee7dc36b Author: Walter Kolczynski - NOAA Date: Mon Apr 17 21:15:04 2023 -0400 Consolidate wave parm files (#1477) When the new wave parm directory was created, the existing parm files were not moved into the new directory. These files were used for AWIPS, so not generally tested. commit 8dcfaa6fbc5e0a94d44952f710f77c3b18ffa50d Author: Walter Kolczynski - NOAA Date: Mon Apr 17 13:37:26 2023 -0400 Split MPMD stdout into tasks on slurm (#1469) It can be difficult to debug MPMD jobs because their logs are all written concurrently to a single file. While the use of tags to designate which task via the preamble and PS4 can help identify which line is from which task, it is still difficult to follow a single task through the log, particularly for larger MPMD jobs with dozens of tasks. Individual stdout files are now created by using the `srun` `--output` option. These files are written to the working directory (in `$DATA`). Fixes: #1468 commit 6e7e4f1db78bbb67d94d54bdcb0a021a626b01f1 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Mon Apr 17 09:59:01 2023 -0600 GFS fixed-file YAMLs. (#1471) Add a few fixed-file YAMLs used in the GFS. commit 2ec4125f67e6b6c1d8dee6f6fcf1d0798f587a31 Author: Rahul Mahajan Date: Fri Apr 14 20:55:57 2023 -0400 Initial blocks in place for forecast refactor work (#1466) This PR is a first in a series of PR for transforming the forecast job. This PR does not affect current function of the forecast job. This PR: - adds initial blocks to separate task specific and model configuration for the task blocks commit d47f33f142824c0d2111f7e2f08c43f99b33bff4 Author: Walter Kolczynski - NOAA Date: Fri Apr 14 15:51:14 2023 -0400 Update buoys file and fix boundary point jobs (#1465) The buoy file used by the wave jobs ([wave_gfs.buoys](https://github.com/NOAA-EMC/global-workflow/blob/develop/parm/wave/wave_gfs.buoys)) was just a copy of [wave_gfs.buoys.dat](https://github.com/NOAA-EMC/global-workflow/blob/develop/parm/wave/wave_gfs.buoys.dat). In addition to being a duplicate, the file was a truncated version without any boundary points, causing boundary point jobs to fail. The duplicate file has been removed and replaced by a symlink to the full buoy list [wave_gfs.buoys.full](https://github.com/NOAA-EMC/global-workflow/blob/develop/parm/wave/wave_gfs.buoys.full). This maintains the provenance of the file and prevents the former duplicate from becoming out-of-sync. Users who still want to use the truncated buoy can change the target of the symlink to wave_gfs.buoys.dat. There are also a few minor bugs fixes that were necessary to get boundary point jobs to run: - `FHMAX_WAV_IBP` had been set in the bndpnt config file but not used in the j-job. This was invisible unless a user changed the value, since the config and j-job used the same default. - Checks against `FHMAX_WAV` would set the unused `FHMAX_WAV_IBP` to the max value instead of the `FHMAX_WAV_PNT` used for the loop. This is a problem when running for less than 180 h (the default value). - The boundary point bulletin job was not in the env job list for Orion (other machines have it). Now the boundary point jobs set `FHMAX_WAV_PNT` to `$FHMAX_WAV_IBP`. `FHMAX_WAV_IBP` was moved from the bndpnt config to config.wave so it is visible to bndpntbll as well. Fixes #1464 commit e496e393b16565207c227f4b69a5691d97098624 Author: Kate Friedman Date: Wed Apr 12 15:59:00 2023 -0400 Move Fit2Obs to stand-alone job (#1456) This PR moves the Fit2Obs invocation out of the vrfy job and into its own dedicated `fit2obs` job in the gdas suite. This new dedicated job uses the latest Fit2Obs tag `wflow.1.0`. The Fit2Obs requires a type of spin-up. The job looks back `VBACKUP_FITS` hrs and needs available inputs for that lookback cycle in the `ROTDIR`. The `jobs/JGDAS_FIT2OBS` script will first check that `xdate` (`CDATE` - `VBACKUP_FITS`) > `SDATE` and then if met, will check that the needed inputs exist. - If `xdate>SDATE` is not yet satisfied, the job will exit 0 with "Too early for FIT2OBS to run. Exiting.". The conditional is greater-than and not greater-than-or-equal since the first half cycle generally does not have some of the needed inputs (e.g. prepbufr). Thus the first half cycle is not included in the valid lookback cycles. This avoids erroneous job failures for the first cycle to run the Fit2Obs package. Additional logic could be introduced to include the half cycle if all available inputs are available. - If any of the needed inputs are missing the job will abort with "FATAL ERROR: FILE MISSING: ${file}". This spin-up means that the first cycles will run the job but exit 0 immediately. The 6th cycle (if `VBACKUP_FITS=24`) will be the first cycle to run the Fit2Obs package and produce output in the online archive. Changes: 1. Remove fit2obs variables and settings from `config.vrfy` and into newly created `config.fit2obs` for `fit2obs` job. 2. Remove fit2obs submission/invocation from `jobs/rocoto/vrfy.sh`. 3. Create new `fit2obs` job scripts: `jobs/rocoto/fit2obs.sh` and `jobs/JGDAS_FIT2OBS` 4. Add new `fit2obs` job to setup scripts: `workflow/applications.py` and `workflow/rocoto/workflow_tasks.py` 5. Add new `fit2obs` job to all env files. 6. Add new `fit2obs` job into `config.resources` (use 1 node on WCOSS2 and 3 nodes elsewhere). 7. Add `export DO_FIT2OBS="YES"` to `config.base.emc.dyn`. Resolves #1405 Resolves #1232 commit 363a2b47de11ab327408d2df20a3718f25062fa5 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed Apr 12 14:42:50 2023 -0400 Rework arch job dependencies (#1455) This reworks the dependencies for arch tasks so that if there are no verification tasks selected and it is an uncoupled experiment, a dependency for the cycle's post jobs is added. It also fixes the dependency checks in rocoto.py to check for an empty list or string instead of checking the first element of a list, which may not exist if no dependencies are given. Lastly, it issues a warning to the user if there are no dependencies for any job. Fixes #1451 commit 7e661f4cd00cf99b12e55574318bbd0eb1a5eaa0 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Wed Apr 12 10:36:58 2023 -0400 Stage bias files for UFSDA aerosols (#1370) Updates UFSDA aerosols to stage bias files. Also adds in the threads and aprun commands for the run portion of the UFDA aero jobs. Fixes (in part) #1313. commit d5ae3328fa4041b177357b1133f6b92e81c859d7 Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Tue Apr 4 03:34:48 2023 -0600 Add logging level to logger (#1442) This PR provides task-level support for the respective pygfs applications. As an example, logging-level may be defined within jobs/JGLOBAL_FORECAST as follows. ``` #! /usr/bin/env bash source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "fcst" -c "base fcst" export LOGGING_LEVEL="DEBUG" ``` This feature allows a user to change the logging level from the run-time environment rather than requiring modification of the respective pygfs module or task. Fixes #1438 commit de81c5911c308679366b97fda19f015b1388d9dc Author: TerrenceMcGuinness-NOAA Date: Mon Apr 3 17:53:12 2023 -0400 Update hash for GDASApp to db2f998 (#1443) When an update described below made a change to the HASH in the `${HOMEgfs}/sorc/checkout.sh` script for the corresponding GDASApp it was entered in error: _3e73038c - Use V2 version of fix files needed for Thompson MP (#1422) (7 days ago) _ Examining the GDASApp repo it should be confirmed that the correct HASH should be **db2f998** Fixes #1441 commit 0d1e993b2b5db6160c4a6b88b67899dc8e9754f8 Author: Kate Friedman Date: Fri Mar 31 09:58:22 2023 -0400 Remove para module paths for ncdiag on WCOSS2 (#1437) The ncdiag/1.0.0 module moved from para to prod on WCOSS2 on March 27th (RFC 10769). * Remove para module paths for ncdiag on WCOSS2 in global-workflow module_base.wcoss2.lua * Update GSI-EnKF hash to update ncio and ncdiag * Update GSI-Monitor hash to update ncdiag Refs #1426 commit 88e091a8e92cbc813830b21562fa392f8dd2d3d9 Author: Rahul Mahajan Date: Fri Mar 31 02:50:53 2023 -0400 Use P8 settings for C384 atm by default (#1440) Switches the default C383 FV3 timestep to 300s and reduces the decomposition for gfs CDUMP to 8×8 with 48 write tasks per group. These are the settings used by P8. MDAB has advised these settings can be used for non-P8 runs. Fixes #1439 commit 3cfdbe04e864847a3f89b6f8b89799b18b7e1f5e Author: Walter Kolczynski - NOAA Date: Wed Mar 29 10:46:35 2023 -0400 Enforce rstprod on relevant tarballs (#1436) Ensures that tarballs that contain restricted data are properly restricted to the rstprod group. Fixes #1433 commit 809b33bf50193a083c7ffdbd87bb83e0c78b2a9c Author: Kate Friedman Date: Tue Mar 28 09:44:37 2023 -0400 GFSv16.3.5[6] GSI updates (#1404) * Update GSI hash to 31b8b29 * Remove temporary hack that forced GSI to build with crtm/2.4.0 * Remove G18 ABI from exglobal_atmos_analysis.sh * Remove GMI from processing in the GSI Refs #1322, #1321 commit 222f055e1e082faf7f9e489297e5c46ccc582a20 Author: Cory Martin Date: Mon Mar 27 17:48:39 2023 -0400 Have aerostat tar file extract to basename only (#1424) This bugfix makes it so that when the aerosol diags are extracted, they are extracted to the directory directly and not a full directory tree to where the runtime directory was located. Closes #1423 commit c549acb914c7ae479740c8f1007f5f3f36b91db5 Author: Rahul Mahajan Date: Mon Mar 27 10:00:18 2023 -0400 Updates in the aerosol tasks (#1420) -removes the definition of environment variables in the shell script j-jobs -eliminates the use of !ENV in the yaml files for aerosol jobs. -eliminates use of CDATE in the python tasks. Use current_cycle and previous_cycle -uses jinja templates where appropriate. -uses the Executable class to run the variational analysis executable -adds verbose logging to the actions in the aerosol analysis task -uses string templates instead of string replace where looping over tiles is required. -links aerosol ICs when cycling with the ATMA app. ICs courtesy of @CoryMartin-NOAA Co-authored-by: Walter Kolczynski - NOAA commit 3e73038c12f8261543c874cfffed11f8ce496399 Author: Rahul Mahajan Date: Fri Mar 24 12:40:17 2023 -0400 Use V2 version of fix files needed for Thompson MP (#1422) It has been noted by some developers who look at the run log in realtime that the model takes a while during the calculation of Thompson tables. Specifically see this part of the output from the forecast log: ``` 0: Calculating Thompson tables part 1 took 0.334 seconds. 0: Calling radar_init took 0.000 seconds. 0: creating rain collecting graupel table 0: ThompMP: computing qr_acr_qg 0: Writing qr_acr_qgV2.dat in Thompson MP init 0: Computing rain collecting graupel table took 203.539 seconds. 0: creating rain collecting snow table 0: ThompMP: computing qr_acr_qs 0: Writing qr_acr_qsV2.dat in Thompson MP init 0: Computing rain collecting snow table took 36.694 seconds. 0: creating freezing of water drops table 0: Computing freezing of water drops table took 2.084 seconds. 0: Calculating Thompson tables part 2 took 2.084 seconds. 0: ... DONE microphysical lookup tables ``` These tables are already available in the `fix` space and are being used in the ufs-weather-model regression tests. Fixes #1411 commit 4ff622a36e3f9aa2f39e847a7b9e2b536ebcdc0a Author: TerrenceMcGuinness-NOAA Date: Thu Mar 23 01:55:42 2023 -0400 Add experiment creation for CI (#1388) Adds a new python script to create an experiment on the fly for CI. Also adds detect_machine.sh. Closes #1375 commit 6bb2d64fa171604b9d5e8f58e4edf8bf946840e7 Author: Kate Friedman Date: Wed Mar 22 15:44:00 2023 -0400 Update state of operations in RTD to GFSv16.3.7 (#1417) Update the "State of operations" blurb in index.rst to note the updated GFSv16.3.7 operational version. Refs #1368 commit ea15b26585c0c804f44776cabb6ae3d08b76234f Author: Walter Kolczynski - NOAA Date: Wed Mar 22 14:07:06 2023 -0400 Fix typo in wave awips gridded task def (#1412) The task name was misspelled in the task definition for gridded wave awips. commit 74b344ddb28fb40b8a65479f1584cf7daa376dfe Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Wed Mar 22 09:05:42 2023 -0600 Make new methods in yaml_file be public. commit 478f48ede4ee28e8193ff02befb0a954bd7eca61 Author: Walter Kolczynski - NOAA Date: Tue Mar 21 17:18:46 2023 -0400 Fix groupsize for early cycle EnKF rocoto task (#1408) When generating the rocoto tasks for enkfgfs, the different groupsize for gfs would not be picked up because the cdump comparison was not properly updated when the cdump/run was updated to include 'enkf'. commit 49b96ed037c6919c651c6b7dd2b6c9fbe9866904 Author: ChunxiZhang-NOAA <49283036+ChunxiZhang-NOAA@users.noreply.github.com> Date: Mon Mar 20 15:35:19 2023 -0400 Use fracoro data for all new UFS applications (#1242) The new fracoro data should be used for all new UFS applications no matter if it uses frac_grid or not. Most problems in Issue[#863](https://github.com/NOAA-EMC/global-workflow/issues/863) have been resolved. However, one problem remains, e.g., the latest fix, mask and oro datasets (fracoro) created by Shan/Mike/Helin should work for both fractional and non-fractional grid. Note that it also requires the changes in UFS_UTILS. An corresponding PR[#741](https://github.com/ufs-community/UFS_UTILS/pull/741) in UFS_UTILS has been created. Fixes: #863 Dependency: UFS_UTILS [PR#741](https://github.com/ufs-community/UFS_UTILS/pull/741) commit e5af1b45f5aaa3acfe8e6ee37e690edff9aa608e Author: Rahul Mahajan Date: Fri Mar 17 13:02:54 2023 -0400 Updates to python tools for use in DA tasks (#1400) Adds significant updates to pygw tools that expand the use of templated yaml files to make their use in the tasks clear and easier to use. All changes come with associated tests. New tests are added for timetools.py and jinja.py. New methods to parse a "simple" $( ... ) templated as well as jinja2 {{ ... }} templated yaml files are added along with their tests. commit 3fe3592338598ef6b957d29e809dc70df1f82cec Author: Guillaume Vernieres Date: Wed Mar 15 01:48:46 2023 -0400 Marine DA prep j-job needs more memory (#1393) The concatenation step runs out of memory in the marine-gdas prep step. This is not optimized and probably overkill, but 24GB should cover all cases. Fixes #1389 commit 6cf486190c83f64370f1c2dccabd85700fbc0a3a Author: TerrenceMcGuinness-NOAA Date: Tue Mar 14 15:50:18 2023 -0400 Update rocoto_viewer to replace deprecated getiterator call (#1397) Rocoto viewer was using a deprecated function `getiterator` that caused it to fail on python 3.8+. The replacement method `iter` is now used. Fixes #522 commit 2929430369b0e6b4e6d42b45637f552f8cb7e59e Author: Rahul Mahajan Date: Mon Mar 13 16:29:51 2023 -0400 Reset modules properly at beginning of forecast job (#1394) Following the PR last week that enabled ESMF threading, we had to replace `load_fv3gfs_modules.sh` with loading ufs-weather-model specific modules for the `fcst` and `efcs` jobs. `module-setup.sh` is needed after `detect_machine.sh`. Previously, both these functions were performed in `load_fv3gfs_modules.sh`. commit 995e2b0c819d2bf45e9cde7b3fb4dd638034f91d Author: Henry R. Winterbottom <49202169+HenryWinterbottom-NOAA@users.noreply.github.com> Date: Fri Mar 10 18:34:28 2023 -0700 Add base workflow exception class (#1392) Adds a new WorkflowException that can serve as a base class for any new exceptions we wish to create to cover errors not well represented by the native python exceptions. Also adds a test exception. Closes #1391. commit aa8175dc39bd64e895d2362dc0ec37ed76ababef Author: Rahul Mahajan Date: Fri Mar 10 19:50:28 2023 -0500 Enable ESMF threading in the ufs-weather-model forecast (#1371) Transitions the workflow to use ESMF-managed threading for UFS. This allows for per-component specification of threads rather than a single value for all components. The resource calculation is updated to handle the different thread counts for each component. The variable `NTHREADS_FV3` (which set the global thread count) is removed. Now each component has a `${COMPONENT}THREADS` variable. In order to run properly, the launcher commands for each machine had to be modified so the number of processes is the number of CPUs on all nodes. Also, the forecast job now uses the UFS modulefile rather than the typical workflow runtime module. `prod_util` is then loaded manually as it is needed to run the workflow. Additionally, on WCOSS2 `cray-pals` is also loaded manually as it is necessary. This arrangement is temporary until a more permanent solution is implemented. Notes: 1. As a result of threading, the `WRTTASKS_PER_GROUP` in the `model_configure` will end up to be a multiple of the number of threads used in quilting. At present, they are assumed to be the same as the threads for FV3. 2. The `WCOSS2.env` file needs a look at as the sections for steps `fcst` and `efcs` are different and very different when compared to the [job card](https://github.com/ufs-community/ufs-weather-model/blob/develop/tests/fv3_conf/fv3_qsub.IN_wcoss2) in the ufs-weather-model for WCOSS2. Closes #1042 commit 8a2d5061da3c3067291e51680408339ec2efec5c Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Mar 9 16:11:22 2023 -0500 Cleanup ocean, ice, and med directories when CDUMP=gdas (#1387) commit 780a511e51c83b339b02709a782c123a16c5788d Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Thu Mar 9 15:59:40 2023 -0500 Archive ocean and ice files when CDUMP=gdas (#1384) commit d8fdd29ab236798937fbd1c5e1aa9266db98dcc0 Author: Guillaume Vernieres Date: Wed Mar 8 16:38:06 2023 -0500 Updated diag_table_da to allow output of ocean fields for SOCA at various resolutions (#1382) commit 815823997e7886dd4c054fa2bf573dabd5d6047c Author: Rahul Mahajan Date: Wed Mar 8 09:38:11 2023 -0500 Add mechanism to detect machine and clean module env. (#1381) commit 4437181a72629e6f6f7214de749dc890e32a4994 Author: Kate Friedman Date: Tue Mar 7 08:57:10 2023 -0500 Update initial condition documentation and Orion BASE_CPLIC path (#1376) * The initial conditions section of the Read-The-Docs documentation is updated to add information about staged initial conditions that were pulled into global account space on supported platforms. Some reformatting of the section is also done. * The Orion BASE_CPLIC path is also updated after prototype ICs were copied from @WalterKolczynski-NOAA's personal area on Orion to the "glopara" area maintained by @KateFriedman-NOAA. Refs #1345 commit 1a48aca822b1caf9325b37e9819243f91454f4e6 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Mar 7 07:56:59 2023 -0500 Add a missing dollar sign in the earc script (#1378) commit 33e8a8ea56920bca4e31bf961647ec989f24582b Author: TerrenceMcGuinness-NOAA Date: Mon Mar 6 22:52:33 2023 -0500 Add BASH scripts for initial CI testing system using GitHub Labels (#1362) This PR is a set of high-level BASH scripts for creating a basis of a CI System using GitHub labels. These scripts will first poll the **global-workflow** GitHub repo for open PR's with the label **${hostname}-CI**. The label is the designated RDHPCS system the CI functional tests will run. A second script will then clone and build from the designated PRs on the specified RDHPC. Closes #1374 commit 47afc78568563bc4c55208e567bfb967684eae0a Author: Rahul Mahajan Date: Fri Mar 3 10:43:54 2023 -0500 Consolidate ocean, ice and wave task info into config.ufs (#1334) config.fv3 is now renamed as config.ufs and contains ocean, ice, and wave task information * config.fv3 is used to record FV3 and write grid component task decomposition based on resolution. * Ocean (MOM6) and Ice (CICE6) decomposition, tasks and timesteps are added to config.ufs. * Updates are made to config.fcst and config.efcs to source config.ufs based on the configuration of the (coupled) model. * Several configurations were made deep in parsing_namelists_MOM.sh, which have now been elevated to config.ocn * Some improvements are made to limit the export of variables from functions in nems_configure.sh. * This will help with the ESMF threading work as it breaks down the work into multiple steps. commit 0c523d9b75a6a5d24a55fcc3f56ed505dedac086 Author: Jessica Meixner Date: Thu Mar 2 16:27:53 2023 -0500 Update to HR1 (#1197) Updates settings for the HR1 prototype Compilation is switched to "mixed-mode", with a 32-bit atmosphere and 64-bit for other components. Atmosphere physics options are updated. Changing the wave model to run on the outer loop and the resolution to ¼-deg. The model version was already updated previously, but this commit updates some of the associated input files. commit 5d6c71ab34667ef0dac777a89a19a37edd2652fc Author: Rahul Mahajan Date: Thu Mar 2 11:53:10 2023 -0500 Add options while setting up Rocoto XML that are useful for CI (#1365) Adds options for maximum tries (default is 2), cyclethrottle (default is 3), taskthrottle (default is 25) and verbosity (default is 10) commit 6024e68d8f519d4d1de224de0d7d6799e02f2e07 Author: Rahul Mahajan Date: Thu Mar 2 11:06:17 2023 -0500 Revert "Add options while setting up Rocoto XML that are useful for CI (#1363)" (#1364) This reverts commit c318cbdefc80b390a6bf897229fd2e206eb6873c. commit 53952153eea6a9afc83512f84d860823b300bc97 Author: Guillaume Vernieres Date: Thu Mar 2 10:02:14 2023 -0500 MOM6 backgrounds in cycled DA mode were hardcoded for IAU (#1355) * fixed mom6 bkg output Co-authored-by: Rahul Mahajan commit c318cbdefc80b390a6bf897229fd2e206eb6873c Author: Rahul Mahajan Date: Thu Mar 2 09:50:09 2023 -0500 Add options while setting up Rocoto XML that are useful for CI (#1363) maxtries, cyclethrottle, taskthrottle and verbosity are command-line options to setup_xml.py commit 0e1c753e7bd4d4e98b40372168578198c4300124 Author: Rahul Mahajan Date: Thu Mar 2 09:48:51 2023 -0500 Run executables or scripts from within python. (#1341) - adds the ability of running executable (binary or shell scripts) via the subprocess.Popen call - allows setting env. variables for the subprocess without having to modify the calling environment. - allows passing custom arguments to the executable - allows capturing stdout and stderr as well as pass stdin commit 2e92b7c582f116434ca49af7f7e6b5ec48842f48 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed Mar 1 16:21:13 2023 -0500 Remove extra 'enkf' from folder/file names in archive scripts (#1360) The archiving scripts have had preceding `enkf`s removed and `$CDUMP` has been replaced with `$RUN` throughout the scripts. This fixes #1353 and partially addresses #1299. Fixes #1353 Refs #1299 commit 0a18568a58d4c33e63d728424223900e98ee0350 Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Wed Mar 1 16:12:06 2023 -0500 Fix bugs to create analysis files for early cycle (#1343) The cycled early enkf should generate analysis files, however, the CDUMP was changed from "gfs" to "enkfgfs" for enkfgfs* jobs, some of the scripts should do the corresponding changes. This PR is to fix this bug. commit edbf8d955e04b54909c20379d4f674d0a9f3e1f7 Author: Cory Martin Date: Wed Mar 1 16:10:59 2023 -0500 Make necessary bugfixes to get aerosol cycling going (#1349) Makes a number of bugfixes that were overlooked in #1106 that now allow for 3DVar aerosol DA cycling on Hera/Orion. Also updates the GDASApp hash to the most recent commit in develop. commit c4d05e57d5e7192ac3b8a93e6880efe5bbad2e65 Author: Kate Friedman Date: Tue Feb 28 16:27:46 2023 -0500 Create production_update.md (#1348) New template for operational production updates. Includes checklist for workflow side. commit 8134f975d51905789f7a59b07d713306a91ba10b Author: Rahul Mahajan Date: Mon Feb 27 14:36:03 2023 -0500 Update feature_request.md commit a243b5c1c2bb21a47bcc9dee260ab5b90bb06843 Author: Rahul Mahajan Date: Mon Feb 27 12:21:27 2023 -0500 Create a template for requesting new features in the global workflow to separate from general issues (#1336) commit 0c621d0b9ead8d46fb287d4eb547386b3335f9f8 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Fri Feb 24 19:30:00 2023 -0500 allow script to access eva yaml generators (#1331) commit f69d3e54d92b257bf1102c13eb1197a967288c39 Author: Rahul Mahajan Date: Fri Feb 24 12:06:46 2023 -0500 Add license and status badges for the CI (#1332) commit ea414291341e77eb6eee64241a702141152efcfd Author: Rahul Mahajan Date: Wed Feb 22 17:02:15 2023 -0500 Update ufs_utils hash that supports global_cycle with NoahMP. (#1315) - Updates ufs_utils hash that contains upgrades to `global_cycle` that updates only the greenness fraction. This update expects a pre-existing surface restart file to be updated. - Corressponding updates to scripts that call `global_cycle` to stage the surface restart file to update. - Updates to `checkout.sh` and `Externals.cfg`. Temporary pointers to [this](https://github.com/GeorgeGayno-NOAA/UFS_UTILS/tree/feature/cycle_noahmp) branch until `develop` in `ufs_utils` is updated. - Updates to `setup_expt.py` to force using the same `CCPP_SUITE` and `IMP_PHYSICS` for cycled and forecast-only modes and all apps. - Only builds utilities from ufs_utils that are used in the GFS application. @GeorgeGayno-NOAA still needs to work with the land team to determine which fields (other than greenness fraction) need to be updated through `global_cycle`. Depends on https://github.com/ufs-community/UFS_UTILS/pull/774 Fixes #1314 Updating the UFS_utils hash will also resolve #1275 Fixes #1275 commit 6addad94b510b08a83e43236b9d8c430b8aeddce Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Wed Feb 22 15:02:07 2023 -0500 Save yaml for ocn analysis post and fix bug to save logs (#1318) Temporarily saves var.yaml to comrot in ocean analysis post and fixes a bug that caused log files to not be saved. Necessary for https://github.com/NOAA-EMC/GDASApp/issues/202. This is temporary pending an evaluation of what needs to be saved and the appropriate place. Refs https://github.com/NOAA-EMC/GDASApp/issues/202 commit dbbd8b19ce847136dbb6457a082e58ab17f5678f Author: Kate Friedman Date: Wed Feb 22 14:53:29 2023 -0500 Update crtm to v2.4.0 (#1319) * Update module_base modulefiles to use crtm/2.4.0. * Remove line in module_base modulefiles to set CRTM_FIX; this variable is now set in the crtm module as of v2.4.0. * Update ufs-weather-model hash to c22aaad * Temporarily set crtm_ver in GSI build script to force GSI to build with crtm/2.4.0 Refs #1233 commit adae24cf6c08ca327f74c8bcd3aa9c89cbb28724 Author: Walter Kolczynski - NOAA Date: Wed Feb 22 14:45:49 2023 -0500 Fix python style errors (#1330) Some python style errors crept in to develop because we ignored pynorm failures during the PR process. These errors are now corrected. commit e18a79036f16f60e7560771d17ab89d10ea39a96 Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Wed Feb 22 13:17:37 2023 -0500 Fix workflow generation post times for early cycle (#1329) In PR #1309 a setting was overlooked that controls what hours have post tasks created for the early cycle. Fixes #1328 commit 07fedaa649e4576a2bd3d2fca32bb6c144fa2a85 Author: Walter Kolczynski - NOAA Date: Fri Feb 17 16:43:16 2023 -0500 Change RUN and CDUMP for ensemble jobs (#1309) Updates `$RUN` and `$CDUMP` for ensemble jobs to include `enkf`. Previously, the `$RUN` for EnKF jobs had been set to `gdas` or `gfs`. However, this violates NCO policy and was also complicating Issue #761 . Now the `$RUN` for EnKF jobs is either `enkfgdas` or `enkfgfs`. Theoretically, `$CDUMP` shouldn't need to change. However, `$CDUMP` and `$RUN` are used interchangeably throughout much of the workflow (Issue #1299), so for now the `$CDUMP` is kept identical to `$RUN`. This will be corrected in a future PR. This change **changes the name** of enkf output files. Files now begin `enkfgdas` (or `enkfgfs`) rather than `gdas`. Closes #1298 commit 383c8c3a25dbeedb3a4892d22d2531286e87389f Author: Guillaume Vernieres Date: Thu Feb 16 11:10:50 2023 -0500 Provide default for DEBUG_WORKFLOW in load_ufsda_modules.sh commit 3bfcb8975acab6a14634d95189b6b10379e37afc Author: Guillaume Vernieres Date: Wed Feb 15 11:10:34 2023 -0500 Allow increments to be added for ocean and ice cycling. (#1308) Removed forgotten commented out call to the B-mat j-job in jobs/rocoto/ocnanalbmat.sh ... oops Provide ocean increments via `mom6_increment.nc` Link to the JEDI/SOCA increment in ush/forecast_postdet.sh Fixed a dependency bug in workflow/rocoto/workflow_tasks.py MOM6 Increment is required in ROTDIR for the first 1/2 cycle, changes reflected in workflow/setup_expt.py Co-authored-by: Rahul Mahajan commit a1968e6cd7546151e670c5a0d6f1dd4b5d859c10 Author: Kate Friedman Date: Tue Feb 14 12:51:33 2023 -0500 Module base file reorder and reduction (#1306) * Adjust the order of module loads in module_base modulefiles to conform with desired order: compilers, mpi, 3rd party, hdf5, netcdf, nceplibs. * Remove modules that aren't needed for runtime. * Checked dependencies of remaining modules to make sure prereqs are loaded beforehand as needed. * Correct bug with hpss module in module_base.jet.lua Refs #479 commit 5ac68361917e81555b13e0a2b160f2f7546b8fb4 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Feb 14 12:00:43 2023 -0500 Update S4 environment and module files (#1303) Updates the S4 module file and environment file to keep up to date with the current develop branch. Fixes #1297. Addresses one bug in #1195. This also increases the memory request for the ediag job. During testing, that job initially failed. For the 5 cycles run between 2022051500 - 2022051600, the largest memory footprint was ~26.5GB. commit 1040216d8a4efb9955efecebf59775e91d8845e2 Author: Cory Martin Date: Fri Feb 10 17:16:44 2023 -0500 Add in initial 3DVar aerosol DA cycling capability (#1106) This PR adds an initial 3DVar aerosol DA cycling capability to support scientific development and testing towards an operationally viable candidate system for aerosol DA for GFSv17/GEFSv13. This PR includes the following: - Three new j-jobs and ex-scripts for aeroanlinit, aeroanlrun, and aeroanlfinal - modifies the rocoto scripts that call the above j-jobs to actually call them - makes modification to the config.resources and config.aeroanl files - Introduces an object-oriented python structure to initialize/finalize the aerosol analysis with the intention of eventually using the top-level classes for other analysis jobs (soca, atm, land) Closes #982 commit cc54b8cdab3b83b20c866bbaa5dba0004dae5425 Author: Neil Barton <103681022+NeilBarton-NOAA@users.noreply.github.com> Date: Fri Feb 10 17:15:16 2023 -0500 Fix name of MOM6 n restarts for future cycle points (#1307) Script fix for C384 O0.25 3DVAR cycling. Original scripts had wrong naming structure for MOM *res${n}.nc restart files. Refs: #947, #1289 commit d8c1bd5dfb6b2654b5b8c5121af68f7473fac26e Author: Kate Friedman Date: Fri Feb 10 12:26:30 2023 -0500 Update RTD GFS operational version to v16.3.6 (#1305) Update the status of operations to the newly implemented v16.3.6 version on the read-the-docs main page. Refs #1278 commit 9d11e1e871639523813fcc606aab40f1a6a8103f Author: Guillaume Vernieres Date: Tue Feb 7 21:58:29 2023 -0500 Stop wiping data at beginning of bmat vrfy j-job (#1302) The ocean b-matrix verification job relies on data from the b-matrix job still residing in $DATA, but that directory was being wiped when this job began. Now setting WIPE_DATA to NO to prevent the deletion. Closes GDASApp/issues/318 commit ae9d140273df9f78b4ae7d64e441e31f7b0d9e10 Author: Kate Friedman Date: Tue Feb 7 14:56:25 2023 -0500 Add back in module load block in coupled_ic.sh (#1300) - Resolve bug introduced from removal of module load script block in coupled_ic.sh. - Add block back in for now and then address errors produced by it more appropriately. commit 2615fff62853769f1cc5beb5da49a70cb0ad267d Author: Walter Kolczynski - NOAA Date: Mon Feb 6 15:24:32 2023 -0500 Turn off differential pylint (#1296) Turns off the differential pylint test until it can be evaluated further. The YAML block is left in commented form in case we wish to turn it back on later. commit bdb0db77fdb3cc93a2eae981843499cd38724ba5 Author: Rahul Mahajan Date: Fri Feb 3 11:13:18 2023 -0500 Purge ICSDIR (#1295) This PR: - updates `coupled_ic.sh` job to copy initial conditions from `BASE_CPLIC` directly to `ROTDIR` in the names that the workflow expects and conforms to the naming convention within the workflow - obsoletes the need and use of `ICSDIR` in forecast-only experiments which served as a intermediate space for staging initial conditions. - updates the documentation section for `forecast-only` This is a non-breaking change. A change in documentation is required as the instructions for setting up the coupled forecast-only experiment no longer needs to pass the argument `--icsdir` to `setup_expt.py`. Fixes #1276 commit 1b0905c4f25e793a5a210ee0bfdb737bb5136c04 Author: Rahul Mahajan Date: Thu Feb 2 14:42:18 2023 -0500 Deprecate `FDATE` (#1294) There used to be a fringe functionality where the `gdas.tHHz.radstat` could be ignored in the first full cycle `gdasanal` task. All cycled experiments that start with a cold-start or warm-start must have initial bias correction coefficients (the so called `gdas.tHHz.abias` files) and the `gdas.tHHz.radstat` file. Experts may customize their configurations if they choose to setup without a `gdas.tHHz.radstat` file thereby initializing the radiance diagnostics. They would anyways know what they are doing. There are no updates in documentation as this was never an advertised mode of starting an experiment. Closes #1005 commit 219c23b182ef1aee845faad19f4b6c1c0fe817be Author: Rahul Mahajan Date: Wed Feb 1 10:36:25 2023 -0500 Atmosphere cycling with a Coupled model (#1274) This PR enables: - cycling the atmosphere with GSI using the coupled model (S2S) intended for WCDA development - allows staging of cycled IC's for coupled/atm-only model (in warm start and cold start) - updates dependencies in the XML to account for coupled model tasks (currently disable in cycled mode due to inadequacies in `ocnpost` jobs) This PR also: - disables `GLDAS` by default as it is expected to be deprecated. Enthusiastic developers may turn it `ON` - allows a tiny flexibility for DA developers to turn ON 3Dvar automatically if `nens = 0`. Also in this PR: - `diag_table_da` was updated to include instantaneous ocean fields. When running the model in `APP=ATM`, these entries from the `diag_table_da` are ignored. - `diag_table` was also updated to include coupled fields from `diag_table_cpl`. This is a step towards unifying the `diag_table`. There will be more work done in this area in the near future. - `MOM_input_template_500` is added for the 5 degree ocean configuration. This PR was built on initial work from @guillaumevernieres and @NeilBarton-NOAA @guillaumevernieres provided initial conditions @NeilBarton-NOAA and @guillaumevernieres both provided updates to the scripts that were used in the creation of this PR. The following commands are used to setup and configure the cycled experiment with S2S model configuration. @guillaumevernieres @NeilBarton-NOAA @DeniseWorthen and @junwang-noaa provided valuable assistance in debugging the coupled model failures. To setup and run a coupled model, cycled with atmosphere test at C48 atmosphere 5 degree ocean/ice resolution: ``` # Setup experiment and COMROT directories. Copy initial conditions to COMROT. ./setup_expt.py cycled --expdir --comrot --idate 2021032312 --edate 2021032400 --resdet 48 --nens 0 --gfs_cyc 0 --icsdir /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/ICSDIR/C48O500 --start warm --pslot --app S2S # cd into EXPDIR and disable IAU, METP in config.base # Generate XML ./setup_xml.py ``` The test was concluded successfully w/ no failures. The test result can be viewed at ` /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/EXPDIR/prcycs2s` on Hera. The test only performed a 3DVar with the GSI in the atmosphere and no IAU. Including IAU will require additional work and flexibility both in the model code as well as in the workflow. A test with C384 and 0.25 degree ocean/ice model was also configured by obtaining files from @NeilBarton-NOAA and @guillaumevernieres . The forecast model crashed after about 3 hours of integration with an "Out of memory" fault. Additional compute resources might be needed to get that configuration up and running. Controls for "restart", "restart interval", "history" and "history frequencies" are controlled in multiple places for multiple components. A discussion with @junwang-noaa and @DeniseWorthen is ongoing to develop a solution for higher level control of clock related properties in the coupled model. Adopting the current infrastructure built for forecast only prototypes for cycling was very enlightening. Several enhancements could be made to make this system more flexible for the needs of both model development as well as DA development. I have left verbose comments and an extensive array of `TODO` (to be transformed into GH issues), for mapping out future work. commit a9ab1e753808454d713e3863ac34e911fe65bbe5 Author: Kate Friedman Date: Tue Jan 31 16:28:47 2023 -0500 Update obsproc to v1.1.2 (#1293) Update HOMEobsproc path in config.base to new v1.1.2 package version. Refs #1291 commit 3cbca7d7ebba77e0b13d201c9f2669a47ccd7c90 Author: Kate Friedman Date: Tue Jan 31 15:27:05 2023 -0500 Updates to RTD documentation based on full review (#1287) Reviewed documentation to correct spelling mistakes and update contents for current state of system. Refs #1272 commit 6b5d92d0f5270b11d52b1ce4d315f9c563108ce5 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Tue Jan 31 12:42:22 2023 -0500 Add PYTHONPATH to soca ocean prep jjob (#1292) Adds the UFSDA location to PYTHONPATH in soca prep jjob so the path building is not done in script. Refs: https://github.com/NOAA-EMC/GDASApp/issues/242 and https://github.com/NOAA-EMC/GDASApp/pull/234 The issues require changes also to GDASApp, but this PR will not break GDASApp as is commit 32b21694ea6bfcc5627196f3924235b4689a1af3 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Jan 30 22:04:29 2023 -0500 Add ocnanalbmat (#1286) This adds the ocnanalbmat task to S2S workflow between ocnanalprep and ocnanalrun. At present this is a stub task that does not actually run the associated jjob, pending more extensive testing Partially addresses https://github.com/NOAA-EMC/GDASApp/issues/263 commit 807b5290570c0633fa83b266757d00495f07853f Author: Jan Macku Date: Tue Jan 31 02:13:19 2023 +0100 Update ShellCheck Action and add differential PyLint Action (#1290) Adds a differential pylint github action and updates the differential shellcheck action version. commit 659b462b56726875593eeeb6dd36315b3cb56f92 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Mon Jan 30 19:44:05 2023 +0000 Modify workflow to access files from obs component (#1202) Observations in the current cycled system are linked/copied or created into the `atmos/` subdirectory under ROTDIR There are three files linked from emc dump to atmos subdirectory: `syndata.tcvitals.tm00` `snogrb_t1534.3072.1536` `seaice.5min.blend.grb` The nsstbufr, prepbufr will be created in obs subdirectory. There should be only prep jobs need to access GDA location to link files to the obs component. All other jobs should be using obsproc files under the obs component. Fixes #1198 commit e092e8b32471bbe39123eb928b47124c7b71afa7 Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Fri Jan 27 11:26:52 2023 -0500 Correct issue in linking final restart files (#1285) A bug in forecast_predet.sh, because when run cycled model, the interval_restart_gfs=0, it will cause the condition failed and will not run the following statements, which will cause gmemdir is not set values in the forecast_postdet.sh. Therefore, I delete the condition to solve this issue. Fixes #1284 commit 9a8759251e3ed12940a0d9b0891d3fa7135eee5e Author: Rahul Mahajan Date: Thu Jan 26 10:54:02 2023 -0500 Remove execute permissions from config files (#1281) Removes `exec` permissions from `parm/config/config.*` files. These files are not to be executed on their own, and rather to be sourced by J-Jobs. commit 32e9778acb0c6cb771e4386a7200606d2b9e8c7a Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Wed Jan 25 18:21:00 2023 -0500 Make needed updates to run forecast from GEFS (#1203) Since some of the GEFS functions are empty or missing, this PR is to complete/add such functions and also make some variables to accept values from other scripts Refs: #1147 commit b57638936ae4d8c83c3bba86720f61cc4fe3ffe4 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Wed Jan 25 23:12:51 2023 +0000 Remove unnecessary variables which reference to nemsio (#1259) Remove unnecessary variables which reference to nemsio (part 2 of #601) Wire OUTPUT_FILE as netcdf Replace SUFFIX with wired .nc name Remove OUTPUT_FILE Remove use of affix and replace with wired name "nc" Replace format with wired name "netcdf" Fixes #601 commit 2ecfa880a3f9ab52ff3e7e46373db9e6d9d67b88 Author: Travis Elless <113720457+TravisElless-NOAA@users.noreply.github.com> Date: Wed Jan 25 23:10:52 2023 +0000 Create analysis files for early-cycle EnKF by default (#1237) The upcoming GEFS implementation plans to use analysis files from the early-cycle EnKF to cold start the EPS. This PR allows the early-cycle EnKF members to produce analysis files as the default option. Running in this mode will break early-cycle EnKF forecast functionality - running with this new config.base option set to "NO" and/or a future PR will be needed to restore the early-cycle EnKF forecast job. These changes do not impact the ability for the workflow to successfully cycle. commit 710d1b75dcff1dbb5256f56cbde29f89a21fc95f Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Wed Jan 25 18:08:52 2023 -0500 Don't wipe $DATA before running ocean bmat (#1280) JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT reuses the rundir from JGDAS_GLOBAL_OCEAN_ANALYSIS_PREP and so shouldn't wipe the data before running. Necessary for https://github.com/NOAA-EMC/GDASApp/issues/288 commit f78afebc3125dbfb9a8450b47ad5c72a5a6c16a8 Author: Guillaume Vernieres Date: Wed Jan 25 15:11:05 2023 -0500 More marine DA j-jobs (#1270) Addition of 2 j-jobs: - jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT_VRFY This job currently dumps a few files of the impulse response of B. Not meant to ever go in ops. - jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_VRFY This job will eventually generate relevant figures from the marine DA cycle. It currently points to a script that does not yet exist. I also took this PR opportunity to: - update how we load the modules, following what was done for the atmosphere. - modify ```ush/load_ufsda_modules.sh``` so we could optionally specify what to load (GDAS or EVA), default is GDAS when no argument is present - Use POST to copy what's needed in `COM` Fixes #1273 commit fb54bb6606d0959c063aa03ff2182da637d61c3e Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Wed Jan 25 15:08:16 2023 -0500 Update UFS-DA atmospheric prep script to be consistent with GDASApp update (#1265) Updates the GDAS App version to incorporate the changes of https://github.com/NOAA-EMC/GDASApp/pull/278, which restores the ability of `run_jedi_exe.py` to execute UFS-DA applications, specifically `fv3jedi_var.x`. Included in https://github.com/NOAA-EMC/GDASApp/pull/278 is the removal of entry `ufsda.stage` from `ush/ufsda/__init__.py`. Scripts which simply `import ufsda` must now specify the functions to from `ufsda.stage`. g-w issue #1262 documents the addition of the `ufsda.stage` line to `scripts/exgdas_global_atmos_analysis_prep.py`. This change is required for g-w to successfully stage files used by the var and ensemble UFS-DA applications. Fixes #1262 commit f98433ff3661ef848d381ae65322623573a114cc Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Jan 23 10:11:39 2023 -0500 Add new jjob for ocean analysis bmat (#1239) Adds jjob for ocean analysis bmat. The intent is to have separate tasks for the ocean analysis and generation of the b matrix. Once this is merged, additional modifications will be made to GDASApp to allow it to be run with the other global-workflow components of ocean/ice DA Refs: https://github.com/NOAA-EMC/GDASApp/issues/263 commit 5ebad4c88829f0810d05328944c2232273607f65 Author: Kate Friedman Date: Mon Jan 23 09:42:43 2023 -0500 Retire ecf/versions in develop (#1267) NCO confirmed the `ecf/versions` folder and version files within are no longer needed. All versions come from the `versions/` folder version files. Refs #1205 commit 6713eaeb829df2cffbc0c959d17b1f14033d783c Author: Rahul Mahajan Date: Mon Jan 23 09:32:31 2023 -0500 Deploy documentation to RTD (#1264) Adds an Github action that will build and deploy documentation as artifacts for with every push to develop. The artifacts can be downloaded from Actions -> Documentation -> Artifacts Refs: #9 commit f90058590872d824d5da2a1ed263d738d9b3fb62 Author: Rahul Mahajan Date: Fri Jan 20 21:47:35 2023 -0500 Temporarily disable failing pytest (#1263) Disables the test that fails in the GH runner but passes on `localhost`. Once I figure out why it is failing in the runner, it will be reenabled. commit 2e350d6868b2b0a0b7ba474dd1873dbae462665b Author: Kate Friedman Date: Fri Jan 20 14:01:46 2023 -0500 Remove incorrect/misleading comments in config.base (#1261) Remove incorrect comments in config.base.emc.dyn and config.base.nco.static Refs #1260 commit 9fc82753857e3eb97fc91ded0b1c46c8cd51c912 Author: arun chawla <49994787+arunchawla-NOAA@users.noreply.github.com> Date: Fri Jan 20 13:55:12 2023 -0500 Add initial Sphinx documentation (#1258) Adds Sphinx documentation in the docs directory. The documentation reflects the current information in the wiki. Future commits will automate the rendering of the docs to readthedocs and add Sphinx parsing of script documentation. Refs: #9 commit 78509d6da4547124945265398b6e371210010987 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Thu Jan 19 22:08:21 2023 +0000 Remove nemsio support (#1255) Removes remaining nemsio support from scripts. Now-unnecessary variables will be removed in a follow-up PR. Refs: #601 commit 62944fbc00869dd84b03630ad65bf993a7524752 Author: Walter Kolczynski - NOAA Date: Sat Jan 14 19:32:29 2023 -0500 Increase wallclock for diag jobs (#1216) Diag jobs were failing due to insufficient wall clock, so the wall clock is increased until a more complete review of the resources can be completed. Refs #1215 commit 67d17218b5ea5f491f8115c61d546c11aab2b546 Author: Walter Kolczynski - NOAA Date: Sat Jan 14 19:31:59 2023 -0500 Use correct resources for GFS gempak (#1214) The GFS gempak job was using the GDAS settings instead of switching to the GFS settings for `npe` and `npe_node`. This is part of a package of PRs that were tested together as part of a j-job refactor. Fixes: #1213 commit ca5baebed1cefae3d586b6c6fa04f46166b5e876 Author: Walter Kolczynski - NOAA Date: Fri Jan 13 19:12:05 2023 -0500 Abstract common j-job tasks (#1230) Takes all of the tasks that are common to all j-jobs and abstracts them out into a shared script that is sourced by each job: - Set and create $DATA directory - Call setpy and set $cycle - Set pid, pgmout, and pgmerr - Source config files - Source machine environment file The common j-job header script is called by passing the job name for the `${machine}.env` files using the `-e` option, and a list of config files to source with the `-c` option. ``` ${HOMEgfs}/ush/jjob_header.sh -e [env_job] -c "[config1 [config2 [...]]]" ``` The job name argument (`-e`) is mandatory, and the config list is optional but recommend to always use as well. Some pre j-job rocoto entry scripts (`jobs/rocoto/*`) are currently doing much more than they should be. These sometimes required extra finagling, usually pre-calling the jjob header in the rocoto script before it does something. Refs: #1069 commit e8d47783100c51d96e988dc936258f185d502269 Author: Walter Kolczynski - NOAA Date: Fri Jan 13 19:08:32 2023 -0500 Add missing mkgfsawps.x link (#1218) The mkgfsawps.x and overgridid.x executables were not being linked by the link script, but they are necessary to run AWIPS jobs. This fix alone is not sufficient to restore AWIPS functionality. Fixes #1217 commit 4e2e01a5ae8e3fa45e04055af235834684711b00 Author: Walter Kolczynski - NOAA Date: Fri Jan 13 19:07:01 2023 -0500 Fix post sounding job (#1212) A few minor errors were blocking the sounding job from completing successfully: - CFP APRUN command was using incorrect number of PEs - Updates were needed to run on Orion. Removed the machine-specific code for Hera and Jet so it runs the same on all machines, while refactoring it to use C-style loop. - Bash base errors (see also #1195), which are now corrected, while refactoring to use C-style loop. This is part of a package of PRs that were tested together as part of a j-job refactor. Refs #1195 Fixes #1211 commit 469cc7bf9278e64330b7d35ad8a349bcb40848cc Author: Walter Kolczynski - NOAA Date: Fri Jan 13 14:57:52 2023 -0500 Revert "Use fracoro data for all new UFS applications (#1182)" (#1240) This reverts commit 1f258e43ae04acc9d16953793b67769bb53abc27. commit 1f258e43ae04acc9d16953793b67769bb53abc27 Author: ChunxiZhang-NOAA <49283036+ChunxiZhang-NOAA@users.noreply.github.com> Date: Fri Jan 13 14:42:26 2023 -0500 Use fracoro data for all new UFS applications (#1182) The new fracoro data should be used for all new UFS applications no matter if it uses frac_grid or not. Most problems in Issue[#863](https://github.com/NOAA-EMC/global-workflow/issues/863) have been resolved. However, one problem remains, e.g., the latest fix, mask and oro datasets (fracoro) created by Shan/Mike/Helin should work for both fractional and non-fractional grid. Related to the changes in UFS_UTILS. A PR[#714](https://github.com/ufs-community/UFS_UTILS/pull/741) in UFS_UTILS has been created. Fixes #863 commit 55667e958a8ebf667ed18a13283b95e125af13d8 Author: Walter Kolczynski - NOAA Date: Thu Jan 12 13:15:23 2023 -0500 Revert "Merge GFS v16.3 operational GSI changes into develop branch. (#1158)" (#1238) Reverts #1158 due to issues it creates due to crtm version mismatches that can't be immediately corrected. commit e3f351f6fc5b9dc6465ba7faee3920929178f80e Author: Guillaume Vernieres Date: Thu Jan 12 00:46:47 2023 -0500 Add more user defined parameters for the marine DA (#1235) This is the companion PR to [GDASApp PR#270](https://github.com/NOAA-EMC/GDASApp/pull/270) and needs to be merged before I can trigger the GDASApp `CI` (something that we will change eventually ...). See [GDASApp issue #269](https://github.com/NOAA-EMC/GDASApp/issues/269) commit 2ba4f7e8e17ab88215d4c9cf5744ee7c4a119167 Author: Rahul Mahajan Date: Thu Jan 12 00:18:44 2023 -0500 Update pytests action version and run sequentially (#1236) @aerorahul and @guillaumevernieres noticed that some pytests were failing abruptly in the CI. Manually booting them fixed the issue. However, we want those tests to run automatically. This PR executes the pytests for the different versions of python in the matrix sequentially. It is hypothesized (not confirmed), that the pytest artifacts were being clobbered due to parallel execution. This PR also updates the actions to a later version. This eliminates certain deprecation warnings commit ddc86880ec54c01abced62e3d06c441aeee90b68 Author: Rahul Mahajan Date: Tue Jan 10 21:42:10 2023 -0500 Add utility to compare Fortran namelists (#1234) Often times it is necessary to compare Fortran namelists between a UFS-weather-model regression test and a global-workflow experiment, or in other example applications. This PR adds a simple utility that loads two namelists and spits out the differences between them. The differences are calculated as a departure from the first namelist. This utility leverages `f90nml` (approved for use on WCOSS2) The usage is as follows: ``` ❯❯❯ python3 compare_f90nml.py -h usage: compare_f90nml.py [-h] [-r] left_namelist right_namelist Compare two Fortran namelists and display differences (left_namelist - right_namelist) positional arguments: left_namelist Left namelist to compare right_namelist Right namelist to compare options: -h, --help show this help message and exit -r, --reverse reverse diff (right_namelist - left_namelist) (default: False) ``` The comparison is done as follows: - Both namelists are loaded - We loop over the keys of `left_namelist`. We look for the same key in the `right_namelist`. If the key is found, the values are compared. If the key is not found, a note is made that the key is undefined in `right_namelist`. - Differences in the values are printed to screen. - The `-r | --reverse` reverses the `namelists`. This allows the user to use `right_namelist` as the reference. If differences are found, they are shown as follows (examples of `input.nml` from the `control_p8` and `cpld_control_p8` regression tests of the ufs-weather-model) ``` ❯❯❯ python3 compare_f90nml.py control_p8.nml cpld_control_p8.nml comparing: control_p8.nml | cpld_control_p8.nml ----------------------------------------------- atmos_model_nml: ccpp_suite : FV3_GFS_v17_p8 | FV3_GFS_v17_coupled_p8 fms_nml: domains_stack_size : 3000000 | 8000000 fv_core_nml: dnats : 0 | 2 gfs_physics_nml: min_seaice : 0.15 | 1e-06 use_cice_alb : False | True nstf_name : [2, 1, 0, 0, 0] | [2, 0, 0, 0, 0] cplchm : False | True cplflx : False | True cplice : False | True cplwav : False | True cplwav2atm : False | True ``` commit 721e8ae03275501e57bfac999943a426023c19c2 Author: Rahul Mahajan Date: Mon Jan 9 11:49:57 2023 -0500 Updates for pygw (#1231) A few minor updates to `pygw`: - Create a `runtime_config` in the `task.py` base class to store runtime attributes such as `PDY`, `cyc`, `DATA` etc. - Improved logging decorator for debugging. - Allow `cp` to take `target` as a directory. The file from `source` will be copied to the `target` under the same name. This is the `default` unix `cp`. - Ignore `vscode` files in the project. - As a bonus, even documentation is added to demonstrate the use. commit d07db2b4db4bb0c9eb33a557217f7f479dfcc6f9 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Mon Jan 9 15:35:11 2023 +0000 Merge GFS v16.3 operational GSI changes into develop branch. (#1158) Changes were made in the GSI scripts for the operational system that need to be brought back to development: - Remove hard-wired rCDUMP in EnKF forecast job - Turn on `cao_check` and `ta2tb` - Update cloud coefficient fix file Fixes #1148 commit 79e564a7f073c0f128b63c2100d1773dbc59085b Author: Rahul Mahajan Date: Mon Jan 9 10:33:02 2023 -0500 Move member up in directory hierarchy (#1201) Moves the member directory one higher level in the directory hierarchy in anticipation of additionally components being run for the members in addition to atmos. This results in COM directories that are arranged as `memXXX/atmos` instead of `atmos/memXXX`. This PR also adds a "hack" to allow the success for the `gdaspostanl` job in the first half cycle (see #1034). The "hack" will be removed with the refactoring of the post jobs in the (near) future. Fixes #1196 Refs #1034 commit cf1b3281f66409ee090e22a184758c12c2d6c8e8 Author: Rahul Mahajan Date: Tue Dec 20 10:28:14 2022 -0500 Enable staging ics for cycled experiments. (#1199) commit 8b39403e2683b1d16186c90700ddfb124b73af1e Author: Rahul Mahajan Date: Tue Dec 20 10:11:02 2022 -0500 Add tests for configuration.py (#1192) Add tests to configuration.py Update README.md to illustrate developers how to run tests locally and manually Add .gitignore to pygw commit 3e240bb8fe8880f31af591d7829b5051506a6485 Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon Dec 19 11:35:07 2022 -0500 Replace ocnanal_${CDATE}} with ${RUN}ocnanal_${cyc} (#1191) Replace ocnanal_${CDATE}} with ${RUN}ocnanal_${cyc} as both `$RUN` and `$cyc` are available at the beginning of a job. commit 6d33752bd8b54bd35355dda7413afbe9bb52a5b4 Author: Rahul Mahajan Date: Mon Dec 19 10:45:36 2022 -0500 define NET and RUN in the Rocoto XML to accurately mimic the ecf in ecflow (#1193) commit 8581eacf1a26efba614a1c04715fbc24cb7ae858 Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Sun Dec 18 00:01:48 2022 -0500 Fix checking for restart files (#1186) Undoes the portion of PR #1179 that caused a new bug while attempting to fix #1140, without removing the linter fixes. Instead `/dev/null` is 'searched' if `${RSTDIR_ATM}` is not defined. That situation will always result in zero files found, ensuring a rerun is not triggered. Fixes #1140 Fixes #1185 Moots #1190 commit 9be5c41842d1a7632abc86db875f04c54d2926dd Author: mdtoyNOAA <73618848+mdtoyNOAA@users.noreply.github.com> Date: Fri Dec 16 12:27:20 2022 -0700 Fix 'DEBUG' option in build_ufs.sh (#1188) commit 98545daf3c7383f145ef9d8de5d1a6657b086ea1 Author: Kate Friedman Date: Thu Dec 15 13:21:42 2022 -0500 Update archive job memory request value for R&Ds (#1183) - Revert memory request back to 2048M on R&Ds. - Keep 50GB setting for WCOSS2. Refs #1144 commit a18efae579f7079d99155d63d3f5a89c9514c6b7 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Thu Dec 15 09:30:08 2022 -0500 Reorder post so all flux files are generated when running offline (#1181) Post would fail when running without inline post because it would attempt to create 1p00 flux files before the flux file had been generated. `inter_flux.sh` also had to be updated to point at the correct file for offline post, which is now the same as inline. Fixes #1157 commit 5b454c31204b973a5472aeb3518f1a48ef102284 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Thu Dec 15 09:23:37 2022 -0500 Stop checking for restarts on non-GFS CDUMPs (#1179) The forecast was attempting to check `RSTDIR_ATM` for restart files, but that variable is not defined for gdas, resulting in an unbound variable error. Because the error occurred in a subshell, the error had no impact on the execution, just an unwanted error message in the log. Now that directory is only checked when the `$CDUMP` is 'gfs'. Also fixes some linter warnings. Fixes #1140 commit f2ecf3ab314451cd5522dc30a913e61ea59ea3a4 Author: Rahul Mahajan Date: Thu Dec 15 08:14:13 2022 -0500 Add missing jobids in some pre-job scripts (#1176) Some of the pre-job scripts (`jobs/rocoto/*`) were not defining `job` and `jobid` before calling the j-job. Also refactors the archive j-jobs to match the new j-job structure. Fixes #1169 commit 62b2590cdda9a6558f9bf46c3aa61bdb40007e37 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Thu Dec 15 08:10:28 2022 -0500 Remove existing directory if it exists when getic runs (#1165) If getic is run with an existing `$ROTDIR` (possibly because it failed the first time), it would fail because the directory already exists. Now any existing directory is deleted before attempting to move the ICs. Fixes #1156 commit b6da693c8a016fcfb3aacd6e100d153bb264ba30 Author: Rahul Mahajan Date: Wed Dec 14 11:44:33 2022 -0500 Add logging decorator, test and test for yaml_file (#1178) add a logging decorator (logit) and its associated pytest add a pytest for yaml_file commit bf06289c280bafd557c9a9d34ce77d8d18fd2ff8 Author: Rahul Mahajan Date: Tue Dec 13 10:38:54 2022 -0500 fix coding norm check in `hosts.py` (#1174) `pynorms` test is trapping a error in `hosts.py` on the conditional for singularity container that is now fixed. Also start ignoring git hidden directories from pynorms. commit 3e53e061dbf4fcf91bf39c5bd87b7ef31e806d55 Author: Guillaume Vernieres Date: Mon Dec 12 20:05:03 2022 -0500 Fix some bugs and make other changes so ctest in GDASApp works (#1172) Fix some bugs and make other changes so ctest in GDASApp works. `$CDATE` is used instead of `$cyc` for the time being, since `cyc` isn't defined before that point in the scripts. Fix some lines where multiple arguments were enclosed in quotation marks when they should be separate. Update `config.ocnanal` to template out some variables and add them to the defaults yaml. Fixes #1164 Fixes #1173 Companion PR to [GDASApp/PR234](https://github.com/NOAA-EMC/GDASApp/pull/234) See also [GDASApp/232](https://github.com/NOAA-EMC/GDASApp/issues/232) commit 5a748ee99198e7575862f6f05297a1599470d61d Author: Guillaume Vernieres Date: Mon Dec 12 16:02:47 2022 -0500 Support for the GDASApp testing in containers (#1151) Adds support to running GDASapp portion of global-workflow in a container `CONTAINER.env` is quite minimalist at this point, it could also certainly be cleaned up, but it will need to be expanded later anyway to handle additional jobs. Fixes #1234 commit 3085dfc349098436b4b64b11cbcf0fe2b631011f Author: Neil Barton <103681022+NeilBarton-NOAA@users.noreply.github.com> Date: Mon Dec 12 15:58:34 2022 -0500 ATM 3DVAR with and without IAU (#1113) This is the first of a series of PRs to addresses issue https://github.com/NOAA-EMC/global-workflow/issues/947 (cycling the S2SW app with 3DVAR). Using the ATM app, 3DVAR with IAU did not cycle out-of-the-box. This PR includes changes to successfully cycle ATM with 3DVAR with and without IAU. Refs: #947 commit dda2edbcf895a123ff5f4b1e77b28dd88044a24c Author: Rahul Mahajan Date: Mon Dec 12 15:56:49 2022 -0500 Enable checking for python norms and fix violating code (#1168) This PR: - enables checking coding norms on python scripts using `pycodestyle` via github actions - adds the rules of the norms in `.pycodestyle` - fixes python scripts that violate the norms using `autopep8`. If a python script is failing during norm check, it can be fixed with the following command: ``` $> autopep8 -i --max-line-length 160 --ignore E402,W504 /path/to/offending_script.py ``` commit 6274c27f43bd2bb5a01142e5424d7ff7e1663ead Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Mon Dec 12 15:52:36 2022 -0500 Enforce decimal math in atmos post (#1171) `fhr` was still being treated as an octal in some places of atmos post. Instances where `fhr` are used for math are now updated to `d_fhr`, which is always a decimal representation of the `fhr` string. Fixes #1141 commit f19d795061fad696ada891e21df4db5de0e5007a Author: Rahul Mahajan Date: Mon Dec 12 15:48:42 2022 -0500 Update marine DA j-jobs to new format (#1149) The new marine DA jobs were added (PR #1134) roughly concurrently with the refactoring of the j-job scripts (PR #1120), and thus didn't pick up the changes there. These new jobs are now updated. commit 287f52c8943d639d5f49a7d73faeedcc003ca685 Author: Cory Martin Date: Mon Dec 12 07:03:37 2022 +0000 Add utility to manipulate files en masse (#1166) This PR adds the ability to pass in a configuration and manipulate files in bulk. Currently it just works for `copy` and `mkdir`. A sample YAML file: ``` mkdir: - ${CRMTEST}/output copy: - - ${CRMTEST}/fakefile1 - ${CRMTEST}/output/fakefile1 - - ${CRMTEST}/fakefile2 - ${CRMTEST}/output/fakefile2 ``` To use it in a python script: ``` from pygw.utils import FileHandler FileHandler(path='/export/emc-lw-cmartin/cmartin/work/tmp/test.yaml').sync() ``` commit c59c0d8c6b3dbca4902b48cdc7f86afc3d6426b3 Author: Rahul Mahajan Date: Fri Dec 9 17:24:55 2022 -0500 add action to run pytests (#1167) This PR adds a github action that runs pytests on the python code within pygw. The package is tested with python versions 3.7,. 3.8, 3.9 and 3.10. After this PR, tests will be required with every new feature added to `pygw`. commit ce05e203373bf7dc509bba567f2af73d702e9840 Author: Jan Macku Date: Fri Dec 9 23:24:09 2022 +0100 Pin `differential-shellcheck` to `v3` tag (#1162) Pins the differential-shellcheck to v3 instead of using latest to avoid API changes breaking existing CI. Also removes unneeded write permissions. commit cfde4e7f5e087441f5a6991aaf6dc4b23a9b06d0 Author: Rahul Mahajan Date: Thu Dec 8 18:11:45 2022 -0500 Add a task base class and basic logger (#1160) - Adds a very basic base class `Task` that will be used when creating new tasks or refactoring existing tasks. - Adds a very basic logger that can write output to stdout as well as a file. - Adds a test for Logger commit cab4fafaa3afcc11cfc3a3509c4bf3e31faa7df8 Author: Walter Kolczynski - NOAA Date: Wed Dec 7 16:46:51 2022 -0500 Recursively convert dict to AttrDict when making an AttrDict (#1154) Dicts within an AttrDict were not being converted to AttrDicts at creation/update time. This meant (among other things) when updating, nested dicts of the same name would be overwritten instead of merged. commit 21056c1a748f48c4b08c6c5bc1fcebcdd0d10192 Author: Rahul Mahajan Date: Wed Dec 7 16:13:43 2022 -0500 move configuration.py to pygw. Use it from there. return AttrDict after sourcing configs (#1153) commit c961e9a44084d6bfc7042bd8e2190bcf9091d256 Author: Guillaume Vernieres Date: Tue Dec 6 11:21:36 2022 -0500 JEDI based Marine DA tasks (#1134) This PR adds the relevant scripts/steps to exercise the JEDI based marine DA eventually needed for GFSv17. See issue #1072 for more details. The branch used for this PR was extracted from a ["rogue" branch](https://github.com/guillaumevernieres/global-workflow/tree/feature/add-soca) that included changes to the model related scripts to allow for WCDA cycling. The testing was done with the coupled `C48/5deg` atmos/ocean model, using the `GSI` for the amos initialization and the JEDI based marine DA system (SOCA) for the ocean initialization. It is probably step 1 of at least 2 steps to get this work to a functional state in develop. I just don't know yet who's responsibility it is to fix the coupled model scripting to make it work in cycled mode. #### A few notes: - Copying some of the `SOCA` fixed files has yet to be coordinated: An environment variable in `config.ocnanal` is pointing to `/scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/static/72x35x25/`. This needs to be copied elsewhere. - This work as is does not cycle and will require more work on the model side as pointed above - The testing of that ["rogue" branch](https://github.com/guillaumevernieres/global-workflow/tree/feature/add-soca) from which this PR is derived, was only done on `Hera`. Fixes #1072 commit 7971a5f6dcca8740fe20d36680a2fe0a479c9b1b Author: Rahul Mahajan Date: Tue Dec 6 11:05:38 2022 -0500 Allow customizations based on user/configuration (#1146) * allow for modifying any config file from a higher yaml commit 6ab858ea1e5f7827026655007617730c6bc9eda6 Author: Rahul Mahajan Date: Tue Dec 6 11:04:07 2022 -0500 First step towards making j-jobs consistent in use from ecflow and rocoto (#1120) Several jobs run in development mode do not adhere to EE2 standards. Sometimes these development jobs do get used for operations at which time there is a rush in getting them to be standardized. These jobs are also used to run parallel retrospectives and near-real time parallels. This work is performed with GFSv17 and GEFSv13 as the target implementation. This PR attempts to standardize the use of several variables as defined in the NCO EE2 standards document. Specifically; The following are defined in the job-card: `DATAROOT` `cyc` `HOMEgfs` `job` `jobid=$job/$$` or `jobid=$PBS_JOBNAME/$PBS_JOBID` depending on Rocoto/Ops The following are defined in the j-job: `pid` `DATA=DATAROOT/jobid` `cycle` This PR also fixes a bug in `exgfs_atmos_post.sh` that is only encountered when `WAFSF=YES` and in the `gdaspostanl` job. An overzealous linter added extra white-space and put quotes around an argument for `wgrib2`. commit 540b8a6eb43e3d3e4f07b1ed3719382a43000265 Author: Rahul Mahajan Date: Fri Dec 2 10:04:21 2022 -0500 enable APP=S2SWA on WCOSS2 (#1142) commit e2c29749ffe4050ce4e0273ef4802b8458bbc59c Author: Walter Kolczynski - NOAA Date: Wed Nov 30 15:47:29 2022 -0500 Fix typo in .shellcheckrc commit 17c50577989440b2fb680670a02aa96ab6b62588 Author: Kate Friedman Date: Wed Nov 30 15:40:09 2022 -0500 Remove prod_envir module load from WCOSS2 (#1138) The prod_envir module load in module_base.wcoss2.lua is not needed and is being removed. commit 4e3335b269754340521f435705fb3cd840638a79 Author: Rahul Mahajan Date: Wed Nov 30 14:10:00 2022 -0500 Link staged GSI fix files instead of cloning them from gerrit (#1132) * disable cloning GSI recursively. Link GSI fix files from central space * add `gsi_ver` variable in fix.ver Refs #1128 commit cc2f94b82199897bcc869805644a01e39f71fac3 Author: Kate Friedman Date: Tue Nov 29 12:50:12 2022 -0500 Address shellcheck warnings in env files (#1136) * Update env files for shellcheck warnings: SC2004, SC2034, SC2086, SC2166, SC2250, SC2292 * Remove outdated and unneeded gfs.ver from env folder Refs #397 commit 2aa654cab3c91696b92463ee933a2e7d090a879f Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Mon Nov 28 23:11:22 2022 -0500 Adds group size and nmem for GEFS (#1127) Adds additional settings for ensemble forecast group size and number of members since gfs CDUMP (GEFS) will have different values than GDAS. NMEM_EFCS sets the number of members for GEFS (default: 30) NMEM_EFCSGRP_GFS sets the number of members per job for GEFS (default: 1) Fixes #1117 commit 9955a2614789ddac0ea521ad922b0acaad22ef20 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Tue Nov 22 16:29:35 2022 -0500 Remove unnecessary sCDATE assignment in forecast_predet.sh (#1133) `ush/forecast_predet.sh` contains an unnecessary sCDATE assignment. Therefore this line is safe to be removed. Fixes #956 commit 5df144d9fca642a80c48e3b14216599d0062e428 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Tue Nov 22 16:14:37 2022 -0500 Convert archive jobs to proper j-jobs (#1115) Updates the archive jobs to the standard j-job/exscript format. Fixes: #1051 Refs: #720 commit 3a9c27a43d912707f338552a41a380c41f640180 Author: Rahul Mahajan Date: Tue Nov 22 16:01:32 2022 -0500 Update C48 forecast to run with one thread (#1131) C48 forecasts currently fail on WCOSS2 when running with two threads. Two threads are likely not really needed, so the forecast job is reduced to single-threaded on all platforms, at least until the problem can be corrected. Also moves the block capping the write block size to the node size outside the resolution-specific block, since that is needed for all resolutions. Fixes #1129 commit 6e60e1d573ba78f54378cd27654eede3f8765cd8 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu Nov 17 16:02:50 2022 -0500 Improved error messages from atmos analysis (#1125) The logical test used to set gsi namelist variable `nhr_obsbin` was not consistent with other checks in the script which use variable `l4densvar`. This relocates the setting for `nhr_obsbin` to be consistent with other tests using `l4densvar`, which will allow the appropriate error messages to be output by the executable. Fixes #1123 Fixes [NCO bugzilla #1196](http://www2.spa.ncep.noaa.gov/bugzilla/show_bug.cgi?id=1196) commit 87f44e5225e92076df76297ba98247be83d8bfe6 Author: Kate Friedman Date: Thu Nov 17 15:36:26 2022 -0500 Update MODULEPATH for Orion (#1126) New hpc-stack location on Orion managed by Hang Lei: /apps/contrib/NCEP/hpc-stack/libs/hpc-stack/modulefiles/stack Refs #1119 commit 2e6883678a136007f0f3bc77334acb9b8478f3ce Author: Kate Friedman Date: Thu Nov 17 13:45:32 2022 -0500 MPMD variable updates and fix (#1124) * Correct wave_mpmd setting in JGLOBAL_WAVE_INIT * Update Jet and S4 env files for mpmd_opt * Rename mpmd to mpmd_opt in WCOSS2 env file commit 196e928a4486ce171393a1033e68cd115b428634 Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Thu Nov 17 10:48:07 2022 -0500 Introduce FHMAX_ENKF_GFS to extending ensemble forecast capabilities (#1122) Allow running ensemble forecasts in the early cycle (`CDUMP=gfs`) to an arbitrary forecast length controlled by `FHMAX_ENKF_GFS` commit 53706b737dae603d02d4229cf4160b6f2ebd9afc Author: Kate Friedman Date: Tue Nov 15 09:14:48 2022 -0500 Update R&D launcher commands for tasks and multi-prog (#1112) * Update multi-prog in HERA.env and ORION.env * Update launcher commands in HERA.env and ORION.env * Adjust C96 & C48 eobs resources in config.resources Refs #1060 commit f64f9e50a809e99b3edab91476c31dc9415d64cd Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu Nov 10 13:57:18 2022 -0500 Correct crtm path in UFS DA atmospheric analysis scripts (#1111) UFS DA unified forward operator (UFO) validation uses `crtm/2.3.0` for radiances. UFS DA scripts which exercise UFO for radiance assimilation should use the same CRTM coefficients. UFS DA scripts `exgdas_global_atmos_analysis_run.sh` and `exgdas_global_atmos_ensanal_run.sh` currently use CRTM coefficients from `crtm/2.3.0_jedi`. This is not correct. The CRTM coefficient path for the two UFS DA analysis scripts in question has been updated in [`feature/ufsda_crtm`.](https://github.com/NOAA-EMC/global-workflow/tree/feature/ufsda_crtm) Fixes #1110 commit 51488b4c25c2827d43787be226e5c9c8d12a3c13 Author: Walter Kolczynski - NOAA Date: Wed Nov 2 16:10:16 2022 -0400 Correct syntax in remaining sorc scripts (#1105) Updates remaining shell scripts in sorc directory to pass shellcheck without any warnings. Refs: #397 commit a9aaa580745404a225a5e5696a04e4555f04e484 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Nov 1 17:03:08 2022 -0400 Add GSI background error covariance as an option for UFS DA variational assimilation (#1104) Adds the ability to run fv3jedi_var.x with the GSI static B. commit c5fc2b75cc16c18aa250b3cc8e8df3a08c26bb0e Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Mon Oct 31 10:36:10 2022 -0400 Add Early Cycle EnKF workflow (#1022) Updates workflow to allow early cycle EnKF. Refs: #1021 commit 52100d247a73fa49f27df6d218f47c39035b25c5 Author: Kate Friedman Date: Thu Oct 27 15:33:34 2022 -0400 Correct errors with gdas and monitoring symlinks (#1101) Refs #1100 commit a8e88910df32c4733ebfbdad5bc26c40996d25e5 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Thu Oct 27 09:22:11 2022 -0400 Fixed gfs-utils links (#1099) Refs #1098 commit 2bc180b8424adaf5738974f5d3597da0f3560868 Author: Walter Kolczynski - NOAA Date: Wed Oct 26 10:00:48 2022 -0400 Fix build scripts and bring into compliance (#1096) Adds module-setup calls and updates gfs-utils to reset modules when building. The gfs-utils update also fixes the build issue on Orion by updating the stack version to 1.2. Brings all build scripts into full shellcheck compliance. Also removes the workflow utils modulefiles since they are no longer needed after moving those programs to gfs-utils. Fixes #1093 commit c8c6994d60a8f4ee56f226e4d45738961d52ff6a Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Oct 25 18:35:21 2022 -0400 Feature/updates for gdas app (#1091) Updates the GDASapp version to a newer version that builds correctly. The former version no longer builds because submodules point to develop branches that are no longer compatible. Moves module loads out of the j-jobs and into their appropriate place in the rocoto job. A new load module script is added to handle the different module set needed for UFSDA. Also temporarily turns off strict mode for the UFSDA jobs to avoid PS1 unbound error in conda. Fixes #1043 Fixes #1067 commit 26c23be78a87806b081359f4647fff7a3f423981 Author: Kate Friedman Date: Tue Oct 25 15:06:43 2022 -0400 Change GLDAS USE_CFP to NO on Hera (#1094) Refs #1089 commit 5c03697b1c850919b88b6a68afeea058674b5742 Author: Kate Friedman Date: Mon Oct 24 14:16:21 2022 -0400 Resource updates to support WCOSS2 (#1070) * Add WCOSS2 BASE_CPLIC to config.coupled_ic * Remove errant ) from WCOSS2 hosts file for COMINsyn * Updates to config.fv3 from WCOSS2 testing * Add "is_exclusive" setting to config.resources * Add WCOSS2 to machine npe_node_max check in config.resources * Update resources in config.resources * Update build_ufs.sh to set S2SW as default app on WCOSS2 * Set hpssarch to NO by default on WCOSS2 Refs #419 commit d01de06d54cba36cd688e4b88cb452015a493185 Author: Walter Kolczynski - NOAA Date: Mon Oct 24 13:37:24 2022 -0400 Set COMPILER in link for detect machine (#1092) The new detect_machine script in gfs-utils requires COMPILER be set. Also added the gfs-utils scripts to the git ignore list. Fixes #1090 commit b9b8322fbf0ad1fc9ea9c5bf584546c3a2865bdf Author: Walter Kolczynski - NOAA Date: Mon Oct 24 09:25:29 2022 -0400 gfs utils update (#1088) The recent update of the gfs_utils version in PR #1082 introduced some gfs_util that weren't accounted for in the original PR. gfs_utils changed the name of the script that determines the machine to `detect_machine.sh`, so scripts that call that script had to be updated. The variable name holding the machine name has also changed (from `$target` to `$MACHINE_ID`) and it may now include a compiler at the end, so changes were necessary to account for that. The WW3 build is changed completely to use the UFS modules to be consistent with the rest of UFS instead of maintaining separate modules in workflow that may use different module versions. Also reverts an inadvertent removal of execute permissions for `checkout.sh` Fixes #1086 commit 9118ab33eca68690f99a4be288101b0b1d565bf6 Author: Kate Friedman Date: Sat Oct 22 07:29:17 2022 -0400 GFS-UTILS update for build and ush scripts (#1082) This PR updates the gfs-utils version (af933d3) and ush script symlinks/paths. This will resolve issue #1059 until `finddate.sh` can be used via the `prod_util` module. * New gfs-utils hash: af933d3 * A number of ush scripts were moved into the new gfs-utils repo but not added to `link_workflow.sh`. This PR adds them to `link_workflow.sh`. * Several workflow scripts are updated to point to the gfs-utils ush symlinks under the top level `/ush` folder instead of the prior `/util/ush` folder. Fixes #1059 commit a30b7167154430d5235065c6df2f3477f96a52df Author: Walter Kolczynski - NOAA Date: Sat Oct 22 00:33:02 2022 -0400 Update UFS version to 2022 Oct 19 (#1083) No settings modifications were necessary for this update. This advance of the UFS version (finally) fixes the problem with missing PV and sigma levels. commit 6f5fa7949299ef70b5e846697461b8538aef6a5d Author: Walter Kolczynski - NOAA Date: Wed Oct 19 23:37:45 2022 -0400 Use more cycledefs for task control (#1078) Splits the existing rocoto cycle definitions up to offer better job control. This means that only the jobs that are due to run will appear in a cycle's job list from rocotostat/rocotoviewer. It also allows for the removal of some of the cycleexist dependencies that were there solely to prevent the job from running in the half cycle. A side effect of this change is that the half-cycle will be recognized as a completed cycle, fixing the bug with archive jobs starting in the fourth cycle (#1003). The gdas cycledef has been split into a `gdas_half` for the first half- cycle and `gdas` for the other GDAS cycles. Tasks that run during that first half-cycle therefore run on two cycledefs. For gfs, instead of slicing perpindicular to time, a new cycledef `gfs_cont` (continuity) was created in parallel to the existing gfs cycledef that omits the first cycle. This was done since only one job (`aerosol_init`) currently skips the first cycle, and this prevents the need to provide two cycledefs for every gfs task but one. Since some time math is now being done on sdate in workflow_xml.py, we now keep those as datetime objects and only convert to string when writing the cycledef strings. In order to access the pygw utilities in the workflow directory, a symlink is created in `workflow` pointing to the pygw location in `ush`. A better solution may be found in the future. Fixes #1003 commit 67770120c72fd810311e3e5a02abec25f9e7725d Author: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Tue Oct 18 01:58:37 2022 +0000 removing superfluous EFSOI-specific files from develop (#1079) commit 7fc0f261e673cac9df06ef2208f2a840529cea48 Author: Walter Kolczynski - NOAA Date: Mon Oct 17 14:57:07 2022 -0400 Update UFS to Sept 9 version (#1073) Updates the UFS version. This captures the conversion of UFS module from TCL to lua. A couple of the CICE namelist variables are no longer valid in this version, so they are removed. Due to memory limitations on Hera and the increased memory requirements of GOCART, the number of threads is increased there when running the forecast with aerosols. Also added a temporary block to delete any existing gocart output files. The ability to clobber files was deactivated a while ago and I got fed up with forecast jobs failing on retry. commit fd771cb82ab603a64f16ba8639f3e71c8fc7440d Author: Ed Safford <62339196+EdwardSafford-NOAA@users.noreply.github.com> Date: Wed Oct 12 16:55:28 2022 -0400 Modify default file location for monitor data when using rocoto (#1065) Added a $cyc subdirectory to the default file location for monitor data in rocoto. This ensures no file name collisions occur in the output monitor files. This change was also recently made to GFSv16.3.0 package @ 4335ef2. Additionally a problem with the definition of the previous cycle (m1) for the DA monitors was identified and corrected. This corrects the MinMon's output data. Fixes #1055 commit 8172530245972c7f569a2bf950b1929282b937e4 Author: Walter Kolczynski - NOAA Date: Tue Oct 11 15:58:37 2022 -0400 Fix companion ocean resolution for C48 (#1066) The ocean resolution for atmostphere C48 should by 5 deg, not 4 deg. Fixes #1054 commit e8ef5fc6cc2781f5c3c47e7cf2762a6f7de2d123 Author: Walter Kolczynski - NOAA Date: Tue Oct 11 14:25:02 2022 -0400 Add trailing slash for gldas topo path (#1064) GLDAS requires the namelist definition for the topo directory to have the trailing slash. Fixes #1063 commit 9553ef690b12709fd3024f07ad81257d02453ac6 Author: Walter Kolczynski - NOAA Date: Tue Oct 11 11:22:50 2022 -0400 Limit number of CPU for post (#1061) Limits the number of MPI tasks for post to the resolution of the forecast. UPP seems to fail if it is given more ranks than the resolution. Fixes #1060 commit e915eb64095a3ccf3d723892ffa1a2092c8e9a3f Author: Walter Kolczynski - NOAA Date: Fri Oct 7 20:31:29 2022 -0400 Fix eupd trace (#1057) When the preamble was implemented, a `set +x` was inadvertently left in the ensemble update script while the subsequent `set -x` was. This led to much of the trace not appearing in the output. Also removed a jlog print that is only encountered when ICs are missing. It complicated the real IC missing error with an additional unbound variable error. commit e09989b8285f71b44a0958fd1c60e7ca49d73661 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri Oct 7 20:12:04 2022 -0400 Port to S4 (#1023) Ports the global workflow to the S4 cluster. Note that this does not include support for S2S experiments. Additionally, S4 does not support C768 experiments. A couple of special notes: - S4 does not have access to rstprod data. Among other things, this means that the nsstbufr and prepbufr.acft_profiles files must be created on the fly. The way I accomplished this was by moving the `MAKE_NSSTBUFR` to and creating `MAKE_ACFTBUFR` in config.base.emc.dyn and setting them via setup_workflow.xml. This seems like a bit of a kludge and I am open to suggestions on how else to address this. Both options need to be set for the prep and analysis jobs. - S4 _can_ run S2S+ experiments, but this requires significant, and convoluted, modifications to the configuration files. Support for these are thus not enabled by default. Instead, I have placed a set of configuration files in S4:/data/users/dhuber/save/s2s_configs. Users interested in performing these experiments should contact me to set it up. Closes #138 commit b26a8ac85b2b981356417ad7ced3d1d420cede68 Author: Kate Friedman Date: Fri Oct 7 10:51:25 2022 -0400 Update to obsproc.v1.0.2 and prepobs.v1.0.1 (#1049) * Update HOMEobsproc paths in config.base * Update primary obsproc JJOB call in prep.sh * Add prepobs module load to R&D module_base modulefiles * Add cdate10 setting to config.prep * Add launcher_PREP to HERA and ORION env files * Add needed COMINtcvital path to config.prep * Retire config.prepbufr and prepbufr step from config.resources Refs #1033 commit 8cb27c6e48437f28ffb965e0043dc00e90a42a31 Author: Walter Kolczynski - NOAA Date: Thu Oct 6 17:23:22 2022 -0400 Add GDAS to the partial build list (#1050) When the GDAS app was added to the workflow, the corresponding build setting was not added to partial_build and the build configuration file. This means that after `build_all.sh` was updated to correct syntax issues, the build would fail because `$Build_gdas` was undefined. Note: the GDAS app still does not build currently due to unrelated problems within the gdas repo. Refs #1043 commit 9b3fa14ec9df6697b9de76f8a536ceff73358935 Author: Walter Kolczynski - NOAA Date: Thu Oct 6 17:22:45 2022 -0400 Fix group number being treated as octal in gdas arch (#1053) The group number was being treated as an octal in gdas archive job, resulting in errors for being out-of-range when more than 7 groups were used. Fixes #1032 commit 235d597113fe2af04cf58c3aa7ac8a6892e2fc64 Author: Walter Kolczynski - NOAA Date: Thu Oct 6 17:21:56 2022 -0400 Remove trace from link script (#1046) Removes the trace from the link script. Since this makes the script silent (including some errors), some messages are added to give feedback about the scripts success or failure. UFS Utils' [link_fixdirs.sh](https://github.com/ufs-community/UFS_UTILS/blob/develop/fix/link_fixdirs.sh) script turns the trace on when it runs, so its STDERR is thrown away. Also corrects a bug where the case of `$RUN_ENVIR` set did not match the case it was compared against. Fixes #1044 commit 695ba93b2e9464a6fd83c432d80293e2ab823735 Author: Kate Friedman Date: Tue Oct 4 14:58:39 2022 -0400 Update gfs-utils hash to 3a609ea (#1048) Update gfs-utils hash to add WCOSS2 support for that component. Refs #1047 commit e464e27611c14ad6db1e347dadea47c30b5e3b96 Author: Walter Kolczynski - NOAA Date: Tue Oct 4 14:25:56 2022 -0400 Fix link script usage statement (#1045) The function being called when passed -h was not the same as the one used for the function definition (there was a leading `_`). Fixes #1044 commit 833b8f4c124fb48b5a04bc0f82c2b5fc9df1165c Author: Walter Kolczynski - NOAA Date: Tue Oct 4 03:04:38 2022 -0400 Replace preamble variable commands with functions (#1012) Replaces the commands to restore the strict and trace state with functions. Functions are more logical choice for this sort of behavior. Refs: #397 commit e7f72e8b6e3f4244465bbfb077f00bc4d7610739 Author: Walter Kolczynski - NOAA Date: Tue Oct 4 03:03:15 2022 -0400 Implement fix reorg and remove gfs-utils code (#1009) Removes all of the code and scripts that were moved to the new [gfs-utils repo](https://github.com/NOAA-EMC/gfs-utils) and adjusts workflow scripts to build and use them from the new location. Some of the build scripts had unnecessary calls to machine-setup that are removed because the lower-level script already has the same functionality. This PR also includes updates to use the new fix organization. This includes the addition of a fix versions file, updates to the link script, and some changes in the fix directories used by scripts to account for files that have been relocated. The versions file sets the version number for each component of fix, so that fix can be more easily maintained and documented. The initial versions are all the same, and correspond to the old fix_NEW directory (other than some directories have been renamed or reorganized). Except gdas, which has already had a new set of fix files added. The fix update also required an update to UFS-Utils. Finally, the link script has been updated to match the syntax of the rest of the build system ([checkout.sh](sorc/checkout.sh) and [build_all.sh](sorc/build_all.sh)). [link_workflow.sh](sorc/link_workflow.sh) now detects the machine automatically instead of requiring an argument, and dev mode, which used to be set using `emc` as an argument, is now assumed. To run in ops mode (copy instead of link), the `-o` option is used. The full syntax is now simply: ``` ./link_workflow.sh [-o] Options: -o: Run in operations (NCO) mode (copy instead of link) ``` Fixes #356 Fixes #966 commit 948f941918ebb85444aabfa68e8f24bbe73d9202 Author: Walter Kolczynski - NOAA Date: Mon Oct 3 22:56:03 2022 -0400 Rename post scripts (#1038) Rename post scripts to remove the unnecessary "ncep" qualifier. Also changes the executable name for upp to be the one produced by upp (`upp.x`). The ush/global_nceppost.sh script is removed as it is not used by any job. We may want to rename the gfs_post.sh script (the one that is used) to global_post.sh to be more reflective of its usage. commit 065a0dda6ceff7224978fb147073c74feb3a13e6 Author: Kate Friedman Date: Thu Sep 29 17:06:40 2022 -0400 Fix missing @ symbol with COMINsyn in config.base (#1039) Refs #419 commit a62abc7aea8131ba262b997ab4b8b67b11552b53 Author: Kate Friedman Date: Thu Sep 29 11:09:14 2022 -0400 WCOSS2 run support and script/config updates (#1030) - WCOSS2 port changes requested by NCO in the move of operations to WCOSS2; mainly within scripts. - Adding WCOSS2 run support by creating WCOSS2.env, wcoss2.yaml hosts file for rocoto, and config updates. - Also some cleanup that was done in the GFS operations port to WCOSS2. Refs #419 commit 72131c6285a8e37fcf1e02f766ffd77aa37f6669 Author: Kate Friedman Date: Wed Sep 28 14:57:22 2022 -0400 Remove base_svn from Hera and Orion hosts files (#1036) Refs #1035 commit b3e10f37b57e2d377784056ec31078af2d9a2c39 Author: Rahul Mahajan Date: Tue Sep 27 14:33:51 2022 -0400 initial commit for incoming yaml work (#1029) simple yaml and jinja toolsets commit 9e0d8d166e2ce07767f7d9d4ff66877a946856bf Author: Ed Safford <62339196+EdwardSafford-NOAA@users.noreply.github.com> Date: Mon Sep 26 13:04:44 2022 -0400 Fix radiance verification failing to find diag files (#1031) Correct exgdas_atmos_verfrad's failure to find diagnostic files. Additionally, fixed two other problems in child scripts which caused halts and/or failure to move resulting data files to the correct location. Fixes #1028 commit fae9e0a5c9270e1a4afa83338e99a035aed2f5a0 Author: Rahul Mahajan Date: Fri Sep 23 15:11:48 2022 -0400 Supported resolutions on platforms and defaults for mode (#1026) * add default options for cycled and forecast-only. Validate supported resolutions on the platforms commit a665817e64cff25836fe283c10105830b3842ed3 Author: Kate Friedman Date: Thu Sep 22 11:15:43 2022 -0400 Add GLDAS scripts & fix GLDAS job (#1018) Absorb GLDAS scripts into global-workflow and fix GLDAS job by updating scripts to use new GLDAS fix file set. * Remove GLDAS scripts from .gitignore * Remove GLDAS script symlinks from link_workflow.sh * Add GLDAS scripts to global-workflow * Updates to GLDAS scripts, includes converting GLDAS script to replace machine checks with CFP variables * Address linter warnings and remove obsolete platforms Refs #622 #1014 commit f180a546b68ff5455faf9fdb280f1ee4d710a36a Author: Ed Safford <62339196+EdwardSafford-NOAA@users.noreply.github.com> Date: Thu Sep 22 08:41:28 2022 -0400 Update GSI Monitor for radmon fix Move the hash value for gsi-monitor from acf8870 to c64cc47 to pick up recent fix to radmon_angle.x executable. Fixes #1024 commit f517d48dddbe2e03a3b9758c902a5d1474af6c26 Author: Walter Kolczynski - NOAA Date: Wed Sep 7 17:10:43 2022 -0400 Correct shell linter config (#1013) Per comment from the developer on PR #1008 after it was merged, the `shell-scripts` option for the shell linter does not do the globbing we expected. However, the linter action also only annotates when syntax issues are *added*. It will not flag files with existing errors, even if they are otherwise changed (at least, this is my understanding). So, immediately processing all shell files shouldn't be an issue (fingers crossed). Refs: #397 commit a2eec51037b732b625fb3425500cf054a5f8b666 Author: Ed Safford <62339196+EdwardSafford-NOAA@users.noreply.github.com> Date: Wed Sep 7 17:08:34 2022 -0400 Correct diagnostic file handling in ush/ozn_xtrct.sh (#1016) The OznMon's ush/ozn_xtrct.sh script creates a list of available sat/instrument sources for a given cycle in order to report missing files. The logic for extracting the list of sources worked on wcoss2 and hera but failed on orion. The logic used a listing of the diagnostic files which included user name. That created a parsing problem if the user name was not the expected length. The solution is to simply do a single line listing (ls -1) and parse the results. Additionally the processing logic was condensed and now avoids running the extraction executables in the case of a missing diag file. Fixes #1004 commit 855ee864e6077051f0a486b8b59c9056d50f955e Author: Walter Kolczynski - NOAA Date: Tue Aug 30 21:54:14 2022 -0400 Add shell linter Github action for pull requests (#1007) Add Github CI to enforce shell script standards. Refs: #397 commit 392ca6fc71c390a75cf0c4d621daa491c721e08a Author: Kate Friedman Date: Fri Aug 26 16:16:16 2022 -0400 Build updates for WCOSS2 (#1002) Enable build of the global-workflow and its components on WCOSS2. commit 5429096ec944ba3133ff7b77ad0587c4b7b0ffc6 Author: Kate Friedman Date: Fri Aug 26 11:40:46 2022 -0400 Update UFS_UTILS tag to `ufs_utils_1_8_0` (#1001) Update UFS_UTILS tag to ufs_utils_1_8_0 New tag contains: - cleanup of decommissioned platforms - adding support for WCOSS2 - regression test updates - code updates to chgres_cube and emcsfc_snow2mdl - some small script updates and cleanup - change to the FNAISC file from CFSR.SEAICE.1982.2012.monthly.clim.grb to IMS-NIC.blended.ice.monthly.clim.grb Refs #974 commit 1f142296279730566610e10fb93bd8beb636af07 Author: Walter Kolczynski - NOAA Date: Thu Aug 25 15:06:24 2022 -0400 Fix preamble id (#996) I was too clever by half when writing the preamble and used a check for an argument that doesn't actually work. Using the more typical method works correctly. commit 3a8fc8ecd2fdbe8484dd882a512e765d3c70b307 Author: Kate Friedman Date: Thu Aug 25 13:49:24 2022 -0400 Add missing "atmos" into job dependencies (#998) The "atmos" subfolder in the GDA was missing in the dependency path for the prep and atmanalprep jobs. Add it in for correctness. Updated dependencies in workflow/rocoto/workflow_tasks.py. Refs: #997 commit aae25112286e70e2f662b15f230bba958dfb897b Author: benwgreen <54944233+benwgreen@users.noreply.github.com> Date: Wed Aug 24 09:17:24 2022 -0600 Bugfix in arch.sh to remove hardwired "htar" (#992) To support "LOCALARCH", $TARCMD is used instead of hardwiring "htar". One line had a hardwired htar; this PR changes "htar" to "$TARCMD". commit 692e3fc891e32d7b7d1a55aca63bb43a3b8ad9b0 Author: Cory Martin Date: Tue Aug 23 16:13:38 2022 -0400 Add in stubs for aerosol DA tasks + bugfix for setup_expt where cycled and ATMA are used (#990) This PR adds in stubs for aerosol DA tasks (jobs/rocoto shell scripts), the ability for setup_expt and setup_xml to include three aerosol DA related tasks, and in the process of adding this capability, fixes a bug in which the combination of ATMA and cycled revealed that @property was being used incorrectly. Fixes #981 commit da164f8b00c68d1309759645a57f0df744d46ef2 Author: Walter Kolczynski - NOAA Date: Tue Aug 23 11:05:23 2022 -0400 Add GSI monitor scripts (#969) As part of the overarching goal of moving global workflow scripts out of component repositories and under global workflow, all of the scripts currently linked in GSI monitor are added to global workflow. Scripts have been updated to reflect standardization already made to other workflow scripts (preamble, no backticks, etc.). See 7aa637 for those modifications specifically. Related GSI-Montitor issue: NOAA-EMC/GSI-Monitor/pull/23 Fixes #967 commit 22977c9aae7016e50362947fd6ef36385d736ce2 Author: Walter Kolczynski - NOAA Date: Tue Aug 23 11:04:08 2022 -0400 Fix product generation at some fcst hrs (#988) 0.5 and 1.0 degree grib files were not being generated for most two-digit forecast hours due to a problem using a zero-padded number. Fixes #985 commit 8a62c3a9e2dcc5de05ca974be8852736d423de76 Author: Cory Martin Date: Fri Aug 19 14:09:07 2022 -0400 Add initial config files for global aerosol DA (#986) Add new config files for aerosol da commit cfcc21f9f96106b17bba9fd194cd360dda1fffb8 Author: Jessica Meixner Date: Thu Aug 18 07:10:44 2022 +0000 Update diag table to remove wav-ocn coupling fields (#979) Removes the wavocn output which is used to evaluate wav->ocean coupling. These were only needed for prototype diagnostics and when these variables are output without wave coupling, it can lead to failures. Fixes #977 commit d81a8b509c8c734ceaf4aa44f120c80452c38706 Author: Rahul Mahajan Date: Mon Aug 15 16:49:10 2022 -0400 use a robust Findwgrib2.cmake to find wgrib2 built w/ native wgrib2 build (#970) commit c29236b6bf6a4280cfc799e3b7adf54b37dd3211 Author: Rahul Mahajan Date: Wed Aug 10 11:15:16 2022 -0400 Externals.cfg was stale and had drifted off (#965) commit 9a538ee8baedb05f23d988003aaedc260ab7ecc7 Author: Walter Kolczynski - NOAA Date: Tue Aug 9 10:36:50 2022 -0400 Fix post comparison with zero-padded numbers (#964) An error was introduced with PR #929 that was causing 0p50 and 1p00 grib files to not be produced due to an error in comparing a zero-padded string. Switching to arithmatic comparison solves the issue. Also updated the method of the zero-padding to the preferred printf since the code was in close proximity. commit 1026b2c96eb8d987527b7b38a5d75f5b1786533c Author: Kate Friedman Date: Wed Aug 3 14:45:48 2022 -0400 Remove SDATE=CDATE IAU block in NCO config.base (#963) - Remove the block in config.base.nco.static that checks if CDATE=SDATE and turns IAU settings to 0. - This block is not needed in operations and causes issues in pre-implementation developer testing when starting a new warm-started parallel with wave restarts. Refs: #960 commit a658e75e579ebc4f454377e5a9cf4c1fc54e4e3d Author: Jessica Meixner Date: Wed Aug 3 18:34:34 2022 +0000 Updates for P8 (#946) These are the final updates for Prototype 8. These changes include: * Updating to the latest ufs-weather-model hash (in progress, waiting for PR) which will update the calculation of 2m T * A small update to the organic carbon coefficients for p8, raises them from 0.3 -> 0.4 for oc1 and oc2 * Uses 10km input files for aerosols * Sets do_gsl_drag_tofd=false by default, which helps with stability of the model Closes #937 commit b2155ad3dc999a2f41aeace58f3b199a8ddde65c Author: Walter Kolczynski - NOAA Date: Wed Aug 3 10:04:06 2022 -0400 Fix GLDAS j-job link (#954) The cd was misplaced when checking for the existence of gldas.fd to create the link for the j-job, so the directory was never found and the job never linked. commit 395720cef000ef221c49c93d4f68417b7fda64b6 Author: Walter Kolczynski - NOAA Date: Mon Aug 1 17:38:50 2022 -0400 Add ocean post to archive dependencies (#949) The archive job was not waiting for ocean post to complete because there was no dependency. Fixes #948 commit 145b67f70f44abbb713e19073016bacfbfcb8184 Author: Walter Kolczynski - NOAA Date: Fri Jul 29 13:42:38 2022 -0400 Initial commit of directory comparison tools (#934) Adds a new `test/` directory to the top level. Inside are miscellaneous scripts I have used to test bitwise identicality of experiments. Main scripts: - `diff_ROTDIR.sh`: Compares two output directories - `diff_UFS_rundir.sh`: Compares two UFS run directories Other scripts and file are helpers to these two main scripts. May eventually form starting point of a global workflow regression test (#267) Refs #267 commit e480093446797e556bc1371f9f80610a7c9a6d4b Author: Walter Kolczynski - NOAA Date: Fri Jul 29 13:42:02 2022 -0400 Add preamble, convert to bash, and remove env (#929) This is the first in a wave of commits to improve and standardize the scripts within global workflow. In this commit, all scripts run during execution are converted to bash and a preamble is added to every script that is not sourced by another script. Every script executed during a forecast cycle is converted to bash. This was mostly straightforward, though there were a couple Korne-shell conventions (primarily using `typeset` to format strings) that had to be replaced with bash-compatable alternatives like `printf`. This in turn required a few modification to prevent zero-padded numbers from being treated as octals (other may have been pre-existing bugs). The preamble contains a number of feature to standardize code and improve script flow and debugging. - First, it uses two variables, `$STRICT` and `$TRACE` to control the behavior of `set`. When `$STRICT` is `"YES"`, error on undefined variables (`set -u`) and exit on non-zero return (`set -e`) are turned on. When `$TRACE` is `"YES"`, command trace (`set -x`) is turned on and a useful string is set to `$PS4` that gives the name and line number of the script. Both `$STRICT` and `$TRACE` default to `"YES"`. They also set up commands, `$ERR_EXIT_ON` and `$TRACE_ON`, that will restore the setting of each in the event a script needs to temporarily turn them off. - Second, the preamble sets up primative timing of scripts using Posix `date`. - Third, it echos the script is beginning and at what time. - Finally, it also establishes a postamble function and sets it to run as a trap of EXIT. The postamble will use the end time to calculate the run time of the script, then print that the script has ended at what time, how long has elapsed, and the exit code. By setting this up as a trap instead of just calling it at the end of the script, it ensures the postamble is called even if the script exits early because there is an error. - In response to this standardization, parts of scripts that performed these preamble functions (announcing start/end, `set -x`, etc) have been deleted. For some scripts where temporarily turning off `-x` or `-e` is needed, they now use `$ERR_EXIT_ON` and `$TRACE_ON` to return to the correct state afterwards, instead of blindly turning the setting back on. - Additionally, some modifications were needed to comply with `set -eu`. Mostly taking care of undefined variables, but also a couple instances where a non-zero return code had to be dealt with. If users wish to use their own preamble script instead, the default script can be overridden by setting `$PREAMBLE_SCRIPT` before the run begins. Instance where scripts would print the full list of environment variables have been removed. These can be spot added back in to debug as necessary. Alternatively, a future PR will add them back in in a standardized way. `rstprod.sh` is added to the link list from gsi_monitor.fd, as it is needed for the radmon scripts. The placeholders for AWIPS and GEMPAK in the Hera and Orion environment scripts were replaced with the correct definitions. There were also other modifications to AWIPS and GEMPAK scripts to get it working for development (AWIPS still isn't and will be fixed in the future). GSI scripts that were brought in recently had all of their backticks replaced with `$( )` as was done with all other script previously. Refs: #397 commit 949513642d33cb3976d0f8e7dd273aedec505a17 Author: Rahul Mahajan Date: Thu Jul 28 18:36:58 2022 -0400 minimal intervention to create a data-atmosphere xml (#936) commit e4b01b99f50c674635477ff3e2e962b9d5ed54aa Author: Rahul Mahajan Date: Thu Jul 28 18:28:28 2022 -0400 Remove Cray, Dell, WCOSS1 from module-setup.sh.inc (#943) This file was missed in the initial cleanup. commit 1ed89c7d202974bd4ccd2b048fedc56382edc9ec Author: Rahul Mahajan Date: Thu Jul 28 15:35:37 2022 -0400 bring GDASApp jjobs and exscripts to global-workflow (#941) commit f04f3ba4dfd5b358aea425f65f82d40917597776 Author: Rahul Mahajan Date: Tue Jul 26 22:07:42 2022 -0400 change gdasechgres dependency to just gdasefcs01 instead of gdasefmn (#933) Replaces the dependency of `gdasechgres` on `gdasefmn` with `gdasefcs01`. Presently, `gdasechgres` has 2 dependencies: - `gdasfcst` - deterministic forecast - `gdasefmn` - ensemble forecasts (all of them). The work done in `gdasechgres` actually depends only on the `mem001/atmos/gdas.tHHz.atmf006.nc`. This file is used as a template as well as obtaining `hgtsfc`. As such, there is no reason to depend on the entire ensemble of forecasts to be complete before `gdasechgres` can start. commit 490de7bae1322cbaa8ee3d52406034c8edf62dd3 Author: Rahul Mahajan Date: Tue Jul 26 22:05:59 2022 -0400 Remove obsolete platforms (WCOSS1, Dell, Cray, Theia) references. (#922) Removes code related to decommissioned HPC platforms WCOSS 1 (Dell & Cray) and Theia. Some references remain in scripts outside the global-workflow repo that are cloned as part of `checkout.sh`. Scripts from the `driver` directory that were hard-wired for one of the WCOSS1 platforms are also removed. Additionally, this commit also switches to using serial netCDF for resolutions C48. C96, C192. Running with parallel netCDF (on Hera) gave errors when testing at C96 for the deterministic forecast. If someone gives a very compelling reason to use parallel netCDF at these resolutions as default, I would be very interested in what they have to say. Closes #680 commit 4eb296f7e82459b1d8188636ca3db60b5fa10091 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Tue Jul 26 14:50:30 2022 -0400 Optimize DA clone, build, and link (#931) The PR contains changes to optimize the DA clone, build, and link. Changes are made to `checkout.sh`, `build_all.sh`, and `link_workflow.sh` in the g-w `sorc/` directory. These changes are in g-w branch `feature/clone` Two arguments are added to `checkout.sh` to allow the user to specify which DA package to build the global workflow with. These options are - `-g`: clone from the [GSI](https://github.com/NOAA-EMC/GSI) repo and build the g-w for GSI-based DA - `-u`: clone from the [GDASApp](https://github.com/NOAA-EMC/GDASApp) repo and build the g-w for UFS-based DA If no option is specified, `checkout.sh` does not clone any DA and DA related repos. This is the default behavior of `checkout.sh`. (_DA related_ repos include [GLDAS](https://github.com/NOAA-EMC/GLDAS), [GSI-utils](https://github.com/NOAA-EMC/GSI-utils), and [GSI-Monitor](https://github.com/NOAA-EMC/GSI-Monitor).) `build_all.sh` is modified to detect which repos and have been cloned and to build accordingly. `link_workflow.sh` is modified to detect which directories are present and link/copy accordingly. Closes #930 commit 2cad536551180d25bfcfc2b5d35fe1089de7f3c3 Author: Kate Friedman Date: Tue Jul 26 13:25:37 2022 -0400 WCOSS2 gempak ush scripts updates and cleanup of old release notes (#920) * WCOSS2 updates to gempak ush scripts - Add /gempak subfolder where needed in gempak ush scripts. - Remove unneeded commented out path settings from older iterations. * Removing older release notes - Cleaning out older GFS version release notes; includes current GFSv16.2.1 release notes, will commit GFSv16.3 release notes with implementation this fall. - Will then keep only the latest release notes moving forward. Refs: #419 commit ffcd5bbde7947902a73eebff7dfe04c2ab045b0a Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Jul 22 16:00:51 2022 -0400 Add GDASapp (first wave of JEDI changes) (#871) Merge changes associated with g-w issue #521 from g-w branch feature/ufsda_gdasapp into develop. feature/ufsda_gdasapp contains g-w extensions for JEDI based atmospheric DA. Specifically, this PR adds the option to add JEDI based variational and/or ensemble DA jobs to replace GSI based DA jobs. The toggling on/off of JEDI_VAR and JEDI_ENS jobs is controlled via two new variables added to `config.base.emc.dyn` and `config.base.nco.static` ``` # DA engine export DO_JEDIVAR="NO" export DO_JEDIENS="NO" ``` When both variables are `NO`, the global workflow uses GSI based DA jobs. Thus, the PR does not alter the default behavior of the develop global workflow. When `DO_JEDIVAR=YES`, GSI jobs `anal` and `analdiag` are replaced by JEDI_VAR jobs `atmanalprep`, `atmanalrun`, and `atmanalpost`. When `DO_JEDIENS=YES`, GSI jobs `eobs`, `ediag`, and `eupd` are replaced by JEDI_ENS jobs `atmensanalprep`, `atmensanalrun`, and `atmensanalpost`. `checkout.sh`, `build_all.sh`, and `link_workflow.sh` are updated to clone, build, and install the GDASapp in the global workflow. Local directory `sorc/gdas.cd` contains the GDASApp superstructure plus the relevant components of JEDI needed to run GDASApp. Closes #521 commit 98f4d16e9bba86d2c433aa0521d960b566062a1f Author: Walter Kolczynski - NOAA Date: Thu Jul 21 16:02:31 2022 -0400 Add postsnd job when bufrsnd it on (#926) In the workflow refactoring, the addition of postsnd to the task list when bufrsnd is true was inadvertently left out. It is now added back in. commit e2869a1247ad2ba72c1bfe82f7682323d5128f4c Author: Kate Friedman Date: Tue Jul 19 16:16:20 2022 -0400 Updated GFS transfer*list files from operations (develop) (#918) Updated transfer list files from WCOSS2 ops. - In move to WCOSS2 the transfer*list files were moved into a new transfer folder under the upper-level parm folder. - The transfer*list files were updated to clean out unneeded paths and the beginning of the paths were updated from: `com/gfs/_ENVIR_` to: `_COMROOT_/gfs/_SHORTVER_` Refs: #419 commit 1651014250a748c8c2e2878663c3e8376639044a Author: ChunxiZhang-NOAA <49283036+ChunxiZhang-NOAA@users.noreply.github.com> Date: Tue Jul 19 11:18:33 2022 -0400 Fix history type of cldfra in the diag_tables (#915) The history type of the new cloud fraction field (cldfra) is changed so it is written to the correct output file. Fixes #914 commit 5c9639dba419ef51608aa8962b54ae69c8ad8c60 Author: Rahul Mahajan Date: Tue Jul 19 11:11:38 2022 -0400 Combine ecflow and rocoto workflow generation (#916) Consolidates the workflow generation systems for ecflow and rocoto. Further unification will be made to make a choice to use one or the other. At this time, they are separate and need separate input criteria. Moves `ush/rocoto` to `workflow/` at the top level. Further refining will be performed as needed based on use and need. commit b690ed6c7c1a250171484aba267d0724d8c12d11 Author: Walter Kolczynski - NOAA Date: Mon Jul 18 19:33:36 2022 -0400 Remove new GSI scripts from gitignore (#917) When the scripts were moved over from GSI into global workflow, they were never removed from the .gitignore. This has now been addressed. Follow-up to PR #904 commit aa2542eb4c95827bc1fc7a4a76d4d0f5bc701f74 Author: Rahul Mahajan Date: Mon Jul 18 13:49:09 2022 -0400 Add ecFlow generator to `develop` (#912) * merge workflow_generator from dev_v16 at 7b7947e2 and move workflow_generator to ush/ecflow commit 5a58fa8a2f75590a671b45bf75a431f2acf2340b Author: Rahul Mahajan Date: Mon Jul 18 13:02:59 2022 -0400 Update gsi-utils hash to include bugfix in handling 3D sfc files (#913) Update GSI-Utils hash to include bugfix that processed 3D fields in surface netCDF files. Fixes #909 commit e8361cc343743bb5087e75f89406c1265404e359 Author: Rahul Mahajan Date: Mon Jul 18 12:44:25 2022 -0400 Combine setup_workflows scripts (#859) `setup_workflow.py` and `setup_workflow_fcstonly.py` are used for setting up the XML for cycled and forecast only configurations. They share large parts of the tasks and dependencies. This PR unifies the ones listed above and makes room for extending for incoming applications. The above two scripts are being replaced by `setup_xml.py`. The usage is: ``` $> setup_xml.py /path/to/experiment_directory ``` This PR also removes the handicap of defining hundreds of entities for task resources. Instead the task resources are placed with the task itself. This PR also does the following: - moves the declaration of `DOBNDPNT_WAVE="NO"` from `config.wave` to `config.base` - reduces timestep at `C48` from `1200s` to `450s` in `config.fv3`. Several ensemble members failed. Inspecting `config.fv3.nco.static`, the value there is `450s` - `eobs` job times out with a wallclock time of `15m`. It is increased to `45m` to play it safe. commit 13385d9c9018def1fbce6772e53665ccb90b2a2a Author: Rahul Mahajan Date: Fri Jul 15 14:02:12 2022 -0400 Load `ncdiag` module instead of building it in the GSI, use UFSWM build system, pull sfcanl out from anal. (#905) `ncdiag` is no longer being built within the GSI. It is available as a module on all systems; Hera, Orion and WCOSS2. This PR: - loads ncdiag module - finds the `ncdiag_cat_serial.x` executable from that module (once loaded) - updates hashes for GSI, GSI-utils and GSI-monitor. No code changes were made in these repos. Only location of `ncdiag` changed. In addition, this PR: - Uses the ufs-weather-model compilation script. The global workflow is duplicating and missing configuration options set in the ufs-weather-model. This also enables a "debug" mode of compiling the model (#300). - Fixes #906 - Fixes an improper link to `fix_gsi`. It was being linked to a non-existing directory. - separates out the creation of Gaussian surface analysis from the GSI atmospheric analysis. This capability is pulled from PR #871. It was necessary to pull these changes from PR #871 since the `j-jobs`, `ex-scripts` from the GSI have been brought to global-workflow and the companion PR for PR #871 in the [GSI PR 415](https://github.com/NOAA-EMC/GSI/pull/415) were already merged prior to the updates needed for `ncio` and `ncdiag`. I realize all these changes could have been streamlined into smaller atomic PR's. **Note:** This PR also requires a documentation update as a new job `sfcanl` has been added to the workflow. commit b61c2375a05daff20805d0216ade8201192c0199 Author: Fanglin Yang Date: Thu Jul 14 20:07:54 2022 -0400 Update ice climo, fix option for non-fractional grid, and add cloud fraction for Thompson (#902) Updates the ice climatology from CFSR to IMS_NIC blended. Fixes issue in the diag table where the cloud fraction entry for Thompson was not included. Adds new coupled mode setting for when fractional grid is not used. Fixes #886 Co-authored-by: Chunxi.Zhang-NOAA commit 680270975e2eb2f09c58a6112a87c0ecaec9e2a5 Author: Barry Baker Date: Thu Jul 14 17:03:34 2022 -0400 Update aerosol variable names and dust alpha (#888) The names of some aerosol fields have changed and needed to be updated. The dust alpha parameter is updated to improve model performance. A typo in the scavenging parameter definition where a string was terminated with a 'smart-quote' instead of a standard one is corrected. commit 06b25267b7839808508eed9e91dcd2b76a33c3ca Author: Jessica Meixner Date: Thu Jul 14 18:52:56 2022 +0000 Allow for wave mesh to be different than the ocean/ice mesh (#897) This PR updates the configuration to allow for the wave mesh to be different from the ocean/ice mesh. This PR also changes the default wave grid back to gwes_30m and updates the load-balancing for this change. The ufs-weather-model is updated to use the code that allows for the wave mesh to be different from the ocean/ice mesh. commit 4f3e14b59ff6c83fbaaf6888c3a3068eae3d77d7 Author: Rahul Mahajan Date: Wed Jul 13 15:53:18 2022 -0400 Migrate `jobs/`, `scripts/` and `ush/` from GSI to global-workflow (#904) This PR moves the `jobs/`, `scripts/` and `ush/` from NOAA-EMC/GSI into the global-workflow. History is preserved. Corresponding GSI PR https://github.com/NOAA-EMC/GSI/pull/436 commit 46f7589807bcb070c8f86601b74f1a84701b669a Author: Rahul Mahajan Date: Wed Jul 13 15:51:56 2022 -0400 build GSI utilities from GSI-utils repo (#889) **Description** The GSI Utilities have been moved to https://github.com/NOAA-EMC/GSI-utils This PR: - checks out GSI utilities from the above repo - builds the utilities from the above repo - does not build the utilities from the GSI repo. In a subsequent PR when the GSI removes the utilities, that option will become redundant. - updates gsi-monitor hash and uses `build.sh` from that repository - creates links appropriately. commit aac2f3a6980cb61a0dbe272b667f602e3051cb16 Author: Jessica Meixner Date: Mon Jul 11 06:57:25 2022 +0000 Replace print_esmf with esmf_logkind (#898) Removes print_esmf as it no longer a variable and add the esmf_logkind variable to config.fcst instead which is the equivalent new variable. The change has already been made in nems_configure.sh, so the setting only needed to be changed in the config file. commit 4448dd48b2aeebdf4257a2ab08bd147fcb511f92 Author: Walter Kolczynski - NOAA Date: Fri Jul 8 13:03:29 2022 -0400 Restore cycling capability (#895) Restores the ability to run in cycled mode. This requires GSI to be built with ncio/1.1.2, so the build script now sets 1.1.2 as the ncio version until either the GSI default version is updated or module version files are added to global-workflow (Issue #671). Two new variables, COMIN_OBS and COMIN_GES_OBS, had to be added to the config file in the wake of GSI updates for WCOSS2 to ensure the correct paths are used instead of trying to use the non-functional compath.py. Note that, for now, in order to use cycling, the microphysics setting (imp_physics) must be changed in config.base from Thompson (8) back to GFDL (11), along with a corresponding CCPP suite (like FV3_GFS_v16). Fixes #711 commit a39bd6364971894eee4349b028ebf54ab496dee0 Author: Rahul Mahajan Date: Tue Jul 5 16:10:46 2022 -0400 Merge `ecf` changes from `WCOSS2` into `develop` (#885) * moved ecflow/ecf to ecf and with updates from feature/ops-wcoss2 commit 3076e13ca5976206f1cdab58cca1b6f80fbb7716 Author: Fanglin Yang Date: Fri Jul 1 10:33:39 2022 -0400 Fix settings of dt_inner and lheatstrg (#883) For Thompson microphysics, currently dt_inner is set to half of physics timestep. It should be set to the same as the physics timestep if semi-Lag sedimentation is applied to rain and graupel. Canopy heat storage is incorrectly turned off for NOAH LSM, and on for NOAH-MP LSM. This setting needs to be reversed. Fixes #884 commit 3b9636c4eadc8c31548e170baeefd358483ec71c Author: Ali.Abdolali <37336972+aliabdolali@users.noreply.github.com> Date: Wed Jun 29 18:22:06 2022 +0000 Update buoy locations (#881) Updates buoy locations for those that were incorrect or have been moved. commit f0f1025d07a1af216e2125111ae7bd9ac43213c2 Author: Barry Baker Date: Tue Jun 28 12:05:31 2022 -0400 Update dust input files to not include _FillValue = NaN (#873) There is an issue with the FENGSHA dust inputs and having the netcdf attribute _FillValue == NaN. This is in relation to ufs-community/ufs-weather-model#1259, ufs-community/ufs-weather-model#1192 and #872 Some dust emissions files have also been updated. File changes only include the netcdf attribute _FillValue changing from NaN -> something appropriate for each variable. Fixes #873 commit 4c8b388ae4fd1fb618021b5c11d5e9c82c2ee2f7 Author: Walter Kolczynski - NOAA Date: Mon Jun 27 18:14:39 2022 -0400 Replace --aerosols with new apps (#854) Removes the --aerosols option for setup_expt and replaces it with new apps for aerosols to match the idiom for other components. Currently, ATMA and S2SWA are supported. commit 65cdcce2f841f5e3e4926d4dab73fd5a8a97bd84 Author: Walter Kolczynski - NOAA Date: Mon Jun 27 17:47:46 2022 -0400 Update component versions (#851) Updates the version of components except UFS and verify to the current tip of their respective develop branches. Verify is not yet updated because we are currently on a branch that hasn't been merged to develop yet in order to use the module/py environment fix. GSI will still need to be updated further before use after the resolution of NOAA-EMC/GSI/issues/348 Also updated the GSI and UPP build scripts to take in debug (`-d`), operations (`-o`), and verbose (`-v`) options and apply them as appropriate to the component build scripts. The ops flag for GSI still needs work, as I encountered issues using the [build_4nco_global.sh](https://github.com/NOAA-EMC/GSI/blob/develop/ush/build_4nco_global.sh) or [prune_4nco_global.sh](https://github.com/NOAA-EMC/GSI/blob/develop/ush/prune_4nco_global.sh) scripts. Also fixes a typo in the `parm/post` file list. Updates are in preparation for the [COM reorg](https://github.com/NOAA-EMC/global-workflow/issues/761) commit 2dc2af0e84f52864a719d71d3dbf14f6368f4c0f Author: Jessica Meixner Date: Fri Jun 24 18:49:39 2022 +0000 Update caculation of restart based on if a wave IC exists (#875) Inspect and assert wave initial conditions exist during a RERUN. Take appropriate action. commit b41a36a10b2f949b0c005e48b978261b3d66eb12 Author: Rahul Mahajan Date: Thu Jun 16 22:38:28 2022 -0400 update from dev_v16 utils.f90. See issue #713 (#868) commit a2b9f483c4aaad37e5d26362186b28a782c0541f Author: Barry Baker Date: Tue Jun 14 23:51:47 2022 -0400 Update GOCART settings for p8/p81 (#818) Wet scavenging coefficients for GOCART are updated. Fixes a bug where when running atm-aerosol, aerosol settings were not properly read. Changes the location of aerosol emissions data on Hera now that Raffaele has moved to a new position. Dust inputs for the fengsha dust emission scheme are updated. These updates include a newer soil database (SOILGRIDSv2) and updates for the drag partition and threshold velocity. It also appropriately scales the emissions by modifying the alpha value found in the dust component configuration file. Fixes #814 Fixes #815 Fixes #816 Fixes #816 commit 027eab90e2cb94a1055f9bc54245e7d5979aca3b Author: Kate Friedman Date: Fri Jun 10 09:10:24 2022 -0400 Retire VSDB (#848) Remove VSDB variables, script blocks, and scripts from global-workflow develop. Refs: #844 commit d6705e2564a698eeddf2424bd580482546658788 Author: Kate Friedman Date: Fri Jun 10 09:05:36 2022 -0400 Add "atmos" COMPONENT subfolder to DMPDIR paths (develop) (#847) - add atmos to WAVICEFILE DMPDIR path in JGLOBAL_WAVE_PREP - add COMPONENT to all DMPDIR paths (COMPONENT=atmos already set) - add "atmos" to all DMPDIR paths in config.anal - add COMPONENT to COMIN_OBS default that uses DMPDIR in drive_makeprepbufr.sh - add COMPONENT to SOURCE_DIR default that uses DMPDIR in getdump.sh - add "atmos" to prep job dependency on updated.status.tm00.bufr_d in setup_workflow.py Refs: #802 commit 59604d60a787fc758380a1ef513601d6ffa97566 Author: Walter Kolczynski - NOAA Date: Fri Jun 10 03:29:16 2022 -0400 Move remaining global post scripts over from UPP (#771) Several scripts currently located under NOAA-EMC/UPP are only used for global, so they have been moved within global-workflow so they can be managed by the global-workflow team. Scripts are just copied from the current tip of UPP develop, other than some changes to standardize style and indentation. Also coming over are four parm files that are used to produce GFS products. As a result, we are no longer linking the entire upp parm directory; instead we are creating individual links for the files we use that still reside in upp. Fixes #630 Fixes #769 commit d78c942a271e669b1fd5adf4f99af108c9f884fe Author: Jessica Meixner Date: Tue Jun 7 14:56:26 2022 +0000 update readme for new linking procedure (#843) commit 3194f52d1625379e067fd16e84016d45ba5560fc Author: Walter Kolczynski - NOAA Date: Tue Jun 7 01:35:15 2022 -0400 Consolidate post scripts to eliminate coupled mode of link script (#766) The two scripts that had modified versions for the coupled model have been joined with changes to the original scripts, eliminating the need for a special coupled mode for the link script. As part of this, those two scripts are no longer copied from UPP and are now part of the global-workflow repository. Fixes: #679 Fixes: #746 Refs: #270 commit d1d2606406aa2deb8d95f348b471770f4388777c Author: Jessica Meixner Date: Mon Jun 6 04:49:38 2022 +0000 Updates for wave mesh cap (#831) Updates to work with the new WW3 mesh cap, including pointing to the new ufs-weather-model tag for p8c slong with associated namelist changes. There is a new setting in config.ww3, `waveMULTIGRID`, that controls whether WW3 uses generic shell (shel) or multigrid. The build script for WW3 pre/post has been updated to use the app to determine whether the regular switch file (for ATMW) or the meshcap version (other) is used. In light of this, `build_all.sh` now passes the app to WW3 pre/post as it does with the UFS build. A large section of the wave prep script that was a hold-over from running WW3 offline from the atmosphere dealing with pre-processing winds was removed. Another large section was moved out of prep and into a new `parsing_namelists_WW3.sh` script that is called during the forecast job (similar to those for some other components). The ability to set `esmf_logkind` for the UFS model is restored (defaults to ESMF_LOGKIND_MULTI). The jlog files were removed for the non-pdgen wave script and ush files. Resources for the coupled model are rebalanced. Fixes #736 commit 7173fa58f0da831ad181a3afdaf3c861afa49e49 Author: Rahul Mahajan Date: Wed Jun 1 17:05:21 2022 -0400 Extend `rocoto.py` for handling offsets in data dependencies. (#835) Extend rocoto.py data_dep to handle offset to cyclestr in any number of instances. Remove hack in aerosol_init dependency generation. commit a9998af41cb8c2825f34745091a41ea400815d8d Author: Walter Kolczynski - NOAA Date: Wed Jun 1 14:11:49 2022 -0400 Refactor checkout script (#809) The checkout script is refactored. First, the repetitive checkout code is abstracted into a function that is called for each component. Second, if the clone already exists, checkout will still checkout the requested commit. Third, a new option (-c) is added that will delete any existing clones a create a fresh clone. These last two options allow updating of versions without needing to manually delete directories (and remembering which are created by checkout) Additionally, a usage statement and code documentation are added. There is no change to the existing command-line options, only new options. No change is necessary by users (although the checkout order and print messages have changed). The new syntax is as follows: ``` checkout.sh [-c][-h][-m ufs_hash][-o] -c: Create a fresh clone (delete existing directories) -h: Print this help message and exit -m ufs_hash: Check out this UFS hash instead of the default -o: Check out operational-only code (GTG and WAFS). Only authorized users can check out GTG. ``` Fixes #808 commit 85bca2479420927d29a1a9db41b542568d527c13 Author: Jessica Meixner Date: Wed Jun 1 15:05:07 2022 +0000 Update IC location for hera because climate moved from (#829) The location of the coupled ICs on Hera is changing, so need to update the path in the config. commit dbd9fa93ced07f39accf7ff4eec2859f0ed5d35f Author: ChunxiZhang-NOAA <49283036+ChunxiZhang-NOAA@users.noreply.github.com> Date: Mon May 30 21:50:56 2022 -0400 Updated SDFs and namelist settings for P8c (#795) Updates the model version in preparation for prototype 8c, along with commensurate setting updates. Some CCPP suites are removed from the UFS build as they are no longer available. Also updates the coupled initial conditions, and there is a simultaneous update to fixed orography files. Refs: #736 commit 05accc1c72b1311ae9689bef5e7a1291dc12a96a Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon May 23 17:36:51 2022 -0400 Correct incorrect increment prefix variable (#805) One instance of the increment prefix variable in `ush/forecast_postdet.sh` used `PREFIX_INC` instead of the `PREFIX_ATMINC` used elsewhere. Fixes #804 commit ac7cb1000d5c1d31babd36f4c3e17f643f30fd4d Author: Walter Kolczynski - NOAA Date: Sun May 22 16:50:30 2022 -0400 Remove separate UPP clone (#803) Now that UPP is cloned within UFS, there is no need to create an independent clone in global-workflow. Scripts are updated to use the UPP within UFS. In addition to removing redundancy, this will avoid version mismatch issues when UFS and global-workflow checkout different versions. The upp directory is now linked from within UFS to sorc as upp.fd (instead of the gfs_post.fd the clone was placed in). Additionally, the build script is renamed to build_upp.sh. Fixes #770 Moots #797 commit 58728fb2c689c11335f4bf8ac371e18070c6fbd2 Author: Walter Kolczynski - NOAA Date: Fri May 20 10:14:58 2022 -0400 Fix build script options (#801) There was an issue where if build_all.sh was called with only options that are not used by partial_build.sh, partial_build.sh would see those options because $@ was not overwritten. The script have been updated to consume those options so they are no longer present if $@ isn't overwritten in the new script call. Also fixed the getopts statement in partial_build.sh so we handle errors instead of bash (bash would report the wrong script if the script is sourced) Fixes #800 commit fa12db279cf829b861d08c06e3e3534a335e9fd7 Author: Walter Kolczynski - NOAA Date: Wed May 18 01:04:32 2022 -0400 Refactor some build scripts (#794) Refactors the build_ufs script to allow the build of any UFS app to support future expansion of global-workflow capability. The default should be sufficient for most users, as S2SWA can be used for ATM, ATMA, S2S, and S2SW as well. The new format of the command is now: ``` build_ufs.sh [-a UFS_app][-v] -a UFS_app: Specify the UFS application to build. The default if none is provided is S2SWA -v: Turn on verbose mode (BUILD_VERBOSE) ``` build_all.sh is similarly refactored to include the same options. Also, a new `-c build_config` option is added to specify an alternative list of programs to build. ``` build_all.sh [-a UFS_app][-c build_config][-h][-v] -a UFS_app: Build a specific UFS app instead of the default -c build_config: Selectively build based on the provided config instead of the default config -h: Print usage message and exit -v: Run all scripts in verbose mode ``` partial_build.sh is also updated to take the new `-c` option to specify a build config. ``` partial_build.sh [-c config_file][-h][-v] -c config_file: Selectively build based on the provided config. The default if none is specified is gfs_build.cfg -h: Print usage message and exit -v: Run in verbose mode ``` In addition to the above, build_all and partial_build had their indentation redone and their usage/help statement updated/added. Also, the build configuration file was renamed to from fv3gfs_build.cfg to gfs_build.cfg. Fixes #745 Fixes #751 commit 2abee02765a3bae48f2b4e6a900400d6731eda06 Author: Walter Kolczynski - NOAA Date: Wed May 18 01:02:57 2022 -0400 Add continuous aerosols support (#693) Adds support for continuous aerosols when running with GOCART (using the forecast aerosol tracers from the previous cycle as initial tracer fields). This adds a new task to the workflow mesh in forecast-only mode. The new task does not run in the first cycle, though it will appear in rocotostat/rocotoviewer. In subsequent cycles, the task will launch as soon as the needed restart files from the previous cycle are available and gfs_init has completed. There is currently no mechanism to have aerosol_init run for the first cycle (for instance, continuing from a previous experiment); users would have to run the scripts off-line to add aerosols to the initial conditions. To support the introduction of the necessary python scripts, a new python environment is added to provide necessary libraries. This virtual environment is temporarily being housed in personal space, but an issue has been opened with hpc-stack to add it to the standard stack installations. The introduction of miniconda also caused the conversion of all of the rocoto entry scripts (the ones rocoto calls to run the job) to bash. Most of them had been in korne. To make sure the needed restart files are produced, config.fcst now makes sure the forecast cadence is included in the list of restart times. This may need more testing to ensure it works properly with other restart lists. As part of this, STEP_GFS was updated to properly determine the step from gfs_cyc instead of being a set value. Closes #366 Fixes #516 Fixes #630 commit 69b39ee5af8cfbb5cbf5cf62c92d01958b697652 Author: Kate Friedman Date: Thu May 12 12:18:50 2022 -0400 Add --init to GSI submodule command (#781) Needed to obtain libsrc submodule during checkout and allows the GSI to build correctly since this GSI hash still needs the libsrc submodule during build. Refs: #780 commit b09f92c21028ea37e4663ce4c304935a2dc45b33 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Thu May 12 08:20:16 2022 -0400 Update field_table to be consistent with UFS (#778) Changes the fixed surface value of hydrometeor number concentrations and sub-grid TKE to 0. Also renames the field table. Both changes are consistent with changes made in UFS. Fixes #676 commit d72a62d6c0ab2e9f53ca3e6133148f29982f9d32 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Thu May 12 08:15:23 2022 -0400 Remove special MOD_PATH from build scripts (#775) We always use pre-installed libraries and special MOD_PATHs are no longer necessary, so these are removed from build scripts. MOD_PATH. This also moots MOD_PATHs that were hard-coded to Hera locations in some scripts. The MOD_PATH in build_ufs.sh remains as it is still needed and is a relative path into the UFS repo. Fixes #298 commit 2adf123814a2f29e9cca54a11fbb2807b3f6cf1b Author: Kate Friedman Date: Wed May 4 12:31:20 2022 -0400 Revert g2tmpl back to 1.10.0 (#773) Resolves bug with mismatch between hpc-ips and g2tmpl versions on the WCOSS-Dells. Also revert back to 1.10.0 on Hera and Orion to be consistent. Refs: #772 commit b90f4e99bc42f9a8afbeaa9479e674fb75e096ea Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Tue May 3 09:45:19 2022 -0400 Remove git submodule update for upp checkout (#768) UPP no longer has a CMakeModules submodule, so the submodule update is removed from the checkout script. Fixes: #767 commit ad2b14d9b1ed0fe89fe59bfb96cc03630e8457de Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Tue May 3 09:44:57 2022 -0400 Remove duplicate file linking for Thompson MP (#765) Files for Thompson MP were being copied twice by the link script: once by checking imp_physics, then again checking the CCPP Suite. This is now reduced to one check. Fixes: #675 commit a9fc0033b908aefb42d5b2d191c65af5cb7660c4 Author: Kate Friedman Date: Thu Apr 28 15:17:22 2022 -0400 Remove unneeded/outdated modulefiles (#762) Remove unneeded modulefiles for WCOSS-Cray and GSI monitoring. commit 3333dee304b6b53d3d716c60d0c87ad06d629c1c Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Thu Apr 28 14:35:57 2022 -0400 Remove prepbufr_pre-qc from archive lists (#753) The prepbuft_pre-qc file does not need to be archived, so it no longer is. Fixes #361 commit 88b1b1591d3201709f5f981908aaf7890d3021bd Author: Walter Kolczynski - NOAA Date: Tue Apr 26 20:40:41 2022 -0400 Convert module files from Tcl to Lua (#756) Converts all module files from Tcl format to Lua. As a side effect, this change enforces using the files as modules rather than improperly sourcing them instead of loading. Fixes #670 commit ca80aeb86cb221263611605ba23858448bce0bad Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Mon Apr 25 06:23:06 2022 -0400 Ensure hourly files when GLDAS is on (#740) GLDAS requires hourly output, so make sure FHOUT is 1 when GLDAS is on. Fixes #695 commit 9d00239088651b73a9667b70bd6247b34e35046f Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Tue Apr 19 21:22:22 2022 -0400 Update cyclone tracker to handle return code correctly #642 Updates the cyclone tracker call to correctly exit with an error code if the tracker script reports one. Fixes #507 commit 33d3dd14d6df8109274dde4606bb7a50e4638fa2 Author: Jessica Meixner Date: Tue Apr 19 21:18:56 2022 -0400 Update ww3 pre and post exe build to use cmake (#731) Updates the WW3 pre/post build system to use cmake. Fixes #688 commit 39facec1e03a404f84fd05b8739cd8e4010a0779 Author: Kate Friedman Date: Tue Apr 12 11:36:30 2022 -0400 Add WCOSS2 GFSv16.2 operational def files into develop (#717) Add WCOSS2 operational GFS def files. Refs: #399 commit 0a85223e48a1a8dcced163791d8e7ae5a42a4fab Author: Xianwu Xue - NOAA <48287866+XianwuXue-NOAA@users.noreply.github.com> Date: Tue Apr 12 11:34:17 2022 -0400 Initialize "err" to avoid potential task fail (#715) If not initialize err, and change "set -x" to "set -xue", then the waveinit task will fail with error message: "line 234: err: unbound variable" On branch bugfix/issue_714 Changes to be committed: modified: scripts/exgfs_wave_init.sh Refs: #714 commit fc6e1c3316397432d2da218b3c4fc0ea1fe70644 Author: Rahul Mahajan Date: Tue Apr 5 11:07:21 2022 -0400 config.base should not exist in the repository unless it is in ops. template only exists in the repo, the experiment directory should not contain the templated config.base.emc.dyn (#707) commit cabf437044cb937caf7a7830068fd9e413c5921f Author: Jessica Meixner Date: Wed Mar 30 21:28:50 2022 -0400 Update model and settings for Prototype P8b (#681) Updates model and setting defaults for prototype 8b. The UFS version is updated to a recent version of UFS (tag Prototype-P8b). As part of this, the print_esmf option is removed from the model configure file and replaced with a new setting in nems.configure. We have not made this option user-configurable at this point, but that may come in the future. The default CCPP suites have been updated for all modes to either FV3_GFS_v17_p8 or FV3_GFS_v17_coupled_p8. This involves changing the microphysics to Thompson and changes the gravity wave drag version (knob_ugwp_version) to 0. This change breaks cycled mode for the time being. A future PR will revert the defaults to ones that allow cycled to run along with a more robust system for changing settings. Tiled fix files are now used for all modes instead of just coupled. Cellular automata now defaults on ON. There are also other miscellaneous settings that have had their defaults changed. Fixes #641, #687 commit e3f707cb9c05b45e9d4019679e406f54008279a5 Author: XuLi-NOAA <55100838+XuLi-NOAA@users.noreply.github.com> Date: Thu Mar 24 05:43:31 2022 -0400 Modify eobs for EnKF thinning In the Hybrid EnKF GSI, the thinning box size, dmesh, is different for the full resolution analysis and EnKF respectively. There are set in GSI scripts for the full resolution analysis, and reset in global workflow in config.eobs. Only two thinning box sizes, dmesh(1) & dmesh(2), are defined in GSI scripts before, recently, two more, dmesh(3) & dmesh(4) are added. Accordingly, these two need to be added in config.eobs as well. Specifically, add dmesh(3)=225.0,demsh(4)=100.0 to config.eobs. Fixes #595 commit c32eea459af3177cee28e151b43fe5e12bdfc412 Author: Walter Kolczynski - NOAA Date: Tue Mar 22 11:18:10 2022 -0400 Update ocean resolution for C48 (#651) The ocean resolution for C48 was set as 1-deg, but the fractional grid fix files available at C48 are for a 4-deg ocean grid. The ocean resolution is now set to this value when FV3 is C48. Also commented out a currently redundant block setting OCNRES in config.ocn. The one in ecfs has to stay as it recalculates the ocean resolution based on the EnKF resolution. Fixes #650 commit d758e8b227fca7b5a3320adc43c29ba492c3bfe9 Author: Walter Kolczynski - NOAA Date: Thu Mar 10 05:54:49 2022 -0500 Add single forecast GOCART support (#659) Adds support for running single coupled free forecasts with GOCART aerosols. Support for continuous aerosol fields from cycle to cycle will be added in a future PR. To turn on aerosols, there is a new --aerosols option for setup_expt.py. The option takes no arguments. When it is used, aerosols will be turned on by setting DO_AERO="YES" in config.base. GOCART output files are placed in the chem directory in COM. There is a new tarball archived, chem.tar, that contains the GOCART output. Partially addresses #516 Fixes #403 commit a0e23e254c7c881b20d66c1c53cd36de509e6d69 Author: Walter Kolczynski - NOAA Date: Tue Mar 1 10:50:39 2022 -0500 Specify memory for init job (#669) The init job has been failing on HPC using slurm due to out-of-memory errors. Now the init job specifies the amount of memory needed. Fixes #631 commit 6874e8939211fdc07143450bfd1b6a2863172e10 Author: arun chawla <49994787+arunchawla-NOAA@users.noreply.github.com> Date: Fri Feb 25 16:39:45 2022 -0500 Cleanup of utils directory (#660) Removes all of the old, unused GSM scripts and code from the utils directory. Those codes that might still be used have been moved to a new GSM-utils repo. Fixes #618 commit e3d64abc9c02aecb9d5d38755f6524bf9e277e66 Author: Walter Kolczynski - NOAA Date: Thu Feb 24 22:49:45 2022 -0500 Fix bug with partition_batch on WCOSS (#668) partition_batch was not being defined for WCOSS machines, but was being used in a substitution for config.base. Fixes #667 commit 9d75d8d78037c7a74d1a9c61a88d9d6a7e9b3be9 Author: Walter Kolczynski - NOAA Date: Mon Feb 21 02:10:00 2022 -0500 Split output filetype variable into atm and sfc (#602) The determination of the FV3 output filetype was a bit unwieldy as it contained two different settings (one for the atmosphere and one for the surface) that were not necessarily changed at the same time. They were also being determined in a different location than other settings based on the model resolution. Now the old OUTPUT_FILETYPES variable has been split into two different variables, OUTPUT_FILETYPES_ATM and OUTPUT_FILETYPES_SFC. The determi- nation was also moved into the config.fv3 file, where other resolution- dependent computational settings are set. This has resulted in some functional change on WCOSS Dell, as the EnKF was using different chunking settings and never used parallel output for the surface likely because wasn't being run at a low enough resolu- tion to consider it. However, there is no reason to believe the two forecast modes should have different chunk or output settings. So, I've used the EnKF chunking settings and the free forecast switchover point for the surface output mode. The new filetype settings are now also divorced from the OUTPUT_FILE setting. However, that setting will soon be unnecessary as nemsio is removed from the code as an option (see Issue #601). Fixes #600 Refs #601 commit cb8b5adf16200e7b01b8236a960efce5b6d8ce5d Author: Walter Kolczynski - NOAA Date: Thu Feb 17 15:55:24 2022 -0500 Correct MODE comparisons for forecast only (#658) When the setup_expt scripts were combined, the forecast mode became a mandatory argument. The value of this option is then directly used for the MODE variable, but the argument name (forecast-only) does not match what was previously used for MODE in the forecast-only script (free) and some scripts were still testing against the old value instead of the new one. Those comparisons have now been updated to use the new MODE name. Fixes #657 commit f8867d3f0b1f3b5d238dced412996c56e30d31a1 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Thu Feb 10 20:23:54 2022 -0500 Add LOCALARCH option (#628) Adds the option to archive output locally during archive jobs. This is intended for systems that do not have access to HPSS (e.g. Orion and soon S4), but can be used on any machine. To enable, the LOCALARCH setting in config.base should be set to "YES" (HPSSARCH must be "NO"). When enabled, the tarballs normally created on HPSS will instead be created in the local directory specified by $ATARDIR. Defaults have been added to setup_expt.py to point to a local ATARDIR and LOCALARCH (currently =NO). Fixes #624. commit 2950c7b97f99341caa738526138022987f665627 Author: Jessica Meixner Date: Thu Feb 10 18:07:43 2022 -0500 Turn on fractional grid by default for uncoupled forecasts (#638) Updates input.nml so that there is more consistency between the cpl and standalone atm input.nml. In particular this addresses the fact that frac_grid was only being set if cpl was true. Fixes #571 commit 64b1c1e5ce37fba48dd717bd11356a6f57d9def4 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed Feb 9 17:02:39 2022 -0500 Specify warm start as .true. or .false. (#644) Corrects the assignment of EXP_WARM_START to either .true. or .false. depending on the value passed to setup_expt.py via `--start`. Fixes #643 commit e537f0cecabc8e16e26b14e606558de906b19e3f Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Feb 8 23:33:21 2022 -0500 Archive TC tracking logs if produced (#627) The archive job was failing if there were no tropical cyclone files (such as when there are no cyclones). This adds a check for the TC tracking logs in case they are not produced to prevent the gfsarch job from failing on cycles when there were no TCs to track. Fixes #625. commit 32f93becde5ffa07c162252b95417845f2ab5159 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Feb 8 20:59:37 2022 -0500 Fix separate threading for GFS and GDAS forecasts. (#621) Fix separate threading options for GDAS and GFS forecasts (#610). This is performed by keeping nth_fcst_gfs separate from nth_fcst and declaring the new variable npe_node_fcst_gfs. Fixes #610 commit 9bb09a92c55d4534feca5d521fbbd1c664730317 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Tue Feb 8 20:58:05 2022 -0500 Updated the RadMon and OznMon links. #596 (#597) commit 97ebc4d4e6483b135468d85cd9ed974f88955914 Author: Rahul Mahajan Date: Thu Feb 3 02:56:34 2022 -0500 Unify `setup_expt.py` and `setup_expt_fcstonly.py` (#537) `setup_expt.py` and `setup_expt_fcstonly.py` are unified under the former name. The user is now required to provide a `mode` as the first positional argument to `setup.py`. Valid options are `cycled` and `forecast-only`. ``` ❯ python3 setup_expt.py -h usage: setup_expt.py [-h] {cycled,forecast-only} ... Setup files and directories to start a GFS parallel. Create EXPDIR, copy config files. Create COMROT experiment directory structure, link initial condition files from $ICSDIR to $COMROT positional arguments: {cycled,forecast-only} cycled arguments for cycled mode forecast-only arguments for forecast-only mode optional arguments: -h, --help show this help message and exit ``` Upon choosing one of these modes, options specific to the mode can be realized as follows for the `forecast-only` and `cycled` modes respectively. ``` ❯ python3 setup_expt.py forecast-only -h feature/unify-setups usage: setup_expt.py forecast-only [-h] [--pslot PSLOT] [--resdet RESDET] [--comrot COMROT] [--expdir EXPDIR] --idate IDATE --edate EDATE [--icsdir ICSDIR] [--configdir CONFIGDIR] [--cdump CDUMP] [--gfs_cyc {0,1,2,4}] [--start {warm,cold}] [--app {ATM,ATMW,S2S,S2SW}] optional arguments: -h, --help show this help message and exit --pslot PSLOT parallel experiment name --resdet RESDET resolution of the deterministic model forecast --comrot COMROT full path to COMROT --expdir EXPDIR full path to EXPDIR --idate IDATE starting date of experiment, initial conditions must exist! --edate EDATE end date experiment --icsdir ICSDIR full path to initial condition directory --configdir CONFIGDIR full path to directory containing the config files --cdump CDUMP CDUMP to start the experiment --gfs_cyc {0,1,2,4} GFS cycles to run --start {warm,cold} restart mode: warm or cold --app {ATM,ATMW,S2S,S2SW} UFS application ``` ``` ❯ python3 setup_expt.py cycled -h feature/unify-setups usage: setup_expt.py cycled [-h] [--pslot PSLOT] [--resdet RESDET] [--comrot COMROT] [--expdir EXPDIR] --idate IDATE --edate EDATE [--icsdir ICSDIR] [--configdir CONFIGDIR] [--cdump CDUMP] [--gfs_cyc {0,1,2,4}] [--start {warm,cold}] [--resens RESENS] [--nens NENS] [--app {ATM,ATMW}] optional arguments: -h, --help show this help message and exit --pslot PSLOT parallel experiment name --resdet RESDET resolution of the deterministic model forecast --comrot COMROT full path to COMROT --expdir EXPDIR full path to EXPDIR --idate IDATE starting date of experiment, initial conditions must exist! --edate EDATE end date experiment --icsdir ICSDIR full path to initial condition directory --configdir CONFIGDIR full path to directory containing the config files --cdump CDUMP CDUMP to start the experiment --gfs_cyc {0,1,2,4} GFS cycles to run --start {warm,cold} restart mode: warm or cold --resens RESENS resolution of the ensemble model forecast --nens NENS number of ensemble members --app {ATM,ATMW} UFS application ``` Note, `cycled` mode presents some extra options e.g. `nens` as well as a reduced list of the UFS weather model applications. The functionality of `--icsdir` had been broken for cycled and was hard-coded in free forecast. The functionality has now been repaired for cycled. If you provide one, $COMROT will be populated with appropriate links. If none is specified, no links will be created in $COMROT. In coupled mode free-forecast, ICs are copied *to* icsdir from the central maintained prototype location. Coupled users will now need to set this explicitly. For non-coupled forecast-only, this setting currently does nothing. The default value for `--configdir` has been updated to the appropriate location in the workflow. Most users will no longer need to set it unless they want to point to a different config source. The default values for `--comrot` and `--expdir` are updated from None to $HOME to facilitate offline testing of workflow creation. There are some irrelevant sections such as `gfs_cyc` in forecast-only that is still preserved in this PR. It will be cleaned up in subsequent PR's. Another unnecessary complication is the argument of `--start`. The logic presented here would ideally be selected at runtime based on the type of IC's populated in comrot. It is left unchanged. commit d7319f19aceca6ae6d7ce9b06c6eb731832d1de1 Author: Walter Kolczynski - NOAA Date: Wed Feb 2 11:19:43 2022 -0500 Stop archiving gfsarch.log as it is being written (#581) The gfs archive job was failing because it was attempting to archive its own log file into gfsa.tar while it was being written. To exclude that file pattern, bash extended globbing is turned on, which allows the use of a negating group. Fixes: #558 commit 1b300dbf98eccdf03117b3795a2d8da3310a6126 Author: Walter Kolczynski - NOAA Date: Wed Feb 2 11:18:55 2022 -0500 Fix build on non-WCOSS2 machines (#612) The UFS_UTILS and GLDAS versions are updated to correct build problems on development machines. Each had been using a beta version of ESMF that was removed from the hpc-stack installation without warning. Additionally, GLDAS had introduced bugs into their build scripts during the WCOSS2 port. These issues are now all corrected in the new versions. Also updates the UFS_UTILS repository to its new location under UFS instead of EMC. Fixes #476, #561 commit d3028b9d8268028226f9c27800fcd6655e9e4bb8 Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed Jan 19 14:29:51 2022 -0500 Fix setting of OUTPUT_FILETYPES (#589) The setting of OUTPUT_FILETYPES was being overwritten by the FV3 model configure parsing script, so the settings determined in the config.fcst file was being ignored. Now that block is removed and config.fcst is updated to make sure it is set for any machine. Fixes #588 commit 13421b01a07e5d1cca32ee7579a4094d8209b072 Author: Rahul Mahajan Date: Wed Jan 19 12:16:29 2022 -0500 Update PR template commit 322a61a61238e8486cb42d7d26282b2728d0c32f Author: Rahul Mahajan Date: Wed Jan 19 12:13:33 2022 -0500 Move PR template MD file. Update issue templates commit 7a52fc8d8bbfc5896b7d03004d5189b2a6b24013 Author: Rahul Mahajan Date: Wed Jan 19 11:32:51 2022 -0500 rename pull_request_template.md commit 88ec66eb834e9a78c94feae4f37f774c7807aa3c Author: Rahul Mahajan Date: Wed Jan 19 10:34:54 2022 -0500 make changes to the templates commit 66d84e21ad7ae3fafb4ad5097faf86dfa1b99b60 Author: Walter Kolczynski - NOAA Date: Wed Jan 19 10:08:45 2022 -0500 Fix lfrac entry in diag table (#570) Land fraction was listed in the wrong module, keeping it from being written to output. Refs: #562 commit e2657adbdadaac7089591390428324c6aec260a9 Author: Rahul Mahajan Date: Tue Jan 18 17:04:04 2022 -0500 Update NCO_bug_report.md commit a9d6851a0c3b6051cb1c7c7ec482fc50d762bef4 Author: Rahul Mahajan Date: Tue Jan 18 16:59:18 2022 -0500 Update bug report issue template commit 2fab8b4213645b79b3fea8127e7d4ab21044188e Author: Rahul Mahajan Date: Tue Jan 18 15:13:53 2022 -0500 Add templates for Github (#560) Adds GitHub templates for new issues and PRs to standardize and make sure all the needed information is included. commit 03be05309b184421c473f1b43082b766b114fd46 Author: Walter Kolczynski - NOAA Date: Tue Jan 18 10:02:02 2022 -0500 Fix toggle for building workflow_utils (#580) The fv3gfs_build.cfg did not have a space between the periods and the setting for workflow_utils, which means the setting was ignored and the default of yes was always used. Fixes: #577 commit aadd3bae3d4fdc7827a93ab51b336a7f6b2fdb02 Author: Walter Kolczynski - NOAA Date: Tue Jan 18 10:01:24 2022 -0500 Remove redundant toggle for gldas build (#579) The build cfg files controlling which components are built and the partial_build.sh script all have two instances trying to set the value for gldas. This means one of the settings did nothing when changed. Fixes: #578 commit 86d4b305a070c080dcfd44a3f9a31ca2280759fa Author: Walter Kolczynski - NOAA Date: Fri Jan 14 01:05:59 2022 -0500 Update config missed in last GSI update (#569) When the GSI version was updated in PR #530, updates to the config.anal file were mistakenly omitted. That file is now updated following ops (PR #451, #489). Refs: PR #530 commit 33308ea3b477db17a5db455a4c4887e3d5cbc711 Author: Jessica Meixner Date: Thu Jan 6 00:44:43 2022 -0500 Updates for P8a (#538) Updates ufs-weather-model to the 2021 Dec 23 commit and the matching UPP hash. Coupled settings are updated to run the P8a mini prototype. Updates include: Turn on ice-albedo feedback in atm (Requires changing input.nml to set use_cice_alb=true in &gfs_physics_nml ) Updates to CA namelists Updates for NOAH-MP which require input.nml update for to export iopt_sfc="3" and modifying parm_fv3diag to include pahi, pah_ave, ecan_acc, etran_acc,edir_acc,wa_acc, lfrac to the grib outputs "gfs_phys", "pahi", "pahi", "fv3_history2d", "all", .false., "none", 2 Closes #525 commit ae7092405e7552f76674b33fc81cb3973a68ad4e Author: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon Jan 3 17:28:47 2022 -0500 Reordered CDUMP_LIST Refs #541 (#542) commit 033b1d8ef29b7c829e8131758135b372ae61de26 Author: Walter Kolczynski - NOAA Date: Sun Dec 19 22:18:48 2021 -0500 Update GSI version to 2021 Dec 14 (#530) commit b187e2aa15bfd7600c49627fd4c2d02915b50abe Author: Walter Kolczynski - NOAA Date: Thu Dec 16 22:15:45 2021 -0500 Replace all backticks for command substitution (#526) All instances where backticks are used for command substitution are replaced with $( ). This standardizes usage around $( ), which can be nested and does not be confused with single quotation marks. Refs: #397 commit dd03ed0953bfc65f5a9c85529dd2c95ac0625189 Author: Walter Kolczynski - NOAA Date: Fri Dec 10 15:35:00 2021 -0500 Add coupled support and update UFS (#500) Adds support for full coupled model except aerosols (FV3-WW3-MOM6-CICE) following the prototype settings. Support for aerosols will be added soon. This also updates the UFS version to develop as of Oct 7. There are associated additions or changes to settings, but we've tried to have defaults maintain the same behavior as previously. Issues related to memory in prep and ocnpost on Hera and Orion due to changes in the slurm configuration have been addressed. Due to a change in the dycore that uses the checksum in the NetCDF files to check for data integrity, warm start ICs may need an additional offline step before use to update the checksum: ``` ncatted -a checksum,,d,, ${RESTARTinp}/${PDY}.${cyc}0000.fv_core.res.tile1.nc ./fv_core.res.tile1.nc ncatted -a checksum,,d,, ${RESTARTinp}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc ./fv_tracer.res.tile1.nc ``` A new setting APP controls what components (and their respective jobs) are turned on. The setting can be found in config.base, but can be set at experiment setup time using the new --app option. Recognized values are ATM (atm-only), ATMW (atm and waves), S2S (atm-ocn-ice), S2SW (atm-ocn-ice-wav). If no value is given, the default is ATM, so there is no change in behavior if you omit the option. For now, these values follow their UFS equivalents, but they may diverge in the future based on the needs of global workflow. ATMW is known to not quite work; S2S is so far untested. When run using the S2SW app, the workflow will automatically substitute the coupled IC copying job in place of the normal gfsprep jobs and use roughly the settings from prototype 7.2 (except aerosols). The alternate settings for the coupled configuration (compared to ATM) are taken from the config.defaults.s2sw file. Coupled prototype ICs are currently being maintained on Hera, Orion, and WCOSS-Dell. The locations are set in the config.coupled_ic. There is a base location (BASE_CPLIC) and a setting for each component specifying a subdirectory within the base location. There are new options available for the checkout.sh, build_all, and link_fv3 scripts: - checkout.sh has a new -m option that allows you to override the UFS hash that is checked out. - build_all.sh has two new options: -c to build UFS as the coupled model, and -a to build UFS as ATM-GOCART (but aerosols are not fully supported yet). These options are then passed to build_ufs.sh. The options are temporary, as all configurations will be available from a single executable soon. When building for coupled, the subcomponents built is controlled by cpl_build.cfg. - link_fv3.sh is renamed to link_workflow.sh and adds an optional third argument, "coupled". When provided, the files necessary for coupled are linked. This option is also temporary, as the link script will be updated to always link these files. ### To run in coupled mode with prototype settings/inputs 1. Clone as usual 2. Run checkout.sh 3. Run build_all.sh with the -c option `./build_all.sh -c` (the -c option is temporary) 4. Run link using the coupled argument: `./link_workflow.sh emc coupled` 5. Run setup_expt_fcstonly.py using the --app option S2SW 6. Modify config files as necessary. config.defaults.s2sw will automatically override some settings when app is S2SW 7. Run setup_workflow_fcstonly.py as usual 8. Setup rocoto to run your experiment ### Technical udpates Converts global forecast into a set of modular scripts. The scripts define a bunch of functions to be called, with separate functions for each component in each classification. For instance, there is an FV3_GFS_predet, MOM6_predet, CICE_predet, etc. that are conditionally run if the associated component is on. The diag table for AOD 550 (diag_table_aod) is reduced to just the portion needed in addition to the normal diag table so it can be appended. Ideally, in the future, we extend this treatment so diag tables can be built based on settings instead of having separate ones for each combination. Wave input file templates that were formerly kept in the fix directory are now more appropriately moved inside the global-workflow in parm. The group labels for the post jobs now indicates the forecast hours included instead of just an index. This required minor updates to check for 'anl' instead of 0 for analysis jobs. The checkout script now writes its logs to the logs/ directory the same way as build does, instead of leaving them in sorc/ The UFS model source has been moved to a ufs_model.fd directory, and the build script has been renamed build_ufs.sh. Error checking was added to the build_ww3prepost.sh script. The archive script has been streamlined and the section that saves gaussian grid files was fixed, but turned off by default (see PR #517). rocoto_viewer has been updated to python3 and the dependency on prod_utils was removed, which makes the script more portable. Be sure to load a sufficient version of python to use. For those coming from coupled-crow: ice and ocean output files are now linked to COM from the forecast run directory instead of being copied at the end of the forecast. This allows post to run as files are produced instead of after the forecast is complete. Ocean post jobs are handled the same as atmosphere post: forecast hours are grouped into a number of tasks determined by NPOSTGRP in config.ocnpost. The ocean and ice output are now also located in their own component directories in COM (the joint ocean-ice files are located in the ocean directory for now). The atmosphere latitudes are reversed from coupled-crow (see c59260b0). Co-authored-by: jikuang Co-authored-by: Kate.Friedman Co-authored-by: Rahul Mahajan Co-authored-by: JessicaMeixner-NOAA Co-authored-by: JianKuang-UMD <51758200+JianKuang-UMD@users.noreply.github.com> Co-authored-by: lgannoaa <37596169+lgannoaa@users.noreply.github.com> commit 8abe1dfa8d613f9398cd86564046b53235f62749 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Wed Dec 8 16:36:52 2021 -0500 Fix resource assignment issue found in analysis job running global_cycle (#467) Correct settings for nth_anal on WCOSS-Dell and nth_cycle everywhere. commit fdffeaaf013f638ac43ad421981e48fabf7a7070 Author: malloryprow Date: Thu Nov 18 14:17:02 2021 -0500 Update gfsmetp, gfsarch dependencies (related update of EMC_verif-global tag) (#508) * Update gfsmetp and gfsarch dependencies * Update EMC_verif-global tag to verif_global_v2.8.0 Refs: #437, #472 commit 108abc589b746b2ba585d18a6b6587e5a0d89f39 Merge: f6f1bb702 e5cd63693 Author: Walter Kolczynski - NOAA Date: Tue Nov 16 10:11:39 2021 -0500 Merge pull request #497 from NOAA-EMC/feature/shebang Update ush/ script files with "python3" in shebang commit e5cd636930b0e36ae9b2b25697cda317a2df996d Author: jikuang Date: Fri Nov 12 11:50:53 2021 -0600 update the following files with "python3" in shebang commit f6f1bb7026bcb4983b0f9e921a6332b6722fe724 Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Wed Nov 10 10:08:42 2021 -0500 Add flag to launcher command to prepend task number to lines in stdout/err (#493) Modified env file settings for launcher variable to prepend task number label with "-l" flag. commit 096fc1fb76ee01aff7908b91adc9851da9235cad Author: Rahul Mahajan Date: Tue Nov 9 08:47:22 2021 -0500 Update NSSTBUFR file logic in prep job (#469) Add switch in config.prep to toggle NSSTBUFR file creation in prep.sh. Add logic in prep.sh to copy NSSTBUFR from DMPDIR if not creating as part of the workflow. NSSTBUFR is created with different DTYPS_nsst before 2020102200. commit 84194a735b46c907656fe2b2cca3ca97799396f0 Merge: a39cb11ef 0740b5b6c Author: Walter Kolczynski - NOAA Date: Wed Oct 27 11:52:55 2021 -0400 Merge pull request #474 from NOAA-EMC/feature/setx2 Hide module load commands commit 0740b5b6c622d64b770c73aa47d9789494d94a99 Author: jikuang Date: Tue Oct 26 13:19:07 2021 -0500 wrap module load commands with set +x commit a39cb11ef9e72b2913d81521d6f9e51da3a8bc22 Author: Kate Friedman Date: Wed Sep 29 09:36:31 2021 -0400 Update EMC_verif-global tag to verif_global_v2.5.2 (#450) New tag provides the following updates since the verif_global_v2.2.1 tag: - Added capability to produce a scorecard (no need to use METviewer AWS to produce scorecards) - Added capability to produce fit-to-obs plots - Added support for Jet - Updated DA ensemble plots graphics to support when models ensemble mean and spread output is on different grids - Hot fix for new METviewer AWS host name - Hot fix for reorganizing precipitation verification input files Refs: #438 commit 6f74cacdffe22f67e99aed1ac0e75720dac27c30 Author: JianKuang-UMD <51758200+JianKuang-UMD@users.noreply.github.com> Date: Tue Sep 28 09:53:16 2021 -0400 Remove firstcyc job (#440) The need for the firstcyc job has gone away, removing redundant job. commit 1ca27148d776eedf96636a845feb95881cfaa138 Author: Kate Friedman Date: Thu Sep 9 11:53:11 2021 -0400 Update repository name for EMC_post component to UPP (#441) - the "EMC_post" repository was renamed to "UPP" on September 6th 2021 - update repository url in checkout script and Externals.cfg Refs: #433 commit 7233d0c46cc9d24b01bee0ef6be12d775d2523a4 Author: Kate Friedman Date: Mon Aug 23 11:22:26 2021 -0400 Add rstprod support to Orion (#421) - Update EMC_verif-global tag to verif_global_v2.2.1 - Turn on rstprod support by default on Orion - Change default DMPDIR path on Orion to new rstprod-supported GDA Refs: #347 commit 20c331dd9678834b980ccc932b6235a8266d4a88 Author: Kate Friedman Date: Thu Aug 19 13:01:07 2021 -0400 Update obsproc package versions for TAC2BUFR implementation (#423) Update obsproc package versions for TAC2BUFR implementation: - obsproc_prep v5.5.0 - obsproc_global v3.4.2 - new packages installed on WCOSS-Dell, Hera, Jet, Orion Refs: #341 commit 7f0f7400520b031e2428238a9741d4d8bfb8207a Author: Kate Friedman Date: Wed Aug 18 12:41:09 2021 -0400 Update vrfy/metp jobs to use jobid in their DATAROOT folders (#414) Update vrfy/metp jobs to use jobid in their respective DATAROOT folder names; fixes race condition between vrfy and metp jobs Refs: #401 commit 9233d965cd19a94ee649b4ee8c117bb587b78923 Author: Kate Friedman Date: Tue Aug 17 12:48:12 2021 -0400 Update workflow_utils build modules and remove ncio module hack (#412) Add ncio/1.0.0 module load to workflow_utils and remove hack that builds this library inline. Refs: #407 commit df26e953792913669698ba64b414b3be5184f43d Author: Kate Friedman Date: Tue Aug 17 11:15:38 2021 -0400 UFS_UTILS tag update - gdas_init support on Jet and HPSS path update for GFSv16 real-time parallel (#410) * Update UFS_UTILS tag to ufs_utils_1_6_0 * Update HPSS path for real-time GFSv16 pre-implementation parallels Refs: #400 commit 34427f560c729ee3b7cc91ff357b3ad908a7486a Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Mon Aug 9 15:47:27 2021 -0400 Free-forecast mode support on Jet (#394) Support for free-forecast mode on Jet is added. Setup support for multiple partitions included (xjet, kjet, sjet, vjet) but tested/recommend to use xjet (default). Verification pieces and cycled mode not yet supported. commit 8c777ad04bce0555bed9f6666b808515b0a3766d Merge: ce66c74bb fc48af56d Author: Kate Friedman Date: Tue Jul 20 15:53:45 2021 -0400 Merge pull request #370 from BrianCurtis-NOAA/feature/rocoto-py3 Convert setup scripts to python3 commit fc48af56d3a0ccbd3e142d22452b9b5e34173b7b Author: Brian Curtis Date: Mon Jul 19 20:48:05 2021 +0000 Missed a set of raw_input(), in py3 they are just input() commit 44dc907a2ea3b8a29334b2416183ca8775ff4c82 Author: Brian Curtis Date: Mon Jul 19 19:59:54 2021 +0000 revert rocoto_viewer as its being worked on elsewhere commit 37f25384c29f6697be5c851868ce98d8b6c31207 Author: Brian Curtis Date: Mon Jul 19 19:27:32 2021 +0000 Fixes from testing commit c0716f41f2446fec9a441b285d9033f73345c5d4 Author: Brian Curtis Date: Mon Jul 19 10:28:06 2021 -0400 Merge w/upstream and update those changes to py3 commit cf8758f84418c236fb45913912491a1c27b2829f Merge: f9013decd ce66c74bb Author: Brian Curtis Date: Mon Jul 19 09:21:25 2021 -0400 fix merge conflict in workflow_fcstonly commit ce66c74bbc43e997bae66a2c2035f2412d3f602b Merge: 96347ea52 7a166da9f Author: Kate Friedman Date: Wed Jul 14 16:18:55 2021 -0400 Merge pull request #362 from KateFriedman-NOAA/bugfix/ffhighres Correct wrong settings for high-res warm-start free-forecast commit 7a166da9f20a59729be39fff953bfe367987f046 Author: Kate.Friedman Date: Wed Jul 14 19:19:45 2021 +0000 Reduce C768 npe_wav_gfs from ops 440 to dev 140 Refs: #353 commit b34c581c3b19ecdcdb4eff463e855597e5c08d80 Author: Kate.Friedman Date: Wed Jul 14 19:15:31 2021 +0000 Adjust how EXP_WARM_START is set from setup_expt_fcstonly.py step - remove default value for start (EXP_WARM_START) - if user provides start flag then use it for EXP_WARM_START - if user doesn't provide start flag then make a decision for them based on resolution - if start=None and res=768 then start=warm - if start=None and res!=768 then start=cold Refs: #353 commit 69cf53412a61e7fe0fb49e8c688bc2cbb4ded572 Author: Kate.Friedman Date: Thu Jun 24 16:38:25 2021 +0000 Set EXP_WARM_START=true in config.base via setup_expt_fcsonly.py if resolution is C768 - have free-forecast setup_expt script check if resolution is operational resolution (C768) and if so, set EXP_WARM_START=.true. - forcing EXP_WARM_START=.true. when C768 covers most C768 scenarios regarding cold vs warm starting - the --start argument still works but new check will override if res=768 - users can still change config.base setting as needed for special scenarios Refs: #353 commit 08f62e45319c9772ef33cdb3c7aa3ec165fede09 Author: Kate.Friedman Date: Wed Jun 23 21:21:51 2021 +0000 Revert EXP_WARM_START if-block addition in config.getic - need to determine better way to set EXP_WARM_START Refs: #353 commit 1c03067ca570295b65f967467ef2329fb7999578 Author: Kate.Friedman Date: Wed Jun 23 19:33:18 2021 +0000 Revert config.base EXP_WARM_START check change Refs: #353 commit 0f1cea6662695cad9ecf7df8317a36e1ab5c57e1 Author: Kate.Friedman Date: Wed Jun 23 19:12:27 2021 +0000 Add checks for EXP_WARM_START in config.base and config.getic - add OPS_RES variable to both config.base.emc.dyn and config.getic - add if-block in both configs to force EXP_WARM_START=true if CASE=OPS_RES and gfs_ver=v16 (current ops) - check in config.base helps with later IAU checks - help catch when user doesn't set EXP_WARM_START=true when running v16 C768 Refs: #353 commit 7ed96c34f3dd6e4c4251e87d9abf62a0dbb413a2 Author: Kate.Friedman Date: Wed Jun 23 19:10:17 2021 +0000 Add cd to ROTDIR when pulling ops warm starts - pull v16 warm starts directly into ROTDIR; don't need temporary location to handle subfolder diffs - resolves issue with GDATE gdas restart files being left in EXTRACT_DIR Refs: #353 commit 06c5e3cb7bd9d82d4e51a63168465118a34e5882 Author: Kate.Friedman Date: Wed Jun 23 19:06:42 2021 +0000 Reduce C768 resource settings to fit node limits - default C768 resources on Hera were 218 nodes which is higher than the 210 node limit per job - bring C768 settings in config.fv3 down to 148 nodes (on Hera) - tested new settings in free-forecast mode on Hera Refs: #353 commit 96347ea527f7b0ab61a1aae6576e2709fb387c7c Merge: cfca8bb2c 5c042e087 Author: Kate Friedman Date: Wed Jun 23 11:13:06 2021 -0400 Merge pull request #316 from NOAA-EMC/feature/hpc-stack GFS components update for hpc-stack support commit 5c042e087c02cb82fe24ce666e477791f5e2417e Merge: b36414e4c cfca8bb2c Author: kate.friedman Date: Thu Jun 17 19:33:03 2021 +0000 Merge remote-tracking branch 'origin/develop' into feature/hpc-stack commit cfca8bb2ca0dc0105b905c536f346002408db771 Merge: e08f55583 fba8cef5b Author: Kate Friedman Date: Thu Jun 17 14:40:18 2021 -0400 Merge pull request #342 from KateFriedman-NOAA/issue178 Free-forecast integration with chgres_cube and resolve know mode bugs commit fba8cef5b870d46df1c665d3e9cabb23904ad3cf Author: Kate.Friedman Date: Wed Jun 16 13:57:14 2021 +0000 Remove wave restart pull in getic script Refs: #178 commit 921838feb9f6fd3fc3c69579c677ffdd7175a103 Author: Kate.Friedman Date: Wed Jun 16 13:18:35 2021 +0000 Remove old compile command from build_fv3.sh Refs: #178 commit b36414e4ce49579c5db1829fab46e1a4ef302569 Merge: 9cf615d11 e08f55583 Author: kate.friedman Date: Tue Jun 15 18:36:55 2021 +0000 Merge remote-tracking branch 'origin/develop' into feature/hpc-stack Refs: #164 commit 65ff48e049a651e74be8be121163c20957bf1c44 Author: kate.friedman Date: Thu Jun 10 18:37:24 2021 +0000 Add v16 pgb anl pull to getic script Refs: #178 commit 37e7c2e0806678c93a11bae682f48da172940fd6 Author: kate.friedman Date: Thu Jun 10 18:36:59 2021 +0000 Add OPS_RES variable to init script Refs: #178 commit db18627960d2def7bbfee30994f4be6586babe1c Author: kate.friedman Date: Thu Jun 10 18:36:10 2021 +0000 Increase init job walltime to 30 mins from 15 mins Refs: #178 commit 30aefb11dd8130f1d4a1e6eb951e1fa400fdc361 Author: kate.friedman Date: Thu Jun 10 15:43:27 2021 +0000 Update/fix pull of v14/v15 pgrb2 anl files in getic job Refs: #178 commit 18970c716d79922fa02b86165996bb47fb42d3fa Author: kate.friedman Date: Wed Jun 9 12:04:01 2021 -0500 Disconnect archive job in workflow from HPSS access check - remove dependency on HPSS access to check for adding gdas[gfs]arch job to workflow - add HPSSARCH variable to ARCHIVE_TO_HPSS definition in cycled workflow, similar to prior addition to free-forecast script Refs: #178 commit b52d2f0b82e0e376905c64daa593362396f8da1b Author: kate.friedman Date: Tue Jun 8 13:06:30 2021 -0500 Update UFS_UTILS checkout to ufs_utils_1_4_0 tag - new ufs_utils_1_4_0 tag includes updates to support this branch - From tag release notes: - Update the GDAS initialization utility to ingest GFS v16 data. - Update to process either the GFS or GDAS CDUMPs. Refs: #178 commit 4c858c0f059abd0ff4c937c7bab692d7b13a8163 Author: kate.friedman Date: Tue Jun 8 13:05:08 2021 -0500 Adjust comments in getic job script Refs: #178 commit 898a43fb74005e969ecb5baf28ecf2d51f7c5dda Author: Kate.Friedman Date: Tue Jun 8 15:57:32 2021 +0000 Adjust getic/init job scripts - adjust EXTRACT_DIR, DATA, and ROTDIR usage in getic and init jobs - remove duplicate pgb file pull from init job Refs: #178 commit 1cdc2a44c6d29cfb8f06a50238ea29d28642c1f1 Author: Kate.Friedman Date: Tue Jun 8 15:56:46 2021 +0000 Add cmake module load to Hera block in machine-setup.sh Refs: #178 commit fe448ff29aedca6a40a748ee47ae001b1639188c Author: kate.friedman Date: Thu Jun 3 19:32:15 2021 +0000 Set DO_WAVE to NO - turning off waves by default in config.base Refs: #178 commit bfb0a33305a46d87f62c4a5c8bd7799a60362678 Author: kate.friedman Date: Thu Jun 3 13:13:08 2021 -0500 Remove RUN_CCPP option, force CCPP now - remove RUN_CCPP case option from build_all.sh - remove RUN_CCPP option in build_fv3.sh, force CCPP build now - remove pre-CCPP GFS ops tag checkout option in checkout.sh, forcing CCPP hash checkout now Refs: #178 commit 771782f109de15f9f0214bcceb852b51bb4b0e02 Author: kate.friedman Date: Thu Jun 3 13:09:42 2021 -0500 Replace Orion checks with hpssarch checks for getic job - add hpssarch variable to setup_workflow_fcstonly.py - replace Orion checks with hpssarch=YES checks Refs: #178 commit e2ac5872ca482eb335bc6294e00594dc3a806718 Author: kate.friedman Date: Wed Jun 2 14:23:35 2021 +0000 Update WCOSS-Dell section of machine-setup.sh - needed cmake module loaded for building - added cmake module load and prereq stack loads Refs: #178 commit f0afb91bae738413539ee2f1fdc63b79e93b3e52 Author: kate.friedman Date: Wed Jun 2 14:22:43 2021 +0000 Change BDATE to GDATE in getic.sh Refs: #178 commit 69ac287062512b929a5193ebc86e4c7fcbbb1917 Merge: e62cefb39 e08f55583 Author: Kate Friedman Date: Wed Jun 2 10:17:52 2021 -0400 Merge branch 'NOAA-EMC:develop' into issue178 commit e62cefb3943a87a90fd40234f08845534df818a1 Author: Kate.Friedman Date: Tue Jun 1 16:50:28 2021 +0000 Correct gdas operational tarball name in getic job script Refs: #178 commit 127723adfde2b7b7c79bd4d346cafcb1f265dc1c Author: Kate.Friedman Date: Tue Jun 1 16:44:37 2021 +0000 getic job updates to add OPS_RES variable and pull from operational tarballs for warm starting - add OPS_RES variable to define current operational resolution; use variable where needed now - updated getic job script to use OPS_RES variable in if-block check - updated getic job script with new operational tarballs to pull for warm starting high res runs Refs: #178 commit 499f217f92b5bb0fad9e71de221937d9973046ce Author: Kate.Friedman Date: Tue Jun 1 15:49:41 2021 +0000 Resolve bug in wavepostpnt jobs when DOBLL_WAV=NO - change DOBNDPNT_WAV=YES and CFP_MP=YES if-block to only prepare cmdtarfile for CFP when DOBLL_WAV=YES to avoid scenario where only a single command is added to cmdtarfile Refs: #178 commit e08f5558372d43d88890ca639e70ab923071361b Merge: e09a398f1 b2879fe9f Author: Kate Friedman Date: Wed May 26 12:27:40 2021 -0400 Merge pull request #327 from NOAA-EMC/operations Operations updates for GFSv16.1.1 commit 824ff7254fba04a0b3726316d300f9fa6282c937 Author: Kate.Friedman Date: Tue May 25 20:42:25 2021 +0000 Change UFS_UTILS version to feature branch for testing Refs: #178 commit 151e0b56b6e38f40449c9eb0807ffa92b6aa46f9 Author: Kate.Friedman Date: Tue May 25 20:41:32 2021 +0000 Correct if-statement syntax in config.init Refs: #178 commit 005d33d7b100b279e0db5290824c3e7acabfa4ba Merge: 5ec376bab e09a398f1 Author: Kate Friedman Date: Mon May 24 15:23:05 2021 -0400 Merge branch 'NOAA-EMC:develop' into issue178 commit b2879fe9f90def631047f533db2144858d827023 Merge: 68b9157bd a8ed770d9 Author: Kate Friedman Date: Mon May 24 10:07:05 2021 -0400 Merge pull request #326 from NOAA-EMC/release/gfsv16.1.1 GFSv16.1.1 commit e09a398f1cedc7252219e75bf0b319d2601bc8df Merge: e3fcfebc1 6bad810bc Author: Kate Friedman Date: Fri May 21 09:58:49 2021 -0400 Merge pull request #317 from malloryprow/feature/EMC_verif-global_upgrade EMC_verif-global v2.0.0 major release updates commit 6bad810bccdfc893fd51b8b55c60c1f732547c3a Author: Mallory Row Date: Fri May 21 13:55:13 2021 +0000 Update Externals.cfg EMC_verif-global tag to verif_global_v2.0.2 Refs: #315 commit 9cf615d11b096ea4843f4e5938a6a65f3500df49 Author: kate.friedman Date: Thu May 20 20:10:18 2021 +0000 Modulefile updates for testing with waves on - updated ww3 and base modulefiles to add modules and update some - added new: pio/2.5.2i, fms/2020.04.03 - updated esmf module to esmf/8_1_1 and nceppost/dceca26 to upp/10.0.6 Refs: #164 commit b155ff37040658703168268d4e58fe4e6b45a50d Author: Mallory Row Date: Thu May 20 15:00:04 2021 +0000 Update EMC_verif-global tag to verif_global_v2.0.2 Refs: #315 commit cae62e3f47e245e70fcf3721fb4c022ea11c059f Merge: 8def77afd e3fcfebc1 Author: kate.friedman Date: Wed May 19 19:45:05 2021 +0000 Sync merge with develop and WW3 build updates - Merge remote-tracking branch 'origin/develop' into feature/hpc-stack - WW3 build updates: revert back to separate module files for build; address modulefile reorganization in separate issue - remove CCPP option with system build, doing CCPP by default now Refs: #164 commit 5ec376bababd935e4f3b15c4754105f5bd750657 Merge: 6b6b9ed39 e3fcfebc1 Author: Kate.Friedman Date: Wed May 19 18:24:31 2021 +0000 Merge remote-tracking branch 'origin/develop' into issue178 * origin/develop: change fv3gfs checkout head fixed a compilation error, NEMs/exe existing, in hera build_fv3.sh with ATM fixed line 43 of link_fv3gfs.sh, build_fv3.sh v15 to v16 bugfix for not removing last point from list in wave post pnt jobs changes added in link_fv3gfs for fix_aer changed fix dir for link_fv3gfs changes on build_fv3.sh and symlinks to optical data files instead of cp Update util_shared module version to 1.3.0 for wave footer fix Revert addition of ecflow trigger for wavepostbndpntbll job update ufs-weather-model tag to GFS.v16.0.16 add ecflow updates for new wave bndpntbll job Additional WAFS tag update to gfs_wafs.v6.0.21 for GFSv16.0.8 Back out updates to add config.resources.nco.static WAFS tag update to gfs_wafs.v6.0.20 in Externals.cfg WAFS tag update (gfs_wafs.v6.0.20) for v16 post-implementation fixes fix for missing wave boundary cbull and bull files Fix cycle date in bull and cbull wave files Reverting transfer parm file changes committed at 39bab45 Component tag updates for nwprod/gfsv16.0.7 Updated transfer parm files for gdas, enkf, and gfs dissemination updated config.fcst testing merra2 workflow in hera update merra2 before a new pull request Issue #215 - GFSv15.3.5 ops updates for gempak and bufrlib versions udate config.base.emc.dyn high resolution MERRA2 data used fixed a bug related to orion added merra2 input and update diag_table merra2 workflow for orion Clean up commments Updated sorc/checkout.sh to pick gfsda.v15.3.3 ( EUM bufr changes ) commit 4641c5d206a95e0e66276fa86d46ecd580213fd5 Merge: eff8a1258 e3fcfebc1 Author: Mallory Row Date: Wed May 19 14:51:19 2021 +0000 Merge branch 'develop' into feature/EMC_verif-global_upgrade commit e3fcfebc1ff9c9f9ceda7b775de0c34117de6459 Merge: 95e0dffea fa5d1e2ba Author: Kate Friedman Date: Wed May 19 10:02:19 2021 -0400 Merge pull request #254 from AnningCheng-NOAA/merra2 Addition of support for MERRA2 commit fa5d1e2ba242a08e26cb7bac8c68b700a83d1d60 Author: anning.cheng Date: Tue May 18 10:41:16 2021 -0400 change fv3gfs checkout head commit 283c4a044847bbadd0cef46e14dde4de97abe986 Author: anning.cheng Date: Mon May 17 15:56:56 2021 -0400 fixed a compilation error, NEMs/exe existing, in hera commit 6b574160f94329754677e7f4541ab07c44185bb0 Author: anning.cheng Date: Fri May 14 13:44:18 2021 +0000 build_fv3.sh with ATM commit dfc8aa9a2cf5370fff38520d2a28f3960be3b583 Merge: bf5d11063 95e0dffea Author: anning.cheng Date: Wed May 12 20:11:44 2021 +0000 Merge remote-tracking branch 'upstream/develop' into merra2 commit eff8a1258aa70c061fe69697388f8914935726ee Merge: b1ad0b963 95e0dffea Author: Mallory Row Date: Wed May 12 19:15:17 2021 +0000 Merge branch 'develop' into feature/EMC_verif-global_upgrade commit 95e0dffea435af17be9150fcd0c842763768b45f Merge: fc727f405 dd4d18790 Author: Kate Friedman Date: Wed May 12 14:51:10 2021 -0400 Merge pull request #323 from NOAA-EMC/sync/operations_v16.0.9 Bring operations branch v16.0.9 changes into develop commit dd4d1879093516a7950c9e0e59f6e44e462199f6 Merge: fc727f405 68b9157bd Author: kate.friedman Date: Mon May 10 16:40:13 2021 +0000 Merge remote-tracking branch 'origin/operations' into sync/operations_v16.0.9 * origin/operations: bugfix for not removing last point from list in wave post pnt jobs Update util_shared module version to 1.3.0 for wave footer fix Revert addition of ecflow trigger for wavepostbndpntbll job update ufs-weather-model tag to GFS.v16.0.16 add ecflow updates for new wave bndpntbll job Additional WAFS tag update to gfs_wafs.v6.0.21 for GFSv16.0.8 Back out updates to add config.resources.nco.static WAFS tag update to gfs_wafs.v6.0.20 in Externals.cfg WAFS tag update (gfs_wafs.v6.0.20) for v16 post-implementation fixes fix for missing wave boundary cbull and bull files Fix cycle date in bull and cbull wave files Reverting transfer parm file changes committed at 39bab45 Component tag updates for nwprod/gfsv16.0.7 Updated transfer parm files for gdas, enkf, and gfs dissemination Issue #215 - GFSv15.3.5 ops updates for gempak and bufrlib versions Clean up commments Updated sorc/checkout.sh to pick gfsda.v15.3.3 ( EUM bufr changes ) Refs: #309 commit 8def77afd4a9f1cd6cdca42c956bc7ebf675a58d Merge: c6e2a96e8 d46e8cf49 Author: Kate Friedman Date: Mon May 10 11:45:02 2021 -0400 Merge pull request #322 from JessicaMeixner-NOAA/hpcstackww3 Updates for ww3 pre and post exec builds for hpc-stack commit d46e8cf49aff0dbf72e457f1177e10e6f50252a6 Author: Jessica Meixner Date: Mon May 10 15:31:56 2021 +0000 update for ww3_pre/post build: -- remove ww3 specific module files -- updated module base files to be in sync with ufs-weather-model except that jasper is a more recent version which is needed for ww3_grib -- added extra ww3 execs needed for this branch -- added ww3prepost build to build_all and partial build commit c6e2a96e86611cce00455609d9be803d580e7bc0 Author: Kate.Friedman Date: Mon May 10 14:30:13 2021 +0000 Change fix file linking to scan for possible subfolders in set - instead of providing subfolder names, scan for subfolders in FIX_DIR path and then create symlinks based on existing subfolders in set - will not have to keep updating list of subfolders now Refs: #164 commit aa1d1e9ca1d8521ef22e1bdb654d4a70e7b1e29e Author: Kate.Friedman Date: Mon May 10 14:27:13 2021 +0000 Change CCPP_SUITE from FV3_GFS_v16beta to FV3_GFS_v16 - newer ufs-weather-model hash supports FV3_GFS_v16 suite Refs: #164 commit a8ed770d9c1e8614c5477d0129d6eaf5fe4e2085 Author: kate.friedman Date: Thu May 6 19:32:36 2021 +0000 Companion update to Externals.cfg for WAFS tag update to gfs_wafs.v6.0.22 Refs: #1,#321 commit 68d9b5b5ff072b1f62131a9f7495c33c14c4a850 Author: kate.friedman Date: Thu May 6 19:28:17 2021 +0000 WAFS tag update to gfs_wafs.v6.0.22 for bug fix Refs: #1,#321 commit 68b9157bd59278dc07369d316999d3c8485ebf7c Merge: 1f5af6283 97fe99096 Author: Kate Friedman Date: Wed May 5 10:50:42 2021 -0400 Merge pull request #306 from NOAA-EMC/release/gfsv16.0.0_to_ops GFSv16.0.9 commit 1aea3ee393c99d4f76556fbbdbebc43f629558c2 Author: kate.friedman Date: Wed May 5 14:30:06 2021 +0000 Add build script and modulefiles for WW3 build - WW3 execs no longer built by FV3 build, need separate build now - add new build_ww3prepost.sh script for building WW3 execs in ufs-weather-model checkout - add modulefiles for WCOSS-Dell, Hera, and Orion Refs: #164 commit 214431a2c04f6e685e966810621fc2fae771d2f5 Author: kate.friedman Date: Wed May 5 14:26:00 2021 +0000 Update WAFS execs to include .x - update WAFS exec names in link_fv3gfs.sh to include ".x" extension that was added with new version Refs: #164 commit eb1613764794a35d165e55423682ed592b2aaacb Author: kate.friedman Date: Wed May 5 14:22:06 2021 +0000 ufs-weather-model hash update for WW3 support with hpc-stack - update ufs-weather-model hash to 554aedcd63e4a7c5012570406132eaf76e249ca9 - update build_fv3.sh for new compile arguments for CCPP/WW3 build Refs: #164 commit b1ad0b96328a54112ecc13ff4b71dcc08556a8c1 Author: Mallory Row Date: Wed May 5 14:13:58 2021 +0000 Update EMC_verif-global tag to verif_global_v2.0.1 Refs: #315 commit c206e8d2606f14ee6188740f881673ff512b866b Author: Mallory Row Date: Mon May 3 19:16:42 2021 +0000 Fix typo in config.metp There was a typo in the grid-to-obs METviewer related config variables. The variables started with "g2g1" instead of "g2o1". Refs: #315 commit f9013decd5af75f66eda619175bacc7549f4746a Author: Brian Curtis Date: Mon May 3 14:37:13 2021 -0400 Files to test for python3 compatibility commit 0b9607711900e0da0de3d3dc1af91cc4dc9dd04d Author: catherine.thomas Date: Mon May 3 12:31:01 2021 -0400 Update v16.1 release notes with wave script fix Refs: #301 commit fda26e9010ef59f69cd378c3092bdc82e57e4ec2 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Mon May 3 12:08:12 2021 -0400 Update config.base.nco.static Change HOMEobsproc_prep and HOMEobsproc_network to point at NCO installation of these packages. commit f9a6dd71ef7d580d6b83f50eb53814a06a944577 Merge: 173bb4814 97fe99096 Author: catherine.thomas Date: Mon May 3 11:55:09 2021 -0400 Merge branch 'release/gfsv16.0.0_to_ops' into release/gfsv16.1 Include wave fixes in v16.1 Refs: #301 commit 173bb4814ed2d2bc6e3436263f55c199f8dc8721 Author: catherine.thomas Date: Mon May 3 11:52:42 2021 -0400 Update v16.1 release notes for wave fixes Refs: #301 commit 858f216330d7ab71137afe6331f6576fec413aee Author: kate.friedman Date: Mon May 3 15:19:56 2021 +0000 Update EMC_post, UFS_UTILS, EMC_gfs_wafs versions in Externals.cfg Refs: #164 commit 6ce83363726ece6dbd34719430dd44f5e63bbc3c Author: kate.friedman Date: Mon May 3 15:14:54 2021 +0000 Component updates for UPP, WAFS, UFS_UTILS - new tag in checkout for UFS_UTILS to use hpc/1.1.0 - new hash in checkout for UPP/EMC_post to support GTG and GTG code copy fix - new hash in checkout for WAFS/EMC_gfs_wafs to support hpc-stack - build script update for WAFS (cmake/stack) - WAFS GCIP config update to fix runtime error Refs: #164 commit 709095709ca60498d05ea0f519b494501e1ecdf2 Author: kate.friedman Date: Mon May 3 15:11:51 2021 +0000 Update util_shared to 1.3.0 on WCOSS-Dell - version changed in production for v16.0.9 footer fix Refs: #164 commit bf5d110632fc67653441e6830bfdcdddda906706 Author: anning.cheng Date: Mon May 3 10:53:37 2021 -0400 fixed line 43 of link_fv3gfs.sh, build_fv3.sh v15 to v16 commit 97fe990968955486fe2b7f3035c9d9423cef5e3e Merge: c582db288 f0fd3d410 Author: Kate Friedman Date: Mon May 3 09:15:15 2021 -0400 Merge pull request #318 from JessicaMeixner-NOAA/v16/bugforpnt Bug fix for missing buoy in wave post point commit f0fd3d4108debaa61f000ac700fd90904f1b600b Author: jessica.meixner Date: Fri Apr 30 17:56:34 2021 +0000 bugfix for not removing last point from list in wave post pnt jobs commit fb47a5a0f7391f670461b00eaf324c3b0102ef1f Author: kate.friedman Date: Wed Apr 28 17:50:15 2021 +0000 Update TC_tracker version in config.vrfy - new TC_tracker.v1.1.15.4 was made available by Jiayi Peng - new version supports hpc-stack on supported platforms - installed locally on WCOSS-Dells, Hera, and Orion Refs: #164 commit 587ac0c914430d5b887327d7c566c452d2eace62 Author: anning.cheng Date: Wed Apr 28 10:36:49 2021 -0400 changes added in link_fv3gfs for fix_aer commit 48690cd07ceeb90c6808346a04a31a6166505c86 Author: Mallory Row Date: Wed Apr 28 14:00:46 2021 +0000 Update EMC_verif-global tag to verif_global_v2.0.0 commit 1d0e0c29979101b451f1fda265af3f9a716bb9de Author: kate.friedman Date: Tue Apr 27 19:33:09 2021 +0000 Reverting resource related changes - will commit resource adjustments separately Refs: #164 commit 101905ce4d92a544d353700b0acdc137aa61b088 Author: anning.cheng Date: Tue Apr 27 14:15:59 2021 -0400 changed fix dir for link_fv3gfs commit 3271bac5b2072bfa2c0c0d229f050b647cd28925 Author: catherine.thomas Date: Tue Apr 27 10:08:54 2021 -0400 Update Externals.cfg and release notes for v16.1 Updated Externals.cfg GSI tag to gfsda.v16.1.0. Added sections in the release notes to explicitly say no changes to parm/config and scripts. Refs: #301 commit 31389bc23b89b1713712da17c8f226b649286b40 Merge: b1e924cd4 c582db288 Author: catherine.thomas Date: Tue Apr 27 08:31:41 2021 -0400 Merge branch 'release/gfsv16.0.0_to_ops' into release/gfsv16.1 This update brings in the wave foot fix for GFSv16.0.9. Refs: #301 commit b1e924cd44eba056443cb2a6789b1dc8040a02e1 Author: catherine.thomas Date: Tue Apr 27 07:31:44 2021 -0400 Change GSI tag to gfsda.v16.1.0 The GSI tag has been updated for the v16.1 implementation. This implementation turns on commercial RO data from GeoOptics. See release notes docs/Release_Notes.gfs.v16.1.0.txt in the global-workflow and release notes doc/Release_Notes.gfsda.v16.1.0.txt in the GSI for details. Refs: #301 commit 3142a8219c74b7b33a2bee1aed4ed7acd34ed0dc Author: catherine.thomas Date: Mon Apr 26 16:59:43 2021 -0400 Add Release Notes for GFSv16.1 Added the file docs/Release_Notes.gfs.v16.1.0.txt to release branch release/gfsv16.1. Refs: #301 commit 7cd6e0e3000a47b39fa0c7e75ad66150e96385d8 Author: Mallory Row Date: Fri Apr 23 14:44:03 2021 +0000 Fix setting of 'SDATE_GFS' for free forecast XML In the workflow XML for free forecasts there is no SDATE_GFS variable. The 'SDATE_GFS' variable was changed to be set to the value of 'SDATE'. Refs: #315 commit d34b99d4e3d369b784fd9d2c639a0bddd1bbfc0c Author: Mallory Row Date: Fri Apr 23 12:59:51 2021 +0000 Clean up and add new settings in metp.sh SDATE_GFS was added into the script preamble following the addition of the variable being added as a rocoto exported environment variable for metp tasks. Config.vrfy was removed from the list of relevant configs to source. Variables CDATEm1 and PDYm1 were removed and replaced with VDATE. VDATE is the verification date to be done by the metp tasks based on VRFYBACK_HRS set in config.metp. Lines were added to catch the exit status of VERIFGLOBAL_SH and to exit if not succesfully run so it can be caught by rocoto. Refs: #315 commit 998f1a454427dedd46bb20b36e381bedbdf3e349 Author: Mallory Row Date: Fri Apr 23 12:49:38 2021 +0000 Revamp of config.metp Following the EMC_verif-global configuration remake, config.metp has been revamped to support the new configuration settings. Refs: #315 commit 6a01ae405202b8984fe8efa73573d7fdba2b74d2 Author: Mallory Row Date: Thu Apr 22 17:17:14 2021 +0000 Add 'SDATE_GFS' rocoto env var for metp tasks The connector script between EMC_verif-global and global-workflow run_verif_global_in_global_workflow.sh (housed in EMC_verif-global) contains a new feature that checks the maximum forecast hour for verification is the hour's initialization date is equal to or after the first GFS cycle initialization. If the date is before, the maximum forecast hour is adjusted to the maximum hour relative to the forecast verification date and the first GFS cycle initialization. This feature was added to cut down on METplus calls being done on data that don't exist. Refs: #315 commit dfec5816add3c56721360a418ec9f3459cfd4d8c Author: Kate.Friedman Date: Thu Apr 22 15:27:56 2021 +0000 Update UFS_UTILS hash to 9d9dd23e37a51fcc5ff6b7499b834c85ab32e5f3 Refs: #164 commit be564bb85eeefbb1699992e0ed4f0705e4e2ee24 Author: anning.cheng Date: Thu Apr 22 11:22:02 2021 -0400 changes on build_fv3.sh and symlinks to optical data files instead of cp commit 15c6619c6e211eb67ca6aa5c995e4a3bf4cf586f Author: Kate.Friedman Date: Thu Apr 22 14:03:46 2021 +0000 Adjust C768 fcst thread value for reduced node usage - change C768 nth_fv3_gfs value from 7 to 2 Refs: #164 commit ece41632a76e697184a46bb2a428c35ccdf08305 Author: kate.friedman Date: Thu Apr 22 13:58:22 2021 +0000 Add separate gfs resource variables to fcst in config.resources Refs: #164 commit 00c18b5e341d601fd83da2f9df2ac928e8dcf7c8 Author: Kate.Friedman Date: Thu Apr 22 13:44:13 2021 +0000 Update FIX_DIR paths in link_fv3gfs.sh - change platform FIX_DIR paths from fix_nco_gfsv16 set to developmental fix set for v17+ Refs: #164 commit b6c392c7569ed909d6b0b27c0f6a4f828b7acdfd Author: Kate.Friedman Date: Thu Apr 22 13:40:25 2021 +0000 Set DO_WAVE=NO in config.base - set default DO_WAVE setting to NO in config.base.emc.dyn - turn off waves until hpc-stack for WW3 execs build is ready Refs: #164 commit 2b703d335b8e3e97c9764bd60d87188ed11938fd Author: Kate.Friedman Date: Thu Apr 22 13:17:28 2021 +0000 Set WAFS checkout to be optional with -o flag - add checkout_wafs to -o flag settings Refs: #164 commit 305bf5e0fb3c665cf71f10023feed1a121be329b Author: Kate.Friedman Date: Thu Apr 22 13:01:04 2021 +0000 Update Externals.cfg to match checkout.sh versions Refs: #164 commit 3cc02d507df48e2b9f99163d737123e5b5c716c0 Author: Kate.Friedman Date: Thu Apr 22 12:52:46 2021 +0000 Update GLDAS and UFS_UTILS checkouts - update GLDAS checkout to gldas_gfsv16_release.v1.15.0 tag; corrects build on Orion - update UFS_UTILS checkout to 4f44bf89 hash of develop (supports stack) Refs: #164 commit 9d733f87203ebd2298d22c0ac9491520bae60983 Author: kate.friedman Date: Thu Apr 22 12:15:13 2021 +0000 Add support for separate gfs thread values - nth_fv3_gfs was added to configs, add support to setup scripts for resource calculations Refs: #164 commit 4c64dce093fb3925b40b2a3f0b57fd196b14d92c Author: kate.friedman Date: Thu Apr 22 12:14:21 2021 +0000 Reduce npe_wav_gfs from 440 to 140 to dev users Refs: #164 commit 35c16e3aafc3addd3d24225880b5319332cca97a Author: kate.friedman Date: Thu Apr 22 12:12:16 2021 +0000 Add wgrib2 module load to module_base.wcoss_dell_p3 - add wgrib2/2.0.8 module load - add setting of WGRIB2 to equal wgrib2 Refs: #164 commit c582db288999b316d8cae7686699ce8790622bc7 Author: kate.friedman Date: Wed Apr 21 14:55:00 2021 +0000 Update util_shared module version to 1.3.0 for wave footer fix - wave footer fix comes via a new util_shared module version on WCOSS - update module version to 1.3.0 in module_base.wcoss_dell_p3 and gfs.ver Refs: #1, #309 commit 918c450d7e1e888bfb2ef604e91bd6e85db4e55e Merge: 88c54d9c0 072a31ae9 Author: catherine.thomas Date: Fri Apr 16 11:30:13 2021 -0400 Merge release/gfsv16.0.0_to_ops into release/gfsv16.1 Syncing release branch for v16.1 with the soon-to-be operations branch. This update includes GFSv16.0.8 updates for WAFS and waves. Refs: #301 commit 88c54d9c0b1546473d980b5361e3187f9de4a14e Author: russ.treadon Date: Thu Apr 15 10:58:33 2021 +0000 Issue #301: update file/directory retention/cleanup and DA build option * modify arch.sh and earc.sh file/directory retention and clean up * add pruned NCO install option to build_gsi.sh commit 072a31ae93f8b5ee3b3eaeab42bb1bcc764fbf60 Author: kate.friedman Date: Tue Apr 13 16:54:27 2021 +0000 Revert addition of ecflow trigger for wavepostbndpntbll job - Remove wavepostbndpntbll trigger from prod def file for each cycle Refs: #1 commit 6b6b9ed3949c2e3ca3d697ffd3bb3a65ec728744 Author: Kate.Friedman Date: Mon Apr 12 17:13:06 2021 +0000 getic and init job updates for v16 in ops - update GFSv16 implementation cycle in config if-blocks to be 2021032100 - add note about missing ops data on HPSS for 2021032106 cycle - add run_v16.chgres.sh as default RUNICSH script Refs: #178 commit 48ea7abd9fe4cfd0e774c92383948c9bb477a905 Author: Kate.Friedman Date: Mon Apr 12 17:10:59 2021 +0000 Low resolution resource adjustments - C96, C192, and C384 config.fv3 resource updates for successful jobs - provided by Jun Wang and Fanglin Yang - tested on Hera Refs: #178 commit b55ecf8e5ae761ddc8e3897411aceb4e0529e106 Author: kate.friedman Date: Tue Apr 6 15:34:05 2021 +0000 Remove Tide/Gyre reference from machine-setup.sh Refs: #164 commit ab488f1aeb383d84a67b37e47a888d58662cf82f Author: kate.friedman Date: Tue Apr 6 15:33:11 2021 +0000 Update OznMonBuild, RadMonBuild and module_base for hpc-stack on WCOSS-Dell Refs: #164 commit 792b91045c1b72d0439576c0ed38c64cfec5c08b Author: russ.treadon Date: Thu Apr 1 15:18:12 2021 +0000 Issue #301: modify earc.sh to retain enkfgdas files needed by metplus commit c9087cfc00f61a30ece07d13a879ad0dc8ee95cb Merge: b0b01c6cd c145448eb Author: Kate Friedman Date: Wed Mar 31 23:02:31 2021 -0400 Merge pull request #310 from JessicaMeixner-NOAA/v16/wavemissingpoints Wave fixes for missing bull and cbull points and Arctic grid grib update commit c145448ebe7f08f110121932b84dc279b565fe79 Author: jessica.meixner Date: Thu Apr 1 01:50:47 2021 +0000 update ufs-weather-model tag to GFS.v16.0.16 commit d804efe8aa42ba6bb468c80a58079d6ec25398d8 Merge: b3eec5985 b0b01c6cd Author: jessica.meixner Date: Wed Mar 31 18:44:34 2021 +0000 Merge remote-tracking branch 'origin/release/gfsv16.0.0_to_ops' into wavemissingpoints commit b3eec5985b35216eafaf1c5358fd05ba9717c687 Author: jessica.meixner Date: Wed Mar 31 18:43:46 2021 +0000 add ecflow updates for new wave bndpntbll job commit b0b01c6cd102be18f06c45c2d59667b64a5ef22c Merge: 06e9f0835 1d6893b6a Author: Kate.Friedman Date: Tue Mar 30 16:12:45 2021 +0000 Additional WAFS tag update to gfs_wafs.v6.0.21 for GFSv16.0.8 Refs: #1 commit 1d6893b6a700df8228ff14da904b72450152abae Author: Kate.Friedman Date: Tue Mar 30 16:11:44 2021 +0000 Additional WAFS tag update to gfs_wafs.v6.0.21 for GFSv16.0.8 Refs: #1 commit 06e9f08359e2e62c11459d2dc8e8fcba5685eb2e Author: Kate.Friedman Date: Tue Mar 30 15:30:35 2021 +0000 Back out updates to add config.resources.nco.static Will retain in other release branch. Removing to keep continuity with nwprod for GFSv16 post-implementation fix updates. Refs: #1 commit 188941144b3af82e2697acb73df5171088126d9c Merge: 9a3fcf3c2 c77a449cd Author: Kate.Friedman Date: Tue Mar 30 15:27:37 2021 +0000 WAFS tag update to gfs_wafs.v6.0.20 in Externals.cfg Refs: #1 commit c77a449cd537b60caf813e309dd0567daf788665 Author: Kate.Friedman Date: Tue Mar 30 15:26:39 2021 +0000 WAFS tag update to gfs_wafs.v6.0.20 in Externals.cfg Refs: #1 commit 9a3fcf3c24137a0a72b8f46dba0428a8a60cef47 Merge: 54cb17c6e 7f7fa4c05 Author: Kate.Friedman Date: Tue Mar 30 13:28:25 2021 +0000 WAFS tag update (gfs_wafs.v6.0.20) for v16 post-implementation fixes Refs: #1 commit 7f7fa4c051eb8acaa39d11e851ec6405727eaab6 Author: Kate.Friedman Date: Tue Mar 30 13:22:30 2021 +0000 WAFS tag update (gfs_wafs.v6.0.20) for v16 post-implementation fixes Tag updates: 1. Change WAFS 1.25 products (except for icing & turbulence) on model pressure levels. 2. Add CAT and MWT back to 0.25 WAFS product Refs: #1 commit 913b103bf57002780016896d930754f7104137fa Author: jessica.meixner Date: Tue Mar 30 13:10:50 2021 +0000 fix for missing wave boundary cbull and bull files This adds and extra job JGLOBAL_WAVE_POST_BNDPNTBLL and changes the points scripts to all use one script for all point files and the difference is in the exported variables in the three JJOB scripts commit 54cb17c6efce54f541ff08a69ef0a6c0497fb595 Merge: de7b54eaf fb6a6e3bd Author: kate.friedman Date: Thu Mar 25 14:47:46 2021 +0000 Post-implementation fix in ush/wave_outp_spec.sh Merge remote-tracking branch 'origin/release/gfsv16.0.0' into release/gfsv16.0.0_to_ops * origin/release/gfsv16.0.0: Fix cycle date in bull and cbull wave files Refs: #1 commit fb6a6e3bd573d7d1c1a0e89c742acb14ca8f1cda Merge: 27e91128f bda505e25 Author: Kate Friedman Date: Thu Mar 25 10:40:25 2021 -0400 Merge pull request #307 from JessicaMeixner-NOAA/bug/v16wavecycledate Fix cycle date for wave bulletins commit bda505e2509bfb3ec5077c32273ecafb9eb2f91e Author: jessica.meixner Date: Thu Mar 25 14:34:14 2021 +0000 Fix cycle date in bull and cbull wave files commit de7b54eaf3fd18c5bf0dc9327fd82939757f3489 Merge: 1f5af6283 27e91128f Author: kate.friedman Date: Tue Mar 23 15:31:54 2021 +0000 GFSv16.0.7 release package for operations branch Merge remote-tracking branch 'origin/release/gfsv16.0.0' into release/gfsv16.0.0_to_ops * origin/release/gfsv16.0.0: (1073 commits) Reverting transfer parm file changes committed at 39bab45 Component tag updates for nwprod/gfsv16.0.7 Updated transfer parm files for gdas, enkf, and gfs dissemination Add config.resources.nco.static ecflow forecast job resource updates from NCO v16.0.7 install Add missing symlinks for WAFS source code folders Update EMC_gfs_wafs tag to gfs_wafs.v6.0.19 Remove KEEPDATA from config.base.nco.static Pull in config changes from NCO v16.0.7 install Pull in workflow changes from NCO v16.0.7 install Update EMC_verif-global tag to verif_global_v1.13.4 ecFlow resource adjustments from NCO for forecast and post jobs issue #257 shorten run time on Mars Dell1 file system Update Fit2Obs tag to newm.1.3 for bugfix Update EMC_verif-global tag for Hera bug Pull in nwpara/gfsv16.0.6 updates for parse-storm-type.pl Issue #1 and issue #238 - update Externals.cfg to match checkout.sh updates for v16.0.6 move errchk definition from script to job for wave prdgen and gempak adding definition of errchk which was undefined in these scripts Issue #1 and issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 Issue #1 and issue #241 - update EMC_verif-global tag Issue #1 and issue #238 - remove ak_10m grid from config.wave and update checkout.sh tags for ufs-weather-model and EMC_gfs_wafs Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 in Externals.cfg Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 Issue #1 and issue #226 - update exgfs_atmos_grib2_special_npoess.sh for dbn_alert issue #227 reducing output bufr files to 64 levels per NCO request issue #227 reducing output bufr files to 64 levels per NCO request Issue #1: update ecflow to be consistent with NCO's gfs.v16.0.4 and update checkout to bring in new UPP tag (see issue #226) Upaded ush script scale_dec.sh Updated scripts gfs_v16.0 Issue #1 - add grib_util module load to several analysis ecflow scripts Issue #1 - update WAFS tag to gfs_wafs.v6.0.17 for dbn_alert change Issue #1 - correct gridded wave parm files for v16.0.3 Issue #1 - changes from NCO for GFSv16.0.3 Issue #1 - update Externals.cfg with final tags for GFSv16.0.2 Issue #1 - correct permissions on jobs/rocoto/postsnd.sh Issue #1 - update gempak version to 7.3.3 in the ecflow gfs.ver file Issue #1 - update gempak and dumpjb versions to 7.3.3 and 5.1.0 respectively Script alert updates from NCO for wave downstream Add override for COMIN_WAV_RTOFS in emc mode for waveprep job Issue #197: place CDATE specific sections of config.anal and config.prep inside RUN_ENVIR=emc blocks. These sections are use for retrospective parallels and therefore do not need to be executed in operations (NCO). modified: JGLOBAL_FORECAST modified: JGLOBAL_FORECAST to make it work for both emc and nco running environments. modified: JGLOBAL_FORECAST A test showed that jobid is not defined in JGLOBAL_FORECAST running in the Rocoto environment. jobid is defined in ./env files. Defining DATA without sourcing ./env/$nachine.env caused the script to fail. Move the definitin of DATA after sourcing env parameters modified: checkout.sh to use WAFS tag gfs_wafs.v6.0.16 modified: checkout.sh to update UPP to upp_gfsv16_release.v1.1.1, a minor syntax bug fix modified: link_fv3gfs.sh to 1) use hard copies of external fix fields and executable for NCO installation 2) use soft links for all other files and directories for both NCO and EMC installations Compared local files in NCO implementation directory with release/gfs.v16.0.0 branch, changes made by NCO(Jen Yang) in the following files are either accepted or rejected. create a new branch release/gfsv16.0.0.nco to merge changes made by NCO in /gpfs/dell1/nco/ops/nwpara/gfs-v16/gfs.v16.0.1 back to EMC's repository update for the wave parm so that the wave model will look for the correct restart for when gfs is not run every cycle updates for checking if RTOFS files exist and only processing RTOFS files for needed fhr Issue #1 - update WAFS tag to gfs_wafs.v6.0.14 and update dumpjb version to 5.1.0 modified: jobs/JGFS_ATMOS_POSTSND and jobs/rocoto/postsnd.sh to remove redundant variables in the two scripts and make them work for both EMC and NCO parallels. Issue #1 - update WAFS tag to gfs_wafs.v6.0.13 Rename Release_Notes.gfs.v16.0.0.txt to Release_Notes.gfs.v16.0.0.md Issue #1 - update WAFS tag to gfs_wafs.v6.0.12 for removal of in-cloud turbulence per AWC Issue #1 - pull in corrected npe_eobs values in config.resources Issue #1 - update FV3 tag to GFS.v16.0.14 for Hera/Orion build support Issue #1 - adjust WAFS dependencies to wait for f036 post output Issue #1 - adding release notes for GFSv16 Issue #94 producing awips files with masks and deleting wmo headers for arctic ocean updates to add glo_30m to the created grib files for waves for awips processing Modify gfs/gdas post job to 20 minutes in wall clock. Issue #1 - update link_fv3gfs.sh to point to newly frozen fix_nco_gfsv16 FIX_DIR Modify two wafs jobs trigger as: jgfs_atmos_wafs_grib2 trigger ../../post/jgfs_atmos_post_f000 == complete jgfs_atmos_wafs_grib2_0p25 trigger ../../post/jgfs_atmos_post_f036 == complete Issue #1 - update WAFS tag to gfs_wafs.v6.0.10 and change WAFS job dependencies Issue #1 - update config.fv3 and config.resources with v16rt2 values Issue #1 - update gfs_util modulefiles Change config.resources for eobs for low resolution cases Issue #1 - update to fbwndgfs modulefiles for WCOSS-Dell and WCOSS-Cray updates to parm to reduce the number of wave variables changes to the config so that wave models are interpolated to the multi_1 masked files for the regional output grids Modify module for each job to match implementation package change Modify two wafs jobs trigger Modify wall clock and resource for running jobs in NCO Modify obsproc package location add a dependency for the wavepostpnt on wavepostbndpnt for just gfs as this job does not exist for gdas Issue #1 - update WAFS tag to gfs_wafs.v6.0.9 Issue #1 - remove POE/BACK block from config.prep and set POE=YES/BACK=off as defaults in env/WCOSS_DELL_P3.env prep section Issue #1 - remove unneeded DMPDIR and ICSDIR from config.base.nco.static for rocoto add a dependency to wavepostpnt job on wavepostbndpnt so that both jobs will not run at the same time which will slow both jobs down. This is the reason for the dependency, otherwise there is not a "true" dependency between the jobs Issue #1 - return POE=YES and BACK=off setting for prep on WCOSS_DELL_P3 Issue #1 - remove hardcoded POE and BACK values from config.prep Issue #1 - move ABIBF, AHIBF, and HDOB pointers into RUN_ENVIR=emc block Issue #1 - update config.fv3 based on real-time parallel Issue #1 - update prep job resources Issue #1 - update g2tmpl module load in modulefiles/module_base.wcoss_dell_p3 Issue #1 - config updates from real-time parallel Issue #1 - remove unneeded line in vrfy.sh and update link_fv3gfs.sh for UFS_UTILS execs Issue #1 - update GSI tag to gfsda.v16.0.0 Issue #1 - update component tags and modulefiles for nwtest lib updates, remove unneeded module load and modulefile from downstream wave job rocoto scripts Issue #1 - adjust error handling in wave rocoto job scripts issue #142 generate station i,j grid issue #142 generate station i,j grid issue #142 generate station i,j grid issue #142 add 6 bufr station data issue #142 add 6 bufr stations for Thailand TMD issue #145 change dev path to prod for parallel netcdf modules issue #145 change dev path to prod for parallel netcdf modules Issue #1 - updates for modules and small fixes reverting changes to configs that were not intented to be committed fix resource time estimates bug fix in exgfs_wave_post_pnt.sh update resources and trigger from 192->180 last of EE2 changes updates for EE2 from waves Issue #94 fix for failing silently Issue #1 - update WAFS tag to gfs_wafs.v6.0.8 Issue #94 add native grids as default grids Issue #1: update name of ncdiag executable and source code directory to be conistent cleaning up the rearranged scripts Jobs were tested with PDY 20200925, code managers from post, gempak, wave, and post process certified the test run result. Issue #1: update parm/config.vrfy to define VSDBJOBSH (used by jobs/rocoto/vrfy.sh) Code manager indicated all wafs jobs wall clock is 30 mins. Code manager indicated job card for scripts/gfs/atmos/gempak/jgfs_atmos_pgrb2_spec_gempak.ecf need to be changed The EMC realtime parallel does not use operational job settings. Ecflow job card roll back the setting from module_used_gfs-16_job google sheet document. Update GLDAS tag to gldas_gfsv16_release.v1.10.0 Update gfswafs job to run with loop over fcsthrs Issue #1: update vrfy.sh to submit vsdb processing as separate job (only on WCOSS_DELL_P3) Issue #94 add /fakedbn to run DBN_alerts Update config.awips for newly named JJOB scripts Update WAFS jobs/rocoto scripts to use new JJOB names Making J-Job naming change accourding to code manager. Remove temp files Update post.sh UPP JJOB script name to submit Modify each ecflow script with old j-job name for test. Update config.base.nco.static with config.base.emc.dyn changes Script name updates for sfc_prep and tracker Name change for tropcy scripts and update WAFS tag Fixing spelling mistake in config.gldas Updated drivers and release notes Updated scripts Update Externals.cfg with new UPP tag upp_gfsv16_release.v1.0.16. 1)Update sorc/checkout.sh with new UPP tag upp_gfsv16_release.v1.0.16. 2)Update sorc/link_fv3gfs.sh with new file name convention for jjob and ex-script of post processing part. Updated jobs name Update EMC_verif-global tag to verif_global_v1.11.0 Rename scripts to match ecf script naming convention. Add SENDDBN and DBNROOT. Update GLDAS tag. In anticipating changes from the GLDAS repo : renaming JGDAS_GLDAS to JGDAS_ATMOS_GLDAS, and exgdas_gldas.sh to exgdas_atmos_gldas.sh renamed: jobs/JGFS_POSTSND -> jobs/JGFS_ATMOS_POSTSND renamed: scripts/exgfs_postsnd.sh -> scripts/exgfs_atmos_postsnd.sh modified: docs/archive/README_bufr driver/product/run_postsnd.sh driver/product/run_postsnd.sh.cray driver/product/run_postsnd.sh.dell driver/product/run_postsnd.sh.hera driver/product/run_postsnd.sh.jet parm/config/config.postsnd renamed: scripts/exglobal_fcst_nemsfv3gfs.sh -> scripts/exglobal_forecast.sh and modified jobs/JGLOBAL_FORECAST parm/config/config.fcst updates for optimizing point jobs Issue #1 - update SEND variables and add DBNROOT to base configs and add check to build_enkf_chgres_recenter_nc.sh for GSI build Issue #1 - update to UFS_UTILS ops-gfsv16.0.0 tag Issue #1 - fix to link_fv3gfs.sh for new GLDAS tag Issue #131 Unify dbn_alert path Issue #1: update to UPP tag "upp_gfsv16_release.v1.0.15" Fix for running prep on Hera ecflow full day cycle included Update WAFS tag to gfs_wafs.v6.0.6 Small updates: - new UPP tag - new GLDAS tag - new WAFS tag - new module for WAFS - EE2 updates to awips scripts - added WAFS to archival - break downstream and WAFS archival into separate gfs_downstream tarball - update gfsarch dependencies to wait for all wavepost jobs to complete Issue #131 reduce scripts output to logfile Issue #131 added a path to DBNROOT Adding wafs wave and downstream jobs updates for by hour post Issue #1: add fhrgrp and fhrlst back to gfsawips in setup_workflow.py (bugfix) adding the line to go back a day for RTOFS for the if not NCO section because RTOFS will not be available until 06 cycle Restructured ecflow - up to post step deleted relocate_mv_nvortex.fd since storm relocation is no longer needed. modified build_tropcy_NEMS.sh to remove references to relocate_mv_nvortex Issue #1: correct DA typos in sorc/link_fv3gfs.sh Increase walltime for new wavepost jobs Issue #1: update name of DA jobs and scripts in accordance with WCOSS Implementation Standards Issue #94 add waves-prdgen, ICE->ICEC, Sleep in gempak script add gfs gempak downstream jobs into def file worked on wcoss ecflow script rename after redesign approved - not including all wave jobs Issue #1: clean up DA sections of link_fv3gfs.sh fix from Bhavani for having first wave grib file be set as a forecast instead of analysis fix from Bhavani for having first wave grib file be set as a forecast instead of analysis fix from Bhavani for having first wave grib file be set as a forecast instead of analysis ecflow gfs v16 nco review 3 updates to split boundary points plus saving config file updates Adding missing space to if-block in env files to resolve runtime failure Issue #1: remove pgrb2b.0p25 dependency from gfsawips in setup_workflow.py ecflow gfsv16 redesign 2 Issue #1 - update WAFS tag to gfs_wafs.v6.0.4 and remove HOURLY variable from WAFS configs Issue #1 - change wavegempak and waveawipsgridded dependency to match waveawipsbulls and start when wavepostsbs is complete Issue #1: set n_sponge=42 in gfs section of config.fcst adding pnt jobs as seperate jobs for env moving definitions of wavempexec and wave_mpmd from jobs to env Remove unneeded settings from config.post Added null DBNROOT to wave awips configs add extra script for by hour points for waves updates for boundary points by hour parallelization lowering the resource requirement for wave prep job Issue #1: rename enkf_chgres_recenter executables in accordance with WCOSS Implementation Standards modified: checkout.sh to use gldas_gfsv16_release.v1.6.0 update module for cdo Update to WAFS tag and added SENDDBN_NTC to both base configs modified: link_fv3gfs.sh to not link or copy 0readme fix_chem fix_fv3 fix_sfc_climo which are not used by GFS.v16 and are of large size modified: link_fv3gfs.sh to remove chgres_cube.fd and chgres_cube.fd in sorc/link_fv3gfs.sh modified: link_fv3gfs.sh to allow "fix" directories to be removed before rerunning link_fv3gfs.sh for RUN_ENVIR=nco case Added WAFS jobs to free-forecast mode, updates for extending WAFS to fh120, and two bug fixes in link_fv3gfs.sh and hpssarch_gen.sh Renamed global-workflow-owned ex-scripts to remove ecf extension and updated other scripts which call those ex-scripts Remove UFS_UTILS ecf extensions Issue #1: (1) update earc.sh directory removal to be consistent with arch.sh, (2) update config files to be consistent with EMC real-time GFS v16 parallel Remove ecf script name extensions from downstream wave scripts Add new downstream wave jobs to workflow Add new downstream WAFS jobs Issue #1 - update GLDAS and UPP workflow files for removal of ecf script extension Issue #1: remove ".ecf" suffix from DA scripts referenced in sorc/link_fv3gfs.sh Issue #1: remove ".ecf" extension from DA exscripts (as per WCOSS Implementation Standards) referenced from parm/config files updates to resources for wave jobs Issue #1: update name of DA enkf chgres script in config.echgres Issue #1: Rename DA enkf chgres job and script as per EE2 guidance Workflow changes for wave gempak and awips downstream jobs Fixing wavepostbndpnt dependency in setup_workflow_fcstonly.py ... * conflicts resolved Refs: #1 commit 384440ced59c18af777f7f9bb30016f3e71a1c31 Merge: 2f6d7ab06 fc727f405 Author: kate.friedman Date: Mon Mar 22 17:15:27 2021 +0000 Merge remote-tracking branch 'origin/develop' into feature/hpc-stack * origin/develop: Add two WAFS sorc folders to .gitignore Remove unneeded builds from build_all and partial build Delete unneeded files after workflow utils build was converted to cmake Remove global_chgres exec symlink from link_fv3gfs.sh Refs: #164 commit f35e6090bcf097355e691266bbc12ace6591c150 Merge: 5c77500bc fc727f405 Author: Kate.Friedman Date: Mon Mar 22 15:48:55 2021 +0000 Merge remote-tracking branch 'upstream/develop' into issue178 * upstream/develop: Add two WAFS sorc folders to .gitignore Remove unneeded builds from build_all and partial build Delete unneeded files after workflow utils build was converted to cmake Refs: #178 commit 5c77500bc4742a840a26f05aedffe2aca3e15ec7 Author: Kate.Friedman Date: Mon Mar 22 15:44:40 2021 +0000 Add exit in init.sh when C768 v16 warm starts detected Exit init.sh and init job when high res C768 v16 warm starts are detected and running chgres_cube is not needed. Refs: #178 commit 27e91128f62a7975f16f3fc932727444d1dc812c Author: kate.friedman Date: Thu Mar 18 20:54:22 2021 +0000 Reverting transfer parm file changes committed at 39bab45 - updates to the transfer parm files were erroneously committed after a diff between nwpara/gfsv16.0.7 and release/gfsv16.0.0 branch; v16.0.7 had been moved to nwprod/gfsv16.0.7 and transfer parm file diffs were not in final install - confirmed with SPA Jen that nwprod/gfsv16.0.7 is finalized (it is) - pulled in transfer parm files from nwprod/gfsv16.0.7 to sync them again Refs: #1,#238 commit 41c19e93f4b327b98a3e8b44245cbbfcde8f855b Author: kate.friedman Date: Tue Mar 16 19:37:44 2021 +0000 Component tag updates for nwprod/gfsv16.0.7 - Final nwprod implementation component tag versions set in Externals.cfg and checkout.sh - GLDAS: roll back to gldas_gfsv16_release.v1.12.0 - EMC_verif-global: roll back to verif_global_v1.11.0 - WAFS: update in Externals.cfg to gfs_wafs.v6.0.19 Notes about local nwprod install changes: - EMC_post: nwprod install shows upp_gfsv16_release.v1.1.1 tag but contains local updates found in upp_gfsv16_release.v1.1.3 tag - WAFS: nwprod install shows gfs_wafs.v6.0.17 tag but contains local updates found in gfs_wafs.v6.0.19 tag Refs: #1,#238 commit 39bab455137a473be19cfdf93d62af41a069f0cf Author: kate.friedman Date: Tue Mar 16 18:36:08 2021 +0000 Updated transfer parm files for gdas, enkf, and gfs dissemination Refs: #1,#238 commit fc727f405afd4948ee99be1c13c9f2541405cc8b Merge: 258b342d5 7582541c3 Author: Kate Friedman Date: Wed Mar 10 16:40:18 2021 -0500 Merge pull request #288 from NOAA-EMC/feature/issue272 Post-cmake cleanup and decommissioning commit 7582541c3b4ec182756ad1fa9164c21e0345f058 Author: kate.friedman Date: Wed Mar 10 20:08:43 2021 +0000 Add two WAFS sorc folders to .gitignore - two missing WAFS symlinks were added to link_fv3gfs.sh in prior commit; include them in gitignore file now Refs: #272 commit 4f7243bc68164faf0008893467c5a2ea53d216ae Author: Kate.Friedman Date: Tue Mar 9 18:07:23 2021 +0000 Remove global_chgres exec from link_fv3gfs.sh; no longer exists from UFS_UTILS Refs: #178 commit fcd720edef1fe242c27d543f445bb3b4ee4fe9ec Author: Kate.Friedman Date: Tue Mar 9 17:54:51 2021 +0000 Remove unneeded UFS_UTILS symlinks in link_fv3gfs.sh Refs: #178 commit 2f6d7ab06b3be6eaedb3406efca77ded61ef7aca Author: kate.friedman Date: Tue Mar 9 17:41:14 2021 +0000 Module base updates for WCOSS-Dell, Hera, and Orion - add zlib module load - reorder wgrib2, hdf5, and netcdf module loads to accommodate module dependencies Refs: #164 commit 1285d803fd402945ebc03eb42eb8bfa3d2aa10da Author: kate.friedman Date: Tue Mar 9 10:59:09 2021 -0600 Update GSI checkout to clone GSI-master @ 9c1fc15 Refs: #164 commit 14736c8320bec43651208950c16ea85ae2372985 Merge: e6a9e5767 bea02f8a6 Author: Kate.Friedman Date: Tue Mar 9 16:56:42 2021 +0000 Merge branch 'feature/hpc-stack' of https://github.com/NOAA-EMC/global-workflow into feature/hpc-stack * 'feature/hpc-stack' of https://github.com/NOAA-EMC/global-workflow: Correct if-block syntax in config.postsnd and config.wavepostbndpnt after testing setup scripts FHMAX_WAV_IBP variable check for wavepostbndpnt job Bufr sounding job update Add config.resources.nco.static ecflow forecast job resource updates from NCO v16.0.7 install Update EMC_verif-global tag to verif_global_v1.13.5 Add missing symlinks for WAFS source code folders Update EMC_gfs_wafs tag to gfs_wafs.v6.0.19 Remove KEEPDATA from config.base.nco.static Pull in config changes from NCO v16.0.7 install Pull in workflow changes from NCO v16.0.7 install Update EMC_verif-global tag to verif_global_v1.13.4 ecFlow resource adjustments from NCO for forecast and post jobs issue #257 shorten run time on Mars Dell1 file system commit e6a9e576744a1c245148bdc4b967a5674c9416b5 Author: Kate.Friedman Date: Tue Mar 9 16:55:41 2021 +0000 Remove UFS_UTILS symlinks no longer needed in link_fv3gfs.sh Refs: #164 commit 370e81474ce8f4076b0853b37de7da9c65d65c88 Merge: 364e46ff2 258b342d5 Author: Kate.Friedman Date: Tue Mar 9 16:14:40 2021 +0000 Merge remote-tracking branch 'upstream/develop' into issue178 * upstream/develop: Correct if-block syntax in config.postsnd and config.wavepostbndpnt after testing setup scripts FHMAX_WAV_IBP variable check for wavepostbndpnt job Bufr sounding job update Add config.resources.nco.static ecflow forecast job resource updates from NCO v16.0.7 install Update EMC_verif-global tag to verif_global_v1.13.5 Add missing symlinks for WAFS source code folders Update EMC_gfs_wafs tag to gfs_wafs.v6.0.19 Remove KEEPDATA from config.base.nco.static Pull in config changes from NCO v16.0.7 install Pull in workflow changes from NCO v16.0.7 install remove flags that were not present in Makefiles update jasper to 2.x.25. remove compiler flag in fv3nc2nemsio Update EMC_verif-global tag to verif_global_v1.13.4 another use of _d where an _4 is needed Adjust how target is set for build_workflow_utils Add workflow_utils to build_all and link scripts copy/paste error from enkf_chgres_recenter.fd to enkf_chgres_recenter_nc.fd. When going from nemsio to netcdf, the linking of ip, sp and w3nco changed from _d to _4. update .gitignore to exclude build and install directories as well as compiled files. bugfix in build_workflow_utils.sh hack. nceplibs-ncio now creates the module ncio and not fv3gfs_ncio. Update EMC_verif-global tag to verif_global_v1.13.4 add cmake build capability for workflow utilities ecFlow resource adjustments from NCO for forecast and post jobs issue #257 shorten run time on Mars Dell1 file system Refs: #178 commit 364e46ff2acabed7bd9f6cb07ca10aa19033a980 Author: Kate.Friedman Date: Tue Mar 9 16:08:57 2021 +0000 Add pull of gdas wave restart files in getic.sh if DO_WAVE=YES Refs: #178 commit bea02f8a6fc496794471e57aa75e030092027bd5 Merge: fd50508f8 258b342d5 Author: kate.friedman Date: Mon Mar 8 14:02:51 2021 -0600 Merge remote-tracking branch 'origin/develop' into feature/hpc-stack * origin/develop: Correct if-block syntax in config.postsnd and config.wavepostbndpnt after testing setup scripts FHMAX_WAV_IBP variable check for wavepostbndpnt job Bufr sounding job update Add config.resources.nco.static ecflow forecast job resource updates from NCO v16.0.7 install Update EMC_verif-global tag to verif_global_v1.13.5 Add missing symlinks for WAFS source code folders Update EMC_gfs_wafs tag to gfs_wafs.v6.0.19 Remove KEEPDATA from config.base.nco.static Pull in config changes from NCO v16.0.7 install Pull in workflow changes from NCO v16.0.7 install Update EMC_verif-global tag to verif_global_v1.13.4 ecFlow resource adjustments from NCO for forecast and post jobs issue #257 shorten run time on Mars Dell1 file system Refs: #164 commit e9e1f3ba976f053c6738d95d6de673a065d293c1 Author: kate.friedman Date: Mon Mar 8 19:54:24 2021 +0000 Remove unneeded builds from build_all and partial build - remove build sections in build_all.sh that ran builds that are now consolidated into build_workflow_utils.sh - remove build options in partial build script and config that are now consolidated into workflow_utils build Refs: #272 commit 26fa8c355c241a64d19097da3caa54cba0e46b77 Author: kate.friedman Date: Mon Mar 8 19:38:45 2021 +0000 Delete unneeded files after workflow utils build was converted to cmake - remove modulefiles that are no longer needed; consolidated into new workflow_utils.* modulefiles - remove build scripts that are no longer needed; consolidated into new build_workflow_utils.sh script Refs: #272 commit 258b342d5b6535cf87973105d770a63f4245d44a Merge: f6aa69393 729631d66 Author: Kate Friedman Date: Mon Mar 8 12:59:46 2021 -0500 Merge pull request #282 from NOAA-EMC/feature/issue238 GFSv16.0.7 changes from NCO commit 729631d66f72ba8a3929e4927129d000879c9a1b Author: kate.friedman Date: Mon Mar 8 17:40:17 2021 +0000 Correct if-block syntax in config.postsnd and config.wavepostbndpnt after testing setup scripts Refs: #238 commit a1edf0de4deaccbf7f77f2fb4d24d1ca96c26171 Author: kate.friedman Date: Mon Mar 8 17:21:05 2021 +0000 FHMAX_WAV_IBP variable check for wavepostbndpnt job - add variable override in exgfs_wave_post_bndpnt.sh for FHMAX_WAV_IBP - add check to config.wavepostbndpnt for when FHMAX_GFS is less than FHMAX_WAV_IBP; set FHMAX_WAV_IBP to equal FHMAX_GFS when shorter gfs forecast than 180hrs; resolves runtime error with wavepostbndpnt job waiting for forecast output that will never arrive Refs: #238 commit ac76613f33f7d196a1d04972bc7c975d579da571 Merge: 0f97ccdad f6aa69393 Author: anning.cheng Date: Mon Mar 8 10:09:47 2021 -0600 Merge remote-tracking branch 'upstream/develop' into merra2 * upstream/develop: remove flags that were not present in Makefiles update jasper to 2.x.25. remove compiler flag in fv3nc2nemsio Update EMC_verif-global tag to verif_global_v1.13.4 another use of _d where an _4 is needed Adjust how target is set for build_workflow_utils Add workflow_utils to build_all and link scripts copy/paste error from enkf_chgres_recenter.fd to enkf_chgres_recenter_nc.fd. When going from nemsio to netcdf, the linking of ip, sp and w3nco changed from _d to _4. update .gitignore to exclude build and install directories as well as compiled files. bugfix in build_workflow_utils.sh hack. nceplibs-ncio now creates the module ncio and not fv3gfs_ncio. add cmake build capability for workflow utilities Update Fit2Obs tag to newm.1.3 for bugfix Update Fit2Obs tag to newm.1.3 for bugfix Update EMC_verif-global tag for Hera bug Pull in nwpara/gfsv16.0.6 updates for parse-storm-type.pl HOTFIX: Update EMC_verif-global tag for Hera bug Issue #1 and issue #238 - update Externals.cfg to match checkout.sh updates for v16.0.6 move errchk definition from script to job for wave prdgen and gempak adding definition of errchk which was undefined in these scripts Issue #179 and issue #243 - update Fit2Obs to newm.1.2 tag and correct COMROOT path for Hera HOTFIX: Issue #241 - update EMC_verif-global tag to remove use of /tmp space Issue #1 and issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 Issue #1 and issue #241 - update EMC_verif-global tag Issue #1 and issue #238 - remove ak_10m grid from config.wave and update checkout.sh tags for ufs-weather-model and EMC_gfs_wafs Issue #179 - update to config.vrfy for Fit2Obs tag which supports Orion Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 in Externals.cfg Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 Issue #233 - remove unnecessary extra space in tag line for gldas Issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 Issue #1 and issue #226 - update exgfs_atmos_grib2_special_npoess.sh for dbn_alert modified: exglobal_forecast.sh The breakpoint restart only works for the first restart from a breakpoint. Restart files written in RERUN_RESTRAT after the first restart has a 3-hour time shift for DO_IAU=YES cases. Forecasts starting from the 2nd breakpoint and beyond will fail becasue of incorrect initial conditins. This commit fixes this bug. issue #227 reducing output bufr files to 64 levels per NCO request issue #227 reducing output bufr files to 64 levels per NCO request Issue #1: update ecflow to be consistent with NCO's gfs.v16.0.4 and update checkout to bring in new UPP tag (see issue #226) Upaded ush script scale_dec.sh Updated scripts gfs_v16.0 Issue #1 and issue #220 - set C192/C96/C48 npe_eobs back to dev values for develop Issue #1 - add grib_util module load to several analysis ecflow scripts Issue #189 - update ufs-weather-model hash Issue #201 - workaround for failing post000 job before hpc-stack solution Issue #1 - update WAFS tag to gfs_wafs.v6.0.17 for dbn_alert change Issue #1 - correct gridded wave parm files for v16.0.3 Issue #1 - changes from NCO for GFSv16.0.3 Issue #1 - update Externals.cfg with final tags for GFSv16.0.2 Fixes for issue #202 (FINDDATE) and issue #208 (postsnd.sh permissions) Issue #1 - correct permissions on jobs/rocoto/postsnd.sh Issue #1 - update gempak version to 7.3.3 in the ecflow gfs.ver file Issue #1 - update gempak and dumpjb versions to 7.3.3 and 5.1.0 respectively Script alert updates from NCO for wave downstream Add override for COMIN_WAV_RTOFS in emc mode for waveprep job Issue #197: place CDATE specific sections of config.anal and config.prep inside RUN_ENVIR=emc blocks. These sections are use for retrospective parallels and therefore do not need to be executed in operations (NCO). modified: JGLOBAL_FORECAST modified: JGLOBAL_FORECAST to make it work for both emc and nco running environments. modified: JGLOBAL_FORECAST A test showed that jobid is not defined in JGLOBAL_FORECAST running in the Rocoto environment. jobid is defined in ./env files. Defining DATA without sourcing ./env/$nachine.env caused the script to fail. Move the definitin of DATA after sourcing env parameters modified: checkout.sh to use WAFS tag gfs_wafs.v6.0.16 modified: checkout.sh to update UPP to upp_gfsv16_release.v1.1.1, a minor syntax bug fix modified: link_fv3gfs.sh to 1) use hard copies of external fix fields and executable for NCO installation 2) use soft links for all other files and directories for both NCO and EMC installations Compared local files in NCO implementation directory with release/gfs.v16.0.0 branch, changes made by NCO(Jen Yang) in the following files are either accepted or rejected. create a new branch release/gfsv16.0.0.nco to merge changes made by NCO in /gpfs/dell1/nco/ops/nwpara/gfs-v16/gfs.v16.0.1 back to EMC's repository update for the wave parm so that the wave model will look for the correct restart for when gfs is not run every cycle updates for checking if RTOFS files exist and only processing RTOFS files for needed fhr commit b644f792bbb939d6ab25957b93f812aa02b497a9 Author: kate.friedman Date: Mon Mar 8 15:07:34 2021 +0000 Bufr sounding job update - set DO_BUFRSND to NO by default - in config.postsnd, if FHMAX_GFS is less than 180 then set DO_BUFRSND to FHMAX_GFS Refs: #238 commit 86b0345a550a7128fd6420befcb793a94411e4db Author: Kate.Friedman Date: Mon Mar 8 14:09:40 2021 +0000 Add pull of IAU increment files off HPSS for free-forecast Refs: #178 commit efdf917a843cc301a2fe7d5386aea1e29dd02c46 Author: Kate.Friedman Date: Fri Mar 5 21:29:22 2021 +0000 Update in wave prep script and add ability to pull warm starts - Update getic job to detect warm start config info and pull warm start RESTART files off HPSS and place in ROTDIR; just for retro ICs, will add ops after implementation - Add check to JGLOBAL_WAVE_PREP for prior cycle rtofs ROTDIR symlink; normally cycled mode would have already created this during prior cycle so added check for use in free-forecast mode Refs: #178 commit 65fce4ce9b2d7e63a0bd038fff1a206f8b4a5815 Merge: 084cb6aac 9027452bf Author: kate.friedman Date: Fri Mar 5 17:13:37 2021 +0000 Merge remote-tracking branch 'origin/release/gfsv16.0.0' into feature/issue238 * origin/release/gfsv16.0.0: Add config.resources.nco.static ecflow forecast job resource updates from NCO v16.0.7 install Refs: #238 commit 9027452bfd5345b89bc09656eb28211ca15fe171 Author: kate.friedman Date: Fri Mar 5 17:01:25 2021 +0000 Add config.resources.nco.static - added parm/config/config.resources.nco.static; contains resources for operations - added copy of config.resources.nco.static in link_fv3gfs.sh when nco mode Refs: #1,#238 commit 9ccb24c73e85119901075341c2aaa81b623e6104 Author: kate.friedman Date: Fri Mar 5 15:43:32 2021 +0000 ecflow forecast job resource updates from NCO v16.0.7 install Refs: #1,#238 commit be0ed38a53d2422923ccd5380d610785e61deafa Author: Kate.Friedman Date: Thu Mar 4 18:06:24 2021 +0000 Consolidate/cleanup init config and script Refs: #178 commit d32199cd58329b4b2c9c5c3e84e7d8d0801305e0 Author: Kate.Friedman Date: Thu Mar 4 17:43:58 2021 +0000 Move getic/init settings from scripts to configs - consolidate RETRO variable in config.getic - move configuration settings from getic/init scripts to configs - add dependency to setup_workflow_fcstonly.py - add getic and init to task list at top of config.resources Refs: #178 commit 084cb6aacc0c65440c5fecd3010a1b691ee98d87 Author: kate.friedman Date: Thu Mar 4 15:22:42 2021 +0000 Update EMC_verif-global tag to verif_global_v1.13.5 Refs: #238,#279 commit fd50508f84d3ec721747a069412c929b7269a602 Author: kate.friedman Date: Thu Mar 4 08:43:37 2021 -0600 hpc-stack updates for Orion - update OznMon and RadMon modulefiles - update module_base.orion - update Orion if-block in machine-setup.sh - remove duplicate module use for WCOSS-Dell in machine-setup.sh Refs: #164 commit 95ec834eb3192b12cae979ef5696b9670cc84b72 Author: kate.friedman Date: Thu Mar 4 14:35:43 2021 +0000 hpc-stack updates for WCOSS-Dell - update OznMon, Radmon modulefiles - update module_base.wcoss_dell_p3 - remove WW3 execs from link_fv3gfs.sh; will come from new build script - update wcoss_dell_p3 section of machine-setup.sh for hpc-stack - update checkout.sh for hpc-stack supported components (some test versions) Refs: #164 commit 0f97ccdadbf36ab02fea69933531fb0de878d0c5 Merge: 960ca42f0 1ea07da4b Author: anning.cheng Date: Mon Mar 1 10:53:55 2021 -0600 Merge branch 'merra2' of https://github.com/AnningCheng-NOAA/global-workflow into merra2 * 'merra2' of https://github.com/AnningCheng-NOAA/global-workflow: testing merra2 workflow in hera commit 960ca42f0999f882a2e4dc59d105edef9e7a0fe0 Author: anning.cheng Date: Mon Mar 1 10:53:14 2021 -0600 updated config.fcst commit 428e1ba753ba3151cc284482b828f1d14a394567 Merge: 7e2693626 25152a1dc Author: kate.friedman Date: Mon Mar 1 16:04:08 2021 +0000 Merge remote-tracking branch 'origin/release/gfsv16.0.0' into feature/issue238 * origin/release/gfsv16.0.0: Add missing symlinks for WAFS source code folders Update EMC_gfs_wafs tag to gfs_wafs.v6.0.19 Refs: #1,#238 commit 25152a1dce8316673c044c37c9362f297235aaf8 Author: kate.friedman Date: Fri Feb 26 20:45:59 2021 +0000 Add missing symlinks for WAFS source code folders - added symlinks in link_fv3gfs.sh for wafs_blending_0p25.fd and wafs_grib2_0p25.fd Refs: #1,#238 commit 80e4a39a3cf96c9fa69636ed9aab30f04e170da0 Author: kate.friedman Date: Fri Feb 26 19:45:07 2021 +0000 Update EMC_gfs_wafs tag to gfs_wafs.v6.0.19 - new tag includes changes made locally in NCO nwpara/gfsv16.0.7 install Refs: #1,#238 commit 7e2693626c9c9ef0e625ea09da6f7c60a62746d4 Merge: 2beea1293 264e51f4b Author: kate.friedman Date: Wed Feb 24 21:21:17 2021 +0000 Merge remote-tracking branch 'origin/release/gfsv16.0.0' into feature/issue238 * origin/release/gfsv16.0.0: Remove KEEPDATA from config.base.nco.static commit 2beea12934ecd2d374a6a411733e86bc6343d721 Merge: f6aa69393 378625624 Author: kate.friedman Date: Wed Feb 24 21:20:34 2021 +0000 Merge remote-tracking branch 'origin/release/gfsv16.0.0' into feature/issue238 * origin/release/gfsv16.0.0: Pull in config changes from NCO v16.0.7 install Pull in workflow changes from NCO v16.0.7 install Update EMC_verif-global tag to verif_global_v1.13.4 ecFlow resource adjustments from NCO for forecast and post jobs issue #257 shorten run time on Mars Dell1 file system commit 264e51f4b2e602433bab7c6f968164a550d5b644 Author: kate.friedman Date: Wed Feb 24 21:01:59 2021 +0000 Remove KEEPDATA from config.base.nco.static - NCO requested that KEEPDATA be removed from config.base and config.fcst since KEEPDATA gets set at the ecflow level and shouldn't be changed by the configs lower down. - Already commented out in config.fcst in prior commit. - Removed KEEPDATA from config.base.nco.static since it becomes config.base in prod mode with ecflow. - Retaining KEEPDATA in config.base.emc.dyn since that only becomes config.base in dev mode (rocoto doesn't set KEEPDATA). Refs: #1,#238 commit 3786256240e76982c54a5be6d8a7277530d9dd47 Author: kate.friedman Date: Wed Feb 24 17:37:36 2021 +0000 Pull in config changes from NCO v16.0.7 install - add line to config.fcst to allow running gdas and gfs with different threading - add nth_fv3_gfs to config.fv3 to support different threading for gfs - changes to post settings in config.resources to make post use all tasks on a node and speed up post jobs Refs: #1,#238 commit 9629e98bf1f34fb36b785092988e8335a53172df Author: kate.friedman Date: Wed Feb 24 15:45:07 2021 +0000 Pull in workflow changes from NCO v16.0.7 install - ecflow forecast scripts changes for resources - fixes to prdgen wave scripts Refs: #1,#238 commit d41796ae9d7024624078c5972aed032eea25ca65 Author: Kate.Friedman Date: Tue Feb 23 18:37:10 2021 +0000 Updates from testing on Hera - add WGRIB2 setenv to module_base.hera; wgrib2 was unknown in post jobs without - set RUN_CCPP default to YES; should be running with CCPP now, consider removing variable Refs: #164 commit 2cce21a86a4e95b0f608eb21fcff857e61a20ca5 Merge: af971d76b f6aa69393 Author: kate.friedman Date: Mon Feb 22 10:09:33 2021 -0600 Merge remote-tracking branch 'origin/develop' into feature/hpc-stack * origin/develop: remove flags that were not present in Makefiles update jasper to 2.x.25. remove compiler flag in fv3nc2nemsio Update EMC_verif-global tag to verif_global_v1.13.4 another use of _d where an _4 is needed Adjust how target is set for build_workflow_utils Add workflow_utils to build_all and link scripts copy/paste error from enkf_chgres_recenter.fd to enkf_chgres_recenter_nc.fd. When going from nemsio to netcdf, the linking of ip, sp and w3nco changed from _d to _4. update .gitignore to exclude build and install directories as well as compiled files. bugfix in build_workflow_utils.sh hack. nceplibs-ncio now creates the module ncio and not fv3gfs_ncio. add cmake build capability for workflow utilities Update Fit2Obs tag to newm.1.3 for bugfix Update Fit2Obs tag to newm.1.3 for bugfix Update EMC_verif-global tag for Hera bug Pull in nwpara/gfsv16.0.6 updates for parse-storm-type.pl HOTFIX: Update EMC_verif-global tag for Hera bug Issue #1 and issue #238 - update Externals.cfg to match checkout.sh updates for v16.0.6 move errchk definition from script to job for wave prdgen and gempak adding definition of errchk which was undefined in these scripts Issue #1 and issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 Issue #1 and issue #241 - update EMC_verif-global tag Issue #1 and issue #238 - remove ak_10m grid from config.wave and update checkout.sh tags for ufs-weather-model and EMC_gfs_wafs Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 in Externals.cfg Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 Issue #1 and issue #226 - update exgfs_atmos_grib2_special_npoess.sh for dbn_alert issue #227 reducing output bufr files to 64 levels per NCO request issue #227 reducing output bufr files to 64 levels per NCO request Issue #1: update ecflow to be consistent with NCO's gfs.v16.0.4 and update checkout to bring in new UPP tag (see issue #226) Upaded ush script scale_dec.sh Updated scripts gfs_v16.0 Conflicts: Externals.cfg sorc/checkout.sh Refs: #164 commit f6aa69393dbd9e3f99d9d9ee803e4e0c9ea3d1a3 Merge: 2d055914e 1d7776d66 Author: Kate Friedman Date: Fri Feb 19 10:15:41 2021 -0500 Merge pull request #264 from NOAA-EMC/feature/cmake Build workflow utilities with CMake. commit 1d7776d66344a0b7423d64ae6b7f221f51472a46 Author: Rahul Mahajan Date: Fri Feb 19 10:06:57 2021 -0500 remove flags that were not present in Makefiles commit d3df2ea9a67d149d4b3f2b85fd22cade380ac928 Author: Rahul Mahajan Date: Thu Feb 18 10:53:33 2021 -0500 update jasper to 2.x.25. remove compiler flag in fv3nc2nemsio commit 2d055914e5c67e3e93f2ae93597a898b27dc76e4 Merge: 0e29b80df f2ba50e08 Author: Kate Friedman Date: Thu Feb 18 10:51:04 2021 -0500 Merge pull request #271 from NOAA-EMC/issue266 Update EMC_verif-global tag to verif_global_v1.13.4 commit f2ba50e083b3afff2574f3c1fa9d362d77d8ce03 Author: kate.friedman Date: Thu Feb 18 15:35:49 2021 +0000 Update EMC_verif-global tag to verif_global_v1.13.4 - Added missing environment variable in ush/run_verif_global_in_global_workflow.sh - Updated ush/run_verif_global_in_global_workflow.sh and ush/set_up_verif_global.sh to point to new archive directory locations Refs: #266 commit 522af45f29a316f0cd88f2cfb0a1e2f704e0d3d5 Author: Rahul Mahajan Date: Wed Feb 17 15:57:47 2021 -0500 another use of _d where an _4 is needed commit 8e90d448ac6fe55ba40fc1a19c818738c9443426 Author: Kate.Friedman Date: Wed Feb 17 20:44:49 2021 +0000 Adjust how target is set for build_workflow_utils - Add $target to build_workflow_utils.sh command in build_all.sh - Move machine-setup source back down into if-block in build_workflow_utils.sh Refs: #264 commit 7c856bf3d8e1ac13c0c1c2eab805836289b7b0bc Author: Kate.Friedman Date: Wed Feb 17 18:56:19 2021 +0000 Add workflow_utils to build_all and link scripts - add build_workflow_utils.sh to build_all.sh - add workflow utils exec symlinks to link_fv3gfs.sh since these execs no longer land in /exec folder - add workflow_utils build to partial_build.sh and fv3gfs_build.cfg for use by build_all - turn off builds in fv3gfs_build.cfg that are now covered by workflow_utils build - move machine-setup source in build_workflow_utils.sh before target is needed Further cleanup and decommissioning of consolidated builds will come in follow-up commit/PR. Refs: #264 commit ccba5ee2edf8595f8d4a12d3cd956f1d0d4f1c83 Author: Rahul Mahajan Date: Wed Feb 17 11:18:06 2021 -0500 copy/paste error from enkf_chgres_recenter.fd to enkf_chgres_recenter_nc.fd. When going from nemsio to netcdf, the linking of ip, sp and w3nco changed from _d to _4. commit 1d26a83b2824d646bc1483c18496787b6ceb7672 Author: Rahul Mahajan Date: Tue Feb 16 13:07:07 2021 -0600 update .gitignore to exclude build and install directories as well as compiled files. bugfix in build_workflow_utils.sh hack. nceplibs-ncio now creates the module ncio and not fv3gfs_ncio. commit bd103a1a017173694d6e10822ab5a55b4ce1da67 Author: kate.friedman Date: Tue Feb 16 16:43:58 2021 +0000 Update EMC_verif-global tag to verif_global_v1.13.4 - Added missing environment variable in ush/run_verif_global_in_global_workflow.sh - Updated ush/run_verif_global_in_global_workflow.sh and ush/set_up_verif_global.sh to point to new archive directory locations Refs: #1,#266 commit 3a6b186904a9d8e6cdc5d89e80c23094a70717ad Author: Rahul Mahajan Date: Sun Feb 14 19:50:56 2021 -0500 add cmake build capability for workflow utilities commit 181606755de789d1764d1f21a5a2e72ea302da34 Author: Kate.Friedman Date: Fri Feb 12 14:19:51 2021 +0000 Updates for archival, NSST, and v16 retros - add variables: MODE to dilineate free-forecast and cycled modes; RETRO variable to toggle between v16 ops and retro inputs - update arch step to archive INPUT files instead of RESTART files when in free (free-forecast) mode; other small fixes to arch step - set NSST to spinup before availability date - added support for running off v16 retrospective inputs - fix missing bufrsnd job in free-forecast mode - update resource settings for C48 and C96; further refinement coming Refs: #178 commit 1f0be181e9a84ee5c5ddef927c4b3c2c03c430dd Author: kate.friedman Date: Thu Feb 11 19:11:11 2021 +0000 ecFlow resource adjustments from NCO for forecast and post jobs Refs: #1,#238 commit 10ed5f1152c385a4d19864ac5924b77dd66dc75e Author: Kate.Friedman Date: Tue Feb 9 19:08:38 2021 +0000 Add wave jobs to arch job dependencies Refs: #178 commit 77d7408b759a761d1697ad672dd4feae14d9c5b1 Author: Kate.Friedman Date: Tue Feb 9 18:49:05 2021 +0000 Move GFSv16 version date and set C96 to use 4 threads - change config.fv3 to use 4 threads for C96 (too few nodes with 1 thread) - update GFSv16 version if-block date in getic and init scripts to use updated/tentative implementation date; update when finalized Refs: #178 commit 1ea07da4b138f271772ed216b18233ac0d7b6e39 Author: anning.cheng Date: Tue Feb 9 02:20:22 2021 -0500 testing merra2 workflow in hera commit 613a181c040682dfb41997c64c2d220a33eeecbe Author: Kate.Friedman Date: Thu Feb 4 20:57:07 2021 +0000 Adjusting from testing - add COMPONENT setting back into getic.sh - add gfsinit as dependency to gfswaveprep since UFS_UTILS gdas_init scripts remove the atmos folder Refs: #178 commit 7a34968e3a66fc31127de1450d5ce194d9b9681b Author: kate.friedman Date: Thu Feb 4 14:32:30 2021 -0600 Small adjustments from testing - add needed exports in getic.sh - add check to init for whether it needs to run - add check to init for copying pgbanl files when getic doesn't run - remove atmos subfolder from init dependencies for older versions Refs: #178 commit ed74d83b64cbc98a36698dfb39b98fc860892ea4 Author: kate.friedman Date: Thu Feb 4 13:28:59 2021 -0600 Adjustments for Orion, dependencies, and using DATA folder - update getic and init jobs to use DATA folder and ROTDIR - move pgb copy back to getic job since it now dumps into ROTDIR - update setup_workflow_fcstonly.py to turn off getic on Orion and adjust dependencies for init for input files from supported versions Refs: #178 commit 28267e7b66932e69338fb41d3dc338a3d27192dd Merge: 1871c7a95 a2ae84fa5 Author: Kate Friedman Date: Thu Feb 4 11:23:34 2021 -0500 Merge pull request #258 from GuangPingLou-NOAA/release/gfsv16.0.0 Issue #257 shorten run time of postsnd job on WCOSS-Dell commit a2ae84fa532c60496c87419b9e90766a2cd7e659 Author: Guang.Ping.Lou Date: Thu Feb 4 15:45:58 2021 +0000 issue #257 shorten run time on Mars Dell1 file system commit b414ea34ae9b11c33f6070a1687732e05e6e10f2 Merge: abdc1334e 0e29b80df Author: Kate.Friedman Date: Wed Feb 3 19:38:17 2021 +0000 Merge remote-tracking branch 'upstream/develop' into issue178 * upstream/develop: Update Fit2Obs tag to newm.1.3 for bugfix Update Fit2Obs tag to newm.1.3 for bugfix Update EMC_verif-global tag for Hera bug Pull in nwpara/gfsv16.0.6 updates for parse-storm-type.pl HOTFIX: Update EMC_verif-global tag for Hera bug Issue #1 and issue #238 - update Externals.cfg to match checkout.sh updates for v16.0.6 move errchk definition from script to job for wave prdgen and gempak adding definition of errchk which was undefined in these scripts Issue #179 and issue #243 - update Fit2Obs to newm.1.2 tag and correct COMROOT path for Hera HOTFIX: Issue #241 - update EMC_verif-global tag to remove use of /tmp space Issue #1 and issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 Issue #1 and issue #241 - update EMC_verif-global tag Issue #1 and issue #238 - remove ak_10m grid from config.wave and update checkout.sh tags for ufs-weather-model and EMC_gfs_wafs Issue #179 - update to config.vrfy for Fit2Obs tag which supports Orion Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 in Externals.cfg Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 Issue #233 - remove unnecessary extra space in tag line for gldas Issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 Issue #1 and issue #226 - update exgfs_atmos_grib2_special_npoess.sh for dbn_alert issue #227 reducing output bufr files to 64 levels per NCO request issue #227 reducing output bufr files to 64 levels per NCO request Issue #1: update ecflow to be consistent with NCO's gfs.v16.0.4 and update checkout to bring in new UPP tag (see issue #226) Upaded ush script scale_dec.sh Updated scripts gfs_v16.0 Refs: #178 commit abdc1334e3c58d40977b20fb7acabd4c14a80cf6 Author: Kate.Friedman Date: Wed Feb 3 19:28:44 2021 +0000 Further init updates for free-forecast mode - move COMPONENT setting from getic to init job - cleanup how getic job sets tarball paths and pulls pgbanl files - move second step of pgbanl pull to init job for consistency - add MODE variable to config.base and its definition to setup scripts - add MODE setting to config.base if-block that adjusts IAU variables - add missing COMPONENT subfolder to data dependencies for getic and init jobs in setup_workflow_fcstonly.py - remove unneeded commented out wavestat job from setup_workflow_fcstonly.py Refs: #178 commit 29bd69b7545b155e3d19e86031b7e4e225195233 Author: anning.cheng Date: Tue Feb 2 15:04:13 2021 -0600 update merra2 before a new pull request commit 0e29b80df492677380fba6adf1e73d0efba21f3a Merge: 4ffed84c2 9f3c6dffe Author: Kate Friedman Date: Tue Feb 2 13:30:58 2021 -0500 Merge pull request #253 from NOAA-EMC/issue240 NCO updates for GFSv16.0.4[5][6] commit 9f3c6dffe14d2e50eec8e9406c220d740bf0ea3d Merge: 446a3274a 1871c7a95 Author: kate.friedman Date: Tue Feb 2 16:32:47 2021 +0000 Merge remote-tracking branch 'origin/release/gfsv16.0.0' into issue240 SPA Jen and Qingfu corrected ush/parse-storm-type.pl. Pulled this into release/gfsv16.0.0 for v16.0.6. Refs: #240 commit 446a3274affb7a82c0804d33191b6552b9a7899f Merge: 8e0d1ad58 4ffed84c2 Author: kate.friedman Date: Tue Feb 2 16:27:08 2021 +0000 Merge remote-tracking branch 'origin/develop' into issue240 Sync merge with develop branch to get up-to-date. Refs: #240 commit af971d76b2c62aa27d7e989877805a1950e52982 Author: Kate.Friedman Date: Mon Feb 1 17:40:21 2021 +0000 Updates for hpc-stack - Remove unneeded ignores from .gitignore - Update Externals.cfg and checkout.sh for component stack versions - Update link_fv3gfs.sh for changed component links - Further Hera module updates for hpc-stack Refs: #164 commit 4ffed84c2fd152da56894d3cf1fe26c14cf86a5a Author: Kate.Friedman Date: Mon Feb 1 15:02:05 2021 +0000 Update Fit2Obs tag to newm.1.3 for bugfix Jack Woollen reported a bug in the newm.1.2 tag related to insufficient rstprod permission settings on produced files. Need fix on WCOSS/Hera. New tag newm.1.3 resolves bug. Refs: #252 commit 1871c7a9578c4969ca5fabc75a98468a21558cb5 Author: Kate.Friedman Date: Mon Feb 1 14:48:10 2021 +0000 Update Fit2Obs tag to newm.1.3 for bugfix Jack Woollen reported a bug in the newm.1.2 tag related to insufficient rstprod permission settings on produced files. Need fix on WCOSS/Hera. New tag newm.1.3 resolves bug. Refs: #1,#252 commit b251164cb3adfab274d7f7ea15c30eaff5eabf79 Author: Kate.Friedman Date: Fri Jan 29 19:45:44 2021 +0000 Add missing component subfolder to fcst dependency The free-forecast mode fcst job data dependency file path was missing the component "atmos" subfolder. Added and tested in experiment on Hera. Refs: #178 commit 2147c59ac06d1afb69bbe95e0fa9f155b8e13594 Author: kate.friedman Date: Fri Jan 29 18:50:45 2021 +0000 Update EMC_verif-global tag for Hera bug Users reported issues plotting within EMC_verif-global on Hera. EMC_verif-global code manager made hotfix and provided new tag to resolve issues. No other HPCs impacted by this hotfix update. EMC_verif-global tag updated in both Externals.cfg and sorc/checkout.sh. Refs: #1,#251 commit 9066e6deef04dfc23eeeba47e1742d76dc508209 Author: kate.friedman Date: Fri Jan 29 17:03:04 2021 +0000 Pull in nwpara/gfsv16.0.6 updates for parse-storm-type.pl NCO reported "some JTWC tcvital missing in the gfs parallel run". The parse-storm-type.pl script was updated by Qingfu Liu to resolve issues and SPA Jen pulled it into the nwpara/gfsv16.0.6 install. Pulling the script update into our release branch to match nwpara. Refs: #1, #238 commit 94b30e3279985c13e4bfc05c60e487b1bda874ed Author: kate.friedman Date: Fri Jan 29 16:28:17 2021 +0000 HOTFIX: Update EMC_verif-global tag for Hera bug Users reported issues plotting within EMC_verif-global on Hera. EMC_verif-global code manager made hotfix and provided new tag to resolve issues. No other HPCs impacted by this hotfix update. EMC_verif-global tag updated in both Externals.cfg and sorc/checkout.sh. Refs: #251 commit a7391d70716c5a543ec57cf74f2c5cf133c15330 Author: kate.friedman Date: Thu Jan 28 19:04:52 2021 +0000 Update free-forecast mode chgres jobs for chgres_cube Update free-forecast mode to interface with UFS_UTILS gdas_init utility scripts. Update getic job to use gdas_init get scripts to pull ICs off HPSS for GFS versions 13 and later. Rename fv3ic job to "init" and update it to interface with gdas_init run scripts to run chgres_cube and produce GFSv16 ICs. Update job dependencies to detect need to run chgres jobs and hold forecast jobs until ICs are generated or present. Further updates coming for this task. Tested on WCOSS-Dell, need to test elsewhere still. Will disable getic job on Orion. Refs: #1, #178 commit aecf55db6c3e591e704be9d7404b18ed97d41add Author: Kate.Friedman Date: Mon Jan 25 20:04:32 2021 +0000 Issue #164 - stack updates for UFS_UTILS build commit cf4a226caa40c132a3c944fbf9585db0ac93427e Author: Kate.Friedman Date: Mon Jan 25 19:57:07 2021 +0000 Issue #164 - stack updates for regrid_nemsio build commit bc273e98a506d4e2724d4c5c35718f74776ce9d7 Author: Kate.Friedman Date: Mon Jan 25 19:50:49 2021 +0000 Issue #164 - updates to partial build and stack updates for tropcy build commit e09cb35b1ad654715ec9341f92ac98a2a9813730 Author: Kate.Friedman Date: Mon Jan 25 19:18:12 2021 +0000 Issue #164 - update GLDAS tag in Externals.cfg and stack updates for fbwndgfs and grib_util builds commit 8e0d1ad58de7379fa9caa81e739f3e0cc26f0d93 Merge: 479000a5e f53e3ca4f Author: kate.friedman Date: Mon Jan 25 16:27:18 2021 +0000 Issue #1 and issue #240 - merge v16.0.4, v16.0.5, and initial v16.0.6 changes from NCO into develop commit f53e3ca4f66c300c8668fb2f3c4682e6046fb71a Author: kate.friedman Date: Mon Jan 25 16:18:04 2021 +0000 Issue #1 and issue #238 - update Externals.cfg to match checkout.sh updates for v16.0.6 commit fad08a2751627baa3b193ca9496d568597ac7ee8 Merge: 40184c2a2 479000a5e Author: Kate.Friedman Date: Mon Jan 25 16:09:33 2021 +0000 Merge remote-tracking branch 'origin/develop' into feature/hpc-stack * origin/develop: Issue #179 and issue #243 - update Fit2Obs to newm.1.2 tag and correct COMROOT path for Hera HOTFIX: Issue #241 - update EMC_verif-global tag to remove use of /tmp space commit 80ffcfc1d23ab85e6f22f91a6cdd5a3538b276b2 Merge: 676e22f50 52485c41f Author: Kate Friedman Date: Mon Jan 25 10:36:50 2021 -0500 Merge pull request #247 from JessicaMeixner-NOAA/errorcheckwave3 Issue #1 and issue #238 - Move errchk from script level to job level for three wave jobs commit 52485c41f59447021957d3f0f0e0b6db38a7e398 Author: jessica.meixner Date: Mon Jan 25 15:24:09 2021 +0000 move errchk definition from script to job for wave prdgen and gempak commit 676e22f507076767d1d61ed1a977f15b545bd140 Merge: addaed49a 7abf72c6b Author: Kate Friedman Date: Mon Jan 25 10:02:10 2021 -0500 Merge pull request #246 from NOAA-EMC/updates/gfsv16.0.6 Issue #238 - component tags, errchk, and wave grid changes from NCO for v16.0.6 commit 7abf72c6b7c603c7671bd530f4ffa321f857ccd9 Merge: 12b7c1472 cd9af8b85 Author: Kate Friedman Date: Mon Jan 25 09:52:17 2021 -0500 Merge pull request #245 from JessicaMeixner-NOAA/v16_wave_errorchecks Issue #1 and issue #238 - adding definition of errchk which was undefined in three wave scripts commit cd9af8b854587bac619e1bad3dadff95b8140081 Author: jessica.meixner Date: Mon Jan 25 14:18:46 2021 +0000 adding definition of errchk which was undefined in these scripts commit 40184c2a21a22d9ac432a02e1e5bdc4ee18f0887 Author: Kate.Friedman Date: Fri Jan 22 16:36:46 2021 +0000 Issue #164 - remove build_libs.sh, update module_base.hera for hpc-stack, plus updates for building enkf_chgres_recenter, gfs_bufr, and tocsbufr with hpc-stack commit 6ab44fef78f33785268492f54ee1b2c0f8a17242 Author: Kate.Friedman Date: Fri Jan 22 14:44:59 2021 +0000 Issue #164 - update machine-setup.sh for Hera stack, update checkout/build/linking for UPP tag that supports hpc-stack, remove post patch in HERA.env commit 479000a5e7b4b9c575784ecca400594525396556 Merge: bbf300085 5a16a7a01 Author: Kate Friedman Date: Thu Jan 21 11:31:41 2021 -0500 Merge pull request #244 from NOAA-EMC/issue243 Issue #179 and issue #243 - update Fit2Obs to newm.1.2 tag and correct COMROOT path for Hera commit 5a16a7a010477b5bbe530a684608b151b8f05755 Author: kate.friedman Date: Thu Jan 21 16:27:54 2021 +0000 Issue #179 and issue #243 - update Fit2Obs to newm.1.2 tag and correct COMROOT path for Hera commit bbf3000856ebb20ca761c6e7d761f5fcefad0228 Author: kate.friedman Date: Fri Jan 15 18:36:20 2021 +0000 HOTFIX: Issue #241 - update EMC_verif-global tag to remove use of /tmp space commit addaed49ac7a69d66a56ed7fd2096686e201a51f Author: kate.friedman Date: Fri Jan 15 18:28:14 2021 +0000 Issue #1 and issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 commit 112586a79c4f48baca0b705fd5d0adea9f3c9ec0 Author: kate.friedman Date: Fri Jan 15 18:17:39 2021 +0000 Issue #1 and issue #241 - update EMC_verif-global tag commit 12b7c147207581da7718a82dd2174a94489a67e6 Author: kate.friedman Date: Thu Jan 14 17:04:29 2021 +0000 Issue #1 and issue #238 - remove ak_10m grid from config.wave and update checkout.sh tags for ufs-weather-model and EMC_gfs_wafs commit 43ae19be02687cdc362a34e11d299009f3dd8ffc Merge: c7e6a7f8c 48be4d182 Author: Kate Friedman Date: Thu Jan 14 10:35:16 2021 -0500 Merge pull request #239 from KateFriedman-NOAA/issue179 Issue #179 - update to config.vrfy for Fit2Obs tag which supports Orion commit 48be4d18263ea4f1c706c55e4b6b70d87f19c729 Author: kate.friedman Date: Thu Jan 14 08:38:20 2021 -0600 Issue #179 - update to config.vrfy for Fit2Obs tag which supports Orion commit c7e6a7f8c6f7b0d5648b1379633c252f165c2ca6 Merge: ef8b64150 4be7954dd Author: Kate Friedman Date: Wed Jan 13 14:20:49 2021 -0500 Merge pull request #237 from KateFriedman-NOAA/issue233 Update GLDAS tag to gldas_gfsv16_release.v1.13.0 commit 3b0cb61d71fcd2e5186fc1ae14c873a67b7c515d Author: kate.friedman Date: Wed Jan 6 16:30:10 2021 +0000 Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 in Externals.cfg commit 749f0682e432352a052d3dc0153eb6a87a70c0d0 Author: kate.friedman Date: Wed Jan 6 16:23:42 2021 +0000 Issue #1 and issue #226 - update UPP tag to upp_gfsv16_release.v1.1.3 commit 4be7954ddcbb56e7ee5167f6d43054d8821b6a4f Author: kate.friedman Date: Tue Jan 5 12:06:51 2021 -0600 Issue #233 - remove unnecessary extra space in tag line for gldas commit bcbdd12c39124eae14ec0b52d0a05b7c6944c27e Author: kate.friedman Date: Tue Jan 5 12:03:15 2021 -0600 Issue #233 - update GLDAS tag to gldas_gfsv16_release.v1.13.0 commit 91597f544a860b0e6b77019cd0c183ea7e1e580a Author: kate.friedman Date: Tue Jan 5 15:18:09 2021 +0000 Issue #1 and issue #226 - update exgfs_atmos_grib2_special_npoess.sh for dbn_alert commit ef8b64150a0cb7137b1ec48e9c8f3c7e9b3223de Merge: fca3433bf cffc5682f Author: Fanglin Yang Date: Mon Jan 4 10:52:08 2021 -0500 Merge pull request #231 from yangfanglin/feature/multiple_restart modified exglobal_forecast.sh to enable multiple reruns from breakpoint restart initial conditions commit cffc5682f34eb9ab0bbf42ee11eaa848152c0dbc Author: fanglin.yang Date: Wed Dec 30 18:43:34 2020 +0000 modified: exglobal_forecast.sh The breakpoint restart only works for the first restart from a breakpoint. Restart files written in RERUN_RESTRAT after the first restart has a 3-hour time shift for DO_IAU=YES cases. Forecasts starting from the 2nd breakpoint and beyond will fail becasue of incorrect initial conditins. This commit fixes this bug. commit 3a955b4b2611fea6925aeca7e442c119c2b6c4cb Merge: 104328ab2 43c46eb46 Author: Fanglin Yang Date: Wed Dec 23 13:20:36 2020 -0500 Merge pull request #229 from GuangPingLou-NOAA/release/gfsv16.0.0 Release/gfsv16.0.0 commit 43c46eb4636c6327431ed87e8499cc9b4ef1ffa3 Author: Guang Ping Lou Date: Wed Dec 23 17:48:45 2020 +0000 issue #227 reducing output bufr files to 64 levels per NCO request commit 1d3c1554cf453cce448d5ebcc138941a834ad8b3 Author: Guang Ping Lou Date: Wed Dec 23 17:48:30 2020 +0000 issue #227 reducing output bufr files to 64 levels per NCO request commit 104328ab22dc780a8d80bf3ceaa53017d410265f Author: russ.treadon Date: Wed Dec 23 13:54:00 2020 +0000 Issue #1: update ecflow to be consistent with NCO's gfs.v16.0.4 and update checkout to bring in new UPP tag (see issue #226) commit 47efddfdc8815aacc0b7328135b8626a0f0862b2 Merge: e89045b9f eaa91a792 Author: Fanglin Yang Date: Tue Dec 22 12:41:01 2020 -0500 Merge pull request #225 from NOAA-EMC/update_gfsv16 Update gfsv16 commit eaa91a7927cc1f59f3709f5c5af401d9e5c20a1c Author: BoiVuong-NOAA Date: Tue Dec 22 03:54:04 2020 +0000 Upaded ush script scale_dec.sh commit 53f37b8bf9a3ef861c026e842c565f7b370a2a06 Author: BoiVuong-NOAA Date: Mon Dec 21 13:52:42 2020 +0000 Updated scripts gfs_v16.0 commit fca3433bf869b12cade480e1394688d7b6f95687 Merge: a95cce5f3 abb168bc3 Author: Kate Friedman Date: Fri Dec 18 09:30:21 2020 -0500 Merge pull request #221 from NOAA-EMC/nco_v16_changes NCO changes for v16.0.3 commit abb168bc32fdff7b08ce8ecc54ea832aabf03c44 Author: kate.friedman Date: Thu Dec 17 19:17:26 2020 +0000 Issue #1 and issue #220 - set C192/C96/C48 npe_eobs back to dev values for develop commit 65b4d965fa6ebee445a509a0593e925ae5d5b513 Merge: a95cce5f3 e89045b9f Author: kate.friedman Date: Thu Dec 17 18:46:06 2020 +0000 Issue #1 - merge v16.0.3 changes from NCO into develop commit e89045b9fb1d9026810ef5c77a3554c67c41718e Author: kate.friedman Date: Wed Dec 16 16:38:01 2020 +0000 Issue #1 - add grib_util module load to several analysis ecflow scripts commit 1f5af6283f3b1a6d2faec127e7d8c814e793f2a4 Merge: b7ece977f fc4dd668b Author: Kate Friedman Date: Tue Dec 15 14:44:51 2020 -0500 Merge pull request #217 from NOAA-EMC/release/gfsv15.3.5 GFSv15.3.5 commit fc4dd668b32f3c76b84800c1ebc4c3b277db91e4 Author: kate.friedman Date: Tue Dec 15 19:39:41 2020 +0000 Issue #215 - GFSv15.3.5 ops updates for gempak and bufrlib versions commit a95cce5f3e123a241000b209fb50cc8911d13466 Merge: 1562bb97a 2646921d0 Author: Kate Friedman Date: Tue Dec 15 14:05:27 2020 -0500 Merge pull request #216 from NOAA-EMC/issue189 Issue #189 - update ufs-weather-model hash commit 2646921d0da6dc8a136ebeba6cceceacf3806c23 Author: kate.friedman Date: Tue Dec 15 18:56:33 2020 +0000 Issue #189 - update ufs-weather-model hash commit 1562bb97ac21ce2406ed21f76b7c8d58cecf4a2a Merge: f3d11b9bc 7a9bc00e3 Author: Kate Friedman Date: Tue Dec 15 09:51:07 2020 -0500 Merge pull request #213 from NOAA-EMC/hotfixes Hotfixes - issues #201, 202, 208 commit 7a9bc00e367126044f83b0fc9b737386788899a9 Author: Kate.Friedman Date: Mon Dec 14 21:35:58 2020 +0000 Issue #201 - workaround for failing post000 job before hpc-stack solution commit 425588f711812819744c8060a46444b9d4bf2b63 Author: kate.friedman Date: Mon Dec 14 21:06:20 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.17 for dbn_alert change commit ec5e2e5dd98d80ca3e3d696d5eb19a5a4180c87b Author: kate.friedman Date: Mon Dec 14 15:06:16 2020 +0000 Issue #1 - correct gridded wave parm files for v16.0.3 commit 39246c6e1604e9e81ddc384c951861c43e30cdcf Author: kate.friedman Date: Fri Dec 11 19:26:51 2020 +0000 Issue #1 - changes from NCO for GFSv16.0.3 commit b9f7de8af3cb966fa756e38feaf98ce1f84ee2f3 Author: Kate.Friedman Date: Thu Dec 10 19:15:00 2020 +0000 Issue #1 - update Externals.cfg with final tags for GFSv16.0.2 commit cff28bdbf0daa6980766a011f73e2a021aee2341 Author: Kate.Friedman Date: Thu Dec 10 15:59:05 2020 +0000 Fixes for issue #202 (FINDDATE) and issue #208 (postsnd.sh permissions) commit 7c7482de947ae686b619fc72e7dd192410b7e0f7 Author: Kate.Friedman Date: Thu Dec 10 14:10:25 2020 +0000 Issue #1 - correct permissions on jobs/rocoto/postsnd.sh commit dee856c5b54c19cc9de6898908fdb9d4f8d99baa Author: kate.friedman Date: Wed Dec 9 20:58:20 2020 +0000 Issue #1 - update gempak version to 7.3.3 in the ecflow gfs.ver file commit 0ee264bef7ea71d32426b6b6d77109e73b4235ff Author: kate.friedman Date: Wed Dec 9 18:49:54 2020 +0000 Issue #1 - update gempak and dumpjb versions to 7.3.3 and 5.1.0 respectively commit b5d97ab6912596d3b343843ba3ef6e8c5f71a21a Merge: 6da1a24ba be5f9ece8 Author: Kate Friedman Date: Mon Dec 7 14:49:29 2020 -0500 Merge pull request #205 from NOAA-EMC/release/gfsv16.0.0.nco Script alert updates from NCO for wave downstream commit be5f9ece8329ee6b18af92d044809f018404669b Author: kate.friedman Date: Mon Dec 7 19:45:23 2020 +0000 Script alert updates from NCO for wave downstream commit 6da1a24ba89c80ee5f5df38136d03483207d39dd Merge: ce1ae9709 069f2662b Author: Kate Friedman Date: Mon Dec 7 14:12:37 2020 -0500 Merge pull request #204 from NOAA-EMC/release/gfsv16.0.0.nco GFSv16 NCO changes - early December edition commit 069f2662bc2eabc822f13eec4e2f69f1c39606a8 Author: kate.friedman Date: Wed Dec 2 20:01:17 2020 +0000 Add override for COMIN_WAV_RTOFS in emc mode for waveprep job commit 378953d513ce587bb801c85b3899afaee0217961 Author: anning.cheng Date: Wed Dec 2 09:12:38 2020 -0600 udate config.base.emc.dyn commit 81442ad41582eebcf34a9a01fb7e2a7e0a641ebe Author: anning.cheng Date: Tue Dec 1 13:15:08 2020 -0600 high resolution MERRA2 data used commit 79f23fa4c2079ce5cd75da95267d2d4442b757a0 Author: anning.cheng Date: Tue Dec 1 12:54:50 2020 -0600 fixed a bug related to orion commit 947bbad1aad4d2967f81c8498a7f96b1394b66d9 Author: anning.cheng Date: Tue Dec 1 10:02:08 2020 -0600 added merra2 input and update diag_table commit 3bdc629964b6a217944fc56a19d842a7d043dde5 Author: anning.cheng Date: Tue Dec 1 01:31:07 2020 -0600 merra2 workflow for orion commit 194f280cf7351d58b0295af35c91e74ac6925d0b Author: russ.treadon Date: Mon Nov 30 18:47:19 2020 +0000 Issue #197: place CDATE specific sections of config.anal and config.prep inside RUN_ENVIR=emc blocks. These sections are use for retrospective parallels and therefore do not need to be executed in operations (NCO). commit d82efa8417fe6247ed08cd74a447460ba6bb51f9 Author: fanglin.yang Date: Mon Nov 30 18:06:12 2020 +0000 modified: JGLOBAL_FORECAST commit 25a28c8dacc8659071eca65be15fb4de08b18d80 Author: fanglin.yang Date: Mon Nov 30 17:02:05 2020 +0000 modified: JGLOBAL_FORECAST to make it work for both emc and nco running environments. commit 7283c7e60c98639c6466ce5903ab03c36a7f5f57 Author: fanglin.yang Date: Fri Nov 27 22:16:31 2020 +0000 modified: JGLOBAL_FORECAST A test showed that jobid is not defined in JGLOBAL_FORECAST running in the Rocoto environment. jobid is defined in ./env files. Defining DATA without sourcing ./env/$nachine.env caused the script to fail. Move the definitin of DATA after sourcing env parameters commit e6003773c0af51bd15eb2bdb6831c99dcce1cc5b Author: fanglin.yang Date: Tue Nov 24 03:25:23 2020 +0000 modified: checkout.sh to use WAFS tag gfs_wafs.v6.0.16 commit bd5294ee6844f8a5adbd04eae78999068c0961a2 Author: fanglin.yang Date: Sat Nov 21 17:32:05 2020 +0000 modified: checkout.sh to update UPP to upp_gfsv16_release.v1.1.1, a minor syntax bug fix commit 5a516b4cdf0333e4b8316c8cbda7be9f9dccc543 Author: fanglin.yang Date: Fri Nov 20 05:08:33 2020 +0000 modified: link_fv3gfs.sh to 1) use hard copies of external fix fields and executable for NCO installation 2) use soft links for all other files and directories for both NCO and EMC installations commit 759cf3341bb400d3b3254a05a624e3ab671ef6cd Author: fanglin.yang Date: Fri Nov 20 04:51:48 2020 +0000 Compared local files in NCO implementation directory with release/gfs.v16.0.0 branch, changes made by NCO(Jen Yang) in the following files are either accepted or rejected. use EMC's updated version modified: jobs/JGFS_ATMOS_POSTSND Use NCO's updated version modified: jobs/JGLOBAL_FORECAST modified: jobs/JGLOBAL_WAVE_GEMPAK modified: jobs/JGLOBAL_WAVE_POST_BNDPNT modified: jobs/JGLOBAL_WAVE_POST_PNT modified: jobs/JGLOBAL_WAVE_POST_SBS modified: jobs/JGLOBAL_WAVE_PRDGEN_BULLS modified: jobs/JGLOBAL_WAVE_PRDGEN_GRIDDED modified: parm/config/config.base.nco.static Updated by both NCO and EMC modified: parm/config/config.wave Updated gldas tag to gldas_gfsv16_release.v1.12.0 modified: sorc/checkout.sh commit f39ea0cbbabaa5e69e03cec4db309e2adfb33756 Author: fanglin.yang Date: Thu Nov 19 04:43:17 2020 +0000 create a new branch release/gfsv16.0.0.nco to merge changes made by NCO in /gpfs/dell1/nco/ops/nwpara/gfs-v16/gfs.v16.0.1 back to EMC's repository modified: ecflow/ecf/scripts/gdas/atmos/analysis/jgdas_atmos_analysis.ecf modified: ecflow/ecf/scripts/gdas/atmos/analysis/jgdas_atmos_analysis_calc.ecf modified: ecflow/ecf/scripts/gdas/atmos/analysis/jgdas_atmos_analysis_diag.ecf modified: ecflow/ecf/scripts/gdas/atmos/gempak/jgdas_atmos_gempak.ecf modified: ecflow/ecf/scripts/gdas/atmos/gempak/jgdas_atmos_gempak_meta_ncdc.ecf modified: ecflow/ecf/scripts/gdas/atmos/init/jgdas_atmos_gldas.ecf modified: ecflow/ecf/scripts/gdas/atmos/obsproc/dump/jgdas_atmos_dump.ecf modified: ecflow/ecf/scripts/gdas/atmos/obsproc/dump/jgdas_atmos_dump_alert.ecf modified: ecflow/ecf/scripts/gdas/atmos/obsproc/dump/jgdas_atmos_dump_post.ecf modified: ecflow/ecf/scripts/gdas/atmos/obsproc/dump/jgdas_atmos_tropcy_qc_reloc.ecf modified: ecflow/ecf/scripts/gdas/atmos/obsproc/prep/jgdas_atmos_emcsfc_sfc_prep.ecf modified: ecflow/ecf/scripts/gdas/atmos/obsproc/prep/jgdas_atmos_prep.ecf modified: ecflow/ecf/scripts/gdas/atmos/obsproc/prep/jgdas_atmos_prep_post.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_anl.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f000.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f001.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f002.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f003.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f004.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f005.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f006.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f007.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f008.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_f009.ecf modified: ecflow/ecf/scripts/gdas/atmos/post/jgdas_atmos_post_manager.ecf modified: ecflow/ecf/scripts/gdas/atmos/post_processing/jgdas_atmos_chgres_forenkf.ecf modified: ecflow/ecf/scripts/gdas/atmos/verf/jgdas_atmos_verfozn.ecf modified: ecflow/ecf/scripts/gdas/atmos/verf/jgdas_atmos_verfrad.ecf modified: ecflow/ecf/scripts/gdas/atmos/verf/jgdas_atmos_vminmon.ecf modified: ecflow/ecf/scripts/gdas/enkf/analysis/create/jgdas_enkf_diag.ecf modified: ecflow/ecf/scripts/gdas/enkf/analysis/create/jgdas_enkf_select_obs.ecf modified: ecflow/ecf/scripts/gdas/enkf/analysis/create/jgdas_enkf_update.ecf modified: ecflow/ecf/scripts/gdas/enkf/analysis/recenter/ecen/jgdas_enkf_ecen.ecf modified: ecflow/ecf/scripts/gdas/enkf/analysis/recenter/jgdas_enkf_sfc.ecf modified: ecflow/ecf/scripts/gdas/enkf/forecast/jgdas_enkf_fcst.ecf modified: ecflow/ecf/scripts/gdas/jgdas_forecast.ecf modified: ecflow/ecf/scripts/gdas/wave/init/jgdas_wave_init.ecf modified: ecflow/ecf/scripts/gdas/wave/post/jgdas_wave_postpnt.ecf modified: ecflow/ecf/scripts/gdas/wave/post/jgdas_wave_postsbs.ecf modified: ecflow/ecf/scripts/gdas/wave/prep/jgdas_wave_prep.ecf modified: ecflow/ecf/scripts/gfs/atmos/analysis/jgfs_atmos_analysis.ecf modified: ecflow/ecf/scripts/gfs/atmos/analysis/jgfs_atmos_analysis_calc.ecf modified: ecflow/ecf/scripts/gfs/atmos/gempak/jgfs_atmos_gempak.ecf modified: ecflow/ecf/scripts/gfs/atmos/gempak/jgfs_atmos_gempak_meta.ecf modified: ecflow/ecf/scripts/gfs/atmos/gempak/jgfs_atmos_gempak_ncdc_upapgif.ecf modified: ecflow/ecf/scripts/gfs/atmos/gempak/jgfs_atmos_npoess_pgrb2_0p5deg.ecf modified: ecflow/ecf/scripts/gfs/atmos/gempak/jgfs_atmos_pgrb2_spec_gempak.ecf modified: ecflow/ecf/scripts/gfs/atmos/obsproc/dump/jgfs_atmos_dump.ecf modified: ecflow/ecf/scripts/gfs/atmos/obsproc/dump/jgfs_atmos_dump_alert.ecf modified: ecflow/ecf/scripts/gfs/atmos/obsproc/dump/jgfs_atmos_dump_post.ecf modified: ecflow/ecf/scripts/gfs/atmos/obsproc/dump/jgfs_atmos_tropcy_qc_reloc.ecf modified: ecflow/ecf/scripts/gfs/atmos/obsproc/prep/jgfs_atmos_emcsfc_sfc_prep.ecf modified: ecflow/ecf/scripts/gfs/atmos/obsproc/prep/jgfs_atmos_prep.ecf modified: ecflow/ecf/scripts/gfs/atmos/obsproc/prep/jgfs_atmos_prep_post.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_anl.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f000.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f001.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f002.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f003.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f004.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f005.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f006.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f007.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f008.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f009.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f010.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f011.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f012.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f013.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f014.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f015.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f016.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f017.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f018.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f019.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f020.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f021.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f022.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f023.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f024.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f025.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f026.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f027.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f028.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f029.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f030.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f031.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f032.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f033.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f034.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f035.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f036.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f037.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f038.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f039.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f040.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f041.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f042.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f043.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f044.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f045.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f046.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f047.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f048.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f049.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f050.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f051.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f052.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f053.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f054.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f055.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f056.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f057.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f058.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f059.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f060.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f061.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f062.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f063.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f064.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f065.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f066.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f067.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f068.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f069.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f070.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f071.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f072.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f073.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f074.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f075.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f076.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f077.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f078.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f079.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f080.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f081.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f082.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f083.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f084.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f085.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f086.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f087.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f088.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f089.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f090.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f091.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f092.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f093.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f094.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f095.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f096.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f097.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f098.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f099.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f100.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f101.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f102.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f103.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f104.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f105.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f106.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f107.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f108.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f109.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f110.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f111.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f112.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f113.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f114.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f115.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f116.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f117.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f118.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f119.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f120.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f123.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f126.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f129.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f132.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f135.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f138.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f141.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f144.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f147.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f150.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f153.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f156.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f159.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f162.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f165.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f168.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f171.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f174.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f177.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f180.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f183.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f186.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f189.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f192.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f195.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f198.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f201.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f204.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f207.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f210.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f213.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f216.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f219.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f222.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f225.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f228.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f231.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f234.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f237.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f240.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f243.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f246.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f249.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f252.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f255.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f258.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f261.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f264.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f267.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f270.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f273.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f276.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f279.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f282.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f285.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f288.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f291.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f294.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f297.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f300.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f303.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f306.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f309.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f312.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f315.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f318.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f321.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f324.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f327.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f330.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f333.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f336.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f339.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f342.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f345.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f348.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f351.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f354.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f357.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f360.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f363.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f366.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f369.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f372.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f375.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f378.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f381.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_f384.ecf modified: ecflow/ecf/scripts/gfs/atmos/post/jgfs_atmos_post_manager.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f000.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f003.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f006.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f009.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f012.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f015.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f018.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f021.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f024.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f027.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f030.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f033.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f036.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f039.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f042.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f045.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f048.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f051.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f054.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f057.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f060.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f063.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f066.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f069.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f072.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f075.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f078.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f081.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f084.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f090.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f096.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f102.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f108.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f114.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f120.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f126.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f132.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f138.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f144.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f150.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f156.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f162.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f168.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f174.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f180.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f186.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f192.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f198.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f204.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f210.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f216.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f222.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f228.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f234.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_20km_1p0/jgfs_atmos_awips_f240.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f000.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f003.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f006.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f009.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f012.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f015.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f018.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f021.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f024.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f027.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f030.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f033.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f036.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f039.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f042.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f045.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f048.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f051.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f054.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f057.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f060.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f063.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f066.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f069.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f072.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f075.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f078.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f081.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f084.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f090.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f096.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f102.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f108.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f114.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f120.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f126.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f132.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f138.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f144.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f150.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f156.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f162.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f168.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f174.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f180.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f186.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f192.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f198.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f204.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f210.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f216.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f222.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f228.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f234.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_f240.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/bufr_sounding/jgfs_atmos_postsnd.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/bulletins/jgfs_atmos_fbwind.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib2_wafs/jgfs_atmos_wafs_blending.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib2_wafs/jgfs_atmos_wafs_blending_0p25.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib2_wafs/jgfs_atmos_wafs_grib2.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib2_wafs/jgfs_atmos_wafs_grib2_0p25.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f00.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f06.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f102.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f108.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f114.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f12.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f120.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f18.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f24.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f30.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f36.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f42.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f48.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f54.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f60.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f66.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f72.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f78.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f84.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f90.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/grib_wafs/jgfs_atmos_wafs_f96.ecf modified: ecflow/ecf/scripts/gfs/atmos/post_processing/jgfs_atmos_wafs_gcip.ecf modified: ecflow/ecf/scripts/gfs/atmos/verf/jgfs_atmos_vminmon.ecf modified: ecflow/ecf/scripts/gfs/jgfs_forecast.ecf modified: ecflow/ecf/scripts/gfs/wave/gempak/jgfs_wave_gempak.ecf modified: ecflow/ecf/scripts/gfs/wave/init/jgfs_wave_init.ecf modified: ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpnt.ecf modified: ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_postpnt.ecf modified: ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_postsbs.ecf modified: ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_prdgen_bulls.ecf modified: ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_prdgen_gridded.ecf modified: ecflow/ecf/scripts/gfs/wave/prep/jgfs_wave_prep.ecf modified: jobs/JGFS_ATMOS_POSTSND modified: jobs/JGLOBAL_ATMOS_EMCSFC_SFC_PREP modified: jobs/JGLOBAL_FORECAST modified: jobs/JGLOBAL_WAVE_GEMPAK modified: jobs/JGLOBAL_WAVE_INIT modified: jobs/JGLOBAL_WAVE_POST_BNDPNT modified: jobs/JGLOBAL_WAVE_POST_PNT modified: jobs/JGLOBAL_WAVE_POST_SBS modified: jobs/JGLOBAL_WAVE_PRDGEN_BULLS modified: jobs/JGLOBAL_WAVE_PRDGEN_GRIDDED modified: jobs/JGLOBAL_WAVE_PREP modified: parm/config/config.wave modified: parm/transfer_gdas_1a.list modified: parm/transfer_gdas_1b.list modified: parm/transfer_gdas_1c.list modified: parm/transfer_gdas_enkf_enkf_05.list modified: parm/transfer_gdas_enkf_enkf_10.list modified: parm/transfer_gdas_enkf_enkf_15.list modified: parm/transfer_gdas_enkf_enkf_20.list modified: parm/transfer_gdas_enkf_enkf_25.list modified: parm/transfer_gdas_enkf_enkf_30.list modified: parm/transfer_gdas_enkf_enkf_35.list modified: parm/transfer_gdas_enkf_enkf_40.list modified: parm/transfer_gdas_enkf_enkf_45.list modified: parm/transfer_gdas_enkf_enkf_50.list modified: parm/transfer_gdas_enkf_enkf_55.list modified: parm/transfer_gdas_enkf_enkf_60.list modified: parm/transfer_gdas_enkf_enkf_65.list modified: parm/transfer_gdas_enkf_enkf_70.list modified: parm/transfer_gdas_enkf_enkf_75.list modified: parm/transfer_gdas_enkf_enkf_80.list modified: parm/transfer_gdas_enkf_enkf_misc.list modified: parm/transfer_gdas_misc.list modified: parm/transfer_gfs_1.list modified: parm/transfer_gfs_10a.list modified: parm/transfer_gfs_10b.list modified: parm/transfer_gfs_2.list modified: parm/transfer_gfs_3.list modified: parm/transfer_gfs_4.list modified: parm/transfer_gfs_5.list modified: parm/transfer_gfs_6.list modified: parm/transfer_gfs_7.list modified: parm/transfer_gfs_8.list modified: parm/transfer_gfs_9a.list modified: parm/transfer_gfs_9b.list modified: parm/transfer_gfs_misc.list modified: parm/transfer_rdhpcs_gdas.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_1.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_2.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_3.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_4.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_5.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_6.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_7.list modified: parm/transfer_rdhpcs_gdas_enkf_enkf_8.list modified: parm/transfer_rdhpcs_gfs.list modified: parm/transfer_rdhpcs_gfs_nawips.list commit ce1ae9709fe506f32833910f3cf4f68117c7d0f2 Merge: b096e2941 e9d00e41e Author: Fanglin Yang Date: Wed Nov 18 16:55:14 2020 -0500 Merge pull request #192 from JessicaMeixner-NOAA/bf/waveICfreq wave parm update for realease/gfsv16 commit e9d00e41e939fca68a39293b973326531f3c6983 Author: jessica.meixner Date: Wed Nov 18 19:51:25 2020 +0000 update for the wave parm so that the wave model will look for the correct restart for when gfs is not run every cycle commit f3d11b9bc7e669f4c11266654649c4d5e28f16a9 Merge: e3972f177 32a004aae Author: Kate Friedman Date: Tue Nov 17 14:01:54 2020 -0500 Merge pull request #186 from lgannoaa/feature/ccpp Initial support for CCPP. commit 32a004aae3949e8fd3bda7a4f628995317d33f47 Merge: 66cc1a062 036cc113d Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Tue Nov 17 13:15:37 2020 -0500 Merge pull request #2 from KateFriedman-NOAA/ccpp Adjust efcs walltime and eupd thread value on Orion commit 036cc113dcd5787ce4bccfb11fb71ed7935bc982 Author: kate.friedman Date: Tue Nov 17 10:44:02 2020 -0600 Adjust efcs walltime and eupd thread value on Orion commit 66cc1a062ba1b430e9ebaf41715997a3de0ff023 Merge: 9e8f96050 2432dc5bb Author: lgannoaa <37596169+lgannoaa@users.noreply.github.com> Date: Mon Nov 16 15:48:34 2020 -0500 Merge pull request #1 from KateFriedman-NOAA/ccpp Fix missing COMROOT setting for Orion commit 2432dc5bbb1b3bc4c317063811333a5b30065794 Author: kate.friedman Date: Mon Nov 16 14:40:59 2020 -0600 Fix missing COMROOT setting on Orion commit 9e8f960508e82f31e9d57da0fc37600b9697e4c9 Author: Lin.Gan Date: Mon Nov 16 18:24:08 2020 +0000 Modify build_all.sh while getopts "oc" option to while getopts "c" option commit 587e1986cb5c6307f2d10a01758994ce1155e36d Author: Lin.Gan Date: Mon Nov 16 18:21:16 2020 +0000 scripts/exglobal_forecast.sh Merge with v16ccpp commit 6066462b23d34db815ed73c630ef624c41239215 Author: Lin.Gan Date: Mon Nov 16 17:53:44 2020 +0000 As requested, using 2e25df5fe952d27355ed58963148f46b82565469 for ufs-weather-model. commit bf312432b662c3e2b7bd8cd5de19dd5b5ee0c042 Merge: dd7b0068c d59c09c6d Author: Lin.Gan Date: Mon Nov 16 17:41:32 2020 +0000 Merge remote-tracking branch 'upstream/v16ccpp' into feature/ccpp Pull in the iovr=3 in config.fcst commit dd7b0068cf0b598e58af41a92712e393674d14fd Author: Lin.Gan Date: Mon Nov 16 14:39:04 2020 +0000 Modify exglobal_forecast.sh to create namelist in runable sequence. commit d59c09c6d9445110871da231ef9945d201986f81 Author: fanglin.yang Date: Mon Nov 16 04:06:48 2020 +0000 modified: ../scripts/exglobal_forecast.sh commit d8aa4423f1a6f2c63c00a4ed5a38a4df6501ef7b Author: fanglin.yang Date: Mon Nov 16 04:04:43 2020 +0000 modified checkout.sh to check out a hash instead of head of the develop branch commit e29fd0c517840a9996987e7ae21f78cc2af8ca12 Author: fanglin.yang Date: Mon Nov 16 03:00:50 2020 +0000 modified: ../parm/config/config.fcst and exglobal_forecast.sh 1. use iovr for model after https://github.com/NCAR/ccpp-physics/pull/514 and iovr_sw and iovr_lw for older version of the model, controled by RUN_CCPP 2. remove the if block and use atmos_model_nml to turn on/off the CCPP option commit 1ec0ebf31767422a67e3f56c951f5ccb2305c7e5 Author: fanglin.yang Date: Sun Nov 15 17:48:51 2020 -0500 bug fix exglobal_forecast.sh commit 336647bcaced053baeee43ef2417b34b6b196439 Author: fanglin.yang Date: Sun Nov 15 12:55:20 2020 -0500 modified: exglobal_forecast.sh to add min_lakeice = ${min_lakeice:-"0.15"} min_seaice = ${min_seaice:-"0.15"} commit 9616b2eef626ce8db2f3a5da343b0a7ece2137cb Author: fanglin.yang Date: Sun Nov 15 04:05:48 2020 +0000 modified: build_fv3.sh commit fe79b87abbeca26939dbcc1ccd7cb5fb2624e666 Author: Lin.Gan Date: Fri Nov 13 20:11:26 2020 +0000 Clean up development code from build_all commit 9cd719d0609cefb3261870528b88c54d24117c47 Author: Lin.Gan Date: Fri Nov 13 19:53:31 2020 +0000 Modified build_all.sh checkout.sh partial_build.sh to allow switch turn on/off ccpp option Turn on CCPP usage: checkout.sh -c build_all.sh -c Turn off CCPP usage: checkout.sh build_all.sh commit 8aed1e4d44166ffb6036409bced3ad04f038dfc4 Author: fanglin.yang Date: Fri Nov 13 17:04:07 2020 +0000 modified: ../scripts/exglobal_forecast.sh modified: build_all.sh build_fv3.sh to automatically detect model version, CCPP vs IPD commit 7826668c6baaf113785e88b79bc059f8a430eace Author: Lin.Gan Date: Fri Nov 13 15:44:31 2020 +0000 Remove development configuration from config.nsst commit 1e5ebe44fd525135114b0fc74a698cadd2eb5eaa Merge: 0b540d78c b0536156e Author: Lin.Gan Date: Fri Nov 13 15:36:06 2020 +0000 Merge remote-tracking branch 'upstream/v16ccpp' into feature/ccpp commit 0b540d78c47755cb0bd68a8dc934461ec1bef345 Author: Lin.Gan Date: Fri Nov 13 15:35:26 2020 +0000 update eupd resource commit 267c661710562ab620c07212626268f0201c6c20 Author: Lin.Gan Date: Fri Nov 13 15:31:56 2020 +0000 Merge with v16ccpp modified: parm/config/config.base.emc.dyn modified: parm/config/config.resources modified: scripts/exglobal_forecast.sh modified: sorc/build_fv3.sh modified: sorc/checkout.sh commit b0536156ed8383150fc65d5897c6acd17c0df248 Author: fanglin.yang Date: Fri Nov 13 06:30:25 2020 +0000 modified: parm/config/config.base.emc.dyn parm/config/config.base.nco.static scripts/exglobal_forecast.sh sorc/build_all.sh sorc/build_fv3.sh sorc/checkout.sh to add the option to check out ufs_weather_model and run with CCPP phsyics commit b80676925e5dca6c26d8dbf59c8ca74c0efe5fcb Author: Lin.Gan Date: Thu Nov 12 20:18:08 2020 +0000 sync config.base.emc.dyn and config.resources with development commit 6e6fdd79515966f84334e9319dbb3b9cfff9095c Author: Lin.Gan Date: Thu Nov 12 19:28:06 2020 +0000 Remove GSD suite file and aero IC extract util commit 8aed527d4358e131fba73785469d1fec957e619a Author: Lin.Gan Date: Thu Nov 12 18:23:21 2020 +0000 deleted: jobs/rocoto/aeroic.sh commit d2191414c48835799e578a6010d7dbfdb6babb78 Author: Lin.Gan Date: Thu Nov 12 18:11:43 2020 +0000 Changes to be committed: modified: jobs/rocoto/fcst.sh deleted: modulefiles/module_base.wcoss_dell_p3_fcst deleted: parm/config/config.aeroic modified: parm/config/config.base.emc.dyn modified: parm/config/config.resources modified: sorc/build_fv3.sh modified: sorc/checkout.sh modified: sorc/link_fv3gfs.sh deleted: ush/load_fv3gfs_modules_fcst.sh deleted: ush/rocoto/setup_workflow_fcstonly_aeroic.py commit 490f0a73d852f709e1232d4a4a9ee7f3d95d58d9 Merge: 52f59845f e3972f177 Author: Lin.Gan Date: Thu Nov 12 15:49:48 2020 +0000 Merge remote-tracking branch 'upstream/develop' into feature/ccpp commit 52f59845f62bd9cc16b6b1197a7de04a4b4a1d86 Author: Lin.Gan Date: Thu Nov 12 15:04:33 2020 +0000 As of 11/12/2020, this package is tested with a C768 cycled (6 cycle) run on Dell system using FV3_GFS_v16beta (imp_physics=11). The wave components are turned off. Ready to merge back to the development. The expdir and log files are available on HPSS: /NCEPDEV/emc-global/1year/Lin.Gan/WCOSS_DELL_P3/feature_ccpp/FV3_GFS_v16beta/FV3_GFS_v16beta-LOG.tar /NCEPDEV/emc-global/1year/Lin.Gan/WCOSS_DELL_P3/feature_ccpp/FV3_GFS_v16beta/FV3_GFS_v16beta-EXPT.tar File parm/config/config.resources has been modified to fix EUPD job issue in job card resource. File sorc/build_fv3.sh and sorc/link_fv3gfs.sh changed to clear up development remark. Removed a developer directory that is not required for FV3_GFS_v16beta confiruration. commit e3972f1778242d696bcc4eb4a979d46373e8d193 Merge: 9f7eebaf6 671856ddf Author: Kate Friedman Date: Fri Nov 6 12:55:23 2020 -0500 Merge pull request #174 from NOAA-EMC/port2orion GFSv16 release hand-off state, Orion support, and additional low res R&D updates commit b096e2941e4817eace7d8d9e9173ca92a3f72944 Merge: 9fa9ffe97 670b97c26 Author: Kate Friedman Date: Fri Nov 6 10:54:07 2020 -0500 Merge pull request #173 from JessicaMeixner-NOAA/bugfix/rtofsissues Updates for RTOFS preprocessing for wave model commit 671856ddf96ff4ae2df8a5feacd1b184ce9b8702 Merge: 5383477af 9f7eebaf6 Author: Kate.Friedman Date: Thu Nov 5 20:43:26 2020 +0000 Sync merge with develop to resolve conflicts commit 5383477af879dd671dbab066b41eea7e2428e50f Author: Kate.Friedman Date: Thu Nov 5 18:46:43 2020 +0000 Change wavepostbndpnt to wait for fcst to end commit 201abf3e7ed9b5cb66bec43bcb9e4d34b3c6d5f9 Merge: f4ceb1826 9fa9ffe97 Author: kate.friedman Date: Thu Nov 5 12:10:32 2020 -0600 Merge remote-tracking branch 'origin/release/gfsv16.0.0' into port2orion * origin/release/gfsv16.0.0: Issue #1 - update WAFS tag to gfs_wafs.v6.0.14 and update dumpjb version to 5.1.0 modified: jobs/JGFS_ATMOS_POSTSND and jobs/rocoto/postsnd.sh to remove redundant variables in the two scripts and make them work for both EMC and NCO parallels. Issue #1 - update WAFS tag to gfs_wafs.v6.0.13 Rename Release_Notes.gfs.v16.0.0.txt to Release_Notes.gfs.v16.0.0.md Issue #1 - update WAFS tag to gfs_wafs.v6.0.12 for removal of in-cloud turbulence per AWC commit f4ceb182685a5d6d6fb18b2e40c48ae0623a0794 Author: Kate.Friedman Date: Thu Nov 5 14:49:08 2020 +0000 Hera updates for OUTPUT_FILETYPES and resources commit 896d19529c828a62574c835d6d372701588fe758 Author: kate.friedman Date: Wed Nov 4 10:19:17 2020 -0600 Set nth_fcst to 4 for C384 deterministic commit 37d01e9fc68517c39b66a1ab67453b016666d590 Author: kate.friedman Date: Tue Nov 3 14:06:59 2020 -0600 Tie DOIAU_ENKF to DOIAU and add DOIAU check for IAU_OFFSET and IAU_FHROT in config.base commit 1a11fd21740860275f9be14caf1e615691075414 Author: kate.friedman Date: Tue Nov 3 14:49:12 2020 +0000 Increase gfsfcst walltime for C192 commit 670b97c2673054b8d18a004390af0093520b1968 Author: jessica.meixner Date: Mon Nov 2 20:46:33 2020 +0000 updates for checking if RTOFS files exist and only processing RTOFS files for needed fhr commit 190b78c8d34f60e84c80b47a97cb4184e4e11fd9 Author: Kate.Friedman Date: Mon Nov 2 18:41:32 2020 +0000 Set nth_fcst to 4 for C384 on Hera to handle less memory commit 713c51eabc40b80e02314b5955b0efab3b235344 Author: Kate.Friedman Date: Mon Nov 2 17:54:49 2020 +0000 Add FDATE calculation to setup scripts and change FDATE in to parsed value in config.base.emc.dyn commit 306ea5f15120d808760bd58b247b5861a8813670 Author: kate.friedman Date: Mon Nov 2 10:43:20 2020 -0600 Reduce C384 nth_fv3 to 1 in config.fv3 commit 9fa9ffe97d23ad69c33658875c9b0c3440c2c97f Author: kate.friedman Date: Mon Nov 2 15:24:48 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.14 and update dumpjb version to 5.1.0 commit 24226384780c9c2438abec1864923f87371798d4 Merge: 705933436 a3b463859 Author: fanglin.yang Date: Fri Oct 30 19:48:13 2020 +0000 Merge branch 'release/gfsv16.0.0' of https://github.com/NOAA-EMC/global-workflow into release/gfsv16.0.0 commit 705933436f2f42d5fde17b8aa4a57918f2c66b6a Author: fanglin.yang Date: Fri Oct 30 19:46:51 2020 +0000 modified: jobs/JGFS_ATMOS_POSTSND and jobs/rocoto/postsnd.sh to remove redundant variables in the two scripts and make them work for both EMC and NCO parallels. commit c9e0566eb2e6179410583c14d48a971a79dc4c88 Author: Kate.Friedman Date: Thu Oct 29 20:50:46 2020 +0000 Revert epos change in setup_workflow.py commit a3b463859154c1127bb66764a65baa89929a0a5f Author: kate.friedman Date: Wed Oct 28 18:18:51 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.13 commit ab0577de3c4bbbdc58219fd1c95a142cf93b5f4a Author: Kate.Friedman Date: Wed Oct 28 13:52:34 2020 +0000 Issue #1 - update anal, eobs, and eupd resources for low res commit 97f1ae89baf37d8bd1940f179fecb6bdc1279fa2 Author: Kate.Friedman Date: Tue Oct 27 17:52:28 2020 +0000 Issue #1 - adjust epos groups for DOIAU/DOIAU_ENKF=NO commit cb6d74e0c7363f7e54d879a97f457f7d4a37d926 Author: Kate Friedman Date: Mon Oct 26 15:56:58 2020 -0400 Rename Release_Notes.gfs.v16.0.0.txt to Release_Notes.gfs.v16.0.0.md commit c09678fb33d0ece36de1af223b5cdf8384d5b9c3 Author: kate.friedman Date: Mon Oct 26 14:43:09 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.12 for removal of in-cloud turbulence per AWC commit 59f08b31916d3585aa9a4832dc9de865e3a350cf Merge: cbe5ddff8 1171a6223 Author: Lin.Gan Date: Thu Oct 22 19:47:42 2020 +0000 Merge remote-tracking branch 'upstream/port2orion' into feature/ccpp commit cbe5ddff8013a03a9391eead40796f9c30d7ca28 Author: Lin.Gan Date: Thu Oct 22 18:35:49 2020 +0000 Cycled warm start run using develop ufs-weather-model branch and feature/ccpp using merged branch on the 10/13 (4da0f) with feature/gfsv16b (31563). CPP_SUITE="FV3_GFS_v16beta" build_fv3 option: CCPP=Y 32BIT=Y SUITES=FV3_GFS_v15,FV3_GSD_v0,FV3_GSD_noah,FV3_GFS_v16beta wave is turned off for this test because it's for atmospheric physics and comparison. commit b7ece977f49c7a13aa39c3b57f0f06cf590d9ba6 Merge: 7728ce18f 09a669c4d Author: Kate Friedman Date: Thu Oct 22 11:07:24 2020 -0400 Merge pull request #165 from NOAA-EMC/release/gfsv15.3.3 GFSv15.3.3 commit 1171a62238f0877fc8956df669f07fc9a418c145 Author: Kate.Friedman Date: Thu Oct 22 14:01:31 2020 +0000 Issue #1 - increase wavepostbndpnt and wavepostpnt walltimes to give more time on Hera commit c3bab19722a8b301e9ac4d2367b7e3e5dc2d88e7 Author: Kate.Friedman Date: Wed Oct 21 20:13:38 2020 +0000 Fix wrong DATE in new if-block in config.anal for cold start checking commit 636ded675b81b15e8b3af2a211edf44f17972cf0 Author: kate.friedman Date: Tue Oct 20 19:23:16 2020 +0000 Issue #1 - add wtime_fcst_gfs time of 4hrs for C384 commit 4007f116adcde8372e590489d0faa0181babbc15 Author: kate.friedman Date: Tue Oct 20 18:29:15 2020 +0000 Issue #1 - fix firstcyc queue bug in workflow_utils.py on WCOSS commit ebdb058fd138a7aa408d69c967747686ea5b77d9 Author: kate.friedman Date: Tue Oct 20 13:23:05 2020 -0500 Issue #1 - resource updates from low res testing - set io_layout to "1,1" for low res gfs in config.fcst - set npe_wav[_gfs] to 140 for all resolutions, same wave grid - increase nth_fv3 to 4 for C192 and C384 - set smaller walltime for gfsfcst when resolutions less than C768 commit 3f0ab6ff2dd4ca42a45e68972b1936d398b32097 Author: Kate.Friedman Date: Tue Oct 20 17:55:18 2020 +0000 Issue #1 - increase C768 npe_eobs to 200 for Hera nodes with less memory commit d5b69c49ddbd03982db79f09707a49d01ef0b443 Merge: 4ebdd230c 794e6655c Author: Kate.Friedman Date: Tue Oct 20 16:56:27 2020 +0000 Merge remote-tracking branch 'origin/release/gfsv16.0.0' into port2orion * origin/release/gfsv16.0.0: Issue #1 - pull in corrected npe_eobs values in config.resources Issue #1 - update FV3 tag to GFS.v16.0.14 for Hera/Orion build support commit 4ebdd230c121a3c839829aa4ef855d80eb462549 Author: Kate.Friedman Date: Tue Oct 20 16:53:46 2020 +0000 Add UPP netcdf module library load to HERA.env to resolve runtime netcdf version mismatch commit 794e6655cb227973e47b2373d0e4c97bf297479e Author: kate.friedman Date: Tue Oct 20 16:45:58 2020 +0000 Issue #1 - pull in corrected npe_eobs values in config.resources commit 1d0cad425b1e163377bba8ace6622bbbb2d81de0 Author: Kate.Friedman Date: Mon Oct 19 19:24:55 2020 +0000 Issue #1 - add parm mon folder to ignore list and move parm section of ignore list up commit d632c87a8f2ce85d54fa45da14aa09f91a0ec680 Author: Kate.Friedman Date: Mon Oct 19 19:20:31 2020 +0000 Issue #1 - add FDATE to config.base commit 22d4118f4bc7853fa81f6505fd9aaf5bc6dab4f8 Author: Kate.Friedman Date: Mon Oct 19 19:12:29 2020 +0000 Issue #1 - save GFSv16 hand-off resource settings into new static nco configs commit 6fd73d7fdf40b291ff49193b606538b540e46139 Author: Kate.Friedman Date: Mon Oct 19 19:11:37 2020 +0000 Issue #1 - new FV3 tag that builds on Hera/Orion and update for building/running high res system on Hera commit 484550c13d8ef957478f20afd6e722f7f610bb8f Author: kate.friedman Date: Fri Oct 16 15:40:35 2020 +0000 Issue #1 - update FV3 tag to GFS.v16.0.14 for Hera/Orion build support commit 58dcf6d961f7478fec64a850e7bcd19ffd8f3741 Author: kate.friedman Date: Thu Oct 15 15:08:38 2020 -0500 Update .gitignore for script renaming and removed external files commit e3f8df65082853baa5a22ed3b242efdae66d40ba Author: kate.friedman Date: Thu Oct 15 11:59:58 2020 -0500 Add wave env updates into ORION.env, increase waveinit tasks, and update resources for analysis and efcs walltimes commit 4da0feaaf8b63ee4662be8be9c5f59d547164b0b Merge: ee0f27b3f 31563a598 Author: lin.gan Date: Tue Oct 13 20:51:48 2020 +0000 Merge remote-tracking branch 'origin/feature/gfsv16b' into feature/ccpp commit e5e7cf1ea61d99080ec95b446c1bee45a57321a3 Merge: a1a7ac949 4b2d26db3 Author: kate.friedman Date: Tue Oct 13 14:25:56 2020 -0500 Sync merge with release/gfsv16.0.0 branch commit 4b2d26db3b9b66ecfdd4756bfcddb6e16f255b03 Author: kate.friedman Date: Tue Oct 13 17:41:24 2020 +0000 Issue #1 - adjust WAFS dependencies to wait for f036 post output commit 9ef1999270e05c1ff5bae5ea5f737d9474c98b3d Author: kate.friedman Date: Fri Oct 9 19:27:09 2020 +0000 Issue #1 - adding release notes for GFSv16 commit bf21010067bf7587be93229a979da347278fd7eb Merge: d5e8be989 31563a598 Author: kate.friedman Date: Fri Oct 9 18:15:36 2020 +0000 Merge remote-tracking branch 'origin/feature/gfsv16b' into release/gfsv16.0.0 commit d5e8be989d1f2f45095fea17fcb5ed1385759e89 Merge: 7728ce18f 561e19532 Author: kate.friedman Date: Fri Oct 9 18:13:53 2020 +0000 GFSv16 package changes from feature/gfsv16b before final wave updates commit 31563a5982b26d7441e2673d68d1d1dac4fe231d Merge: bf27d0b4d 6edf0f7b3 Author: Kate Friedman Date: Thu Oct 8 19:03:10 2020 -0400 Merge pull request #158 from RobertoPadilla-NOAA/feature/gfsv16_wave_prdgen Feature/gfsv16 wave prdgen commit 6edf0f7b396587c4e014ba08fb6199461a970c41 Merge: 896ba3127 bf27d0b4d Author: wx21rph Date: Thu Oct 8 22:54:12 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16_wave_prdgen Generating awips files with masks and elimination wmo headers for Arctic Ocean commit 896ba31270185a1edaa3c6d32ec3c4295badf136 Author: wx21rph Date: Thu Oct 8 22:50:48 2020 +0000 Issue #94 producing awips files with masks and deleting wmo headers for arctic ocean commit bf27d0b4de54e6b873e20d784012c93384ad2358 Merge: 561e19532 959dac21e Author: Kate Friedman Date: Thu Oct 8 18:23:17 2020 -0400 Merge pull request #157 from JessicaMeixner-NOAA/feature/gfsv16b-wavegrids Adding wave grids to grib interpolation commit 959dac21e98ff96130f8e8c90a4b94b18c76f4f3 Merge: 50f33dd92 561e19532 Author: jessica.meixner Date: Thu Oct 8 21:57:29 2020 +0000 Merge remote-tracking branch 'EMC/feature/gfsv16b' into feature/gfsv16b-wavegrids commit 50f33dd92e1f78f8879cb037652b1b4393511842 Author: jessica.meixner Date: Thu Oct 8 21:44:23 2020 +0000 updates to add glo_30m to the created grib files for waves for awips processing commit 561e19532e68aaff69f5b2568c3ebb2a536b7149 Merge: 7421143a1 853a46199 Author: Kate Friedman Date: Thu Oct 8 16:10:32 2020 -0400 Merge pull request #156 from lgannoaa/feature/gfsv16b Modify gfs/gdas post job to 20 minutes in wall clock. commit 853a46199f2c59ff84422024b55a70e2679213ee Author: Lin.Gan Date: Thu Oct 8 19:55:56 2020 +0000 Modify gfs/gdas post job to 20 minutes in wall clock. commit 7421143a169264c8480aea5970a6d67f9bc56c43 Author: kate.friedman Date: Thu Oct 8 18:40:28 2020 +0000 Issue #1 - update link_fv3gfs.sh to point to newly frozen fix_nco_gfsv16 FIX_DIR commit 8ac89aee11e7099303600ba6df8e3d4bf4d70a66 Merge: db9fa1730 eb4ad338d Author: Kate Friedman Date: Thu Oct 8 14:37:11 2020 -0400 Merge pull request #155 from lgannoaa/feature/gfsv16b Further ecflow updates commit eb4ad338dfa1f51c9ec4ada58601ffd3f6894d7f Author: Lin.Gan Date: Thu Oct 8 17:58:29 2020 +0000 Modify two wafs jobs trigger as: jgfs_atmos_wafs_grib2 trigger ../../post/jgfs_atmos_post_f000 == complete jgfs_atmos_wafs_grib2_0p25 trigger ../../post/jgfs_atmos_post_f036 == complete commit 589b1df4d5637f6e4521e79d4f286a463da477f3 Merge: 445a16b03 db9fa1730 Author: Lin.Gan Date: Thu Oct 8 17:46:36 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit db9fa173028efd7ed796024a2f4753629e91922b Author: kate.friedman Date: Thu Oct 8 16:01:50 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.10 and change WAFS job dependencies commit 2a0c9739631ae4b1305a2653a1783cce287aeb96 Author: kate.friedman Date: Thu Oct 8 15:12:10 2020 +0000 Issue #1 - update config.fv3 and config.resources with v16rt2 values commit b5fbac7affc200e2c9a420f81615d0ae80b1dacf Merge: 5dac33742 6402996f0 Author: Kate Friedman Date: Thu Oct 8 10:36:43 2020 -0400 Merge pull request #154 from CoryMartin-NOAA/bugfix/eobs_resources Change config.resources for eobs for low resolution cases commit 5dac33742edd372a4e9b08c0b3029bb928cc569b Author: kate.friedman Date: Thu Oct 8 14:35:23 2020 +0000 Issue #1 - update gfs_util modulefiles commit 6402996f0cb5f787d04ac08efc8dd92dca767618 Author: CoryMartin-NOAA Date: Thu Oct 8 14:28:02 2020 +0000 Change config.resources for eobs for low resolution cases commit aae0912df6b1398cdad563495475916970590b1a Author: kate.friedman Date: Thu Oct 8 13:51:06 2020 +0000 Issue #1 - update to fbwndgfs modulefiles for WCOSS-Dell and WCOSS-Cray commit 244e91ca0caf433f82e6e709413db4bac40aade2 Merge: 3bdda7fb5 3b051e93a Author: Kate Friedman Date: Thu Oct 8 09:40:24 2020 -0400 Merge pull request #153 from JessicaMeixner-NOAA/bugfix/wavedependency update wave post pnt dependency commit 5962e117f93f1fc9f040f97b9446bcf9dc1138e1 Author: jessica.meixner Date: Thu Oct 8 11:24:41 2020 +0000 updates to parm to reduce the number of wave variables changes to the config so that wave models are interpolated to the multi_1 masked files for the regional output grids commit 445a16b030384a84c60318600a5ccdeeccbd063b Author: Lin.Gan Date: Thu Oct 8 04:03:32 2020 +0000 Modify module for each job to match implementation package change Modify two wafs jobs trigger Modify wall clock and resource for running jobs in NCO Modify obsproc package location commit 3b051e93adf60717f446564a08e5f3a11fd742af Author: jessica.meixner Date: Thu Oct 8 01:10:14 2020 +0000 add a dependency for the wavepostpnt on wavepostbndpnt for just gfs as this job does not exist for gdas commit 9f7eebaf6b980fd78498c51087d4333f5e56cb74 Author: kate.friedman Date: Wed Oct 7 20:36:19 2020 +0000 Temporarily peg GSI checkout to hash of release branch commit 3bdda7fb50676d25dbc03fffa739889a141b913c Author: kate.friedman Date: Wed Oct 7 17:36:27 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.9 commit 3a700dbda1d6f6ef965cf2fbf30cfdf6cb2a8fe2 Author: kate.friedman Date: Wed Oct 7 14:36:02 2020 +0000 Issue #1 - remove POE/BACK block from config.prep and set POE=YES/BACK=off as defaults in env/WCOSS_DELL_P3.env prep section commit 8cc7d57be3c1d08529dd37633a83a6ffa8ca94b3 Author: kate.friedman Date: Wed Oct 7 14:30:19 2020 +0000 Issue #1 - remove unneeded DMPDIR and ICSDIR from config.base.nco.static commit 343ea3daece25bfeb1f8e870d361a364d1c228f0 Merge: 22f2a407e b57cd17da Author: Kate Friedman Date: Wed Oct 7 09:47:18 2020 -0400 Merge pull request #152 from JessicaMeixner-NOAA/feature/addwavedependency for rocoto add a dependency to wavepostpnt job on wavepostbndpnt commit b57cd17dafee5415b4955fcd8bbc76eb27e88740 Author: jessica.meixner Date: Wed Oct 7 13:19:50 2020 +0000 for rocoto add a dependency to wavepostpnt job on wavepostbndpnt so that both jobs will not run at the same time which will slow both jobs down. This is the reason for the dependency, otherwise there is not a "true" dependency between the jobs commit 22f2a407e853b7d5342ee52faa53affdb25ac44e Author: kate.friedman Date: Tue Oct 6 20:38:42 2020 +0000 Issue #1 - return POE=YES and BACK=off setting for prep on WCOSS_DELL_P3 commit c530316d07ae129f26907b2cae2079b55b37d0c2 Author: kate.friedman Date: Tue Oct 6 19:32:52 2020 +0000 Issue #1 - remove hardcoded POE and BACK values from config.prep commit aece8baef1cd2f46991cb1235c315e228f7b661e Author: kate.friedman Date: Tue Oct 6 19:02:37 2020 +0000 Issue #1 - move ABIBF, AHIBF, and HDOB pointers into RUN_ENVIR=emc block commit c75766cd176802242f003ad3612aadff02563fb2 Author: kate.friedman Date: Tue Oct 6 18:17:35 2020 +0000 Issue #1 - update config.fv3 based on real-time parallel commit f79ec7e0ce356213681e8c87655bb3fb66df16f1 Author: kate.friedman Date: Tue Oct 6 17:40:16 2020 +0000 Issue #1 - update prep job resources commit 577b060e63b1f47c77fd8e7a2d1b7f111fe6fcd4 Author: kate.friedman Date: Tue Oct 6 16:08:07 2020 +0000 Issue #1 - update g2tmpl module load in modulefiles/module_base.wcoss_dell_p3 commit c28d8cea538cdcdfc8557cb71120436edd86e313 Merge: 6197bc623 1b79fd35e Author: Kate Friedman Date: Tue Oct 6 11:16:32 2020 -0400 Merge pull request #150 from NOAA-EMC/feature/gfsv16b_updates nwtest module library and tag updates commit 1b79fd35e79fe7d0bc8eb460dfc08d44261fc470 Author: kate.friedman Date: Tue Oct 6 14:34:26 2020 +0000 Issue #1 - config updates from real-time parallel commit 11ca41294784278dc425e1ca1320253239a85d40 Author: kate.friedman Date: Tue Oct 6 13:44:29 2020 +0000 Issue #1 - remove unneeded line in vrfy.sh and update link_fv3gfs.sh for UFS_UTILS execs commit 97e9d7f2d75bb7167b56aaa70c53f53e4a189192 Author: kate.friedman Date: Mon Oct 5 18:50:40 2020 +0000 Issue #1 - update GSI tag to gfsda.v16.0.0 commit f6689d462ba4528c99a2a331ae8890759ba25ecb Merge: 01e362089 8048cd028 Author: Kate Friedman Date: Mon Oct 5 14:05:27 2020 -0400 Merge pull request #149 from GuangPingLou-NOAA/feature/gfsv16b Add 6 bufr stations to the bufr sounding output commit 01e362089fbf71a962fcdfc7db48f243b74e2e50 Author: kate.friedman Date: Mon Oct 5 17:09:04 2020 +0000 Issue #1 - update component tags and modulefiles for nwtest lib updates, remove unneeded module load and modulefile from downstream wave job rocoto scripts commit 6197bc623013d7fca82c556f3fb51c15832578b3 Merge: 451669a8f cd86b0edd Author: Kate Friedman Date: Mon Oct 5 10:47:08 2020 -0400 Merge pull request #148 from NOAA-EMC/feature/gfsv16b_updates Updates to optimize wave post jobs commit cd86b0eddd305483007e1381d0d4a7256fa05680 Merge: 9b32bf0c8 95bc516af Author: kate.friedman Date: Mon Oct 5 14:16:50 2020 +0000 Merge branch 'feature/gfsv16b_updates' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b_updates commit 9b32bf0c83ac9eb38f8d3b1b405b704b26c6592a Author: kate.friedman Date: Mon Oct 5 14:16:21 2020 +0000 Issue #1 - adjust error handling in wave rocoto job scripts commit 8048cd0285c8b9c8606673b04d60e8a137fe89b8 Author: Guang.Ping.Lou Date: Sat Oct 3 00:45:21 2020 +0000 issue #142 generate station i,j grid commit e4e4b84235344b6da44ae732020115581abb9afe Author: Guang.Ping.Lou Date: Sat Oct 3 00:45:00 2020 +0000 issue #142 generate station i,j grid commit 68e5fd7279bf1f9c30fa4daa16bf44795f5e91f6 Author: Guang.Ping.Lou Date: Sat Oct 3 00:44:46 2020 +0000 issue #142 generate station i,j grid commit fcf1f415333d53fe3a97546d4a16de55d6e1d703 Author: Guang.Ping.Lou Date: Sat Oct 3 00:43:49 2020 +0000 issue #142 add 6 bufr station data commit 026b4e0a2ec1da85a3cc8c73053dd85fd4d56439 Author: Guang.Ping.Lou Date: Sat Oct 3 00:42:58 2020 +0000 issue #142 add 6 bufr stations for Thailand TMD commit faaf8041faeecbc4c39cb37782bbe291ebd7a011 Author: Guang.Ping.Lou Date: Sat Oct 3 00:41:09 2020 +0000 issue #145 change dev path to prod for parallel netcdf modules commit e6ba71f58ab5e88957f12fc742fded77a58f75d2 Author: Guang.Ping.Lou Date: Sat Oct 3 00:40:34 2020 +0000 issue #145 change dev path to prod for parallel netcdf modules commit 95bc516af61e4aa35997f45ea625773f947c2125 Merge: 28904cddc a4d0e4d7a Author: Kate Friedman Date: Fri Oct 2 15:34:48 2020 -0400 Merge pull request #143 from JessicaMeixner-NOAA/feature/gfsv16b-wave-byhr optimize wave post and EE2 commit 451669a8f8d7778addd7bbd090d2fe71c9a6e3f8 Merge: 340f849f1 28904cddc Author: Kate Friedman Date: Fri Oct 2 15:32:41 2020 -0400 Merge pull request #144 from NOAA-EMC/feature/gfsv16b_updates Issue #1 - updates for modules and small fixes commit 28904cddca4d3e432f6b155ae018b6a081aea82e Author: kate.friedman Date: Fri Oct 2 19:05:10 2020 +0000 Issue #1 - updates for modules and small fixes - fix to run ens_tracker without tclogg module in modulefiles/module_base.wcoss_dell_p3 - fix to sorc/syndat_qctropcy.fd/qctropcy.f for compile warning - fix to gfswaveawipsbulls dependency in setup scripts - update to bufr/11.3.0 from bufr/11.2.0 in modulefiles - add override ability for POE for prep jobs in env/WCOSS_DELL_P3.env commit a4d0e4d7a063c14f711bee5ef32cd0b183121ea7 Author: jessica.meixner Date: Fri Oct 2 18:59:22 2020 +0000 reverting changes to configs that were not intented to be committed commit 2e6ba320b39b50030c8097a09700e2eb81cb724a Merge: cb7b27c96 340f849f1 Author: jessica.meixner Date: Fri Oct 2 18:08:59 2020 +0000 Merge remote-tracking branch 'EMC/feature/gfsv16b' into feature/gfsv16b-wave-byhr commit cb7b27c96c59388e39283b2c01aff2da92fcedbf Author: jessica.meixner Date: Fri Oct 2 18:08:16 2020 +0000 fix resource time estimates commit d51a260adc0fb003730ae4090c528856ac18be93 Author: jessica.meixner Date: Fri Oct 2 18:04:50 2020 +0000 bug fix in exgfs_wave_post_pnt.sh commit 340f849f1cad6b562a941f15318eaf2d050743f1 Merge: 897286fbd d5457ec1e Author: Kate Friedman Date: Fri Oct 2 12:00:00 2020 -0400 Merge pull request #141 from RobertoPadilla-NOAA/feature/gfsv16_wave_prdgen Updates to downstream wave jobs commit 2b2635d441beb988e6c09a329eb80e1d519266ee Author: jessica.meixner Date: Fri Oct 2 14:38:06 2020 +0000 update resources and trigger from 192->180 commit 56193a6bf9e8942edd54b7b7078143a3c91bc77f Author: jessica.meixner Date: Fri Oct 2 14:10:05 2020 +0000 last of EE2 changes commit ad5dcff885c3690f991936412453506deed543a6 Author: jessica.meixner Date: Fri Oct 2 14:01:25 2020 +0000 updates for EE2 from waves commit d5457ec1e15e670677eea3171e68df20e4d6ca53 Merge: 4c488d309 897286fbd Author: wx21rph Date: Thu Oct 1 19:02:34 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16_wave_prdgen Issue #94 Adding error capture in the Jjobs commit 4c488d30947cf556d6cbf05d570fa6c41ae59ffb Author: wx21rph Date: Thu Oct 1 18:45:21 2020 +0000 Issue #94 fix for failing silently commit 897286fbdfea6a8d5765f9d89ab7c586bcadb201 Author: kate.friedman Date: Thu Oct 1 18:14:37 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.8 commit e133c5d1d509781824140f5ec1d302502394dc89 Merge: a25a7deac 545742c42 Author: Kate Friedman Date: Thu Oct 1 09:13:05 2020 -0400 Merge pull request #140 from lgannoaa/feature/gfsv16b Update ecflow scripts for GFSv16 commit ee0f27b3f4e3e544be791b3554dd57a808b66e4c Author: Judy.K.Henderson Date: Wed Sep 30 22:21:02 2020 +0000 - updated to use 28Sep develop ufs-weather-model, d021e7b0395ccac2b7a30b414b58a8c924d2784f f61416fef691d9ba39a40df1ce72aa574f54c390 FMS (2019.01.03) 9e1ba7c7448a8d009f39b5588e9498a7dbab1c60 FV3 (heads/develop) 9d05172b711f4ab5d6f978dbe575bd67a681b55a NEMS (heads/develop) 96e3f3a8fa0389a4b110b0fa23e7a414f6d92038 WW3 (6.07.1-50-g96e3f3a8) ffdd19bc6c1df747394b7e9958a76238fcd44242 stochastic_physics (ufs-v1.0.0-70-gffdd19b) - changed compilation options in build_fv3.sh - removed fv3gfs.fd_jkh directory since changes are already in develop branch - updated getic script to retrieve files after 00Z 26Feb20 from mass store with prefix name of 'com' commit 8f79b61ab8b0c7ed17b707eaae7736a3aedd33ef Merge: cc9e98a6d a25a7deac Author: wx21rph Date: Wed Sep 30 16:09:27 2020 +0000 Issue #94 solving conflicts commit cc9e98a6d03fa422f5080626da02426c174e2b45 Author: wx21rph Date: Wed Sep 30 15:23:29 2020 +0000 Issue #94 add native grids as default grids commit 545742c42c635d24c360a8c9b0902483cab66359 Merge: 65ba88e5a a25a7deac Author: Lin.Gan Date: Wed Sep 30 14:05:40 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit a25a7deac9053dbb2ce119e3754f32c2d3f225b9 Author: russ.treadon Date: Tue Sep 29 22:46:35 2020 +0000 Issue #1: update name of ncdiag executable and source code directory to be conistent commit 2eab17ce11be26c7d113e16e3a9159e0e6395cac Author: jessica.meixner Date: Tue Sep 29 19:05:21 2020 +0000 cleaning up the rearranged scripts commit 65ba88e5ad97a560e4b1c6dd7a3568185e5ccbd9 Author: Lin.Gan Date: Tue Sep 29 18:22:29 2020 +0000 Jobs were tested with PDY 20200925, code managers from post, gempak, wave, and post process certified the test run result. This merge included an update from high watermark testing (tested by gfs team using devonprod) results impact the following jobs: jgfs_atmos_analysis.ecf jgfs_forecast.ecf jgdas_atmos_analysis.ecf jgdas_enkf_update.ecf jgdas_enkf_ecen.ecf commit d86cfee7befd1d97c9ff6fd8cb58d2f9c9f9f1d8 Merge: abe24e279 69bdae3e7 Author: jessica.meixner Date: Mon Sep 28 18:47:23 2020 +0000 Merge remote-tracking branch 'EMC/feature/gfsv16b' into feature/gfsv16b-wave-byhr commit 121bafee1e227119ddcba233da5b59af242128e4 Merge: 0d7ba5fb2 69bdae3e7 Author: Lin.Gan Date: Mon Sep 28 18:42:03 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit 95f03be594d2944f14f0f6baa600bae27691e891 Merge: 7278b0677 69bdae3e7 Author: Guang.Ping.Lou Date: Mon Sep 28 17:30:03 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit 69bdae3e7cdb35db28d899b7384daab48e888eb4 Author: russ.treadon Date: Mon Sep 28 16:58:47 2020 +0000 Issue #1: update parm/config.vrfy to define VSDBJOBSH (used by jobs/rocoto/vrfy.sh) commit abe24e279666ecccb27fb875322373b4920a66d3 Merge: d4ebc2e67 ef6d2c5ca Author: jessica.meixner Date: Fri Sep 25 21:56:05 2020 +0000 Merge remote-tracking branch 'EMC/feature/gfsv16b' into feature/gfsv16b-wave-byhr Conflicts: parm/config/config.resources commit 0d7ba5fb286ac280efda5510a23e2dbf625ba19a Author: Lin.Gan Date: Fri Sep 25 21:34:42 2020 +0000 Code manager indicated all wafs jobs wall clock is 30 mins. Code manager indicated job card for scripts/gfs/atmos/gempak/jgfs_atmos_pgrb2_spec_gempak.ecf need to be changed commit 998228f94e36f63a0586f431fbcd32fb646d0ee6 Author: Lin.Gan Date: Fri Sep 25 21:02:57 2020 +0000 The EMC realtime parallel does not use operational job settings. Ecflow job card roll back the setting from module_used_gfs-16_job google sheet document. commit 0e700ef159835510b3e3d02d27448826cb8dd914 Merge: 9b8e2f3a2 ef6d2c5ca Author: Lin.Gan Date: Fri Sep 25 19:49:13 2020 +0000 Bring change from upstream_feature_gfsv16b commit ef6d2c5ca3243c579615ee47bcef494bc42f335e Author: kate.friedman Date: Fri Sep 25 16:17:05 2020 +0000 Update GLDAS tag to gldas_gfsv16_release.v1.10.0 commit a9f8cb2616259b5610b9d101b5f9e50ea3013a2e Author: kate.friedman Date: Fri Sep 25 16:06:11 2020 +0000 Update gfswafs job to run with loop over fcsthrs commit 8187a31eca915184a43c0649db0170271b4ee6a9 Author: russ.treadon Date: Fri Sep 25 14:06:43 2020 +0000 Issue #1: update vrfy.sh to submit vsdb processing as separate job (only on WCOSS_DELL_P3) commit 320f33033ac0f6f6919bd933c0a18d2a4088fcd6 Author: Roberto Padilla Date: Thu Sep 24 23:29:10 2020 +0000 Issue #94 add /fakedbn to run DBN_alerts commit 0d2c6280ac80d944ea7e9e2700430f42d24b3867 Merge: f98765509 83655eda7 Author: Kate Friedman Date: Thu Sep 24 17:17:17 2020 -0400 Merge pull request #139 from NOAA-EMC/feature/gfsv16b_jobname Update script names to match ecflow convention commit 83655eda76114414f39c5e32a61b93186b42ac3c Author: kate.friedman Date: Thu Sep 24 18:30:00 2020 +0000 Update config.awips for newly named JJOB scripts commit 2f5fb01d02516a6fe72664c54cd97a5585f99a3f Author: kate.friedman Date: Thu Sep 24 18:20:14 2020 +0000 Update WAFS jobs/rocoto scripts to use new JJOB names commit cb4a7bb6b507c2e3105d6fa8235edea0889e9bd9 Author: Judy.K.Henderson Date: Thu Sep 24 17:19:55 2020 +0000 modifications to python scripts remove aeroic task from setup_workflow_fcstonly.py delete setup_workflow_fcstonly_noaeroic.py add setup_workflow_fcstonly_aeroic.py commit 9b8e2f3a2b782c9dc602c620ce7efc2f7210d6dd Author: lin.gan Date: Thu Sep 24 15:30:45 2020 +0000 Making J-Job naming change accourding to code manager. Remove temp files commit ff50171eea7b99c7e89b0b773824464da5fe949f Author: kate.friedman Date: Thu Sep 24 14:24:23 2020 +0000 Update post.sh UPP JJOB script name to submit commit 3568bdf3aec8e53853686f3bd8d3470e9f547af1 Author: lin.gan Date: Wed Sep 23 21:38:36 2020 +0000 As requested from management, point ufs-weather-model to development: b8c5c22b2a2effe7b925fae1fa449ddec96be848 git submodule f61416fef691d9ba39a40df1ce72aa574f54c390 FMS (2019.01.03) 6bc61df3c363f9134a46439ff4a5a4a803daafb1 FV3 (heads/develop) 9d05172b711f4ab5d6f978dbe575bd67a681b55a NEMS (heads/develop) 96e3f3a8fa0389a4b110b0fa23e7a414f6d92038 WW3 (6.07.1-50-g96e3f3a8) ffdd19bc6c1df747394b7e9958a76238fcd44242 stochastic_physics (ufs-v1.0.0-70-gffdd19b) Remove aerosol from checkout commit 0eb85537f30b1c89ed160374e2e7f8470d7a20d0 Author: lin.gan Date: Wed Sep 23 18:42:52 2020 +0000 Modify each ecflow script with old j-job name for test. Modify the following in each definition file. - ecen family require new extern from previous cycle - Job jgfs_atmos_npoess_pgrb2_0p5deg trigger changed to be (requested from code manager): 1. jgfs_atmos_post_manager:release_post180 - Job jgdas_enkf_select_obs trigger changed to be: 1. previous cycle enkf post complete 2. current cycle jgdas_atmos_analysis_calc complete (new job) Tested as of 9/21/2020 before production switch with following condition: 1. Known issue in wafs gcip. Job failed. Waiting for code manager to fix. 2. obsproc testing still on going. 3. Code manager still updating j-job and ex-script names. Testing in hold until package is ready and WCOSS availability. commit 9fb09168c9aa2057a0c919f66bdf43b8e4e3a545 Author: kate.friedman Date: Wed Sep 23 15:41:20 2020 +0000 Update config.base.nco.static with config.base.emc.dyn changes commit a1a7ac9495446976b9e9ccae48a39bb4b868c19b Merge: ee4bc2b72 70f5064e8 Author: kate.friedman Date: Wed Sep 23 10:19:52 2020 -0500 Issue #5 - sync merge with feature/gfsv16b_jobname commit 70f5064e8e345e073d9c0dc7da812d0a2a51d91d Author: kate.friedman Date: Wed Sep 23 14:00:07 2020 +0000 Script name updates for sfc_prep and tracker commit 4346c03a1aaf1cf1429a59b6a5682065c2c6e51b Author: kate.friedman Date: Wed Sep 23 13:51:44 2020 +0000 Name change for tropcy scripts and update WAFS tag commit af8f685382eda16a0dcf02c26917fe57e4b32a58 Merge: 12f16a874 f98765509 Author: lin.gan Date: Tue Sep 22 21:16:05 2020 +0000 Merge feature_gfsv16b into feature_ccpp for testing commit 0ef9e49d9752643fa3ebdc8fc0ef9768968836d2 Author: kate.friedman Date: Tue Sep 22 17:50:35 2020 +0000 Fixing spelling mistake in config.gldas commit 9fdb9eef052586c36abf034cd335ec649bf9cf19 Merge: 869dfa350 f98765509 Author: lin.gan Date: Tue Sep 22 17:13:20 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit 4b1affe520e0610c14168ccba4ef3439a3b7a966 Author: BoiVuong-NOAA Date: Tue Sep 22 16:39:39 2020 +0000 Updated drivers and release notes commit 2ed155ccee58d3cc72d7fdf6577806c7a14e58e9 Author: BoiVuong-NOAA Date: Tue Sep 22 15:55:01 2020 +0000 Updated scripts commit 6d171bc82f2c63f146fe1cf760c350b2effc20e6 Author: Wen Meng Date: Tue Sep 22 15:26:37 2020 +0000 Update Externals.cfg with new UPP tag upp_gfsv16_release.v1.0.16. commit 4b4069b715c9ebcc5122b79a1508f70ad7c78b46 Author: Wen Meng Date: Tue Sep 22 14:59:24 2020 +0000 1)Update sorc/checkout.sh with new UPP tag upp_gfsv16_release.v1.0.16. 2)Update sorc/link_fv3gfs.sh with new file name convention for jjob and ex-script of post processing part. commit c071ac0159cce98ea98ce5fa8dc5337b284ad136 Author: BoiVuong-NOAA Date: Tue Sep 22 14:48:45 2020 +0000 Updated jobs name commit ea13d0c9146457aadd65d567fda794beeeef6c7d Author: kate.friedman Date: Tue Sep 22 14:27:47 2020 +0000 Update EMC_verif-global tag to verif_global_v1.11.0 commit 92e69985706cf62cdd7b383fd45c4cd50f937053 Author: kate.friedman Date: Tue Sep 22 14:15:24 2020 +0000 Rename scripts to match ecf script naming convention. Add SENDDBN and DBNROOT. Update GLDAS tag. commit 37ae040a0f21ec344228128e3e79910059c3b734 Author: fanglin.yang Date: Tue Sep 22 04:30:58 2020 +0000 In anticipating changes from the GLDAS repo : renaming JGDAS_GLDAS to JGDAS_ATMOS_GLDAS, and exgdas_gldas.sh to exgdas_atmos_gldas.sh modified: driver/gdas/test_gdas_gldas.sh jobs/rocoto/gldas.sh parm/config/config.gldas sorc/link_fv3gfs.sh commit c58b93a61f77d65f042f8226445163029ebd9f8d Author: fanglin.yang Date: Tue Sep 22 04:06:06 2020 +0000 renamed: jobs/JGFS_POSTSND -> jobs/JGFS_ATMOS_POSTSND renamed: scripts/exgfs_postsnd.sh -> scripts/exgfs_atmos_postsnd.sh modified: docs/archive/README_bufr driver/product/run_postsnd.sh driver/product/run_postsnd.sh.cray driver/product/run_postsnd.sh.dell driver/product/run_postsnd.sh.hera driver/product/run_postsnd.sh.jet parm/config/config.postsnd commit bec1b83027e162e4c083464d2cdb3fbdbd5168e8 Author: fanglin.yang Date: Tue Sep 22 03:51:02 2020 +0000 renamed: scripts/exglobal_fcst_nemsfv3gfs.sh -> scripts/exglobal_forecast.sh and modified jobs/JGLOBAL_FORECAST parm/config/config.fcst commit d4ebc2e6798d13af1ced8a51899e80e209a13c71 Author: jessica.meixner Date: Mon Sep 21 18:28:15 2020 +0000 updates for optimizing point jobs commit 7278b0677be6168a9695fca6c2e08154d9af0f63 Merge: 928e3e4b5 f98765509 Author: Guang Ping Lou Date: Fri Sep 18 18:35:06 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit f98765509cc7fc0e7b8979abfc73dbc5db035825 Author: kate.friedman Date: Fri Sep 18 16:58:57 2020 +0000 Issue #1 - update SEND variables and add DBNROOT to base configs and add check to build_enkf_chgres_recenter_nc.sh for GSI build commit e9e8d63db112ab8f5e15de08a1714cfebd386a2a Author: kate.friedman Date: Fri Sep 18 15:18:48 2020 +0000 Issue #1 - update to UFS_UTILS ops-gfsv16.0.0 tag commit 3df7625d74012552cf69fcfe7c0b5384b860c999 Author: kate.friedman Date: Fri Sep 18 13:25:00 2020 +0000 Issue #1 - fix to link_fv3gfs.sh for new GLDAS tag commit 928e3e4b53e969f8ecdd3544c3bf2668b57c66b3 Merge: dd0814266 1fc7bde9b Author: Guang Ping Lou Date: Thu Sep 17 20:00:17 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit dd08142664e5695e3f27890c0560f0b5e48841a8 Author: Guang Ping Lou Date: Thu Sep 17 19:57:20 2020 +0000 Issue #131 Unify dbn_alert path commit 1fc7bde9b7f99da7d0430387ec4a547e73ea641b Author: russ.treadon Date: Thu Sep 17 19:37:41 2020 +0000 Issue #1: update to UPP tag "upp_gfsv16_release.v1.0.15" commit 9eae5a8af39c4a8c5d47c16725ccc62b5d3c60cf Merge: ce1c78255 99c150992 Author: Kate Friedman Date: Thu Sep 17 13:46:58 2020 -0400 Merge pull request #135 from KateFriedman-NOAA/feature/gfsv16b-down Small updates to downstream jobs and tag updates commit 99c1509923399845ba794cb8fad981d12935dd03 Author: kate.friedman Date: Thu Sep 17 13:13:14 2020 +0000 Fix for running prep on Hera commit 869dfa350a013f66e5fdca66aa9b1f0192c1570c Author: lin.gan Date: Wed Sep 16 21:25:10 2020 +0000 ecflow full day cycle included commit 515eeb5c6b188e873b304619c40c9a6efcfd9046 Author: kate.friedman Date: Wed Sep 16 19:53:26 2020 +0000 Update WAFS tag to gfs_wafs.v6.0.6 commit 89f138af89814c865331b9aefcb8450b5915d1f7 Author: kate.friedman Date: Wed Sep 16 16:33:21 2020 +0000 Small updates: - new UPP tag - new GLDAS tag - new WAFS tag - new module for WAFS - EE2 updates to awips scripts - added WAFS to archival - break downstream and WAFS archival into separate gfs_downstream tarball - update gfsarch dependencies to wait for all wavepost jobs to complete commit 9930e8770a2940c46e22b243c11d2ac14f95611a Merge: b3433d59d ce1c78255 Author: lin.gan Date: Wed Sep 16 13:25:36 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit b100c22b5bfcf455ff3ff15bd71f0ddc15f1d071 Author: Guang Ping Lou Date: Tue Sep 15 18:57:21 2020 +0000 Issue #131 reduce scripts output to logfile commit 6866e6cd2ef1e76dd58de27ebb7d68b2bd3fa304 Author: Guang Ping Lou Date: Tue Sep 15 18:55:03 2020 +0000 Issue #131 added a path to DBNROOT commit b3433d59d1d5b75f015b0e044a8b4e03d55407f7 Author: Lin.Gan Date: Tue Sep 15 17:59:32 2020 +0000 Adding wafs wave and downstream jobs commit 4c7ccd466bc71b3e73194ffc48385225e01e7c0c Author: Jessica.Meixner Date: Tue Sep 15 15:29:44 2020 +0000 updates for by hour post commit ce1c78255f4bf8f40c2f116547062c7f1b3832c5 Author: russ.treadon Date: Tue Sep 15 10:25:37 2020 +0000 Issue #1: add fhrgrp and fhrlst back to gfsawips in setup_workflow.py (bugfix) commit 67b33dd15633345e0fd59dd37728c26b36d4c0b3 Merge: c33869dab 586fe6ce1 Author: Kate Friedman Date: Mon Sep 14 10:34:39 2020 -0400 Merge pull request #130 from JessicaMeixner-NOAA/bugfix/rtofs Bugfix for rtofs commit 586fe6ce19c5fc281dec16be3347d0311f3e99ce Author: Jessica.Meixner Date: Mon Sep 14 14:29:01 2020 +0000 adding the line to go back a day for RTOFS for the if not NCO section because RTOFS will not be available until 06 cycle commit 15fcb8a46e2cbc93282d1ad038e6decc5fcdacfb Author: Lin.Gan Date: Mon Sep 14 13:30:24 2020 +0000 Restructured ecflow - up to post step commit c33869dab2704396ea6e569dcd202a2b9866827a Author: fanglin.yang Date: Mon Sep 14 02:34:08 2020 +0000 deleted relocate_mv_nvortex.fd since storm relocation is no longer needed. modified build_tropcy_NEMS.sh to remove references to relocate_mv_nvortex commit 4320bf9fd55757df79b63ed15c2041b1acd0e604 Author: russ.treadon Date: Sat Sep 12 00:05:38 2020 +0000 Issue #1: correct DA typos in sorc/link_fv3gfs.sh commit 674cd841a7be3a2a9c772cd455ab980195ea9fcc Merge: 46c2404eb ad1a9d904 Author: Kate Friedman Date: Fri Sep 11 15:06:36 2020 -0400 Merge pull request #124 from JessicaMeixner-NOAA/feature/gfsv16b-wave Splitting post jobs for waves commit ad1a9d9044e89b75ec82bb201e35005552d3d177 Merge: 986f8f0b9 fd687727b Author: Jessica Meixner Date: Fri Sep 11 14:01:35 2020 -0400 Merge pull request #4 from KateFriedman-NOAA/feature/gfsv16b-splitwavepost Sync with feature/gfsv16b and small updates to split wave post changes commit fd687727b2df80f81fabc41b94f808b74e68783c Merge: 986f8f0b9 fc60e895d Author: kate.friedman Date: Fri Sep 11 17:52:30 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b-wave' into feature/gfsv16b-splitwavepost commit fc60e895dea1c123a4b8e02b50df0d0cfa43f77f Author: kate.friedman Date: Fri Sep 11 17:45:03 2020 +0000 Increase walltime for new wavepost jobs commit e0dd1097de2c335400a546137569886a838c46ba Merge: 0844b0043 46c2404eb Author: kate.friedman Date: Fri Sep 11 14:20:15 2020 +0000 Merge branch 'feature/gfsv16b' into feature/gfsv16b-wave commit 46c2404eba485d08e381ef81ebd5ac10c5ad605f Merge: c55465702 9d9b79c91 Author: Kate Friedman Date: Fri Sep 11 10:15:49 2020 -0400 Merge pull request #128 from RobertoPadilla-NOAA/feature/gfsv16_wave_prdgen Feature/gfsv16 wave prdgen commit c554657023d82ac934b481593e55406c45157932 Author: russ.treadon Date: Fri Sep 11 13:59:51 2020 +0000 Issue #1: update name of DA jobs and scripts in accordance with WCOSS Implementation Standards commit 9d9b79c911add71065b0999821772d026609ad62 Merge: cb78f7b83 d3946f900 Author: wx21rph Date: Fri Sep 11 13:48:19 2020 +0000 Issue #94 solving a conflict commit cb78f7b839a7b5fd5082f39592e3b450ce059e82 Author: wx21rph Date: Fri Sep 11 13:21:41 2020 +0000 Issue #94 add waves-prdgen, ICE->ICEC, Sleep in gempak script commit b4a99e3d8b2f6a3837084ddfb08da6a667de81e0 Merge: edb913733 e61485661 Author: Lin.Gan Date: Fri Sep 11 13:19:13 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/lgannoaa/global-workflow into feature/gfsv16b commit 0a01661b9594e07381cb0039abad198d7e9eca04 Merge: 6698047df d3946f900 Author: kate.friedman Date: Thu Sep 10 18:20:01 2020 +0000 Update develop branch to latest version of GFSv16 implementation branch commit 09a669c4d155d1bcd3db302b1a26c7a4a7fa8dd7 Merge: 7728ce18f 2ee26105a Author: Kate Friedman Date: Thu Sep 10 12:58:57 2020 -0400 Merge pull request #127 from ilianagenkova/feature/gfsv15.3.3_EUM_bufr Updating gfsv15.3.3 with EUM bufr changes for OPS implementation commit 2ee26105a6dd8e19015000bbe13b6cefeae65830 Author: Iliana Genkova Date: Thu Sep 10 12:54:04 2020 -0400 Clean up commments commit 35bf161c7de338ab75bd2d61d60de833314a93f9 Author: Iliana Genkova Date: Thu Sep 10 12:26:22 2020 -0400 Updated sorc/checkout.sh to pick gfsda.v15.3.3 ( EUM bufr changes ) commit e614856610da39345976823d29bdc32781f38c71 Author: lin.gan Date: Thu Sep 10 16:26:11 2020 +0000 add gfs gempak downstream jobs into def file commit 907291d81c512968817241b883a0084b8506f2b2 Merge: 3f9695b44 d3946f900 Author: lin.gan Date: Thu Sep 10 15:46:45 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit ee4bc2b7268bf8f23ca7f7b3b631ddd6730c6a8c Merge: 41d146fc0 d3946f900 Author: kate.friedman Date: Wed Sep 9 08:54:17 2020 -0500 Issue #5 - sync merge with feature/gfsv16b commit 6b38e648f244afbba9590ea1a4de70d4ce2ed119 Author: jessica.meixner Date: Tue Sep 8 22:14:13 2020 +0000 worked on wcoss commit edb913733023b1025786901aee895d2dbca5edc7 Author: Lin.Gan Date: Tue Sep 8 16:09:07 2020 +0000 ecflow script rename after redesign approved - not including all wave jobs commit d3946f9006f433e0a6b2f459aeaa7fd8bf800aff Author: russ.treadon Date: Tue Sep 8 14:46:39 2020 +0000 Issue #1: clean up DA sections of link_fv3gfs.sh commit 986f8f0b9858f61d32d337a67efa966a7948aa94 Author: jessica.meixner Date: Fri Sep 4 15:42:25 2020 +0000 fix from Bhavani for having first wave grib file be set as a forecast instead of analysis commit 0844b0043c937925c5ad76b4fad03308483d49b3 Author: jessica.meixner Date: Fri Sep 4 15:42:25 2020 +0000 fix from Bhavani for having first wave grib file be set as a forecast instead of analysis commit c1d5c45c13b46964d9d2479962b8c56307a6ad11 Author: jessica.meixner Date: Fri Sep 4 15:42:25 2020 +0000 fix from Bhavani for having first wave grib file be set as a forecast instead of analysis commit 3f9695b44deef4790ae443f4d0c1844b1385374d Author: Lin.Gan Date: Thu Sep 3 19:07:35 2020 +0000 ecflow gfs v16 nco review 3 commit 256885283bb42c2309e820ca53b44042b8223617 Author: jessica.meixner Date: Thu Sep 3 17:44:47 2020 +0000 updates to split boundary points plus saving config file updates commit 8a203e5d5afa92a2b925f69efa5237a2c0d3dca6 Merge: 40c689b5d 26c84b3ca Author: Lin.Gan Date: Thu Sep 3 17:36:19 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b commit 64409b1e9e976b75afd8a3548e7023dce534c4ae Author: kate.friedman Date: Thu Sep 3 15:42:23 2020 +0000 Adding missing space to if-block in env files to resolve runtime failure commit 0485442f5876b82de73c47429d3a70f58f0aa263 Merge: 26c84b3ca 2006bbcb1 Author: kate.friedman Date: Thu Sep 3 15:37:50 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b-wave' into feature/gfsv16b-wave * upstream/feature/gfsv16b-wave: adding pnt jobs as seperate jobs for env moving definitions of wavempexec and wave_mpmd from jobs to env lowering the resource requirement for wave prep job update module for cdo updates to resources for wave jobs Fixing wavepostbndpnt dependency in setup_workflow_fcstonly.py cleaning up wave point post scripts rename wave post script remove gridded so can rename updates to boundary point Remove extra space from line Fix wavepostbndpnt dependency and increase wavepostbntpnt and wavepostpnt walltimes fix typos updating WCOSS work around for CDO, CDO_ROOT is missing from module file adding module use for cdo module on wcoss dell updates for new weights file and adding cdo module for wave prep Adding new wavepostbndpnt and wavepostpnt jobs updating wave post scripts for restructured format updates to JJOBs for wave post point for new structure changing exit 0 to exit number for FATAL errors in ice prep for waves updating error message and exit if there is no current input file update WAVE_PREP so that currents do not check for previous 24 hour so that parallels will be reproducible also deleted unused variable renaming wave job and scripts update jobs for waves Issue #94 - pull in two fixes for wave job setup in free-forecast mode updates for wave scripts to split them, also added updates from GEFS branch to add extra error checking updates from gefs post workflow: updates for re-run case as well as extra error messages commit 26c84b3ca81dec965ab31d00409b537f61174dc1 Author: russ.treadon Date: Thu Sep 3 14:06:29 2020 +0000 Issue #1: remove pgrb2b.0p25 dependency from gfsawips in setup_workflow.py commit 40c689b5d5886d9a4bed92e0c6262bfc5988836d Author: Lin.Gan Date: Thu Sep 3 02:00:09 2020 +0000 ecflow gfsv16 redesign 2 commit 609e157c2477b662b55bbf3d53999cdd30856bc8 Author: kate.friedman Date: Wed Sep 2 20:35:28 2020 +0000 Issue #1 - update WAFS tag to gfs_wafs.v6.0.4 and remove HOURLY variable from WAFS configs commit b0bebad6258bd81c0b0c89b559a04d9b059c838e Author: kate.friedman Date: Wed Sep 2 20:08:01 2020 +0000 Issue #1 - change wavegempak and waveawipsgridded dependency to match waveawipsbulls and start when wavepostsbs is complete commit 084c89e3d562f8c9977eaa17624646be388f7854 Author: russ.treadon Date: Wed Sep 2 19:58:37 2020 +0000 Issue #1: set n_sponge=42 in gfs section of config.fcst commit 2006bbcb1e54e3cd5ae0ff2826b6d0b211c1d013 Author: Jessica.Meixner Date: Wed Sep 2 19:22:38 2020 +0000 adding pnt jobs as seperate jobs for env commit c61cd59488b64ead77e13b2eb5faeb383d052ea0 Author: Jessica.Meixner Date: Wed Sep 2 19:02:21 2020 +0000 moving definitions of wavempexec and wave_mpmd from jobs to env commit 68ed2d670ebe25713554f2165a0bbc7c35fb5030 Merge: 4e7975d26 70abda260 Author: jessica.meixner Date: Wed Sep 2 17:45:26 2020 +0000 Merge remote-tracking branch 'EMC/feature/gfsv16b' into feature/gfsv16b-wave Conflicts: parm/config/config.resources ush/rocoto/setup_workflow.py ush/rocoto/setup_workflow_fcstonly.py commit 70abda260dc9ab47533d25cd570dd055c4644123 Merge: 0a31d568b 52e987ac6 Author: Kate Friedman Date: Wed Sep 2 10:28:22 2020 -0400 Merge pull request #122 from KateFriedman-NOAA/feature/gfsv16b_wavedown Add downstream wave jobs to GFSv16 commit 0a31d568bdacd0fb2d8bc6e1fddb09d2c72d014c Author: kate.friedman Date: Wed Sep 2 14:09:57 2020 +0000 Remove unneeded settings from config.post commit 52e987ac67477932e5b034321cf52f1cc756081c Author: kate.friedman Date: Wed Sep 2 13:05:42 2020 +0000 Added null DBNROOT to wave awips configs commit b3c7b7379a6ebb53b4d4533b894b1bf36df3c2fd Merge: 074f27824 add6ea0ba Author: kate.friedman Date: Wed Sep 2 13:02:41 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b_wavedown commit 806a57838b2a6fd8a9df993fd6cd8debf9fb659a Author: Jessica.Meixner Date: Wed Sep 2 12:28:43 2020 +0000 add extra script for by hour points for waves commit ab3e0b196bbb147da99da4ef34710e8d5fbb68ea Merge: 054f8c536 4e7975d26 Author: Jessica.Meixner Date: Wed Sep 2 11:40:04 2020 +0000 Merge branch 'feature/gfsv16b-wave' of github.com:JessicaMeixner-NOAA/global-workflow into feature/gfsv16b-wave commit 054f8c53608689b00b32d035ce728ed3d8cb3ad9 Author: Jessica.Meixner Date: Wed Sep 2 11:39:28 2020 +0000 updates for boundary points by hour parallelization commit 4e7975d265857e4e634e0c7352f6ed2de1a99336 Author: jessica.meixner Date: Tue Sep 1 22:45:05 2020 +0000 lowering the resource requirement for wave prep job commit add6ea0bae2c56bba2e3d76460771095b98786b1 Author: russ.treadon Date: Tue Sep 1 19:40:10 2020 +0000 Issue #1: rename enkf_chgres_recenter executables in accordance with WCOSS Implementation Standards commit 8a7e8d9944b8727da91bfb28bbfe44958f0aeb65 Merge: 4c9978a8b 595edcfaa Author: Kate Friedman Date: Tue Sep 1 15:00:08 2020 -0400 Merge pull request #121 from KateFriedman-NOAA/feature/gfsv16b-wafs Adding WAFS jobs to GFSv16 commit 4c9978a8b0a98527d7c78a3da0a0a55e39cefed0 Author: fanglin.yang Date: Tue Sep 1 18:48:44 2020 +0000 modified: checkout.sh to use gldas_gfsv16_release.v1.6.0 commit 595edcfaaf1372889c8d569e01ec4dfefb51c469 Merge: 8a593c8df 06bda7dec Author: kate.friedman Date: Tue Sep 1 17:30:08 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b-wafs commit ada0fb3155a57bdba074c84e1ab3d73eabb0e2f4 Author: jessica.meixner Date: Tue Sep 1 17:18:27 2020 +0000 update module for cdo commit 074f2782438471740453e356b856a4756e59c858 Merge: a1a3d69ba 8a593c8df Author: kate.friedman Date: Tue Sep 1 14:30:56 2020 +0000 Sync with WAFS branch commit a1a3d69ba40564f550053b99b4328ba41c7cc45d Merge: 249b6ef76 06bda7dec Author: kate.friedman Date: Tue Sep 1 14:22:20 2020 +0000 Sync merge with feature/gfsv16b commit 8a593c8df03d8a879c5488fbd671fef94f5d867d Author: kate.friedman Date: Tue Sep 1 14:09:49 2020 +0000 Update to WAFS tag and added SENDDBN_NTC to both base configs commit 5270ed831c0b3c428736cbd8a789a4d3cfdcc0fe Merge: 95ec3329e eabda84f9 Author: kate.friedman Date: Tue Sep 1 14:03:53 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b-wafs commit 06bda7dec74831951034b72c83abbb2d994ee539 Author: fanglin.yang Date: Tue Sep 1 14:02:44 2020 +0000 modified: link_fv3gfs.sh to not link or copy 0readme fix_chem fix_fv3 fix_sfc_climo which are not used by GFS.v16 and are of large size commit eabda84f97c11251f672d95bb604ad0c50e8da18 Author: fanglin.yang Date: Tue Sep 1 13:48:11 2020 +0000 modified: link_fv3gfs.sh to remove chgres_cube.fd and chgres_cube.fd in sorc/link_fv3gfs.sh commit 223492bf6c56c0491c0034dc1d4a0a3e6e97a607 Author: fanglin.yang Date: Tue Sep 1 03:59:53 2020 +0000 modified: link_fv3gfs.sh to allow "fix" directories to be removed before rerunning link_fv3gfs.sh for RUN_ENVIR=nco case commit 95ec3329e72a54b0dabdccdecd467972c4914dcd Author: kate.friedman Date: Mon Aug 31 18:57:32 2020 +0000 Added WAFS jobs to free-forecast mode, updates for extending WAFS to fh120, and two bug fixes in link_fv3gfs.sh and hpssarch_gen.sh commit 6f660d9a9a5758f3d74f87f170a95a26ca0c0e6a Merge: 8da419164 3282a8996 Author: kate.friedman Date: Mon Aug 31 17:58:55 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16b-wafs commit 3282a8996ab0510699932a53897b87730b2cc492 Author: kate.friedman Date: Mon Aug 31 17:47:37 2020 +0000 Renamed global-workflow-owned ex-scripts to remove ecf extension and updated other scripts which call those ex-scripts commit 9cde3a41f34d0c2618e8fb06ff1276cec5378ef5 Author: kate.friedman Date: Fri Aug 28 18:46:57 2020 +0000 Remove UFS_UTILS ecf extensions commit f7a92dbc1c3ad822d3b8e567967e91384631288d Author: russ.treadon Date: Fri Aug 28 18:09:26 2020 +0000 Issue #1: (1) update earc.sh directory removal to be consistent with arch.sh, (2) update config files to be consistent with EMC real-time GFS v16 parallel commit 249b6ef761fb41b5d102b282fccedeb827192dff Author: kate.friedman Date: Fri Aug 28 16:52:54 2020 +0000 Remove ecf script name extensions from downstream wave scripts commit 004a29f39204314159d2cbd028950cfaba07cf33 Author: kate.friedman Date: Fri Aug 28 16:50:03 2020 +0000 Add new downstream wave jobs to workflow commit 8da4191644ff55f46e8f394e4e1d29641d3c117c Merge: 8f97726a4 6319bda47 Author: kate.friedman Date: Fri Aug 28 16:42:11 2020 +0000 Sync merge with feature/gfsv16b commit 8f97726a4170d56dcaf6732ae141fae9aaebfd8d Author: kate.friedman Date: Fri Aug 28 16:39:50 2020 +0000 Add new downstream WAFS jobs commit 6319bda47548873acb8859d9a47d2ac6a6ef4c67 Author: kate.friedman Date: Fri Aug 28 15:41:55 2020 +0000 Issue #1 - update GLDAS and UPP workflow files for removal of ecf script extension commit 8f7615c76f76611d748246a80d9286de7c4d3295 Author: russ.treadon Date: Thu Aug 27 20:53:25 2020 +0000 Issue #1: remove ".ecf" suffix from DA scripts referenced in sorc/link_fv3gfs.sh commit af754d1fa0aa4a521fcd5b4fc04eaa88d475dbff Author: russ.treadon Date: Thu Aug 27 20:47:14 2020 +0000 Issue #1: remove ".ecf" extension from DA exscripts (as per WCOSS Implementation Standards) referenced from parm/config files commit a6e91b48b7024c83491fd1f93c6d7df8e3301af5 Author: jessica.meixner Date: Thu Aug 27 20:25:45 2020 +0000 updates to resources for wave jobs commit f0b9a98973b7983eadab51c7009723b5d0b4a564 Author: russ.treadon Date: Wed Aug 26 23:04:02 2020 +0000 Issue #1: update name of DA enkf chgres script in config.echgres commit 01f33c498bf0b5c0d48486cd04dab9c93c721906 Author: russ.treadon Date: Wed Aug 26 20:58:29 2020 +0000 Issue #1: Rename DA enkf chgres job and script as per EE2 guidance commit 7d3f37819aba17dc794d10f7453061802779b435 Author: kate.friedman Date: Wed Aug 26 18:35:59 2020 +0000 Workflow changes for wave gempak and awips downstream jobs commit 485632eafe37c1866011af1bd0a601fb1c7adc4c Merge: 2946baad8 e191fd4bb Author: Jessica Meixner Date: Wed Aug 26 11:49:40 2020 -0400 Merge pull request #3 from KateFriedman-NOAA/feature/gfsv16b-wave Fixing wavepostbndpnt dependency in setup_workflow_fcstonly.py commit e191fd4bb87af787feab486bf072fe4dce7f12f4 Author: kate.friedman Date: Wed Aug 26 15:47:49 2020 +0000 Fixing wavepostbndpnt dependency in setup_workflow_fcstonly.py commit 4641a72e1ced493c7ec5d837a3093908e388b5df Merge: a1b08c928 25ae4899c Author: Kate Friedman Date: Wed Aug 26 11:33:23 2020 -0400 Merge pull request #119 from GeorgeGayno-NOAA/feature/gfsv16b enkf_chgres_recenter_nc.fd - Remove hard-coded vertical levels. commit 25ae4899cee3dc3aeff1e36f0ac1d0b0773ca2f9 Author: George Gayno Date: Wed Aug 26 14:25:36 2020 +0000 feature/gfsv16b: Add Cory's updates to build 'enkf_chgres_recenter_nc' on Cray. Issue #102. commit 2946baad88d908b32793f542cab42f0c89adf009 Author: jessica.meixner Date: Wed Aug 26 13:44:06 2020 +0000 cleaning up wave point post scripts commit 3590e9a45e2b13b22ff3c3d4827907ddcf55eebf Merge: 727c3ffde a1b08c928 Author: George Gayno Date: Tue Aug 25 20:20:17 2020 +0000 feature/gfsv16b: Merge updates from authoratative feature/gfsv16b branch. Issue #112. commit a1b08c92892278453f25c2530f8b8fb968af9a34 Merge: 45ad029ba ce3816d3e Author: Kate Friedman Date: Tue Aug 25 16:01:57 2020 -0400 Merge pull request #116 from RobertoPadilla-NOAA/feature/gfsv16_wave_prdgen Feature/gfsv16 wave prdgen commit ce3816d3e88b8d2de7472a214e66cb54aceca9a6 Merge: b0c916106 45ad029ba Author: wx21rph Date: Tue Aug 25 19:55:53 2020 +0000 Merge remote-tracking branch 'upstream/feature/gfsv16b' into feature/gfsv16_wave_prdgen Issue #94 Adding prdgen for waves commit 90181842fbb7a22479f12d3a67bcdc8fa4b8f669 Author: jessica.meixner Date: Tue Aug 25 19:02:22 2020 +0000 rename wave post script commit 1f15be0a8207d3117200bcc145a5ae66b7445ec3 Author: jessica.meixner Date: Tue Aug 25 19:01:41 2020 +0000 remove gridded so can rename commit 1fc5b368fe0cd438e2202b62de7753b7efed7af6 Author: Jessica.Meixner Date: Tue Aug 25 19:00:20 2020 +0000 updates to boundary point commit f0e3ae5c2cd441673a4a670618e87f050a12c9e9 Merge: 98d6c1633 b74b21e71 Author: Jessica Meixner Date: Tue Aug 25 14:15:57 2020 -0400 Merge pull request #2 from KateFriedman-NOAA/feature/gfsv16b-wave Feature/gfsv16b wave commit b74b21e71edbb62207ccfcafe4c6ed5b6d301cfe Author: kate.friedman Date: Tue Aug 25 18:14:15 2020 +0000 Remove extra space from line commit 25e2cc4596213b39d2a3dc3ee8afda4a86e10d38 Author: kate.friedman Date: Tue Aug 25 18:12:04 2020 +0000 Fix wavepostbndpnt dependency and increase wavepostbntpnt and wavepostpnt walltimes commit 45ad029bad4367961e5eff987f27226b0ac78d5a Author: russ.treadon Date: Tue Aug 25 13:40:45 2020 +0000 Issue #1: several minor changes * Externals.cfg and sorc/checkout.sh: update to tag verif_global_v1.10.1 * jobs/rocoto/arch.sh: update ARCDIR cp to use new path to tracker output * scripts/run_gfsmos_master.sh.dell: remove module purge from mos driver script commit 0a85a36ef0784bebf96d2f97c24dd4c642ac23f1 Merge: d5861551a 5190efb11 Author: Kate Friedman Date: Tue Aug 25 09:20:42 2020 -0400 Merge pull request #118 from GuangPingLou-NOAA/feature/gfsv16b Issue #117 Modufy Bufr station Hilo's grid point representation commit 5190efb119c6eec6a7c67d90327dee4666307541 Author: Guang.Ping.Lou Date: Tue Aug 25 12:30:45 2020 +0000 Issue #117 Modufy Bufr station Hilo's grid point representation commit 98d6c16336e5b0a3241174c54b7631667a4f919d Merge: 0eacf5e21 32bd57ef2 Author: Jessica.Meixner Date: Mon Aug 24 22:27:39 2020 +0000 Merge branch 'feature/gfsv16b-wave' of github.com:JessicaMeixner-NOAA/global-workflow into feature/gfsv16b-wave commit 0eacf5e21c3149d2d922b4c2495e48fb2355e639 Author: Jessica.Meixner Date: Mon Aug 24 22:27:28 2020 +0000 fix typos commit b0c9161061302ccf4b890cceabe5b4eaecb67e61 Author: wx21rph Date: Mon Aug 24 22:25:05 2020 +0000 Issue #94 changing native by interpolated grids for gempak commit 8a68d3c6d6996f389609d5961f32f0db116797d1 Author: wx21rph Date: Mon Aug 24 21:47:44 2020 +0000 Issue #94 removing the load of modulefiles and sending set.pdy to j-jobs commit 32bd57ef2b390dbe73a744188a40ca4c42c306fe Author: jessica.meixner Date: Mon Aug 24 20:35:39 2020 +0000 updating WCOSS work around for CDO, CDO_ROOT is missing from module file commit a2d06bb0bf82ee48899cb26ea9abf2331b543107 Author: jessica.meixner Date: Mon Aug 24 18:55:02 2020 +0000 adding module use for cdo module on wcoss dell commit e5c9f037bd82ed4bc72cf11241d7c053160ff5b9 Author: jessica.meixner Date: Mon Aug 24 18:29:36 2020 +0000 updates for new weights file and adding cdo module for wave prep commit 96655fbe5b5daf130d4a9a458ce47059c047376a Author: wx21rph Date: Mon Aug 24 16:56:37 2020 +0000 Issue #94 removing modulefiles load from j-jobs commit 7f9344f777075ce3220d9a9fccba74c07e4f40e2 Author: wx21rph Date: Mon Aug 24 14:32:26 2020 +0000 Issue #94 Solving reviewers comments commit c9598a3207bb06cbd7d2619d97f723f6511da9a4 Merge: bf97710be 92a2a43db Author: Jessica Meixner Date: Mon Aug 24 10:12:43 2020 -0400 Merge pull request #1 from KateFriedman-NOAA/feature/gfsv16b-wave Adding new wavepostbndpnt and wavepostpnt jobs commit 92a2a43db190982944b4166b929a791a1b0b0750 Author: kate.friedman Date: Mon Aug 24 14:06:23 2020 +0000 Adding new wavepostbndpnt and wavepostpnt jobs commit bf97710bece30195679740b0de2b32e0adc6c3c6 Author: Jessica.Meixner Date: Fri Aug 21 00:20:56 2020 +0000 updating wave post scripts for restructured format commit a914521cec478667191b365e2a2a62e3553e0ff7 Author: Jessica.Meixner Date: Thu Aug 20 23:52:47 2020 +0000 updates to JJOBs for wave post point for new structure commit 1f195f8d432072f4e4f66406ea6b09256a185d2b Author: Jessica.Meixner Date: Thu Aug 20 15:20:28 2020 +0000 changing exit 0 to exit number for FATAL errors in ice prep for waves commit f836a7869dbb88badd93fcd9d08314284eee4f96 Author: Jessica.Meixner Date: Thu Aug 20 15:17:28 2020 +0000 updating error message and exit if there is no current input file commit 529cc3692f4fc003295584e761279be3c9405b68 Author: Jessica.Meixner Date: Thu Aug 20 14:50:50 2020 +0000 update WAVE_PREP so that currents do not check for previous 24 hour so that parallels will be reproducible also deleted unused variable commit 57c4258ba73778fe95118ebfae98c4bbf012ae37 Author: Jessica.Meixner Date: Thu Aug 20 14:09:22 2020 +0000 renaming wave job and scripts commit 1626cb2f90bfea5663f198cfc2ac2916a9200e1a Merge: da2922163 d5861551a Author: Jessica.Meixner Date: Thu Aug 20 14:02:54 2020 +0000 Merge remote-tracking branch 'EMC/feature/gfsv16b' into feature/gfsv16b-splitwavepost commit da2922163922f4b4b14dba78dba36e9eced3a2c5 Author: Jessica.Meixner Date: Thu Aug 20 13:50:15 2020 +0000 update jobs for waves commit a1c456f267ddf701aa47ad33fd231a2f1ae0bf99 Author: wx21rph Date: Wed Aug 19 20:09:47 2020 +0000 Issue #94 renaming the J-jobs commit 41d146fc0fda97a41ef829ecff41b005bbf21740 Merge: c2a4f04e5 d5861551a Author: kate.friedman Date: Wed Aug 19 13:54:13 2020 -0500 Issue #5 - sync merge with feature/gfsv16b after COMPONENT update commit 036617c8a9b5da765b82c276f7b087aa4e16d679 Author: wx21rph Date: Wed Aug 19 14:24:01 2020 +0000 Issue #94 Updating the modulefiles for waves-prdgen commit d5861551ae5b1fe2c2b00802159a42f7fde06357 Merge: 9b923ac30 0e0699aac Author: Kate Friedman Date: Wed Aug 19 09:49:08 2020 -0400 Merge pull request #109 from NOAA-EMC/feature/gfsv16b-restructure GFSv16 restructure for new $COMPONENT subfolder commit 1e76093c8554c3ccb87a7ed243f738f5763ca5da Author: wx21rph Date: Wed Aug 19 13:47:44 2020 +0000 Issue #94 adding waves-prdgen to gfsv16 commit 0e0699aac7cb00988c999546dcdf3a52b11706e3 Author: kate.friedman Date: Wed Aug 19 13:47:29 2020 +0000 Issue #94 - fix to messed up shebang in setup_expt_fcstonly.py commit c7a708fd54ffe60c6259f35c4230e6e73ecd6f77 Author: wx21rph Date: Tue Aug 18 21:16:19 2020 +0000 Issue #94 adding waves-prdgen for gfsv16 commit 0b2744e53a35c570178b7e6cd7ede72b6255c579 Author: Kate.Friedman Date: Fri Aug 14 17:36:31 2020 +0000 Issue #94 - pull in two fixes for wave job setup in free-forecast mode commit 4888001e76d24277b3a75d1d520945383f49d456 Author: Jessica.Meixner Date: Fri Aug 14 18:55:40 2020 +0000 updates for wave scripts to split them, also added updates from GEFS branch to add extra error checking commit 00dc1973010b68e65e176c90a1eeaef359b7beae Author: Kate.Friedman Date: Fri Aug 14 17:36:31 2020 +0000 Issue #94 - pull in two fixes for wave job setup in free-forecast mode commit c2a4f04e50ccb45febf55f7985c64a287973dee0 Author: kate.friedman Date: Fri Aug 14 08:21:01 2020 -0500 Issue #5 - update for COMINsyn on Orion commit fe849e918b30e6a9ca22ebe1a81e350afc4ed6cf Merge: 0c06cda7d 9b923ac30 Author: kate.friedman Date: Thu Aug 13 18:49:52 2020 +0000 Issue #94 - Sync merge branch 'feature/gfsv16b' into feature/gfsv16b-restructure commit 9b923ac308841d7accfc6ed2a4ef9733dce2305e Author: kate.friedman Date: Thu Aug 13 18:37:51 2020 +0000 Issue #1 - update to prod_util version (1.1.3 -> 1.1.4) on WCOSS-Dell for post P1/P2 removal commit bf0bff444bdd8a02e1c875eadbdc6b60628cff76 Author: kate.friedman Date: Wed Aug 12 10:00:51 2020 -0500 Issue #5 - update to JGFS_CYCLONE_TRACKER for machine=ORION commit 0c06cda7dd667e936e8aa71fc1c584a4839094ba Author: kate.friedman Date: Mon Aug 10 18:50:44 2020 +0000 Issue #94 - update CFP module version on WCOSS-Dell commit b73d25224d8208291048b774a91497928b051713 Author: kate.friedman Date: Mon Aug 10 17:58:55 2020 +0000 Issue #94 - update WCOSS-Dell module versions to prod_util and EnvVars commit 485ee56c1e772e8efa944ee9a3f350130d49a718 Author: kate.friedman Date: Mon Aug 10 13:00:42 2020 +0000 Issue #94 - fix AWIPS file dependency commit 5a7e45e398efafb4b5b6cde0a69f799a99406d34 Author: kate.friedman Date: Fri Aug 7 09:48:45 2020 -0500 Issue #5 - add missing AND condition for wavepostsbs commit bdaa28fbdc2372ed85320a4b044a33d350e2e7be Author: kate.friedman Date: Fri Aug 7 13:34:22 2020 +0000 Issue #94 - updates for FSU tracker commit 12f16a874f129106bc7b0aa1f7485c07a0508035 Author: Judy.K.Henderson Date: Fri Aug 7 00:21:32 2020 +0000 save field_table_gsd as a file instead of link commit 86e39906eadf3dca87d44861752a5c881dfb41a9 Author: Judy.K.Henderson Date: Fri Aug 7 00:08:19 2020 +0000 updated diag tables for GSL moved 4D variables to gfs_dyn ( refl_10cm,nwfa,nifa,qc_bl,cldfra_bl,el_pbl,qke ) commit e8800078f8d00e9447ed81b83eb49135110deb8f Author: kate.friedman Date: Thu Aug 6 14:31:05 2020 -0500 Issue #5 - change UFS_UTILS checkout back to auth repo release/ops-gfsv16 branch after commit to it commit df20d848de2420eacba296ebdf9c9fe68d697351 Author: kate.friedman Date: Wed Aug 5 15:46:27 2020 -0500 Issue #5 - fix for errant text in setup_workflow_fcstonly.py for waveinit job settings commit 4cee6f65467c34e171ed3e0bdc72458a875e5e21 Author: kate.friedman Date: Wed Aug 5 17:14:04 2020 +0000 Issue #94 - adding -o flag to checkout.sh for optional GTG checkout with EMC_post commit 563d2931378c3d6276212cc9c4e2a4e9a286589c Author: kate.friedman Date: Tue Aug 4 18:19:47 2020 +0000 Issue #94 - small fix to updated UFS_UTILS part of link_fv3gfs.sh commit 7c4f8eab074115323a7812dc498e8ea043916718 Author: kate.friedman Date: Tue Aug 4 08:53:39 2020 -0500 Issue #5 - add new APRUNCFP setting to ORION.env commit 5652485ef0cc42f8814df9d08e8b953b025d08b4 Merge: 5cf8a458e d1751309f Author: kate.friedman Date: Mon Aug 3 13:10:27 2020 -0500 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: Issue #1: refactor CFP in DA sections of HERA.env and WCOSS_DELL_P3.env Issue #1: add enkf member sfcf006.nc to enkf tarballs Revert "modified: config.base.emc.dyn to use obsproc_prep.iss70457.netcdfhistory_atmos" modified: config.base.emc.dyn to use obsproc_prep.iss70457.netcdfhistory_atmos commit 5cf8a458e3cea88ce628f9ae1f5c7f1e47d0cdbe Author: kate.friedman Date: Mon Aug 3 13:09:17 2020 -0500 Issue #5 - add setup script settings for HPSSARCH to turn to NO on Orion by default commit 206797c0d350d9ee7b489c9b7ff3afd4c8d3ca38 Author: kate.friedman Date: Mon Aug 3 09:42:14 2020 -0500 Issue #5 - GLDAS tag update, rocoto module update, UFS_UTILS branch and build update commit 8a1fea478bcfdec3ad436e77fdfe8c601a050c77 Author: kate.friedman Date: Thu Jul 30 18:27:57 2020 +0000 Issue #94 - move UFS_UTILS link script step from build_ufs_utils.sh to link_fv3gfs.sh based on feedback from GEFS team commit f54d938ac8faf3c5d0362770b645dcef57b43c30 Author: kate.friedman Date: Wed Jul 29 14:28:03 2020 +0000 Issue #94 - reverting GSI and EMC_gfs_wafs checkouts back to authoritative repos ahead of their updating for new , will update EMC_gfs_wafs to new tag when available commit d3866af6cc8060f88b3bd780b7f6a6f52a8ecba0 Author: kate.friedman Date: Wed Jul 29 13:39:07 2020 +0000 Issue #94 - add default to fhmax in vrfy.sh for when prior tasks disabled and set new path to restructured gfsmos commit 9c2791ed037d62f35aa33875c20de8ac3f823337 Merge: e8a714b2f d1751309f Author: kate.friedman Date: Mon Jul 27 14:44:59 2020 +0000 Issue #94 - Sync merge branch 'feature/gfsv16b' into feature/gfsv16b-restructure commit e8a714b2fa20cce87ed018b3a9215bef37ee0d10 Author: kate.friedman Date: Mon Jul 27 14:37:34 2020 +0000 Issue #94 - retire BASE_SVN commit 5867d4b3de7b6ee7d8f913d573b4a0f44d973320 Author: Jessica.Meixner Date: Fri Jul 24 15:00:41 2020 +0000 updates from gefs post workflow: updates for re-run case as well as extra error messages commit 03daf01d440e702deccfcd246db069783f2c513d Author: kate.friedman Date: Fri Jul 24 14:14:25 2020 +0000 Issue #94 - removing new install script, will introduce via another branch, needs more testing commit 9c0765cec06ea0f80528cba722884a4971beb345 Author: kate.friedman Date: Fri Jul 24 14:08:36 2020 +0000 Issue #94 - add to gempak scripts and cleanup based on PR feedback commit fb70d6fb7a2407bd17c2c587224e66401a6cf1c0 Author: kate.friedman Date: Thu Jul 23 14:35:56 2020 +0000 Issue #94 - updating GLDAS and EMC_post tags in Externals.cfg commit 3bfdc01419b1ea8748f8ce7ebcf00ac6b520f8d7 Author: kate.friedman Date: Thu Jul 23 14:34:28 2020 +0000 Reverting link_fv3gfs.sh, will commit in different changeset commit d1751309fc1999cdc4fdbc603e429ee61fbcf38c Author: russ.treadon Date: Thu Jul 23 11:20:15 2020 +0000 Issue #1: refactor CFP in DA sections of HERA.env and WCOSS_DELL_P3.env commit 821c93cae54d9fa24887cbe2072df4f63aeadb7d Merge: 95ce82355 145f81056 Author: kate.friedman Date: Tue Jul 21 17:15:43 2020 +0000 Issue #94 - Sync merge branch 'feature/gfsv16b' into feature/gfsv16b-restructure commit 95ce823552c20aa15426c4c98feb3c7d147ec89e Author: kate.friedman Date: Tue Jul 21 14:10:09 2020 +0000 Issue #94 - new GLDAS tag with atmos directory commit 145f81056802cb7246a50f7951c2e191a994032f Author: russ.treadon Date: Mon Jul 20 21:09:40 2020 +0000 Issue #1: add enkf member sfcf006.nc to enkf tarballs commit ab89088d3a59ee5d5389fa8e527e0444692c1542 Author: kate.friedman Date: Mon Jul 20 19:07:02 2020 +0000 Issue #94 - component checkout updates to use forks and new UPP tag commit 4eec6641424d3947ae792f632f9b401bb569173a Author: kate.friedman Date: Mon Jul 20 13:31:23 2020 +0000 Issue #94 - fix dirpath in ush/hpssarch_gen.sh commit 727c3ffdeee5b77e65b6665b2cf34b6a30736bbc Author: George Gayno Date: Fri Jul 17 18:27:26 2020 +0000 feature/gfsv16b This commit references #102. Some cleanup to enkf_chgres_recenter_nc. commit d0378245016ba506b9e57a35dcaed8ce10830a9a Author: George Gayno Date: Fri Jul 17 15:59:59 2020 +0000 feature/gfsv16b This commit references #102. Initial updates to enkf_chgres_recenter_nc to output any number of vertical levels. Turn off horizontal interpolation if input and output grids are the same. commit 273c5353bc310b22459fe605662c07922a41e4f4 Author: kate.friedman Date: Thu Jul 16 17:52:43 2020 +0000 Issue #94 - revert RSTDIR_WAVE if-block compression to retain breakpoint restarting commit 3d9f0dc81a63b5d1b54981314fac36a82119e811 Author: kate.friedman Date: Thu Jul 16 17:19:21 2020 +0000 Issue #94 - remove COMPONENTatmos and COMPONENTwave, use COMIN[COMOUT]atmos[wave] instead commit 19d3f72b5f6f1ec145cf95e47c1fe9ca970d40cb Author: kate.friedman Date: Thu Jul 16 16:05:56 2020 +0000 Issue #94 - updates to wave scripts based on NCO feedback commit 0a8e95bce500552b0ed85b86c43d35dd298eccc9 Author: kate.friedman Date: Thu Jul 16 10:55:29 2020 -0500 Issue #5 - reverted back to GLDAS feature/orion_port after committing build fix to it commit 8e906c4cd1cce7d2b626ae7a0c6a799406190d21 Author: kate.friedman Date: Thu Jul 16 10:00:59 2020 -0500 Issue #5 - updates to GLDAS version, module_base.orion, and ORION.env commit 0056b413a65aea9700561c5a9b07946fb34be6b5 Merge: 987d8cf56 d7425d02b Author: kate.friedman Date: Thu Jul 16 13:35:13 2020 +0000 Issue #94 - Sync merge branch 'feature/gfsv16b' into feature/gfsv16b-restructure commit 987d8cf5621e8c302d0f9a7941f4d74222fbf218 Author: kate.friedman Date: Wed Jul 15 17:50:34 2020 +0000 Issue #94 - added and [wave] back in after feedback from Steven Earle, also renamed the wave scripts to match the correct convention commit 49825b3b93080b70b56752477a9406e1765ecdf3 Author: BoiVuong-NOAA Date: Tue Jul 14 23:04:08 2020 +0000 GitHub Issue#94 update gempak's ush scripts commit d7425d02bb9027fe3ea5ceb31d515d70dddb4ec4 Author: fanglin.yang Date: Tue Jul 14 19:50:54 2020 +0000 Revert "modified: config.base.emc.dyn to use obsproc_prep.iss70457.netcdfhistory_atmos" This reverts commit 49772711c37d74740427c241a477afe21ee62d7c. commit 49772711c37d74740427c241a477afe21ee62d7c Author: fanglin.yang Date: Tue Jul 14 19:45:32 2020 +0000 modified: config.base.emc.dyn to use obsproc_prep.iss70457.netcdfhistory_atmos commit c957b86ebf9889f88d39e875e53d3b060a40b10e Author: kate.friedman Date: Tue Jul 14 11:38:18 2020 -0500 Issue #5 - fix updated lmod path and add wavepostsbs to Orion.env if-block for CFP_MP commit a8812e08bfde823fdff54522103322a29d0cf8ed Author: kate.friedman Date: Tue Jul 14 10:36:56 2020 -0500 Issue #5 - update gitignore for new scripts added recently commit 94ed497a3395e605cd3feb0996dae5d9eb346243 Author: kate.friedman Date: Tue Jul 14 10:33:51 2020 -0500 Issue #5 - add updated cdo module to module_base.orion commit 0f92e24c7b0988b07cc394f391008144ab768f11 Merge: 01a64acc8 8b0f57fdf Author: kate.friedman Date: Tue Jul 14 10:11:53 2020 -0500 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: modified: ../Externals.cfg and checkout.sh to check out UPP tag tag upp_gfsv16_release.v1.0.10 and model tag GFS.v16.0.10 Updated the algorithm used to compute CAPE and CIN in UPP. The computation is now bounded from the surface up to 1 hPa instead of the model top to avoid producing erroneous large CAPE and CIN values. Issue #1 - add mod_icec.sh to UPP ush script symlinking in link_fv3gfs.sh commit 8b0f57fdfd4a8710e176f0035356fb01d781dd70 Author: fanglin.yang Date: Mon Jul 13 23:43:55 2020 +0000 modified: ../Externals.cfg and checkout.sh to check out UPP tag tag upp_gfsv16_release.v1.0.10 and model tag GFS.v16.0.10 Updated the algorithm used to compute CAPE and CIN in UPP. The computation is now bounded from the surface up to 1 hPa instead of the model top to avoid producing erroneous large CAPE and CIN values. commit 37e0f57d948fa98c66fcc9d9695de2769a4a38d2 Author: kate.friedman Date: Mon Jul 13 17:26:52 2020 +0000 Issue #1 - add mod_icec.sh to UPP ush script symlinking in link_fv3gfs.sh commit 663542ea2219eae322437058693cae3ade14e125 Author: kate.friedman Date: Fri Jul 10 20:01:17 2020 +0000 Issue #94 - fix dependencies with in the path commit 866c4c4cf1a2cd177fed81396ddb40e657e8d55b Author: kate.friedman Date: Fri Jul 10 15:22:33 2020 +0000 Issue #94 - convert variables into hard-coded values per feedback commit 01a64acc8587669869411b566674a2be09583f74 Merge: 5b6ad0874 d57fc0280 Author: kate.friedman Date: Thu Jul 9 12:18:12 2020 -0500 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: modified: checkout.sh to checkout model tag GFS.v16.0.9 Issue #1: set g2o1_obtype_conus_sfc in config.metp to "ONLYSF ADPUPA" Issue #1: update sorc/checkout.sh to checkout verif_global_v1.9.0 further updated exglobal_fcst_nemsfv3gfs.sh to use restart_wave directory for gdas cycle as well modified: jobs/JGLOBAL_FORECAST parm/config/config.wave scripts/exglobal_fcst_nemsfv3gfs.sh add WW3 break-point restart capability and clean up forecast script. Conflicts: sorc/checkout.sh commit 7728ce18f9c9783cbe139ca7c61ea719b7e8c595 Author: kate.friedman Date: Thu Jul 9 14:00:43 2020 +0000 Issue #97 - GFSv15.3.2 RFC 7036 – On WCOSS, implement GFS.v15.3.2 updates to the GSI fix file and global_satinfo.txt. This change is being made to address minimization issues in the GSI and tighten quality control for the seven CrIS water vapor channels. To be implemented on July 6 at 1400Z. commit d57fc02801232de745e1c66b6cb0b459218dc042 Author: fanglin.yang Date: Wed Jul 8 22:59:35 2020 +0000 modified: checkout.sh to checkout model tag GFS.v16.0.9 1. WW3 update: write all restart files in a sub-directory restart_wave 2. Port production/GFS.v16 to Orion (#129) * Update FV3 submodule * Update NEMS submodule * Add 'ulimit -s unlimited' to Orion job card template * Update NEMS submodule to point to fix_moduleinit branch in 'junwang-noaa/NEMS' * Update modulefiles/orion.intel/fv3 * Update regression test configuration on Orion (for gfs_v16) * Update NEMS submodule (change /apps/lmod/init path after Orion maintenance) * Update NEMS submodule (point to NOAA-EMC/NEMS) commit 233f9f615ab1d5cee29c45143655978112bb79fe Merge: 506e3bf4d ae7dbdb2a Author: kate.friedman Date: Wed Jul 8 19:44:40 2020 +0000 Issue #94 - Sync merge branch 'feature/gfsv16b' into feature/gfsv16b-restructure commit 506e3bf4d627093b06bc0a2d5cac63f99767742f Author: kate.friedman Date: Wed Jul 8 17:43:14 2020 +0000 Issue #94 - initial add of COMPONENTatmos variable to scripts commit ae7dbdb2a37daabaa178b8924bad22684a673d4e Merge: 6e73de0ce 58fb79548 Author: Fanglin Yang Date: Wed Jul 8 11:30:07 2020 -0400 Merge pull request #96 from NOAA-EMC/feature/gfsv16b_restart modified: exglobal_fcst_nemsfv3gfs.sh etc to enable WW3 break-point restart capability commit 58fb79548b2ac34a477b4520ca99ce32280b00fd Merge: 4a1cf2b6f 6e73de0ce Author: fanglin.yang Date: Tue Jul 7 15:58:25 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b_restart commit 6e73de0ce5cd82c9e97d8078dd1ddd253f05a258 Author: russ.treadon Date: Tue Jul 7 15:03:09 2020 +0000 Issue #1: set g2o1_obtype_conus_sfc in config.metp to "ONLYSF ADPUPA" commit 22ad770016b8a61bb672f1f76d62cb3d133f247c Author: russ.treadon Date: Tue Jul 7 13:47:26 2020 +0000 Issue #1: update sorc/checkout.sh to checkout verif_global_v1.9.0 commit 4a1cf2b6f45a76b91fbfa048def2cd647598e154 Author: fanglin.yang Date: Mon Jul 6 23:59:03 2020 +0000 further updated exglobal_fcst_nemsfv3gfs.sh to use restart_wave directory for gdas cycle as well commit 5fe1a217d28e6710502b9524d3e3cce035364c37 Author: fanglin.yang Date: Sat Jul 4 19:43:29 2020 +0000 modified: jobs/JGLOBAL_FORECAST parm/config/config.wave scripts/exglobal_fcst_nemsfv3gfs.sh add WW3 break-point restart capability and clean up forecast script. commit df83408157ff1f01794fda14d3338161d9e2415b Author: Judy.K.Henderson Date: Wed Jul 1 17:41:11 2020 +0000 updated files in jkh directories with current versions for GSI and fv3gfs commit 788a7e692d94f4619e6f4c9b1fa99a32d3545188 Author: Judy.K.Henderson Date: Mon Jun 29 20:19:18 2020 +0000 comment out setting of io_layout in config.fcst commit 3fe6f9fc3aff9cff75aa6179cc545e635d28f312 Author: kate.friedman Date: Mon Jun 29 19:44:12 2020 +0000 Issue #94 - commit initial version of new installation script commit 30e56f2e84c6f1a66dc73db53cabc898b657374c Author: kate.friedman Date: Mon Jun 29 19:41:31 2020 +0000 Issue #94 - generalization updates to link script - change 'nco' mode to 'prod' mode - change 'emc' mode to 'dev' mode - update machine values to match target names commit 5b6ad087408533658dddbb2bb9c4cf74f1fc7c0a Merge: fef33e203 28b1faf03 Author: kate.friedman Date: Mon Jun 29 08:42:35 2020 -0500 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: modified: config.vrfy to add elif [ $machine = "HERA" ] ; then export RUNGFSMOSSH="$HOMEgfs/scripts/run_gfsmos_master.sh.hera" corrected a typo in hpssarch_gen.sh - echo "${dirname}${head}atma000.ensres${SUFFIX} " >>gdas.txt + echo "${dirname}${head}atma009.ensres${SUFFIX} " >>gdas.txt modified: config.vrfy to point a different syndat directory on Hera export COMROOTp1="/scratch1/NCEPDEV/global/glopara/com" export COMINsyn=${COMINsyn:-${COMROOTp1}/gfs/prod/syndat} Issue #1: HPSS archive and MOS script changes commit a0de3972ec00736cec46b3c11e7dfcd07dcd9372 Author: Judy.K.Henderson Date: Mon Jun 29 13:24:38 2020 +0000 revert paths for HOMEobsproc_prep and HOMEobsproc_network since updated paths do not exist on hera export HOMEobsproc_prep="$BASE_GIT/obsproc/gfsv16/obsproc_prep.iss70457.netcdfhistory_new" export HOMEobsproc_network="$BASE_GIT/obsproc/gfsv16/obsproc_global.iss71402.supportGFSv16" (do not exist on hera) export HOMEobsproc_prep="$BASE_GIT/obsproc/gfsv16b/obsproc_prep.iss70457.netcdfhistory" export HOMEobsproc_network="$BASE_GIT/obsproc/gfsv16b/obsproc_global.iss71402.supportGFSv16" commit 99b8105e69800ce74cc056c1c7c629264a12dcac Author: Judy.K.Henderson Date: Fri Jun 26 22:25:12 2020 +0000 Merged with 26Jun feature/gfsv16b branch Corrected setting of nwat for Thompson MP in config.fcst Squashed commit of the following: commit 28b1faf03c5ad12e4e9a44f1d02c754f1441ebc7 Author: fanglin.yang Date: Fri Jun 26 02:31:18 2020 +0000 modified: config.vrfy to add elif [ $machine = "HERA" ] ; then export RUNGFSMOSSH="$HOMEgfs/scripts/run_gfsmos_master.sh.hera" commit 61f4a52e299482687d84ef6686e6a65f64fe57f3 Author: fanglin.yang Date: Fri Jun 26 02:21:33 2020 +0000 corrected a typo in hpssarch_gen.sh - echo "${dirname}${head}atma000.ensres${SUFFIX} " >>gdas.txt + echo "${dirname}${head}atma009.ensres${SUFFIX} " >>gdas.txt commit b10a9306b732e543d2be3b932d556ebcdcbe8a5e Author: fanglin.yang Date: Thu Jun 25 20:25:30 2020 +0000 modified: config.vrfy to point a different syndat directory on Hera export COMROOTp1="/scratch1/NCEPDEV/global/glopara/com" export COMINsyn=${COMINsyn:-${COMROOTp1}/gfs/prod/syndat} commit b8192e54988f2fb2f4cda0510af02a090dfdda2e Author: russ.treadon Date: Thu Jun 25 18:20:01 2020 +0000 Issue #1: HPSS archive and MOS script changes * replace enkf member atmi*nc with ratmi*nc in HPSS enkf tarballs * add ensemble resolution analysis to HPSS gdas tarball * allow variable range to be externally set in run_gfsmos_master scripts commit e599c368a2d55018e4a1567717efd7ffa09f14d9 Merge: 99277ae3 1e56eddb Author: Kate Friedman Date: Wed Jun 24 14:16:22 2020 -0400 Merge pull request #93 from JessicaMeixner-NOAA/bugfix/exiterr fix for exiting properly with error for wave prep/init scripts commit 1e56eddb055b1414385e276ac73255d3ede9e9e9 Author: JessicaMeixner-NOAA Date: Wed Jun 24 12:36:53 2020 -0500 fix for exiting properly with error for wave prep/init scripts commit 99277ae34ef50454fa15e7e28b564c2e34e3406c Merge: 14dd3c94 4f8d5a5f Author: fanglin.yang Date: Tue Jun 23 16:05:16 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit 4f8d5a5f28c7120905fe36e9254f0199da986188 Author: Kate Friedman Date: Tue Jun 23 11:57:26 2020 -0400 Update README.md Remove use/mention of manage_externals until checkout.sh is retired. commit 14dd3c94938b0e69601e25a42104b2fc23944ebd Author: fanglin.yang Date: Tue Jun 23 15:53:11 2020 +0000 modified: Externals.cfg and sorc/checkout.sh to check out model tag GFS.v16.0.7 and UPP tag upp_gfsv16_release.v1.0.9. Changes include: 1) Inline POST Issues #136 and $142 * Update ceiling height calculation for global FV3. * add low,middle,high instantaneous cloud fraction * add radar reflectivity at model layers 1 and 2 , and radar reflectivities at 1 and 4-km height. * fix a bug in initializing DBZI * output mixed layer CAPE/CIN * remove simulated GOES-12 brightness temperature. * change the names of time averaged low/mid/high cloud fractions in grib2 files from "TCDC" to "LCDC/MCDC/HCDC", respectively. 2) Model Issue #152 * update in-line post control files * upgrade post library to 8.0.9 for hera and wcoss_dell_p3 commit dd76002425a03905bfc6ef63d3f43a6813814497 Merge: df89cc80 dd599eaa Author: Kate Friedman Date: Tue Jun 23 11:34:40 2020 -0400 Merge pull request #91 from christopherwharrop-noaa/feature/fix_externals Update version of upp in Externals.cfg to be consistent with sorc/che… commit dd599eaa4f379e1eb8fc5e057f7904b0e6290d48 Author: Christopher Harrop Date: Tue Jun 23 15:25:08 2020 +0000 Update version of upp in Externals.cfg to be consistent with sorc/checkout.sh commit df89cc800d3c479c132a5e679a2562af91b32f62 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Jun 19 18:40:26 2020 -0400 Update config.resources Generalize setting of echgres threads to be maximum permitted on given platform instead of explicitly setting echgres threads on every platform. commit ff8cd28365377f0ceed87ff8b4b9a9b4b6e91368 Merge: 1dd83b81 965ff420 Author: russ.treadon Date: Thu Jun 18 20:07:59 2020 +0000 Issue #1: merge branch 'feature/chgresfcst' at 965ff42 into feature/gfsv16b commit 965ff4203f132c6b032398a7a56494329714247c Author: russ.treadon Date: Thu Jun 18 20:02:23 2020 +0000 Issue #85: update DA checkout to point at release/gfsda.v16.0.0 commit 71d714119960feed1f0807708cdf85677ab81d73 Author: russ.treadon Date: Tue Jun 16 20:11:33 2020 +0000 Issue #85: (1) rename "chgresfcst" as "echgres", (2) add chgres variables to env commit 1dd83b818e9f2babbd11b762951721cf2a4c415e Author: fanglin.yang Date: Tue Jun 16 16:07:45 2020 +0000 modified: run_gfsmos_master.sh.dell to still set range=both as the default for running the real-time parallel commit eb0e3b4d009047251c535eea6fdc5958e58e68f7 Author: fanglin.yang Date: Tue Jun 16 14:43:29 2020 +0000 update checkout.sh to switch back to post version upp_gfsv16_release.v1.0.8. 1.0.9 still has issues. commit dfc76f0715a29e52e4d7133a8259c492229a5c22 Author: Kate.Friedman Date: Tue Jun 16 13:32:01 2020 +0000 Issue #1 - sync Externals.cfg with checkout.sh update for FV3 GFSv16.0.6 tag commit 7078bb5c680d54297101fae573579be24411a94a Author: fanglin.yang Date: Tue Jun 16 13:22:43 2020 +0000 modified: scripts/run_gfsmos_master.sh.dell to set default verification type o short. modified: sorc/checkout.sh updated to model tag GFS.v16.0.6 to fix contrib issue on HERA commit 15d5bed4119b067905f5a4bf47656557f2211883 Author: russ.treadon Date: Mon Jun 15 20:47:47 2020 +0000 Issue #85: add cfp option to chgresfcst; enable threads with chgresfcst commit d8782697fa698c00daa242a656246cf5f5d9b537 Author: Kate.Friedman Date: Mon Jun 15 16:00:35 2020 +0000 Issue #1 - update Externals.cfg to match updates to checkout.sh commit a2bd621727701e9526feccc7ce8ebd43be31860f Merge: 22b735d3 295cd05f Author: Kate Friedman Date: Mon Jun 15 11:57:14 2020 -0400 Merge pull request #84 from NOAA-EMC/feature/gfsv16b_herawavepost Adapting wavepostsbs for running on Hera commit 295cd05f306e4d70d09880a41fd60fadce74bab3 Author: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Mon Jun 15 11:53:13 2020 -0400 Update exwave_post_sbs.sh Removing obsolete nm variable entries commit 22b735d310413989568dca4b30d19eadcd4c3fdb Author: fanglin.yang Date: Fri Jun 12 20:06:49 2020 +0000 modified: checkout.sh to check out upp_gfsv16_relaese.v1.0.9 output cloud ceiling height and instant total cloud fraction. output instant cloud fraction at low/mid/high cloud layer. correct grib2 names of time averaged cloud fraction fraction at low/mid/high cloud layer from "TCDC" into "LCDC, MCDC, HCDC". output radar reflectivity at 1/4 km above ground and model layer 1/2. output mixed layer CAPE/CIN. Remove simulated GOES-12 brightness temperature from gfs product. Add the bug fix of initializing DBZI from Ruiyu. commit 10ce1d4140c7c0fe795ded39e1fa550e0c202c59 Author: Kate.Friedman Date: Thu Jun 11 18:42:22 2020 +0000 Issue #1 - Hotfix to update anaconda module contrib path on Hera commit 58d1139c196f92bd4bb149008a8d61eb6457fb3c Author: henrique.alves Date: Thu Jun 11 02:44:41 2020 +0000 Adapting wavepostsbs for running on Hera commit c330e60197c38acb724cfdf4a30a20417a6618b4 Author: CoryMartin-NOAA Date: Wed Jun 10 21:17:00 2020 +0000 add checkout.sh to test on Dell commit 201609b2d43acd13a08bf1d5ab2251db90a11d32 Author: CoryMartin-NOAA Date: Wed Jun 10 20:51:51 2020 +0000 Commit changes from debugging addition of chgresfcst on hera commit 4405a2c74c8b5a40ee6edd7b4c2faba9bd41b59c Author: russ.treadon Date: Wed Jun 10 14:36:03 2020 +0000 Issue #1: update parm/config/config.base.emc.dyn to be consistent with GFS v16 real-time parallel config.base commit fc3066c2b7a5edd9f0d510b88f8542b07b8a8589 Author: CoryMartin-NOAA Date: Wed Jun 10 14:19:07 2020 +0000 First draft to add chgresfcst to rocoto workflow commit 9f2e4ecfe5799e13a4f6b9e80f7ff3e7b4a3633c Author: russ.treadon Date: Mon Jun 8 00:34:07 2020 +0000 Issue #1: correct typo in scripts/exwave_prep.sh commit 5a8b8f2e80532b7e446c51a69dcb83c7a212395d Author: russ.treadon Date: Mon Jun 8 00:15:31 2020 +0000 Issue #1: check for existence of 0p50 and 1p00 pgrb files before attempting to write to HPSS commit a7306aa93d537da5b165297e0dc34ba88856d4c7 Author: fanglin.yang Date: Sun Jun 7 23:22:53 2020 +0000 modified: jobs/rocoto/post.sh wait for 5 minutes if forecast history file does not exist before exit modified: modulefiles/module_base.hera use GV's temporal build of netcdfp/4.7.4 and esmflocal/8.0.1.08bs on HERA modified: parm/config/config.base.emc.dyn add restart_interval_gfs=0 to config.base. It is used by config.fcst and config.wave modified: parm/config/config.fcst -- fix a bug related to setting npe_wav for gfsfcst. if [ "$CDUMP" = "gfs" ]; then npe_wav=$npe_wav_gfs ; fi -- set io_layout="4,4" for writing gfs restart files modified: parm/config/config.wave set WAVE restart frequency based on restart_interval_gfs (by H. Alves). commit 1082885b082e8a837aef095deb6a3343fca26cb3 Merge: 968b9860 bf5a5c44 Author: Fanglin Yang Date: Thu Jun 4 20:26:47 2020 -0400 Merge pull request #83 from NOAA-EMC/feature/gfsv16b_restart revive GFS forecast break-point restart capability with IAU turned on commit bf5a5c44bdebff5663225e9e9548ba83f498f7cd Merge: b27a01db 968b9860 Author: fanglin.yang Date: Thu Jun 4 23:36:52 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b_restart commit 968b98609fe2016518f3adcc6b178bdca0b73bcf Merge: 9b36cfde dc512dd6 Author: Guang Ping Lou Date: Thu Jun 4 19:20:53 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit 9b36cfde2032e9296cc7567704e1274560b2897e Author: Guang Ping Lou Date: Thu Jun 4 19:12:56 2020 +0000 Unify output path in gfs_bfr2gpk.sh commit 7675368c3f7f3942b7f8a57bad4c29a38cef48fa Author: Guang Ping Lou Date: Thu Jun 4 19:11:23 2020 +0000 remove station elevation adjustment to T,Q and evaporation bug fix commit dc512dd68df088361c340ac01ec3c8130707ffd1 Merge: a7b25a3b 987c32af Author: Fanglin Yang Date: Thu Jun 4 12:55:33 2020 -0400 Merge pull request #82 from NOAA-EMC/feature/gfsv16b_wavehera Adjustment to wave workflow for running wave component on Hera commit 987c32af7c7e94c53f50d20e1ad3c8b27e2c9afb Author: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Thu Jun 4 12:08:05 2020 -0400 Updating checkout to ufs-weather-model GFS.v16.0.5 commit a7b25a3bb0b7b5f1b8a15204ff1e7c061ea1199a Author: Mallory Row Date: Thu Jun 4 14:59:22 2020 +0000 modified: checkout.sh to check out METplus verification tag verif_global_v1.8.0 commit 0acee674759a5e2c8fbd4ec7b1cdd0459f95e2bd Author: russ.treadon Date: Wed Jun 3 20:10:09 2020 +0000 Issue #1: remove redundant entry from config.ediag; update checkout.sh to pull GFS v16 DA from github commit b27a01db1516f9aa229e75957885ffa2125d31d6 Author: fanglin.yang Date: Wed Jun 3 16:58:29 2020 +0000 modified: parm/config/config.fcst modified: scripts/exglobal_fcst_nemsfv3gfs.sh GFS forecast restrat capability from a breakpoint is no longer working with IAU turned on. This function has been overhauled to make it more general and works for cases with and without IAU commit ba895481be53906878f58c2998a398bc59870ea2 Author: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Wed Jun 3 09:59:35 2020 -0400 Update JWAVE_PREP Removing lines using for testing presence of files while debugging. commit bb79d7a33c423770f4972c9c643c5dfa7fb0f3be Author: wx20ha Date: Wed Jun 3 02:45:33 2020 +0000 Fixing a few minor bugs in wave_tar.sh after testing on WCOSS commit 8dc2e255e77a55c0f7d90a5018f769ade1e83a9f Author: fanglin.yang Date: Wed Jun 3 01:41:18 2020 +0000 add new file: run_gfsmos_master.sh.hera commit 3393cac802b289cb9b6867c003ff27ef1711327a Author: henrique.alves Date: Thu May 28 00:01:51 2020 +0000 Correcting minor bug in wave_prn_cur.sh Adjusting indents in exwave_prep.sh Adding defaults for current processing in conif.waveprep. commit 32c5f29b62cf747662909ff50a6bf8f327127a09 Merge: 49abb906 e87b5a18 Author: henrique.alves Date: Wed May 27 17:40:34 2020 +0000 Merging latest feature/gfsv16b branch into feature/gfsv16b_wavehera commit 49abb9068effc5aeeba8f861f44207b67ff442c9 Author: henrique.alves Date: Wed May 27 17:36:12 2020 +0000 Adding comment indicating how to regenerate cdo interpolation weights. commit e87b5a18f9dbad2230b9d3324f0c48a7b25d9b62 Author: wx20ha Date: Wed May 27 02:01:57 2020 +0000 JWAVE_PREP updated to use CDO_ROOT defined in config config.waveprep updated to default to WCOSS rtofs operational cdo if no module found wave_prnc_cur.sh bug fixed now provides proper fhr in temp file names exwave_prep.sh adjusted for WCOSS and Hera. commit 70d71310132813c1066a9b0f881ef686602a23c4 Author: russ.treadon Date: Tue May 26 20:39:33 2020 +0000 Issue #1: remove "_break" from commented out lines in config.anal and config.prep. "_break" will cause failue if line active commit 914cb8dff96e45e690c8e1a2932c8d846afb1655 Author: russ.treadon Date: Tue May 26 20:37:27 2020 +0000 Issue #1: correct typo in parm/config/config.anal commit 2e12e63b13533a8a1b741bf55cbbaba49beb14cc Author: russ.treadon Date: Tue May 26 19:18:57 2020 +0000 Issue #1: update config.anal logic to point ABIBF at the correct GDA directory commit 38cd82133b64af289648ca5e88fde1ac3dcaeab0 Author: russ.treadon Date: Tue May 26 18:04:59 2020 +0000 Issue #1: update config files * parm/config/config.anal - add logic to use correct global_convinfo.txt prior to GFS v15.3 implementation (2020052612) * parm/config/config.awips - set NAWIPSGRP to equal NPOSTGRP (config.post) * parm/config/config.fcst - add double quotes around CDUMP on levs test to prevent setup_workflow.py runtime error commit 0dff61f103bab78f9d2426599f976dc318eff4e0 Author: fanglin.yang Date: Mon May 25 03:08:27 2020 +0000 modified: config.fv3 to reduce tasks assigned to the WAVE component. 70 tasks at C768 is adequate for wave. commit 20ef779fd90a267affc0e80ae1f8a3f64afd2f8d Author: henrique.alves Date: Fri May 22 19:52:55 2020 +0000 Redefining mpmd command for working on Hera with slurm Adapting wave scripts to execute mpmd command on Hera Adjusting wave_prnc_cur.sh for properly catting files on Hera commit e248236b233b6bcf2dc008006a82ccd459d7e3f3 Author: fanglin.yang Date: Fri May 22 15:23:59 2020 +0000 modified: config.fcst to set if [ $LEVS = "128" -a $CDUMP = "gdas" ]; then ... lheatstrg=".false." commit 96460e6e5f4b09b9fd10d39550bf022dc62c37ab Author: russ.treadon Date: Fri May 22 13:02:06 2020 +0000 Issue #1: replace "nawips" with "gempak" in hpssarch_gen.sh path to gfs sfc and snd files commit 7222f84041f2a2f221e85d6543657f229408328c Author: fanglin.yang Date: Thu May 21 14:09:36 2020 +0000 modified: checkout.sh to check out modle tag GFS.v16.0.4. changes include: 1. Remove constraints on mixing length and background diffusitivity over inversion layers on land 2. Enhance mass flux for deep convection, hence to increase subsidzing warming to reduce cold bias in the lower tropospehre 3. Fix a RRTMg solar radiaiton bug which has impact in SW abosrption in the UV region in the upper atmospehre. commit 4fa08a77e59660f4b58279375a83d179c891b385 Author: fanglin.yang Date: Wed May 20 01:20:21 2020 +0000 modified: HERA.env to add export CFP_MP="YES" # For analdiag with SLURM commit 9f7df9d3552fd971cde09148bc392ad93bf104e0 Author: fanglin.yang Date: Mon May 18 15:06:19 2020 +0000 modified: checkout.sh to check out upp_gfsv16_release.v1.0.8 1) Add configuration for Orion. 2) Make fields at isobaric levels have 41 vertical levels for all forecast hours and analysis in pgrb2 dataset. 3) Remove SPFH at isobaric levels from pgrb2b dataset. commit 5e4a1335ef3feb0242245b5661f22650a0a2e576 Author: Mallory Row Date: Fri May 15 13:08:25 2020 +0000 modified: checkout.sh to check out METplus verification tag verif_global_v1.7.2 commit 42913497cbb82435318797ee2148ec35311e8ea6 Author: fanglin.yang Date: Tue May 12 03:05:17 2020 +0000 modified: checkout.sh to check out gldas_gfsv16_release.v1.2.0. commit 0c0614cd03e6ee178275b85be7636f842f1eb77e Author: russ.treadon Date: Fri May 8 18:29:07 2020 +0000 Issue #1: change number of tasks for analdiag and ediag to 112 and 56, respectively in config.resources commit a601acda14b2c8c58d2d3ae484fa57812bf8801a Author: emc.glopara Date: Fri May 8 04:17:27 2020 +0000 updated config.vrfy to point to the fit2obs version that supports reading netcdf history files export fitdir="$BASE_GIT/verif/global/Fit2Obs/ncf-vqc/batrun" export PREPQFITSH="$fitdir/subfits_hera_slurm" commit ad86a552ac5893e2c57a36772b94d3e05ccf4d33 Author: Mallory Row Date: Wed May 6 15:28:49 2020 +0000 modified: checkout.sh to check out METplus verification tag verif_global_v1.7.1 commit 20572b53aab8579b20aaf4e365c59f32fd386b5f Author: russ.treadon Date: Fri May 1 19:08:23 2020 +0000 Issue #1: update files written to enkf HPSS tarballs to be consistent with GFS v16 DA updates commit 20baab7ab7f7c151330cea30027b90ff30bfc83b Author: fanglin.yang Date: Wed Apr 29 18:49:05 2020 +0000 modified: checkout.sh to check out model tag GFS.v16.0.3 In Sfc_diff.f, a bug was introduced when the surface layer scheme was updated last time to reduce 2-m temperature cold biases. The bug only has impact over sea-ice points, where momentum and thermal roughness are nevertheless very small. commit af6346497abe1d05d408c8c2b819427120a22961 Author: fanglin.yang Date: Tue Apr 28 18:18:44 2020 +0000 modified: qctropcy.f by Qingfu Liu A bug was found that the history files (syndat_stmcat , syndat_stmcat.scr) save the first and last storm ID used. If the FORTRAN code finds that the storm ID has been used in the current hurricane season, the code will change the storm ID by adding 1 to the original storm ID. The fix is to skip the change of the storm ID. See also https://github.com/NOAA-EMC/global-workflow/issues/63 commit 45f282db443a93dad0234b248f35ca706da945e6 Author: Judy.K.Henderson Date: Fri Jun 26 22:18:58 2020 +0000 revert config.nsst to original values and add if statements for GSD suites commit 28b1faf03c5ad12e4e9a44f1d02c754f1441ebc7 Author: fanglin.yang Date: Fri Jun 26 02:31:18 2020 +0000 modified: config.vrfy to add elif [ $machine = "HERA" ] ; then export RUNGFSMOSSH="$HOMEgfs/scripts/run_gfsmos_master.sh.hera" commit 61f4a52e299482687d84ef6686e6a65f64fe57f3 Author: fanglin.yang Date: Fri Jun 26 02:21:33 2020 +0000 corrected a typo in hpssarch_gen.sh - echo "${dirname}${head}atma000.ensres${SUFFIX} " >>gdas.txt + echo "${dirname}${head}atma009.ensres${SUFFIX} " >>gdas.txt commit 699c2e038169048dddd250255daa48ae5ee09e06 Author: Judy.K.Henderson Date: Thu Jun 25 21:07:05 2020 +0000 corrected syntax error and made all if CCPP_SUITE statements consistent commit b10a9306b732e543d2be3b932d556ebcdcbe8a5e Author: fanglin.yang Date: Thu Jun 25 20:25:30 2020 +0000 modified: config.vrfy to point a different syndat directory on Hera export COMROOTp1="/scratch1/NCEPDEV/global/glopara/com" export COMINsyn=${COMINsyn:-${COMROOTp1}/gfs/prod/syndat} commit b8192e54988f2fb2f4cda0510af02a090dfdda2e Author: russ.treadon Date: Thu Jun 25 18:20:01 2020 +0000 Issue #1: HPSS archive and MOS script changes * replace enkf member atmi*nc with ratmi*nc in HPSS enkf tarballs * add ensemble resolution analysis to HPSS gdas tarball * allow variable range to be externally set in run_gfsmos_master scripts commit fef33e20369128975e8c08e9d0890e0c99d0e16d Author: kate.friedman Date: Thu Jun 25 11:24:27 2020 -0500 Issue #5 - fix to gfsanalcalc dependency (or -> and) commit cfc8a111b8016623c2280dfd359543409c6353fe Author: kate.friedman Date: Thu Jun 25 09:25:01 2020 -0500 Issue #5 - fixes for config.base commit 6700a568822089b2fc669e0990270f6cadd8bd10 Merge: be717cec4 e599c368a Author: kate.friedman Date: Thu Jun 25 08:45:03 2020 -0500 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: fix for exiting properly with error for wave prep/init scripts commit e599c368a2d55018e4a1567717efd7ffa09f14d9 Merge: 99277ae34 1e56eddb0 Author: Kate Friedman Date: Wed Jun 24 14:16:22 2020 -0400 Merge pull request #93 from JessicaMeixner-NOAA/bugfix/exiterr fix for exiting properly with error for wave prep/init scripts commit 1e56eddb055b1414385e276ac73255d3ede9e9e9 Author: JessicaMeixner-NOAA Date: Wed Jun 24 12:36:53 2020 -0500 fix for exiting properly with error for wave prep/init scripts commit be717cec4f252ae6949ce4a0a33763de836f3080 Merge: df8dc52e3 99277ae34 Author: Kate.Friedman Date: Tue Jun 23 16:20:51 2020 +0000 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: Update README.md modified: Externals.cfg and sorc/checkout.sh to check out model tag GFS.v16.0.7 and UPP tag upp_gfsv16_release.v1.0.9. Changes include: Update version of upp in Externals.cfg to be consistent with sorc/checkout.sh commit 99277ae34ef50454fa15e7e28b564c2e34e3406c Merge: 14dd3c949 4f8d5a5f2 Author: fanglin.yang Date: Tue Jun 23 16:05:16 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit 4f8d5a5f28c7120905fe36e9254f0199da986188 Author: Kate Friedman Date: Tue Jun 23 11:57:26 2020 -0400 Update README.md Remove use/mention of manage_externals until checkout.sh is retired. commit 14dd3c94938b0e69601e25a42104b2fc23944ebd Author: fanglin.yang Date: Tue Jun 23 15:53:11 2020 +0000 modified: Externals.cfg and sorc/checkout.sh to check out model tag GFS.v16.0.7 and UPP tag upp_gfsv16_release.v1.0.9. Changes include: 1) Inline POST Issues #136 and $142 * Update ceiling height calculation for global FV3. * add low,middle,high instantaneous cloud fraction * add radar reflectivity at model layers 1 and 2 , and radar reflectivities at 1 and 4-km height. * fix a bug in initializing DBZI * output mixed layer CAPE/CIN * remove simulated GOES-12 brightness temperature. * change the names of time averaged low/mid/high cloud fractions in grib2 files from "TCDC" to "LCDC/MCDC/HCDC", respectively. 2) Model Issue #152 * update in-line post control files * upgrade post library to 8.0.9 for hera and wcoss_dell_p3 commit dd76002425a03905bfc6ef63d3f43a6813814497 Merge: df89cc800 dd599eaa4 Author: Kate Friedman Date: Tue Jun 23 11:34:40 2020 -0400 Merge pull request #91 from christopherwharrop-noaa/feature/fix_externals Update version of upp in Externals.cfg to be consistent with sorc/che… commit dd599eaa4f379e1eb8fc5e057f7904b0e6290d48 Author: Christopher Harrop Date: Tue Jun 23 15:25:08 2020 +0000 Update version of upp in Externals.cfg to be consistent with sorc/checkout.sh commit df8dc52e36f605199755615e4bac54d22e139486 Merge: ff46607bc df89cc800 Author: Kate.Friedman Date: Mon Jun 22 14:41:17 2020 +0000 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: Update config.resources Issue #85: update DA checkout to point at release/gfsda.v16.0.0 Issue #85: (1) rename "chgresfcst" as "echgres", (2) add chgres variables to env Issue #85: add cfp option to chgresfcst; enable threads with chgresfcst add checkout.sh to test on Dell Commit changes from debugging addition of chgresfcst on hera First draft to add chgresfcst to rocoto workflow commit df89cc800d3c479c132a5e679a2562af91b32f62 Author: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri Jun 19 18:40:26 2020 -0400 Update config.resources Generalize setting of echgres threads to be maximum permitted on given platform instead of explicitly setting echgres threads on every platform. commit ff8cd28365377f0ceed87ff8b4b9a9b4b6e91368 Merge: 1dd83b818 965ff4203 Author: russ.treadon Date: Thu Jun 18 20:07:59 2020 +0000 Issue #1: merge branch 'feature/chgresfcst' at 965ff42 into feature/gfsv16b commit 965ff4203f132c6b032398a7a56494329714247c Author: russ.treadon Date: Thu Jun 18 20:02:23 2020 +0000 Issue #85: update DA checkout to point at release/gfsda.v16.0.0 commit 6698047dff1c821f39edb89f4b22e91aeba84faf Merge: 958ec2efc b1c6f7cdc Author: Kate Friedman Date: Thu Jun 18 14:39:26 2020 -0400 Merge pull request #89 from NOAA-EMC/feature/develop_v15.3.1 Issue #65 - updates from v15.3.0 and v15.3.1 operations into develop commit b1c6f7cdcaf4bba90088781316802d970d7e8cc3 Author: kate.friedman Date: Thu Jun 18 18:29:56 2020 +0000 Issue #65 - updates from v15.3.0 and v15.3.1 operations into develop - AWIPS data card updates (RFC 6963) - ACCOUNT change on WCOSS in config.base.nco.static - obsproc_prep path adjustment to OT tag install in config.base.emc.dyn - add dictionaries version export to config.prep - RDHPCS gdas transfer list update - fix to link_fv3gfs.sh to harden fix folder symlinking - bug fix to syndat_qctropcy.fd/qctropcy.f commit c61841dd2e0ef498388465591a0593f84ff17533 Author: Judy.K.Henderson Date: Thu Jun 18 16:58:11 2020 +0000 - made change for contrib modules commit 027b5709f1f1b136200e884941841d8c8c68e1e3 Author: Judy.K.Henderson Date: Thu Jun 18 16:41:53 2020 +0000 -- set DA diag table to diag_table_da_gsd when running GSD_v0 or GSD_noah suites -- set radiation and LSM values differently for GSD_v0 and GSD_noah suites commit eaf0d1b21fda064315be9508f065a8904133f83d Merge: 23f25b7e6 4a4b3fb8b Author: Kate Friedman Date: Thu Jun 18 11:30:43 2020 -0400 Merge pull request #88 from NOAA-EMC/release/gfsv15.3.1 GFSv15.3.1 commit ff46607bccf6d8ccc4f4aa1e171a847a9161ab0b Merge: ed6b27971 1dd83b818 Author: Kate.Friedman Date: Wed Jun 17 17:23:44 2020 +0000 Issue #5 - Sync merge branch 'feature/gfsv16b' into port2orion * feature/gfsv16b: modified: run_gfsmos_master.sh.dell to still set range=both as the default for running the real-time parallel update checkout.sh to switch back to post version upp_gfsv16_release.v1.0.8. 1.0.9 still has issues. Issue #1 - sync Externals.cfg with checkout.sh update for FV3 GFSv16.0.6 tag modified: scripts/run_gfsmos_master.sh.dell to set default verification type o short. modified: sorc/checkout.sh updated to model tag GFS.v16.0.6 to fix contrib issue on HERA Issue #1 - update Externals.cfg to match updates to checkout.sh Update exwave_post_sbs.sh Adapting wavepostsbs for running on Hera commit 71d714119960feed1f0807708cdf85677ab81d73 Author: russ.treadon Date: Tue Jun 16 20:11:33 2020 +0000 Issue #85: (1) rename "chgresfcst" as "echgres", (2) add chgres variables to env commit 1dd83b818e9f2babbd11b762951721cf2a4c415e Author: fanglin.yang Date: Tue Jun 16 16:07:45 2020 +0000 modified: run_gfsmos_master.sh.dell to still set range=both as the default for running the real-time parallel commit eb0e3b4d009047251c535eea6fdc5958e58e68f7 Author: fanglin.yang Date: Tue Jun 16 14:43:29 2020 +0000 update checkout.sh to switch back to post version upp_gfsv16_release.v1.0.8. 1.0.9 still has issues. commit dfc76f0715a29e52e4d7133a8259c492229a5c22 Author: Kate.Friedman Date: Tue Jun 16 13:32:01 2020 +0000 Issue #1 - sync Externals.cfg with checkout.sh update for FV3 GFSv16.0.6 tag commit 7078bb5c680d54297101fae573579be24411a94a Author: fanglin.yang Date: Tue Jun 16 13:22:43 2020 +0000 modified: scripts/run_gfsmos_master.sh.dell to set default verification type o short. modified: sorc/checkout.sh updated to model tag GFS.v16.0.6 to fix contrib issue on HERA commit 15d5bed4119b067905f5a4bf47656557f2211883 Author: russ.treadon Date: Mon Jun 15 20:47:47 2020 +0000 Issue #85: add cfp option to chgresfcst; enable threads with chgresfcst commit d8782697fa698c00daa242a656246cf5f5d9b537 Author: Kate.Friedman Date: Mon Jun 15 16:00:35 2020 +0000 Issue #1 - update Externals.cfg to match updates to checkout.sh commit a2bd621727701e9526feccc7ce8ebd43be31860f Merge: 22b735d31 295cd05f3 Author: Kate Friedman Date: Mon Jun 15 11:57:14 2020 -0400 Merge pull request #84 from NOAA-EMC/feature/gfsv16b_herawavepost Adapting wavepostsbs for running on Hera commit 295cd05f306e4d70d09880a41fd60fadce74bab3 Author: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Mon Jun 15 11:53:13 2020 -0400 Update exwave_post_sbs.sh Removing obsolete nm variable entries commit 58d1139c196f92bd4bb149008a8d61eb6457fb3c Author: henrique.alves Date: Thu Jun 11 02:44:41 2020 +0000 Adapting wavepostsbs for running on Hera commit c330e60197c38acb724cfdf4a30a20417a6618b4 Author: CoryMartin-NOAA Date: Wed Jun 10 21:17:00 2020 +0000 add checkout.sh to test on Dell commit 201609b2d43acd13a08bf1d5ab2251db90a11d32 Author: CoryMartin-NOAA Date: Wed Jun 10 20:51:51 2020 +0000 Commit changes from debugging addition of chgresfcst on hera commit fc3066c2b7a5edd9f0d510b88f8542b07b8a8589 Author: CoryMartin-NOAA Date: Wed Jun 10 14:19:07 2020 +0000 First draft to add chgresfcst to rocoto workflow commit 4a4b3fb8bfe9a1507945a2288e7ecca7cc0918a1 Merge: bd5a99d09 23f25b7e6 Author: kate.friedman Date: Tue Jun 2 14:32:47 2020 +0000 Issue #65 - Sync merge branch 'operations' into release/gfsv15.3.1 after v15.3.0 commit commit 23f25b7e69fa3dd3d489668b68c27bc9e0543eeb Merge: f1c8a4c57 8b77bc281 Author: Kate Friedman Date: Tue Jun 2 10:15:21 2020 -0400 Merge pull request #79 from NOAA-EMC/release/gfs.v15.3.0 GFSv15.3.0 commit 8b77bc281b99226295938bbc3447df1e70fdff09 Author: kate.friedman Date: Tue Jun 2 14:10:26 2020 +0000 Issue #63 - adjustments to use correct obsproc commit 737cfa89f727a633f7e1ea4465e53eb73cee5007 Author: kate.friedman Date: Wed May 27 14:28:25 2020 +0000 Issue #63 - final NCO changes ahead of v15.3.0 implementation on May 26th at 13Z commit 4e7d35633c5a609c3b9698e32f6dc771f5862b9b Author: Judy.K.Henderson Date: Tue May 12 20:41:12 2020 +0000 removed extra files commit 7df51727311615e95654bf5bfbfbd23f31586f77 Author: Judy.K.Henderson Date: Tue May 12 18:29:07 2020 +0000 corrected setting of effr_in to .true. for GSD suites commit bd5a99d0943bd65bf2f1438b1112ae55d94fd434 Author: kate.friedman Date: Tue May 12 18:07:37 2020 +0000 Issue #65 - fix to link_fv3gfs.sh for emc mode commit 0c403efd38da534d9251ff3e8824088fdc4aff7c Merge: f75685917 a5dfbf5eb Author: kate.friedman Date: Wed May 6 15:47:12 2020 +0000 Isue #65 - sync merge branch 'release/gfs.v15.3.0' into release/gfsv15.3.1 commit a5dfbf5eb3e5c973a8d5dd45c00a0cd5bb003616 Author: kate.friedman Date: Wed May 6 13:05:24 2020 +0000 Issue #63 - fix to qctropcy.f for compile errors commit 59b0c84b766010ee8e0d9beec65cc8e73f7f11fc Author: kate.friedman Date: Tue May 5 21:04:18 2020 +0000 Issue #63 - updating EMC_gfs_wafs clone path to point to GitHub auth repo commit d8ebf59cadb1f75fb66790b001a2e19d0899e857 Author: kate.friedman Date: Tue May 5 19:05:24 2020 +0000 Issue #63 - updating EMC_gfs_wafs tag to gfs_wafs.v5.0.11 commit a22489632496483eee6a580a25dc5f1af72aef3e Author: Judy.K.Henderson Date: Mon May 4 20:19:49 2020 +0000 added new diag table for DA when running GSD_noah suite commit 1d15c729f9a27aba4f9c49ef52d87de5bb61a23f Author: kate.friedman Date: Mon May 4 19:52:10 2020 +0000 Issue #63 - backing out link script change for rsync and using cp again commit f7568591769f7e10264a6f655c458edba0e20e7a Merge: 0342a079c 43d60c780 Author: kate.friedman Date: Mon May 4 17:31:35 2020 +0000 Issue #65 - Sync merge branch 'release/gfs.v15.3.0' into release/gfsv15.3.1 commit 43d60c780d51568047ce7ae46f1522822e074812 Author: kate.friedman Date: Mon May 4 16:47:12 2020 +0000 Issue #63 - updated NCO mode LINK in link_fv3gfs.sh from cp to rsync commit a54ffbbe6345a7472f9a1383c98c629b9efad03d Author: Judy.K.Henderson Date: Fri May 1 21:21:00 2020 +0000 modified name of diag_table when running GSD_noah suite commit c90ea4b242b2a895c323fb1240d8c87c3d51e7b0 Author: russ.treadon Date: Fri May 1 19:23:17 2020 +0000 Issue #63: update ProdGSI tag to gfsda.v15.3.0 commit 0342a079ceecef65fa569af3f30861d4271ca36c Author: BoiVuong-NOAA Date: Fri May 1 17:54:21 2020 +0000 Issue # 65 updated DATA cards for AWIPS commit 4fc766bc94ad72e5efc21d5443224f474fea2bf7 Author: Judy.K.Henderson Date: Thu Apr 30 23:14:02 2020 +0000 - remove modular forecast scripts and obsolete exglobal script commit b53992afdbc8b8279bf99a23ca65dcbe4dbbaccf Author: kate.friedman Date: Tue Apr 28 20:09:09 2020 +0000 Issue #63 - update ProdGSI and EMC_post_gtg tags to match current ops versions commit 6ed13256cb9b3f1a01249d3f9b5d1423e7c87caf Author: kate.friedman Date: Tue Apr 28 19:36:31 2020 +0000 Issue #63 - bug fix in syndat_qctropcy.fd/qctropcy.f and update to link_fv3gfs.sh to point to fix_nco_gfsv15 set that includes fix to storm names in syndat_stmnames commit 204201bb2d73d3b0d2ba9214d9eaeed1ddac3e69 Author: kate.friedman Date: Tue Apr 28 19:13:17 2020 +0000 Issue #63 - backing out changes meant to go in with v15.3 changes commit f1c8a4c57b46ac09ea092c3bd9c5ebccb2ffcb1d Author: kate.friedman Date: Tue Apr 28 18:41:32 2020 +0000 Issue #52 - final NCO svn log for v15.2.12 showed jobs/JGFS_POSTSND also changed commit 9829f71c21a1dc34f2edccce998688d9577e5ee7 Merge: 9b2eca6e5 f60f47a52 Author: kate.friedman Date: Fri Apr 24 14:34:07 2020 +0000 Merge remote-tracking branch 'upstream/gmtb_ccpp_hera' into feature/ccpp commit f60f47a5241b45b910dc2799f74561e8803090b5 Author: Judy.K.Henderson Date: Wed Apr 22 23:26:36 2020 +0000 changed sorc/aeroconv directory name to sorc/aeroconf.fd commit d04907a484cb18ad5e64be998ebd105876823c5c Author: Judy.K.Henderson Date: Wed Apr 22 20:45:57 2020 +0000 updated jkhNOTES commit 4861bab8d0006afcbae93546e898cfd114b4feea Merge: adcfca84a b29b0d6c2 Author: russ.treadon Date: Wed Apr 22 19:49:12 2020 +0000 Issue #37: Merge branch 'operations' at b29b0d6 into feature/gfsv15.3 commit bd4998d2af01e53b66c1e55da723fc017b05bd31 Author: Judy.K.Henderson Date: Wed Apr 22 19:08:36 2020 +0000 - backed out adding CCPP_SUITE, ATARDIR, and HPSS_PROJECT to setup_expt* scripts - added setting of variables in config.base.emc.dyn - removed config.base_emc and config.base_gsd from repository commit 958ec2efce774535c09009f8bbbbcdd87a74e028 Merge: 3b2993f38 69308c16a Author: Kate Friedman Date: Wed Apr 22 13:16:35 2020 -0400 Merge pull request #62 from NOAA-EMC/feature/develop_i52 Issue #52 - GFSv15.2.12 update to obsproc_global version in develop from RFC 6789 commit 69308c16a23684043573750cbdec143afb4b0a77 Author: kate.friedman Date: Wed Apr 22 17:13:40 2020 +0000 Issue #52 - GFSv15.2.12 update to obsproc_global version in develop from RFC 6789 commit b29b0d6c228968dc22e1b92ce3a67f2b51e2cba0 Merge: 14d09bfc9 675b2b316 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Wed Apr 22 12:39:40 2020 -0400 Merge pull request #61 from NOAA-EMC/feature/operations_v15.2.12 Issue #52 - updates for GFSv15.2.12 from RFC 6789 commit 675b2b316a47d9bb76895e39e0f128867cbc89b8 Author: kate.friedman Date: Wed Apr 22 16:25:33 2020 +0000 Issue #52 - updates for GFSv15.2.12 from RFC 6789 commit 273df73e182432e69e01383a797bdd5d47e2bdba Author: Judy.K.Henderson Date: Tue Apr 21 16:56:27 2020 +0000 - add comment when runnning with 20 ensemble members to jkhNOTES commit 8a674828022d9eeb1752f2b078b3c328f17f0b7d Author: Judy.K.Henderson Date: Tue Apr 21 00:37:55 2020 +0000 - updated GSI tag in Externals.cfg - added CCPP_SUITE, HPSS_PROJECT, ATARDIR to setup_expt* python scripts and config.base.emc.dyn - changed path for Thompson lookup tables from $FV3INP to $FIX_AM - add _jkh directories for gsi.fd and fv3gfs.fd with changed files needed for running cycling with Thompson MicroPhysics and reading Thompson lookup tables with threads>1 - added GSD-specific experiment setup python scripts commit 14d09bfc9e7abce21007ec42d6ad9236e441c762 Merge: f5c4aff96 2a84d9921 Author: Kate Friedman Date: Tue Apr 14 09:16:29 2020 -0400 Merge pull request #57 from NOAA-EMC/feature/ops-v15.2.11 Issue #52 - updates for GFSv15.2.11 from RFC 6745 commit 2a84d99215a3a77c8f47c23c12c6bb7f6d67aa98 Author: kate.friedman Date: Tue Apr 14 13:06:32 2020 +0000 Issue #52 - updates for GFSv15.2.11 from RFC 6745 commit 5561ba9b2a1fb089db8f5fe6fdb2b10863d66227 Author: Judy.K.Henderson Date: Tue Apr 14 00:00:57 2020 +0000 - added aeroic task to setup workflow python scripts commit 984c0c43feb5acd35d8806beb5e7041d40b21af4 Author: Judy.K.Henderson Date: Mon Apr 13 23:36:16 2020 +0000 - added sorc/aeroconv.fd to Externals.cfg file - added script to extract INPUT/ and thirdparty/ sub-directories under aeroconv.fd commit 9446debd6ae49488aacf8123f15909c9615268df Author: Judy.K.Henderson Date: Mon Apr 13 20:59:54 2020 +0000 - add GFS_v16beta and GSD_noah CCPP suites commit a34e8b39d587b2a5a8931042d1b4da6795242af2 Author: Judy.K.Henderson Date: Mon Apr 13 20:44:19 2020 +0000 - changes to add CCPP changes to exglobal forecast script commit d0c5a0a12dc983d700111f7a2b17cf4b3f75aa6c Author: Judy.K.Henderson Date: Mon Apr 13 20:38:59 2020 +0000 updated Externals.cfg with tags in checkout.sh for FV3GFS and EMC_Post commit d9fb3a1ef5c628cd726657ca0cd5df2fedec2dd1 Author: Judy.K.Henderson Date: Fri Apr 10 19:36:55 2020 +0000 Merge branch 'feature/gfsv16b' into gmtb_ccpp_hera Squashed commit of the following: commit 073e5f64eab5badbd8a30b2ea702ce27159186fe Author: fanglin.yang Date: Thu Apr 9 16:44:14 2020 +0000 modified: arch.sh add external reference to VFRARCH. commit 53c818babc7c5e3dadc089823604b58bcb31bf0f Author: fanglin.yang Date: Thu Apr 9 16:30:04 2020 +0000 modified: arch.sh to clean old data under vrfyarch and touch remaining data to prevent them from being removed by the operation system commit 44dd4c28609d4e7c24cf87d5f69796ea8f7a6245 Author: russ.treadon Date: Thu Apr 9 12:00:15 2020 +0000 Issue #1: update selection of global_convinfo.txt and prepobs_errtable.global to be consistent with GFS v15.2.11 commit a8b655c0b543b1a3d94b7bb70130e58c2a747663 Author: fanglin.yang Date: Thu Apr 9 02:50:32 2020 +0000 modified: module_base.hera and module_base.wcoss_dell_p3 to point to esmf/8.0.1bs08 commit 4c1acf26cac49b9dd26ad404c6547cea1a969b7f Author: fanglin.yang Date: Thu Apr 9 02:18:43 2020 +0000 modified: checkout.sh to point to model tag GFS.v16.0.2, which includes following updates https://github.com/ufs-community/ufs-weather-model/pull/100 * in FV3: code changes to improve atm fcst->wrt data transfer and fix iau restart files * in NEMS: Code changes are added to reduce the atm->wav coupling time and to turn off flush for esmf print in MAIN_NEMS.F90 * When print_esmf is .true., set Verbosity = high and HierarchyProtocol = off in atm-wav nems.configure (print_esmf can be off in model_confgiure at run time). * update esmf lib to esmf801bs08. commit 41b68b5b7257a6f5a3ee1c88f3b8d3251b8097a9 Merge: 556614f5 ad9dd289 Author: Fanglin Yang Date: Tue Apr 7 00:15:44 2020 -0400 Merge pull request #51 from ajhenrique/bugfix/gfsv16b_sbspost Wave component workflow updates commit ad9dd28990f6ee6727f6dec43d335545c979093e Merge: 3b135fe9 556614f5 Author: henrique.alves Date: Mon Apr 6 00:01:32 2020 +0000 Merging changes in gfsv16b: pointing to junwang:ufs-weather-model:esmf8.0.1 commit 3b135fe9b6a2adfd337aa5c59188a3641ca68432 Author: henrique.alves Date: Sun Apr 5 23:54:36 2020 +0000 Adding ROTDIR path for operationalnco envir commit 556614f596f1e3fdb0dca3affe320aaea3650b23 Author: fanglin.yang Date: Sat Apr 4 00:40:20 2020 +0000 modified: sorc/checkout.sh to check out model branch checkout gfsv16_chsp which contains physics updates (czil, background diffusitivity and mixing length over stable boundary layer, and canopy heat storage) for reducing surface cold biases. modified: parm/config/config.fcst, tunn on canopy heat storage for slm=1. commit 83c546b74d1c8fae22535082dec8cc03d8477ad7 Author: Henrique Alves Date: Fri Apr 3 18:55:08 2020 +0000 Adding back input file setting in global config.wave script. Changing print_esmf to .false. to supress verbosity in esmf library calls commit 551ae13fcaf35f86580707bba583bc3b825d796b Author: Henrique Alves Date: Fri Apr 3 15:52:01 2020 +0000 Added RUN_ENVIR variable to wave j-jobs. Removed wavelog from wave scripts, now using only jlogfile commit 6c803647fb3c8c14e5da032b0f14add219d74cb5 Author: Henrique Alves Date: Fri Apr 3 15:39:34 2020 +0000 Updated KEEPDATA block and added exit 0 to wave j-jobs commit 42e08a505263aee0c990417487e7a62d37405d80 Author: Henrique Alves Date: Fri Apr 3 15:34:38 2020 +0000 Updated wavempexec and wave_mpmp to point to variables launcher and mpmp defined in env files commit ddb1b953789b4253d70db9bceb2e9a2d5b6fcc43 Author: Henrique Alves Date: Fri Apr 3 15:33:12 2020 +0000 Updated wavempexec and wave_mpmp to point to variables launcher and mpmp defined in env files commit 6c272f9e0cb13da7481431c60fc5f4c494d8fb87 Author: Henrique Alves Date: Fri Apr 3 15:06:29 2020 +0000 Unified calls to EXECwave and EXECcode. Removed legacy ush/wave_* scripts. commit 6e1e023b2e2d547b3429bd66a724c735db542c74 Author: Henrique Alves Date: Fri Apr 3 13:26:18 2020 +0000 emoved commented out parameter definitions (legacy) from config files. Moved variables/parms specific to single wave steps out of general config.wave file. commit d5d3701eb32f3a9052d2bb9944bb2a402cd95018 Author: Henrique Alves Date: Fri Apr 3 13:25:54 2020 +0000 emoved commented out parameter definitions (legacy) from config files. Moved variables/parms specific to single wave steps out of general config.wave file. commit 84c8730053c930508bf4ca211b1440ce32f735a1 Merge: 8ef7dee8 49faf67f Author: Henrique Alves Date: Thu Apr 2 19:57:12 2020 +0000 Merge remote-tracking branch 'gfsv16b/feature/gfsv16b' into bugfix/gfsv16b_sbspost commit 8ef7dee8b60cf548b8c0fbe95a57d8a49845ac38 Author: Henrique Alves Date: Thu Apr 2 19:54:07 2020 +0000 Adding idx file for subgrid grib2 files. Redirecting subgrid grib2 source to new native wave grid gnh_10m. Correcting bug on timing of second restart file stream on gdasfcst runs commit 4355153d85c4d9a553dc4838659005a791fe12d7 Author: Henrique Alves Date: Wed Apr 1 19:44:37 2020 +0000 adding hooks and parms for new wave model grids in several scripts. commit 49faf67fd401856923947972053395d351330ede Author: Boi Vuong Date: Mon Mar 30 14:32:42 2020 +0000 GitHub Issue #1 updated AWIPS parm cards with DZDT commit 84c28812d8d681c486132bb02cb9478055ec88b1 Merge: 7470bfe4 0e0dc873 Author: russ.treadon Date: Fri Mar 27 18:50:36 2020 +0000 Issue #1: Merge branch 'develop' at 0e0dc87 into feature/gfsv16b commit 7470bfe459fcb28751800b525d9387fbc486b8e3 Author: russ.treadon Date: Fri Mar 27 18:34:52 2020 +0000 Issue #1: maintenance and consistency updates * modulefiles/module_base.wcoss_dell_p3 - change prod_envir from version 1.0.2 to 1.1.0 * scripts/exglobal_fcst_nemsfv3gfs.sh - add PREFIX_ATMINC for EnKF. PREFIX_ATMINC defaults to a blank string - no change in current behavior * ush/hpssarch_gen.sh - add ensemble mean sfcfXXX to enkf tarball commit 79b91dc2399609d806b99f0ed5271494d1bab6d0 Author: Henrique Alves Date: Fri Mar 27 04:46:51 2020 +0000 Adding missing cd fv3gfs.fd back in checkout.sh commit 0e0dc873ceff26f9666fc40287ad2457171719c7 Merge: b133700a 95a63432 Author: Kate Friedman Date: Thu Mar 26 10:54:44 2020 -0400 Merge pull request #42 from NOAA-EMC/hotfix/viewer Issue #41 - Update PRODUTIL paths for WCOSS in viewer commit 95a63432f3fbdd8745d0617089485cdc332f57e7 Author: kate.friedman Date: Thu Mar 26 14:43:44 2020 +0000 Issue #41 - Update PRODUTIL paths for WCOSS in viewer commit b133700a4a65fe5334e5b5522a8c6f83bf0bbd0c Author: kate.friedman Date: Thu Mar 26 13:01:38 2020 +0000 Issue #21 - correct syntax for machine if-blocks in setup_expt scripts commit c3fbe7970c03aaad8e5b511b9d43931da9382fd3 Author: Henrique Alves Date: Thu Mar 26 12:05:46 2020 +0000 Adding new grids, changes to modulefiles for poiting to new esmf module commit f4ee5098988106037528650ba8a15922150b70af Author: kate.friedman Date: Wed Mar 25 20:52:49 2020 +0000 Issue #21 - remove unneeded logic from partition check commit 4acc80f6037a4d0fd43a64e9178e7aadbd6162f5 Merge: accb6f4b fb1c79f4 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Wed Mar 25 15:22:51 2020 -0400 Merge pull request #40 from NOAA-EMC/port2wcoss3p5 Issue #21 - Add support for WCOSS phase 3.5 commit fb1c79f4b7136e09c9d35d9d05303116036f58c9 Author: kate.friedman Date: Wed Mar 25 16:06:54 2020 +0000 Issue #21 - updated WCOSS phase 3.5 queues commit 08a535492952d863f860977f0ab0da4bc79bc931 Author: kate.friedman Date: Wed Mar 25 14:58:14 2020 +0000 Issue #21 - add phase 3.5 support - add partition option to setup scripts - remove machine if-blocks from config.base and add variable population to setup_expt*py scripts - add phase 3.5 ppn value to WCOSS_DELL_P3 env and config.resources files commit be21d3f2bc06ef8e7e31edce08756ee6aee36d31 Author: Henrique Alves Date: Tue Mar 24 20:10:07 2020 +0000 Poiting exec to new location of ww3 executables (HOMEgfs/exec). Adding new NH 1/6, SH 1/4 deg grids for testing commit c4cc28b08ca58007882e9823a68f26c2c5eaf92b Author: kate.friedman Date: Tue Mar 24 17:22:55 2020 +0000 Fix wave config begin and end echos commit 20d79d274be862b7147f17cd7654f2c770ce7425 Merge: 3efe1c23 accb6f4b Author: russ.treadon Date: Mon Mar 23 18:19:08 2020 +0000 Issue #1: Merge branch 'develop' accb6f4 into feature/gfsv16b commit accb6f4b919871221e8037d5f154b157d88d1102 Merge: 057b2a82 8b51b56f Author: Kate Friedman Date: Mon Mar 23 14:01:30 2020 -0400 Merge pull request #39 from NOAA-EMC/feature/verif-tag Issue #38 - update EMC_verif-global pointer from VLab to GitHub commit 8b51b56f84289d1c01863b61421b21eccd22939c Author: kate.friedman Date: Mon Mar 23 17:40:18 2020 +0000 Issue #38 - update EMC_verif-global pointer from VLab to GitHub commit 3efe1c23fbe906953f3df4e6e6b43a604505dcf1 Author: Fanglin Yang Date: Sun Mar 22 16:49:40 2020 +0000 update arch.sh to remove selected RESTART files commit 586d0994aab2348c1deea521b37183ddf0a8f2d7 Author: kate.friedman Date: Thu Mar 19 14:01:16 2020 +0000 Issue #1 - update EMC_verif-global to tag verif_global_v1.6.0 in Externals.cfg commit f412f2ca8071baa6bd91f641c1fd8102e9271bef Author: russ.treadon Date: Thu Mar 19 13:53:34 2020 +0000 Issue #1: update EMC_verif-global to tag verif_global_v1.6.0 commit 94abe6a1caca4724fbc580d58928a6cf74a65590 Author: kate.friedman Date: Wed Mar 18 19:02:09 2020 +0000 Fix syntax error in setup_workflow_fcstonly.py commit 06ff92be074bac2728055a62ce0fa263a4d13cf6 Author: Guang Ping Lou Date: Tue Mar 17 18:10:37 2020 +0000 modify job card for tests commit a2b76f1d402c8568612dc727ebf36b548748589d Author: Guang Ping Lou Date: Tue Mar 17 18:10:04 2020 +0000 modify namsnd TIMSTN commit 81bc3fc4090c4fd3bdec070abd9c117d5a09491d Author: Guang Ping Lou Date: Tue Mar 17 18:09:24 2020 +0000 modify collectives mpmd design commit 9cbf9be8ea2a959a6711c10838ba46347451b7d1 Author: Guang Ping Lou Date: Tue Mar 17 18:08:41 2020 +0000 modify config.resources for postsnd number of tasks commit e3945e03031db23dbb8681e3d1034cc07377ae2d Author: russ.treadon Date: Mon Mar 16 10:38:07 2020 +0000 Issue #1: add logic to check WAVE_CDUMP prior to setting npe_fcst_gfs commit 6fdc6365fa13c77f01ae0cdb82e74bbbd149f914 Author: russ.treadon Date: Mon Mar 16 10:35:14 2020 +0000 Issue #1: DA workflow updates for GFS v16 (does not change results) commit c728925aaf6f8c2aac170e6987ed34e28e411053 Author: Henrique Alves Date: Sun Mar 15 17:16:56 2020 +0000 Changes to test IOSTYP=3 and correct restart lines on ww3_multi.inp for rexcluding WW3 restarts. commit 9bc784f708e09e9f5392c662cae2ed51cfb09011 Author: Henrique Alves Date: Sat Mar 14 17:43:00 2020 +0000 Changes to allow GFS fcsr cycle to have WW3 restart specs different to GDAS fcst (eg, turn off or on for GFS) commit 91610f80cef8911ac6aaae2ded67a95b4ff1d061 Author: russ.treadon Date: Wed Mar 11 17:25:36 2020 +0000 Issue #1: update Externals.cfg to GFS v16 components commit 7dcf23281cddb9aabc20c73ec077a9a52ded56b8 Merge: 55130516 057b2a82 Author: russ.treadon Date: Wed Mar 11 17:21:33 2020 +0000 Issue #1: Merge branch 'develop' at 057b2a8 into feature/gfsv16b commit 057b2a82fa43f7bc36c3e757ca7d48fb86b9541c Merge: 0377d20f 622167d5 Author: Kate Friedman Date: Wed Mar 11 12:00:58 2020 -0400 Merge pull request #29 from NOAA-EMC/feature/manage_externals Issue #3 - Introduce manage_externals as replacement for checkout.sh commit 50649e274d2b074f4d3c6f18503b8bb6997a5bde Author: Henrique Alves Date: Wed Mar 11 03:16:10 2020 +0000 General cleanup for reducing size of wavepostsbs RUNDIR and improve runtime. Reorganized parameters in postsbs to provide more clarity and upfront control and the config.wave level commit 55130516cea5ea67b758b52c9445aca667e1c35a Author: kate.friedman Date: Mon Mar 9 13:59:44 2020 +0000 Add ability to have wave jobs depending on cdump commit 622167d5fb3322921a1702639ebccb42da1f5e1b Author: kate.friedman Date: Fri Mar 6 18:20:31 2020 +0000 Issue #3 - added explicit config flag example for checkout_externals in README and blurb about this replacing checkout.sh commit e83b90d50999f64ed5208d94a8cceb8179c9395f Author: kate.friedman Date: Fri Mar 6 17:00:15 2020 +0000 Issue #3 - remove prod_util and grib_util sections from build_all.sh, removed elsewhere already commit 8699b46aa1797e8dd29edff1d4bd3b511ad5cb1c Author: kate.friedman Date: Fri Mar 6 16:30:54 2020 +0000 Issue #3 - updated README with new manic version commit e602cd3d536b55b86b04285aedd5781d8d3a9f82 Author: kate.friedman Date: Fri Mar 6 16:27:57 2020 +0000 Issue #3 - updated link_fv3gfs.sh to adjust wafs links commit 830c73f430d70cc516dea419a8969c6fd9fc0910 Author: kate.friedman Date: Fri Mar 6 15:21:45 2020 +0000 Issue #3 - update EMC_verif-global tag in Externals.cfg after sync with develop commit 40084e67810d21366d0e9af6d9937c29aa4965ad Merge: f662fffa 0377d20f Author: kate.friedman Date: Fri Mar 6 15:18:52 2020 +0000 Issue #3 - Merge branch 'develop' into feature/manage_externals commit cfa5be4b414f67efa8eb17c8fe5060fe94cd48ea Author: kate.friedman Date: Fri Mar 6 14:05:29 2020 +0000 Issue #1 - remove gfswave restart archival commit 85b3a1d24e89c60e9977ecc549656a0145caeb8b Author: russ.treadon Date: Thu Mar 5 18:51:22 2020 +0000 Issue #1: update postsnd section of config.resources commit 6c8dc92953e5c003882ffbb8376a8b1b2c8668d2 Author: russ.treadon Date: Thu Mar 5 18:40:38 2020 +0000 Issue #1: update config files to be consistent with settings in pre-implementation GFS v16 real-time and retrospective parallels * parm/config/config.anal - reduce second outer loop iteration count for gfs * parm/config/config.epos - add ENKF_SPREAD to toggle on/YES or off/NO generation of ensemble spread files * parm/config/config.fcst - set adjust_dry_mass for GDAS (true) and GFS (false) * parm/config/config.fv3 - remove nth_efcs, set C384 nth_fv3=1 * parm/config/config.resources - set nth_efcs to nth_fv3 (default 2) commit a107109d8fdd0292a3017f26e56863fbb28a63ce Author: kate.friedman Date: Thu Mar 5 16:08:23 2020 +0000 Fixed bug in config.fcst related to extra then commit 0de559a088ac670f2b105168988c18ee1b57488a Author: russ.treadon Date: Thu Mar 5 15:55:50 2020 +0000 Issue #1: update exglobal_fcst_nemsfv3gfs.sh and checkout.sh * scripts/exglobal_fcst_nemsfv3gfs.sh - turn on adjust_dry_mass with dry_mass=98320.0, turn off iau_drymassfixer * sorc/checkout.sh - update to model tag GFS.v16.0.1 commit ce23e52730a9f6fe20215cb47563dd6f2dcb254a Merge: fa7bca5a 0377d20f Author: russ.treadon Date: Thu Mar 5 15:36:50 2020 +0000 Issue #1: Merge branch 'develop' at 0377d20 into feature/gfsv16b commit 0377d20f3d019f77a47fc9860d6146fd3c8e5d94 Merge: 1b359dbe 25524675 Author: Kate Friedman Date: Thu Mar 5 08:43:16 2020 -0500 Merge pull request #28 from NOAA-EMC/feature/metplus2 Issue #8 - add switch for MET+ jobs commit 25524675a63e59829655bbd9a09abc4dca246357 Author: kate.friedman Date: Thu Mar 5 13:31:02 2020 +0000 Issue #8 - add switch for MET+ jobs commit fa7bca5a5fb26886219190e9e5e5d6efb9f9ddab Merge: af73a39f cd67f975 Author: Kate Friedman Date: Thu Mar 5 08:08:57 2020 -0500 Merge pull request #25 from NOAA-EMC/feature/wave2global Feature/wave2global into feature/gfsv16b commit cd67f97592227fea0238327dade887d4584300c3 Merge: c72d7b5b af73a39f Author: kate.friedman Date: Thu Mar 5 13:03:10 2020 +0000 Merge branch 'feature/gfsv16b' into feature/wave2global commit c72d7b5bca4a67e83916edd17fb0e5c4612a7867 Author: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Wed Mar 4 23:53:41 2020 -0500 Clean up exwave_post_sbs commit 2e738f20930dfd7d5216920ec7cc26774be811f3 Author: Henrique Alves Date: Thu Mar 5 04:03:44 2020 +0000 Moving standalone fv3 model_config exglobal_fcst block into if/else/fi cplwav model_config block. Reinstating config.wave block in JGLOBAL_FORECAST. Pointing EXECwave to HOMEgfs/exec directory for WW3 util executables (changed link_fv3gfs.sh accordingly). Removing debug options from compile.sh line in build_fv3.sh. commit b7638436b1e737077fbb2dad705e7ed157df261e Author: kate.friedman Date: Wed Mar 4 21:02:04 2020 +0000 Fix to JWAVE_PREP to look back a day for rtofs commit 33cf0fc0f2a5d3b3ca749c9941835398f94e7606 Author: kate.friedman Date: Wed Mar 4 19:59:56 2020 +0000 Adjustments after going through PR review commit 1b359dbeb31b94382619dfc9c67e77fffe46aaa0 Merge: 0359d342 31bb7d32 Author: Kate Friedman Date: Wed Mar 4 10:19:36 2020 -0500 Merge pull request #26 from NOAA-EMC/feature/metplus Feature/metplus - refactored MET+ jobs to resolve timing issues commit 5c8fa3dd2666b7fd90b473fb12629016ef402e3e Author: kate.friedman Date: Wed Mar 4 13:03:12 2020 +0000 Adjust restart_interval if-blocks for DOIAU=YES in configs commit 2b337a8f8c900146905915032826faf9e6f07dc0 Merge: a4daafee e0a1a0ae Author: Henrique Alves Date: Tue Mar 3 18:31:09 2020 +0000 Merge branch 'feature/wave2global' of github.com:NOAA-EMC/global-workflow into feature/wave2global commit a4daafeecaf3fed38e637389ab5f4041b5139a4c Author: Henrique Alves Date: Tue Mar 3 18:30:58 2020 +0000 Adjustment to waveprep resources to match numbger of rtofs files, bugfix on generation of ascii spectral data commit af73a39fc8ae7868ea9d08081b98f84345fa4f95 Author: Boi Vuong Date: Tue Mar 3 13:44:59 2020 +0000 Github Issue #1 Updated postsnd.sh commit e0a1a0aeb4066ab834fd93a86780196f55a7a447 Author: kate.friedman Date: Mon Mar 2 18:45:50 2020 +0000 Fix gdasfcst dep on gldas commit 817f8faa6b0c71ef970da302d6e46b57c9ea8129 Merge: 48ed4c5f 203d1747 Author: kate.friedman Date: Mon Mar 2 13:41:13 2020 +0000 Merge branch 'feature/gfsv16b' into feature/wave2global commit 48ed4c5f4a6b0093941a97d475abdb6bed2937e5 Author: Henrique Alves Date: Mon Mar 2 04:22:02 2020 +0000 General cleanup. wavepostsbs wall time limit matches gfsfcst walltime . commit 4af83a430a8bb58f83d686535d39d9745de9ab6c Author: Henrique Alves Date: Sun Mar 1 02:51:02 2020 +0000 Cleaning up prior to merging to gfsv16b commit 14f52dd35b7d6a1a9b98cff0da2426015cfabd3d Merge: 4400d7c3 d39ba74d Author: Henrique Alves Date: Sat Feb 29 18:23:17 2020 +0000 Merge branch 'feature/wave2global' of github.com:NOAA-EMC/global-workflow into feature/wave2global commit 4400d7c3e5e26bacc0ba892ef3178d4d906d57a8 Author: Henrique Alves Date: Sat Feb 29 18:23:13 2020 +0000 Changes to feal with waveprep and wavepost commit 203d174798aae0d4e581930fa8f49abb8421f81f Author: russ.treadon Date: Sat Feb 29 01:17:57 2020 +0000 Issue #1: two GFS v16 DA updates * sorc/checkout.sh - check out ProdGSI tag gfsda.v16.0.0 * parm/config/config.anal - remove REALTIME=NO section since not needed commit d39ba74d71b5bd5c510eb32cac17facdbe5a9a49 Author: kate.friedman Date: Fri Feb 28 19:01:02 2020 +0000 Removed extra forward slashes in wave part of hpssarch_gen.sh commit 82889365da44196804b7d751a1c8c5992ca102ea Author: kate.friedman Date: Fri Feb 28 18:44:13 2020 +0000 Added waves to archival commit a8f4200d04d7c49a1ff1cd443f1f36fd949cb5db Merge: 9321bdc9 8997f2a2 Author: kate.friedman Date: Fri Feb 28 13:58:28 2020 +0000 Merge branch 'feature/gfsv16b' into feature/wave2global commit 9321bdc9a5a85a4b458b3539bb4f15bdcbf2cf33 Author: kate.friedman Date: Fri Feb 28 13:39:34 2020 +0000 Cleanup and added adjustments to other env files commit 8997f2a27a45ee018d33abdf1883914a38c88ffd Author: russ.treadon Date: Thu Feb 27 14:37:24 2020 +0000 Issue #1: check existence of EnKF spread file before adding to HPSS archive list commit 2d6620e9b961f290daab1369778644c799bec5cc Author: Guang.Ping.Lou Date: Thu Feb 27 13:45:39 2020 +0000 rm nemsio utility commit 0120cf577df7faf2413e0b585423728ecd62657d Author: Guang.Ping.Lou Date: Thu Feb 27 13:40:45 2020 +0000 modify config.resources for postsnd ppn=4 commit 0891840f8f43dccdd81573f2d6513b573de921aa Author: Guang.Ping.Lou Date: Thu Feb 27 13:32:07 2020 +0000 modify config.resources for postsnd ppn=4 commit 67e20de5ac6e8f52312bc71adc5419330ebe6542 Author: Henrique Alves Date: Thu Feb 27 04:22:36 2020 +0000 Adding current smoothing flag to config.wave. Previous push alos contained changes to reflect improved wave model physics. commit 10164bdae0fdc53a604dc8e58b2a6a5fce5ebc99 Author: Henrique Alves Date: Thu Feb 27 03:47:36 2020 +0000 Adjustments to use gfs/gdas seaice file instead of omb file. Changes to intake rtofs 1hr files when available. commit 7145fd01ffcf3043dd1dea458ae866f208f32633 Author: kate.friedman Date: Wed Feb 26 19:34:24 2020 +0000 Modify prep.sh to create rtofs symlink in ROTDIR if DO_WAVE=YES commit 5ac8c8683b6f3de8cc586bae8d3825b2bd67011c Author: kate.friedman Date: Wed Feb 26 18:44:45 2020 +0000 Fix for missing nth_postsnd in config.resources commit 91456a9b7cfc285b78ec083a419592fafe6f75d0 Author: Guang.Ping.Lou Date: Wed Feb 26 15:52:32 2020 +0000 modified config.resources for bufrsnd commit 011a393c162a422859b1184e9f32dd50d1d48882 Merge: d01c3543 8806c9e4 Author: Kate.Friedman Date: Wed Feb 26 13:50:49 2020 +0000 Merge branch 'feature/gfsv16b' into feature/wave2global commit d01c3543e59bbabb491454788f17e818305de6fc Author: kate.friedman Date: Wed Feb 26 13:48:26 2020 +0000 Updates to checkout.sh from feature/gfsv16b commit 8806c9e4e3572169146a2ba3605a86680e35287c Merge: e87695c8 318d8b46 Author: Guang.Ping.Lou Date: Wed Feb 26 13:45:13 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b Commit NetCDF parallel reading capability. commit 3b5d451aa165dc368c674cd2a71d6786097869e7 Merge: 88d8abda 318d8b46 Author: kate.friedman Date: Wed Feb 26 13:43:52 2020 +0000 Merge branch 'feature/gfsv16b' into feature/wave2global commit e87695c8b151e3c64cafed97ad921849d3998ece Author: Guang.Ping.Lou Date: Wed Feb 26 13:42:41 2020 +0000 reinstate nemsio utility files for namsio data format commit 318d8b46ff7269899db92ae72f68fa1110406a16 Author: russ.treadon Date: Tue Feb 25 20:17:40 2020 +0000 Issue #1: add gldas and esfc to the list of log files to write to HPSS commit 6102b6971fc9ee1f5dfc20c98a625b20e7f2cbbc Author: Guang.Ping.Lou Date: Tue Feb 25 19:32:21 2020 +0000 Adding a parallel reading interface commit c0b9ddc5dfe0d5dfcf1592fabf295ad951cc20b3 Author: Guang.Ping.Lou Date: Tue Feb 25 19:31:19 2020 +0000 adding parallel reading interface commit 057b10cc02f66cdede531a04967a2d6a51efb148 Author: Guang.Ping.Lou Date: Tue Feb 25 19:30:16 2020 +0000 Clean up un-used variable commit 25ac8f0a64ea710e7b8dd55dd3d03cdfd600c671 Author: Guang.Ping.Lou Date: Tue Feb 25 19:28:59 2020 +0000 Modify to call parallel reading subroutine commit c1a25a5ec5d46d52cd931b5178abba45bfb41345 Author: Guang.Ping.Lou Date: Tue Feb 25 19:20:26 2020 +0000 parallelizing gfsbufr.f for reading NetCDF files commit b28020f0c03ce54db3022de43ecc0f7119bce6d2 Author: Guang.Ping.Lou Date: Tue Feb 25 19:17:32 2020 +0000 modify driver for parallel read test commit bce7d9642decf393e2b314e837f557765a6382b8 Author: Guang.Ping.Lou Date: Tue Feb 25 19:14:45 2020 +0000 modify postsnd resource for parallel read commit f89912416cf5347fbcd6e1378aae61e99ffa14ac Author: Guang.Ping.Lou Date: Tue Feb 25 18:59:26 2020 +0000 remove testing jobs script JGFS_POSTSND_netcdf commit 88d8abda4adf3c945b1c5526dfca6b1774b91f3b Merge: 33c65a19 9d6e8464 Author: kate.friedman Date: Tue Feb 25 17:49:29 2020 +0000 Sync merge with feature/gfsv16b commit 9d6e8464aa207da41901278c9e5454efd9e475a2 Author: fanglin.yang Date: Tue Feb 25 04:45:44 2020 +0000 setup_workflow_fcstonly.py failed. Updated to get "reservation" from config.base. commit 36367563af24402db621179bda139f17d3ca1d44 Author: russ.treadon Date: Mon Feb 24 20:37:27 2020 +0000 Issue #1: update config files for use in GFS v16 real-time and retrospective parallels commit 33c65a19cbe68342cd9ab3f434a22a399be3a1b4 Merge: 9a1f79d7 0aa8dacf Author: Henrique Alves Date: Mon Feb 24 15:37:48 2020 +0000 Bugfix for creating spectra files in wavepostsbs step commit 0aa8dacfeef3fd1bf3abe368c9cdaf9a16b57cde Merge: 8148766c 431c7866 Author: kate.friedman Date: Fri Feb 21 13:57:55 2020 +0000 Merge branch 'feature/gfsv16b' into feature/wave2global commit 8148766c489057553e20fc42bad494f1ed5aa70c Author: kate.friedman Date: Fri Feb 21 13:56:56 2020 +0000 Small fix to exglobal_fcst_nemsfv3gfs.sh commit 431c78668c98268cb749397ec8218428104c9687 Author: russ.treadon Date: Thu Feb 20 15:19:42 2020 +0000 Issue #1: remove RESERVATION from archive jobs commit ebf02b19f98f90ae3c8bc57cc5c2325260aaab0a Author: kate.friedman Date: Thu Feb 20 14:05:52 2020 +0000 Remove output_1st_tstep_rst override and add iau_drymassfixer commit 36cb42dc5d8985f8402405dce811f04063f572ab Author: Henrique Alves Date: Thu Feb 20 12:30:28 2020 +0000 Removing references to gens/gefs from exglobal_fcst_fcst_nemsfv3gfs.sh in preparation for merge back to gfsv16b commit 9a1f79d7aa0343ea95d1af419f55a2d0d356e99d Author: Henrique Alves Date: Thu Feb 20 12:19:11 2020 +0000 Adding back lost and found EOF in section that creates input.nml commit 635d95d58c932909dc6a29c62515c385dc01587a Merge: f31de5aa c4454b3a Author: kate.friedman Date: Wed Feb 19 20:42:49 2020 +0000 Additional sync merge with feature/gfsv16b today commit f31de5aaa6c915ac8bc1184726bead71dc9157d4 Author: kate.friedman Date: Wed Feb 19 20:18:23 2020 +0000 Removing copies of exglobal_fcst that were added erroneously commit c4454b3ab2c5fbda7890546f31f2fe38daa5edd9 Author: fanglin.yang Date: Wed Feb 19 16:41:38 2020 +0000 modified: sorc/checkout.sh to check out model tag GFS.v16.0.0, which contains updates of dry mass fixer, WW3 thread reproducibility and post/8.0.5 lib modified: scripts/exglobal_fcst_nemsfv3gfs.sh to add iau_drymassfixer = .true. commit 31bb7d32181ca84229c3c3374226bbd37784ddc4 Merge: eb73e520 0359d342 Author: Mallory Row Date: Wed Feb 19 15:24:42 2020 +0000 Merge branch 'develop' into feature/metplus commit e058a9054d7edb2b92ee590b6dede733fe4bc4a3 Author: kate.friedman Date: Wed Feb 19 15:05:59 2020 +0000 Changes to config.resources after wave tests commit 24844e403745fb5b292fcde0aae53a3c497aa295 Merge: 0f2f2b0b c2e99795 Author: kate.friedman Date: Wed Feb 19 14:03:58 2020 +0000 Sync merge with feature/gfsv16b commit 0f2f2b0be1ff97485a23cdaf214d428927290c3d Author: kate.friedman Date: Wed Feb 19 13:36:14 2020 +0000 Updates to config.wave and scripts/exwave_post_sbs.sh commit c2e997959144b2628185b58e5480f25a7cd8852a Author: russ.treadon Date: Wed Feb 19 00:42:49 2020 +0000 Issue #1: add backup option to fit2obs, update config files * jobs/rocoto/vrfy.sh - set verification date based on VBACKUP_FITS * parm/config/config.anal - correct ozinfo typo, enclose realtime settings in REALTIME block * parm/config/config.resources - set npe_node_post for WCOSS_DELL_P3, reduce C768 eobs npe_eobs * parm/config/config.vrfy - add VBACKUP_FITS commit ed160c03ff53e10aa0e3d57ac802e8e6fecd54a3 Author: fanglin.yang Date: Tue Feb 18 22:22:10 2020 +0000 modified: sorc/checkout.sh to check out gldas release branch gldas_gfsv16_release.v1.0.0 commit c08ebb8a2aca1061272c05643160aebc2a06eac5 Author: fanglin.yang Date: Tue Feb 18 17:22:01 2020 +0000 modified: checkout.sh to use UPP: upp_gfsv16_release.v1.0.5 ufs-util: release/ops-gfsv16 commit a6bc7f8ad50a0c7400c17c3d1423e2aefccff2ed Author: fanglin.yang Date: Tue Feb 18 17:12:17 2020 +0000 modified: arch.sh to archive gfs_pgrb2b group into HPSS commit 958ee38b6fb9c76056a3045f43dec92a503f48c9 Author: kate.friedman Date: Fri Feb 14 20:38:53 2020 +0000 Increasing resources for eupd when C384 commit db5c593f2c34111a13bddaa1f4f59edcd74c2118 Author: russ.treadon Date: Fri Feb 14 20:12:00 2020 +0000 Issue #1: update modulefiles/module_base.hera to crtm/2.3.0 commit f662fffa25a99617828e4322bf789978cf523248 Author: kate.friedman Date: Fri Feb 14 15:57:05 2020 +0000 Issue #3 - Updated README with new manic tag v1.1.7 commit 94cd971fb14c4b7204822ca780d6e9dbe945b595 Author: kate.friedman Date: Fri Feb 14 15:31:32 2020 +0000 Updates to wave scripts commit 4e006dc33fb68febaa33524dfafaa1f0d3282939 Merge: fcc5a74a a94a44a8 Author: fanglin.yang Date: Fri Feb 14 00:50:00 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit fcc5a74a95d37ef2d7193ec6c0c8e5513a0f3548 Author: fanglin.yang Date: Fri Feb 14 00:48:44 2020 +0000 modified: config.fcst to fix a bug commit e3196a84a0ecd2b54d59abfdc9184622a9c605ca Author: Kate Friedman Date: Thu Feb 13 15:59:06 2020 -0500 Update README.md commit e46b175d8a309010e421ccd54e6d6eb083af3579 Merge: 4bd0e203 0359d342 Author: Kate.Friedman Date: Thu Feb 13 20:38:04 2020 +0000 Issue #3 - sync merge with develop branch commit aec4c288e1f96ee7f3f2a834014edde0ef4ea9a2 Author: Kate.Friedman Date: Thu Feb 13 19:09:56 2020 +0000 Added EUPD_CYC variable to config.base.emc.dyn commit a94a44a82be752f6542b50c8d6ce082f7272dc4c Merge: 0f0894bf 0359d342 Author: russ.treadon Date: Thu Feb 13 18:59:51 2020 +0000 Issue #1: Merge branch 'develop' at 0359d34 into feature/gfsv16b commit 0359d3425a8710e7b696b94456ec8e54e9a2fd9f Merge: 1d9a1f00 bd00cb98 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Thu Feb 13 09:53:59 2020 -0500 Merge pull request #19 from NOAA-EMC/feature/remove_theia Feature/remove theia commit 0f0894bfcc8a25ea921026d911a38e7b726ce638 Author: Boi Vuong Date: Thu Feb 13 14:15:16 2020 +0000 GitHub Issue #1 removed script exnawips.sh.ecf (not used) commit adabbaf95b32b7292cc0f09447f98773795f2b1e Author: Guang.Ping.Lou Date: Thu Feb 13 00:34:02 2020 +0000 change netcdf modules commit 767b9c33e29aff3470d914edb9289ef8236331ed Author: Guang.Ping.Lou Date: Thu Feb 13 00:32:25 2020 +0000 remove hardwired libs commit be3c324dc1e35f336b1df6f2be8ab335f45f1b9e Author: Guang.Ping.Lou Date: Thu Feb 13 00:31:13 2020 +0000 Modified modules for parallel_netcdf commit 3e3c119d096f5d03082183655d0f5db4e4991951 Author: Guang.Ping.Lou Date: Thu Feb 13 00:29:53 2020 +0000 Added netcdf_parallel modules commit 0b25f5b648892a068ac6ae1c30890729576b2c5c Author: fanglin.yang Date: Wed Feb 12 20:28:27 2020 +0000 Changes to be committed: deleted: ../driver/product/driver_WAFS.README deleted: ../scripts/exgfs_grib_wafs.sh.ecf deleted: mkwfsgbl.sh commit 2a2a8d3fe1fcd0bebf07d34c32697f64f5ac745c Author: Kate.Friedman Date: Wed Feb 12 18:00:14 2020 +0000 Adjusting config.resources for C384 commit 8bdf2387b1fad22cfa2da37a7428406a847d2362 Author: Kate.Friedman Date: Wed Feb 12 17:33:53 2020 +0000 Reducing npe_eobs from 400 to 100 commit 648479c086776b0c7b4d24b4052130d48dfaa64a Author: russ.treadon Date: Wed Feb 12 15:56:39 2020 +0000 Issue #1: add reservation keyword to rocoto workflow generator for WCOSS_DELL_P3 commit c48ac6df8c5c166a1ef51b173372f3f26f9d877a Author: Kate.Friedman Date: Wed Feb 12 14:46:26 2020 +0000 Removing gefs from checkout.sh and link_fv3gfs.sh commit fc0b624223baa54315e7ad52f48b689fff29bccb Author: fanglin.yang Date: Wed Feb 12 02:37:36 2020 +0000 modified: exglobal_fcst_nemsfv3gfs.sh -- bug fix commit 97e34f9728ae3bda52fe636994c91453b5cccfb4 Author: fanglin.yang Date: Tue Feb 11 17:47:34 2020 +0000 removed the following obsolete lines from exglobal_fcst_nemsfv3gfs.sh JCAP_STP=${JCAP_STP:-$JCAP_CASE} LONB_STP=${LONB_STP:-$LONB_CASE} LATB_STP=${LATB_STP:-$LATB_CASE} commit 60098fc7238b35f461ec9aa8fabd924fb09372ce Author: fanglin.yang Date: Tue Feb 11 17:34:40 2020 +0000 1. modified: parm/config/config.fcst to set lheatstrg=".false." for both NOAH-LSM and NOAH-MP per the decision made by the physics group. More development is required to use the canopy heat storage parameterization. 2. modified: scripts/exglobal_fcst_nemsfv3gfs.sh to 1) change the default of lheatstrg to ".false." 2) for ensemble forecast, change &nam_stochy ntrunc = $JCAP_STP lon_s = $LONB_STP lat_s = $LATB_STP EOF to &nam_stochy / EOF Phil Pegion noted: "If you are concerned about the ensemble runtime with stochastic physics on, I recommend removing ntrunc, lat_s, and lon_s from the namelist. I have fixed the bug that forced the spectral resolution of the random patterns to be related to the number of mpi tasks. Now the code calculates the appropriate truncation for a given length scale. It probably won't save a lot of time, but it is worth it. Scientifically, the patterns are the same. commit ababd08e676f45524ec616e60a0290c26d3b1795 Author: Boi Vuong Date: Tue Feb 11 16:28:12 2020 +0000 Updated data card grib2_awpgfs102.003 commit eef10607bedf12153580d85d5a7952ea90c8b198 Author: fanglin.yang Date: Tue Feb 11 16:14:29 2020 +0000 resort back to older w3emc lib since w3emc_para does not support mersenne_twister modified: modulefiles/gfs_bufr.hera modified: modulefiles/gfs_bufr.wcoss_dell_p3 commit 8fe97ac689aebb2243b6e69cbf7015e636d68852 Author: fanglin.yang Date: Tue Feb 11 15:45:33 2020 +0000 modified: modulefiles/gfs_bufr.hera and modulefiles/gfs_bufr.wcoss_dell_p3 to load paralel netcdf modules commit 78a7294eb1937758fa81f72cc5045d3d680a07c6 Author: kate.friedman Date: Mon Feb 10 19:29:15 2020 +0000 Fixed missing fi in checkout.sh commit 15628bda0621187949204d0d9af4d901e205495d Author: kate.friedman Date: Mon Feb 10 19:21:39 2020 +0000 Change fv3gfs checkout to develop branch of ufs-weather-model commit 631820beca07522faedccc47d7415c4b6b250273 Author: kate.friedman Date: Mon Feb 10 19:08:30 2020 +0000 Changing checkout.sh to Henrique's fork branch gfsv16_wave commit cc742b672af73931999bddf115bc32f07ed69f87 Merge: ba63c4f8 1d9a1f00 Author: russ.treadon Date: Mon Feb 10 17:19:58 2020 +0000 Issue #1: Merge branch 'develop' at commit:1d9a1f0 into feature/gfsv16b commit a518485866536102312c477926ae42a59d5e561e Author: kate.friedman Date: Mon Feb 10 17:02:22 2020 +0000 Changing fv3gfs.fd checkout back to gfsv16_updates commit c75d35b6802592b17640fecace38d9103a14b1bc Merge: 2a46ee2e ba63c4f8 Author: kate.friedman Date: Mon Feb 10 16:44:53 2020 +0000 Sync merge with feature/gfsv16b commit 2a46ee2ee71da5c75d11cbc96b048a1e34148239 Author: kate.friedman Date: Mon Feb 10 15:42:35 2020 +0000 Updates for wave and fcst scripts, as well as config.wave commit ba63c4f83955bfc38bc3f2fbd9f8c6447630a803 Merge: fc2144e6 75a9fb5d Author: Fanglin Yang Date: Sat Feb 8 20:35:14 2020 -0500 Merge pull request #17 from NOAA-EMC/feature/gfsv16b_paranetcdf Feature/gfsv16b paranetcdf commit 75a9fb5d4dd6d4ef91bdee93769031465ddd57e9 Merge: a2932c5b 6f256b4f Author: fanglin.yang Date: Sun Feb 9 01:22:29 2020 +0000 Merge branch 'feature/gfsv16b_paranetcdf' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b_paranetcdf commit a2932c5be934fb45416c92caa01f0fa3df4829d1 Author: fanglin.yang Date: Sun Feb 9 01:21:52 2020 +0000 modified: parm/config/config.base.emc.dyn modified: parm/config/config.base.nco.static commit 6f256b4f7aadb9913cd78962e19dcabcf7ba49e4 Author: Cory.R.Martin@noaa.gov Date: Fri Feb 7 20:07:24 2020 +0000 Added namelist option 'cld_amt' to enkf_chgres_recenter_ncio. Default is .false., when .true. will attempt to read in cld_amt and print error (but continue) if it is missing from input file commit eb0681751af6b850e99c880c11343af10000d54d Author: fanglin.yang Date: Fri Feb 7 16:20:43 2020 +0000 modified: sorc/checkout.sh update ufs_util repo commit b9feca17a5e566d75995049ba8e1497eb205b96d Author: fanglin.yang Date: Fri Feb 7 15:03:52 2020 +0000 modified: ../../modulefiles/module_base.hera modified: config.anal control ABI and AHI data usage modified: config.resources updates based on pull reviews modified: ../../sorc/gaussian_sfcanl.fd/makefile.sh use parallel netcdf commit eb73e520716215c3f11cc4cdfce3831408221766 Author: Mallory Row Date: Fri Feb 7 14:04:37 2020 +0000 Update EMC_verif-global checkout to verif_global_v1.5.0 commit bd00cb9812c5fb400ba4399d183b2198b8e80372 Author: Kate.Friedman Date: Fri Feb 7 13:41:05 2020 +0000 Issue #4 - bug fix in getic.sh for v15 commit 1c85197d7a1beb34f2e3a52969d631d42003e6eb Merge: 67dae409 1d9a1f00 Author: Kate.Friedman Date: Fri Feb 7 13:27:18 2020 +0000 Issue # 4 - Sync merge branch 'develop' into feature/remove_theia commit 1d9a1f00b73cb3852d352e9a41a15651a99fb656 Merge: 3ed9267b bdbecaa7 Author: Kate Friedman Date: Fri Feb 7 08:11:21 2020 -0500 Merge pull request #18 from lgannoaa/exception_handling Exception handling commit 85deaf78b86184f9b52afe5d68b370ba640c152b Author: kate.friedman Date: Thu Feb 6 19:16:18 2020 +0000 Updated resource configs based on C384 and C768 tests commit 4bd0e20300cc2a79e79433b2ec8cdb15c8f01c9e Author: Kate Friedman Date: Thu Feb 6 11:55:31 2020 -0500 Update README.md commit d9ea1acab54f65a987b32d56587dfd1b6bcd037c Author: Kate.Friedman Date: Thu Feb 6 16:03:11 2020 +0000 Issue #3 - reduce hashes down to minimum 8 characters commit 92d07793ce4be5ac1e12aedb536ace89ec6fcc7b Author: fanglin.yang Date: Thu Feb 6 15:28:15 2020 +0000 Update to use parallel netcdf libs modified: modulefiles/fv3gfs/enkf_chgres_recenter.wcoss_dell_p3 modified: modulefiles/fv3gfs/enkf_chgres_recenter_nc.hera modified: modulefiles/fv3gfs/enkf_chgres_recenter_nc.wcoss_dell_p3 modified: modulefiles/fv3gfs/gaussian_sfcanl.hera modified: modulefiles/fv3gfs/gaussian_sfcanl.wcoss_dell_p3 commit a6a28943d08089d96dcf3ea7953ffaf9877e3caa Author: fanglin.yang Date: Thu Feb 6 15:10:40 2020 +0000 Point new UPP tag upp_gfsv16_release.v1.0.2, for upgrading with netcdf_parallel 4.7.4, hdf_parallel 1.10.6 and w3emc_para 2.4.0 on Dell and Hera commit cf1c0a5cfec92cebaf648a09f42da435750154b6 Author: russ.treadon Date: Thu Feb 6 13:43:17 2020 +0000 Issue #16: Update EMC_verif-global to tag verif_global_v1.5.0 commit 41ca86bc4001549b98d6b6594288c9752215a1f3 Author: fanglin.yang Date: Thu Feb 6 04:19:11 2020 +0000 modified: parm/config/config.base.emc.dyn to point new obsproc_prep to spupport parallel netcdf commit 61b72ba02f920b4817ee199d9cae685e2e3c2234 Author: fanglin.yang Date: Thu Feb 6 01:10:06 2020 +0000 modified: config.resources commit 17bcdf2a1e0e8f1febfc6d57994a12ac625d9d75 Author: kate.friedman Date: Tue Feb 4 19:11:42 2020 +0000 Wave changes for running with IAU on commit 3c0ebdde3307741f88e6ecef4f59faaf5efdd5ad Author: fanglin.yang Date: Tue Feb 4 17:11:56 2020 +0000 modified: modulefiles/module_base.hera and modulefiles/module_base.wcoss_dell_p3 to point to parallel versions of netCDF libs and esmf lib modified: parm/config/config.efcs and parm/config/config.fcst to set chunksizes correctly for high-res and enkf forecasts commit f89bafe55aa0b15ae306dbaff8d97cbd17dc27c5 Author: russ.treadon Date: Mon Feb 3 14:09:33 2020 +0000 Issue #16: update DA checkout to feature/parallel_ncio commit bad2fc1a43a4df12f3f57c4da9e7612402885cd4 Author: fanglin.yang Date: Mon Feb 3 05:01:43 2020 +0000 modified: parm/config/config.fcst modified: parm/config/config.fv3 commit 183aac6be0ff71d8368ee139695aeca7caf72464 Author: fanglin.yang Date: Mon Feb 3 04:10:36 2020 +0000 Modified config.resources to use npe_node_max to define computing resouces. Pull over new settings found in the config files of in v16rt2. Made ertain adjustment and cleaned up certain parameters in a few scripts to remove redundance. modified: parm/config/config.anal modified: parm/config/config.base.emc.dyn modified: parm/config/config.efcs modified: parm/config/config.eobs modified: parm/config/config.eupd modified: parm/config/config.fcst modified: parm/config/config.fv3 modified: parm/config/config.gldas modified: parm/config/config.post modified: parm/config/config.resources commit 9d5e0a0348ae7b825629bc4c601b8ee8e726418d Author: fanglin.yang Date: Sun Feb 2 19:04:59 2020 +0000 Github Issue #16 1. add options to workflow scripts to use parallel netcdf for I/O. The application varies with model resolution and computing platform. See config.fcst and exglobal_fcst_nemsfv3gfs.sh for the settings. 2. Update UPP to upp_gfsv16_release.v1.0.1 modified: modulefiles/module_base.hera modified: modulefiles/module_base.wcoss_dell_p3 modified: parm/config/config.fcst modified: scripts/exglobal_fcst_nemsfv3gfs.sh modified: sorc/checkout.sh deleted: parm/config/config.resources.C96 commit 3a66788620477dd3159fe9633a860c799f421eee Author: fanglin.yang Date: Sun Feb 2 05:17:40 2020 +0000 The following files are no longer used deleted: README.iau deleted: config.anal.iau deleted: config.base.emc.dyn.iau deleted: config.efcs.iau deleted: config.eobs.iau deleted: config.eupd.iau deleted: config.vrfy.iau commit fc2144e64bedc1f7fc7bd302e42baa94bfe06e7f Author: Guang.Ping.Lou Date: Fri Jan 31 16:09:00 2020 +0000 issue #15 Remove station height adjustment commit 72cb96233fb636b83ca9f339e23955629c97b82d Author: Guang.Ping.Lou Date: Fri Jan 31 16:08:20 2020 +0000 issue #15 Porting bufrsnd to Hera commit 0799ecd1922652d3d17e88dae62fea1c6d8a96e3 Author: Guang.Ping.Lou Date: Fri Jan 31 16:08:02 2020 +0000 issue #15 Porting bufrsnd to Hera and remove height adjustment commit a0ac43a8f1541ae47f156442a303689e5d74a9ec Author: Guang.Ping.Lou Date: Fri Jan 31 16:07:34 2020 +0000 issue #15 Porting bufrsnd to Hera and remove height adjustment commit 85dc2f2486f841e7ad4785e5170c2edd2fbba35e Author: Guang.Ping.Lou Date: Fri Jan 31 16:04:28 2020 +0000 issue #15 Porting bufrsnd to Hera commit 26d52df758693bde55b047bfb874df4439c6d57a Author: Guang.Ping.Lou Date: Fri Jan 31 16:03:20 2020 +0000 issue #15 Modofy driver for test runs commit 0e34bc5f4d38d742a11e3275ee560708c417c37f Author: Guang.Ping.Lou Date: Fri Jan 31 14:53:37 2020 +0000 port v16b bufrsnf to Hera commit 87d3d18c291af5543de72e38e8dfe310223e1e1e Author: fanglin.yang Date: Fri Jan 31 03:53:20 2020 +0000 modified parm/config/config.resources to apply more tasks to gldas aprun_gaussian commit 50b70215096dbc87e0484ed0eea9572238c37432 Author: kate.friedman Date: Thu Jan 30 14:55:48 2020 +0000 Resource adjustments and fix for restart copying in exglobal commit bdbecaa7220f2462cc75e802570845809ebcfc75 Author: Lin.Gan Date: Wed Jan 29 15:15:52 2020 +0000 Display exception handling message for individual package with location of the log file commit 85b254d8e65318adaeef87ae7187218de59f94c5 Author: Henrique Alves Date: Tue Jan 28 21:18:35 2020 +0000 Adjusting resources for wave component commit 3f858be34da7134a071762376f4c4e69ea73f4a0 Author: kate.friedman Date: Tue Jan 28 20:43:02 2020 +0000 Further adjustment to config.efcs for restart_interval for cold start SDATE commit a674d30c8fe1da53c2d8bda5b695a474e8906f6b Merge: 9944f2fe 3fda3e35 Author: kate.friedman Date: Tue Jan 28 20:26:10 2020 +0000 Merge branch 'feature/wave2global' of https://github.com/NOAA-EMC/global-workflow into feature/wave2global commit 9944f2fe15576f0b401996fefe3c910888708e0d Author: kate.friedman Date: Tue Jan 28 20:25:59 2020 +0000 Resource adjustments for C384, restart_interval adjustment for cold start, and fcst dependency update commit b64fd5ff43f88bd5f2d27b0a16fb803eac8aff8c Merge: cf008631 3ed9267b Author: kate.friedman Date: Tue Jan 28 15:24:37 2020 +0000 Merge branch 'develop' into feature/manage_externals commit cf0086311daaf62ee33df010946d0a0ddc5bc400 Author: kate.friedman Date: Tue Jan 28 15:23:14 2020 +0000 Issue #3 - remove copy of manage_externals under util and add README.md file commit 3fda3e359f66611c77a97ca9c30a6204a36077c3 Author: Henrique Alves Date: Tue Jan 28 14:18:47 2020 +0000 Adjusting output stride on station outputs, adding bulletin output to wavepostsbs using unified wave_outp_spec.sh (removing wave_outp_bull.sh), adjusting wave resources in config.fv3 commit e4bd7d09ef3cc06d14dbfcb07bd3f211d4a5e54c Merge: 99b19f18 b3d88593 Author: kate.friedman Date: Tue Jan 28 13:58:16 2020 +0000 Sync merge with feature/gfsv16b commit 99b19f18e0a01fcf49b442ec66f1aea43b16433c Author: kate.friedman Date: Tue Jan 28 13:54:46 2020 +0000 Disabling additional wave jobs for later implementation commit c12e87987113fa6f4b543bc0dae61d4259703c03 Author: Lin.Gan Date: Mon Jan 27 19:38:19 2020 +0000 Implement exception handling in build_all script commit bfc7bb0b237d4cf4240551aa8b9c5d025724ac16 Author: Kate.Friedman Date: Mon Jan 27 19:06:17 2020 +0000 Issue #3 - initial add of manage_externals and needed Externals.cfg. Also added .gitignore file and removed scripts/files associated with no-longer-used prod_util and grid_util builds. commit b3d885930adfc07c67bc8fbe146533868f96aba8 Author: russ.treadon Date: Mon Jan 27 17:54:31 2020 +0000 Issue #1: update gldas workflow dependency to improve parallel throughput commit e216205aec6f481b4e96c8707d485dd2eacfb0e7 Author: Henrique Alves Date: Mon Jan 27 00:01:14 2020 +0000 Updating resource config in config.fv3 for running cplwav in c384 with ppn=7,thrd=4; checkout.sh now points to the latest ufs-weather-model develop branch; updated fv3gfs_build.cfg to match ufs-weather-model commit 4db98e694624b62e45417b3bb6c7c771f633cb42 Author: russ.treadon Date: Fri Jan 24 17:18:14 2020 +0000 Issue #1 - update EMC_verif-global checkout to tag verif_global_v1.4.1 commit 4d5713d3983c6cc6a8e497e892760752e09f15a0 Author: Lin.Gan Date: Fri Jan 24 15:51:28 2020 +0000 Testing github commit commit 786806f3cd5d858615f3f74dec78891a2189ee79 Author: Mallory Row Date: Fri Jan 24 15:04:16 2020 +0000 Missed file format updates in a few places in config.metp commit 7d0f783a41d8f1c50e9251b54884410e0bb7ad1a Author: russ.treadon Date: Fri Jan 24 14:41:02 2020 +0000 Issue #1 - GFS v16 updates for MOS, checkout, and archive * scripts/run_gfsmos_master.sh.dell - update MOS script to point at MDL gfsmos * sorc/checkout.sh - check out new fv3gfs branch and UPP tag * ush/hpssarch_gen.sh - add loginc to gdas and gfs tarballs commit d0a3b53c8117676c351c50287d4583951c94d42c Author: Lin.Gan Date: Fri Jan 24 14:30:29 2020 +0000 init commit for exception handling branch commit c11dfef0f7fb8da2866e6a022ac0ff60044766a7 Author: Mallory Row Date: Fri Jan 24 14:07:29 2020 +0000 Update EMC_verif-global tag to verif_global_v1.4.1 commit df2e6b0bd9a2af2107a78c12f9c648a61fe0d5b9 Merge: bc07de02 09e68b48 Author: kate.friedman Date: Thu Jan 23 20:00:34 2020 +0000 Sync merge with feature/gfsv16b commit bc07de02af5743194cb9203d0d36e62e9a25b223 Author: kate.friedman Date: Thu Jan 23 19:43:12 2020 +0000 Fixed wavepostsbs dependencies commit 4b54c37b425c947e79c4ddc192a6e2f06b8528fa Author: kate.friedman Date: Thu Jan 23 15:04:20 2020 +0000 Turn off cplwav in efcs config and adjusted dependencies for fcst job commit 0ea809c208ce606c957eed4d346a3828d8186010 Author: Mallory Row Date: Thu Jan 23 13:29:56 2020 +0000 Update file format variable in config.metp of online archive files commit b886c848a60871a86bb0b45d024a34368ad1d898 Author: kate.friedman Date: Wed Jan 22 21:01:34 2020 +0000 Change to base config and update to wave dependencies commit 154b118a7808bfa60abe0620e4bee21cb4faabee Author: Henrique Alves Date: Wed Jan 22 03:37:24 2020 +0000 Changing WAV_MOD_ID to MDC (model component) tag; updating some paths for wave components in several scripts. Correcting wave_tar bug. commit 0edcb211586f1f96d01f172215568fa7eee3a7a2 Author: Henrique Alves Date: Tue Jan 21 20:15:14 2020 +0000 Several changes to change the sirectory name from to etc. Updates to wavepostsbs. commit c0d7179f34837e40db9ccb1b941ad9f312283a6e Author: Mallory Row Date: Tue Jan 21 16:37:16 2020 +0000 Add updated env machine files for gfsmetp commit 82e690717d72c7b021c637270108f4bacfb6816d Author: Mallory Row Date: Tue Jan 21 16:29:23 2020 +0000 Update config.resources for gfsmetp commit 72e8adf1c8a8859786cbbcf1b976640d73c5c867 Author: Mallory Row Date: Tue Jan 21 16:19:31 2020 +0000 Update EMC_verif-global tag checkout to 1.4.0 commit 6872f79f3f9052377ff863da1bbac482548ee0ce Author: Mallory Row Date: Tue Jan 21 16:14:25 2020 +0000 Add rocoto METplus job script commit 9c94156670bd810561bd2a699648afb946511ea9 Author: Mallory Row Date: Tue Jan 21 16:09:13 2020 +0000 Changes to setup_workflow.py for gfsmetp metatask commit 09e68b4834b0b54552ef0ae3829a41063200fe5f Merge: a49e4e54 3ed9267b Author: russ.treadon Date: Mon Jan 20 22:05:53 2020 +0000 GitHub Issue #1 Merge branch 'develop' at revision 3ed9267 into feature/gfsv16b commit 0ad851882686087fdd21a4a8f88b65dd3960cd1c Author: kate.friedman Date: Fri Jan 17 17:29:09 2020 +0000 ACCOUNT fix in config.base.emc.dyn and dependency fix to setup_workflow.py commit 80f13fb4b785fbde8e925cfb6deb547297f34e70 Author: Henrique Alves Date: Fri Jan 17 03:29:35 2020 +0000 Removing underscore from COM wave directory names commit 39a9df9385631df4a3cba4e6663fc6ab5c3f238d Author: Henrique Alves Date: Fri Jan 17 03:08:41 2020 +0000 Changing back waveprep to include ice and currents by default commit c36df4d748bbc2a8dc7b4a044a1f62f637e3ba33 Author: Henrique Alves Date: Thu Jan 16 19:43:26 2020 +0000 Updating post sbs script to copy station files to correct directory. commit a49e4e5403b1e16025b2a5890cef3de22627119a Author: Boi Vuong Date: Thu Jan 16 14:59:08 2020 +0000 Added build script for gfs_util commit f1cd7ab43d24fc576c82ea227cd7d79cc08f4835 Author: Henrique Alves Date: Wed Jan 15 20:48:11 2020 +0000 Adding block sourcing config files into wave j-jobs commit b736f8315497bfc29fd77faa9d98bf558ddea919 Author: kate.friedman Date: Wed Jan 15 20:40:16 2020 +0000 Removed config sourcing from rocoto job scripts commit 4f6840b25d85152ea7393a8959619bb4caab9d67 Author: Henrique Alves Date: Wed Jan 15 20:38:41 2020 +0000 Removing dependency on log file for wave post sbs commit 429c409799f1999babbfb3653e6f03be66f8fec3 Merge: 3f685fd3 a6905174 Author: Henrique Alves Date: Wed Jan 15 20:35:24 2020 +0000 Merge branch 'feature/wave2global' of github.com:NOAA-EMC/global-workflow into feature/wave2global commit 3f685fd3423add0ba2cfb7c3115a674891c44e55 Author: Henrique Alves Date: Wed Jan 15 20:29:58 2020 +0000 Reinstating Ratkos NO NO in build_fv3.sh commit 8f48844906f851a41db742f7686f7e7cae6b95c0 Merge: 5eeaffa1 7c595189 Author: BoiVuong-NOAA Date: Wed Jan 15 20:12:52 2020 +0000 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit a69051742c5edd0e4d34d178329fc24cacede78a Author: kate.friedman Date: Wed Jan 15 20:12:20 2020 +0000 Adding supplemental config source to JGLOBAL_FORECAST for wave commit 5eeaffa1c3f4e35fe067b7e229f16f93574bcb86 Author: BoiVuong-NOAA Date: Wed Jan 15 20:12:08 2020 +0000 Updated GFS drivers commit 7c595189e8c671a7b2eb6363d82020fb9ed58c13 Author: Boi Vuong Date: Wed Jan 15 20:09:54 2020 +0000 Github Issue #1 updated JGFS_PGRB2_SPEC_GEMPAK commit 1f5c593705df384608b1f1dd84df9114d5d8a812 Author: Henrique Alves Date: Wed Jan 15 19:59:27 2020 +0000 Removing KEEPDATA from JWAVE_POST_SBS commit 5d2f2a21947dfb00762b1085fd267ca959b7fea6 Author: Boi Vuong Date: Wed Jan 15 19:50:00 2020 +0000 Github Issue #1 modified rocoto gempak.sh commit baa06afcecef64faad51bfac3b4fd2c064df3fb5 Author: Henrique Alves Date: Wed Jan 15 19:32:06 2020 +0000 Changes to update sbs post and reconciling parameters for output post data. commit 8d430ceeac22bb8943bdf2052b85cccc9b621440 Author: BoiVuong-NOAA Date: Wed Jan 15 16:28:13 2020 +0000 GitHub Issue #1 Updated ush,gempak,jobs and docs commit 53f719f63f569bd061bd3cfd3b63d5040a962dea Author: BoiVuong-NOAA Date: Wed Jan 15 14:19:46 2020 +0000 GitHub Issues #1 Bugzilla ticket 889 fixed bug in rdbfmsua.f commit 8b94a2d6caad3bc5eebfe69bffc5224bebd1856a Author: BoiVuong-NOAA Date: Wed Jan 15 14:15:16 2020 +0000 GitHub Issues #1 Updated some gfs driver commit ed2317a953992974dc2e61517cfe3d22d3c2d75f Author: BoiVuong-NOAA Date: Wed Jan 15 05:10:51 2020 +0000 Updated GFS driver commit 3ed9267b2f540694e957ee33a746f00857a5a1a2 Author: kate.friedman Date: Tue Jan 14 19:32:36 2020 +0000 Issue #10 - mid-year update to bufr station list (develop) commit f59fc0c4550a5e8617fb70ca150e91a65de89e18 Author: BoiVuong-NOAA Date: Mon Jan 13 20:03:34 2020 +0000 GitHub Issue#1 Revert parm card for AWIPS grid 211 commit 21feab285859881814509d75c794bc4ae4f74a3b Author: BoiVuong-NOAA Date: Fri Jan 10 22:00:38 2020 +0000 GitHub Issue #1 Updated AWIPS grid 211 commit e292d96010dc1e63f28d2c9d95c5e61776abe0dd Author: BoiVuong-NOAA Date: Fri Jan 10 21:12:36 2020 +0000 GitHub Issue Updated AWIPS parm card grid#211 commit fcf2d09159f80142364fad616661014e434b2a89 Author: Guang.Ping.Lou Date: Fri Jan 10 20:55:57 2020 +0000 modify gfs_bufr.sh for generalization commit 528cde1998fa6b341794f4ad15820e8cbc517568 Author: Guang.Ping.Lou Date: Fri Jan 10 20:55:05 2020 +0000 modify exgfs_postsnd.sh.ecf commit 0b5a056b7c089e428806ceecb36ae0ddd0535060 Author: Guang.Ping.Lou Date: Fri Jan 10 20:40:21 2020 +0000 Addd 25 bufr stations and all station j,i commit 349c299740b5e1d022faa2d17aa6aa05ed8d7165 Author: Guang.Ping.Lou Date: Fri Jan 10 20:36:57 2020 +0000 add module nemsio/2.2.3 commit 3f78f6a9abc89127afc293b8aa62912a142b58da Author: Guang.Ping.Lou Date: Fri Jan 10 20:35:06 2020 +0000 change gfsbufr.f makefile_module meteorg.f for either nemsio or netcdf commit ad40a4436835d7e6e8c7ec25a74b48562a5cbaf8 Author: Guang.Ping.Lou Date: Fri Jan 10 20:30:53 2020 +0000 added two interface subroutines for either netcdf or nemsio commit 1915aa921dfe2ef17799599e5a3084547caa3ca2 Author: kate.friedman Date: Fri Jan 10 18:36:32 2020 +0000 Issue #8 - pulled in config.metp and modifications to two setup scripts commit e6871dff5fc8de254c5d5d2e6d5576f87c909400 Author: BoiVuong-NOAA Date: Fri Jan 10 15:57:38 2020 +0000 Updated gempak/fix to add GOES 17 image files commit f4185149ddab7d6cabb695c102497cebbb64a693 Author: BoiVuong-NOAA Date: Fri Jan 10 10:36:23 2020 +0000 GitHub Issue#1 Removed util/fix and parm commit 07c1e8d88cc4266937f98261311aa38cbd05a451 Author: BoiVuong-NOAA Date: Thu Jan 9 15:12:28 2020 +0000 GitHub Issue #1 Removed FAX programs ../util/sorc commit 67dae40974485e7ffef4713209142301e5e4ba9e Merge: f78eb1b4 091f4ba1 Author: kate.friedman Date: Wed Jan 8 20:15:45 2020 +0000 Merge branch 'develop' into feature/remove_theia commit f78eb1b4228927a0937b5de2098ba2cece6a4aca Author: kate.friedman Date: Wed Jan 8 20:13:08 2020 +0000 Issue #4 - removed references to Theia and Theia scripts commit 091f4ba1d04f1600e352f2fe090ae9af0880c95d Author: kate.friedman Date: Wed Jan 8 19:37:45 2020 +0000 Issue #7 - missed update to gdas transfer file from GFSv15.2.5 updates commit 32bb8f60be17e70a76debb6d7307475f59fe8a11 Author: George Gayno Date: Wed Jan 8 18:59:37 2020 +0000 feature/gfsv16b: Update to "env/HERA.env" - update computation of tasks used for parallel processing of GLDAS data according to Jesse's recent change to remove unused files. commit 465512fe5ab3e73459da57a720ac52caa21b69a6 Author: BoiVuong-NOAA Date: Wed Jan 8 14:50:34 2020 +0000 GitHub Issue #1 Updated modulefiles and sorc commit d6184a020889585803a84ce611b3b524b19fa294 Author: BoiVuong-NOAA Date: Tue Jan 7 22:36:05 2020 +0000 GitHub Issue #1 Updated ush and ecflow commit a45fad17460e5c9aa1f5f127d285462a5a5a9aae Author: BoiVuong-NOAA Date: Tue Jan 7 22:13:43 2020 +0000 GitHub Issue #1 Updated sorc and modulefiles commit 98fcd0da14c87364d4faab261f6823e76cb303ba Author: Boi Vuong Date: Tue Jan 7 21:08:06 2020 +0000 GitHub Issue #1 Updated Release_Notes.gfs_downstream commit 9c384d1a5635403d38a8786ed4145dab054b4345 Author: Boi Vuong Date: Tue Jan 7 21:00:58 2020 +0000 GitHub Issue #1 Updated GFS AWIPS parm cards commit 293f0f1910a0f112a3155cee1651bea80ceff098 Author: Boi Vuong Date: Tue Jan 7 19:56:06 2020 +0000 GitHub Issue #1 Updated GFS AWIPS parm cards commit 465d6294b1f164b2f42a1fd50783e5151ef05a6d Author: Boi Vuong Date: Tue Jan 7 19:43:49 2020 +0000 GitHub Issue #1 Updated GFS v16.0 driver commit ead449d9d764fe0824db27bbb9b82c34b1d32a8b Author: Boi Vuong Date: Tue Jan 7 15:21:05 2020 +0000 GitHub Issue #1 Updated gempak files commit e45a4a956f85026ca28b4e0d1e9cb6a05cd247b2 Author: Boi Vuong Date: Mon Jan 6 20:51:49 2020 +0000 GitHub Issue #1 Updated AWIPS_WMO_parm files commit 6b035ff7990484b4f167183eba09be79bab3ed5c Author: Boi Vuong Date: Mon Jan 6 19:06:29 2020 +0000 GitHub Issue #1 Removed GFS synthetic GOES 12/13 on global 1 deg commit ff9b3f11fbf6c214a15e3db09b1a6f0f28865310 Author: Boi Vuong Date: Mon Jan 6 16:48:13 2020 +0000 GitHub Issue #1 Removed bulletins jobs and scripts commit f11ecbc9733a819a5f78642105a8cf727b08610e Author: George Gayno Date: Mon Jan 6 15:59:57 2020 +0000 feature/gfsv16b: Update "env/HERA.env" for parallel processing of GLDAS data on Hera. commit 663a29f1aee13e9c32aa140c5cd1e0ad10479f2b Author: George Gayno Date: Fri Jan 3 21:40:51 2020 +0000 feature/gfsv16b branch: Updates for GLDAS to optimize data processing: Add variable APRUN_GLDAS_DATA_PROC to env/WCOSS_C.env to run data processing in parallel with cfp on Cray. commit 74e25778c104399b039b33dbeeb87e068f9f26b2 Author: George Gayno Date: Fri Jan 3 19:35:56 2020 +0000 feature/gfsv16b branch: Updates for GLDAS data processing optimization: (1) Delete JGDAS_GLDAS job and instead link the GLDAS repo version using 'link_fv3gfs.sh'; (2) Update 'link_fv3gfs.sh' to link new gldas script 'gldas_process_data.sh'; (3) Add environment variable - APRUN_GLDAS_DATA_PROC - to WCOSS_DELL_P3.env to run data processing with 'cfp' on Dell. commit 99069319a63ba02c1d747ec601425e91e6bb9d62 Merge: 71ee0e33 a43e4270 Author: fanglin.yang Date: Sun Dec 29 22:50:32 2019 -0500 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit 71ee0e333370a24a1f4da5a00a5ab079af446c76 Author: fanglin.yang Date: Sun Dec 29 22:48:12 2019 -0500 further update arch.sh to remove gdas cycle old directories passing the gldas sflux file retention period commit a43e4270b269fcd3d8a97da6a5f2e0d2660cc234 Author: russ.treadon Date: Fri Dec 27 14:29:07 2019 +0000 Issue #1 - default OUTPUT_HISTORY to ".true." in ush/hpssarch_gen.sh commit 784fb65dee27135340771b1c778d1d69219ba05c Merge: 9562fc71 7440aad1 Author: Henrique Alves Date: Fri Dec 27 05:01:12 2019 +0000 Merging latest feature/gfsv16b branch into wave2global commit 9562fc71eb80e33f4d132dd9ad9ca5903be1435f Author: Henrique Alves Date: Fri Dec 27 04:47:20 2019 +0000 Adjusting resources and env for running C384 coupled commit 5ce0bdf026c4c9a4a62252a264816710558dfd20 Author: Henrique Alves Date: Thu Dec 26 19:00:42 2019 +0000 Changes to support wave side by side post commit 7440aad157110974db359e6b0910758fea121844 Author: russ.treadon Date: Thu Dec 26 12:57:40 2019 +0000 Issue #1 - add or dependency on loganl.txt for ecmn metatask and esfc task commit 383a00df519d43342151650c9ac222b6a995d42f Author: russ.treadon Date: Thu Dec 26 11:41:36 2019 +0000 Issue #1 - (1) load g2tmpl/1.6.0 in module_base.wcoss_dell.p3; (2) set DOSFCANL_ENKF in config.esfc commit c2296c6937992fd1dd50e79b8829d69befc9ec12 Author: fanglin.yang Date: Wed Dec 25 11:19:35 2019 -0500 Issue #1 - update arch.sh to save sfcanl for running gldas as ICs commit 68ab52f8b000aab6bde0f5bc106b014ff42f2318 Author: fanglin.yang Date: Tue Dec 24 12:45:56 2019 -0500 modified jobs/rocoto/arch.sh to clean all but sflux grib2 files whithin the last 96 hours of forecast cycles and before RMOLDEND if DO_GLDAS=YES commit b1b9a7ee651d4faa853e4662701125340c9859a2 Author: fanglin.yang Date: Mon Dec 23 20:18:00 2019 -0500 modified setup_workflow.py -- update gdasfcst step dependency if gldas is turned on commit b4d90d97b44a546b0845bb0bc4e30358ab27bb06 Merge: 96c28da1 49af82c3 Author: fanglin.yang Date: Sun Dec 22 14:29:13 2019 -0500 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit 96c28da1f23b577070b2e9722eba558cb151d6df Author: fanglin.yang Date: Sun Dec 22 14:27:11 2019 -0500 modified: modulefiles/module_base.hera modified: ush/hpssarch_gen.sh commit 07d9ec5aa1e54e9b78ee1e18b0fa0d984f129bea Author: Henrique Alves Date: Sun Dec 22 17:55:13 2019 +0000 Temporary changes to work with updated WW3 code under GEFS_v12 and to bugfix wave_post_sbs. commit 49af82c306f0d06c683cd637d164d0b2c16b8615 Author: russ.treadon Date: Fri Dec 20 18:41:43 2019 +0000 Issue #1 - update handling of model restarts upon forecast completion in exglobal_fcst_nemsfv3gfs.sh commit a69df4b414f5247a9db24ddebb42bc409f26d090 Author: Henrique Alves Date: Fri Dec 20 12:58:02 2019 +0000 Additional changes to have wave init, prep, postsbs handed over for experiments by gfsv16 group commit 2d8499c9b9331aea6abf5d0910c0f26b9047452a Author: russ.treadon Date: Thu Dec 19 19:01:31 2019 +0000 Issue #1 - Fit2Obs changes (1) provide default defintion for CONVNETC (2) update WCOSS_DELL_P3 fitdir commit d50076fb3ab4491be632d1ba2f5d7673c3c9b42b Author: russ.treadon Date: Thu Dec 19 18:45:47 2019 +0000 Issue #1 - (1) set RUN_ENVIR to OUTPUT_FILE for Fit2Obs, (2) change log file dependency for post000 job commit f6d5044b40c76bdcdf37ebccfbd8cb64e3413bde Merge: ead3c9b4 3fd4bcfa Author: russ.treadon Date: Wed Dec 18 19:21:11 2019 +0000 Issue #1 - merge branch 'develop' at commit:3fd4bcfa into feature/gfsv16b commit 46aa4bae69f1a9a73965b863557cd359161ff7d6 Author: Henrique Alves Date: Tue Dec 17 21:02:05 2019 +0000 Adding resource adjustments to allow fcst step to run the couple FV3-WW3 system. Adding the WAV_POST_SBS job, modifying waveprep to use new unified point output grid tag uoutpGRD commit 3fd4bcfa0bb5e133774b5ad64aaf45b42074c05c Author: kate.friedman Date: Tue Dec 17 19:12:28 2019 +0000 GitHub Issue #2 - GFSv15.2.6 obsproc version update, earc bug fix, and tracker path update commit e76895309db47e7c1d53b50a283f2851c57bf5e2 Merge: 8441f9da ead3c9b4 Author: fanglin.yang Date: Mon Dec 16 21:56:37 2019 -0500 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit ead3c9b41f13260ee838c94a5956fdb7bea62ee3 Author: fanglin.yang Date: Tue Dec 17 02:46:45 2019 +0000 recommit updated exglobal_fcst_nemsfv3gfs.sh commit 8441f9da476cc179bcffc4212e90e8a24ca41b93 Merge: 66a1f833 41208b38 Author: fanglin.yang Date: Mon Dec 16 21:28:37 2019 -0500 Merge branch 'feature/gfsv16b' of https://github.com/NOAA-EMC/global-workflow into feature/gfsv16b commit 41208b38e0d641e86db575e3a29a83bd9133f05e Author: fanglin.yang Date: Tue Dec 17 01:51:47 2019 +0000 modified: exglobal_fcst_nemsfv3gfs.sh add postxconfig-NT_FH00.txt for inline post define rst_invt1 as the first element of restart_interval since restart_interval is no longer a single number commit 66a1f833592fd3790158792bdbd656b4ddfcbfd0 Author: fanglin.yang Date: Mon Dec 16 20:47:13 2019 -0500 modified: exglobal_fcst_nemsfv3gfs.sh add postxconfig-NT_FH00.txt for inline post define rst_invt1 as the first element of restart_interval since restart_interval is no longer a single number commit b6201678a6436f2821b20d9199d50b5f9d67afe7 Author: fanglin.yang Date: Mon Dec 16 20:48:23 2019 +0000 modified: sorc/build_fv3.sh to force the compiler to clean and recompile with any changes deleted: parm/config/config.base. This is created at the link time. Should not be incldued in the repo commit c805357ac81b4ede287043339568936c761e37d6 Author: fanglin.yang Date: Mon Dec 16 19:10:13 2019 +0000 Vlab issue #65358 change model repo in checkout.sh to https://github.com/junwang-noaa/ufs-weather-model commit b17c0524648b4b975d64d0be07e0751133466148 Author: fanglin.yang Date: Mon Dec 16 13:56:33 2019 -0500 Vlab issue #65358 modified: sorc/checkout.sh to checkout new model branch postRstUgwd modified: scripts/exglobal_fcst_nemsfv3gfs.sh to include postxconfig-NT_FH00.txt to use the new UPP modified: parm/config/config.fcst add instruction for setting restart_intervals for different applications     # restart_interval:        $number     #    number=0, writes out restart files at the end of forecast.     #    number>0, writes out restart files at the frequency of $number and at the end of forecast.     # restart_interval:        "$number -1"     #    writes out restart files only once at $number forecast hour.     # restart_interval:        "$number1 $number2 $number3 ..."     #    writes out restart file at the specified forecast hours     export restart_interval=${restart_interval:-6} commit 1df4ff49472efc5d419d4f867d3fa9169e929150 Author: russ.treadon Date: Mon Dec 16 15:30:03 2019 +0000 Issue #1 - remove references to sfc from ecen script and ecen workflow * jobs/rocoto/ecen.sh - remove FHSFC_ECEN * ush/rocoto/setup_workflow.py - remove fhrsfc and associated scripting commit b8cff19a2cea88b1f73e0828f9c47b6b85f20ceb Author: Henrique Alves Date: Mon Dec 16 06:13:26 2019 +0000 Fixing issues with waveinit and waveprep and attempting to run gdasfcst. commit 4048d5b24a1b3c589c3a5d9147381d7a159f499c Author: fanglin.yang Date: Sun Dec 15 19:25:11 2019 -0500 modified: HERA.env JET.env WCOSS_C.env to set up env parameters to run the newly added esfc step. commit 1598a13aa41b3b78ec75c05d79aa285f6efc0f46 Merge: a4c2b0cf 9740a139 Author: fanglin.yang Date: Sat Dec 14 11:52:16 2019 -0500 Merge branch 'feature/gfsv16b' of gerrit:global-workflow into feature/gfsv16b commit a4c2b0cf28209bc19a9e7d30b5c94493e11ce70a Author: fanglin.yang Date: Sat Dec 14 11:51:25 2019 -0500 set export WRITE_DOPOST=F in config.efcs to force efcs step not to use inline poste commit 9740a139c8204c829eab8ec48dc4a7408dc752c2 Author: russ.treadon Date: Sat Dec 14 11:46:29 2019 +0000 VLab Issue #65358 - correct efcs dependency error in setup_workflow.py commit 25b0a9fd0895e19f91578bbc77d690600548ed57 Author: fanglin.yang Date: Fri Dec 13 16:28:22 2019 -0500 VLab Issue #65358 set OUTPUT_HISTORY=."false." in config.base as defult commit 61f3259272a49c5c5b6b494aa322f724553be73c Author: fanglin.yang Date: Fri Dec 13 16:19:33 2019 -0500 modified: parm/config/config.arch and parm/config/config.vrfy to get ride of the following error messages when running setup_workflow.py .../config.vrfy: line 39: [: =: unary operator expected .../config.arch: line 21: [: too many arguments commit bcfcd23cc11644dc138b1d4aa19ad22a3c3de53c Author: kate.friedman Date: Fri Dec 13 20:31:18 2019 +0000 Added additional wave jobs to setup scripts commit 97cdff0342611b2b2ae4fccc1990a2787f301b3a Author: russ.treadon Date: Fri Dec 13 20:16:39 2019 +0000 VLab Issue #65358 - config file updates * parm/config/config.ecen - define NECENGRP (number of ecen groups) * parm/config/config.resources - add gldas to help comments commit 708454372802679d8415629617c564264e05f4ff Author: russ.treadon Date: Fri Dec 13 19:46:38 2019 +0000 VLab Issue #65358 - modify ecen to reduce run time * refactor task ecen as metatask ecmn * add ensemble sfcanl tile job commit 290bc09e17bb41ce94f4a98c7e942a0e67757093 Author: kate.friedman Date: Fri Dec 13 19:04:38 2019 +0000 Adding files for additional wave jobs commit 65410e5ccec775f07a0836e67ca6058efc27db7a Author: russ.treadon Date: Fri Dec 13 17:35:47 2019 +0000 VLab Issue #65358 - updates to FSU tracker * jobs/JGFS_FSU_GENESIS - correct typo * jobs/rocoto/arch.sh - copy tracker to ARCDIR * jobs/rocoto/vrfy.sh - add section to execute FSU tracker * modulefiles/module_base.wcoss_dell_p3 - load FSU tracker module * parm/config/config.vrfy - add VRFYFSU flag; update to ens_tracker v1.1.15.2; set GENESISFSU commit 7b0bc3e8cff68764907bc838825d373ceb1820fd Author: fanglin.yang Date: Fri Dec 13 04:16:40 2019 +0000 modified: sorc/checkout.sh to check out gldas repo master instead of a feature branch modified: env/WCOSS_C.env correct a bug commit 8ff056ea594f6ff92fcc39ee49c1cd4549ead4c0 Author: kate.friedman Date: Thu Dec 12 18:32:11 2019 +0000 VLab Issue #65358 - added new FSU tracker JJOB script commit 23ea303716477284c74b187d4142f40c4f4a2e1b Author: Henrique Alves Date: Thu Dec 12 05:19:27 2019 +0000 Updating build_fv3.sh to add correctly ww3 compile options commit 212aeb449300a0795d8d0055ab6f12f39bfc4d98 Author: Henrique Alves Date: Thu Dec 12 02:58:50 2019 +0000 Adding WW3 as component in the gfsv16 for enabling coupled run. commit 6e450a8947967795a9fab9da2b5ebc4d415c0387 Author: Henrique Alves Date: Thu Dec 12 02:51:08 2019 +0000 Changes to make wave init functional end-to-end under GFSv16 workflow. Removing parm/wave directory (to be moved to GEFS repo, in GFSv16 parm were converted to config) commit 530795269fd678f7ee6c7354d3fe674b8c46a458 Author: Kate.Friedman Date: Wed Dec 11 20:47:44 2019 +0000 HOTFIX - VLab Issue #72346 - fix to rocoto_viewer on Hera commit c4b7e07b355b9e92a8070659210cfd95961a1b05 Author: kate.friedman Date: Wed Dec 11 15:01:28 2019 +0000 Added wave tasks to free-forecast mode and adjusted cycled mode dependencies commit 1c8f1e8a937dcdcf0b355292b0c81d6667398186 Author: russ.treadon Date: Wed Dec 11 14:17:23 2019 +0000 Vlab issue #65358 Add section to copy GDAS atcfunix files to $ARCDIR commit e36fed5ffaed435a2d774fa859b0aebd62de149b Author: Henrique Alves Date: Wed Dec 11 13:27:52 2019 +0000 Modifying spec of unified output point parameter from buoy to uoutpGRD to avoid errors as parameter buoy is also used to label output points themselves commit 126bd34442e34862da1ac1eaf00a2d9903cdd595 Author: Henrique Alves Date: Tue Dec 10 18:44:27 2019 +0000 Partial changes to add side-by-side post commit 66add7f33225e5bef12c941fd27b9c0539b155df Author: kate.friedman Date: Tue Dec 10 17:18:00 2019 +0000 Added wave rocoto job scripts, configs, and setup criteria commit b6a2742ebdce9e522a9b6f5af77d3f8a379c8413 Author: Henrique Alves Date: Mon Dec 9 16:36:20 2019 +0000 Adding changes to ensure RTOFS current files are read and prepared for coupled GFS runs. Several changes to add side-by-side post. commit dea2c7b68483673f74426c997070d3b71e01abe2 Author: russ.treadon Date: Mon Dec 9 14:36:59 2019 +0000 Vlab issue #65358 * env/WCOSS_DELL_P3.env allow forecast model to use up to 28 pe per node on WCOSS_DELL_P3 * ush/gaussian_sfcanl.sh - set NETCDF_OUT based on OUTPUT_FILE commit e7b3b9a0b16f7bf84ab2690a641cf4061b5f7097 Author: fanglin.yang Date: Sat Dec 7 13:43:54 2019 -0500 modified: config.base.emc.dyn remove duplicated IAU session modified: ../../ush/hpssarch_gen.sh add to missing gfs analysis increment files to HPSS archive commit 9d447f9363e999d5a7f5ff337c68a225a137bad9 Author: Henrique Alves Date: Fri Dec 6 20:48:56 2019 +0000 Reconciling exglobal_fcst, checkout and link scripts to allow running both GFS and GEFS configs. Adding ability to link out_grd/pnt wave files to COMOUTWW3 commit db1d3be780e8bcee8ac1352d5d8fe4b604d330f9 Merge: 25e423bd 37a3bd27 Author: Henrique Alves Date: Fri Dec 6 15:51:10 2019 +0000 Merging feature/gfsv16b 37a3bd27 into feature/wave2global commit 37a3bd27f3a81e76366c8cf06b9a43e7764b1d2c Author: Guang.Ping.Lou Date: Fri Dec 6 13:59:37 2019 +0000 placement change for getncdimlen commit 53679d41ce93f07a724899a6c4b6273494207777 Author: Guang.Ping.Lou Date: Thu Dec 5 20:59:25 2019 +0000 remove exgfs_postsnd.sh.ecf_netcdf commit 25e423bd5c804c73b2f9ba12ed3c29d4d2e13abd Author: Henrique Alves Date: Thu Dec 5 19:50:43 2019 +0000 Cleaning up (changing wavemodTAG to WAV_MOD_TAG etc) commit edb1e10fd794ba6b547a2fce09cad591c89a9d46 Merge: f8b86c4e 395b55bb Author: Guang.Ping.Lou Date: Thu Dec 5 19:38:15 2019 +0000 Merge branch 'feature/gfsv16b' of ssh://vlab.ncep.noaa.gov:29418/global-workflow into feature/gfsv16b Pull newly commited files commit f8b86c4e760d8b568a48d27aaba55884b263dad5 Author: Guang.Ping.Lou Date: Thu Dec 5 19:35:59 2019 +0000 LEVS is obtained by getncdimlen commit 395b55bba93a5e2485b222ddfeda4b77bf7364e8 Author: kate.friedman Date: Thu Dec 5 19:34:13 2019 +0000 VLab Issue #65358 - small fixes after sync merge with develop branch commit bd7c5fb5ff29085d1a78370829ed395e826002eb Author: Guang.Ping.Lou Date: Thu Dec 5 19:26:46 2019 +0000 update to include nc utility getncdimlen commit d66e380827a2be46a40d0ea324fc34787f9b8644 Merge: a89c1de3 4cfec8b5 Author: kate.friedman Date: Thu Dec 5 19:19:09 2019 +0000 Merge branch 'feature/gfsv16b' of gerrit:global-workflow into feature/gfsv16b commit a89c1de349e6a557dda62100ad7924cd05be3217 Merge: 0cc97b17 e4b6b7d3 Author: kate.friedman Date: Thu Dec 5 19:19:04 2019 +0000 Sync merge with develop branch commit 4cfec8b51ec9e2b3d923f9394eec721fd72e6ec5 Author: Boi Vuong Date: Thu Dec 5 18:56:20 2019 +0000 Updated GEMPAK jobs commit 0cc97b170a3f7b3ac43a0291ed7590ac1193d389 Author: fanglin.yang Date: Thu Dec 5 16:15:13 2019 +0000 update config.vrfy to point to /gpfs/dell1/nco/ops/com/gfs/prod/syndat instead of the default /gpfs/tp1/nco/ops/com/arch/prod/syndat defined in JGFS_CYCLONE_TRACKER commit eb2197553c83c8c2c7b8233781fa8caac2bf7fe7 Author: Henrique Alves Date: Thu Dec 5 05:58:01 2019 +0000 Adjustments to adding stats step commit ee2e88f2275fd9cf19f2e4edb0b985031b4436dc Merge: 9c8f1bac ad441181 Author: fanglin.yang Date: Wed Dec 4 21:53:57 2019 +0000 Merge branch 'feature/gfsv16b' of gerrit:global-workflow into feature/gfsv16b commit 9c8f1bac623d048ffbf9e1000c372d24d0455f63 Author: fanglin.yang Date: Wed Dec 4 21:51:10 2019 +0000 GFS.v16 workflow is still using the gfs.v15 version of syndat_qctropcy.sh.   syndat_qctropcy.sh was updated during gfs.v15.2 development.  A bug was recently discovered which led to tcvitals not being copied back to HOMENHC (named nhc). I have copied the latest syndat_qctropcy.sh from ./nwprod/gfs.v15.2.5/ush to gfs.v16 workflow branch feature/gfsv16b, and made further changes to it per Diane's suggestion.       if [ -s $HOMENHC/tcvitals ]; then          cp nhc $HOMENHC/tcvitals       fi       if [ -s $HOMENHCp1/tcvitals ]; then          cp nhc $HOMENHCp1/tcvitals       fi commit ad44118153c8b906058401b8e68a658f0e14dc40 Author: russ.treadon Date: Wed Dec 4 20:48:20 2019 +0000 Correct typo in ufs-weather-model tag. The correct tag is gfs_v16.0.1, not gfs.v16.0.1. commit 094b43cd70bc7ea5df0feb4143899e15070ab9d3 Author: russ.treadon Date: Wed Dec 4 20:44:50 2019 +0000 Update ufs-weather-model to tag gfs_v16.0.1 commit 415def2b802e28710235d74df033a64bc51b05a6 Author: Guang.Ping.Lou Date: Wed Dec 4 17:54:30 2019 +0000 update build_gfs_bufrsnd.sh commit d7c826ffbf32140232b9b25f6ae16151499989eb Author: Guang.Ping.Lou Date: Wed Dec 4 15:39:44 2019 +0000 update to gfs_bufr.sh for NetCDF commit e8e838f761ae78e57551bd377d4a625147680b4d Author: Guang.Ping.Lou Date: Wed Dec 4 15:38:48 2019 +0000 update to exgfs_postsnd.sh.ecf commit 814cdbce073da3fcc4af0b0a2d052d058a89dc51 Merge: e28880e7 6b6b72ee Author: Guang.Ping.Lou Date: Wed Dec 4 15:35:48 2019 +0000 Merge branch 'feature/gfsv16b' of ssh://vlab.ncep.noaa.gov:29418/global-workflow into feature/gfsv16b commit e28880e732afbd737b10cacccb17c614a0176dd8 Author: Guang.Ping.Lou Date: Wed Dec 4 15:15:53 2019 +0000 bufr sonding run scripts updates for NetCDF commit 6b6b72ee6473191cb04a14943387749d0861f3bf Merge: e374ae8a be27010c Author: russ.treadon Date: Wed Dec 4 14:32:48 2019 +0000 Merge branch 'vrfy_metplus' at commit:be27010c into feature/gfsv16b commit e374ae8a5a99a459fb0ccafef65af336f173063c Author: fanglin.yang Date: Tue Dec 3 16:36:40 2019 -0500 remove duplicated checkout of gldas commit ed084df89006436392777bdce7502b426c505a8c Author: Henrique Alves Date: Mon Dec 2 16:05:53 2019 +0000 Changes made to file names to adjust to wave scripts ported to global-workflow commit be27010c910430722f9bbf1d5bf33f8573d0af6a Merge: dd3a89e5 f7754702 Author: Mallory Row Date: Mon Dec 2 15:12:17 2019 +0000 Merge branch 'feature/gfsv16_hera_crm' into vrfy_metplus commit 225229335fbc90cdf46d211d3dc119ea3c4586e1 Author: fanglin.yang Date: Mon Dec 2 04:42:17 2019 +0000 update config.arch to keep at least 96 hours of gdas data that are used as forcing to drive gldas forecast commit 0fbde08210709c83602092f7ddf5702b375af8a9 Author: fanglin.yang Date: Mon Dec 2 03:59:28 2019 +0000 modified: HERA.env and JET.env to include APRUN definitions forgldas jobs. modified: ../parm/config/config.gldas to add CPCGAUGE to define locally staged CPC Gauge precipitation datasets. commit 3bf2325afd9eff8b1e32ec3cf122e36aea4b7687 Author: fanglin.yang Date: Mon Dec 2 02:22:44 2019 +0000 fix a bug in link_fv3gfs.sh commit 5127533d8be5c3c1ea3ee69d864cf577de8eda6c Author: fanglin.yang Date: Sun Dec 1 21:32:11 2019 +0000 update jobs/JGDAS_GLDAS commit ce071a37c62906d9ff7a8d1a6a9f805a12f77d44 Merge: d73b3070 80faa242 Author: fanglin.yang Date: Sun Dec 1 17:21:15 2019 +0000 Merge branch 'gfsv16_gldasnoah' of gerrit:global-workflow into feature/gfsv16b commit 80faa242cfd613df12e59ef0016e1068c8db1beb Author: fanglin.yang Date: Sun Dec 1 17:18:03 2019 +0000 update JGDAS_GLDAS rocoto/gldas.sh to skip all but 00Z cycle for gldas step commit d73b307000bbc87b4c4e30ea7906f5c36dfe190b Merge: f7754702 1761b012 Author: fanglin.yang Date: Sun Dec 1 04:23:28 2019 +0000 Merge branch 'gfsv16_gldasnoah' of gerrit:global-workflow into feature/gfsv16b, which is cloned from branch feature/gfsv16_hera_crm. All confilcts have been resolved. All modified files have been corss checked. This merge adds an option to run GLDAS after gdas anal step to spin up land surafce model with observed precipitation. GLDAS is checked out from https://github.com/NOAA-EMC/GLDAS. So far GLDAS is only run once per day (00Z cycle). GDAS surafce ICs on the tiles are updated with GLDAS spin-up soil moisture and soil temperature over snow-free land surafce. GLDAS spin-up run uses gdas flux files and CPC daily precip as forcing, and is run for the past 72 or 69 hours depending on the option of DOIAU. If DOIAU=NO, surafce ICs centered at the analysis time are updated; If DOIAU=YES, surafce ICs at the IAU beiginning windown (-3hr) are updated; The xml file created by running setup_workflow.py contains the gdas_gldas step only if RUN_GLDAS is set to YES in config.base. new file: driver/gdas/para_config.gdas_gldas new file: driver/gdas/test_gdas_gldas.sh modified: env/WCOSS_C.env modified: env/WCOSS_DELL_P3.env new file: jobs/JGDAS_GLDAS new file: jobs/rocoto/gldas.sh modified: parm/config/config.base.emc.dyn modified: parm/config/config.base.emc.dyn.iau modified: parm/config/config.base.nco.static new file: parm/config/config.gldas modified: parm/config/config.resources modified: sorc/build_gldas.sh modified: sorc/checkout.sh modified: sorc/fv3gfs_build.cfg modified: sorc/link_fv3gfs.sh modified: sorc/partial_build.sh deleted: ush/rocoto/config.base modified: ush/rocoto/setup_workflow.py commit 1761b01213fcb5a6cca16e5b1f5fc9885df8f475 Author: fanglin.yang Date: Sat Nov 30 16:42:27 2019 +0000 modified: jobs/rocoto/gldas.sh modified: parm/config/config.base.emc.dyn modified: parm/config/config.base.emc.dyn.iau modified: parm/config/config.base.nco.static modified: parm/config/config.gldas modified: scripts/exglobal_fcst_nemsfv3gfs.sh commit 49d7b118c6ee980ad2c3e1e5d8e960926fe5cc1f Author: Henrique Alves Date: Wed Nov 27 17:09:34 2019 +0000 Saving changes to add gwes POST to global-workflow commit dd3a89e5b1317ca41581bfeafb061f2ae60829ed Merge: ee0f88f8 de8febca Author: Mallory Row Date: Tue Nov 26 18:19:51 2019 +0000 Merge branch 'feature/gfsv16' into vrfy_metplus commit edcc6b11b1e3ed9fa3bf41e64959218c6cc87233 Author: fanglin.yang Date: Tue Nov 26 16:48:48 2019 +0000 remove exgdas_gldas.sh.ecf from global-workflow repo. Use the version under gldas repo commit ee0f88f8179a3e34260e0a45e9340f26fef7e524 Author: Mallory Row Date: Tue Nov 26 15:10:34 2019 +0000 Add parameter to control getting prepbufr data from HPSS commit 8de30c43143336d2ff455b29501f925d21dddaf3 Author: Mallory Row Date: Tue Nov 26 15:09:55 2019 +0000 Update EMC_verif-global tag to verif_global_v1.4.0 commit 11d7fae23fc23998722f0f742add4d87af5bab61 Author: Mallory Row Date: Tue Nov 26 15:08:56 2019 +0000 Update metp resources commit f7754702b92d877ce205304bb4229e2f4d0e9eb4 Merge: 3e05eacd de8febca Author: russ.treadon Date: Mon Nov 25 17:14:58 2019 +0000 Merge branch 'feature/gfsv16' at commit:de8febca into feature/gfsv16_hera_crm commit 3e05eacd483503fad68f3adf779c929668b47e80 Author: russ.treadon Date: Mon Nov 25 15:55:49 2019 +0000 Workflow changes for nc/nemsio * sorc/build_fv3.sh - remove "NO NO" from fv3 compile.sh, remove commented out mv line * ush/hpssarch_gen.sh - update enkf HPSS archive list for use with nc/nemsio * ush/rocoto/setup_workflow.py - replace ".nc" suffix with gridsuffix variable commit 5dff08e8813b5fe1c2c662c582ee5eaa010550a6 Author: fanglin.yang Date: Mon Nov 25 02:34:17 2019 +0000 further updated exgdas_gldas.sh.ecf to point to the 6-tile restart files instead of copying them to the local running directory to speed up the job commit ba7a01d9e3b316c27ada5357d09d8700ab1c6bee Author: fanglin.yang Date: Sun Nov 24 23:13:27 2019 +0000 jobs/JGDAS_GLDAS and scripts/exgdas_gldas.sh.ecf have been extensively modified to make them applicable in the GFS global workflow. Attempts were also made to generalize the scripts for running the system at any given resolution instead of the hardwried T1534 resolution. Ush scripts in GLDAS repo have also been updated. The following scripts have also been modified env/WCOSS_DELL_P3.env parm/config/config.base.emc.dyn parm/config/config.base.emc.dyn.iau parm/config/config.base.nco.static parm/config/config.gldas sorc/link_fv3gfs.sh ush/rocoto/setup_workflow.py commit f70a299d03e1c5c902a5b6c65514a2509e72ea82 Author: Henrique Alves Date: Thu Nov 21 02:29:45 2019 +0000 Modified wave PREP step config files for accommodating move of wave j-jobs, ex/ush scripts, fix_wave and parm files into the global-workflow structure. Changed COMICE to COMINice in wave scripts. Renamed ush scripts for direct lreationship to WW3 package program names (eg ww3_prnc) commit 248fd28a4603d23b1ff1ee353e0c521ea36041d5 Author: Henrique Alves Date: Tue Nov 19 22:46:04 2019 +0000 Adding changes that make INIT step functional for GEFS after merging wave j-jobs, ex/ush-scripts, parm, fix into global-workflow commit 3173916a4d4026c8c3d8f629c99a49da28e4c416 Author: Cory.R.Martin@noaa.gov Date: Mon Nov 18 18:22:32 2019 +0000 Changed rocoto setup python scripts to look for .txt and not .nc commit 5832e76a992511ce445396c6039fbb34e9828a1a Author: Cory.R.Martin@noaa.gov Date: Mon Nov 18 17:49:38 2019 +0000 Fixed another spot where logfNNN.txt should be instead of .nemsio/.c commit de8febcaecc94de0082cd8b30e053ca561e45035 Author: russ.treadon Date: Mon Nov 18 16:38:57 2019 +0000 Vlab issue #65358 Update sorc/checkout to check out ufs-weather-model tag gfs.v16.0.0 in sorc/fv3gfs.fd commit dc23e194aac0ec66d443ff804d9d56e4b44ba149 Author: fanglin.yang Date: Mon Nov 18 09:40:00 2019 +0000 Set up branch gfsv16_gldasnoah to add GLDAS to GDAS cycle for spinning up land initial conditions. The following files were copied over from workflow branch gfsv16_gldas, which was set up by Hang Lei driver/gdas/para_config.gdas_gldas driver/gdas/test_gdas_gldas.sh jobs/JGDAS_GLDAS jobs/rocoto/gldas.sh parm/config/config.gldas scripts/exgdas_gldas.sh.ecf sorc/fv3gfs_build.cfg sorc/partial_build.sh sorc/build_gldas.sh sorc/checkout.sh The following files were modified locally in this branch to set up running environment and to use the Python wrokflow setup script to create rocoto xml files. An option DO_GLDAS is defined in config.base. The xml file will be generated with or without the GLDAS step based DO_GLDAS setting. modified: env/WCOSS_C.env modified: env/WCOSS_DELL_P3.env modified: parm/config/config.base.emc.dyn modified: parm/config/config.base.emc.dyn.iau modified: parm/config/config.base.nco.static modified: parm/config/config.resources modified: sorc/link_fv3gfs.sh deleted: ush/rocoto/config.base modified: ush/rocoto/setup_workflow.py Much more work is to be done to get the GLDAS step merged into the workflow. The J-job script JGDAS_GLDAS, running script exgdas_gldas.sh.ecf, and all GLDAS ush scripts need to be updated to add error checks, to use standard module util executables, to pass correctly directory names and variable names from the parent script to child script. config.gldas is essentiall empty at this point. Some parameters found in driver/gdas/para_config.gdas_gldas need to be copied over to config.gldas. Python scripts need to be futher updated to run GLDAS for only 00Z cycle or for all four cycles. All GLDAS fix files and seetings are hardwiredd to the C768 (T1534) resolution. Need to make it flexible to run the system at different resolutions. commit d922bb913ea0330d61f010a80345f0ee90dfd0e9 Author: Cory.R.Martin@noaa.gov Date: Fri Nov 15 21:52:24 2019 +0000 Change logfNNN files from .nc/.nemsio suffix to .txt in hpssarch_gen.sh commit e8cbf92f96d1c6dc24d30fa86d9a4ccd8f2358a3 Author: Cory.R.Martin@noaa.gov Date: Fri Nov 15 21:50:04 2019 +0000 Change logfNNN files from .nc/.nemsio suffix to .txt because they are ASCII commit 6923dcc269bca50c8f4be47a82002d02138486ef Author: Guang.Ping.Lou Date: Fri Nov 15 20:25:02 2019 +0000 Vlab issue #65358 modify scripts to read NetCDF data commit c1381a06b7c079b65633f764452440ea24f52b62 Merge: 81edb37c 2f40ff96 Author: Guang.Ping.Lou Date: Fri Nov 15 20:17:20 2019 +0000 Merge branch 'feature/gfsv16' of ssh://vlab.ncep.noaa.gov:29418/global-workflow into feature/gfsv16 commit 81edb37c7552a1aae57713e08cc27bb289896ffe Author: Guang.Ping.Lou Date: Fri Nov 15 20:11:15 2019 +0000 Vlab issue #65358 modify Bufrsnd to read in NetCDF data commit 2f40ff96a66547aa1d978c54f31df6eb780c24a2 Author: russ.treadon Date: Wed Nov 13 21:01:36 2019 +0000 Vlab issue #65358 Update gfs_post.fd checkout to clone from https://github.com/NOAA-EMC/EMC_post.git commit 041380f0a7b68e50f6eb396a93db711a7954caab Author: russ.treadon Date: Fri Nov 8 20:50:33 2019 +0000 Vlab issue #65358 Replace crtm/2.2.6 with crtm/2.3.0 in module_base.wcoss_dell_p3 commit 79c318ddd22a52f9340808c9d9768b866dc39880 Author: Henrique Alves Date: Fri Nov 8 17:53:47 2019 +0000 Finalizing changes to retain history relative to GEFS/scripts source for exwave scripts commit 4388122b7ca0e32caec0e44435c2ec4434decf4d Author: Henrique Alves Date: Fri Nov 8 17:50:52 2019 +0000 Staging intermediate name change to retain history in exwave scripts relative to source GEFS/scripts commit f4c5e2c214145d165c8de73a0326c7d30285c3ac Author: Henrique Alves Date: Fri Nov 8 17:48:08 2019 +0000 Staging removal of obsolete files commit 6b8321b25ac9291552addec1bb5a4b2eec5eff9c Author: Henrique Alves Date: Fri Nov 8 15:10:24 2019 +0000 Removing extensions gefs/gens (all will be set at the appropriate j-job, links will be made to fix_wave.), making error reporting codes consistent acrros ex-scripts. commit 1800288101815c3adf17ee071d3d04ab525e154b Author: Henrique Alves Date: Fri Nov 8 13:48:18 2019 +0000 Renaming after generalization of calls to ex-scripts from GEFS workflow commit 7bae5b660bbb12efbd7200180d5435106ecc0e85 Author: Henrique Alves Date: Fri Nov 8 13:30:06 2019 +0000 Changing extension to gens matchin NCO parameter, which is set to gens for all gefs-related runs. commit a6d30d986d119a80129be21235534c66abd7c3b8 Author: jswhit2 Date: Fri Nov 8 13:23:38 2019 +0000 handle IAU 'coldstart' using warm start files from non-IAU run commit 4bd4562e77da8552ceeac317c945570afc389ddc Author: Henrique Alves Date: Thu Nov 7 21:48:25 2019 +0000 Adding wave components to global-workflow (fix/wave, jobs, parm/wave, scripts/exwave* ush/wave_*). Massive changes still required for this to work. Paths need to be re-routed, script names need to be adjusted, hard-wired ush-script parameters need to be moved into parm/wave. commit d22bff4c1d41348f91de58a9e8d7aaf444cc836c Author: CoryMartin-NOAA Date: Thu Nov 7 18:24:39 2019 +0000 check sign of delz in enkf_chgres_recenter; change some scripts to use SUFFIX commit 3336d26bf928a1d2a0d7d25b83956fc35510fc23 Merge: 8d994cfb d635fe37 Author: CoryMartin-NOAA Date: Thu Nov 7 14:09:48 2019 +0000 Merge branch 'feature/gfsv16' into feature/gfsv16_hera_crm commit 8d994cfb7ead6630c5cc955d5fb0140336dec3b8 Author: CoryMartin-NOAA Date: Wed Nov 6 18:26:34 2019 +0000 Change sign of delz for enkf_chgres_recenter_ncio commit d635fe375f8374ba279393f24fc5471f70639ef7 Author: Boi Vuong Date: Tue Nov 5 19:56:32 2019 +0000 Vlab Issue #65358 Updated ecflow's defs and scripts commit 391c793d900b1fc73ec93d917bcd96bed10c72a6 Author: Boi Vuong Date: Tue Nov 5 19:24:47 2019 +0000 Updated drivers and gempak/ush scripts commit fb95cd3c304b623bf95e2618b71b2e649751f685 Author: Walter Kolczynski Date: Tue Nov 5 05:34:56 2019 +0000 Change way wave restart files are produced In order to facilitate faster cycle turnover, instead of copying the wave restart files at the end of the forecast, symbolic links to the final destination are created before the forecast. This allows the restart directory to be populated immediately, so that the next cycle can commence while the current cycle finishes. Change-Id: I887dddec88e32ad08fefc5a8080c9f553965b9dc commit 750ba243dc1040eb008bda9eddeecc313de5ad28 Author: Walter Kolczynski Date: Sun Nov 3 08:07:06 2019 +0000 Update NEMS app for new WW3 version An undocumented change to how the peak frequencies were computed in WW3 resulted in unrealistically large peak frequencies. Coupled with a bug in Jasper, this caused crashes during grib2 encoding. Change-Id: Iface172ec8f6da816a4b56af73e8fb091dd57584 commit 104fa736f01666a9a70f7f4654d6fbe50fc07bf4 Author: George Gayno Date: Fri Nov 1 20:02:17 2019 +0000 Vlab issue #65358. Update 'checkout.sh' to check out GLDAS repo. Update build system to build GLDAS programs. Change-Id: Icf3e496ab76f398779cd97e01a250f8720ddfcb1 commit c2696f6951c8e0dca1b853009a88cef6846a02bf Author: Walter Kolczynski Date: Fri Nov 1 10:02:45 2019 +0000 Update NEMS app to incorporate latest WW3 changes The NEMS app is updated to incorporate changes to WW3 for the grib2 encoders and make profiling optional to improve performance. Change-Id: I6b7c96128f116698c27f037129db4ba8f591551b commit e3059e4e923c1b96bdd163f1d3037b17829c2e98 Author: Mallory Row Date: Thu Oct 31 17:53:18 2019 +0000 Initial commit of adding gfsmetp metatask creation in cycled XML commit 8a5e53588c2754dc3c90a559625bcaf42cc88dfa Author: Mallory Row Date: Thu Oct 31 16:48:15 2019 +0000 Fix gfsmetp gfsarch cycle_offset dependency value commit d59bdbaff3d2cf6b04960348864985c96c3f8f75 Author: George Gayno Date: Thu Oct 31 15:42:08 2019 +0000 Vlab issue #65358. gaussian_sfcanl - Rename program build script to better match its name. Change-Id: Ied731beaa567a50e9d881eaee1e58fc63ae28557 commit 718cebf287f55ed6a68027041c513ce23f230145 Author: George Gayno Date: Thu Oct 31 15:24:05 2019 +0000 Vlab issue #65358. gaussian_sfcanl - Update comments. Add global attributes to netcdf file. Change soill flag value over land ice and open water from '1' to '0' to be consistent with sample gaussian netcdf files from Fanglin. Change-Id: Idadcbd725a325cb8f06fc51c4ecf525aad35520d commit a1eb3b46d7a1476e2ae95f1643afaa613946affa Merge: 3ad83dc1 a9f2be62 Author: Mallory Row Date: Thu Oct 31 13:18:44 2019 +0000 Merge branch 'feature/gfsv16' into vrfy_metplus commit 3ad83dc15ca14a6d380be82eaf7cee1a13381c31 Author: Mallory Row Date: Thu Oct 31 13:17:35 2019 +0000 Initial commit of adding gfsmetp metatask creation in XML commit c79d7e64cdf24c74d8df75194038a9cca3aa0630 Author: Mallory Row Date: Thu Oct 31 12:08:05 2019 +0000 Initial commit of adding gfsmetp metatask commit a9f2be62ae42b1d814cc61d69485bab82909eb9d Author: russ.treadon Date: Thu Oct 31 10:28:46 2019 +0000 Vlab issue #65358 Add tcyc to scripts/exglobal_fcst_nemsfv3gfs.sh. Update EMC_post checkout. commit 46ae4ca6bbacf3c3edf65a5402095dd4ac0a9cd3 Author: George Gayno Date: Wed Oct 30 21:29:19 2019 +0000 Vlab issue #65358. gaussian_sfcanl: Add remaining nst variables to netcdf output option. Add logical flag - netcdf_out - to set output option at runtime (output netcdf when true). ./ush/gaussian_sfcanl.sh - Add 'netcdf_out' logical flag. For now use default of false (nemsio) so as to not break current functionality. Change-Id: I0a79474655592cc7a95a6ad2da4d16493ac4b063 commit cd70f5ef1cbf2cdcbb93916aefccbd3fe0cc0b89 Author: George Gayno Date: Wed Oct 30 17:51:57 2019 +0000 Vlab issue #65358. gaussian_sfcanl: Add remaining noah fields for netcdf output option. Change-Id: I352a417962c29b38f9cdf9684debe54bbaff81a3 commit 4db99b7d96c65f61cf231cc90a160bbf7fb23c2f Merge: 541867a1 b295567e Author: CoryMartin-NOAA Date: Wed Oct 30 14:40:37 2019 +0000 Merge branch 'port2hera' into feature/gfsv16_hera_crm commit 5e84c0bd9b72e09953244375d41374d0949b64e5 Author: George Gayno Date: Tue Oct 29 21:14:35 2019 +0000 Vlab issue #65358 gaussian_sfcanl: Additional noah fields output to netcdf file. Change-Id: I3e5d3ee194fd2672fca01ce77039ad1684bf9aa4 commit f863d6418d75359de448b1ddf8a11cc1f75fecb7 Author: Boi Vuong Date: Tue Oct 29 14:36:30 2019 +0000 Vlab Issue #65358 Updated gempak files and scripts commit 29ba953573f244080177023093f710763f405960 Author: Boi Vuong Date: Tue Oct 29 14:09:01 2019 +0000 Vlab Issue #65358 Updated GFS drivers commit 21a1644c83e5b03743e07b9db3f46a0133b4b503 Author: Boi Vuong Date: Tue Oct 29 13:38:58 2019 +0000 Vlab Issue #65358 Removed GFS FAX jobs and scripts commit d7a36e1f212d1089a749004260f99789ebe9177f Author: George Gayno Date: Mon Oct 28 20:55:37 2019 +0000 Vlab issue #65358. Begin updates to "gaussian_sfcanl" program to output surface file in netcdf format. Change-Id: I3c8dd74c93e36f7c3a3ae04be2d0d10a92da382e commit 632bfe92a6912e981b98f84d9782adcd5650d9f9 Author: Walter.Kolczynski Date: Fri Oct 25 16:56:16 2019 +0000 Fix previous merge enabling Hera Change-Id: I277baff3dd5c8f7485d4be1c8052837c3fbadc46 commit a9de0f78292989e552fb66401f9d1777e464606f Author: fanglin.yang Date: Fri Oct 25 14:13:03 2019 +0000 VLab Issue #65358 modified: modulefiles/module_base.wcoss_c, add prerequsite intel/16.3.210 for Module 'esmf/8.0.0bs48' modified: parm/config/config.fcst, set default land model to lsm=1 (Noah LSM) modified: sorc/checkout.sh, check out model gfsv16_bugfix and UPP post_gfs_netcdf for running model with inlinepost. commit 78924915ed4add9511c6b283119015f048201baf Author: Walter.Kolczynski Date: Fri Oct 25 13:47:42 2019 +0000 Add capability to run on Hera Change-Id: I61da1adcfa1b0ff09222c15b2c4e58c6af8a853b commit a29c723c22ae8b429295f272cefcb5eb8fa39e97 Merge: 1958210a e150d73e Author: Mallory Row Date: Fri Oct 25 12:13:23 2019 +0000 Merge branch 'feature/gfsv16' into vrfy_metplus commit 541867a12cfd55b250236cbb246adcf26a126d8a Author: CoryMartin-NOAA Date: Thu Oct 24 20:32:27 2019 +0000 Fixed some bugs associated with netCDF/calc_analysis commit e150d73ec3b80a8fccf2955cd181a4f6ab3e7bde Author: George Gayno Date: Thu Oct 24 19:00:31 2019 +0000 Vlab issue #65358 Begin update of gaussian_sfcanl program to output gaussian surface file in netcdf. Retain current option to output file in nemsio. Change-Id: I8e0b41ef7372a115bd13dc4d068bec8df86b6ee5 commit 24e712314d58cd1e53996bd91761b60fcf2b7095 Author: fanglin.yang Date: Tue Oct 22 15:33:49 2019 -0400 VLab Issue #65358 Add the option, WRITE_DOPOST, to global-workflow to run post from within the model. The model writes out post-processed "master" and "sflux" files. Corresponding changes have been made to the offline UPP in branch https://github.com/yangfanglin/EMC_post/tree/inlinepost. In current scripts/exglobal_fcst_nemsfv3gfs.sh model_configure is created in two different blocks for IAU is on and off, separately. This is prone to making msiatke when the script is updated. These two blocks are merged into one which works for both IAU on and off cases. modified: jobs/rocoto/post.sh modified: parm/config/config.base.emc.dyn modified: parm/config/config.base.emc.dyn.iau modified: parm/config/config.base.nco.static modified: parm/config/config.post modified: scripts/exglobal_fcst_nemsfv3gfs.sh modified: sorc/checkout.sh commit 1e7a76de9a9598b86592b64905e04ee3778ebff9 Author: George Gayno Date: Tue Oct 22 19:06:06 2019 +0000 Vlab issues #65358 and #67852. Remove 'gdas2gldas' and 'gldas2gdas' programs as these will reside under the GLDAS repo on github: https://github.com/NOAA-EMC/GLDAS Change-Id: I87bbac3de9d33db12925d3d6b077b5812c0ebdf4 commit 8da159d91be6bbac829e7a3da7aa81b4f9c2ebef Merge: cee64779 cec5365d Author: CoryMartin-NOAA Date: Tue Oct 22 14:49:27 2019 +0000 Merge branch 'feature/gfsv16' into feature/gfsv16_hera_crm commit cee64779535a5e9d137db66028e41d3f22a753c9 Merge: 616bd08d b5d8124c Author: CoryMartin-NOAA Date: Tue Oct 22 14:49:06 2019 +0000 Merge branch 'port2hera' into feature/gfsv16_hera_crm commit 616bd08dd0df82d183407f8ec6d26f9804d9dc0b Author: CoryMartin-NOAA Date: Tue Oct 22 14:47:52 2019 +0000 Added enkf_chgres_recenter_nc to gfsv16 workflow build scripts commit 7fee101302a547c525fba9df6cac5c42f66d35cb Author: CoryMartin-NOAA Date: Tue Oct 22 14:44:58 2019 +0000 Added enkf_chgres_recenter_nc to gfsv16 workflow commit 1958210a12c976afc7b173f841c79956f7d1ecb6 Merge: adf6de46 cec5365d Author: Mallory Row Date: Mon Oct 21 15:56:39 2019 +0000 Merge branch 'feature/gfsv16' into vrfy_metplus commit cec5365d8af681ab514cf4609d4ecbabcec587ed Author: russ.treadon Date: Mon Oct 21 15:20:18 2019 +0000 VLab Issue #65358 Update EMC_verif-global tag to verif_global_v1.3.1 commit e748ef122e196028816da5aa3a05f0179cabddc9 Author: Walter Kolczynski Date: Sun Oct 20 08:06:20 2019 +0000 Update NEMS app to version for GEFS retrospective The NEMS app is updated to check out the version for phase 2 of the GEFS v12 retrospective. Change-Id: Iddfa75a78965cf19eca2bca7f9fbbf45dcd457a6 commit 2cf1a28142d44713a31b3c1238b5307eee9bbc23 Merge: 29edaf0d 59746e18 Author: CoryMartin-NOAA Date: Thu Oct 17 18:04:11 2019 +0000 Merge branch 'feature/gfsv16' into feature/gfsv16_hera_crm commit 29edaf0d14f6c0992cca560c020bf820af828725 Merge: 59a76637 4a98049f Author: CoryMartin-NOAA Date: Thu Oct 17 16:49:38 2019 +0000 Merge branch 'port2hera' into feature/gfsv16_hera_crm commit 59a76637c4bc734ce8d80360776b231ded1d902a Author: CoryMartin-NOAA Date: Thu Oct 17 16:43:20 2019 +0000 First attempt to get global-workflow working with netCDF IO and GFSv16 commit 59746e1893c85b262fd610c73999a92c745155f1 Author: russ.treadon Date: Tue Oct 15 18:50:12 2019 +0000 Vlab Issue #65358 Add off hour sfluxfXXX.grib2 files to HPSS gdas.tar commit adf6de4607d2ffb94f45d61c19a7bad8d37b5187 Merge: 473728bb 88cbff41 Author: Mallory Row Date: Tue Oct 15 12:14:44 2019 +0000 Merge branch 'feature/gfsv16' into vrfy_metplus commit b7dc7e6124dbde4b0c41cfaca6a457e5bc995066 Author: Walter Kolczynski Date: Sat Oct 12 18:29:16 2019 +0000 Update app for WW3 OMP fix Change-Id: I41523cb5313b18eba4301d599f99ec67ea6c9bc4 Refs: #58418 commit 88cbff4179ea1a08140b9d59dd59fdf7f7dd8d08 Author: fanglin.yang Date: Fri Oct 11 20:26:34 2019 +0000 Vlab Issue #65358 Update ufs_util to release/v2.0.0 which includes A few sea ice related issues in the NSST analysis: Issue #18 (#20) Updates to global_cycle: Tf analysis for the grids with sea ice done using a salinity dependent formula (instead of using 271.2 K). Update sfcsub.F to the latest version used by the forecast model (includes elimination of masked interpolation for substrate temperature and some updates to Fortran 90 standards). The global_cycle.sh script was updated to reference a new global salinity dataset. Updates to global_chgres - Update sfcsub.F to use same version as global_cycle. Feature/hera port (#25) Update repository to run on Hera, the replacement for Theia. Remove all references to Theia. commit 59883cb4ff503fd7a92e371389a5ed4f467da5e2 Author: Walter Kolczynski Date: Thu Oct 10 01:51:06 2019 +0000 Fix bug with creating WW3 restart directory Change-Id: I7002db6175d4e994318e6274071dca1475ae3121 Refs: #58418 commit a2b355c0936ab249f3562f257ac312a9f25e11d0 Author: fanglin.yang Date: Wed Oct 9 19:26:52 2019 +0000 chnage TELTIM for a few low-res cases in config.fv3 from 420s to 450s. 420 is not divisible by 3600, this leads to fractional forecast hour in forecast output and breaks downstream enkf jobs commit 519a99c671db60eb8d994190fa75102c8a4b01e4 Author: Walter Kolczynski Date: Wed Oct 9 19:10:26 2019 +0000 Update NEMS app version for Hera port Change-Id: I19cdf40e4c0a147d138cc59fc720b7608b51554a Refs: #58418 commit c7a4df4d086821f26a394b1b5fbc65df715fdd17 Author: catherine.thomas Date: Tue Oct 8 16:55:36 2019 -0400 Vlab Issue #65358 Added a commented out line for convective cloud to the diag_table_da file commit a9309088cee6591eda24318af55f8566c79285a5 Author: Walter Kolczynski Date: Mon Oct 7 20:18:14 2019 +0000 Update post to more recent version Change-Id: I8aab5d3d532fbfc444abd4c1c71e10f55906500c Refs: #58418 commit 7ef572243ab968aed5a4d2cd75d7ed0fd46a0e09 Author: russ.treadon Date: Sun Oct 6 21:00:04 2019 +0000 VLab Issue #65358 Update sorc/checkout.sh to populate gfs_post.fd with develop branch from https://github.com/NOAA-EMC/EMC_post commit 21b037b1b4c8285ef621e1469710c7ac5acc049e Merge: be5986e4 cc2d15f7 Author: fanglin.yang Date: Fri Oct 4 15:30:06 2019 -0400 Merge branch 'feature/gfsv16' of gerrit:global-workflow into feature/gfsv16 commit be5986e45f81b762fc1404f0354e84fa635285c0 Merge: e52ecec6 332ef296 Author: fanglin.yang Date: Fri Oct 4 15:23:57 2019 -0400 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit cc2d15f70f85cfb7d78bbbc958c760e2bb33b460 Author: George Gayno Date: Fri Oct 4 19:23:12 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - Add 'noahmp' flag. When true, process noah and noahmp fields. When false, only process noah fields. The output nemsio file will always contain records for noah and noahmp. When processing noah only, the noahmp records will contain missing flag values. Change-Id: I3c02662926e64386493d576f989296c718e0fcf3 commit e52ecec638ca357edf18504b72b15028974c0809 Author: fanglin.yang Date: Fri Oct 4 15:22:08 2019 -0400 VLab Issue #65358 update esmf lib in module files to version esmf/8.0.0bs48 Update model to tag version gfs.v16_PhysicsUpdate commit 332ef2961ff40e2b759dc3e165ed7ca72993897e Author: George Gayno Date: Fri Oct 4 12:25:29 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - Remove unused namelist variable "orog_files_gdas_grid". Change-Id: I4be15b0e6749986a673303dc04a3e27d93b08168 commit 735f421618849dbda49a1c30ccaabd490e333544 Merge: 865ea5aa c68728b5 Author: Walter Kolczynski Date: Thu Oct 3 17:05:25 2019 +0000 Merge branch 'develop' into lgan_fv3_ww3 commit 865ea5aa37fc866b83dc09fb10f6b1021dc09eee Author: Walter Kolczynski Date: Thu Oct 3 16:54:24 2019 +0000 Update NEMS app checkout to ver with GSDCHEM 0.8.8 Change-Id: Idd286ae4300f0b067d3f38a2aa76b27f2d3911df Refs: #58418, #62104 commit cb4594e9562620a9e42adeaf2bad9db823c4e844 Merge: 25a564c5 8fbf33af Author: CoryMartin-NOAA Date: Thu Oct 3 15:11:14 2019 +0000 Merge remote-tracking branch 'origin/feature/gfsv16' into feature/gfsv16_hera_crm commit 25a564c5ea37275e1c4605b2532d19adccd6d42c Author: CoryMartin-NOAA Date: Thu Oct 3 14:55:20 2019 +0000 Change checkout of GSI to be feature/fv3_ncio commit 8fbf33af5c8c1f7f5a2e2077b35be89889c761a1 Author: russ.treadon Date: Wed Oct 2 00:16:54 2019 +0000 VLab Issue #65358 Add logicals do_sppt, do_shum, and do_skeb to namelist gfs_physics_nml in exglobal_fcst_nemsfv3gfs.sh commit ad1b52817e367f2dd09f961618af72ba3cd84939 Author: Walter Kolczynski Date: Tue Oct 1 20:19:19 2019 +0000 Fix issue with exglobal not creating wave restart directory The wave restart directory was not being created by exglobal, causing the copying of wave restart files to fail. Modified the directory creation to use the new restart subdirectory. Change-Id: I77fe3a72249efd3e688ece47f0778b30e034ff24 Refs: #58418 commit 3a0626812faf1d41047554eb3628adb5160eeb77 Author: russ.treadon Date: Tue Oct 1 12:50:49 2019 +0000 VLab Issue #65358 Update EMC_verif-global tag to verif_global_v1.2.2 commit 20bba55d80a776d94681dfbd63c74ca9b4cbff2c Author: George Gayno Date: Mon Sep 30 19:32:10 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - Some code clean up. Change-Id: I48407fe4643b50b41da04964c32ae0269911b73e commit 3e44b803de2384396e9409b17ee55a754ffdc625 Author: russ.treadon Date: Mon Sep 30 13:33:18 2019 +0000 VLab Issue #65358 Update EMC_verif-global tag to verif_global_v1.2.1 commit 173e362c714a857f46fcfe1a2b7759fa3b0810fc Author: George Gayno Date: Thu Sep 26 16:18:13 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - Correct diagnostic write of interpolated soil type. Turn off diagnostic write for ops. Change-Id: I6abcfdb6d6cc76c347126c661e367fc5a52de76c commit 18646deaa1e32ee6580f49d6bf86f68f3fa25ce4 Author: russ.treadon Date: Thu Sep 26 13:00:33 2019 +0000 VLab Issue #65358 Update to EMC_verif-global tag verif_global_v1.2.0 commit 354fb0c7de5b98d0537eba8207fd853b47d245a8 Author: George Gayno Date: Wed Sep 25 21:22:17 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - Add soil moisture rescaling. Add logic to write routine to account for gdas interpolation mask. Change-Id: I58d40377ed3b75404f732570f71bab6a59e09a4b commit 8a312b398ea79bacef025d19252ef0fd98cffa82 Author: Henrique Alves Date: Wed Sep 25 02:26:51 2019 +0000 global-workflow wave component: adding rundata and restart directories to store model run files (binary ww3, log, forcing inputs etc) and restart following new directory tree structure. commit 8949835cb0d37b08ea41ac825cd45c2639497285 Author: George Gayno Date: Tue Sep 24 20:53:15 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - add build module for theia. fix unallocated variable 'weasd'. Change-Id: Iccd97dae715d7d0878595c604da34ac7e0d499a5 commit bd2ed957a24bd987c77ee00e6f5fde95040ae242 Author: George Gayno Date: Tue Sep 24 20:07:02 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - Add processing of soil temp and soil moisture. Read gldas data from nemsio file instead of 1d restart file. Flip n/s poles for nemsio file. Change-Id: I3b7a96338cc8e5d706fb6ae538b7aaec2872d3ec commit 473728bba08612c8e32c06ec0a4e185e5072f638 Author: Mallory Row Date: Tue Sep 24 15:14:02 2019 +0000 Update EMC_verif-global tag number to 1.2.0 commit abd00919109042029c90390d7fccde6b0c194478 Author: Mallory Row Date: Tue Sep 24 15:12:28 2019 +0000 Updates for version 16 commit 673142abf313d8a22caf77b6b5cb77451ebfd772 Author: George Gayno Date: Tue Sep 24 00:16:06 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - flip n/s poles of gldas grid. read gldas soil type and use as intepolation mask. Change-Id: I117e89f2b61817683c937857e795fbdadf412369 commit 1db363f5f914d9ecb3ce789cad2306d0495b16da Author: George Gayno Date: Mon Sep 23 23:19:23 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - update interpolation to account for gdas mask. Change-Id: Ia46bb70b399c5aa8828ac38f71e8cb2ceb67154b commit 6f1ad409b5017244c37758eca1a627b04e6f324f Author: George Gayno Date: Mon Sep 23 18:30:22 2019 +0000 Vlab issues #65358 and #67852. gldas2gdas - Basic framework of new program to initialize gdas from gldas data. Change-Id: I765f6fc5a092be301eb800ce2a2c124946a800e4 commit 4d89ddacc73d333c17b8c62f3c103183bfc01ffe Author: George Gayno Date: Sun Sep 22 18:02:07 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - write noah fields to nemsio file. Change-Id: Iaf67dbe387e4d01dc8373f65b61fd85a04c9bf3d commit 80c30b5c62b356b05a565f70e513ad444ffc3dfc Author: George Gayno Date: Sun Sep 22 00:08:08 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - add read of config namelist to model_grid.F90 Change-Id: I347e66889bfc173f7b2142b8bb05bd763e4bf3b1 commit 5793d9ee9029f45458a446db9c03cafc22389ed9 Author: George Gayno Date: Sat Sep 21 23:24:35 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - remap noah fields. Change-Id: I4b1470e663a9351a5d8a6c0754cb3c9094beab25 commit 23f2f9983df89588add9d93b97282c5ee916e656 Author: George Gayno Date: Sat Sep 21 18:46:20 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - setup target grid noah fields. Change-Id: I9217521ed816a25458723f13bf5b15003449d4b4 commit eb4b8407cd38c7cd2e4b2dc58d51dac2641488ad Author: George Gayno Date: Sat Sep 21 18:22:11 2019 +0000 Vlab issues #65358 amd #67852. gdas2gldas - Add read of noah fields. Change-Id: I9da5b601e6de2f72831da1a796fe23688a93ea53 commit e046668e006e3f5876d9bed7f9decf3c32d6f8ca Author: George Gayno Date: Sat Sep 21 16:27:32 2019 +0000 Vlab #65358 and #67852. gdas2gldas - add remaining noahmp fields. Change-Id: If508823e20a2e29803ed55acc878eaaabfe08a0e commit 346ad154c49c8e452953f50d408ef348b7710fef Author: George Gayno Date: Sat Sep 21 14:22:45 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - Flip the N/S poles in output nemsio file. Change-Id: I83a1b9aa936f68158fb27d10d4c6302950d41689 commit 274c3b909c67d74b8e8f3da042c3a83942ac69b8 Author: George Gayno Date: Sat Sep 21 04:05:00 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - add more noahmp fields. Change-Id: I7c34973adcde8f212dae3ca31b7c056e2857cf04 commit b4e48920b61d8591f86ed95264d8e42424ed6770 Author: George Gayno Date: Sat Sep 21 03:01:44 2019 +0000 Vlab issues #65358 and #67852. gdas2gldas - add processing of some noahmp fields. Change-Id: Ib3d453a52270f84a9b340f759d27e25a07848e40 commit be85a6cd59778653998519d827f48a2226ce0f4f Author: George Gayno Date: Fri Sep 20 21:13:16 2019 +0000 Vlab issues #65358 and #67852. 'gdas2gldas' program - process orography. Change-Id: I262568ec844a020a4bd5073b330e53831a514422 commit e7f52d7b8050981db5f9595bccef0463f6eb4ddb Merge: 9e453009 b8619596 Author: fanglin.yang Date: Fri Sep 20 16:37:42 2019 -0400 VLab Issue #65358 update parm/config/config.fcst and scripts/exglobal_fcst_nemsfv3gfs.sh to remove the ishuffle option commit b8619596144549b4bb43b1ba4006e500bbd7b71e Merge: fb738ff4 67f1a3b2 Author: fanglin.yang Date: Fri Sep 20 16:29:00 2019 -0400 Merge branch 'gfsv16fyang3' of gerrit:global-workflow into gfsv16fyang3 commit fb738ff4591cf2997c5c8d66c8373d2f5a0b3ed0 Author: fanglin.yang Date: Fri Sep 20 16:28:29 2019 -0400 remove the ishuffle option for netcdf output commit 9e4530096094ca1ef3245dfb67778a811a5a2261 Author: George Gayno Date: Fri Sep 20 20:07:02 2019 +0000 Vlab issues #65358 and #67852. Updates to gdas2gldas program. Change mapping to ignore input and target grid masks. Begin processing of noahmp fields. Change-Id: I6edc0c2bb675cbd6c97cf27c1dda4efb2938da3b commit 6c143cfe01cea314b15e2088b4c52575b5503058 Author: catherine.thomas Date: Fri Sep 20 08:59:14 2019 -0400 VLab Issue #65358 Modified nsig_ext in config.anal and config.eobs for L127 GPSRO commit 4af57a1bec2e2fe635f9e58f80c7433f11ecacba Author: russ.treadon Date: Thu Sep 19 18:10:56 2019 +0000 VLab Issue #65358 Remove nemsio_cvt from list of executables and directories to link/copy in sorc/link_fv3gfs.sh since nemsio_cvt.fd is no longer in ufs_utils. commit 7c8143f872c5437955f5d890d9861dfd3ee185b9 Author: fanglin.yang Date: Thu Sep 19 02:22:55 2019 +0000 Merge changes made in branch gfsv16_physupdt_netcdf into branch feature/gfsv16. Update the model and scripts to use the latest physics configuration including UGWP, and add the option to write our forecast history files in netcdf format with compression. see https://vlab.ncep.noaa.gov/redmine/issues/68678 for the detail of the model changes. UFS_UTIL was also updated to use high-res land-sea mask (FNMSKH) in global_chgres.sh and global_cycle.sh for the interpolation of climatological SST to reduce temperature biases over small lakes. ----------------------------------- Squashed commit of the following: commit 665f70386c7e1e8c6cccc902f1dbe011dbc584c5 Author: fanglin.yang Date: Wed Sep 18 11:09:54 2019 -0400 latest changes have been merged to branch gfsv16_physupdt_netcdf commit 856bd56b425c6b14ebb4495adff1978b7d04b91e Author: fanglin.yang Date: Tue Sep 17 22:35:46 2019 -0400 use FV3 branch SM_gfsv16_physupdt_netcdf, which is forked from gfsv16_physupdt_netcdf but updated to the latest master I5ce54ed1bb9ab1ce10f28ddb1e0e6ba6689905b5 commit aa3e11ec17378fef2e7e734a4b9502c1112b9984 Merge: 0d853b7c 9f079f3b Author: fanglin.yang Date: Tue Sep 17 15:52:51 2019 -0400 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 0d853b7c0df9e1f9901062b84b659685470fd559 Author: fanglin.yang Date: Mon Sep 16 23:32:51 2019 -0400 change ufs_util repo back to the master version commit 2b2449bf0b1a1b9f62429a76990e0247175704cf Author: fanglin.yang Date: Sun Sep 15 14:35:47 2019 -0400 add netcdf option in config.post and rocoto/post.sh commit 7c9bb3dc1a1598387de26d3fd453a9d3197076ac Author: fanglin.yang Date: Sat Sep 14 13:15:46 2019 -0400 Add options to write 1) RESTART files with compression 2) forecast files in netcdf format with compression make sure LINKed file names in DATA and ROTDIR match each other modified: parm/config/config.fcst modified: scripts/exglobal_fcst_nemsfv3gfs.sh commit 13ea6ceb47da5fd0173fe6dd3f7f400851910892 Author: fanglin.yang Date: Sat Sep 14 01:37:54 2019 +0000 modified: ../parm/config/config.fv3 Further tuned GWD coefficients. modified: checkout.sh: use temporary https://github.com/yangfanglin/UFS_UTILS commit 719688bc765e8f70d3165729517bba3682780fbb Author: fanglin.yang Date: Fri Sep 13 04:38:18 2019 +0000 VLab Issue #65358 1) update scripts to turn on all physics updates targeted for GFS.v16. 2) tuned coefficients for running ogwd and mountain block for 127-L GFS. 3) adjust computing resources in config.fv3 for 127-L GFS. 4) add to worflow the option to write out netcdf files with compression. See Jeff Whitaker's FV3 ticket https://vlab.ncep.noaa.gov/redmine/issues/68487 for the detail. 5) Create a UFS_UTIL branch "gfsv16" to set FNMSKH to T1534 land-sea masks for running CHGRES and surface cycle. Changes to be committed: modified: parm/config/config.base.emc.dyn modified: parm/config/config.base.emc.dyn.iau modified: parm/config/config.base.nco.static modified: parm/config/config.fcst modified: parm/config/config.fv3 modified: scripts/exglobal_fcst_nemsfv3gfs.sh modified: sorc/checkout.sh commit 31f91457604f68813ea7d57ed7503694a86fbfff Merge: 23671eee 8214216f Author: fanglin.yang Date: Fri Sep 13 02:56:08 2019 +0000 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 23671eee2fe94527cd659fa9ea3afb19fe0004d0 Merge: ab07a77c 06a217f1 Author: fanglin.yang Date: Tue Aug 27 22:53:19 2019 -0400 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit ab07a77c994d4c38a69b1656e29edbd6b0c0c387 Author: fanglin.yang Date: Sun Aug 18 12:51:30 2019 +0000 remove outdated readme.txt commit 24bcacb621073dcbad0fdd457f1d48cdb7daf53a Author: fanglin.yang Date: Sun Aug 18 03:55:36 2019 +0000 add back checkout.sh commit 2d33c2f6636eaa690c40284cb526709aaa989394 Merge: 8a7d50ef 4222fbf4 Author: fanglin.yang Date: Sun Aug 18 03:46:57 2019 +0000 update to feature/gfsv16 commit 8a7d50ef804b1afaa305c35b9360ce075202b882 Author: fanglin.yang Date: Sat Jun 29 19:11:19 2019 +0000 update model tag to gfs.v16_preCCPP_20190610_v1.0.1, in which io/FV3GFS_io.F90 was upfdate to restore warm-restart reproducibility capability commit 5bd7d817ae18259acfd70dde98df9e4c798afc1f Author: fanglin.yang Date: Wed Jun 26 02:48:38 2019 +0000 use model branch gfs.v16_preCCPP_20190610_v1.0.0 which contains Helin's fix to FV3GFS_io.F90 commit ae08fe77a25a1d6c6d57057c263dc44b33ad5478 Author: fanglin.yang Date: Wed Jun 26 00:08:26 2019 +0000 change lheatstrg=T if lsm=1 and lheatstrg=F if lsm=2 commit 513eb3a9cbcd38e3c8c2d60303edbd06c0ade2a3 Merge: 57a51f8c 0637ec7a Author: fanglin.yang Date: Tue Jun 25 20:05:02 2019 +0000 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 57a51f8c5f2b71b2c7b913612e2331ad2bf866b2 Author: fanglin.yang Date: Tue Jun 25 20:03:58 2019 +0000 se default optveg=1 in exglobal_fcst_nemsfv3gfs.sh to turn off dynamic vegetation commit 67f1a3b2b8cd2a0bc5ca803338ed770bcfe28575 Merge: 665f7038 d0c8f2dd Author: fanglin.yang Date: Thu Sep 19 02:20:14 2019 +0000 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 665f70386c7e1e8c6cccc902f1dbe011dbc584c5 Author: fanglin.yang Date: Wed Sep 18 11:09:54 2019 -0400 latest changes have been merged to branch gfsv16_physupdt_netcdf commit d0c8f2dd01fa6a21c0ac75c7cfd220a7342771f2 Author: George Gayno Date: Wed Sep 18 12:12:43 2019 +0000 Vlab issues #65358 and #67852 Updates to 'gdas2gldas' program - Add interpolation of soil temp and soil moisture from tiled gdas to gaussian gldas. Add routine to update gldas restart file with updated soil fields. Change-Id: Ie2fba2c6e74b160cb8c27f917c09e673da5c588b commit 67adca4ac31d1219c173d3af0c7a905f4e7d3382 Author: Henrique Alves Date: Wed Sep 18 02:47:03 2019 +0000 Winding back changes to wave-related parms PDY_PCYC etc, and adding correct parm cyc defining directory, that was erroneously pointing to non-existent parm cycm1. commit 856bd56b425c6b14ebb4495adff1978b7d04b91e Author: fanglin.yang Date: Tue Sep 17 22:35:46 2019 -0400 use FV3 branch SM_gfsv16_physupdt_netcdf, which is forked from gfsv16_physupdt_netcdf but updated to the latest master I5ce54ed1bb9ab1ce10f28ddb1e0e6ba6689905b5 commit 65fe319c30dfceff7ef265c3f5aa6eb2a1ce049e Author: Henrique Alves Date: Tue Sep 17 21:44:59 2019 +0000 Adding parms CDATE_PCYC, PDY_PCYC and cyc_pcyc to exglobal_fcst_nemsfv3gfs.sh for setting location of wave component restart file as a function of time between cycles commit aa3e11ec17378fef2e7e734a4b9502c1112b9984 Merge: 0d853b7c 9f079f3b Author: fanglin.yang Date: Tue Sep 17 15:52:51 2019 -0400 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 0d853b7c0df9e1f9901062b84b659685470fd559 Author: fanglin.yang Date: Mon Sep 16 23:32:51 2019 -0400 change ufs_util repo back to the master version commit 9f079f3b274b94d0569162ac9d7f6a17e1886a59 Author: George Gayno Date: Mon Sep 16 17:25:14 2019 +0000 Vlab issues #65358 and #67852. Update gdas2gldas program to use the input grid mask - snow-free and non-glacial ice land areas - during interpolation. Change-Id: I61936020832c9a7608a9003212160c1eec598319 commit 7858946954b4abe5ab2747a2c74ee311bbe1f16e Author: catherine.thomas Date: Mon Sep 16 11:10:37 2019 -0400 VLab Issue #65358 Modified anal and eobs config files with GPSRO parameters for L127. commit 2b2449bf0b1a1b9f62429a76990e0247175704cf Author: fanglin.yang Date: Sun Sep 15 14:35:47 2019 -0400 add netcdf option in config.post and rocoto/post.sh commit 7c9bb3dc1a1598387de26d3fd453a9d3197076ac Author: fanglin.yang Date: Sat Sep 14 13:15:46 2019 -0400 Add options to write 1) RESTART files with compression 2) forecast files in netcdf format with compression make sure LINKed file names in DATA and ROTDIR match each other modified: parm/config/config.fcst modified: scripts/exglobal_fcst_nemsfv3gfs.sh commit 13ea6ceb47da5fd0173fe6dd3f7f400851910892 Author: fanglin.yang Date: Sat Sep 14 01:37:54 2019 +0000 modified: ../parm/config/config.fv3 Further tuned GWD coefficients. modified: checkout.sh: use temporary https://github.com/yangfanglin/UFS_UTILS commit 5d1fe312749c5fd01090184fabc50bd53cdd33b5 Author: George Gayno Date: Fri Sep 13 23:46:56 2019 +0000 Vlab issues #65358 and #67852 Updates to new gdas2gldas program. Compile on Dell. Read in gldas restart file to set target grid mask. Change-Id: Id862601158715f0f41092bd2192573e02eb832b3 commit 4399d3d275e65ef5ca4219e566d89e0414fca83f Author: russ.treadon Date: Fri Sep 13 13:01:30 2019 +0000 VLab Issue #65358 Only add GSI diagnostic file to tape archive list if diagnostic file exists commit 719688bc765e8f70d3165729517bba3682780fbb Author: fanglin.yang Date: Fri Sep 13 04:38:18 2019 +0000 VLab Issue #65358 1) update scripts to turn on all physics updates targeted for GFS.v16. 2) tuned coefficients for running ogwd and mountain block for 127-L GFS. 3) adjust computing resources in config.fv3 for 127-L GFS. 4) add to worflow the option to write out netcdf files with compression. See Jeff Whitaker's FV3 ticket https://vlab.ncep.noaa.gov/redmine/issues/68487 for the detail. 5) Create a UFS_UTIL branch "gfsv16" to set FNMSKH to T1534 land-sea masks for running CHGRES and surface cycle. Changes to be committed: modified: parm/config/config.base.emc.dyn modified: parm/config/config.base.emc.dyn.iau modified: parm/config/config.base.nco.static modified: parm/config/config.fcst modified: parm/config/config.fv3 modified: scripts/exglobal_fcst_nemsfv3gfs.sh modified: sorc/checkout.sh commit 31f91457604f68813ea7d57ed7503694a86fbfff Merge: 23671eee 8214216f Author: fanglin.yang Date: Fri Sep 13 02:56:08 2019 +0000 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 8214216fcf3409dde81a05d9c2c40680036b6ee8 Merge: b6ffd564 7c0cd1f2 Author: russ.treadon Date: Wed Sep 11 20:14:02 2019 +0000 VLab Issue #65358 Merge branch 'vrfy_metplus' at 7c0cd1f2 into feature/gfsv16 commit b6ffd564607bffaddb62ec2a22aa44c9d31bdaee Author: russ.treadon Date: Sat Sep 7 14:58:25 2019 +0000 VLab Issue #65358 Add IAU_OFFSET=0 to DOIAU_coldstart section of scripts/exglobal_fcst_nemsfv3gfs.sh commit 7c8383dbb5b5352cba4bb0750bea8dd3b9a252c5 Author: russ.treadon Date: Fri Sep 6 13:49:09 2019 +0000 VLab Issue #65358 Remove module_base.wcoss_cray since it is no longer needed. module_base.wcoss_c is used on Luna and Surge (WCOSS_C) commit 286b7afad87530db3ef83952c76d0f778f2c0198 Author: fanglin.yang Date: Thu Sep 5 23:36:49 2019 -0400 VLab Issue #65358 correct a namelist mistake in exglobal_fcst_nemsfv3gfs.sh. load yaml-cpp that is required by esmf commit eead3959412221b583b86eff54948b4ca35ea62a Author: fanglin.yang Date: Thu Sep 5 20:18:23 2019 +0000 VLab Issue #65358 1. modified: sorc/checkout.sh as a temporary resolution to check independent sub-modules of NEMSfv3gfs 2. modified: parm/config/config.fcst and modified: scripts/exglobal_fcst_nemsfv3gfs.sh to add an option to use Wyser 1996 cloud ice radius scheme. See FV3 Redmine issue https://vlab.ncep.noaa.gov/redmine/issues/68141 for the detail. commit af747496f8b4b2de287d061a5094135083410803 Author: Walter Kolczynski Date: Thu Sep 5 18:59:49 2019 +0000 Update NEMS app version to a master commit Previously the checkout for the FV3-GSDCHEM-WW3 app temporarily pointed to an interim commit that included GSDCHEM 0.87 and used ESMF 8.0.0bs40+ to facilitate development while waiting for the app to merge a full update to master. That update has now been made to the app master, so the checkout commit is now updated to point to that new version. The new FV3-GSDCHEM-WW3 app commit updates to GSDCHEM 0.87 and ESMF 8.0.0bs47, and also updates the other components to recent development versions. Change-Id: I0318535aa7564b48567a6442cdda074007095c03 Refs: #58418 commit dbcf983d06ece8959a72f2e7a4713382194cfe2d Author: russ.treadon Date: Wed Sep 4 17:43:47 2019 +0000 VLab Issue #65358 Update Theia and WCOSS module_base esmf module load to esmf/8.0.0bs47 (consistent with forecast model) commit 67390029f44f5e14532f80e002f4d9b46cd92454 Author: fanglin.yang Date: Wed Sep 4 12:24:29 2019 -0400 VLab Issue #65358 Further update config.fcst to turn off canopy heat storage (config.fcst) for Noah-MP. Including canopy heat storage does help improving the 500-hPa ACC but tends to increase the lower-troposphere cold biases. commit 96a27fc42966baaddc15834587e071a4122cfdd9 Merge: 6f7bf392 ede312e0 Author: fanglin.yang Date: Wed Sep 4 10:33:39 2019 -0400 Merge branch 'feature/gfsv16' of gerrit:global-workflow into feature/gfsv16 commit 6f7bf3921d00aaf6470ffb105bcd4b801f5fda35 Author: fanglin.yang Date: Wed Sep 4 10:31:54 2019 -0400 VLab Issue #65358 Update config.fcst to turn on canopy heat storage (config.fcst) along with Noah-MP commit ede312e030e602fa525ac64ed047ba673d527b22 Author: Xu.Li Date: Tue Sep 3 19:01:59 2019 +0000 Vlab Issue: #67743, modify to aplly real SST climatology updates to NSST background over small water bodies commit c1ad18d74918943b9492affb71c93a4fd2f77e6f Author: fanglin.yang Date: Sat Aug 31 15:27:27 2019 -0400 VLab Issue #65358 set in config.fcst hord=5 for both gfs and gdas cycle forecasts commit a90f50af2c12654db6e910dbf9bbc2799807d82f Author: fanglin.yang Date: Sat Aug 31 13:05:06 2019 -0400 remove obsolote readme.txt commit ecd87d7d78bec7839a45269c907030a0501ce133 Author: George Gayno Date: Thu Aug 29 19:46:53 2019 +0000 Vlab issues #65358 and #67852 Baseline new program - tentatively called gdas2gldas - that will update GLDAS with tiled surface data from GDAS. Change-Id: I5f97b4665ec389f85fda1db7caef2425472855ca commit 3834dfb268a375a4e529fee140dd770b8389f8aa Author: russ.treadon Date: Wed Aug 28 18:25:31 2019 +0000 VLab Issue #65358 Update forecast model checkout to NEMSfv3gfs branch gfsv16_physupdt. commit 1677483ccf48b72302ade130ba4dfd99d63ac739 Merge: b41d8472 c68728b5 Author: russ.treadon Date: Wed Aug 28 18:00:20 2019 +0000 VLab Issue #65358 Merge branch develop at commit:c68728b5 into feature/gfsv16. commit b41d8472c3b9a0ac751bb7871de2f90f24904a89 Author: russ.treadon Date: Wed Aug 28 15:22:53 2019 +0000 VLab issue #65358 Undo MinMon changes committed at 6325027f given developer updates to DA_GFSv16 commit 659443c19182c3bbcdd13100ba2c151fa3b9e26e Author: catherine.thomas Date: Wed Aug 28 10:23:49 2019 -0400 VLab Issue #65358 Updated intel, impi, and esmf modules for Theia commit f0e4cf7d0f0e323d5ab9af426633e7d599c98120 Merge: 06a217f1 f94a5a43 Author: russ.treadon Date: Wed Aug 28 12:57:32 2019 +0000 VLab issue #65358 Merge branch 'develop' at f94a5a43 into feature/gfsv16. commit 23671eee2fe94527cd659fa9ea3afb19fe0004d0 Merge: ab07a77c 06a217f1 Author: fanglin.yang Date: Tue Aug 27 22:53:19 2019 -0400 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 06a217f181769757b4ddc92a5ec208bfeae073c6 Author: russ.treadon Date: Mon Aug 26 14:51:27 2019 +0000 VLab issue #65358 resolve Bug #67573 in feature/gfsv16: correct typo in firstcyc queue_arch defintion on non-slurm platforms commit 6325027f1c51ca3adee214c5dd7742ffc6668b00 Author: russ.treadon Date: Mon Aug 26 14:43:03 2019 +0000 VLab issue #65358 Update MinMon paths for development parallels; update WCOSS_D Fit2Obs to process netCDF files commit 57f74c842ba30e40f6e2c3ba1bd4802388aa068f Author: Walter Kolczynski Date: Fri Aug 23 16:34:57 2019 +0000 Update UFS_utils version to work with GEFS The GEFS init system requires changes to global_chgres_driver.sh that are not present in v1.0.0. The UFS_utils version is updated to the current tip of the develop branch, which includes the necessary changes. Change-Id: I097b16342ca081e867786410a6ac9916fd5576fb Refs: #58418 commit ab07a77c994d4c38a69b1656e29edbd6b0c0c387 Author: fanglin.yang Date: Sun Aug 18 12:51:30 2019 +0000 remove outdated readme.txt commit 24bcacb621073dcbad0fdd457f1d48cdb7daf53a Author: fanglin.yang Date: Sun Aug 18 03:55:36 2019 +0000 add back checkout.sh commit 2d33c2f6636eaa690c40284cb526709aaa989394 Merge: 8a7d50ef 4222fbf4 Author: fanglin.yang Date: Sun Aug 18 03:46:57 2019 +0000 update to feature/gfsv16 commit 4222fbf4d1ae83b57f23974c5b096a2cadfca933 Merge: 90000d08 7448544c Author: russ.treadon Date: Tue Aug 13 10:09:01 2019 +0000 VLab issue #65358 Merge branch 'develop' at 7448544c into feature/gfsv16. Brings in Theia bug fixes #66187. commit 6fddfaf8212d29ee9a1eddbdbc7f710d2a19e426 Merge: 9fd2726d 9dc4c7a1 Author: Walter.Kolczynski Date: Mon Aug 12 18:55:36 2019 +0000 Merge branch 'develop' into lgan_fv3_ww3 Change-Id: I068787c69f6610fa6896af16775378286d3e948b commit 90000d08d00b1ba188237eabd5d9a79801e7d80d Merge: 0e676894 9dc4c7a1 Author: russ.treadon Date: Fri Aug 9 12:49:26 2019 +0000 VLab issue #65358 Merge branch 'develop' at 9dc4c7a1 into feature/gfsv16. Brings in hotfix #67072 commit 0e67689461475e2955d6871d3495530332d8cba7 Author: russ.treadon Date: Thu Aug 8 14:56:43 2019 +0000 VLab issue #65358 Generalize ush/hpssarch_gen.sh to include restart files needed by IAU commit 9fd2726d64d62b7fc6196fb74060dc2ec15b3dab Author: Walter.Kolczynski Date: Mon Aug 5 18:24:21 2019 +0000 Update FV3-GSDCHEM-WW3 version Updated the checkout script to fetch a newer commit of the FV3-GSDCHEM-WW3 app. This newer version uses ESMF v8.0.0bs42, updates GSDCHEM to 0.87, WW3 to an OMP-enabled version, and FV3 to the latest develop commit. Change-Id: I7c16511e2d5d183abd96371afd0d0b237e5349aa Refs: #58418, #62104 commit f123abb87a153876a1cdcff5285d7c4dd5d66567 Merge: f4b47b5d dcfa5eee Author: Walter.Kolczynski Date: Wed Jul 31 18:31:17 2019 +0000 Merge remote-tracking branch 'origin/develop' into lgan_fv3_ww3 commit c9ffb656f75ff2cf0af4626dae00fdab2815b8ee Merge: 9c9e7416 dcfa5eee Author: russ.treadon Date: Tue Jul 23 17:10:02 2019 +0000 VLab issue #65358 Merge branch 'develop' at dcfa5eee into feature/gfsv16 commit f4b47b5db243f4f0d172b3430e8a6f494946ca2a Author: Henrique Alves Date: Thu Jul 18 21:49:50 2019 +0000 Cleaning up esmf profiling parms commit 056c6cd12288a6a8f3b1fd0fa6165f0b14667a71 Merge: 2bb5bacc 01b12587 Author: Henrique Alves Date: Thu Jul 18 21:45:33 2019 +0000 Merge branch 'lgan_fv3_ww3' of gerrit:global-workflow into lgan_fv3_ww3 commit 2bb5bacc59c830276c91c03ab490cfbc4781844e Author: Henrique Alves Date: Thu Jul 18 21:45:23 2019 +0000 Branch lgan_fv3_ww3: changing exglobal_fcst to allow writing wave component restart files following number of daily cycles (gfs_cyc), and creating proper comout for wave restart files commit 9c9e741659b7d0a04abd269837869c22b59108db Author: russ.treadon Date: Thu Jul 18 14:58:16 2019 +0000 VLab issue #65358 Replace IAU_DELTHRS with IAU_OFFSET to set iau_offset in model_configure commit 01b12587ae6567677d95e15e990397f142c53633 Author: Walter.Kolczynski Date: Tue Jul 16 17:49:44 2019 +0000 Fix clean arguments for building fv3 The arguments used when building the FV3-GSDCHEM-WW3 app used named arguments, but the script expects arguments without names. Change-Id: Ibc98a4c883f4f28c361104d03e4b17fb070dc7f8 Refs: #58418 commit 1743914f7d2475f128b9c954eef1fa063fe377b3 Author: russ.treadon Date: Tue Jul 16 15:43:41 2019 +0000 VLab issue #65358 * jobs/rocoto/vrfy.sh - set RUN_ENVIR to devpara for fit2obs only * scripts/exglobal_fcst_nemsfv3gfs.sh - IAU related changes * sorc/checkout.sh - checkout NEMSfv3gfs tag gfs.v16_tag_v2.0.0; remove fix_l127 from ProdGSI checkout commit 7135cc11b621165edc1fd7677af053e915ceb364 Author: Henrique Alves Date: Mon Jul 8 17:03:55 2019 +0000 Small bugfix on copying out_pnt for wave output commit 65c3720495cc39ddd64c21b4c4e0080fccd877b0 Author: Henrique Alves Date: Mon Jul 8 15:07:19 2019 +0000 Changes made to exglobal_fcst to streamline linking and copying IO from/to wave model component. commit 8588614fc1c2015687615b58d6b160b6b8a04a52 Merge: 222059b4 6ca55564 Author: russ.treadon Date: Fri Jul 5 14:40:02 2019 +0000 Redmine issue #65358 Merge branch 'master' at 6ca55564 into feature/gfsv16 * add safeguard to not execute select vrfy jobs when CDATE equals SDATE * remove five sorc/build*sh scripts since they are now built by build_ufs_utils.sh commit 222059b4606ee7fc8944f73b42eb2f09171887fd Author: russ.treadon Date: Sat Jun 29 22:37:25 2019 +0000 Redmine issue #65358 Mistakenly removed ProdGSI checkout DA_GFSv16 at 413d08ba. Restore DA_GFSv16 checkout with this commit. commit 413d08baf228ae5dc2d3731ddb620ac59cad801f Author: russ.treadon Date: Sat Jun 29 21:16:48 2019 +0000 Redmine issue #65358 Update fv3gfs model to gfs.v16_preCCPP_20190610_v1.0.1 in sorc/checkout.sh commit 8a7d50ef804b1afaa305c35b9360ce075202b882 Author: fanglin.yang Date: Sat Jun 29 19:11:19 2019 +0000 update model tag to gfs.v16_preCCPP_20190610_v1.0.1, in which io/FV3GFS_io.F90 was upfdate to restore warm-restart reproducibility capability commit 02704a3f0312383919adda7245300a5a60b0ecd8 Author: Walter.Kolczynski Date: Fri Jun 28 16:21:46 2019 +0000 Remove CDUMP requirement to use wave coupling Previously, the needed operations for wave coupling were only completed if CDUMP="gfs", even if cplwav=".true.". The GEFS uses a CDUMP="gdas", so this requirement had to be removed for the GEFS to operate correctly. Change-Id: I50964a7fc064f439b6c879fb199d910b3f7eadfc Refs: #58418 commit 4d8f71e61683a63d2a3b8b25cafca7ef79d2c7ff Author: russ.treadon Date: Fri Jun 28 13:50:58 2019 +0000 Redmine issue #65358 Remove sorc/gettrk.fd and gettrk references in sorc/link_fv3gfs.sh. commit a3033a05458b47548d404f82148423edda4946cd Merge: 6cfec865 6ca55564 Author: Walter.Kolczynski Date: Thu Jun 27 19:38:01 2019 +0000 Merge branch 'master' into lgan_fv3_ww3 Change-Id: I31ee2e1a55de3db34de2dbcb029224729c3c9074 commit a558e4a0e73cd55c90d04bb463b5ba85c12cad33 Author: russ.treadon Date: Thu Jun 27 19:21:08 2019 +0000 Redmine issue #65358 update checkout.sh to check out GFS v16 DA development branch, DA_GFSv16 commit 6cfec865ebb0bcad8f81ebea21bbe4d06531ac99 Author: Walter.Kolczynski Date: Thu Jun 27 19:15:50 2019 +0000 Update checkout script to get combined FV3-WW3-GSDCHEM app Replaces the FV3-only checkout with one that clones the combined FV3-WW3-GSDCHEM app, which can be run in any combination of those components. This unified app is required to run coupled forecasts. The app will build correctly in the normal way using build_fv3.sh (and build_all.sh). Post is also reverted to the mainline project rather than the gtg version which has more restricted access. NOTES ON APP VERSION: 1) App does not build successfully on WCOSS-Cray due to a module dependency issue that will be sorted out later. 2) As committed, the WW3 build requires a path of 79 characters or less. This will be addressed in a future NEMS commit. For now, you can fix this manually by updating L19 of fv3gfs.fd/NEMS/src/incmake/component_WW3.mk to a larger number before building. Change-Id: I6c6d000650dc4ee8b2bbc9997195c3dfa2690520 Refs: #58418 commit a682a673e5a920b629d18d0a9c167144fbbcae91 Author: catherine.thomas Date: Wed Jun 26 11:16:05 2019 -0400 Redmine Issue #65358 Bugfix for jobs/rocoto/getic.sh. The date IF statement to handle pre-nemsio analysis files should use "-ge" instead of "-gt". commit 368141ca93c5c45af6fb0c3d541cc96ed0bd669b Author: russ.treadon Date: Wed Jun 26 13:45:22 2019 +0000 merge parm/config/config.fcst (ae08fe77) and sorc/checkout.sh (5bd7d817) from gfsv16fyang3 to feature/gfsv16. refs #65358 commit 5bd7d817ae18259acfd70dde98df9e4c798afc1f Author: fanglin.yang Date: Wed Jun 26 02:48:38 2019 +0000 use model branch gfs.v16_preCCPP_20190610_v1.0.0 which contains Helin's fix to FV3GFS_io.F90 commit ae08fe77a25a1d6c6d57057c263dc44b33ad5478 Author: fanglin.yang Date: Wed Jun 26 00:08:26 2019 +0000 change lheatstrg=T if lsm=1 and lheatstrg=F if lsm=2 commit 027af835e3dcb212f0487d37cc518c8c82f43631 Author: russ.treadon Date: Tue Jun 25 21:50:59 2019 +0000 refs #65358 merge scripts/exglobal_fcst_nemsfv3gfs.sh from gfsv16fyang3 at 57a51f8c to feature/gfsv16 commit 513eb3a9cbcd38e3c8c2d60303edbd06c0ade2a3 Merge: 57a51f8c 0637ec7a Author: fanglin.yang Date: Tue Jun 25 20:05:02 2019 +0000 Merge branch 'feature/gfsv16' of gerrit:global-workflow into gfsv16fyang3 commit 57a51f8c5f2b71b2c7b913612e2331ad2bf866b2 Author: fanglin.yang Date: Tue Jun 25 20:03:58 2019 +0000 se default optveg=1 in exglobal_fcst_nemsfv3gfs.sh to turn off dynamic vegetation commit 0637ec7a39e3163e77caedafcdc25f175e8f25d2 Author: russ.treadon Date: Tue Jun 25 18:28:45 2019 +0000 feature/gfsv16: add link to redmine issue refs #65358 Commit the following changes to checkout.sh: * add "-e" option to trap execution errors * remove ProdGSI branch EXP-locfix-io checout (use master) * remove commented out lines commit e57878705dc8356e5a2b774543701e151a3efb69 Author: fanglin.yang Date: Tue Jun 25 17:59:51 2019 +0000 update exglobal_fcst_nemsfv3gfs.sh to pass landice from config.fcst; set lheatstrg=F if lsm=2 commit 2550fafc92738e1bb5bf526a45b4e06d8894e640 Author: fanglin.yang Date: Tue Jun 25 03:32:20 2019 +0000 change default vaule of TKE in all field_table for sa-tke-edmf pbl scheme from 1.0E30 to 0.0. Otherwise, the model segfaults for warm restart. Update config.fcst to turn on sa-tke-edmf as default commit 19bf5fdc859bb658c208c1496aab875eb926713d Author: fanglin.yang Date: Tue Jun 25 03:21:01 2019 +0000 update scripts/exgfs_nawips.sh.ecf to add more output for WPC -- a fix from gfs.v15.1 after implementation commit 6c14ce46e88c0d7b2e62480311defcc35f069045 Author: fanglin.yang Date: Sun Jun 16 18:08:07 2019 +0000 change lheatstrg=T commit 39476f9b7f6be32a6e48be8860fee227cd2a25c9 Author: fanglin.yang Date: Sun Jun 16 17:58:33 2019 +0000 set default satmedmf=F in config.fcst. Model segfault with satmedmf=T for warm restart commit 5a13af015c969270eda37a640c69d44e13ab7435 Author: fanglin.yang Date: Fri Jun 14 05:44:06 2019 +0000 update module_base.theia, loading esmf/8.0.0bs21 needs module impi/5.1.2.109 commit 0e70011d6e982bdf8b4bc414511d9d28adfa641f Author: fanglin.yang Date: Thu Jun 13 04:52:50 2019 +0000 update config.fcst for running model with sa-tke-edmf pbl scheme commit c93e259b3b7394b3e4bbb4bbf1dcb1039151f207 Author: fanglin.yang Date: Thu Jun 13 04:46:31 2019 +0000 add field_table_gfdl_satmedmf field_table_thompson_satmedmf field_table_wsm6_satmedmf field_table_zhaocarr_satmedmf for running the model with prognostic subgrid scale turbulent kinetic energy in sa-tke-edmf commit fecff06eed919c8bcce0cf5cdfc27c22e012da03 Merge: 94614d3f 149a95e3 Author: fanglin.yang Date: Wed Jun 12 19:49:20 2019 +0000 Merge branch 'master-v16' of gerrit:global-workflow into gfsv16fyang3 commit 94614d3f95ac951d0f15c763e0371b5ba036d43f Author: fanglin.yang Date: Wed Jun 12 19:48:43 2019 +0000 update workflow to include new physics options: radiation, NoahMP, sa-TKEEDMF and UGWP commit 149a95e35097ad82b7f74c8092134307807648a7 Author: Lin.Gan Date: Wed Jun 12 16:16:20 2019 +0000 Merge nemsio_chgdate change redmine #64864 commit 77f8b292b1880815d7a8971dd686fa8e87b11619 Author: Lin.Gan Date: Thu Jun 6 14:10:03 2019 +0000 Add missing line in config.fv3 commit 29295e75838cec71b4a1bc538c3da78ed6732ed1 Author: Lin.Gan Date: Thu Jun 6 13:35:18 2019 +0000 Apply changes from rev 2fd3204c60b8ed8282ea0dc96f19f6aa24e27f7f and 5518e751d9c6105795e958a3c02175bf1aaf2dd5 commit 1248a869bdd49300cdfd5e47068dd861e801bd6b Merge: 5a4da48e 55f4cc28 Author: Lin.Gan Date: Wed Jun 5 20:23:30 2019 +0000 Merge branch 'feature/iau' into master-v16 Merge feature/iau into master-v16 to take care of vlab issue: 64420 - Add optional 4DIAU to global-workflow Rev. merge 2fd3204c - merge gfsv16fyang2 into feature/iau Rev. merge 5518e751 - update checkout.sh to use EMC_post:master commit 5a4da48eaf45ee62a5456f527a7c224c3940d7cc Author: Lin.Gan Date: Thu May 30 13:43:49 2019 +0000 Remove extra ufs_utils related scripts from ush commit beea5bf73b7c647bb9ce2e62d442454253e3e498 Author: Lin.Gan Date: Wed May 29 15:32:46 2019 +0000 Create FV3 GFS v16 master commit 55f4cc28bbc9d0a8588546c9ac975adc553a343e Author: russ.treadon Date: Tue May 28 20:50:57 2019 +0000 Correct logic for historical ozinfo files. Add correct logic to config.anal.iau commit 4e8e0597844c0308dfa5d2591383e5c3c293c0e5 Merge: 751c6dd6 d919db63 Author: russ.treadon Date: Fri May 24 20:36:49 2019 +0000 Merge branch d919db63 'master' into feature/iau commit 751c6dd61f2c2b990a48fe030dc8c69613ce666d Author: russ.treadon Date: Thu May 23 12:51:23 2019 +0000 Add logic to config.anal to set OZINFO for retrospective parallels commit 4c846c7168dd4b758e5a5b27b06c41f441f754ff Merge: f671b8b2 219fe342 Author: russ.treadon Date: Wed May 22 13:26:15 2019 +0000 Merge branch 'gfsv16fyang' into feature/iau commit f671b8b280cedc0f77ff15bf0f317c62e7d11879 Merge: 0fb73681 2acb5d31 Author: russ.treadon Date: Tue May 21 13:55:22 2019 +0000 Merge 2acb5d31 master into feature/iau commit 219fe3426436525f44b4dd4fd2251a328f748887 Author: fanglin.yang Date: Fri May 17 16:23:22 2019 +0000 update post.sh to check if master file for a particular forecast hour exists, then not keep rerunning for this hours when POST job is resubmitted. This is useful for running extended long forecasts commit 0fb73681321cbc6d7ece3e518edea4fbef82db8c Author: russ.treadon Date: Mon May 13 18:10:02 2019 +0000 Add DA executables to link_fv3gfs.sh commit b083d3568d58865f57b39c45b3f4be2bc0bc982f Merge: b46d0166 475967bc Author: fanglin.yang Date: Mon May 13 02:54:19 2019 +0000 Merge branch 'master' of gerrit:global-workflow into gfsv16fyang Master was updated for using SLURM instead of MOAB job scheduler on Theia/Jet commit b46d016624087eedbd44a503582724607cd7806c Author: fanglin.yang Date: Mon May 13 02:44:24 2019 +0000 Changes to be committed: modified: ../../jobs/rocoto/arch.sh add an option SAVEFCSTNEMSIO. if SAVEFCSTNEMSIO=NO, nemsio files are not archived to HPSS save online grib2 1-deg pgb files instead of grib1 1-deg files modified: ../../jobs/rocoto/vrfy.sh save online grib2 0.2-deg pgb files instead of grib1 0.2-deg files modified: ../../scripts/exglobal_fcst_nemsfv3gfs.sh set warm_restart=.true. if RERUN=YES for forecast-only experiment. Otherwise, the model fails to restart as it keeps looking for gfs_cntrl.nc for cold start cases. modified: ../../sorc/checkout.sh checkout UPP branch gfsv16_fyang for processing 127-L GFS commit db173335481f6145e36668f29bf207ef954b1f4c Merge: c71cefaa 475967bc Author: jswhit Date: Sat May 11 19:03:50 2019 +0000 Merge branch 'master' into feature/iau commit c71cefaaecee38b8759924edabdadd32778c5565 Author: jswhit Date: Wed May 8 02:08:59 2019 +0000 changes to enable slurm from slurm_beta_sync branch commit 9af1480dee2351b540e873f1daf9d26928ec472d Author: lin.gan Date: Thu May 2 17:55:16 2019 +0000 Update resource to use dynamically calculated lowres on Theia include expdir commit ced016bb8b949350f92730bb52ca74cd3b8d9ad2 Author: lin.gan Date: Thu May 2 17:50:27 2019 +0000 Update resource to use dynamically calculated lowres on Theia commit 76f877c57b8f965779725a48059f6a1dc83290fa Author: lin.gan Date: Wed May 1 19:03:13 2019 +0000 Coupled ww3 tested with FV3 GFS forecast certified commit 56c686d03a420bf7216aafb86a572a054fcecdc0 Author: lin.gan Date: Wed May 1 14:06:18 2019 +0000 Testing include ICE data commit c0afa1b1887ae9f474436a98e3b36c1a1c73954d Author: Catherine Thomas Date: Wed May 1 13:50:14 2019 +0000 VLab Issue #60800, feature/iau (C Thomas): Made vcoord more flexible in gaussian_sfcanl. commit ebbf3c0902578b3647d4f110c168e0e87abe24a9 Author: Jeffrey.S.Whitaker Date: Tue Apr 30 11:54:03 2019 -0400 back out some changes from L127_updates merge commit 06441ca025bed60257de1cebaf23ed637db4530b Merge: ce2298dd b439bc7f Author: Jeffrey.S.Whitaker Date: Tue Apr 30 11:13:39 2019 -0400 Merge remote-tracking branch 'origin/L127_updates' into feature/iau commit ce2298dd3893adbfddd7dd857cab6712bd35af0b Author: jswhit Date: Mon Apr 29 18:40:02 2019 +0000 don't try to archive abias files if lobsdiag_forenkf = true commit 199e61c3fa124d1610bcb32cd5adcae8216aad5f Author: jswhit Date: Tue Apr 23 21:33:57 2019 +0000 add missing FNTSFC definition commit eeb6dd7f40174b0a847c816f80741ace704305a5 Merge: c7d0d246 8619f479 Author: jswhit Date: Tue Apr 23 20:17:01 2019 +0000 Merge branch 'master' into feature/iau commit b439bc7f5e3f63d59812f0fdc0a716d0d33966e1 Author: Catherine Thomas Date: Mon Apr 22 16:36:10 2019 +0000 VLab Issue #60800 (L127_updates): Removed references to *C hyblev file. commit c24de7af395edcf9cc9f341ee758d829d747b24f Author: lin.gan Date: Mon Apr 22 14:15:17 2019 +0000 First try see email for record commit e789501ca90f72d7ef121cee8023bb340c0b3416 Author: lin.gan Date: Mon Apr 22 14:12:40 2019 +0000 First try see email for record commit c7d0d2462e31744111b7198b2a4889c0a4a8084b Author: jswhit Date: Sat Apr 20 00:58:10 2019 +0000 update commit fa3385490ebbacc051cc97921bf642c4e47d504c Author: jswhit Date: Sat Apr 20 00:57:03 2019 +0000 add more skeb namelist parameters commit e4a085bb7e41d3978d9fe25c31a27fc457adcb6b Merge: d8e19fa6 82505618 Author: Catherine Thomas Date: Thu Apr 18 18:36:19 2019 +0000 L127_updates: Merge master commit f4296d5ae5dc392a6ad3596ed4352905745d13a6 Merge: b0f2a5ef 193f8837 Author: jswhit Date: Wed Apr 17 22:19:19 2019 +0000 Merge branch 'master' into feature/iau commit b0f2a5efd1da1dd3f8874e44a00384383b64f47c Author: jswhit Date: Wed Apr 17 15:00:57 2019 +0000 update for IAU commit 5f2add7980332d44b6715724081a73f6b4989b41 Author: jswhit Date: Sun Apr 14 17:53:42 2019 +0000 update commit 84377670b492a18db153394fa37c660c27cf0615 Author: jswhit Date: Sun Apr 14 17:51:40 2019 +0000 update commit 62d02250e3eec721cfabdda62f5b988013dd44fb Author: jswhit Date: Sun Apr 14 17:50:18 2019 +0000 update commit 67520861e91a319ca34c075cd22033ac57a4e843 Author: jswhit Date: Sun Apr 14 17:47:27 2019 +0000 update commit ba4d815e8d41019ef047d5d302bf77e4feb64398 Author: jswhit Date: Sun Apr 14 17:45:54 2019 +0000 update commit 1a3fb9785463ffaa20b44400d8360dd500034f87 Author: jswhit Date: Sun Apr 14 17:44:20 2019 +0000 new file commit d28e57d88a64f17c1e86af5dca8c6f911ea87053 Author: jswhit Date: Sun Apr 14 17:42:48 2019 +0000 add output_1st_timestep so it works with NEMSFV3gfs master commit 1068601b73c59a4cf05b8939f371dc8c3e724de6 Author: jswhit Date: Sun Apr 14 17:37:26 2019 +0000 update commit 00240bfe5648b00764a65ffd94a6bdc0f06129e9 Author: jswhit Date: Mon Apr 8 19:38:17 2019 +0000 update commit b4fcf4d83e543af407bca3cf47e18baefc3c724d Author: jswhit Date: Sun Apr 7 12:39:52 2019 +0000 turn on netcdf diag files commit 46b94eaea38cfc027a5701ddaf6ccfb4689aa018 Author: jswhit Date: Thu Apr 4 19:02:07 2019 +0000 config for IAU commit ae727bef51666e7b48bfe9f8cb8a0ced782d1e8b Author: jswhit Date: Thu Apr 4 03:50:12 2019 +0000 run eobs at both gfs and gdas commit 2490ecdbfa80e0b85cab650c011769e6caff3364 Author: jswhit Date: Thu Apr 4 03:47:11 2019 +0000 update to run EnKF for gfs and gdas commit 8cb5d67982b052d3a693bfda6f18db860e6ed459 Author: jswhit Date: Tue Apr 2 16:19:07 2019 +0000 add parameters back in atmos_model_nml commit ca2f9c56badd8f92bb97a25234ab55fb86cced68 Author: fanglin.yang Date: Tue Apr 2 14:41:05 2019 +0000 update gsi tag from fv3da.v1.0.42 to fv3da.v1.0.43 to remove a dead link in Ozomon commit a6927f431ae5743fb5abe38d7e1629500a67535d Author: jswhit Date: Tue Apr 2 03:30:18 2019 +0000 update fv3gfs to 1.0.18 commit 06029ac87fdb5ab6699d40b9a3012912c5a0389a Author: jswhit Date: Tue Apr 2 03:29:51 2019 +0000 more bugfixes commit dbad0c88855ff9fd06cf90a70d0ee112a065febf Author: fanglin.yang Date: Tue Apr 2 00:57:27 2019 +0000 update POC for DA in release note commit f8f108f4a7030a3a3619fec52d6d6d8d961fab65 Author: fanglin.yang Date: Tue Apr 2 00:46:18 2019 +0000 merge NCO's back to q2fy19_nco branch. Update release notes commit 602db4a60218b0e6d47333009e5e1150400eda91 Author: jswhit Date: Mon Apr 1 02:16:17 2019 +0000 fix bug introduced into non-iau warm start forecasts commit 6eac887a585a2513ca21013db2c0948be908402c Author: jswhit Date: Sun Mar 31 14:54:03 2019 +0000 update commit f256a51ac8a6a171f976be5548ca6b842e3b7532 Author: jswhit Date: Sun Mar 31 13:22:10 2019 +0000 more bug fixes commit bde9520b80c199ed34d3cb98bce87db48f1ddcbd Author: jswhit Date: Sat Mar 30 23:22:07 2019 +0000 fix IAU cold start initial date in model_configure commit 22c89f93c1326ae9a83e22bb1d9ad7b027478c83 Author: jswhit Date: Sat Mar 30 19:40:04 2019 +0000 update commit c403d981f6f4ae58700967beaa2baa9d7453316d Author: jswhit Date: Sat Mar 30 18:50:48 2019 +0000 fix typo commit 0b43f7dfd6894ed205c537593a399859f8f8ad70 Author: jswhit Date: Sat Mar 30 16:51:33 2019 +0000 don't change date if coldstart commit cbbb49fb1b60f7bdde5f1bb66be79c86233b3122 Author: russ.treadon Date: Fri Mar 29 21:18:02 2019 +0000 Update DA tag to fv3da.v1.0.42 commit 4786300bfb97c599ac0a3d080e104f38034f0866 Author: jswhit Date: Fri Mar 29 15:55:17 2019 +0000 may restart interval for IAU 3 hours, so restarts written at beginning and middle of window commit 0c64c804276d6ca29e701f439020cddbc248b723 Author: jswhit Date: Fri Mar 29 15:40:48 2019 +0000 make sure restarts at middle of window are saved when IAU is on commit 23a45dea9fd33480ab250b37e4d75d10500726cb Author: fanglin.yang Date: Fri Mar 29 14:30:17 2019 +0000 Update model tag to nemsfv3gfs_beta_v1.0.18 to 1) correct a bug in precip units in the computation of frozen precipitation flag (srflag), 2) write fields that are continuously accumulated in model integration in restart files so that after a restart their acummulated values can be read in. (FV3 Issue #61788) commit 4624e6749b29d59a0cecffb6d856c26d5be8a566 Author: jswhit Date: Fri Mar 29 01:47:51 2019 +0000 updates for IAU commit 944d81a8a194d7a0138fddab4cd685d15c905c47 Author: jswhit Date: Fri Mar 29 01:47:33 2019 +0000 update commit 1538b4f829255c1a3a82a52c16951072963c6624 Author: jswhit Date: Fri Mar 29 01:46:20 2019 +0000 use EXP-locfix and fix_l127 for gsi, and new tag for NEMSfv3gfs commit d9b5538244fee0876185fa90f0b40b1869dc2619 Author: fanglin.yang Date: Thu Mar 28 20:46:52 2019 +0000 update release note commit abff7d1d77b94b28aca48b996644df6e3fa4ccda Author: fanglin.yang Date: Thu Mar 28 20:45:36 2019 +0000 replace current ecflow/def file swith NCO's copy commit 8718363623fe6999b65fd5d971dc93976d078757 Author: jswhit Date: Thu Mar 28 17:50:31 2019 +0000 params for IAU commit a0c7b84ff3868366570a20244b68a12274dec659 Author: jswhit Date: Thu Mar 28 17:42:48 2019 +0000 update commit 836d506585ef645add9dd5b4dc25416ac0672eda Author: jswhit Date: Thu Mar 28 17:06:25 2019 +0000 fix model_configure so start date is previous analysis time when IAU is on. commit 40793165c610c7c8b870be4d1822826e623a890b Author: jswhit Date: Thu Mar 28 15:15:43 2019 +0000 fix IAU commit 3f2dcce15a780a60e180a723dc9f5371f060eed8 Author: jswhit Date: Wed Mar 27 20:21:29 2019 +0000 testing iau commit dfd76c033e4430dcfc0046ca7384ad930e183769 Author: jswhit Date: Tue Mar 26 23:01:05 2019 +0000 use EXP-locfix branch for GSI commit 69c06ea44c639fd4716001edead49b5e2613a03d Author: fanglin.yang Date: Tue Mar 26 02:25:15 2019 +0000 Squashed commit of the following from branch q2fy19_nco_rst Add restart capability of running GFS long forecast from the end or a failing point of last attempt. modified: jobs/JGLOBAL_FORECAST, parm/config/config.base.nco.static parm/config/config.fcst, and scripts/exglobal_fcst_nemsfv3gfs.sh. restart_interval_gfs is used to control the frequency of writing out restart ICs, which are saved under ROTDIR for emc parallels and NWGES for NCO production. exglobal_fcst_nemsfv3gfs.sh script has been modified to autimatically detect if the model should execute as a cold, or warm start, or as rerun. If it is a rerun, the script will look for saved ICs that is restart_interval_gfs hours back from the last ending point. use 8x24 instead of 12x16 layout in config.fv3 for C768 -- Matt Pyle indicated this will actually speed up a 16-day forecasts by about 2 minutes per his test update to model tag nemsfv3gfs_beta_v1.0.17 to address restart I/O issues #60879 commit e01d1df6a81f7998574fa1145e05955f93ecf14d Author: russ.treadon Date: Mon Mar 25 23:16:05 2019 +0000 Update DA tag to fv3da.v1.0.41 (Q3FY19 GDAS observation upgrade) commit 5e49a47ccff59dd40be0cf18a3e7f4fcff0a115b Author: Rahul Mahajan Date: Mon Mar 25 22:02:32 2019 +0000 add config.resources.C96 commit eefaf95e6f6f4511021b83d9b8a43e2f544ba26f Author: jswhit Date: Mon Mar 25 12:37:48 2019 +0000 fix typo commit 5c5c1deb627589f59b666ec78de92db18827abae Author: jswhit Date: Mon Mar 25 02:41:00 2019 +0000 C96 LONA should be 190, not 192 (to match berror file) commit 411406246e5d4d6fa45af4d3f1bff66d8479964a Author: jswhit Date: Mon Mar 25 02:40:42 2019 +0000 .f90, not .f commit 0fdc76ce6f0149a7f62dc013850228bc6e0578cd Merge: c345a00d 8c563c17 Author: jswhit Date: Sun Mar 24 17:10:55 2019 +0000 Merge branch 'feature/iau' of gerrit:global-workflow into feature/iau commit c345a00d79e2d8d3cb7c9a72621b6ed905a9e165 Author: jswhit Date: Sun Mar 24 17:10:36 2019 +0000 fix building of namelist, specification of cycle time commit 8c563c17ea09c96d2c5b407555851c4df7c5a9a3 Author: Rahul Mahajan Date: Fri Mar 22 02:52:36 2019 +0000 fix modules issue commit bbd6e5e8e2a0d306dc352d229e8c6332c7540c7d Author: Rahul Mahajan Date: Fri Mar 22 01:46:14 2019 +0000 fix file permissions commit 28187c8e79abf10065b44cc69f68feb2cd5a2d44 Author: Rahul Mahajan Date: Fri Mar 22 01:45:34 2019 +0000 bugfix in setup_expt.py commit b75a1d7f06196c1b89bcb08698bb0fce589e5510 Author: Rahul Mahajan Date: Thu Mar 21 21:22:06 2019 -0400 bugfix for DOIAU and DOAIU_ENKF Change-Id: Ie7e2c96773ceb59b7f9f4e7340b09a0210ccb1e4 commit d8e19fa60758aa550bc5924b7554dd85cd982eee Author: Catherine Thomas Date: Thu Mar 14 18:08:13 2019 +0000 VLab Issue #60800, L127_updates (C. Thomas): Added nlayers change for eobs/eomg steps in addition to anal. commit 5595fcca56e116526b32fe917a7e788864e7f388 Author: Catherine Thomas Date: Wed Mar 13 13:29:28 2019 +0000 VLab Issue #60800, L127_updates (C. Thomas): Bug fix for config.ecen commit 89f14fd6a9e91b2350455044181697e67a9e087e Author: Catherine Thomas Date: Tue Mar 12 13:08:45 2019 +0000 VLab Issue #60800, L127_updates (C. Thomas): Make global_chgres_driver more flexible to accept different SIGLEVEL commit 0535d189d831e2f0a979b2f9f2085b279b35ab7b Author: Catherine Thomas Date: Mon Mar 11 21:51:22 2019 +0000 VLab Issue #60800, L127_updates (C. Thomas): Fixed typo in config.fv3 commit e820ab2f46da9c123648b370cb71e356b058343b Author: Rahul Mahajan Date: Mon Mar 11 14:52:39 2019 +0000 add utility to change date and forecast hour in nemsio file. commit 326da6173e8f6c430e1883e723f3c94b378bb829 Author: Rahul Mahajan Date: Mon Mar 11 10:38:36 2019 -0400 set restart interval = 3 at start of IAU expt Change-Id: I937c7aa96ef6421c0270c31e906eda1d6e4bb840 commit 3d1f592f1a95d0b9828e60baff409307b2d5d905 Merge: aafd573b 595d44c9 Author: Rahul Mahajan Date: Fri Mar 8 16:17:00 2019 -0500 Merge branch 'master' of gerrit:global-workflow into feature/iau Change-Id: Ide0c4c5dc13314de8f0eb19554b5895fc3e24a2e commit aafd573bc2c30acf5ef8dbf245acc6b6302369d7 Author: Rahul Mahajan Date: Fri Mar 8 16:16:40 2019 -0500 add IAU capability in the forecast script Change-Id: I024d73ba585ffb034f73e8207bbe036a712a51c2 commit aebf15574209889549dd7b0f496b63c51773dffa Merge: 292ef67b 595d44c9 Author: Catherine Thomas Date: Fri Mar 8 17:48:26 2019 +0000 Merge branch 'master' into L127_updates Adding in new model changes from potential v15 implementation commit 292ef67b5d883a6b1bafdc6e8653118b922d4623 Author: Catherine Thomas Date: Thu Mar 7 18:19:44 2019 +0000 VLab Issue #60800, L127_updates (C Thomas): Change hyblev file for fits commit 61b9da080d146fdc16c63aabdb4734ad5cbce8b9 Author: fanglin.yang Date: Tue Mar 5 18:59:56 2019 +0000 minor updates to resources usages in config.vrfy, config.resources and config.post on computers other an Dell to be consistent with the master repository commit 21007eae8d4660ef87c94f4388d0518a1071b945 Author: catherine.thomas Date: Mon Mar 4 09:44:10 2019 -0500 VLab Issue #60800, L127_updates (C. Thomas): Change GSI fix directory in checkout.sh for L127 commit b71c6b7eb24179e381d8abe8740bb5ca66175b3b Author: Catherine Thomas Date: Thu Feb 28 19:33:07 2019 +0000 VLab Issue #60800 (L127_updates): Point to correct hyblev file in fix_am commit 7b4bc5041ca71f0ae7f69dd9dae72eb0652bec24 Author: Catherine Thomas Date: Thu Feb 28 18:52:05 2019 +0000 VLab Issue #60800 (L127_updates): Level dependent changes to config files commit d2b0c40f58b0996dd9ec39c3fac54af132942f8b Author: Catherine Thomas Date: Thu Feb 28 18:24:48 2019 +0000 VLab Issue #60800: Allowed for externally specified SIGLEVEL file in ush/gaussian_sfcanl.sh commit 3b2993f3871467707427dc65deb8c97c7942c178 Merge: 6e7ecef60 70ae08c85 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Thu Apr 9 17:02:49 2020 -0400 Merge pull request #56 from NOAA-EMC/feature/dev-v15.2.10 Issue #52 - GFSv15.2.10 updates for develop from RFC 6652 commit f5c4aff96c9cd6a94d7565cc5a530c233cd531c6 Merge: 7b9735456 dae3332af Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Thu Apr 9 17:02:35 2020 -0400 Merge pull request #55 from NOAA-EMC/feature/ops-v15.2.10 Issue #52 - updates for GFSv15.2.10 from RFC 6652 commit 70ae08c85a9e39226f583210c88bdf526f50a395 Author: kate.friedman Date: Thu Apr 9 20:17:03 2020 +0000 Issue #52 - GFSv15.2.10 updates for develop from RFC 6652 commit dae3332afdd0219eae3900165cde2efcb5ea62fd Author: kate.friedman Date: Thu Apr 9 20:09:57 2020 +0000 Issue #52 - updates for GFSv15.2.10 from RFC 6652 commit 7b97354567d2c50adc6b48ac2c9371b3638c28e8 Merge: 7eb0e8205 9311dfa5d Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Thu Apr 9 15:17:21 2020 -0400 Merge pull request #54 from NOAA-EMC/feature/i46ops Issue #46 - syndat path and prod module updates for operations branch commit 9311dfa5d65fa46a222574f037f1711de0cf0224 Author: kate.friedman Date: Thu Apr 9 18:34:39 2020 +0000 Issue #46 - syndat path and prod module updates for operations branch - update prod_envir module to prod_envir/1.1.0 - update syndat paths - necessary updates to chgres-related scripts to get them working for testing - update default ACCOUNT to GFS-DEV commit 6e7ecef6070985248444d74650512722f4e79069 Merge: 0e0dc873c 69e7eada4 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Thu Apr 9 13:55:59 2020 -0400 Merge pull request #53 from NOAA-EMC/feature/i46dev Issue #46 - syndat compath updates and prod modules commit 69e7eada432995041a4fd8b449a8e900dcbc43ce Author: kate.friedman Date: Thu Apr 9 17:29:42 2020 +0000 Issue #46 - reverted JGLOBAL_TROPCY_QC_RELOC change, added DO_WAVE with default into config.vrfy, and organized verification switch comments in config.base.emc.dyn commit 81f6114e96f5cd0d55a02306f4ca37ab5c18fb33 Author: Kate.Friedman Date: Thu Apr 2 18:18:30 2020 +0000 Issue #46 - fix to verification switches and fix to COMINsyn path on Hera commit a847accd7e89b3f60e662fa05c633b0efdfa5332 Author: Judy.K.Henderson Date: Tue Mar 31 23:29:26 2020 +0000 merge 26Mar20 develop branch into gmtb_ccpp_hera Squashed commit of the following: commit 0e0dc873ceff26f9666fc40287ad2457171719c7 Merge: b133700a 95a63432 Author: Kate Friedman Date: Thu Mar 26 10:54:44 2020 -0400 Merge pull request #42 from NOAA-EMC/hotfix/viewer Issue #41 - Update PRODUTIL paths for WCOSS in viewer commit 95a63432f3fbdd8745d0617089485cdc332f57e7 Author: kate.friedman Date: Thu Mar 26 14:43:44 2020 +0000 Issue #41 - Update PRODUTIL paths for WCOSS in viewer commit b133700a4a65fe5334e5b5522a8c6f83bf0bbd0c Author: kate.friedman Date: Thu Mar 26 13:01:38 2020 +0000 Issue #21 - correct syntax for machine if-blocks in setup_expt scripts commit f4ee5098988106037528650ba8a15922150b70af Author: kate.friedman Date: Wed Mar 25 20:52:49 2020 +0000 Issue #21 - remove unneeded logic from partition check commit 4acc80f6037a4d0fd43a64e9178e7aadbd6162f5 Merge: accb6f4b fb1c79f4 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Wed Mar 25 15:22:51 2020 -0400 Merge pull request #40 from NOAA-EMC/port2wcoss3p5 Issue #21 - Add support for WCOSS phase 3.5 commit fb1c79f4b7136e09c9d35d9d05303116036f58c9 Author: kate.friedman Date: Wed Mar 25 16:06:54 2020 +0000 Issue #21 - updated WCOSS phase 3.5 queues commit 08a535492952d863f860977f0ab0da4bc79bc931 Author: kate.friedman Date: Wed Mar 25 14:58:14 2020 +0000 Issue #21 - add phase 3.5 support - add partition option to setup scripts - remove machine if-blocks from config.base and add variable population to setup_expt*py scripts - add phase 3.5 ppn value to WCOSS_DELL_P3 env and config.resources files commit accb6f4b919871221e8037d5f154b157d88d1102 Merge: 057b2a82 8b51b56f Author: Kate Friedman Date: Mon Mar 23 14:01:30 2020 -0400 Merge pull request #39 from NOAA-EMC/feature/verif-tag Issue #38 - update EMC_verif-global pointer from VLab to GitHub commit 8b51b56f84289d1c01863b61421b21eccd22939c Author: kate.friedman Date: Mon Mar 23 17:40:18 2020 +0000 Issue #38 - update EMC_verif-global pointer from VLab to GitHub commit 057b2a82fa43f7bc36c3e757ca7d48fb86b9541c Merge: 0377d20f 622167d5 Author: Kate Friedman Date: Wed Mar 11 12:00:58 2020 -0400 Merge pull request #29 from NOAA-EMC/feature/manage_externals Issue #3 - Introduce manage_externals as replacement for checkout.sh commit 622167d5fb3322921a1702639ebccb42da1f5e1b Author: kate.friedman Date: Fri Mar 6 18:20:31 2020 +0000 Issue #3 - added explicit config flag example for checkout_externals in README and blurb about this replacing checkout.sh commit e83b90d50999f64ed5208d94a8cceb8179c9395f Author: kate.friedman Date: Fri Mar 6 17:00:15 2020 +0000 Issue #3 - remove prod_util and grib_util sections from build_all.sh, removed elsewhere already commit 8699b46aa1797e8dd29edff1d4bd3b511ad5cb1c Author: kate.friedman Date: Fri Mar 6 16:30:54 2020 +0000 Issue #3 - updated README with new manic version commit e602cd3d536b55b86b04285aedd5781d8d3a9f82 Author: kate.friedman Date: Fri Mar 6 16:27:57 2020 +0000 Issue #3 - updated link_fv3gfs.sh to adjust wafs links commit 830c73f430d70cc516dea419a8969c6fd9fc0910 Author: kate.friedman Date: Fri Mar 6 15:21:45 2020 +0000 Issue #3 - update EMC_verif-global tag in Externals.cfg after sync with develop commit 40084e67810d21366d0e9af6d9937c29aa4965ad Merge: f662fffa 0377d20f Author: kate.friedman Date: Fri Mar 6 15:18:52 2020 +0000 Issue #3 - Merge branch 'develop' into feature/manage_externals commit 0377d20f3d019f77a47fc9860d6146fd3c8e5d94 Merge: 1b359dbe 25524675 Author: Kate Friedman Date: Thu Mar 5 08:43:16 2020 -0500 Merge pull request #28 from NOAA-EMC/feature/metplus2 Issue #8 - add switch for MET+ jobs commit 25524675a63e59829655bbd9a09abc4dca246357 Author: kate.friedman Date: Thu Mar 5 13:31:02 2020 +0000 Issue #8 - add switch for MET+ jobs commit 1b359dbeb31b94382619dfc9c67e77fffe46aaa0 Merge: 0359d342 31bb7d32 Author: Kate Friedman Date: Wed Mar 4 10:19:36 2020 -0500 Merge pull request #26 from NOAA-EMC/feature/metplus Feature/metplus - refactored MET+ jobs to resolve timing issues commit 31bb7d32181ca84229c3c3374226bbd37784ddc4 Merge: eb73e520 0359d342 Author: Mallory Row Date: Wed Feb 19 15:24:42 2020 +0000 Merge branch 'develop' into feature/metplus commit f662fffa25a99617828e4322bf789978cf523248 Author: kate.friedman Date: Fri Feb 14 15:57:05 2020 +0000 Issue #3 - Updated README with new manic tag v1.1.7 commit e3196a84a0ecd2b54d59abfdc9184622a9c605ca Author: Kate Friedman Date: Thu Feb 13 15:59:06 2020 -0500 Update README.md commit e46b175d8a309010e421ccd54e6d6eb083af3579 Merge: 4bd0e203 0359d342 Author: Kate.Friedman Date: Thu Feb 13 20:38:04 2020 +0000 Issue #3 - sync merge with develop branch commit 0359d3425a8710e7b696b94456ec8e54e9a2fd9f Merge: 1d9a1f00 bd00cb98 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Thu Feb 13 09:53:59 2020 -0500 Merge pull request #19 from NOAA-EMC/feature/remove_theia Feature/remove theia commit eb73e520716215c3f11cc4cdfce3831408221766 Author: Mallory Row Date: Fri Feb 7 14:04:37 2020 +0000 Update EMC_verif-global checkout to verif_global_v1.5.0 commit bd00cb9812c5fb400ba4399d183b2198b8e80372 Author: Kate.Friedman Date: Fri Feb 7 13:41:05 2020 +0000 Issue #4 - bug fix in getic.sh for v15 commit 1c85197d7a1beb34f2e3a52969d631d42003e6eb Merge: 67dae409 1d9a1f00 Author: Kate.Friedman Date: Fri Feb 7 13:27:18 2020 +0000 Issue # 4 - Sync merge branch 'develop' into feature/remove_theia commit 1d9a1f00b73cb3852d352e9a41a15651a99fb656 Merge: 3ed9267b bdbecaa7 Author: Kate Friedman Date: Fri Feb 7 08:11:21 2020 -0500 Merge pull request #18 from lgannoaa/exception_handling Exception handling commit 4bd0e20300cc2a79e79433b2ec8cdb15c8f01c9e Author: Kate Friedman Date: Thu Feb 6 11:55:31 2020 -0500 Update README.md commit d9ea1acab54f65a987b32d56587dfd1b6bcd037c Author: Kate.Friedman Date: Thu Feb 6 16:03:11 2020 +0000 Issue #3 - reduce hashes down to minimum 8 characters commit bdbecaa7220f2462cc75e802570845809ebcfc75 Author: Lin.Gan Date: Wed Jan 29 15:15:52 2020 +0000 Display exception handling message for individual package with location of the log file commit b64fd5ff43f88bd5f2d27b0a16fb803eac8aff8c Merge: cf008631 3ed9267b Author: kate.friedman Date: Tue Jan 28 15:24:37 2020 +0000 Merge branch 'develop' into feature/manage_externals commit cf0086311daaf62ee33df010946d0a0ddc5bc400 Author: kate.friedman Date: Tue Jan 28 15:23:14 2020 +0000 Issue #3 - remove copy of manage_externals under util and add README.md file commit c12e87987113fa6f4b543bc0dae61d4259703c03 Author: Lin.Gan Date: Mon Jan 27 19:38:19 2020 +0000 Implement exception handling in build_all script commit bfc7bb0b237d4cf4240551aa8b9c5d025724ac16 Author: Kate.Friedman Date: Mon Jan 27 19:06:17 2020 +0000 Issue #3 - initial add of manage_externals and needed Externals.cfg. Also added .gitignore file and removed scripts/files associated with no-longer-used prod_util and grid_util builds. commit 4d5713d3983c6cc6a8e497e892760752e09f15a0 Author: Lin.Gan Date: Fri Jan 24 15:51:28 2020 +0000 Testing github commit commit 786806f3cd5d858615f3f74dec78891a2189ee79 Author: Mallory Row Date: Fri Jan 24 15:04:16 2020 +0000 Missed file format updates in a few places in config.metp commit d0a3b53c8117676c351c50287d4583951c94d42c Author: Lin.Gan Date: Fri Jan 24 14:30:29 2020 +0000 init commit for exception handling branch commit c11dfef0f7fb8da2866e6a022ac0ff60044766a7 Author: Mallory Row Date: Fri Jan 24 14:07:29 2020 +0000 Update EMC_verif-global tag to verif_global_v1.4.1 commit 0ea809c208ce606c957eed4d346a3828d8186010 Author: Mallory Row Date: Thu Jan 23 13:29:56 2020 +0000 Update file format variable in config.metp of online archive files commit c0d7179f34837e40db9ccb1b941ad9f312283a6e Author: Mallory Row Date: Tue Jan 21 16:37:16 2020 +0000 Add updated env machine files for gfsmetp commit 82e690717d72c7b021c637270108f4bacfb6816d Author: Mallory Row Date: Tue Jan 21 16:29:23 2020 +0000 Update config.resources for gfsmetp commit 72e8adf1c8a8859786cbbcf1b976640d73c5c867 Author: Mallory Row Date: Tue Jan 21 16:19:31 2020 +0000 Update EMC_verif-global tag checkout to 1.4.0 commit 6872f79f3f9052377ff863da1bbac482548ee0ce Author: Mallory Row Date: Tue Jan 21 16:14:25 2020 +0000 Add rocoto METplus job script commit 9c94156670bd810561bd2a699648afb946511ea9 Author: Mallory Row Date: Tue Jan 21 16:09:13 2020 +0000 Changes to setup_workflow.py for gfsmetp metatask commit 3ed9267b2f540694e957ee33a746f00857a5a1a2 Author: kate.friedman Date: Tue Jan 14 19:32:36 2020 +0000 Issue #10 - mid-year update to bufr station list (develop) commit 1915aa921dfe2ef17799599e5a3084547caa3ca2 Author: kate.friedman Date: Fri Jan 10 18:36:32 2020 +0000 Issue #8 - pulled in config.metp and modifications to two setup scripts commit 67dae40974485e7ffef4713209142301e5e4ba9e Merge: f78eb1b4 091f4ba1 Author: kate.friedman Date: Wed Jan 8 20:15:45 2020 +0000 Merge branch 'develop' into feature/remove_theia commit f78eb1b4228927a0937b5de2098ba2cece6a4aca Author: kate.friedman Date: Wed Jan 8 20:13:08 2020 +0000 Issue #4 - removed references to Theia and Theia scripts commit 091f4ba1d04f1600e352f2fe090ae9af0880c95d Author: kate.friedman Date: Wed Jan 8 19:37:45 2020 +0000 Issue #7 - missed update to gdas transfer file from GFSv15.2.5 updates commit 3fd4bcfa0bb5e133774b5ad64aaf45b42074c05c Author: kate.friedman Date: Tue Dec 17 19:12:28 2019 +0000 GitHub Issue #2 - GFSv15.2.6 obsproc version update, earc bug fix, and tracker path update commit 530795269fd678f7ee6c7354d3fe674b8c46a458 Author: Kate.Friedman Date: Wed Dec 11 20:47:44 2019 +0000 HOTFIX - VLab Issue #72346 - fix to rocoto_viewer on Hera commit def5de038ba0e2b09af6f9be20e4b21cc09cefa0 Author: kate.friedman Date: Mon Mar 30 19:11:59 2020 +0000 Issue #46 - update prod_envir to v1.1.0 throughout commit cbe3b00dc72a31c9f6c951333738b41b2682396a Author: kate.friedman Date: Mon Mar 30 17:51:46 2020 +0000 Issue #46 - updates to prod_util module on Cray and syndat paths throughout commit adcfca84a7a688a02acf5a885e88836a54ea1f52 Author: Hang-Lei-NOAA <44901908+Hang-Lei-NOAA@users.noreply.github.com> Date: Mon Mar 16 12:27:21 2020 -0400 Update checkout.sh gsi git add DA_GFS_v15.3 commit 7eb0e820580dd5381ced7f745b3c24e85ef6218b Merge: 8b177b687 9939d8b4a Author: Kate Friedman Date: Mon Mar 16 09:35:22 2020 -0400 Merge pull request #35 from NOAA-EMC/feature/operations_gda Issue #34 - update GDA DMPDIR paths and associated scripts. Issue #36 - Update DA tag in operations branch for v15.2.9. commit 9939d8b4aa123dc85f8277b6f7c37e3b1400f882 Author: kate.friedman Date: Mon Mar 16 13:11:08 2020 +0000 Issue #36 - update DA tag for v15.2.9 commit 338957e3a2fbb344c799caf2910af8dd5c47ab4e Author: kate.friedman Date: Fri Mar 13 17:11:04 2020 +0000 Issue #34 - update GDA DMPDIR paths and associated scripts commit 8b177b687ba0e263ba1fe08b2a44c5e398003c29 Author: kate.friedman Date: Fri Feb 28 15:37:15 2020 +0000 Issue #11 - update obsproc_global version to v3.2.5 commit 6397f5efe5aca1c071d0600f624fa5bdfe491d3c Author: Judy.K.Henderson Date: Wed Feb 5 19:26:37 2020 +0000 - added links for Thompson lookup tables - corrected setting of gPDY and gcyc in forecast_predet.sh script commit 4a8ac824b95fc500ccf85d0ca5b8b77796eade52 Author: kate.friedman Date: Fri Jan 17 21:04:04 2020 +0000 Issue #11 - update obsproc_global version to v3.2.4 commit 5815c4ddd07d82e62d713ef8f8fe7d4bdbbb6a4a Author: Judy.K.Henderson Date: Fri Jan 17 00:21:14 2020 +0000 updated forecast configuration commit c884ab9de4579abe085315490cfa68fdc0ea365b Author: Judy.K.Henderson Date: Thu Jan 16 00:33:09 2020 +0000 - new exglobal_fcst_nemsfv3gfs.sh script (merged from coupled_crow) - moved module commands rom aeroic.sh to module_base.hera - copy namelist to output directory commit e39382806915083d9c17126ab585c8d58117d95d Author: kate.friedman Date: Tue Jan 14 19:21:16 2020 +0000 Issue #10 - mid-year update to bufr station list commit 2ab0ed07b053b8fabde216877cfef64f1ad2d9f5 Author: Judy.K.Henderson Date: Mon Jan 13 20:59:25 2020 +0000 - make default CCPP suite GSD_v0 - define convective options based on CCPP_SUITE commit 943cfdc07a10358d634648bead46b1caf5f652b5 Author: Judy.K.Henderson Date: Mon Jan 13 20:34:23 2020 +0000 - added changes for creating one config.fcst and config.base.emc.dyn file (for now, still need to define CCPP_SUITE in config.base) - made config.base.nco.static executable - removed fcst and base.emc.dyn files for v15 - made aeroic.sh Korn shell script commit 80e7ea69634d8122e1e6084371e1130dda4e90c7 Author: Judy.K.Henderson Date: Mon Jan 13 19:57:21 2020 +0000 corrected syntax for ttendlim variable commit 598ac7c68e7ea064d8edca9d0966e38f4ab6126d Author: Judy.K.Henderson Date: Mon Jan 13 19:28:42 2020 +0000 * add Lin Gan's scripts commit 76fa32f8895119805fbe670924bb850d8938b485 Author: kate.friedman Date: Wed Jan 8 19:40:44 2020 +0000 Issue #7 - update to EMC_post gtg tag for GFSv15.2.7 commit e6f52d73b3f68dac81117402ff1a8219a23ef287 Author: kate.friedman Date: Wed Jan 8 19:28:47 2020 +0000 Issue #7 - missed change from v15.2.5 to gdas transfer parm file commit b1dcb4fcaf68bfe1e491e3d79bba6fe830509746 Author: kate.friedman Date: Tue Dec 17 15:51:31 2019 +0000 GitHub Issue #2 - GFSv15.2.6 changes commit 04409166f0bb5f3f02d3d61adb2902581ddedddf Author: Judy.K.Henderson Date: Wed Dec 11 01:10:42 2019 +0000 - added aeroic task dependency for gfsfcst - added new python script without aeroic task - updated testemc.sh to use python script without aeroic task commit 1e64f8450a0c8d16775948ae58879fad0ae03bda Merge: 97e9a3bee e4b6b7d35 Author: Judy.K.Henderson Date: Tue Dec 10 23:33:32 2019 +0000 Merge branch 'develop' into gmtb_ccpp_hera modified: jobs/JGFS_CYCLONE_TRACKER modified: jobs/rocoto/getic.sh modified: parm/config/config.resources modified: parm/config/config.vrfy modified: ush/syndat_qctropcy.sh commit 97e9a3beee7a042a5176bf067e480a55c84961fd Author: Judy.K.Henderson Date: Tue Dec 10 23:03:50 2019 +0000 - adding changes to correct setting of ictype when generating FV3 ICs commit 5fcb12ae25a694090b67286bdb517474c27a8c07 Author: Judy.K.Henderson Date: Mon Dec 9 16:52:52 2019 +0000 -- modify checkout.sh to add new directory, sorc/aeroconv commit 6b5a136ed7e481233f33aec33dc79365d9b25acd Author: Judy.K.Henderson Date: Thu Dec 5 17:24:00 2019 +0000 add 'git submodule sync' command to checkout.sh for fv3gfs_ccpp.fd commit 2d555e0905da47f2be5b6aa471237def5dc75b5c Author: kate.friedman Date: Wed Dec 4 20:03:19 2019 +0000 VLab Issue #71995 - GFSv15.2.5 commit 83533877c5b6dc341879c9c25fd516ff07f92c90 Author: Judy.K.Henderson Date: Wed Dec 4 19:01:30 2019 +0000 - define satmedmf earlier in config.fcst for MYNN - add new experiment setup scripts commit 130d35445ffea6e323461441d7f2aee3fc19fc8b Author: Judy.K.Henderson Date: Wed Dec 4 18:51:58 2019 +0000 updates for running GDFL mp with CCPP commit de706fff189032c5dcfd6ce41761c53a0fc39169 Author: Judy.K.Henderson Date: Wed Dec 4 01:03:34 2019 +0000 for now, comment out top 2 lines in diag tables for GSD; otherwise, get invalid file format error commit 432d28a7c8b491bc0f5617725d0770af0fada9ad Author: Judy.K.Henderson Date: Wed Dec 4 00:47:58 2019 +0000 merge in changes from develop branch -- GFSv15.2.3 ncep_post tag update -- GFSv15.2.4 change commit ae98aab7cc233a2f95c72b6ceafbb9b6043fc44a Author: Judy.K.Henderson Date: Wed Dec 4 00:19:28 2019 +0000 set RUCLSM with other land surface model options commit 2c37fefa4dc309588d2c92bfe5ffeaaa58e19942 Author: Judy.K.Henderson Date: Tue Dec 3 23:38:42 2019 +0000 - updated aeroic.sh for hera - temporary fix for fv3ic.sh for now to create FV3 ICs using FV3GFS nemsio files - moved convective options to config.fcst* files - updated links for diag and field tables for GSD - add CCPP executable to link_fv3gfs.sh commit 8a3cbc88fe64e6a36f123eb3299ecb257c939e47 Author: Judy.K.Henderson Date: Tue Dec 3 01:05:30 2019 +0000 updated forecast configuration files commit c2de8c3c65c6a781e1703962e5863e8bae5c0e49 Author: Judy.K.Henderson Date: Mon Dec 2 23:27:07 2019 +0000 updated config.base.emc.dyn files commit 099497054749c805cd6831c5ee8db333d9cd4acb Author: Judy.K.Henderson Date: Mon Dec 2 23:07:45 2019 +0000 update build_fv3.sh for compiling CCPP version commit fea6dd857b707f00e98b320d056583169748105b Author: Judy.K.Henderson Date: Mon Dec 2 22:00:00 2019 +0000 add specific version for dtc/develop branch in checkout.sh commit 4327dd1d1a4aa4e265dee406e47ea13b4f71379c Author: Judy.K.Henderson Date: Mon Dec 2 21:38:43 2019 +0000 corrected directory name and added logfile in checkout.sh commit 4e0e83bae82a2ba3d4962892cc5dd91308f837ac Author: kate.friedman Date: Mon Dec 2 21:29:20 2019 +0000 VLab Issue #71881 - GFSv15.2.4 changes commit 538ed2178af8ce8ffd626eae8b3e2c15d577cde5 Author: Judy.K.Henderson Date: Mon Dec 2 21:04:53 2019 +0000 update checkout.sh to use dtc/develop branch from NCAR:ufs-weather-model repository commit 86109d8875c81d7f7a5c04743f644a3509a02cc7 Merge: 6746e2d5b 6afa503dd Author: Judy.K.Henderson Date: Mon Dec 2 19:11:21 2019 +0000 Merge branch 'port2hera' into gmtb_ccpp_hera commit 90b50694567e02bf640899eec1f640da567c3de5 Author: kate.friedman Date: Mon Dec 2 18:09:14 2019 +0000 VLab Issue #71878 - GFSv15.2.3 ncep_post_gtg tag update commit 6afa503ddde3b4b8c4171d55ba26327ab727a219 Author: Kate.Friedman Date: Mon Dec 2 15:59:21 2019 +0000 VLab Issue #67188 - fix to env/WCOSS_C.env commit b1b9b80071cb7d14c1d3ae60066b5ae87e35fcea Author: Kate.Friedman Date: Mon Dec 2 15:51:10 2019 +0000 VLab Issue #67188 - updated ProdGSI revision and resource settings commit 6746e2d5b0293bc54f0487aac7f9bff3d8736b95 Author: Judy.K.Henderson Date: Tue Nov 26 20:24:23 2019 +0000 corrected version of FV3 to check out (nemsfv3_gfsv15.2.1) commit 2af0cfea83b72338588a5ae426fc647497ad4090 Merge: cc8a5b97c d2f877f81 Author: Judy.K.Henderson Date: Tue Nov 26 19:04:57 2019 +0000 Merge branch 'develop' into gmtb_ccpp d2f877f - Thu Nov 14 19:34:51 2019 commit cc8a5b97c3464a8a59c3b53b78a70b4fce06cff2 Author: Judy.K.Henderson Date: Tue Nov 26 18:36:17 2019 +0000 - rename *GSDsuite files to original names (config.base.emc.dyn, config.fcst, exglobal_fcst_nemsfv3gfs.sh) - moved convective options from config.fcst to config.base - created separate _v15 files commit bdb5df57b272e5c3805a17e024afeef640821668 Author: Judy.K.Henderson Date: Wed Nov 20 17:47:17 2019 +0000 add link so fv3gfs.fd points to fv3gfs_ccpp.fd checkout commit 8caefc93292b4a07f89a4d6771f744971c8b574c Author: Judy.K.Henderson Date: Wed Nov 20 17:45:26 2019 +0000 added CCPP-FV3 checkout to checkout.sh commit 59d2bd90a77a1b802991316b284ea63b0ba1b714 Author: Kate.Friedman Date: Mon Nov 18 19:00:13 2019 +0000 VLab Issue #67188 - updated GSI checkout revision and turned on wafs build for all machines commit dd46a855df388ee3b9306df5921300b9c2710e3a Merge: b295567ef d2f877f81 Author: Kate.Friedman Date: Mon Nov 18 15:01:09 2019 +0000 VLab Issue #67188 - sync merge with develop branch after v15.2 commits commit 8eff68539f782439b6dde8ce58c7e7e4845f41f1 Author: kate.friedman Date: Thu Nov 14 19:31:08 2019 +0000 VLab Issue #71238 - GFSv15.2.2 changes commit e82ed9af2d6f5c0ae95c02ff29009962a1077d66 Author: kate.friedman Date: Wed Nov 6 17:08:36 2019 +0000 VLab Issue #66132 - GFS v15.2.1 changes commit 193100e641a4ad80b8299e33a1dd39098414679f Author: kate.friedman Date: Wed Aug 28 15:48:31 2019 +0000 HOTFIX - VLab Issue #67884 - fix syntax error in workflow_utils.py for non-slurm QUEUE_ARCH firstcyc setting commit b303bca1a935ffc744dd15c8e86e650711f3e0fe Author: kate.friedman Date: Tue Aug 27 19:45:07 2019 +0000 VLab Issue #67744 - GFSv15.1.4 nwprod changes commit 584a241d387ede9537de5d96773e174a9c2f76d1 Author: Kate.Friedman Date: Mon Aug 12 19:27:56 2019 +0000 Theia bug fixes - VLab Issue #66187 commit 7cd7634f7110c5f5197c77541094074b1e3b6e22 Author: kate.friedman Date: Fri Aug 9 13:00:26 2019 +0000 HOTFIX - VLab Issue #67072 - fixing NEMSfv3gfs clone command commit e1dca1bc2d6b1a278067a73c16f1a6e10761d465 Author: Judy.K.Henderson Date: Wed Aug 7 21:28:25 2019 +0000 updated fcst configuration files` commit e2b1933dac989334aa2e9549a541b3648d911dc4 Author: Judy.K.Henderson Date: Tue Jul 23 18:30:58 2019 +0000 - updated lsm=3 for RUC LSM in config.fcst_GSDsuite - changed FHCYCLE=0 for RUC LSM in config.base.emc.dyn_GSDsuite commit dd34b433bf8e50bfdfcfe5d855ea368328613395 Author: kate.friedman Date: Tue Jul 23 15:26:49 2019 +0000 VLab Issue #66290 - GFSv15.1.3 changes commit e5d8caf8b71da807c409eaa55b7f3fa00234ed33 Author: Judy.K.Henderson Date: Mon Jul 22 16:34:37 2019 +0000 - add changes needed to run CCPP version of NEMSFV3GFS for GFDL MP or GSDSuite (GF, MYNN, RUC LSM, Thompson MP) -- change compilation options in build_fv3.sh (assumes CCPP suites suite_FV3_GFS_v15.xml and suite_FV3GFS_GSD_v0.xml) -- change executable name to global_fvgfs_ccpp.x -- add convective variables, imfdeepcnv and imfshalcnv, to config.base.emc.dyn -- add ccpp_suite variable to atmos_model_nml portion of namelist -- created new exglobal forecast scripts with namelist options -- define suite definition file (CCPP_SUITE) in config.fcst -- add new aeroic task to workflow for Thompson microphysics -- modify checkout.sh to add new directory, sorc/aeroconv (read README.md to extract files) -- change nstf_name in namelist from 2,0,0,0,0 to 2,1,1,0,5 (config.nsst settings) commit 4ba0ff91557370a64b00c56e132a03e58f546459 Author: Judy.K.Henderson Date: Mon Jul 22 13:40:19 2019 +0000 update to 19Jul2019 develop branch Squashed commit of the following: commit f0c7afe3eb53bc9998d9bcc905f849ebe4b83549 Author: kate.friedman Date: Tue Jul 16 18:23:31 2019 +0000 VLab Issues #66082 - GFSv15.1.2 nwprod changes commit 1652d227586e07fd9b68869d875278d5fea3043e Author: kate.friedman Date: Mon Jul 8 17:22:26 2019 +0000 VLab Issue #65754 - merge final GFSv15.1.1 into master commit 6ca55564f2c1d2fe1f9dbb08f7be34faae0e9cb9 Author: kate.friedman Date: Tue Jun 11 13:24:26 2019 +0000 VLab Issue #64845 - update UFS_utils to v1.0.0 tag commit ad03fe5a48273f1f2490c2df4c8dabc0f5ed9cbb Author: kate.friedman Date: Mon Jun 10 16:00:47 2019 +0000 VLab issue #64274 - missing ozinfo files in checkout.sh added commit 18341fcfc2372efa821249d885187219d438049e Author: Lin.Gan Date: Fri Jun 7 14:20:35 2019 +0000 Patch missing lowres fix file, disable vrfy jobs from first helf cycle and clean up extra files commit d919db638ac4f83604648d571ef36e4798928561 Author: lin.gan Date: Wed May 22 14:33:59 2019 +0000 VLab Issue #64141 Merge ufs_utils into master commit 2acb5d3104359cd157bb7c14cf81c9187fd5a84a Author: kate.friedman Date: Wed May 15 15:42:03 2019 +0000 VLab Issue #58894 - SLURM updates for free-forecast mode commit 475967bcfdc3698a5b0dde7c17166a4939760592 Author: Kate.Friedman Date: Fri May 10 19:36:13 2019 +0000 VLab Issue #58894 - changes for SLURM on R&D machines commit 8619f4794a277a40ffc227a5254d084870584cf8 Author: fanglin.yang Date: Tue Apr 23 19:29:54 2019 +0000 update link_fv3gfs.sh to add correct directory paths for making soft links of post and wafs source directories commit 839a8164143dc1a04bb1f47b2107f29ef0905a3e Author: fanglin.yang Date: Mon Apr 22 21:45:54 2019 +0000 script update per NCO's request; add track files to archive list commit 8250561827dee4dea7a7612b1a8d7f582b3053ec Merge: a1af4f8 0749708 Author: fanglin.yang Date: Wed Apr 17 00:01:27 2019 -0400 Merge branch 'master' of gerrit:global-workflow commit a1af4f88946e610a4cd92b268bf01c44e99c80f2 Author: fanglin.yang Date: Wed Apr 17 00:00:51 2019 -0400 redefine SIGLEVEL in ush/global_chgres_driver.sh to allow it to be sent in from parent driver script commit 0749708b6ffe33b5c1ebc75a178894e6c23bd512 Author: George Gayno Date: Tue Apr 16 20:01:29 2019 +0000 Vlab issue #40471. Add new parallel version of chgres based on ESMF regridding. Contains the same surface pressure adjustment, vertical interpolation and surface initialization as the serial version of chgres. Can ingest tiled FV3 data, FV3 nemsio data, GFS nemsio data, GFS sigio/sfcio data. Squashed commit of the following: commit c656e6279e2c5d715f3403f47a8be3398e3932a7 Merge: b400492 04f0e75 Author: George Gayno Date: Tue Apr 16 19:57:42 2019 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit b400492d4910154a60e73d681b920956502b6a2e Author: George Gayno Date: Tue Apr 16 19:56:51 2019 +0000 chgres_cube branch: This commit references #40471. Move chgres_cube program to the sorc directory under chgres_cube.fd. Change-Id: I49f02aca17e79d262fd353f66293f3ebe4644b8b commit cc1c409c2aae9347546e15e1b40b0af1ed6ab61f Author: George Gayno Date: Wed Apr 3 13:30:46 2019 +0000 chgres_cube branch: This commit references #40471. Add threads to routine VINTG. Add OMP_STACKSIZE variable to Cray run script. Change-Id: Ibb3d10256d367c7a4520b0feeeba0e9d1a207141 commit 8fe3c48409c437be71f4fb4bd87e0b09f70c53b5 Author: George Gayno Date: Tue Apr 2 17:37:18 2019 +0000 chgres_cube branch: This commit references #40471. Fix bug in search routine by checking original field (stored in field_save) instead of the adjusted field. Add sea ice default logic from original serial version of chgres. Both updates change results. Add threading to search routine. Change-Id: I46278241828a9020851530594d75e3362712353f commit 0ba7dcff2c14128a0792c30a5585a3d5da0754f5 Author: George Gayno Date: Thu Mar 7 18:42:25 2019 +0000 chgres_cube branch: This commit references #40471. Update Theia config files and run scripts for new paths. Change-Id: Ic244b4eabff9ac5c4ebe6e23f6e7845af65799e2 commit ccc1c1e541d27c4334f57ce731c92009b25fefb3 Author: George Gayno Date: Thu Mar 7 18:35:05 2019 +0000 chgres_cube branch: This commit references #40471. Add new Theia config file for running with spectral gfs sigio/sfcio files. Change-Id: Ice67f73de40b82943ed6469f7a4f7f7477d669ff commit 614113255549be1c9abfc6acc5e8e0cb04dd1201 Author: George Gayno Date: Thu Mar 7 14:40:12 2019 +0000 chgres_cube branch: This commit references #40471. Updates for compiling and running on Cray. Remove compilation option for WCOSS phase 1/2. Machine will be retired this year. Change-Id: I7a9d2c0e5c6e6b63908798eda829c443f80c1648 commit 3e02203853376d1f0504ad618934b8c0adebc660 Author: George Gayno Date: Wed Mar 6 21:31:08 2019 +0000 chgres_cube branch: This commit references #40471. Update paths in Dell config files. Change-Id: I6b82400ec53cdce2602c08a59059848b9adc8dd4 commit 595919780c34ae1f0798b62131be37cab26204ea Author: George Gayno Date: Wed Mar 6 16:33:01 2019 +0000 chgres_cube branch: This commit references #40471. Numerous updates so program can ingest/process spectral gfs data in the 'old' sigio/sfcio format. Correct units error when reading snow depth from fv3 tiled warm restart files and fv3 tiled history files. Program expects snow depth in millimeters. Change-Id: I332468857c20e48c645b038469db3848fafd3a37 commit 778af6b5eae7c728dd4598736bf88ac43f98cddd Author: George Gayno Date: Wed Feb 20 13:26:21 2019 +0000 Revert "chgres_cube for warm restart" This reverts commit 00c978c1c119850ec7de6d4dcc3426567717ecea. commit 2f920bd440216524adc211b1850784b6ab0293ee Merge: 257f8aa 00c978c Author: Scott Date: Tue Feb 19 20:51:52 2019 +0000 Merge branch 'chgres_cube_warm_restart' into chgres_cube commit 00c978c1c119850ec7de6d4dcc3426567717ecea Author: Scott Date: Tue Feb 19 20:49:39 2019 +0000 chgres_cube for warm restart commit 257f8aa7e6386f860db5d74697fbd9daf0e2e67f Author: George Gayno Date: Wed Feb 13 15:56:14 2019 +0000 chgres_cube branch: This commit references #40471. When using fv3 global gaussian nemsio files, convert snow depth to millimeters and roughness length to centimeters to be consistent with the fv3 tiled history and restart files. Change-Id: I721f8fd38f0dbe528883af1cd3d62808345930d0 commit d8256f42759b509a05e685cb81dfdba73eb0d939 Author: George Gayno Date: Wed Feb 13 15:09:58 2019 +0000 chgres_cube branch: This commit references #40471. New option to process spectral gfs gaussian nemsio files. Change-Id: Ie387df4daa40c770d6adbd2fcc46e8ada3889d49 commit 65e5949113e79c9c875ffcce3d9b8e6f3038dc26 Author: George Gayno Date: Mon Feb 11 18:51:47 2019 +0000 chgres_cube branch: This commit references #40471. Add script for running on Theia using slurm. Change-Id: I66ed45f8389cd4887db763317186c773aaba95e4 commit 448d6bd1b9378bfd9d01e59db6df38913d1ab1c9 Author: George Gayno Date: Fri Feb 8 20:02:43 2019 +0000 chgres_cube branch: This commit references #40471. static_data.F90 - Updates for new gridgen_sfc file naming convention. Change-Id: I386f9a0f7ae2bc443634420b64abd8a7017d1b27 commit 0d76a9d7c1c3dfda78c5e4269407dab08a0ec697 Merge: ba27618 cc32f99 Author: George Gayno Date: Fri Jan 25 19:15:35 2019 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit ba276186b9113cb0e3adbe71475300c4c1738d9a Author: George Gayno Date: Fri Nov 16 22:08:02 2018 +0000 chgres_cube branch: This commit references #40471. Update theia config files for tracers. Change-Id: Ibcafbc82dc4c6fff58b56cfa163d101abd66cdb5 commit bc7b201febc3613f0c4e5c394f54117147b0f768 Author: George Gayno Date: Fri Nov 16 21:14:25 2018 +0000 chgres_cube branch: This commit references #40471. Update Dell config files to include tracers. Change-Id: Ie30bb81dd10811e16d39e9e919b1c32590e20b8e commit 3375b682269240d05ede7c568d12ac5e13d2d4a3 Author: George Gayno Date: Fri Nov 16 19:39:47 2018 +0000 chgres_cube branch: This commit references #40471. Add namelist option for users to select which tracers to process. Update cray config files accordingly. Change-Id: Ibeffdb44ab550ab3f5514bca2153a35bb5dc9051 commit d9d4408e4949871de57a4b956312b55c64c1afd7 Author: George Gayno Date: Fri Nov 16 18:10:56 2018 +0000 chgres_cube branch: This commit references #40471. Numerous updates so the program can process a user-selected set of tracers at run time. Change-Id: I8679b5a327f457fb745927dfc7ca11926a2258ce commit 9b9c92d87aec005c23d22a1b416cf86d3bd9d297 Author: George Gayno Date: Tue Oct 30 17:43:16 2018 +0000 chgres_cube branch: This commit references #40471. Minor fix to two error messages. Change-Id: I423986d9ab7f62c4da79850d3352c5f0b2190fb2 commit 0b889ad6328ef0beb7a83feb57563e8e9856b895 Author: George Gayno Date: Tue Oct 30 12:26:30 2018 +0000 chgres_cube branch: This commit references #40471. Remove hardwired atm/surface files names in routine "define_input_grid_gaussian". Improve error handling in that routine. Change-Id: I18d894792a44ae4b101891d7155a397b8f5959cd commit 092bc27ffdd37562ccd91372cfaff91c79f5794a Author: George Gayno Date: Thu Oct 25 15:00:19 2018 +0000 chgres_cube branch: This commit references #40471. Horizontally interpolate surface pressure assuming a standard lapse rate (per recommentation of Phil Pegion). This reduces model initialization shock near steep terrain. Change-Id: I9748acde579605a76fc387124c11c31c7dfa4474 commit eebdf594c1792330fde03239d068accd72576df6 Author: George Gayno Date: Tue Oct 9 20:16:20 2018 +0000 chgres_cube branch: This commit references #40471. Standardize error handling. Change-Id: I861798e99b3d1c7c116e184dc04e3fc782de8347 commit d07ec3468703143b6ca1880cec8b9d78dfe34dba Author: George Gayno Date: Fri Oct 5 17:14:15 2018 +0000 chgres_cube branch: This commit references #40471. Add a basic prolog to the top of each module. Change-Id: I47741d78197c2f8f8153ef6256235bae896981b6 commit 780029c6a6d0d3ec628e6d85cceb480840b2968b Author: George Gayno Date: Thu Oct 4 16:33:46 2018 +0000 chgres_cube branch: This commit references #40471. Cleanup of variable declarations. General cleanup. Change-Id: I978c4d6162aa1eaad7efd8523518bc05f394e690 commit 9dbeb5a4bf20d7580717b41bf17d875ff27dd18c Author: George Gayno Date: Wed Oct 3 13:48:42 2018 +0000 chgres_cube branch: This commit references #40471. Add global attribute to atmospheric and boundary files that specifies which input data source was used. Update theia config files to explictly define all input source files. Change-Id: Ifdcc176db26c7070a1ff550d2aed78b2fdde096e commit 9626a74d9dfe55a9df514eff83121a028963df3f Author: George Gayno Date: Tue Oct 2 18:11:48 2018 +0000 chgres_cube branch: This commit references #40471. Remove hard-wired sfc/nsst input file names. Update config files for cray accordingly. Change-Id: I5bbac6304f375635d9e5ff5620a883917c06eb5c commit bfd4c4e4e04aa19b5d6eb1a163231def60c26e65 Author: George Gayno Date: Tue Oct 2 16:56:03 2018 +0000 chgres_cube branch: This commit references #40471. Remove hard-wired input grid atmospheric file names. Update Dell config files accordingly. Change-Id: I6f6cbec751acea32d516e0a67f4dafe97cd99c2c commit 1727ae775e2da4c3de1a1fff2a453dcd30e4273d Author: George Gayno Date: Fri Sep 28 19:28:52 2018 +0000 chgres_cube branch: This commit references #40471. Add comments to input_data.F90 Change-Id: Ic22435948bcdca68840aad989c3b942948880525 commit 3eb8afaf720af694793e3fb25eb062afb7da6017 Author: George Gayno Date: Fri Sep 28 13:57:20 2018 +0000 chgres_cube branch: This commit referenes #40471. Updates for compiling and running on Cray. Point to beta v8.0.0 of the esmf library. Change-Id: I2ec308278481c9fa9758af3db8d7ef031b779644 commit 58e0e214e4be5d8d40a3cc6a3e813fe80f8f4aeb Author: George Gayno Date: Thu Sep 27 19:45:32 2018 +0000 chgres_cube branch: This commit references #40471. Updates for compiling on Dell using a local copy of beta v8.0.0 of esmf. Change-Id: I21c367827f5a8788db8de635ea283f536a3fbdd0 commit 0631e3830b65854229fac8dccc148b13279cbac8 Author: George Gayno Date: Thu Sep 27 15:06:19 2018 +0000 chgres_cube branch: This commit references #40471. Update Theia build to use esmf beta v8.0.0. That version corrects a problem with FieldScatter and FieldGather for large array sizes (such as 3-d t1534 fields). Add extrapolation method NEAREST_STOD to the atmospheric call to RegridStore. That eliminates problems with unmapped points encountered for certain grid configurations (Ex: T1543 gaussian to C1152). New routine "read_input_atm_gaussian_file" for reading fv3gfs gaussian history files in nemsio format. Remove obsolete namelist entries from all run config files. Change-Id: Ibf12ec0102e621cf94761548075f982d765c5f6e commit 07160a501362413ca83698bedcba97c6e9a642bd Author: George Gayno Date: Tue Sep 25 17:33:24 2018 +0000 chgres_cube branch: This commit references #40471. Replace logical 'restart_file' - which determined whether the program was to ingest tiled history or restart files - with 'input_type'. The latter is set as 'history'/'restart'/'gaussian' for tiled history/tiled restart/gaussian history files. Add routine (read_input_nst_gausian_file) to read nst data from gaussian history file to input_data.F90. Change-Id: I577ba3f319d2c0ea1d99598cf55cc8147bcadb97 commit 7cf64d52594e8e30338cd1f8bae424b81289125a Author: George Gayno Date: Mon Sep 24 13:32:47 2018 +0000 chgres_cube branch: This commit references #40471. Updates for running on Cray. Change-Id: Ib4e42021fd31619c4d60064cf0320cfdbd587414 commit 68be11f25c06eab4eb70f0573bddb67a8601b0fa Author: George Gayno Date: Mon Sep 24 12:40:57 2018 +0000 chgres_cube branch: This commit references #40471. Move read of terrain from model_grid.F90 to input_data.F90. This allows the program to use the terrain from the atmospheric files when processing the atmospheric fields. This terrain should be more consistent with the atm fields than what is in the orog files. This change will also improve flexibility as the number of input data sources increases. For example, the gaussian data has no orog files, so terrain must be read in from the restart files. Change-Id: Iff532b85096ec48afd3ca7e1658ab66c86737dc5 commit a3c5fc0edabe9d02ce3b69d22c136bb71ca44e0f Author: George Gayno Date: Fri Sep 21 13:23:31 2018 +0000 chgres_cube branch: This commit references #40471. input_data.F90 - Place 2-d to 3-d wind conversion in its own routine. Change-Id: Iad7c8460fbcbc9e9d4cbbd2c5529331c9604ebda commit d8b8c675e1e9ab386eb7cc5058e2f7e6f368304b Author: George Gayno Date: Fri Sep 21 12:16:01 2018 +0000 chgres_cube branch: This commit references #40471. Change variable name 'levp_input' to 'levp1_input'. Change-Id: Iaa91b691d8747b6906ecd10ddb0f61d40855d5e7 commit d9382ae01c4b0289047c6390a1c234d6ef8fb7e1 Author: George Gayno Date: Tue Sep 18 17:51:43 2018 +0000 chgres_cube branch: This commit references #40471. Logic to process surface fields from an fv3 gaussian nemsio file. Change-Id: I486960805c2c8dd4020438aba11ed8504fac3739 commit 253834853c3c5e0e76257c9402135bfe0de64c9f Author: George Gayno Date: Fri Sep 14 19:31:02 2018 +0000 chgres_cube branch: This commit references #40471. Add some logic to ingest fv3gfs gaussian nemsio files. Currently, only tiled netcdf files may be ingested. Change-Id: Ibc8606fcb63f9c955e636e0200bc8b634155b559 commit 754e2f8161b60a0b7c8bea1f3c58a07afbbcc65d Author: George Gayno Date: Fri Sep 7 20:40:48 2018 +0000 chgres_cube branch: This commit references #40471. Add script and sample configuration files for running on Dell. Change-Id: I6999f9a9ad43b4d62d72e181c431e85dbd48899c commit fa7d51a9795f0e85ece97655434233b2f3433ac0 Author: George Gayno Date: Fri Sep 7 14:48:24 2018 +0000 chgres_cube branch: This commit references #40471. Update regional boundary condition logic to include a blending halo located within the computational grid. Halo indices are now defined with respect to the computation grid instead of the whole grid (computational plus lateral halo). Change-Id: I4429659172403c135c16df530e592a80e7912eab commit 94d1f288ab2994f851862338e06625c96aaa915a Author: George Gayno Date: Tue Sep 4 13:48:36 2018 +0000 chgres_cube branch: This commit references #40471. Update atmospheric write routine to write each tile on its own mpi task. Previously, all tiles were written sequentially on task 0. Change-Id: Ica45f3320970c105f2cda42f1becd83a311f784e commit d18199b2bd07a22976fd04181cda179990a5bebd Author: George Gayno Date: Fri Aug 31 18:42:02 2018 +0000 chgres_cube branch: This commit references #40471. Remove all 'goto' statements. Change-Id: I3a66a5254df2d3e5f3cb6bf12f44d96ead3b9f96 commit 17863752b96a772ee5cd6bfd9c96b904a77f95f5 Author: George Gayno Date: Fri Aug 31 14:40:24 2018 +0000 chgres_cube branch: This commit references #40471. Read input history file tiles in parallel instead of sequentially. Change-Id: Ifa29876014fe516249c788d3f2f81f543ffda171 commit 9cba10d151de587b6b63644f77bf74b073cb16c8 Author: George Gayno Date: Thu Aug 30 20:22:06 2018 +0000 chgres_cube branch: This commit references #40471. Update routine "read_input_atm_restart_data" to read each tile on its own mpi task (or pet). Previously, each file was read sequentially on task 0. Tests on theia showed results do not change, and wall clock time is reduced. Change-Id: I30899db560be58586871dc886283f0766957bef3 commit 4a59accf411686b26128d93e34ad63d9892facff Author: George Gayno Date: Wed Aug 29 20:06:44 2018 +0000 chgres_cube branch: This commit references #40471. Add config files for running the following transforms on Theia: (1) C768 L64 to C768 L91; (2) C768 L64 to C1152 L91 Both transforms ran sucessfully. Remove some diagnostic print. Change-Id: I698d92a016010ad9bc01171ecfe015802275b2ee commit fd3736a88cf1913ce6f9896f734be819f354d9f3 Author: George Gayno Date: Wed Aug 15 15:27:16 2018 +0000 chgres_cube branch: This commit references #40471. Add option to read in a weight file for part of the atmospheric interpolation. If weight file not available, then FieldRegridStore is called as before. Using weight file reduces wall clock time slightly and does not change results. Change-Id: I956bb094315f723840c62a7ee3dd2faeadba70c1 commit f3bb2e3ed2d77e53c6da98c6241c62491316d88f Author: George Gayno Date: Tue Aug 14 18:39:15 2018 +0000 chgres_cube branch: This commit references #40471. Remove extra calls to FieldRegridStore. Results do not change. Wall clock time reduced slightly. Change-Id: Icc93054d844752c5299bdc64c4c117c291b86a09 commit fbb566f9143d1b3a686f351d95352d1de4a9489e Author: George Gayno Date: Mon Aug 6 20:28:20 2018 +0000 chgres_cube branch: This commit references #40471. Remove subroutine 'flip' and replace with F90 statements to reverse arrays in 'z' direction . The latter is much faster. Change-Id: I1a405cc48c7e1981c908e64c77e0d65e0e875caa commit 963246d6061c4dd49001cc226e9df082931b5037 Author: George Gayno Date: Fri Aug 3 20:12:02 2018 +0000 chgres_cube branch: This commit references #40471. Add two new tests for Theia. Change-Id: I2fbb5a33ca236bf289eb643b0d361b1fe46b3419 commit 339b732caad6aa3c19fc0c533799d90978b3b16c Author: George Gayno Date: Fri Jun 22 19:20:19 2018 +0000 chgres_cube branch: This commit references #40471. Update 'make.sh' to build on WCOSS Phase 1/2. Change-Id: I9f6e0fd0154c2874be61af85a8e6b16946f70704 commit cbbb9644a5ef56acecd2cfc03e805414e5e67035 Author: George Gayno Date: Wed Jun 20 20:14:32 2018 +0000 chgres_cube branch: This commit references #40471. Add 3-d temperature and delta-p to target grid atmospheric netcdf file. Change-Id: I505df46a097c772b2cb0c792e18a0db66f9d0d20 commit dcaaba32b355e93720331fe5c0a3ee17d2c64d60 Merge: d868f97 eb1a299 Author: George Gayno Date: Fri Jun 15 13:36:09 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit d868f9737108d583451971bd7f7ac66d9792244a Author: George Gayno Date: Fri Jun 15 13:32:07 2018 +0000 chgres_cube branch: This commit references #40471. When ingesting 'restart' files, get model top pressure from the "fv_core.res.nc" file. Change-Id: Ib9856ceb7743ce8c9be6692128e4616c1c7d4e76 commit bce294fc9b507cdaacdda89af652fda786746d49 Author: George Gayno Date: Thu Jun 14 17:59:41 2018 +0000 chgres_cube branch: This commit references #40471. New namelist variable 'restart_file' to control whether input files are 'restart' or 'history' files. Change-Id: I969651711fa83c038574093447a7b8d4c05c41ba commit 73ddc22b528362edc7b5f5a05de94301bc00e9ba Author: George Gayno Date: Wed Jun 13 21:27:21 2018 +0000 chgres_cube branch: This commit references #40471. Add logic to process GFDL microphysics tracers. Change-Id: Iad9e15cc6477ecfc01120400826c0cf6e660a1ce commit 2a82e038a21fc6de82189362133d92a329ad101f Author: George Date: Mon Jun 11 19:09:45 2018 +0000 chgres_cube branch: This commit references #40471. Update "make.sh" for building on Dell. Change-Id: Iba4915467e315ebc83d4fed7e838391681a84a5f commit 9f9d9531ae37ca81608892b50d390d5c3513ce1d Author: George Date: Fri Jun 8 20:22:51 2018 +0000 chgres_cube branch: This commit references #40471. Preliminary modifications to read input atmospheric fields from 'restart' files. Currently, program only ingests atmospheric 'history' files. Change-Id: Iac0d3cf7672d108653ddb9da620b8cf68b361877 commit 94658f59fbb7d9d21bf773d1f8cd0a71dc485e92 Author: George Date: Thu Jun 7 20:57:44 2018 +0000 chgres_cube branch: This commit references #40471. Update to ingest tiled "restart" surface files. Previously, only tiled "history" files could be ingested. 1) New routine to read tiled restart surface files - "read_input_sfc_restart_data" 2) Rename existing read routine to "read_input_sfc_history_data". 3) Add logic to determine if surface file is a 'restart' or 'history' file. Logic checks for 'xaxis_1' in the header. If it exists, a 'restart' file is assumed. Change-Id: I0ab138d165d7f2646440acc07ee5691c726a1e85 commit 822ccffc37ee4f81398ebfdcfbbad8e39d946149 Author: George Gayno Date: Mon May 21 18:09:17 2018 +0000 chgres_cube branch: This commit references #40471. New routine "write_fv3_atm_bndy_data_netcdf" that outputs an atmospheric lateral boundary file. Supports stand-alone regional grids. Change-Id: Ic6a63a4d915ba7fd870e9c151ff274f90df0a059 commit d11d7cd2d534a3ea2756928a00423d7ca5c68236 Author: George Date: Wed May 16 20:47:04 2018 +0000 chgres_cube branch: This commit references #40471. Add "extrapMethod" argument to atmospheric regridding. This prevents a random glitch when interpolating winds from the center of the grid box to the box edges. Add halo removal logic for atmospheric file. Fix bug in halo removal logic for surface file. Change-Id: Idbee39ded541db7cb11dadc4b488759a736ce7b4 commit 325b729346b4303d2c2d142d6685ae5cb2e5b167 Merge: 3e46722 cebba5c Author: George Date: Fri May 11 14:21:49 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 3e467223e7ce3d23b3e0a8a8f47d5e233fa3c69a Merge: 00921a5 ac03c87 Author: George Gayno Date: Thu May 3 19:55:50 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 00921a50e7c7dffe3bc0194e1a9b93fcbf87cde5 Author: George Gayno Date: Mon Apr 30 17:33:17 2018 +0000 chgres_cube branch: This commit references #40471. Update to use v7.1 of ESMF instead of a beta snapshot. modified: chgres_cube/sorc/make.sh Change-Id: I0fc15198c3abb2c28ee758df8dc37bd3c008924c commit 930b87fd892009906db444e44fefd602248d883e Author: George Gayno Date: Tue Apr 24 13:55:34 2018 +0000 chgres_cube branch: This commit references #40471. New routine "write_fv3_atm_header_netcdf" to write the "gfs_ctrl.nc" header file, which contains tracer and vcoord information. Modify to read input surface data from tiled model history files. Change-Id: I39f0d573c2cae3b17f4758973d7bf002dcd7afbf commit 937997b65ee77b09ac69151db9388f0c107d38b7 Merge: ca61546 0e9d2d1 Author: George Gayno Date: Fri Apr 20 17:36:18 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit ca61546139daa5e51a409fa6a538503c10dd5742 Author: George Gayno Date: Fri Apr 13 13:32:40 2018 +0000 chgres_cube branch: This commit references #40471. New routine 'vintg' for vertically interpolating between the input and target hyb-sigma levels. This routine is taken from the GFS CHGRES code, which assumes the lowest model level in index '1'. This is opposite the fv3 convention. Therefore, add a vertical 'flip' of the fv3 data after the read and before the write of the atmospheric files. New routine 'compute_zh' to compute heights. To save memory, reduce the number of 3-d arrays during write of atmospheric file. Change-Id: Ia256b6d348d277119ab1e23da6d00f3653dd8eeb commit 6c95bf7246b74edef319814a13f3667b1cdcb6d7 Author: George Date: Mon Apr 9 20:52:51 2018 +0000 chgres_cube branch: This commit references #40471. New routine 'newpr1' which computes 3-d pressure based on 'ak' and 'bk'. Add esmf fields to hold data on target grid before vertical interpolation (denoted by 'b4adj' in the variable name). Change-Id: Ic9c9175f268f124c0d63498a9e771fe679456782 commit 4c5b40a11daf499c55f9000224c08dc3589d7d98 Merge: ebee537 6482117 Author: George Date: Mon Apr 9 17:36:57 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube. commit ebee53765fe252dec7517d332771ef7a847670cf Author: George Date: Mon Apr 9 17:22:27 2018 +0000 chgres_cube branch: This commit references #40471. Several updates to the atmospheric data processing: 1) Add horizontal interpolation of 3-d temperature. 2) Read input data from the tiled model history files instead of the coldstart files from CHGRES. These files store the winds unstaggered (at the center of the grid box). 3) Add read of target grid 'vcoord' file. 4) New routine 'newps' to adjust surface pressure to new terrain. Change-Id: I653dbc741f785b42ce6fba51333530dd873bd9ef commit 181f712adb0310f098b1f2c1ce2d6b870fd81a0b Author: George Date: Wed Apr 4 14:02:30 2018 +0000 chgres_cube branch: This commit references #40471. Add read of vertical coordinate file to get 'ak' and 'bk' for the target grid. Change-Id: I3ba9fbc8e5205e3c5ef6a04da955d52094197ce9 commit 25c8b572cd74aae0d826ed805ce75b47acad95e8 Merge: 7e00515 7b3afc8 Author: George Date: Tue Apr 3 12:16:15 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 7e00515e2e1069d491f359c1eee9a63f84000732 Merge: c2ff052 8725547 Author: George Date: Tue Mar 27 19:48:54 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit c2ff0525532b1ed078c4e6bb258dd46f85e40ff6 Merge: 8fd71e9 0c7e545 Author: George Gayno Date: Thu Mar 22 14:20:13 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 8fd71e907923b2df457d8cb80550e4a0ced1ea2d Author: George Gayno Date: Tue Mar 20 18:50:13 2018 +0000 chgres_cube branch: This commit references #40471. Update theia build to point to official esmf version 7.1.0. Add "module use" statement for locating NCEPLIBS. Change-Id: If06900baa3c70b9713a3d15b25d2a89fd569d5a8 commit 5a61108655e8f253fe1cddabc3cc9dd92f2fcf04 Merge: f944749 7fdcd04 Author: George Date: Mon Mar 19 18:18:58 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit f944749861cc6ecfcb8439c38525f42184d2eda1 Merge: a47764d 3169078 Author: George Gayno Date: Mon Mar 5 13:45:28 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit a47764d197d896b3aced87a390571ac7b9e3bb9a Merge: 944f618 ecf67b6 Author: George Gayno Date: Thu Feb 22 18:24:50 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 944f6180e7500e6238685e8ae51d4d1a68c9f919 Merge: 73c0c43 03b9b56 Author: George Date: Tue Feb 20 13:56:03 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 73c0c436bd431dd2b7bb88e87046d42e69bb1d80 Merge: f697860 6b2de36 Author: George Date: Mon Feb 12 13:36:35 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit f697860ab83ff8bcec2383dbe8d4cee86de1b84c Author: George Gayno Date: Thu Feb 8 21:46:24 2018 +0000 chgres_cube branch: This commit references #40471. Minor script changes related to recent master merge. Change-Id: Ibd0d61e3d7da3be6675195d0d8c3b4def38f70d4 commit 5024394887414c4f65e6921419ac8e1550108be7 Merge: 72778cb 2b9a059 Author: George Gayno Date: Thu Feb 8 21:33:29 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube Change-Id: Iadb058b872c1d578acf9895a1321923a8bd71c73 commit 72778cb00dac9f97cfdb5a6085025c80cccaee91 Author: George Gayno Date: Mon Jan 29 19:32:42 2018 +0000 chgres_cube branch: This commit references #40471. To ensure bit identical results for varying task counts, the following modifications were done: (1) The argument "isrctermprocessing=1" was added to all calls to ESMF_FieldRegridStore; (2) The argument "termorderflag=ESMF_TERMORDER_SRCSEQ" was added to all calls to ESMF_FieldRegrid. Change-Id: I354cbd94b5c9e63a8e5635dfb2a2a32fe91426e3 commit e263d0e6d5fce3f24cd0f15ae849be412fff161f Author: George Gayno Date: Mon Jan 8 21:04:00 2018 +0000 chgres_cube branch: This commit references #40471. Move all interpolations of surface fields into their own routine ("interp"). Change-Id: I1c1ffd972566092e17f9850bbfdfce2b3965abe2 commit 574bb6f72998099b7aacc8a15220de2637ba727b Author: George Gayno Date: Mon Jan 8 19:33:52 2018 +0000 chgres_cube branch: This commit references #40471. Move processing of nst fields to surface.F90 to ensure consistency between TREF and SST. This was a problem with the OPS version of CHGRES (see issue #44638.). Remove now obsolete routine nst.F90. Change-Id: Ifb7bf631ef75cdf2af8eb0ff3f77e236996224db commit bdb63dd83f7bf23fe198650fc84cc631428d7d6f Author: George Gayno Date: Thu Jan 4 19:46:18 2018 +0000 chgres_cube branch: This commit references #40471. Change default value of SST to be the same latitudinal dependent guess as that used for TREF. Change-Id: If2d0f1f13d4f7bb318c11003eb062c53609f1d92 commit 735e35ba6efcafe94db47540416b64578d13bb97 Author: George Gayno Date: Thu Jan 4 14:38:19 2018 +0000 chgres_cube branch: This commit references #40471. Simplify driver. General cleanup. Change-Id: I1b227f5f909ec42e4a2a664ccd324df0a2a19da8 commit 8f7e672cdcd40795afa721dbd7f6347ac876ab1f Merge: 9743273 3073c50 Author: George Gayno Date: Wed Jan 3 17:29:16 2018 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 9743273c09dfb4b4d8931fb0583198d57274dd23 Author: George Gayno Date: Wed Jan 3 17:18:43 2018 +0000 chgres_cube branch: This commit references issue #40471. Add interpolation of u/v winds (on the staggered grid). The method is based on the vector interpolation in the model's write component (by Jun Wang): (1) convert from 2-d cartesian components to 3-d. (2) Horizontally interpolate the 3-d components to the target grid. (3) Convert from the 3-d components back to 2-d. Change-Id: If5110c8c20db8c5ad110f74a9f219e97799705f8 commit 1d90bf06dde893c5f28873fb016f874dc9dfc7e0 Merge: 04e2f1e 7bf492a Author: George Gayno Date: Thu Dec 21 19:16:33 2017 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit 04e2f1ec01dd032fd60893d54ba280759737521f Author: George Gayno Date: Thu Dec 21 19:12:01 2017 +0000 chgres_cube branch: This commit references #40471. Add read of latitude and longitude at the 's' edge and store as ESMF fields. Lat/lon is required to interpolate the staggered winds. Change-Id: I1f5d2a26522547a8887942b386175f65c6de9767 commit df04cc2fa792e0ed0b271e4bd395a400d80f3993 Author: George Gayno Date: Wed Dec 20 20:19:32 2017 +0000 chgres_cube branch: This commit references #40471. Rename routine "get_model_mask" to "get_model_mask_terrain" and remove read of lat/lons from the orography file. New routine "get_model_latlons" to read lat/lon from the 'grid' files. The 'grid' files have lat/lon on the staggered grid, which will be needed when interpolating winds. The orography files only have lat/lon on the 'A' grid. Change-Id: If291bb2f0b1e2294b52e7775347f756cdf68c6c5 commit e76e7f236a520428e35c2d9f79b18dea2fd45fe5 Author: George Gayno Date: Wed Dec 20 14:55:19 2017 +0000 chgres_cube branch: This commit references #40471. Switch from ESMF 7.1.0bs39 to 7.1.0bs44 (Theia). Latest version corrects bug in GridCreateMosaic for stand-alone nests. Change-Id: I50b271be7fbfabc14a51f4cc848308c3d8143d70 commit 56de1e7b5c857da69a63fe9473f6e3a4f01e35a4 Author: George Gayno Date: Fri Dec 15 18:41:50 2017 +0000 chgres_cube branch: This commit references #40471. Replace all remaining F77 netcdf functions with their F90 counterparts. Change-Id: Ieaea4b5485079b44d3c49e49556b2e2eba56b7f6 commit 23ece3b7d201be3c017d890576bc65c452e5810a Author: George Gayno Date: Fri Dec 15 16:02:32 2017 +0000 chgres_cube branch: This commit references #40471. Point (on Theia) to an updated ESMF v7.1.0bs39 library (was recompiled with -precise flag). Update read/write of atmospheric fields to use F90 versions of NetCDF functions. Change-Id: Iccd7b96a91b7d4d498847d00fec7679420852f87 commit 0eb38c145d8935b644ac014e65432a8e93f0f4fc Author: George Gayno Date: Thu Dec 14 21:43:47 2017 +0000 chgres_cube branch: This commit references #40471. Update Cray build to use ESFM v7.1.0bs39. Change-Id: I5cc221fb2be80ddfc4e55cae183b64f671b97553 commit 7f6369774f00955df5543c8a61212f59a52c0373 Author: George Gayno Date: Thu Dec 14 21:16:02 2017 +0000 chgres_cube branch: This commit references #40471. Update ESMF error handling per Gerhard's suggestion. Change-Id: I29b882c178f6595f8d371d6bddb8b080a00f88d7 commit bb2bccc4832080366bf49d67a1dbaa63881bf189 Author: George Gayno Date: Wed Dec 13 21:00:39 2017 +0000 chgres_cube branch: This commit references #40471. Update to use v7.1.0bs39 of the ESMF library, which is only available on Theia currently. Change-Id: I4be45d0dc3e5c9646c6ff52d57b27639665c4b93 commit 1976a12346150a8a6093105089820637f4f5037c Merge: e362248 8585699 Author: George Gayno Date: Wed Dec 13 17:23:00 2017 +0000 chgres_cube branch: This commit references #40471. Merge branch 'master' into chgres_cube commit e362248b338582f8c6f75e8ffacf328738a0a30c Author: George Gayno Date: Mon Nov 6 15:16:09 2017 +0000 This commit references #40471 Initial commit of the CHGRES cube-to_cube program to the chgres_cube branch. This initial version only processes surface and NSST fields. There are some hooks for processing the atmospheric fields. Change-Id: I33fa9e96637817dbe36e180e98b3b0c5e55b6945 commit 04f0e75ea80a4b9f49480d8d6fc979bc72a2899e Author: fanglin.yang Date: Fri Apr 12 20:18:54 2019 +0000 remove sourcing ~/.bash_profile in run_gfsmos_master.sh.dell. Otherwise the program crashes on Dell commit 1c4de6bbd89e3fb9180f868471b26fd4975f50dc Author: fanglin.yang Date: Mon Apr 8 01:59:58 2019 +0000 for Issue#62220, update earc.sh to not overwrite enkfgdas_grp for the first cycle commit 71af83f6f0e0a5d577161e324be4db6d770a4a21 Author: fanglin.yang Date: Wed Apr 3 19:38:51 2019 +0000 Merge GFS.v15.1.0 implementation branch q2fy19_nco to the master * Update model tag to nemsfv3gfs_beta_v1.0.18 to add restart capability of running GFS long forecast from the end or a failing point of last attempt. restart_interval_gfs is used to control the frequency of writing out restart ICs, which are saved under ROTDIR for emc parallels and NWGES for NCO production. exglobal_fcst_nemsfv3gfs.sh script has been modified to autimatically detect if the model should execute as a cold, or warm start, or as rerun. If it is a rerun, the script will look for saved ICs that is restart_interval_gfs hours back from the last ending point. * Correct a bug in precip units in the computation of frozen precipitation flag (srflag). * Write fields that are continuously accumulated in model integration in restart files so that after a restart their acummulated values can be read in. (FV3 Issue #61788) * Use 8x24 instead of 12x16 layout in config.fv3 for C768 * Address restart I/O issues #60879 * Update gsi tag to fv3da.v1.0.43 (Q3FY19 GDAS observation upgrade). * Merge NCO's changes to q2fy19_nco branch and then to the master. * Update GFS.v15 release notes. * Replace current ecflow/def file swith NCO's copies. Changes to be committed: renamed: docs/Release_Notes.gfs.v15.0.0.txt -> docs/Release_Notes.gfs.v15.1.0.txt renamed: docs/Release_Notes.gfs_downstream.v15.0.0.txt -> docs/Release_Notes.gfs_downstream.v15.1.0.txt renamed: ecflow/ecf/defs/prod00.def -> ecflow/ecf/defs/para00_gfs_FV3.def renamed: ecflow/ecf/defs/prod06.def -> ecflow/ecf/defs/para06_gfs_FV3.def renamed: ecflow/ecf/defs/prod12.def -> ecflow/ecf/defs/para12_gfs_FV3.def renamed: ecflow/ecf/defs/prod18.def -> ecflow/ecf/defs/para18_gfs_FV3.def new file: ecflow/ecf/defs/para00_gdas_FV3.def new file: ecflow/ecf/defs/para06_gdas_FV3.def new file: ecflow/ecf/defs/para12_gdas_FV3.def new file: ecflow/ecf/defs/para18_gdas_FV3.def modified: driver/product/run_JGFS_AWIPS_G2_dell.sh_00 modified: gempak/ush/gfs_meta_ak.sh modified: gempak/ush/gfs_meta_us.sh modified: jobs/JGFS_AWIPS_G2 modified: jobs/JGLOBAL_FORECAST modified: parm/config/config.base.nco.static modified: parm/config/config.fcst modified: parm/config/config.fv3 modified: parm/config/config.resources modified: scripts/exglobal_fcst_nemsfv3gfs.sh modified: sorc/checkout.sh commit 193f8837907742eac835b235c534b3275eb15fd4 Author: George Gayno Date: Tue Mar 12 20:32:47 2019 +0000 Vlab issue #59733. Add interface block for routine "write_fv3_data_netcdf" to the chgres.f90 driver. An interface block is required when optional arguments are used. This routine has one: NSST_OUTPUT. Squashed commit of the following: commit 43af677678427218bfc689450e2a8e893cb81cb2 Merge: 09406ee5 595d44c9 Author: George Gayno Date: Tue Mar 12 18:25:09 2019 +0000 chgres_wrterr branch: This commit references #59733. Merge branch 'master' into chgres_wrterr commit 09406ee5a6be3eb2e9b96e84f460b0b5b743f9bb Author: George Gayno Date: Tue Feb 5 21:39:25 2019 +0000 chgres_wrterr branch: This commit references #59733. Add interface block for routine "write_fv3_data_netcdf" to the chgres.f90 driver. Change-Id: Ic30af24b2c2704f1915ab93eeffbe0716a462e73 Change-Id: I19516cd1ad77aa62b3b311745ac63be139947fc2 commit 01382fd9a92ada3574e9c1ea12dfe546adcdca36 Author: kate.friedman Date: Tue Jul 16 18:02:01 2019 +0000 VLab Issues #66082 - GFSv15.1.2 nwprod changes commit 111043640ad8977a192abdc7d1163f039db85391 Author: kate.friedman Date: Fri Jun 28 18:19:39 2019 +0000 Final nwprod/gfs.v15.1.1 changes commit afb70c44180be65eed1ac99a503af56ca1a2118e Author: fanglin.yang Date: Thu May 16 15:57:43 2019 +0000 update checkout.sh to point gfs_wafs.v5.0.9, in which parm/wafs/wafs_gcip_gfs.cfg was updated to use both GOES-15 and GOES-17 whichever is available, not exclusively either one or the other. GOES-17 will go live on 20190602 commit f0880d93d30f890f9455c03c48521579765566eb Author: fanglin.yang Date: Fri May 3 20:46:19 2019 +0000 bring a few minor changes NCO made in gfs.v15.1.0.1 back to branch q2fy19_nco commit 6117ccaecf82f2d3fec39e6a04f627e7cc425789 Author: fanglin.yang Date: Tue Apr 23 19:25:31 2019 +0000 update link_fv3gfs.sh to include correct path for soft links of post and wafs source code commit b4c5f62a461c899222718acb9b54b27db9b465c7 Author: fanglin.yang Date: Mon Apr 22 20:58:55 2019 +0000 per NCO's request, add symbolic links under ./sorc to individual source programs of fregrid and wafs. Also update the path of RSTDIR in JGLOBAL_FORECAST commit b70a9ec3284fd4a3a5531a8d735c24259150c39f Author: Judy K. Henderson Date: Tue Mar 5 15:31:49 2019 -0700 * create branch for GMTB from 05Mar2019 global-workflow master, 595d44c9 * add changes needed to run CCPP version of NEMSFV3GFS -- add convective variables, imfdeepcnv and imfshalcnv, to config.base.emc.dyn -- define suite definition file (CCPP_SUITE) in config.fcst -- copy suite definition file to run directory -- add ccpp_suite variable to atmos_model_nml portion of namelist NOTE: this assumes sorc/fv3gfs.fd is pointing to the CCPP version of NEMSFV3GFS --- .github/pull_request_template.md | 11 + .github/workflows/ci_unit_tests.yaml | 64 + .github/workflows/docs.yaml | 2 +- .gitignore | 72 +- .gitmodules | 39 +- .shellcheckrc | 3 + INFO | 39 +- ci/Jenkinsfile | 310 +++ ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml | 18 + ci/cases/gfsv17/ocnanal.yaml | 27 + ci/cases/hires/C1152_S2SW.yaml | 14 + ci/cases/hires/C768_S2SW.yaml | 14 + ci/cases/pr/C48_ATM.yaml | 2 +- ci/cases/pr/C48_S2SW.yaml | 2 +- ci/cases/pr/C48_S2SWA_gefs.yaml | 5 +- ci/cases/pr/C48mx500_3DVarAOWCDA.yaml | 23 + ci/cases/pr/C96C48_hybatmDA.yaml | 2 +- ci/cases/pr/C96C48_ufs_hybatmDA.yaml | 24 + ci/cases/pr/C96_atm3DVar.yaml | 5 +- ci/cases/pr/C96_atm3DVar_extended.yaml | 22 + ci/cases/pr/C96_atmaerosnowDA.yaml | 21 + ci/cases/weekly/C384C192_hybatmda.yaml | 2 +- ci/cases/weekly/C384_S2SWA.yaml | 4 +- ci/cases/weekly/C384_atm3DVar.yaml | 2 +- ci/cases/yamls/atmaerosnowDA_defaults_ci.yaml | 5 + ci/cases/yamls/build.yaml | 3 + ci/cases/yamls/gefs_ci_defaults.yaml | 4 + ci/cases/yamls/gfs_defaults_ci.yaml | 4 + ci/cases/yamls/gfs_extended_ci.yaml | 13 + ci/cases/yamls/soca_gfs_defaults_ci.yaml | 5 + ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml | 20 + ci/platforms/config.hera | 6 +- ci/platforms/config.hercules | 6 +- ci/platforms/config.orion | 6 +- ci/platforms/config.wcoss2 | 7 + ci/scripts/check_ci.sh | 97 +- ci/scripts/clone-build_ci.sh | 3 +- ci/scripts/driver.sh | 98 +- ci/scripts/driver_weekly.sh | 2 +- ci/scripts/run-check_ci.sh | 65 +- ci/scripts/run_ci.sh | 16 +- ci/scripts/tests/test_create_experiment.py | 29 + ci/scripts/tests/test_rocotostat.py | 89 + ci/scripts/tests/test_setup.py | 89 + ci/scripts/utils/ci_utils.sh | 159 +- ci/scripts/utils/ci_utils_wrapper.sh | 9 + ci/scripts/utils/get_host_case_list.py | 32 + ci/scripts/utils/githubpr.py | 124 + ci/scripts/utils/launch_java_agent.sh | 184 ++ ci/scripts/utils/parse_yaml.py | 70 + ci/scripts/utils/pr_list_database.py | 216 ++ ci/scripts/utils/publish_logs.py | 108 + ci/scripts/utils/rocotostat.py | 243 ++ ci/scripts/utils/wxflow | 1 + docs/doxygen/mainpage.h | 4 +- docs/source/clone.rst | 7 + docs/source/components.rst | 18 +- docs/source/conf.py | 7 +- docs/source/configure.rst | 112 +- docs/source/hpc.rst | 99 +- docs/source/index.rst | 6 +- docs/source/init.rst | 92 +- docs/source/setup.rst | 10 +- .../analysis/create/jenkfgdas_diag.ecf | 1 - .../analysis/create/jenkfgdas_select_obs.ecf | 1 - .../analysis/create/jenkfgdas_update.ecf | 1 - .../analysis/recenter/ecen/jenkfgdas_ecen.ecf | 1 - .../analysis/recenter/jenkfgdas_sfc.ecf | 1 - .../enkfgdas/forecast/jenkfgdas_fcst.ecf | 1 - .../enkfgdas/post/jenkfgdas_post_master.ecf | 1 - .../atmos/analysis/jgdas_atmos_analysis.ecf | 1 - .../analysis/jgdas_atmos_analysis_calc.ecf | 1 - .../analysis/jgdas_atmos_analysis_diag.ecf | 1 - .../gdas/atmos/gempak/jgdas_atmos_gempak.ecf | 7 +- .../gempak/jgdas_atmos_gempak_meta_ncdc.ecf | 1 - .../dump/jgdas_atmos_tropcy_qc_reloc.ecf | 1 - .../prep/jgdas_atmos_emcsfc_sfc_prep.ecf | 1 - .../atmos/post/jgdas_atmos_post_manager.ecf | 1 - .../atmos/post/jgdas_atmos_post_master.ecf | 1 - .../jgdas_atmos_chgres_forenkf.ecf | 1 - .../gdas/atmos/verf/jgdas_atmos_verfozn.ecf | 1 - .../gdas/atmos/verf/jgdas_atmos_verfrad.ecf | 1 - .../gdas/atmos/verf/jgdas_atmos_vminmon.ecf | 1 - ecf/scripts/gdas/jgdas_forecast.ecf | 1 - .../gdas/wave/init/jgdas_wave_init.ecf | 1 - .../gdas/wave/post/jgdas_wave_postpnt.ecf | 1 - .../gdas/wave/post/jgdas_wave_postsbs.ecf | 1 - .../gdas/wave/prep/jgdas_wave_prep.ecf | 1 - .../atmos/analysis/jgfs_atmos_analysis.ecf | 1 - .../analysis/jgfs_atmos_analysis_calc.ecf | 1 - .../gfs/atmos/gempak/jgfs_atmos_gempak.ecf | 6 +- .../atmos/gempak/jgfs_atmos_gempak_meta.ecf | 1 - .../gempak/jgfs_atmos_gempak_ncdc_upapgif.ecf | 1 - .../gempak/jgfs_atmos_npoess_pgrb2_0p5deg.ecf | 1 - .../gempak/jgfs_atmos_pgrb2_spec_gempak.ecf | 6 +- .../dump/jgfs_atmos_tropcy_qc_reloc.ecf | 1 - .../prep/jgfs_atmos_emcsfc_sfc_prep.ecf | 1 - .../atmos/post/jgfs_atmos_post_manager.ecf | 1 - .../gfs/atmos/post/jgfs_atmos_post_master.ecf | 1 - .../jgfs_atmos_awips_master.ecf | 1 - .../awips_g2/jgfs_atmos_awips_g2_master.ecf | 61 - .../bufr_sounding/jgfs_atmos_postsnd.ecf | 1 - .../bulletins/jgfs_atmos_fbwind.ecf | 1 - .../gfs/atmos/verf/jgfs_atmos_vminmon.ecf | 1 - ecf/scripts/gfs/jgfs_forecast.ecf | 1 - .../gfs/wave/gempak/jgfs_wave_gempak.ecf | 1 - ecf/scripts/gfs/wave/init/jgfs_wave_init.ecf | 1 - .../gfs/wave/post/jgfs_wave_post_bndpnt.ecf | 1 - .../wave/post/jgfs_wave_post_bndpntbll.ecf | 1 - .../gfs/wave/post/jgfs_wave_postpnt.ecf | 1 - .../gfs/wave/post/jgfs_wave_postsbs.ecf | 1 - .../gfs/wave/post/jgfs_wave_prdgen_bulls.ecf | 1 - .../wave/post/jgfs_wave_prdgen_gridded.ecf | 1 - ecf/scripts/gfs/wave/prep/jgfs_wave_prep.ecf | 1 - env/AWSPW.env | 130 +- env/CONTAINER.env | 6 - env/GAEA.env | 66 + env/HERA.env | 259 +- env/HERCULES.env | 253 +- env/JET.env | 221 +- env/ORION.env | 251 +- env/S4.env | 220 +- env/WCOSS2.env | 241 +- gempak/fix/datatype.tbl | 14 +- gempak/fix/gfs_meta | 46 +- gempak/ush/gdas_ecmwf_meta_ver.sh | 145 +- gempak/ush/gdas_meta_loop.sh | 191 +- gempak/ush/gdas_meta_na.sh | 88 +- gempak/ush/gdas_ukmet_meta_ver.sh | 169 +- gempak/ush/gempak_gdas_f000_gif.sh | 295 +-- gempak/ush/gempak_gfs_f000_gif.sh | 584 +++++ gempak/ush/gempak_gfs_f00_gif.sh | 602 ----- gempak/ush/gempak_gfs_f12_gif.sh | 213 -- gempak/ush/gempak_gfs_f24_gif.sh | 231 -- gempak/ush/gempak_gfs_f36_gif.sh | 231 -- gempak/ush/gempak_gfs_f48_gif.sh | 231 -- gempak/ush/gempak_gfs_fhhh_gif.sh | 189 ++ gempak/ush/gfs_meta_ak.sh | 136 +- gempak/ush/gfs_meta_bwx.sh | 190 +- gempak/ush/gfs_meta_comp.sh | 1131 ++------- gempak/ush/gfs_meta_crb.sh | 177 +- gempak/ush/gfs_meta_hi.sh | 114 +- gempak/ush/gfs_meta_hur.sh | 210 +- gempak/ush/gfs_meta_mar_atl.sh | 68 +- gempak/ush/gfs_meta_mar_comp.sh | 1060 ++------ gempak/ush/gfs_meta_mar_pac.sh | 69 +- gempak/ush/gfs_meta_mar_ql.sh | 60 +- gempak/ush/gfs_meta_mar_skewt.sh | 57 +- gempak/ush/gfs_meta_mar_ver.sh | 51 +- gempak/ush/gfs_meta_nhsh.sh | 112 +- gempak/ush/gfs_meta_opc_na_ver | 312 +-- gempak/ush/gfs_meta_opc_np_ver | 311 +-- gempak/ush/gfs_meta_precip.sh | 142 +- gempak/ush/gfs_meta_qpf.sh | 144 +- gempak/ush/gfs_meta_sa.sh | 136 +- gempak/ush/gfs_meta_sa2.sh | 282 +-- gempak/ush/gfs_meta_trop.sh | 127 +- gempak/ush/gfs_meta_us.sh | 137 +- gempak/ush/gfs_meta_usext.sh | 162 +- gempak/ush/gfs_meta_ver.sh | 436 +--- jobs/JGDAS_ATMOS_ANALYSIS_DIAG | 5 +- jobs/JGDAS_ATMOS_CHGRES_FORENKF | 7 +- jobs/JGDAS_ATMOS_GEMPAK | 71 +- jobs/JGDAS_ATMOS_GEMPAK_META_NCDC | 68 +- jobs/JGDAS_ATMOS_VERFOZN | 4 +- jobs/JGDAS_ATMOS_VERFRAD | 6 +- jobs/JGDAS_ENKF_ARCHIVE | 12 +- jobs/JGDAS_ENKF_DIAG | 11 +- jobs/JGDAS_ENKF_ECEN | 11 +- jobs/JGDAS_ENKF_POST | 1 - jobs/JGDAS_ENKF_SELECT_OBS | 15 +- jobs/JGDAS_ENKF_SFC | 13 +- jobs/JGDAS_ENKF_UPDATE | 5 +- jobs/JGDAS_FIT2OBS | 6 +- jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_CHKPT | 6 +- jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN | 47 + jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_POST | 6 +- jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_PREP | 16 +- jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_VRFY | 9 +- jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG | 17 +- jobs/JGFS_ATMOS_CYCLONE_GENESIS | 8 +- jobs/JGFS_ATMOS_CYCLONE_TRACKER | 11 +- jobs/JGFS_ATMOS_FBWIND | 34 +- jobs/JGFS_ATMOS_FSU_GENESIS | 10 +- jobs/JGFS_ATMOS_GEMPAK | 173 +- jobs/JGFS_ATMOS_GEMPAK_META | 46 +- jobs/JGFS_ATMOS_GEMPAK_NCDC_UPAPGIF | 58 +- jobs/JGFS_ATMOS_GEMPAK_PGRB2_SPEC | 68 +- jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS | 19 +- jobs/JGFS_ATMOS_POSTSND | 17 +- jobs/JGFS_ATMOS_VERIFICATION | 4 +- jobs/JGFS_ATMOS_WAFS | 96 + jobs/JGFS_ATMOS_WAFS_BLENDING_0P25 | 153 ++ jobs/JGFS_ATMOS_WAFS_GCIP | 140 ++ jobs/JGFS_ATMOS_WAFS_GRIB2 | 124 + jobs/JGFS_ATMOS_WAFS_GRIB2_0P25 | 133 + jobs/JGLOBAL_AERO_ANALYSIS_FINALIZE | 6 +- jobs/JGLOBAL_AERO_ANALYSIS_INITIALIZE | 6 +- jobs/JGLOBAL_AERO_ANALYSIS_RUN | 2 +- jobs/JGLOBAL_ARCHIVE | 56 +- jobs/JGLOBAL_ATMENS_ANALYSIS_FINALIZE | 4 +- jobs/JGLOBAL_ATMENS_ANALYSIS_FV3_INCREMENT | 35 + jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE | 6 +- jobs/JGLOBAL_ATMENS_ANALYSIS_LETKF | 35 + jobs/JGLOBAL_ATMOS_ANALYSIS | 14 +- jobs/JGLOBAL_ATMOS_ANALYSIS_CALC | 10 +- jobs/JGLOBAL_ATMOS_ENSSTAT | 48 + jobs/JGLOBAL_ATMOS_POST_MANAGER | 13 +- jobs/JGLOBAL_ATMOS_PRODUCTS | 6 +- jobs/JGLOBAL_ATMOS_SFCANL | 41 +- jobs/JGLOBAL_ATMOS_TROPCY_QC_RELOC | 3 +- jobs/JGLOBAL_ATMOS_UPP | 4 +- jobs/JGLOBAL_ATMOS_VMINMON | 6 +- jobs/JGLOBAL_ATM_ANALYSIS_FINALIZE | 6 +- jobs/JGLOBAL_ATM_ANALYSIS_FV3_INCREMENT | 37 + jobs/JGLOBAL_ATM_ANALYSIS_INITIALIZE | 8 +- jobs/JGLOBAL_ATM_ANALYSIS_VARIATIONAL | 37 + jobs/JGLOBAL_ATM_PREP_IODA_OBS | 6 +- jobs/JGLOBAL_CLEANUP | 8 +- jobs/JGLOBAL_EXTRACTVARS | 47 + jobs/JGLOBAL_FORECAST | 132 +- jobs/JGLOBAL_MARINE_ANALYSIS_LETKF | 50 + jobs/JGLOBAL_MARINE_BMAT | 66 + jobs/JGLOBAL_OCEANICE_PRODUCTS | 40 + jobs/JGLOBAL_PREP_EMISSIONS | 35 + jobs/JGLOBAL_PREP_OBS_AERO | 43 + jobs/JGLOBAL_PREP_OCEAN_OBS | 9 +- jobs/JGLOBAL_PREP_SNOW_OBS | 44 + jobs/JGLOBAL_SNOW_ANALYSIS | 47 + jobs/JGLOBAL_STAGE_IC | 7 +- jobs/JGLOBAL_WAVE_GEMPAK | 4 +- jobs/JGLOBAL_WAVE_INIT | 13 +- jobs/JGLOBAL_WAVE_POST_BNDPNT | 15 +- jobs/JGLOBAL_WAVE_POST_BNDPNTBLL | 15 +- jobs/JGLOBAL_WAVE_POST_PNT | 15 +- jobs/JGLOBAL_WAVE_POST_SBS | 18 +- jobs/JGLOBAL_WAVE_PRDGEN_BULLS | 8 +- jobs/JGLOBAL_WAVE_PRDGEN_GRIDDED | 9 +- jobs/JGLOBAL_WAVE_PREP | 19 +- jobs/rocoto/aeroanlfinal.sh | 5 - jobs/rocoto/aeroanlinit.sh | 6 - jobs/rocoto/aeroanlrun.sh | 6 - jobs/rocoto/arch.sh | 5 + jobs/rocoto/atmanlfinal.sh | 5 - jobs/rocoto/atmanlfv3inc.sh | 18 + jobs/rocoto/atmanlinit.sh | 6 - jobs/rocoto/atmanlvar.sh | 18 + jobs/rocoto/atmensanlfinal.sh | 5 - jobs/rocoto/atmensanlfv3inc.sh | 18 + jobs/rocoto/atmensanlinit.sh | 6 - jobs/rocoto/atmensanlletkf.sh | 18 + jobs/rocoto/atmos_ensstat.sh | 25 + jobs/rocoto/atmos_products.sh | 22 +- jobs/rocoto/awips_20km_1p0deg.sh | 6 +- jobs/rocoto/earc.sh | 6 +- jobs/rocoto/efcs.sh | 25 - jobs/rocoto/extractvars.sh | 23 + jobs/rocoto/gempak.sh | 5 +- jobs/rocoto/gempakgrb2spec.sh | 16 + jobs/rocoto/marineanalletkf.sh | 23 + jobs/rocoto/marinebmat.sh | 18 + jobs/rocoto/oceanice_products.sh | 25 + jobs/rocoto/ocnanalecen.sh | 23 + jobs/rocoto/prep.sh | 27 +- jobs/rocoto/prep_emissions.sh | 23 + jobs/rocoto/prepatmiodaobs.sh | 8 +- jobs/rocoto/prepobsaero.sh | 18 + jobs/rocoto/prepoceanobs.sh | 5 + jobs/rocoto/prepsnowobs.sh | 26 + jobs/rocoto/snowanl.sh | 18 + jobs/rocoto/upp.sh | 29 +- modulefiles/module-setup.csh.inc | 87 - modulefiles/module-setup.sh.inc | 110 - modulefiles/module_base.gaea.lua | 39 + modulefiles/module_base.hera.lua | 18 +- modulefiles/module_base.hercules.lua | 26 +- modulefiles/module_base.jet.lua | 21 +- modulefiles/module_base.orion.lua | 28 +- modulefiles/module_base.s4.lua | 15 +- modulefiles/module_base.wcoss2.lua | 8 +- modulefiles/module_gwci.hercules.lua | 2 +- modulefiles/module_gwci.orion.lua | 8 +- modulefiles/module_gwci.wcoss2.lua | 8 + modulefiles/module_gwsetup.gaea.lua | 19 + modulefiles/module_gwsetup.hercules.lua | 6 +- modulefiles/module_gwsetup.jet.lua | 6 +- modulefiles/module_gwsetup.orion.lua | 9 +- modulefiles/module_gwsetup.s4.lua | 4 +- modulefiles/module_gwsetup.wcoss2.lua | 2 - parm/archive/arcdir.yaml.j2 | 156 ++ parm/archive/chem.yaml.j2 | 7 + parm/archive/enkf.yaml.j2 | 82 + parm/archive/enkf_grp.yaml.j2 | 29 + parm/archive/enkf_restarta_grp.yaml.j2 | 53 + parm/archive/enkf_restartb_grp.yaml.j2 | 37 + parm/archive/gdas.yaml.j2 | 163 ++ parm/archive/gdas_restarta.yaml.j2 | 54 + parm/archive/gdas_restartb.yaml.j2 | 39 + parm/archive/gdasice.yaml.j2 | 10 + parm/archive/gdasice_restart.yaml.j2 | 7 + parm/archive/gdasocean.yaml.j2 | 9 + parm/archive/gdasocean_analysis.yaml.j2 | 32 + parm/archive/gdasocean_restart.yaml.j2 | 8 + parm/archive/gdaswave.yaml.j2 | 8 + parm/archive/gdaswave_restart.yaml.j2 | 6 + parm/archive/gfs_downstream.yaml.j2 | 12 + parm/archive/gfs_flux.yaml.j2 | 9 + parm/archive/gfs_flux_1p00.yaml.j2 | 9 + parm/archive/gfs_netcdfa.yaml.j2 | 16 + parm/archive/gfs_netcdfb.yaml.j2 | 9 + parm/archive/gfs_pgrb2b.yaml.j2 | 19 + parm/archive/gfs_restarta.yaml.j2 | 23 + parm/archive/gfsa.yaml.j2 | 68 + parm/archive/gfsb.yaml.j2 | 20 + parm/archive/gfswave.yaml.j2 | 30 + parm/archive/ice_6hravg.yaml.j2 | 9 + parm/archive/ice_grib2.yaml.j2 | 19 + parm/archive/master_enkf.yaml.j2 | 102 + parm/archive/master_enkfgdas.yaml.j2 | 6 + parm/archive/master_enkfgfs.yaml.j2 | 6 + parm/archive/master_gdas.yaml.j2 | 109 + parm/archive/master_gfs.yaml.j2 | 112 + parm/archive/ocean_6hravg.yaml.j2 | 8 + parm/archive/ocean_grib2.yaml.j2 | 18 + parm/config/gefs/config.atmos_ensstat | 11 + parm/config/gefs/config.atmos_products | 28 + parm/config/gefs/config.base | 346 +++ parm/config/gefs/config.efcs | 70 +- parm/config/gefs/config.extractvars | 41 + parm/config/gefs/config.fcst | 75 +- parm/config/gefs/config.oceanice_products | 15 + parm/config/gefs/config.prep_emissions | 11 + parm/config/gefs/config.resources | 680 ++---- parm/config/gefs/config.stage_ic | 15 + parm/config/gefs/config.ufs | 191 +- parm/config/gefs/config.wave | 41 +- parm/config/gefs/config.wavepostbndpnt | 11 + parm/config/gefs/config.wavepostbndpntbll | 11 + parm/config/gefs/config.wavepostpnt | 11 + parm/config/gefs/config.wavepostsbs | 27 + parm/config/gefs/yaml/defaults.yaml | 11 +- parm/config/gfs/config.aero | 9 +- parm/config/gfs/config.aeroanl | 17 +- parm/config/gfs/config.aeroanlfinal | 2 +- parm/config/gfs/config.aeroanlinit | 2 +- parm/config/gfs/config.aeroanlrun | 2 +- parm/config/gfs/config.anal | 70 +- parm/config/gfs/config.analcalc | 6 +- parm/config/gfs/config.atmanl | 31 +- parm/config/gfs/config.atmanlfv3inc | 14 + parm/config/gfs/config.atmanlinit | 1 + parm/config/gfs/config.atmanlvar | 11 + parm/config/gfs/config.atmensanl | 15 +- parm/config/gfs/config.atmensanlfv3inc | 14 + parm/config/gfs/config.atmensanlinit | 1 + parm/config/gfs/config.atmensanlletkf | 11 + parm/config/gfs/config.atmos_products | 14 +- parm/config/gfs/config.awips | 3 - parm/config/gfs/config.base | 1 + parm/config/gfs/config.base.emc | 483 ++++ parm/config/gfs/config.base.hera | 485 ++++ parm/config/gfs/config.cleanup | 7 +- parm/config/gfs/config.com | 26 +- parm/config/gfs/config.earc | 20 +- parm/config/gfs/config.efcs | 60 +- parm/config/gfs/config.eobs | 3 +- parm/config/gfs/config.epos | 3 - parm/config/gfs/config.esfc | 13 +- parm/config/gfs/config.eupd | 2 +- parm/config/gfs/config.fbwind | 11 + parm/config/gfs/config.fcst | 163 +- parm/config/gfs/config.fit2obs | 4 +- parm/config/gfs/config.ice | 5 + parm/config/gfs/config.marineanalletkf | 18 + parm/config/gfs/config.marinebmat | 11 + parm/config/gfs/config.metp | 13 +- parm/config/gfs/config.nsst | 5 + parm/config/gfs/config.oceanice_products | 15 + parm/config/gfs/config.ocn | 13 +- parm/config/gfs/config.ocnanal | 18 +- parm/config/gfs/config.ocnanalecen | 11 + parm/config/gfs/config.postsnd | 1 - parm/config/gfs/config.prep | 15 +- parm/config/gfs/config.prepatmiodaobs | 3 - parm/config/gfs/config.prepobsaero | 17 + parm/config/gfs/config.prepoceanobs | 11 +- parm/config/gfs/config.prepsnowobs | 21 + parm/config/gfs/config.resources | 2156 +++++++++-------- parm/config/gfs/config.resources.GAEA | 27 + parm/config/gfs/config.resources.HERA | 35 + parm/config/gfs/config.resources.HERCULES | 16 + parm/config/gfs/config.resources.JET | 52 + parm/config/gfs/config.resources.ORION | 17 + parm/config/gfs/config.resources.S4 | 59 + parm/config/gfs/config.resources.WCOSS2 | 59 + parm/config/gfs/config.sfcanl | 5 + parm/config/gfs/config.snowanl | 30 + parm/config/gfs/config.stage_ic | 22 +- .../gfs/config.ufs_c768_12x12_2th_1wg40wt | 441 ++-- .../gfs/config.ufs_c768_16x16_2th_2wg40wt | 441 ++-- parm/config/gfs/config.upp | 2 +- parm/config/gfs/config.verfozn | 7 +- parm/config/gfs/config.verfrad | 5 +- parm/config/gfs/config.vminmon | 5 +- parm/config/gfs/config.wave | 64 +- parm/config/gfs/config.wavepostbndpnt | 2 +- parm/config/gfs/config.wavepostbndpntbll | 2 +- parm/config/gfs/config.wavepostpnt | 2 +- parm/config/gfs/config.wavepostsbs | 3 +- parm/config/gfs/config.waveprep | 2 +- parm/config/gfs/yaml/defaults.yaml | 42 +- parm/config/gfs/yaml/test_ci.yaml | 2 +- parm/gdas/aero_crtm_coeff.yaml.j2 | 13 + parm/gdas/aero_jedi_fix.yaml.j2 | 7 + parm/gdas/atm_crtm_coeff.yaml.j2 | 178 ++ parm/gdas/atm_jedi_fix.yaml.j2 | 9 + parm/gdas/snow_jedi_fix.yaml.j2 | 7 + parm/gdas/staging/atm_berror_gsibec.yaml.j2 | 8 + parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 | 32 + parm/gdas/staging/atm_var_bkg.yaml.j2 | 14 + parm/gdas/staging/atm_var_fv3ens.yaml.j2 | 24 + parm/post/oceanice_products.yaml | 75 + parm/post/oceanice_products_gefs.yaml | 73 + parm/post/upp.yaml | 30 +- parm/product/bufr_ij9km.txt | 2115 ++++++++++++++++ parm/product/gefs.0p25.f000.paramlist.a.txt | 39 + parm/product/gefs.0p25.f000.paramlist.b.txt | 522 ++++ parm/product/gefs.0p25.fFFF.paramlist.a.txt | 38 + parm/product/gefs.0p25.fFFF.paramlist.b.txt | 554 +++++ parm/product/gefs.0p50.f000.paramlist.a.txt | 80 + parm/product/gefs.0p50.f000.paramlist.b.txt | 474 ++++ parm/product/gefs.0p50.fFFF.paramlist.a.txt | 87 + parm/product/gefs.0p50.fFFF.paramlist.b.txt | 506 ++++ parm/product/gefs.1p00.f000.paramlist.a.txt | 1 + parm/product/gefs.1p00.f000.paramlist.b.txt | 1 + parm/product/gefs.1p00.fFFF.paramlist.a.txt | 1 + parm/product/gefs.1p00.fFFF.paramlist.b.txt | 1 + parm/product/gefs.2p50.f000.paramlist.a.txt | 23 + parm/product/gefs.2p50.f000.paramlist.b.txt | 530 ++++ parm/product/gefs.2p50.fFFF.paramlist.a.txt | 22 + parm/product/gefs.2p50.fFFF.paramlist.b.txt | 571 +++++ parm/product/gefs_ice_shortparmlist.parm | 10 + parm/product/gefs_ocn_shortparmlist.parm | 9 + parm/product/gefs_shortparmlist_2d.parm | 38 + parm/product/gefs_shortparmlist_3d_d.parm | 34 + parm/product/gefs_shortparmlist_3d_h.parm | 45 + parm/product/gefs_wav_shortparmlist.parm | 3 + parm/product/gfs.anl.paramlist.a.txt | 627 +++++ parm/product/gfs.f000.paramlist.a.txt | 698 ++++++ parm/product/gfs.fFFF.paramlist.a.txt | 758 ++++++ parm/product/gfs.fFFF.paramlist.b.txt | 349 +++ ...ist => transfer_gfs_enkfgdas_enkf_05.list} | 36 +- ...ist => transfer_gfs_enkfgdas_enkf_10.list} | 28 +- .../transfer_gfs_enkfgdas_enkf_15.list | 61 + ...ist => transfer_gfs_enkfgdas_enkf_20.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_25.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_30.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_35.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_40.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_45.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_50.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_55.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_60.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_65.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_70.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_75.list} | 0 ...ist => transfer_gfs_enkfgdas_enkf_80.list} | 0 ...t => transfer_gfs_enkfgdas_enkf_misc.list} | 0 ...1a.list => transfer_gfs_gdas_gdas_1a.list} | 19 +- parm/transfer/transfer_gfs_gdas_gdas_1b.list | 75 + parm/transfer/transfer_gfs_gdas_gdas_1c.list | 67 + ....list => transfer_gfs_gdas_gdas_misc.list} | 0 ...fer_gfs_1.list => transfer_gfs_gfs_1.list} | 14 + ...gfs_10a.list => transfer_gfs_gfs_10a.list} | 13 + ...gfs_10b.list => transfer_gfs_gfs_10b.list} | 0 parm/transfer/transfer_gfs_gfs_2.list | 99 + parm/transfer/transfer_gfs_gfs_3.list | 99 + parm/transfer/transfer_gfs_gfs_4.list | 99 + parm/transfer/transfer_gfs_gfs_5.list | 99 + parm/transfer/transfer_gfs_gfs_6.list | 99 + parm/transfer/transfer_gfs_gfs_7.list | 99 + parm/transfer/transfer_gfs_gfs_8.list | 97 + ...r_gfs_9a.list => transfer_gfs_gfs_9a.list} | 16 + ...r_gfs_9b.list => transfer_gfs_gfs_9b.list} | 0 parm/transfer/transfer_gfs_gfs_gempak.list | 64 + ...s_misc.list => transfer_gfs_gfs_misc.list} | 0 ...transfer_rdhpcs_gfs_gdas_enkf_enkf_1.list} | 18 + ...transfer_rdhpcs_gfs_gdas_enkf_enkf_2.list} | 21 +- ...transfer_rdhpcs_gfs_gdas_enkf_enkf_3.list} | 10 + ...transfer_rdhpcs_gfs_gdas_enkf_enkf_4.list} | 22 + ...transfer_rdhpcs_gfs_gdas_enkf_enkf_5.list} | 20 + ...transfer_rdhpcs_gfs_gdas_enkf_enkf_6.list} | 18 + ...transfer_rdhpcs_gfs_gdas_enkf_enkf_7.list} | 8 + ...transfer_rdhpcs_gfs_gdas_enkf_enkf_8.list} | 18 + ...ist => transfer_rdhpcs_gfs_gdas_gdas.list} | 10 + ...s.list => transfer_rdhpcs_gfs_gempak.list} | 4 + ..._gfs.list => transfer_rdhpcs_gfs_gfs.list} | 5 + parm/ufs/fix/gfs/atmos.fixed_files.yaml | 94 +- parm/ufs/fv3/diag_table | 108 +- parm/ufs/fv3/diag_table_aod | 2 +- parm/ufs/fv3/diag_table_da | 20 +- .../field_table_thompson_aero_tke_progsigma | 10 +- parm/ufs/gocart/ExtData.other | 36 +- parm/ufs/gocart/SU2G_instance_SU.rc | 4 +- parm/wave/at_10m_interp.inp.tmpl | 2 +- parm/wave/ep_10m_interp.inp.tmpl | 2 +- parm/wave/glo_15mxt_interp.inp.tmpl | 6 +- parm/wave/glo_200_interp.inp.tmpl | 12 + parm/wave/glo_30m_interp.inp.tmpl | 6 +- parm/wave/wc_10m_interp.inp.tmpl | 2 +- parm/wave/ww3_grib2.glo_100.inp.tmpl | 9 + parm/wmo/grib2_awpgfs_20km_akf003 | 8 +- parm/wmo/grib2_awpgfs_20km_akf006 | 8 +- parm/wmo/grib2_awpgfs_20km_akf009 | 8 +- parm/wmo/grib2_awpgfs_20km_akf012 | 8 +- parm/wmo/grib2_awpgfs_20km_akf015 | 8 +- parm/wmo/grib2_awpgfs_20km_akf018 | 8 +- parm/wmo/grib2_awpgfs_20km_akf021 | 8 +- parm/wmo/grib2_awpgfs_20km_akf024 | 8 +- parm/wmo/grib2_awpgfs_20km_akf027 | 8 +- parm/wmo/grib2_awpgfs_20km_akf030 | 8 +- parm/wmo/grib2_awpgfs_20km_akf033 | 8 +- parm/wmo/grib2_awpgfs_20km_akf036 | 8 +- parm/wmo/grib2_awpgfs_20km_akf039 | 8 +- parm/wmo/grib2_awpgfs_20km_akf042 | 8 +- parm/wmo/grib2_awpgfs_20km_akf045 | 8 +- parm/wmo/grib2_awpgfs_20km_akf048 | 8 +- parm/wmo/grib2_awpgfs_20km_akf051 | 8 +- parm/wmo/grib2_awpgfs_20km_akf054 | 8 +- parm/wmo/grib2_awpgfs_20km_akf057 | 8 +- parm/wmo/grib2_awpgfs_20km_akf060 | 8 +- parm/wmo/grib2_awpgfs_20km_akf063 | 8 +- parm/wmo/grib2_awpgfs_20km_akf066 | 8 +- parm/wmo/grib2_awpgfs_20km_akf069 | 8 +- parm/wmo/grib2_awpgfs_20km_akf072 | 8 +- parm/wmo/grib2_awpgfs_20km_akf075 | 8 +- parm/wmo/grib2_awpgfs_20km_akf078 | 8 +- parm/wmo/grib2_awpgfs_20km_akf081 | 8 +- parm/wmo/grib2_awpgfs_20km_akf084 | 8 +- parm/wmo/grib2_awpgfs_20km_akf090 | 8 +- parm/wmo/grib2_awpgfs_20km_akf096 | 8 +- parm/wmo/grib2_awpgfs_20km_akf102 | 8 +- parm/wmo/grib2_awpgfs_20km_akf108 | 8 +- parm/wmo/grib2_awpgfs_20km_akf114 | 8 +- parm/wmo/grib2_awpgfs_20km_akf120 | 8 +- parm/wmo/grib2_awpgfs_20km_akf126 | 8 +- parm/wmo/grib2_awpgfs_20km_akf132 | 8 +- parm/wmo/grib2_awpgfs_20km_akf138 | 8 +- parm/wmo/grib2_awpgfs_20km_akf144 | 8 +- parm/wmo/grib2_awpgfs_20km_akf150 | 8 +- parm/wmo/grib2_awpgfs_20km_akf156 | 8 +- parm/wmo/grib2_awpgfs_20km_akf162 | 8 +- parm/wmo/grib2_awpgfs_20km_akf168 | 8 +- parm/wmo/grib2_awpgfs_20km_akf174 | 8 +- parm/wmo/grib2_awpgfs_20km_akf180 | 8 +- parm/wmo/grib2_awpgfs_20km_akf186 | 8 +- parm/wmo/grib2_awpgfs_20km_akf192 | 8 +- parm/wmo/grib2_awpgfs_20km_akf198 | 8 +- parm/wmo/grib2_awpgfs_20km_akf204 | 8 +- parm/wmo/grib2_awpgfs_20km_akf210 | 8 +- parm/wmo/grib2_awpgfs_20km_akf216 | 8 +- parm/wmo/grib2_awpgfs_20km_akf222 | 8 +- parm/wmo/grib2_awpgfs_20km_akf228 | 8 +- parm/wmo/grib2_awpgfs_20km_akf234 | 8 +- parm/wmo/grib2_awpgfs_20km_akf240 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf003 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf006 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf009 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf012 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf015 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf018 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf021 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf024 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf027 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf030 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf033 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf036 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf039 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf042 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf045 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf048 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf051 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf054 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf057 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf060 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf063 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf066 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf069 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf072 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf075 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf078 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf081 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf084 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf090 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf096 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf102 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf108 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf114 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf120 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf126 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf132 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf138 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf144 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf150 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf156 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf162 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf168 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf174 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf180 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf186 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf192 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf198 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf204 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf210 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf216 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf222 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf228 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf234 | 8 +- parm/wmo/grib2_awpgfs_20km_conusf240 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf003 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf006 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf009 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf012 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf015 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf018 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf021 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf024 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf027 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf030 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf033 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf036 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf039 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf042 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf045 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf048 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf051 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf054 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf057 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf060 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf063 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf066 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf069 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf072 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf075 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf078 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf081 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf084 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf090 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf096 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf102 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf108 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf114 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf120 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf126 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf132 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf138 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf144 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf150 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf156 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf162 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf168 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf174 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf180 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf186 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf192 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf198 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf204 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf210 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf216 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf222 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf228 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf234 | 8 +- parm/wmo/grib2_awpgfs_20km_pacf240 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof003 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof006 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof009 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof012 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof015 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof018 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof021 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof024 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof027 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof030 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof033 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof036 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof039 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof042 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof045 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof048 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof051 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof054 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof057 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof060 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof063 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof066 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof069 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof072 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof075 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof078 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof081 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof084 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof090 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof096 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof102 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof108 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof114 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof120 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof126 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof132 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof138 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof144 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof150 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof156 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof162 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof168 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof174 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof180 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof186 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof192 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof198 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof204 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof210 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof216 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof222 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof228 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof234 | 8 +- parm/wmo/grib2_awpgfs_20km_pricof240 | 8 +- parm/wmo/grib_awpgfs000.211 | 387 --- parm/wmo/grib_awpgfs006.211 | 405 ---- parm/wmo/grib_awpgfs012.211 | 405 ---- parm/wmo/grib_awpgfs018.211 | 405 ---- parm/wmo/grib_awpgfs024.211 | 405 ---- parm/wmo/grib_awpgfs030.211 | 405 ---- parm/wmo/grib_awpgfs036.211 | 405 ---- parm/wmo/grib_awpgfs042.211 | 405 ---- parm/wmo/grib_awpgfs048.211 | 405 ---- parm/wmo/grib_awpgfs054.211 | 409 ---- parm/wmo/grib_awpgfs060.211 | 409 ---- parm/wmo/grib_awpgfs066.211 | 409 ---- parm/wmo/grib_awpgfs072.211 | 409 ---- parm/wmo/grib_awpgfs078.211 | 409 ---- parm/wmo/grib_awpgfs084.211 | 409 ---- parm/wmo/grib_awpgfs090.211 | 409 ---- parm/wmo/grib_awpgfs096.211 | 409 ---- parm/wmo/grib_awpgfs102.211 | 409 ---- parm/wmo/grib_awpgfs108.211 | 409 ---- parm/wmo/grib_awpgfs114.211 | 409 ---- parm/wmo/grib_awpgfs120.211 | 409 ---- parm/wmo/grib_awpgfs126.211 | 371 --- parm/wmo/grib_awpgfs132.211 | 371 --- parm/wmo/grib_awpgfs138.211 | 371 --- parm/wmo/grib_awpgfs144.211 | 371 --- parm/wmo/grib_awpgfs150.211 | 371 --- parm/wmo/grib_awpgfs156.211 | 371 --- parm/wmo/grib_awpgfs162.211 | 371 --- parm/wmo/grib_awpgfs168.211 | 371 --- parm/wmo/grib_awpgfs174.211 | 371 --- parm/wmo/grib_awpgfs180.211 | 371 --- parm/wmo/grib_awpgfs186.211 | 371 --- parm/wmo/grib_awpgfs192.211 | 371 --- parm/wmo/grib_awpgfs198.211 | 371 --- parm/wmo/grib_awpgfs204.211 | 371 --- parm/wmo/grib_awpgfs210.211 | 371 --- parm/wmo/grib_awpgfs216.211 | 371 --- parm/wmo/grib_awpgfs222.211 | 371 --- parm/wmo/grib_awpgfs228.211 | 371 --- parm/wmo/grib_awpgfs234.211 | 371 --- parm/wmo/grib_awpgfs240.211 | 371 --- scripts/exgdas_atmos_chgres_forenkf.sh | 17 +- scripts/exgdas_atmos_gempak_gif_ncdc.sh | 73 +- scripts/exgdas_atmos_nawips.sh | 197 +- scripts/exgdas_atmos_verfozn.sh | 2 +- scripts/exgdas_atmos_verfrad.sh | 17 +- scripts/exgdas_enkf_earc.py | 60 + scripts/exgdas_enkf_ecen.sh | 46 +- scripts/exgdas_enkf_post.sh | 23 +- scripts/exgdas_enkf_select_obs.sh | 7 +- scripts/exgdas_enkf_sfc.sh | 55 +- scripts/exgdas_enkf_update.sh | 65 +- .../exgdas_global_marine_analysis_letkf.py | 24 + scripts/exgfs_aero_init_aerosol.py | 18 +- scripts/exgfs_atmos_awips_20km_1p0deg.sh | 32 +- scripts/exgfs_atmos_fbwind.sh | 53 +- scripts/exgfs_atmos_gempak_gif_ncdc_skew_t.sh | 126 +- scripts/exgfs_atmos_gempak_meta.sh | 191 +- scripts/exgfs_atmos_goes_nawips.sh | 167 +- scripts/exgfs_atmos_grib2_special_npoess.sh | 90 +- scripts/exgfs_atmos_nawips.sh | 200 +- scripts/exgfs_atmos_postsnd.sh | 37 +- scripts/exgfs_atmos_wafs_blending_0p25.sh | 298 +++ scripts/exgfs_atmos_wafs_gcip.sh | 242 ++ scripts/exgfs_atmos_wafs_grib.sh | 146 ++ scripts/exgfs_atmos_wafs_grib2.sh | 227 ++ scripts/exgfs_atmos_wafs_grib2_0p25.sh | 200 ++ scripts/exgfs_pmgr.sh | 2 +- scripts/exgfs_prdgen_manager.sh | 2 +- scripts/exgfs_wave_init.sh | 42 +- scripts/exgfs_wave_nawips.sh | 31 +- scripts/exgfs_wave_post_gridded_sbs.sh | 55 +- scripts/exgfs_wave_post_pnt.sh | 136 +- scripts/exgfs_wave_prdgen_bulls.sh | 28 +- scripts/exgfs_wave_prdgen_gridded.sh | 55 +- scripts/exgfs_wave_prep.sh | 51 +- scripts/exglobal_archive.py | 63 + .../exglobal_atm_analysis_fv3_increment.py | 23 + scripts/exglobal_atm_analysis_variational.py | 22 + .../exglobal_atmens_analysis_fv3_increment.py | 23 + scripts/exglobal_atmens_analysis_letkf.py | 22 + scripts/exglobal_atmos_analysis.sh | 110 +- scripts/exglobal_atmos_analysis_calc.sh | 26 +- scripts/exglobal_atmos_ensstat.sh | 19 + scripts/exglobal_atmos_pmgr.sh | 2 +- scripts/exglobal_atmos_products.sh | 40 +- scripts/exglobal_atmos_sfcanl.sh | 234 +- scripts/exglobal_atmos_tropcy_qc_reloc.sh | 6 +- scripts/exglobal_atmos_vminmon.sh | 8 +- scripts/exglobal_cleanup.sh | 41 +- scripts/exglobal_diag.sh | 18 +- scripts/exglobal_extractvars.sh | 53 + scripts/exglobal_forecast.sh | 70 +- scripts/exglobal_marinebmat.py | 24 + scripts/exglobal_oceanice_products.py | 52 + scripts/exglobal_prep_emissions.py | 25 + scripts/exglobal_prep_obs_aero.py | 23 + scripts/exglobal_prep_snow_obs.py | 25 + scripts/exglobal_snow_analysis.py | 24 + scripts/exglobal_stage_ic.sh | 87 +- sorc/build_all.sh | 132 +- sorc/build_gdas.sh | 15 +- sorc/build_gfs_utils.sh | 10 +- sorc/build_gsi_enkf.sh | 6 +- sorc/build_gsi_monitor.sh | 10 +- sorc/build_gsi_utils.sh | 10 +- sorc/build_ufs.sh | 18 +- sorc/build_ufs_utils.sh | 11 +- sorc/build_upp.sh | 27 +- sorc/build_ww3prepost.sh | 28 +- sorc/gdas.cd | 2 +- sorc/gfs_utils.fd | 2 +- sorc/gsi_enkf.fd | 2 +- sorc/gsi_monitor.fd | 2 +- sorc/gsi_utils.fd | 2 +- sorc/link_workflow.sh | 190 +- sorc/ufs_model.fd | 2 +- sorc/ufs_utils.fd | 2 +- sorc/verif-global.fd | 2 +- sorc/wxflow | 2 +- test/f90nmlcmp.sh | 19 + test/g2cmp.sh | 20 + test/nccmp.sh | 15 + ush/atmos_ensstat.sh | 99 + ush/atmos_extractvars.sh | 98 + ush/bash_utils.sh | 126 + ush/calcanl_gfs.py | 35 +- ush/check_ice_netcdf.sh | 43 + ush/detect_machine.sh | 51 +- ush/extractvars_tools.sh | 60 + ush/file_utils.sh | 0 ush/forecast_det.sh | 211 +- ush/forecast_postdet.sh | 1374 +++++------ ush/forecast_predet.sh | 675 +++++- ush/gaussian_sfcanl.sh | 37 +- ush/getdump.sh | 12 +- ush/getges.sh | 2 +- ush/gfs_bfr2gpk.sh | 2 +- ush/gfs_bufr.sh | 53 +- ush/gfs_bufr_netcdf.sh | 38 +- ush/gfs_sndp.sh | 6 +- ush/gfs_truncate_enkf.sh | 17 +- ush/global_savefits.sh | 2 +- ush/hpssarch_gen.sh | 125 +- ush/interp_atmos_master.sh | 4 +- ush/interp_atmos_sflux.sh | 4 +- ush/jjob_header.sh | 5 +- ush/link_crtm_fix.sh | 12 +- ush/load_fv3gfs_modules.sh | 52 +- ush/load_ufsda_modules.sh | 64 +- ush/minmon_xtrct_costs.pl | 5 +- ush/minmon_xtrct_gnorms.pl | 5 +- ush/minmon_xtrct_reduct.pl | 6 +- ush/module-setup.sh | 45 +- ush/oceanice_nc2grib2.sh | 319 +++ ush/ocnice_extractvars.sh | 66 + ush/ozn_xtrct.sh | 6 +- ush/parsing_model_configure_FV3.sh | 118 +- ush/parsing_namelists_CICE.sh | 462 +--- ush/parsing_namelists_FV3.sh | 130 +- ush/parsing_namelists_FV3_nest.sh | 834 +++++++ ush/parsing_namelists_MOM6.sh | 137 +- ush/parsing_namelists_WW3.sh | 18 +- ush/parsing_ufs_configure.sh | 108 + ush/preamble.sh | 85 +- ush/python/pygfs/__init__.py | 18 + ush/python/pygfs/task/aero_analysis.py | 61 +- ush/python/pygfs/task/aero_emissions.py | 84 + ush/python/pygfs/task/aero_prepobs.py | 236 ++ ush/python/pygfs/task/analysis.py | 323 ++- ush/python/pygfs/task/archive.py | 427 ++++ ush/python/pygfs/task/atm_analysis.py | 355 +-- ush/python/pygfs/task/atmens_analysis.py | 197 +- ush/python/pygfs/task/marine_bmat.py | 350 +++ ush/python/pygfs/task/marine_letkf.py | 147 ++ ush/python/pygfs/task/oceanice_products.py | 356 +++ ush/python/pygfs/task/snow_analysis.py | 627 +++++ ush/python/pygfs/task/upp.py | 17 +- ush/python/pygfs/utils/__init__.py | 0 ush/python/pygfs/utils/marine_da_utils.py | 99 + ush/radmon_err_rpt.sh | 5 +- ush/radmon_verf_angle.sh | 7 +- ush/radmon_verf_bcoef.sh | 3 +- ush/radmon_verf_bcor.sh | 3 +- ush/radmon_verf_time.sh | 8 +- ush/rstprod.sh | 2 +- ush/run_mpmd.sh | 2 +- ush/syndat_getjtbul.sh | 15 +- ush/syndat_qctropcy.sh | 56 +- ush/tropcy_relocate.sh | 98 +- ush/tropcy_relocate_extrkr.sh | 26 +- ush/wafs_mkgbl.sh | 152 ++ ush/wave_extractvars.sh | 34 + ush/wave_grib2_sbs.sh | 40 +- ush/wave_grid_interp_sbs.sh | 42 +- ush/wave_grid_moddef.sh | 26 +- ush/wave_outp_cat.sh | 2 +- ush/wave_outp_spec.sh | 56 +- ush/wave_prnc_cur.sh | 14 +- ush/wave_prnc_ice.sh | 18 +- ush/wave_tar.sh | 72 +- versions/build.gaea.ver | 6 + versions/build.hercules.ver | 3 + versions/build.jet.ver | 2 + versions/build.orion.ver | 6 +- versions/build.s4.ver | 2 + versions/build.spack.ver | 5 +- versions/build.wcoss2.ver | 2 +- versions/fix.ver | 12 +- versions/run.gaea.ver | 6 + versions/run.hera.ver | 6 +- versions/run.hercules.ver | 9 +- versions/run.jet.ver | 5 + versions/run.orion.ver | 9 +- versions/run.s4.ver | 2 + versions/run.spack.ver | 26 +- versions/run.wcoss2.ver | 8 +- workflow/applications/applications.py | 63 +- workflow/applications/gefs.py | 46 +- workflow/applications/gfs_cycled.py | 111 +- workflow/applications/gfs_forecast_only.py | 30 +- workflow/create_experiment.py | 24 +- workflow/gsl_template_hera.xml | 61 +- workflow/hosts.py | 10 +- workflow/hosts/awspw.yaml | 2 + workflow/hosts/container.yaml | 2 + workflow/hosts/gaea.yaml | 27 + workflow/hosts/hera_gsl.yaml | 8 +- workflow/hosts/hercules.yaml | 11 +- workflow/hosts/jet_gsl.yaml | 3 + workflow/hosts/orion.yaml | 9 +- workflow/hosts/s4.yaml | 2 + workflow/hosts/wcoss2.yaml | 5 + workflow/prod.yml | 11 - workflow/rocoto/gefs_tasks.py | 463 +++- workflow/rocoto/gfs_tasks.py | 1158 ++++----- workflow/rocoto/rocoto.py | 29 +- workflow/rocoto/tasks_emc.py | 128 +- workflow/rocoto/tasks_gsl.py | 130 +- workflow/rocoto/workflow_tasks.py | 8 +- workflow/rocoto_viewer.py | 2 +- workflow/setup_expt.py | 91 +- 969 files changed, 36571 insertions(+), 32791 deletions(-) create mode 100644 .github/workflows/ci_unit_tests.yaml create mode 100644 ci/Jenkinsfile create mode 100644 ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml create mode 100644 ci/cases/gfsv17/ocnanal.yaml create mode 100644 ci/cases/hires/C1152_S2SW.yaml create mode 100644 ci/cases/hires/C768_S2SW.yaml create mode 100644 ci/cases/pr/C48mx500_3DVarAOWCDA.yaml create mode 100644 ci/cases/pr/C96C48_ufs_hybatmDA.yaml create mode 100644 ci/cases/pr/C96_atm3DVar_extended.yaml create mode 100644 ci/cases/pr/C96_atmaerosnowDA.yaml create mode 100644 ci/cases/yamls/atmaerosnowDA_defaults_ci.yaml create mode 100644 ci/cases/yamls/build.yaml create mode 100644 ci/cases/yamls/gefs_ci_defaults.yaml create mode 100644 ci/cases/yamls/gfs_defaults_ci.yaml create mode 100644 ci/cases/yamls/gfs_extended_ci.yaml create mode 100644 ci/cases/yamls/soca_gfs_defaults_ci.yaml create mode 100644 ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml create mode 100644 ci/platforms/config.wcoss2 create mode 100644 ci/scripts/tests/test_create_experiment.py create mode 100755 ci/scripts/tests/test_rocotostat.py create mode 100755 ci/scripts/tests/test_setup.py create mode 100755 ci/scripts/utils/ci_utils_wrapper.sh create mode 100755 ci/scripts/utils/get_host_case_list.py create mode 100755 ci/scripts/utils/githubpr.py create mode 100755 ci/scripts/utils/launch_java_agent.sh create mode 100755 ci/scripts/utils/parse_yaml.py create mode 100755 ci/scripts/utils/pr_list_database.py create mode 100755 ci/scripts/utils/publish_logs.py create mode 100755 ci/scripts/utils/rocotostat.py create mode 120000 ci/scripts/utils/wxflow delete mode 100755 ecf/scripts/gfs/atmos/post_processing/awips_g2/jgfs_atmos_awips_g2_master.ecf create mode 100755 env/GAEA.env create mode 100755 gempak/ush/gempak_gfs_f000_gif.sh delete mode 100755 gempak/ush/gempak_gfs_f00_gif.sh delete mode 100755 gempak/ush/gempak_gfs_f12_gif.sh delete mode 100755 gempak/ush/gempak_gfs_f24_gif.sh delete mode 100755 gempak/ush/gempak_gfs_f36_gif.sh delete mode 100755 gempak/ush/gempak_gfs_f48_gif.sh create mode 100755 gempak/ush/gempak_gfs_fhhh_gif.sh create mode 100755 jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN create mode 100755 jobs/JGFS_ATMOS_WAFS create mode 100755 jobs/JGFS_ATMOS_WAFS_BLENDING_0P25 create mode 100755 jobs/JGFS_ATMOS_WAFS_GCIP create mode 100755 jobs/JGFS_ATMOS_WAFS_GRIB2 create mode 100755 jobs/JGFS_ATMOS_WAFS_GRIB2_0P25 create mode 100755 jobs/JGLOBAL_ATMENS_ANALYSIS_FV3_INCREMENT create mode 100755 jobs/JGLOBAL_ATMENS_ANALYSIS_LETKF create mode 100755 jobs/JGLOBAL_ATMOS_ENSSTAT create mode 100755 jobs/JGLOBAL_ATM_ANALYSIS_FV3_INCREMENT create mode 100755 jobs/JGLOBAL_ATM_ANALYSIS_VARIATIONAL create mode 100755 jobs/JGLOBAL_EXTRACTVARS create mode 100755 jobs/JGLOBAL_MARINE_ANALYSIS_LETKF create mode 100755 jobs/JGLOBAL_MARINE_BMAT create mode 100755 jobs/JGLOBAL_OCEANICE_PRODUCTS create mode 100755 jobs/JGLOBAL_PREP_EMISSIONS create mode 100755 jobs/JGLOBAL_PREP_OBS_AERO create mode 100755 jobs/JGLOBAL_PREP_SNOW_OBS create mode 100755 jobs/JGLOBAL_SNOW_ANALYSIS create mode 100755 jobs/rocoto/atmanlfv3inc.sh create mode 100755 jobs/rocoto/atmanlvar.sh create mode 100755 jobs/rocoto/atmensanlfv3inc.sh create mode 100755 jobs/rocoto/atmensanlletkf.sh create mode 100755 jobs/rocoto/atmos_ensstat.sh delete mode 100755 jobs/rocoto/efcs.sh create mode 100755 jobs/rocoto/extractvars.sh create mode 100755 jobs/rocoto/gempakgrb2spec.sh create mode 100755 jobs/rocoto/marineanalletkf.sh create mode 100755 jobs/rocoto/marinebmat.sh create mode 100755 jobs/rocoto/oceanice_products.sh create mode 100755 jobs/rocoto/ocnanalecen.sh create mode 100755 jobs/rocoto/prep_emissions.sh create mode 100755 jobs/rocoto/prepobsaero.sh create mode 100755 jobs/rocoto/prepsnowobs.sh create mode 100755 jobs/rocoto/snowanl.sh delete mode 100644 modulefiles/module-setup.csh.inc delete mode 100644 modulefiles/module-setup.sh.inc create mode 100644 modulefiles/module_base.gaea.lua create mode 100644 modulefiles/module_gwci.wcoss2.lua create mode 100644 modulefiles/module_gwsetup.gaea.lua create mode 100644 parm/archive/arcdir.yaml.j2 create mode 100644 parm/archive/chem.yaml.j2 create mode 100644 parm/archive/enkf.yaml.j2 create mode 100644 parm/archive/enkf_grp.yaml.j2 create mode 100644 parm/archive/enkf_restarta_grp.yaml.j2 create mode 100644 parm/archive/enkf_restartb_grp.yaml.j2 create mode 100644 parm/archive/gdas.yaml.j2 create mode 100644 parm/archive/gdas_restarta.yaml.j2 create mode 100644 parm/archive/gdas_restartb.yaml.j2 create mode 100644 parm/archive/gdasice.yaml.j2 create mode 100644 parm/archive/gdasice_restart.yaml.j2 create mode 100644 parm/archive/gdasocean.yaml.j2 create mode 100644 parm/archive/gdasocean_analysis.yaml.j2 create mode 100644 parm/archive/gdasocean_restart.yaml.j2 create mode 100644 parm/archive/gdaswave.yaml.j2 create mode 100644 parm/archive/gdaswave_restart.yaml.j2 create mode 100644 parm/archive/gfs_downstream.yaml.j2 create mode 100644 parm/archive/gfs_flux.yaml.j2 create mode 100644 parm/archive/gfs_flux_1p00.yaml.j2 create mode 100644 parm/archive/gfs_netcdfa.yaml.j2 create mode 100644 parm/archive/gfs_netcdfb.yaml.j2 create mode 100644 parm/archive/gfs_pgrb2b.yaml.j2 create mode 100644 parm/archive/gfs_restarta.yaml.j2 create mode 100644 parm/archive/gfsa.yaml.j2 create mode 100644 parm/archive/gfsb.yaml.j2 create mode 100644 parm/archive/gfswave.yaml.j2 create mode 100644 parm/archive/ice_6hravg.yaml.j2 create mode 100644 parm/archive/ice_grib2.yaml.j2 create mode 100644 parm/archive/master_enkf.yaml.j2 create mode 100644 parm/archive/master_enkfgdas.yaml.j2 create mode 100644 parm/archive/master_enkfgfs.yaml.j2 create mode 100644 parm/archive/master_gdas.yaml.j2 create mode 100644 parm/archive/master_gfs.yaml.j2 create mode 100644 parm/archive/ocean_6hravg.yaml.j2 create mode 100644 parm/archive/ocean_grib2.yaml.j2 create mode 100644 parm/config/gefs/config.atmos_ensstat create mode 100644 parm/config/gefs/config.atmos_products create mode 100644 parm/config/gefs/config.base create mode 100644 parm/config/gefs/config.extractvars create mode 100644 parm/config/gefs/config.oceanice_products create mode 100644 parm/config/gefs/config.prep_emissions create mode 100644 parm/config/gefs/config.wavepostbndpnt create mode 100644 parm/config/gefs/config.wavepostbndpntbll create mode 100644 parm/config/gefs/config.wavepostpnt create mode 100644 parm/config/gefs/config.wavepostsbs create mode 100644 parm/config/gfs/config.atmanlfv3inc create mode 100644 parm/config/gfs/config.atmanlvar create mode 100644 parm/config/gfs/config.atmensanlfv3inc create mode 100644 parm/config/gfs/config.atmensanlletkf create mode 120000 parm/config/gfs/config.base create mode 100644 parm/config/gfs/config.base.emc create mode 100644 parm/config/gfs/config.base.hera create mode 100644 parm/config/gfs/config.fbwind create mode 100644 parm/config/gfs/config.marineanalletkf create mode 100644 parm/config/gfs/config.marinebmat create mode 100644 parm/config/gfs/config.oceanice_products create mode 100644 parm/config/gfs/config.ocnanalecen create mode 100644 parm/config/gfs/config.prepobsaero create mode 100644 parm/config/gfs/config.prepsnowobs create mode 100644 parm/config/gfs/config.resources.GAEA create mode 100644 parm/config/gfs/config.resources.HERA create mode 100644 parm/config/gfs/config.resources.HERCULES create mode 100644 parm/config/gfs/config.resources.JET create mode 100644 parm/config/gfs/config.resources.ORION create mode 100644 parm/config/gfs/config.resources.S4 create mode 100644 parm/config/gfs/config.resources.WCOSS2 create mode 100644 parm/config/gfs/config.snowanl create mode 100644 parm/gdas/aero_crtm_coeff.yaml.j2 create mode 100644 parm/gdas/aero_jedi_fix.yaml.j2 create mode 100644 parm/gdas/atm_crtm_coeff.yaml.j2 create mode 100644 parm/gdas/atm_jedi_fix.yaml.j2 create mode 100644 parm/gdas/snow_jedi_fix.yaml.j2 create mode 100644 parm/gdas/staging/atm_berror_gsibec.yaml.j2 create mode 100644 parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 create mode 100644 parm/gdas/staging/atm_var_bkg.yaml.j2 create mode 100644 parm/gdas/staging/atm_var_fv3ens.yaml.j2 create mode 100644 parm/post/oceanice_products.yaml create mode 100644 parm/post/oceanice_products_gefs.yaml create mode 100644 parm/product/bufr_ij9km.txt create mode 100644 parm/product/gefs.0p25.f000.paramlist.a.txt create mode 100644 parm/product/gefs.0p25.f000.paramlist.b.txt create mode 100644 parm/product/gefs.0p25.fFFF.paramlist.a.txt create mode 100644 parm/product/gefs.0p25.fFFF.paramlist.b.txt create mode 100644 parm/product/gefs.0p50.f000.paramlist.a.txt create mode 100644 parm/product/gefs.0p50.f000.paramlist.b.txt create mode 100644 parm/product/gefs.0p50.fFFF.paramlist.a.txt create mode 100644 parm/product/gefs.0p50.fFFF.paramlist.b.txt create mode 120000 parm/product/gefs.1p00.f000.paramlist.a.txt create mode 120000 parm/product/gefs.1p00.f000.paramlist.b.txt create mode 120000 parm/product/gefs.1p00.fFFF.paramlist.a.txt create mode 120000 parm/product/gefs.1p00.fFFF.paramlist.b.txt create mode 100644 parm/product/gefs.2p50.f000.paramlist.a.txt create mode 100644 parm/product/gefs.2p50.f000.paramlist.b.txt create mode 100644 parm/product/gefs.2p50.fFFF.paramlist.a.txt create mode 100644 parm/product/gefs.2p50.fFFF.paramlist.b.txt create mode 100644 parm/product/gefs_ice_shortparmlist.parm create mode 100644 parm/product/gefs_ocn_shortparmlist.parm create mode 100644 parm/product/gefs_shortparmlist_2d.parm create mode 100644 parm/product/gefs_shortparmlist_3d_d.parm create mode 100644 parm/product/gefs_shortparmlist_3d_h.parm create mode 100644 parm/product/gefs_wav_shortparmlist.parm create mode 100644 parm/product/gfs.anl.paramlist.a.txt create mode 100644 parm/product/gfs.f000.paramlist.a.txt create mode 100644 parm/product/gfs.fFFF.paramlist.a.txt create mode 100644 parm/product/gfs.fFFF.paramlist.b.txt rename parm/transfer/{transfer_gdas_1b.list => transfer_gfs_enkfgdas_enkf_05.list} (78%) rename parm/transfer/{transfer_gfs_gempak.list => transfer_gfs_enkfgdas_enkf_10.list} (78%) create mode 100644 parm/transfer/transfer_gfs_enkfgdas_enkf_15.list rename parm/transfer/{transfer_gdas_enkf_enkf_20.list => transfer_gfs_enkfgdas_enkf_20.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_25.list => transfer_gfs_enkfgdas_enkf_25.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_30.list => transfer_gfs_enkfgdas_enkf_30.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_35.list => transfer_gfs_enkfgdas_enkf_35.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_40.list => transfer_gfs_enkfgdas_enkf_40.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_45.list => transfer_gfs_enkfgdas_enkf_45.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_50.list => transfer_gfs_enkfgdas_enkf_50.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_55.list => transfer_gfs_enkfgdas_enkf_55.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_60.list => transfer_gfs_enkfgdas_enkf_60.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_65.list => transfer_gfs_enkfgdas_enkf_65.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_70.list => transfer_gfs_enkfgdas_enkf_70.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_75.list => transfer_gfs_enkfgdas_enkf_75.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_80.list => transfer_gfs_enkfgdas_enkf_80.list} (100%) rename parm/transfer/{transfer_gdas_enkf_enkf_misc.list => transfer_gfs_enkfgdas_enkf_misc.list} (100%) rename parm/transfer/{transfer_gdas_1a.list => transfer_gfs_gdas_gdas_1a.list} (81%) create mode 100644 parm/transfer/transfer_gfs_gdas_gdas_1b.list create mode 100644 parm/transfer/transfer_gfs_gdas_gdas_1c.list rename parm/transfer/{transfer_gdas_misc.list => transfer_gfs_gdas_gdas_misc.list} (100%) rename parm/transfer/{transfer_gfs_1.list => transfer_gfs_gfs_1.list} (86%) rename parm/transfer/{transfer_gfs_10a.list => transfer_gfs_gfs_10a.list} (84%) rename parm/transfer/{transfer_gfs_10b.list => transfer_gfs_gfs_10b.list} (100%) create mode 100644 parm/transfer/transfer_gfs_gfs_2.list create mode 100644 parm/transfer/transfer_gfs_gfs_3.list create mode 100644 parm/transfer/transfer_gfs_gfs_4.list create mode 100644 parm/transfer/transfer_gfs_gfs_5.list create mode 100644 parm/transfer/transfer_gfs_gfs_6.list create mode 100644 parm/transfer/transfer_gfs_gfs_7.list create mode 100644 parm/transfer/transfer_gfs_gfs_8.list rename parm/transfer/{transfer_gfs_9a.list => transfer_gfs_gfs_9a.list} (79%) rename parm/transfer/{transfer_gfs_9b.list => transfer_gfs_gfs_9b.list} (100%) create mode 100644 parm/transfer/transfer_gfs_gfs_gempak.list rename parm/transfer/{transfer_gfs_misc.list => transfer_gfs_gfs_misc.list} (100%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_5.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_1.list} (76%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_2.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_2.list} (73%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_3.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_3.list} (76%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_4.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_4.list} (69%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_1.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_5.list} (73%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_6.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_6.list} (76%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_7.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_7.list} (82%) rename parm/transfer/{transfer_rdhpcs_gdas_enkf_enkf_8.list => transfer_rdhpcs_gfs_gdas_enkf_enkf_8.list} (76%) rename parm/transfer/{transfer_rdhpcs_gdas.list => transfer_rdhpcs_gfs_gdas_gdas.list} (82%) rename parm/transfer/{transfer_rdhpcs_gfs_nawips.list => transfer_rdhpcs_gfs_gempak.list} (90%) rename parm/transfer/{transfer_rdhpcs_gfs.list => transfer_rdhpcs_gfs_gfs.list} (90%) create mode 100755 parm/wave/glo_200_interp.inp.tmpl create mode 100755 parm/wave/ww3_grib2.glo_100.inp.tmpl delete mode 100755 parm/wmo/grib_awpgfs000.211 delete mode 100755 parm/wmo/grib_awpgfs006.211 delete mode 100755 parm/wmo/grib_awpgfs012.211 delete mode 100755 parm/wmo/grib_awpgfs018.211 delete mode 100755 parm/wmo/grib_awpgfs024.211 delete mode 100755 parm/wmo/grib_awpgfs030.211 delete mode 100755 parm/wmo/grib_awpgfs036.211 delete mode 100755 parm/wmo/grib_awpgfs042.211 delete mode 100755 parm/wmo/grib_awpgfs048.211 delete mode 100755 parm/wmo/grib_awpgfs054.211 delete mode 100755 parm/wmo/grib_awpgfs060.211 delete mode 100755 parm/wmo/grib_awpgfs066.211 delete mode 100755 parm/wmo/grib_awpgfs072.211 delete mode 100755 parm/wmo/grib_awpgfs078.211 delete mode 100755 parm/wmo/grib_awpgfs084.211 delete mode 100755 parm/wmo/grib_awpgfs090.211 delete mode 100755 parm/wmo/grib_awpgfs096.211 delete mode 100755 parm/wmo/grib_awpgfs102.211 delete mode 100755 parm/wmo/grib_awpgfs108.211 delete mode 100755 parm/wmo/grib_awpgfs114.211 delete mode 100755 parm/wmo/grib_awpgfs120.211 delete mode 100755 parm/wmo/grib_awpgfs126.211 delete mode 100755 parm/wmo/grib_awpgfs132.211 delete mode 100755 parm/wmo/grib_awpgfs138.211 delete mode 100755 parm/wmo/grib_awpgfs144.211 delete mode 100755 parm/wmo/grib_awpgfs150.211 delete mode 100755 parm/wmo/grib_awpgfs156.211 delete mode 100755 parm/wmo/grib_awpgfs162.211 delete mode 100755 parm/wmo/grib_awpgfs168.211 delete mode 100755 parm/wmo/grib_awpgfs174.211 delete mode 100755 parm/wmo/grib_awpgfs180.211 delete mode 100755 parm/wmo/grib_awpgfs186.211 delete mode 100755 parm/wmo/grib_awpgfs192.211 delete mode 100755 parm/wmo/grib_awpgfs198.211 delete mode 100755 parm/wmo/grib_awpgfs204.211 delete mode 100755 parm/wmo/grib_awpgfs210.211 delete mode 100755 parm/wmo/grib_awpgfs216.211 delete mode 100755 parm/wmo/grib_awpgfs222.211 delete mode 100755 parm/wmo/grib_awpgfs228.211 delete mode 100755 parm/wmo/grib_awpgfs234.211 delete mode 100755 parm/wmo/grib_awpgfs240.211 create mode 100755 scripts/exgdas_enkf_earc.py create mode 100755 scripts/exgdas_global_marine_analysis_letkf.py create mode 100755 scripts/exgfs_atmos_wafs_blending_0p25.sh create mode 100755 scripts/exgfs_atmos_wafs_gcip.sh create mode 100755 scripts/exgfs_atmos_wafs_grib.sh create mode 100755 scripts/exgfs_atmos_wafs_grib2.sh create mode 100755 scripts/exgfs_atmos_wafs_grib2_0p25.sh create mode 100755 scripts/exglobal_archive.py create mode 100755 scripts/exglobal_atm_analysis_fv3_increment.py create mode 100755 scripts/exglobal_atm_analysis_variational.py create mode 100755 scripts/exglobal_atmens_analysis_fv3_increment.py create mode 100755 scripts/exglobal_atmens_analysis_letkf.py create mode 100755 scripts/exglobal_atmos_ensstat.sh create mode 100755 scripts/exglobal_extractvars.sh create mode 100755 scripts/exglobal_marinebmat.py create mode 100755 scripts/exglobal_oceanice_products.py create mode 100755 scripts/exglobal_prep_emissions.py create mode 100755 scripts/exglobal_prep_obs_aero.py create mode 100755 scripts/exglobal_prep_snow_obs.py create mode 100755 scripts/exglobal_snow_analysis.py create mode 100755 test/f90nmlcmp.sh create mode 100755 test/g2cmp.sh create mode 100755 test/nccmp.sh create mode 100755 ush/atmos_ensstat.sh create mode 100755 ush/atmos_extractvars.sh create mode 100755 ush/bash_utils.sh create mode 100755 ush/check_ice_netcdf.sh create mode 100644 ush/extractvars_tools.sh mode change 100644 => 100755 ush/file_utils.sh mode change 120000 => 100755 ush/hpssarch_gen.sh mode change 100644 => 100755 ush/jjob_header.sh create mode 100755 ush/oceanice_nc2grib2.sh create mode 100755 ush/ocnice_extractvars.sh create mode 100755 ush/parsing_namelists_FV3_nest.sh create mode 100755 ush/parsing_ufs_configure.sh mode change 100644 => 100755 ush/preamble.sh create mode 100644 ush/python/pygfs/task/aero_emissions.py create mode 100644 ush/python/pygfs/task/aero_prepobs.py create mode 100644 ush/python/pygfs/task/archive.py create mode 100644 ush/python/pygfs/task/marine_bmat.py create mode 100644 ush/python/pygfs/task/marine_letkf.py create mode 100644 ush/python/pygfs/task/oceanice_products.py create mode 100644 ush/python/pygfs/task/snow_analysis.py create mode 100644 ush/python/pygfs/utils/__init__.py create mode 100644 ush/python/pygfs/utils/marine_da_utils.py create mode 100755 ush/wafs_mkgbl.sh create mode 100755 ush/wave_extractvars.sh create mode 100644 versions/build.gaea.ver create mode 100644 versions/run.gaea.ver create mode 100644 workflow/hosts/gaea.yaml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index dbebfe8f6e..3f8fe65065 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -33,6 +33,17 @@ # Change characteristics - Is this a breaking change (a change in existing functionality)? YES/NO - Does this change require a documentation update? YES/NO +- Does this change require an update to any of the following submodules? YES/NO (If YES, please add a link to any PRs that are pending.) + - [ ] EMC verif-global + - [ ] GDAS + - [ ] GFS-utils + - [ ] GSI + - [ ] GSI-monitor + - [ ] GSI-utils + - [ ] UFS-utils + - [ ] UFS-weather-model + - [ ] wxflow + # How has this been tested? _dir. For all other directories, the + names will follow --> _dir. + """ + + rel_path_dict = {} + for key, value in self.task_config.items(): + if isinstance(value, str): + if root_path in value: + rel_path = value.replace(root_path, "") + rel_key = (key[4:] if key.startswith("COMIN_") else key).lower() + "_dir" + rel_path_dict[rel_key] = rel_path + + return rel_path_dict + + @staticmethod + @logit(logger) + def _construct_arcdir_set(arcdir_j2yaml, arch_dict) -> Dict: + """Construct the list of files to send to the ARCDIR and Fit2Obs + directories from a template. + + TODO Copying Fit2Obs data doesn't belong in archiving should be + moved elsewhere. + + Parameters + ---------- + arcdir_j2yaml: str + The filename of the ARCDIR jinja template to parse. + + arch_dict: Dict + The context dictionary to parse arcdir_j2yaml with. + + Return + ------ + arcdir_set : Dict + FileHandler dictionary (i.e. with top level "mkdir" and "copy" keys) + containing all directories that need to be created and what data + files need to be copied to the ARCDIR and the Fit2Obs directory. + """ + + # Get the FileHandler dictionary for creating directories and copying + # to the ARCDIR and VFYARC directories. + arcdir_set = parse_j2yaml(arcdir_j2yaml, + arch_dict, + allow_missing=True) + + return arcdir_set + + @staticmethod + @logit(logger) + def _rename_cyclone_expt(arch_dict) -> None: + + # Rename the experiment in the tracker files from "AVNO" to the + # first 4 letters of PSLOT. + pslot4 = arch_dict.PSLOT.upper() + if len(arch_dict.PSLOT) > 4: + pslot4 = arch_dict.PSLOT[0:4].upper() + + track_dir_in = arch_dict.COMIN_ATMOS_TRACK + track_dir_out = arch_dict.COMOUT_ATMOS_TRACK + run = arch_dict.RUN + cycle_HH = strftime(arch_dict.current_cycle, "%H") + + if run == "gfs": + in_track_file = (track_dir_in + "/avno.t" + + cycle_HH + "z.cycle.trackatcfunix") + in_track_p_file = (track_dir_in + "/avnop.t" + + cycle_HH + "z.cycle.trackatcfunixp") + elif run == "gdas": + in_track_file = (track_dir_in + "/gdas.t" + + cycle_HH + "z.cycle.trackatcfunix") + in_track_p_file = (track_dir_in + "/gdasp.t" + + cycle_HH + "z.cycle.trackatcfunixp") + + if not os.path.isfile(in_track_file): + # Do not attempt to archive the outputs + return + + out_track_file = track_dir_out + "/atcfunix." + run + "." + to_YMDH(arch_dict.current_cycle) + out_track_p_file = track_dir_out + "/atcfunixp." + run + "." + to_YMDH(arch_dict.current_cycle) + + def replace_string_from_to_file(filename_in, filename_out, search_str, replace_str): + + """Write a new file from the contents of an input file while searching + and replacing ASCII strings. To prevent partial file creation, a + temporary file is created and moved to the final location only + after the search/replace is finished. + + Parameters + ---------- + filename_in : str + Input filename + + filename_out : str + Output filename + + search_str : str + ASCII string to search for + + replace_str : str + ASCII string to replace the search_str with + """ + with open(filename_in) as old_file: + lines = old_file.readlines() + + out_lines = [line.replace(search_str, replace_str) for line in lines] + + with open("/tmp/track_file", "w") as new_file: + new_file.writelines(out_lines) + + shutil.move("tmp/track_file", filename_out) + + replace_string_from_to_file(in_track_file, out_track_file, "AVNO", pslot4) + replace_string_from_to_file(in_track_p_file, out_track_p_file, "AVNO", pslot4) + + return diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index da41574fc9..4e9d37335c 100644 --- a/ush/python/pygfs/task/atm_analysis.py +++ b/ush/python/pygfs/task/atm_analysis.py @@ -11,7 +11,7 @@ FileHandler, add_to_datetime, to_fv3time, to_timedelta, to_YMDH, chdir, - parse_yamltmpl, parse_j2yaml, save_as_yaml, + parse_j2yaml, save_as_yaml, logit, Executable, WorkflowException) @@ -28,32 +28,35 @@ class AtmAnalysis(Analysis): def __init__(self, config): super().__init__(config) - _res = int(self.config.CASE[1:]) - _res_anl = int(self.config.CASE_ANL[1:]) - _window_begin = add_to_datetime(self.runtime_config.current_cycle, -to_timedelta(f"{self.config.assim_freq}H") / 2) - _fv3jedi_yaml = os.path.join(self.runtime_config.DATA, f"{self.runtime_config.CDUMP}.t{self.runtime_config.cyc:02d}z.atmvar.yaml") + _res = int(self.task_config.CASE[1:]) + _res_anl = int(self.task_config.CASE_ANL[1:]) + _window_begin = add_to_datetime(self.task_config.current_cycle, -to_timedelta(f"{self.task_config.assim_freq}H") / 2) + _jedi_yaml = os.path.join(self.task_config.DATA, f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atmvar.yaml") # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( { 'npx_ges': _res + 1, 'npy_ges': _res + 1, - 'npz_ges': self.config.LEVS - 1, - 'npz': self.config.LEVS - 1, + 'npz_ges': self.task_config.LEVS - 1, + 'npz': self.task_config.LEVS - 1, 'npx_anl': _res_anl + 1, 'npy_anl': _res_anl + 1, - 'npz_anl': self.config.LEVS - 1, + 'npz_anl': self.task_config.LEVS - 1, 'ATM_WINDOW_BEGIN': _window_begin, - 'ATM_WINDOW_LENGTH': f"PT{self.config.assim_freq}H", - 'OPREFIX': f"{self.runtime_config.CDUMP}.t{self.runtime_config.cyc:02d}z.", # TODO: CDUMP is being replaced by RUN - 'APREFIX': f"{self.runtime_config.CDUMP}.t{self.runtime_config.cyc:02d}z.", # TODO: CDUMP is being replaced by RUN - 'GPREFIX': f"gdas.t{self.runtime_config.previous_cycle.hour:02d}z.", - 'fv3jedi_yaml': _fv3jedi_yaml, + 'ATM_WINDOW_LENGTH': f"PT{self.task_config.assim_freq}H", + '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.", + 'GPREFIX': f"gdas.t{self.task_config.previous_cycle.hour:02d}z.", + 'jedi_yaml': _jedi_yaml, + 'atm_obsdatain_path': f"{self.task_config.DATA}/obs/", + 'atm_obsdataout_path': f"{self.task_config.DATA}/diags/", + 'BKG_TSTEP': "PT1H" # Placeholder for 4D applications } ) - # task_config is everything that this task should need - self.task_config = AttrDict(**self.config, **self.runtime_config, **local_dict) + # Extend task_config with local_dict + self.task_config = AttrDict(**self.task_config, **local_dict) @logit(logger) def initialize(self: Analysis) -> None: @@ -71,41 +74,38 @@ def initialize(self: Analysis) -> None: super().initialize() # stage CRTM fix files - crtm_fix_list_path = os.path.join(self.task_config.HOMEgfs, 'parm', 'gdas', 'atm_crtm_coeff.yaml') - logger.debug(f"Staging CRTM fix files from {crtm_fix_list_path}") - crtm_fix_list = parse_j2yaml(crtm_fix_list_path, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.CRTM_FIX_YAML}") + crtm_fix_list = parse_j2yaml(self.task_config.CRTM_FIX_YAML, self.task_config) FileHandler(crtm_fix_list).sync() # stage fix files - jedi_fix_list_path = os.path.join(self.task_config.HOMEgfs, 'parm', 'gdas', 'atm_jedi_fix.yaml') - logger.debug(f"Staging JEDI fix files from {jedi_fix_list_path}") - jedi_fix_list = parse_j2yaml(jedi_fix_list_path, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") + jedi_fix_list = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_list).sync() # stage static background error files, otherwise it will assume ID matrix - logger.debug(f"Stage files for STATICB_TYPE {self.task_config.STATICB_TYPE}") - FileHandler(self.get_berror_dict(self.task_config)).sync() + logger.info(f"Stage files for STATICB_TYPE {self.task_config.STATICB_TYPE}") + if self.task_config.STATICB_TYPE != 'identity': + berror_staging_dict = parse_j2yaml(self.task_config.BERROR_STAGING_YAML, self.task_config) + else: + berror_staging_dict = {} + FileHandler(berror_staging_dict).sync() # stage ensemble files for use in hybrid background error if self.task_config.DOHYBVAR: logger.debug(f"Stage ensemble files for DOHYBVAR {self.task_config.DOHYBVAR}") - localconf = AttrDict() - keys = ['COM_ATMOS_RESTART_TMPL', 'previous_cycle', 'ROTDIR', 'RUN', - 'NMEM_ENS', 'DATA', 'current_cycle', 'ntiles'] - for key in keys: - localconf[key] = self.task_config[key] - localconf.RUN = 'enkf' + self.task_config.RUN - localconf.dirname = 'ens' - FileHandler(self.get_fv3ens_dict(localconf)).sync() + fv3ens_staging_dict = parse_j2yaml(self.task_config.FV3ENS_STAGING_YAML, self.task_config) + FileHandler(fv3ens_staging_dict).sync() # stage backgrounds - FileHandler(self.get_bkg_dict(AttrDict(self.task_config))).sync() + logger.info(f"Staging background files from {self.task_config.VAR_BKG_STAGING_YAML}") + bkg_staging_dict = parse_j2yaml(self.task_config.VAR_BKG_STAGING_YAML, self.task_config) + FileHandler(bkg_staging_dict).sync() # generate variational YAML file - logger.debug(f"Generate variational YAML file: {self.task_config.fv3jedi_yaml}") - varda_yaml = parse_j2yaml(self.task_config.ATMVARYAML, self.task_config) - save_as_yaml(varda_yaml, self.task_config.fv3jedi_yaml) - logger.info(f"Wrote variational YAML to: {self.task_config.fv3jedi_yaml}") + logger.debug(f"Generate variational YAML file: {self.task_config.jedi_yaml}") + save_as_yaml(self.task_config.jedi_config, self.task_config.jedi_yaml) + logger.info(f"Wrote variational YAML to: {self.task_config.jedi_yaml}") # need output dir for diags and anl logger.debug("Create empty output [anl, diags] directories to receive output from executable") @@ -116,14 +116,16 @@ def initialize(self: Analysis) -> None: FileHandler({'mkdir': newdirs}).sync() @logit(logger) - def execute(self: Analysis) -> None: + def variational(self: Analysis) -> None: chdir(self.task_config.DATA) - exec_cmd = Executable(self.task_config.APRUN_ATMANL) - exec_name = os.path.join(self.task_config.DATA, 'fv3jedi_var.x') + exec_cmd = Executable(self.task_config.APRUN_ATMANLVAR) + exec_name = os.path.join(self.task_config.DATA, 'gdas.x') exec_cmd.add_default_arg(exec_name) - exec_cmd.add_default_arg(self.task_config.fv3jedi_yaml) + exec_cmd.add_default_arg('fv3jedi') + exec_cmd.add_default_arg('variational') + exec_cmd.add_default_arg(self.task_config.jedi_yaml) try: logger.debug(f"Executing {exec_cmd}") @@ -135,6 +137,31 @@ def execute(self: Analysis) -> None: pass + @logit(logger) + def init_fv3_increment(self: Analysis) -> None: + # Setup JEDI YAML file + self.task_config.jedi_yaml = os.path.join(self.task_config.DATA, + f"{self.task_config.JCB_ALGO}.yaml") + save_as_yaml(self.get_jedi_config(self.task_config.JCB_ALGO), self.task_config.jedi_yaml) + + # Link JEDI executable to run directory + self.task_config.jedi_exe = self.link_jediexe() + + @logit(logger) + def fv3_increment(self: Analysis) -> None: + # Run executable + exec_cmd = Executable(self.task_config.APRUN_ATMANLFV3INC) + exec_cmd.add_default_arg(self.task_config.jedi_exe) + exec_cmd.add_default_arg(self.task_config.jedi_yaml) + + try: + logger.debug(f"Executing {exec_cmd}") + exec_cmd() + except OSError: + raise OSError(f"Failed to execute {exec_cmd}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exec_cmd}") + @logit(logger) def finalize(self: Analysis) -> None: """Finalize a global atm analysis @@ -152,7 +179,7 @@ def finalize(self: Analysis) -> None: atmstat = os.path.join(self.task_config.COM_ATMOS_ANALYSIS, f"{self.task_config.APREFIX}atmstat") # get list of diag files to put in tarball - diags = glob.glob(os.path.join(self.task_config.DATA, 'diags', 'diag*nc4')) + diags = glob.glob(os.path.join(self.task_config.DATA, 'diags', 'diag*nc')) logger.info(f"Compressing {len(diags)} diag files to {atmstat}.gz") @@ -170,9 +197,9 @@ def finalize(self: Analysis) -> None: archive.add(diaggzip, arcname=os.path.basename(diaggzip)) # copy full YAML from executable to ROTDIR - logger.info(f"Copying {self.task_config.fv3jedi_yaml} to {self.task_config.COM_ATMOS_ANALYSIS}") - src = os.path.join(self.task_config.DATA, f"{self.task_config.CDUMP}.t{self.task_config.cyc:02d}z.atmvar.yaml") - dest = os.path.join(self.task_config.COM_ATMOS_ANALYSIS, f"{self.task_config.CDUMP}.t{self.task_config.cyc:02d}z.atmvar.yaml") + logger.info(f"Copying {self.task_config.jedi_yaml} to {self.task_config.COM_ATMOS_ANALYSIS}") + src = os.path.join(self.task_config.DATA, f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atmvar.yaml") + dest = os.path.join(self.task_config.COM_ATMOS_ANALYSIS, f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atmvar.yaml") logger.debug(f"Copying {src} to {dest}") yaml_copy = { 'mkdir': [self.task_config.COM_ATMOS_ANALYSIS], @@ -212,235 +239,17 @@ def finalize(self: Analysis) -> None: } FileHandler(bias_copy).sync() - # Create UFS model readable atm increment file from UFS-DA atm increment - logger.info("Create UFS model readable atm increment file from UFS-DA atm increment") - self.jedi2fv3inc() + # Copy FV3 atm increment to comrot directory + logger.info("Copy UFS model readable atm increment file") + cdate = to_fv3time(self.task_config.current_cycle) + cdate_inc = cdate.replace('.', '_') + src = os.path.join(self.task_config.DATA, 'anl', f"atminc.{cdate_inc}z.nc4") + dest = os.path.join(self.task_config.COM_ATMOS_ANALYSIS, f'{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atminc.nc') + logger.debug(f"Copying {src} to {dest}") + inc_copy = { + 'copy': [[src, dest]] + } + FileHandler(inc_copy).sync() def clean(self): super().clean() - - @logit(logger) - def get_bkg_dict(self, task_config: Dict[str, Any]) -> Dict[str, List[str]]: - """Compile a dictionary of model background files to copy - - This method constructs a dictionary of FV3 restart files (coupler, core, tracer) - that are needed for global atm DA and returns said dictionary for use by the FileHandler class. - - Parameters - ---------- - task_config: Dict - a dictionary containing all of the configuration needed for the task - - Returns - ---------- - bkg_dict: Dict - a dictionary containing the list of model background files to copy for FileHandler - """ - # NOTE for now this is FV3 restart files and just assumed to be fh006 - - # get FV3 restart files, this will be a lot simpler when using history files - rst_dir = os.path.join(task_config.COM_ATMOS_RESTART_PREV) # for now, option later? - run_dir = os.path.join(task_config.DATA, 'bkg') - - # Start accumulating list of background files to copy - bkglist = [] - - # atm DA needs coupler - basename = f'{to_fv3time(task_config.current_cycle)}.coupler.res' - bkglist.append([os.path.join(rst_dir, basename), os.path.join(run_dir, basename)]) - - # atm DA needs core, srf_wnd, tracer, phy_data, sfc_data - for ftype in ['core', 'srf_wnd', 'tracer']: - template = f'{to_fv3time(self.task_config.current_cycle)}.fv_{ftype}.res.tile{{tilenum}}.nc' - for itile in range(1, task_config.ntiles + 1): - basename = template.format(tilenum=itile) - bkglist.append([os.path.join(rst_dir, basename), os.path.join(run_dir, basename)]) - - for ftype in ['phy_data', 'sfc_data']: - template = f'{to_fv3time(self.task_config.current_cycle)}.{ftype}.tile{{tilenum}}.nc' - for itile in range(1, task_config.ntiles + 1): - basename = template.format(tilenum=itile) - bkglist.append([os.path.join(rst_dir, basename), os.path.join(run_dir, basename)]) - - bkg_dict = { - 'mkdir': [run_dir], - 'copy': bkglist, - } - return bkg_dict - - @logit(logger) - def get_berror_dict(self, config: Dict[str, Any]) -> Dict[str, List[str]]: - """Compile a dictionary of background error files to copy - - This method will construct a dictionary of either bump of gsibec background - error files for global atm DA and return said dictionary for use by the - FileHandler class. - - Parameters - ---------- - config: Dict - a dictionary containing all of the configuration needed - - Returns - ---------- - berror_dict: Dict - a dictionary containing the list of atm background error files to copy for FileHandler - """ - SUPPORTED_BERROR_STATIC_MAP = {'identity': self._get_berror_dict_identity, - 'bump': self._get_berror_dict_bump, - 'gsibec': self._get_berror_dict_gsibec} - - try: - berror_dict = SUPPORTED_BERROR_STATIC_MAP[config.STATICB_TYPE](config) - except KeyError: - raise KeyError(f"{config.STATICB_TYPE} is not a supported background error type.\n" + - f"Currently supported background error types are:\n" + - f'{" | ".join(SUPPORTED_BERROR_STATIC_MAP.keys())}') - - return berror_dict - - @staticmethod - @logit(logger) - def _get_berror_dict_identity(config: Dict[str, Any]) -> Dict[str, List[str]]: - """Identity BE does not need any files for staging. - - This is a private method and should not be accessed directly. - - Parameters - ---------- - config: Dict - a dictionary containing all of the configuration needed - Returns - ---------- - berror_dict: Dict - Empty dictionary [identity BE needs not files to stage] - """ - logger.info(f"Identity background error does not use staged files. Return empty dictionary") - return {} - - @staticmethod - @logit(logger) - def _get_berror_dict_bump(config: Dict[str, Any]) -> Dict[str, List[str]]: - """Compile a dictionary of atm bump background error files to copy - - This method will construct a dictionary of atm bump background error - files for global atm DA and return said dictionary to the parent - - This is a private method and should not be accessed directly. - - Parameters - ---------- - config: Dict - a dictionary containing all of the configuration needed - - Returns - ---------- - berror_dict: Dict - a dictionary of atm bump background error files to copy for FileHandler - """ - # BUMP atm static-B needs nicas, cor_rh, cor_rv and stddev files. - b_dir = config.BERROR_DATA_DIR - b_datestr = to_fv3time(config.BERROR_DATE) - berror_list = [] - for ftype in ['cor_rh', 'cor_rv', 'stddev']: - coupler = f'{b_datestr}.{ftype}.coupler.res' - berror_list.append([ - os.path.join(b_dir, coupler), os.path.join(config.DATA, 'berror', coupler) - ]) - - template = '{b_datestr}.{ftype}.fv_tracer.res.tile{{tilenum}}.nc' - for itile in range(1, config.ntiles + 1): - tracer = template.format(tilenum=itile) - berror_list.append([ - os.path.join(b_dir, tracer), os.path.join(config.DATA, 'berror', tracer) - ]) - - nproc = config.ntiles * config.layout_x * config.layout_y - for nn in range(1, nproc + 1): - berror_list.append([ - os.path.join(b_dir, f'nicas_aero_nicas_local_{nproc:06}-{nn:06}.nc'), - os.path.join(config.DATA, 'berror', f'nicas_aero_nicas_local_{nproc:06}-{nn:06}.nc') - ]) - - # create dictionary of background error files to stage - berror_dict = { - 'mkdir': [os.path.join(config.DATA, 'berror')], - 'copy': berror_list, - } - return berror_dict - - @staticmethod - @logit(logger) - def _get_berror_dict_gsibec(config: Dict[str, Any]) -> Dict[str, List[str]]: - """Compile a dictionary of atm gsibec background error files to copy - - This method will construct a dictionary of atm gsibec background error - files for global atm DA and return said dictionary to the parent - - This is a private method and should not be accessed directly. - - Parameters - ---------- - config: Dict - a dictionary containing all of the configuration needed - - Returns - ---------- - berror_dict: Dict - a dictionary of atm gsibec background error files to copy for FileHandler - """ - # GSI atm static-B needs namelist and coefficient files. - b_dir = os.path.join(config.HOMEgfs, 'fix', 'gdas', 'gsibec', config.CASE_ANL) - berror_list = [] - for ftype in ['gfs_gsi_global.nml', 'gsi-coeffs-gfs-global.nc4']: - berror_list.append([ - os.path.join(b_dir, ftype), - os.path.join(config.DATA, 'berror', ftype) - ]) - - # create dictionary of background error files to stage - berror_dict = { - 'mkdir': [os.path.join(config.DATA, 'berror')], - 'copy': berror_list, - } - return berror_dict - - @logit(logger) - def jedi2fv3inc(self: Analysis) -> None: - """Generate UFS model readable analysis increment - - This method writes a UFS DA atm increment in UFS model readable format. - This includes: - - write UFS-DA atm increments using variable names expected by UFS model - - compute and write delp increment - - compute and write hydrostatic delz increment - - Please note that some of these steps are temporary and will be modified - once the modle is able to directly read atm increments. - - """ - # Select the atm guess file based on the analysis and background resolutions - # Fields from the atm guess are used to compute the delp and delz increments - case_anl = int(self.task_config.CASE_ANL[1:]) - case = int(self.task_config.CASE[1:]) - - file = f"{self.task_config.GPREFIX}" + "atmf006" + f"{'' if case_anl == case else '.ensres'}" + ".nc" - atmges_fv3 = os.path.join(self.task_config.COM_ATMOS_HISTORY_PREV, file) - - # Set the path/name to the input UFS-DA atm increment file (atminc_jedi) - # and the output UFS model atm increment file (atminc_fv3) - cdate = to_fv3time(self.task_config.current_cycle) - cdate_inc = cdate.replace('.', '_') - atminc_jedi = os.path.join(self.task_config.DATA, 'anl', f'atminc.{cdate_inc}z.nc4') - atminc_fv3 = os.path.join(self.task_config.COM_ATMOS_ANALYSIS, f"{self.task_config.CDUMP}.t{self.task_config.cyc:02d}z.atminc.nc") - - # Reference the python script which does the actual work - incpy = os.path.join(self.task_config.HOMEgfs, 'ush/jediinc2fv3.py') - - # Execute incpy to create the UFS model atm increment file - cmd = Executable(incpy) - cmd.add_default_arg(atmges_fv3) - cmd.add_default_arg(atminc_jedi) - cmd.add_default_arg(atminc_fv3) - logger.debug(f"Executing {cmd}") - cmd(output='stdout', error='stderr') diff --git a/ush/python/pygfs/task/atmens_analysis.py b/ush/python/pygfs/task/atmens_analysis.py index 9cf84c07c7..bd5112050e 100644 --- a/ush/python/pygfs/task/atmens_analysis.py +++ b/ush/python/pygfs/task/atmens_analysis.py @@ -11,7 +11,7 @@ FileHandler, add_to_datetime, to_fv3time, to_timedelta, to_YMDH, to_YMD, chdir, - parse_yamltmpl, parse_j2yaml, save_as_yaml, + parse_j2yaml, save_as_yaml, logit, Executable, WorkflowException, @@ -29,28 +29,31 @@ class AtmEnsAnalysis(Analysis): def __init__(self, config): super().__init__(config) - _res = int(self.config.CASE_ENS[1:]) - _window_begin = add_to_datetime(self.runtime_config.current_cycle, -to_timedelta(f"{self.config.assim_freq}H") / 2) - _fv3jedi_yaml = os.path.join(self.runtime_config.DATA, f"{self.runtime_config.CDUMP}.t{self.runtime_config.cyc:02d}z.atmens.yaml") + _res = int(self.task_config.CASE_ENS[1:]) + _window_begin = add_to_datetime(self.task_config.current_cycle, -to_timedelta(f"{self.task_config.assim_freq}H") / 2) + _jedi_yaml = os.path.join(self.task_config.DATA, f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atmens.yaml") # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( { 'npx_ges': _res + 1, 'npy_ges': _res + 1, - 'npz_ges': self.config.LEVS - 1, - 'npz': self.config.LEVS - 1, + 'npz_ges': self.task_config.LEVS - 1, + 'npz': self.task_config.LEVS - 1, 'ATM_WINDOW_BEGIN': _window_begin, - 'ATM_WINDOW_LENGTH': f"PT{self.config.assim_freq}H", - 'OPREFIX': f"{self.config.EUPD_CYC}.t{self.runtime_config.cyc:02d}z.", # TODO: CDUMP is being replaced by RUN - 'APREFIX': f"{self.runtime_config.CDUMP}.t{self.runtime_config.cyc:02d}z.", # TODO: CDUMP is being replaced by RUN - 'GPREFIX': f"gdas.t{self.runtime_config.previous_cycle.hour:02d}z.", - 'fv3jedi_yaml': _fv3jedi_yaml, + 'ATM_WINDOW_LENGTH': f"PT{self.task_config.assim_freq}H", + 'OPREFIX': f"{self.task_config.EUPD_CYC}.t{self.task_config.cyc:02d}z.", + 'APREFIX': f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.", + 'GPREFIX': f"gdas.t{self.task_config.previous_cycle.hour:02d}z.", + 'jedi_yaml': _jedi_yaml, + 'atm_obsdatain_path': f"./obs/", + 'atm_obsdataout_path': f"./diags/", + 'BKG_TSTEP': "PT1H" # Placeholder for 4D applications } ) - # task_config is everything that this task should need - self.task_config = AttrDict(**self.config, **self.runtime_config, **local_dict) + # Extend task_config with local_dict + self.task_config = AttrDict(**self.task_config, **local_dict) @logit(logger) def initialize(self: Analysis) -> None: @@ -74,54 +77,25 @@ def initialize(self: Analysis) -> None: """ super().initialize() - # Make member directories in DATA for background and in DATA and ROTDIR for analysis files - # create template dictionary for output member analysis directories - template_inc = self.task_config.COM_ATMOS_ANALYSIS_TMPL - tmpl_inc_dict = { - 'ROTDIR': self.task_config.ROTDIR, - 'RUN': self.task_config.RUN, - 'YMD': to_YMD(self.task_config.current_cycle), - 'HH': self.task_config.current_cycle.strftime('%H') - } - dirlist = [] - for imem in range(1, self.task_config.NMEM_ENS + 1): - dirlist.append(os.path.join(self.task_config.DATA, 'bkg', f'mem{imem:03d}')) - dirlist.append(os.path.join(self.task_config.DATA, 'anl', f'mem{imem:03d}')) - - # create output directory path for member analysis - tmpl_inc_dict['MEMDIR'] = f"mem{imem:03d}" - incdir = Template.substitute_structure(template_inc, TemplateConstants.DOLLAR_CURLY_BRACE, tmpl_inc_dict.get) - dirlist.append(incdir) - - FileHandler({'mkdir': dirlist}).sync() - # stage CRTM fix files - crtm_fix_list_path = os.path.join(self.task_config.HOMEgfs, 'parm', 'gdas', 'atm_crtm_coeff.yaml') - logger.debug(f"Staging CRTM fix files from {crtm_fix_list_path}") - crtm_fix_list = parse_j2yaml(crtm_fix_list_path, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.CRTM_FIX_YAML}") + crtm_fix_list = parse_j2yaml(self.task_config.CRTM_FIX_YAML, self.task_config) FileHandler(crtm_fix_list).sync() # stage fix files - jedi_fix_list_path = os.path.join(self.task_config.HOMEgfs, 'parm', 'gdas', 'atm_jedi_fix.yaml') - logger.debug(f"Staging JEDI fix files from {jedi_fix_list_path}") - jedi_fix_list = parse_j2yaml(jedi_fix_list_path, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") + jedi_fix_list = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_list).sync() # stage backgrounds - logger.debug(f"Stage ensemble member background files") - localconf = AttrDict() - keys = ['COM_ATMOS_RESTART_TMPL', 'previous_cycle', 'ROTDIR', 'RUN', - 'NMEM_ENS', 'DATA', 'current_cycle', 'ntiles'] - for key in keys: - localconf[key] = self.task_config[key] - localconf.dirname = 'bkg' - FileHandler(self.get_fv3ens_dict(localconf)).sync() + logger.info(f"Stage ensemble member background files") + bkg_staging_dict = parse_j2yaml(self.task_config.LGETKF_BKG_STAGING_YAML, self.task_config) + FileHandler(bkg_staging_dict).sync() # generate ensemble da YAML file - logger.debug(f"Generate ensemble da YAML file: {self.task_config.fv3jedi_yaml}") - ensda_yaml = parse_j2yaml(self.task_config.ATMENSYAML, self.task_config) - save_as_yaml(ensda_yaml, self.task_config.fv3jedi_yaml) - logger.info(f"Wrote ensemble da YAML to: {self.task_config.fv3jedi_yaml}") + logger.debug(f"Generate ensemble da YAML file: {self.task_config.jedi_yaml}") + save_as_yaml(self.task_config.jedi_config, self.task_config.jedi_yaml) + logger.info(f"Wrote ensemble da YAML to: {self.task_config.jedi_yaml}") # need output dir for diags and anl logger.debug("Create empty output [anl, diags] directories to receive output from executable") @@ -132,7 +106,7 @@ def initialize(self: Analysis) -> None: FileHandler({'mkdir': newdirs}).sync() @logit(logger) - def execute(self: Analysis) -> None: + def letkf(self: Analysis) -> None: """Execute a global atmens analysis This method will execute a global atmens analysis using JEDI. @@ -150,10 +124,13 @@ def execute(self: Analysis) -> None: """ chdir(self.task_config.DATA) - exec_cmd = Executable(self.task_config.APRUN_ATMENSANL) - exec_name = os.path.join(self.task_config.DATA, 'fv3jedi_letkf.x') + exec_cmd = Executable(self.task_config.APRUN_ATMENSANLLETKF) + exec_name = os.path.join(self.task_config.DATA, 'gdas.x') + exec_cmd.add_default_arg(exec_name) - exec_cmd.add_default_arg(self.task_config.fv3jedi_yaml) + exec_cmd.add_default_arg('fv3jedi') + exec_cmd.add_default_arg('localensembleda') + exec_cmd.add_default_arg(self.task_config.jedi_yaml) try: logger.debug(f"Executing {exec_cmd}") @@ -165,6 +142,31 @@ def execute(self: Analysis) -> None: pass + @logit(logger) + def init_fv3_increment(self: Analysis) -> None: + # Setup JEDI YAML file + self.task_config.jedi_yaml = os.path.join(self.task_config.DATA, + f"{self.task_config.JCB_ALGO}.yaml") + save_as_yaml(self.get_jedi_config(self.task_config.JCB_ALGO), self.task_config.jedi_yaml) + + # Link JEDI executable to run directory + self.task_config.jedi_exe = self.link_jediexe() + + @logit(logger) + def fv3_increment(self: Analysis) -> None: + # Run executable + exec_cmd = Executable(self.task_config.APRUN_ATMENSANLFV3INC) + exec_cmd.add_default_arg(self.task_config.jedi_exe) + exec_cmd.add_default_arg(self.task_config.jedi_yaml) + + try: + logger.debug(f"Executing {exec_cmd}") + exec_cmd() + except OSError: + raise OSError(f"Failed to execute {exec_cmd}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exec_cmd}") + @logit(logger) def finalize(self: Analysis) -> None: """Finalize a global atmens analysis @@ -188,7 +190,7 @@ def finalize(self: Analysis) -> None: atmensstat = os.path.join(self.task_config.COM_ATMOS_ANALYSIS_ENS, f"{self.task_config.APREFIX}atmensstat") # get list of diag files to put in tarball - diags = glob.glob(os.path.join(self.task_config.DATA, 'diags', 'diag*nc4')) + diags = glob.glob(os.path.join(self.task_config.DATA, 'diags', 'diag*nc')) logger.info(f"Compressing {len(diags)} diag files to {atmensstat}.gz") @@ -206,9 +208,9 @@ def finalize(self: Analysis) -> None: archive.add(diaggzip, arcname=os.path.basename(diaggzip)) # copy full YAML from executable to ROTDIR - logger.info(f"Copying {self.task_config.fv3jedi_yaml} to {self.task_config.COM_ATMOS_ANALYSIS_ENS}") - src = os.path.join(self.task_config.DATA, f"{self.task_config.CDUMP}.t{self.task_config.cyc:02d}z.atmens.yaml") - dest = os.path.join(self.task_config.COM_ATMOS_ANALYSIS_ENS, f"{self.task_config.CDUMP}.t{self.task_config.cyc:02d}z.atmens.yaml") + logger.info(f"Copying {self.task_config.jedi_yaml} to {self.task_config.COM_ATMOS_ANALYSIS_ENS}") + src = os.path.join(self.task_config.DATA, f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atmens.yaml") + dest = os.path.join(self.task_config.COM_ATMOS_ANALYSIS_ENS, f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atmens.yaml") logger.debug(f"Copying {src} to {dest}") yaml_copy = { 'mkdir': [self.task_config.COM_ATMOS_ANALYSIS_ENS], @@ -216,42 +218,6 @@ def finalize(self: Analysis) -> None: } FileHandler(yaml_copy).sync() - # Create UFS model readable atm increment file from UFS-DA atm increment - logger.info("Create UFS model readable atm increment file from UFS-DA atm increment") - self.jedi2fv3inc() - - def clean(self): - super().clean() - - @logit(logger) - def jedi2fv3inc(self: Analysis) -> None: - """Generate UFS model readable analysis increment - - This method writes a UFS DA atm increment in UFS model readable format. - This includes: - - write UFS-DA atm increments using variable names expected by UFS model - - compute and write delp increment - - compute and write hydrostatic delz increment - - Please note that some of these steps are temporary and will be modified - once the modle is able to directly read atm increments. - - Parameters - ---------- - Analysis: parent class for GDAS task - - Returns - ---------- - None - """ - # Select the atm guess file based on the analysis and background resolutions - # Fields from the atm guess are used to compute the delp and delz increments - cdate = to_fv3time(self.task_config.current_cycle) - cdate_inc = cdate.replace('.', '_') - - # Reference the python script which does the actual work - incpy = os.path.join(self.task_config.HOMEgfs, 'ush/jediinc2fv3.py') - # create template dictionaries template_inc = self.task_config.COM_ATMOS_ANALYSIS_TMPL tmpl_inc_dict = { @@ -261,14 +227,10 @@ def jedi2fv3inc(self: Analysis) -> None: 'HH': self.task_config.current_cycle.strftime('%H') } - template_ges = self.task_config.COM_ATMOS_HISTORY_TMPL - tmpl_ges_dict = { - 'ROTDIR': self.task_config.ROTDIR, - 'RUN': self.task_config.RUN, - 'YMD': to_YMD(self.task_config.previous_cycle), - 'HH': self.task_config.previous_cycle.strftime('%H') - } - + # copy FV3 atm increment to comrot directory + logger.info("Copy UFS model readable atm increment file") + cdate = to_fv3time(self.task_config.current_cycle) + cdate_inc = cdate.replace('.', '_') # loop over ensemble members for imem in range(1, self.task_config.NMEM_ENS + 1): memchar = f"mem{imem:03d}" @@ -276,20 +238,15 @@ def jedi2fv3inc(self: Analysis) -> None: # create output path for member analysis increment tmpl_inc_dict['MEMDIR'] = memchar incdir = Template.substitute_structure(template_inc, TemplateConstants.DOLLAR_CURLY_BRACE, tmpl_inc_dict.get) + src = os.path.join(self.task_config.DATA, 'anl', memchar, f"atminc.{cdate_inc}z.nc4") + dest = os.path.join(incdir, f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.atminc.nc") - # rewrite UFS-DA atmens increments - tmpl_ges_dict['MEMDIR'] = memchar - gesdir = Template.substitute_structure(template_ges, TemplateConstants.DOLLAR_CURLY_BRACE, tmpl_ges_dict.get) - atmges_fv3 = os.path.join(gesdir, f"{self.task_config.CDUMP}.t{self.task_config.previous_cycle.hour:02d}z.atmf006.nc") - atminc_jedi = os.path.join(self.task_config.DATA, 'anl', memchar, f'atminc.{cdate_inc}z.nc4') - atminc_fv3 = os.path.join(incdir, f"{self.task_config.CDUMP}.t{self.task_config.cyc:02d}z.atminc.nc") - - # Execute incpy to create the UFS model atm increment file - # TODO: use MPMD or parallelize with mpi4py - # See https://github.com/NOAA-EMC/global-workflow/pull/1373#discussion_r1173060656 - cmd = Executable(incpy) - cmd.add_default_arg(atmges_fv3) - cmd.add_default_arg(atminc_jedi) - cmd.add_default_arg(atminc_fv3) - logger.debug(f"Executing {cmd}") - cmd(output='stdout', error='stderr') + # copy increment + logger.debug(f"Copying {src} to {dest}") + inc_copy = { + 'copy': [[src, dest]] + } + FileHandler(inc_copy).sync() + + def clean(self): + super().clean() diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py new file mode 100644 index 0000000000..9d64e621c9 --- /dev/null +++ b/ush/python/pygfs/task/marine_bmat.py @@ -0,0 +1,350 @@ +#!/usr/bin/env python3 + +import os +import glob +from logging import getLogger +import pygfs.utils.marine_da_utils as mdau + +from wxflow import (AttrDict, + FileHandler, + add_to_datetime, to_timedelta, + chdir, + parse_j2yaml, + logit, + Executable, + Task) + +logger = getLogger(__name__.split('.')[-1]) + + +class MarineBMat(Task): + """ + Class for global marine B-matrix tasks + """ + @logit(logger, name="MarineBMat") + def __init__(self, config): + super().__init__(config) + _home_gdas = os.path.join(self.task_config.HOMEgfs, 'sorc', 'gdas.cd') + _calc_scale_exec = os.path.join(self.task_config.HOMEgfs, 'ush', 'soca', 'calc_scales.py') + _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 + if self.task_config.NMEM_ENS > 0: + _enspert_relpath = os.path.relpath(self.task_config.DATAenspert, self.task_config.DATA) + else: + _enspert_relpath = None + + # Create a local dictionary that is repeatedly used across this class + local_dict = AttrDict( + { + 'HOMEgdas': _home_gdas, + 'MARINE_WINDOW_BEGIN': _window_begin, + 'MARINE_WINDOW_END': _window_end, + 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, + 'BERROR_YAML_DIR': os.path.join(_home_gdas, 'parm', 'soca', 'berror'), + 'GRID_GEN_YAML': os.path.join(_home_gdas, 'parm', 'soca', 'gridgen', 'gridgen.yaml'), + 'MARINE_ENSDA_STAGE_BKG_YAML_TMPL': os.path.join(_home_gdas, 'parm', 'soca', 'ensda', 'stage_ens_mem.yaml.j2'), + 'MARINE_DET_STAGE_BKG_YAML_TMPL': os.path.join(_home_gdas, 'parm', 'soca', 'soca_det_bkg_stage.yaml.j2'), + 'ENSPERT_RELPATH': _enspert_relpath, + 'CALC_SCALE_EXEC': _calc_scale_exec, + 'APREFIX': f"{self.task_config.RUN}.t{self.task_config.cyc:02d}z.", + } + ) + + # Extend task_config with local_dict + self.task_config = AttrDict(**self.task_config, **local_dict) + + @logit(logger) + def initialize(self: Task) -> None: + """Initialize a global B-matrix + + This method will initialize a global B-Matrix. + This includes: + - staging the deterministic backgrounds (middle of window) + - staging SOCA fix files + - staging static ensemble members (optional) + - staging ensemble members (optional) + - generating the YAML files for the JEDI and GDASApp executables + - creating output directories + """ + super().initialize() + + # stage fix files + logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") + soca_fix_list = parse_j2yaml(self.task_config.SOCA_FIX_YAML_TMPL, self.task_config) + FileHandler(soca_fix_list).sync() + + # prepare the MOM6 input.nml + mdau.prep_input_nml(self.task_config) + + # stage backgrounds + # TODO(G): Check ocean backgrounds dates for consistency + bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_YAML_TMPL, self.task_config) + FileHandler(bkg_list).sync() + for cice_fname in ['./INPUT/cice.res.nc', './bkg/ice.bkg.f006.nc', './bkg/ice.bkg.f009.nc']: + mdau.cice_hist2fms(cice_fname, cice_fname) + + # stage the grid generation yaml + FileHandler({'copy': [[self.task_config.GRID_GEN_YAML, + os.path.join(self.task_config.DATA, 'gridgen.yaml')]]}).sync() + + # generate the variance partitioning YAML file + logger.debug("Generate variance partitioning YAML file") + diagb_config = parse_j2yaml(path=os.path.join(self.task_config.BERROR_YAML_DIR, 'soca_diagb.yaml.j2'), + data=self.task_config) + diagb_config.save(os.path.join(self.task_config.DATA, 'soca_diagb.yaml')) + + # generate the vertical decorrelation scale YAML file + logger.debug("Generate the vertical correlation scale YAML file") + vtscales_config = parse_j2yaml(path=os.path.join(self.task_config.BERROR_YAML_DIR, 'soca_vtscales.yaml.j2'), + data=self.task_config) + vtscales_config.save(os.path.join(self.task_config.DATA, 'soca_vtscales.yaml')) + + # generate vertical diffusion scale YAML file + logger.debug("Generate vertical diffusion YAML file") + diffvz_config = parse_j2yaml(path=os.path.join(self.task_config.BERROR_YAML_DIR, 'soca_parameters_diffusion_vt.yaml.j2'), + data=self.task_config) + diffvz_config.save(os.path.join(self.task_config.DATA, 'soca_parameters_diffusion_vt.yaml')) + + # generate the horizontal diffusion YAML files + if True: # TODO(G): skip this section once we have optimized the scales + # stage the correlation scale configuration + logger.debug("Generate correlation scale YAML file") + FileHandler({'copy': [[os.path.join(self.task_config.BERROR_YAML_DIR, 'soca_setcorscales.yaml'), + os.path.join(self.task_config.DATA, 'soca_setcorscales.yaml')]]}).sync() + + # generate horizontal diffusion scale YAML file + logger.debug("Generate horizontal diffusion scale YAML file") + diffhz_config = parse_j2yaml(path=os.path.join(self.task_config.BERROR_YAML_DIR, 'soca_parameters_diffusion_hz.yaml.j2'), + data=self.task_config) + diffhz_config.save(os.path.join(self.task_config.DATA, 'soca_parameters_diffusion_hz.yaml')) + + # 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) + + # generate ensemble recentering/rebalancing YAML file + logger.debug("Generate ensemble recentering YAML file") + ensrecenter_config = parse_j2yaml(path=os.path.join(self.task_config.BERROR_YAML_DIR, 'soca_ensb.yaml.j2'), + data=self.task_config) + ensrecenter_config.save(os.path.join(self.task_config.DATA, 'soca_ensb.yaml')) + + # generate ensemble weights YAML file + logger.debug("Generate ensemble recentering YAML file: {self.task_config.abcd_yaml}") + hybridweights_config = parse_j2yaml(path=os.path.join(self.task_config.BERROR_YAML_DIR, 'soca_ensweights.yaml.j2'), + data=self.task_config) + hybridweights_config.save(os.path.join(self.task_config.DATA, 'soca_ensweights.yaml')) + + # need output dir for ensemble perturbations and static B-matrix + logger.debug("Create empty diagb directories to receive output from executables") + FileHandler({'mkdir': [os.path.join(self.task_config.DATA, 'diagb')]}).sync() + + @logit(logger) + def gridgen(self: Task) -> None: + # link gdas_soca_gridgen.x + mdau.link_executable(self.task_config, 'gdas_soca_gridgen.x') + exec_cmd = Executable(self.task_config.APRUN_MARINEBMAT) + exec_name = os.path.join(self.task_config.DATA, 'gdas_soca_gridgen.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('gridgen.yaml') + + mdau.run(exec_cmd) + + @logit(logger) + def variance_partitioning(self: Task) -> None: + # link the variance partitioning executable, gdas_soca_diagb.x + mdau.link_executable(self.task_config, 'gdas_soca_diagb.x') + exec_cmd = Executable(self.task_config.APRUN_MARINEBMAT) + exec_name = os.path.join(self.task_config.DATA, 'gdas_soca_diagb.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('soca_diagb.yaml') + + mdau.run(exec_cmd) + + @logit(logger) + def horizontal_diffusion(self: Task) -> None: + """Generate the horizontal diffusion coefficients + """ + # link the executable that computes the correlation scales, gdas_soca_setcorscales.x, + # and prepare the command to run it + mdau.link_executable(self.task_config, 'gdas_soca_setcorscales.x') + exec_cmd = Executable(self.task_config.APRUN_MARINEBMAT) + exec_name = os.path.join(self.task_config.DATA, 'gdas_soca_setcorscales.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('soca_setcorscales.yaml') + + # create a files containing the correlation scales + mdau.run(exec_cmd) + + # link the executable that computes the correlation scales, gdas_soca_error_covariance_toolbox.x, + # and prepare the command to run it + mdau.link_executable(self.task_config, 'gdas_soca_error_covariance_toolbox.x') + exec_cmd = Executable(self.task_config.APRUN_MARINEBMAT) + exec_name = os.path.join(self.task_config.DATA, 'gdas_soca_error_covariance_toolbox.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('soca_parameters_diffusion_hz.yaml') + + # compute the coefficients of the diffusion operator + mdau.run(exec_cmd) + + @logit(logger) + def vertical_diffusion(self: Task) -> None: + """Generate the vertical diffusion coefficients + """ + # compute the vertical correlation scales based on the MLD + FileHandler({'copy': [[os.path.join(self.task_config.CALC_SCALE_EXEC), + os.path.join(self.task_config.DATA, 'calc_scales.x')]]}).sync() + exec_cmd = Executable("python") + exec_name = os.path.join(self.task_config.DATA, 'calc_scales.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('soca_vtscales.yaml') + mdau.run(exec_cmd) + + # link the executable that computes the correlation scales, gdas_soca_error_covariance_toolbox.x, + # and prepare the command to run it + mdau.link_executable(self.task_config, 'gdas_soca_error_covariance_toolbox.x') + exec_cmd = Executable(self.task_config.APRUN_MARINEBMAT) + exec_name = os.path.join(self.task_config.DATA, 'gdas_soca_error_covariance_toolbox.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('soca_parameters_diffusion_vt.yaml') + + # compute the coefficients of the diffusion operator + mdau.run(exec_cmd) + + @logit(logger) + def ensemble_perturbations(self: Task) -> None: + """Generate the 3D ensemble of perturbation for the 3DEnVAR + + This method will generate ensemble perturbations re-balanced w.r.t the + deterministic background. + This includes: + - computing a storing the unbalanced ensemble perturbations' statistics + - recentering the ensemble members around the deterministic background and + accounting for the nonlinear steric recentering + - saving the recentered ensemble statistics + """ + mdau.link_executable(self.task_config, 'gdas_ens_handler.x') + exec_cmd = Executable(self.task_config.APRUN_MARINEBMAT) + exec_name = os.path.join(self.task_config.DATA, 'gdas_ens_handler.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('soca_ensb.yaml') + + # generate the ensemble perturbations + mdau.run(exec_cmd) + + @logit(logger) + def hybrid_weight(self: Task) -> None: + """Generate the hybrid weights for the 3DEnVAR + + This method will generate the 3D fields hybrid weights for the 3DEnVAR for each + variables. + TODO(G): Currently implemented for the specific case of the static ensemble members only + """ + mdau.link_executable(self.task_config, 'gdas_socahybridweights.x') + exec_cmd = Executable(self.task_config.APRUN_MARINEBMAT) + exec_name = os.path.join(self.task_config.DATA, 'gdas_socahybridweights.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('soca_ensweights.yaml') + + # compute the ensemble weights + mdau.run(exec_cmd) + + @logit(logger) + def execute(self: Task) -> None: + """Generate the full B-matrix + + This method will generate the full B-matrix according to the configuration. + """ + chdir(self.task_config.DATA) + self.gridgen() # TODO: This should be optional in case the geometry file was staged + self.variance_partitioning() + self.horizontal_diffusion() # TODO: Make this optional once we've converged on an acceptable set of scales + self.vertical_diffusion() + # hybrid EnVAR case + if self.task_config.DOHYBVAR == "YES" or self.task_config.NMEM_ENS > 2: + self.ensemble_perturbations() # TODO: refactor this from the old scripts + self.hybrid_weight() # TODO: refactor this from the old scripts + + @logit(logger) + def finalize(self: Task) -> None: + """Finalize the global B-matrix job + + This method will finalize the global B-matrix job. + This includes: + - copy the generated static, but cycle dependent background error files to the ROTDIR + - copy the generated YAML file from initialize to the ROTDIR + - keep the re-balanced ensemble perturbation files in DATAenspert + - ... + + """ + # Copy the soca grid if it was created + grid_file = os.path.join(self.task_config.DATA, 'soca_gridspec.nc') + if os.path.exists(grid_file): + logger.info(f"Copying the soca grid file to the ROTDIR") + FileHandler({'copy': [[grid_file, + os.path.join(self.task_config.COMOUT_OCEAN_BMATRIX, 'soca_gridspec.nc')]]}).sync() + + # Copy the diffusion coefficient files to the ROTDIR + logger.info(f"Copying the diffusion coefficient files to the ROTDIR") + diffusion_coeff_list = [] + for diff_type in ['hz', 'vt']: + src = os.path.join(self.task_config.DATA, f"{diff_type}_ocean.nc") + dest = os.path.join(self.task_config.COMOUT_OCEAN_BMATRIX, + f"{self.task_config.APREFIX}{diff_type}_ocean.nc") + diffusion_coeff_list.append([src, dest]) + + src = os.path.join(self.task_config.DATA, 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 + logger.info(f"Copying diag B files to the ROTDIR") + diagb_list = [] + window_end_iso = self.task_config.MARINE_WINDOW_END.strftime('%Y-%m-%dT%H:%M:%SZ') + + # ocean diag B + src = os.path.join(self.task_config.DATA, 'diagb', f"ocn.bkgerr_stddev.incr.{window_end_iso}.nc") + dst = os.path.join(self.task_config.COMOUT_OCEAN_BMATRIX, + f"{self.task_config.APREFIX}ocean.bkgerr_stddev.nc") + diagb_list.append([src, dst]) + + # ice diag B + src = os.path.join(self.task_config.DATA, 'diagb', f"ice.bkgerr_stddev.incr.{window_end_iso}.nc") + dst = os.path.join(self.task_config.COMOUT_ICE_BMATRIX, + f"{self.task_config.APREFIX}ice.bkgerr_stddev.nc") + diagb_list.append([src, dst]) + + 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: + 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") + dst = os.path.join(self.task_config.COMOUT_OCEAN_BMATRIX, + f"{self.task_config.APREFIX}ocean.ens_weights.nc") + weight_list.append([src, dst]) + + src = os.path.join(self.task_config.DATA, f"ice.ens_weights.incr.{window_middle_iso}.nc") + dst = os.path.join(self.task_config.COMOUT_ICE_BMATRIX, + f"{self.task_config.APREFIX}ice.ens_weights.nc") + weight_list.append([src, dst]) + + # TODO(G): missing ssh_steric_stddev, ssh_unbal_stddev, ssh_total_stddev and steric_explained_variance + + FileHandler({'copy': weight_list}).sync() + + # Copy the YAML files to the OCEAN ROTDIR + yamls = glob.glob(os.path.join(self.task_config.DATA, '*.yaml')) + yaml_list = [] + for yaml_file in yamls: + dest = os.path.join(self.task_config.COMOUT_OCEAN_BMATRIX, + f"{self.task_config.APREFIX}{os.path.basename(yaml_file)}") + yaml_list.append([yaml_file, dest]) + FileHandler({'copy': yaml_list}).sync() diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py new file mode 100644 index 0000000000..36c26d594b --- /dev/null +++ b/ush/python/pygfs/task/marine_letkf.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python3 + +import f90nml +from logging import getLogger +import os +from pygfs.task.analysis import Analysis +from typing import Dict +from wxflow import (AttrDict, + FileHandler, + logit, + parse_j2yaml, + to_timedelta, + to_YMDH) + +logger = getLogger(__name__.split('.')[-1]) + + +class MarineLETKF(Analysis): + """ + Class for global ocean and sea ice analysis LETKF task + """ + + @logit(logger, name="MarineLETKF") + def __init__(self, config: Dict) -> None: + """Constructor for ocean and sea ice LETKF task + Parameters: + ------------ + config: Dict + configuration, namely evironment variables + Returns: + -------- + None + """ + + logger.info("init") + super().__init__(config) + + _half_assim_freq = to_timedelta(f"{self.task_config.assim_freq}H") / 2 + _letkf_yaml_file = 'letkf.yaml' + _letkf_exec_args = [self.task_config.MARINE_LETKF_EXEC, + 'soca', + 'localensembleda', + _letkf_yaml_file] + + self.task_config.WINDOW_MIDDLE = self.task_config.current_cycle + self.task_config.WINDOW_BEGIN = self.task_config.current_cycle - _half_assim_freq + self.task_config.letkf_exec_args = _letkf_exec_args + self.task_config.letkf_yaml_file = _letkf_yaml_file + self.task_config.mom_input_nml_tmpl = os.path.join(self.task_config.DATA, 'mom_input.nml.tmpl') + self.task_config.mom_input_nml = os.path.join(self.task_config.DATA, 'mom_input.nml') + self.task_config.obs_dir = os.path.join(self.task_config.DATA, 'obs') + + @logit(logger) + def initialize(self): + """Method initialize for ocean and sea ice LETKF task + Parameters: + ------------ + None + Returns: + -------- + None + """ + + logger.info("initialize") + + # make directories and stage ensemble background files + ensbkgconf = AttrDict() + keys = ['previous_cycle', 'current_cycle', 'DATA', 'NMEM_ENS', + 'PARMgfs', 'ROTDIR', 'COM_OCEAN_HISTORY_TMPL', 'COM_ICE_HISTORY_TMPL'] + for key in keys: + ensbkgconf[key] = self.task_config[key] + ensbkgconf.RUN = 'enkfgdas' + soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.SOCA_ENS_BKG_STAGE_YAML_TMPL, ensbkgconf) + FileHandler(soca_ens_bkg_stage_list).sync() + soca_fix_stage_list = parse_j2yaml(self.task_config.SOCA_FIX_YAML_TMPL, self.task_config) + FileHandler(soca_fix_stage_list).sync() + letkf_stage_list = parse_j2yaml(self.task_config.MARINE_LETKF_STAGE_YAML_TMPL, self.task_config) + FileHandler(letkf_stage_list).sync() + + obs_list = parse_j2yaml(self.task_config.OBS_YAML, self.task_config) + + # get the list of observations + obs_files = [] + for ob in obs_list['observers']: + obs_name = ob['obs space']['name'].lower() + obs_filename = f"{self.task_config.RUN}.t{self.task_config.cyc}z.{obs_name}.{to_YMDH(self.task_config.current_cycle)}.nc" + obs_files.append((obs_filename, ob)) + + obs_files_to_copy = [] + obs_to_use = [] + # copy obs from COMIN_OBS to DATA/obs + for obs_file, ob in obs_files: + obs_src = os.path.join(self.task_config.COMIN_OBS, obs_file) + obs_dst = os.path.join(self.task_config.DATA, self.task_config.obs_dir, obs_file) + if os.path.exists(obs_src): + obs_files_to_copy.append([obs_src, obs_dst]) + obs_to_use.append(ob) + else: + logger.warning(f"{obs_file} is not available in {self.task_config.COMIN_OBS}") + + # stage the desired obs files + FileHandler({'copy': obs_files_to_copy}).sync() + + # make the letkf.yaml + letkfconf = AttrDict() + keys = ['WINDOW_BEGIN', 'WINDOW_MIDDLE', 'RUN', 'gcyc', 'NMEM_ENS'] + for key in keys: + letkfconf[key] = self.task_config[key] + letkfconf.RUN = 'enkfgdas' + letkf_yaml = parse_j2yaml(self.task_config.MARINE_LETKF_YAML_TMPL, letkfconf) + letkf_yaml.observations.observers = obs_to_use + letkf_yaml.save(self.task_config.letkf_yaml_file) + + # swap date and stack size in mom_input.nml + domain_stack_size = self.task_config.DOMAIN_STACK_SIZE + ymdhms = [int(s) for s in self.task_config.WINDOW_BEGIN.strftime('%Y,%m,%d,%H,%M,%S').split(',')] + with open(self.task_config.mom_input_nml_tmpl, 'r') as nml_file: + nml = f90nml.read(nml_file) + nml['ocean_solo_nml']['date_init'] = ymdhms + nml['fms_nml']['domains_stack_size'] = int(domain_stack_size) + nml.write(self.task_config.mom_input_nml, force=True) # force to overwrite if necessary + + @logit(logger) + def run(self): + """Method run for ocean and sea ice LETKF task + Parameters: + ------------ + None + Returns: + -------- + None + """ + + logger.info("run") + + @logit(logger) + def finalize(self): + """Method finalize for ocean and sea ice LETKF task + Parameters: + ------------ + None + Returns: + -------- + None + """ + + logger.info("finalize") diff --git a/ush/python/pygfs/task/oceanice_products.py b/ush/python/pygfs/task/oceanice_products.py new file mode 100644 index 0000000000..98b57ae801 --- /dev/null +++ b/ush/python/pygfs/task/oceanice_products.py @@ -0,0 +1,356 @@ +#!/usr/bin/env python3 + +import os +from logging import getLogger +from typing import List, Dict, Any +from pprint import pformat +import xarray as xr + +from wxflow import (AttrDict, + parse_j2yaml, + FileHandler, + Jinja, + logit, + Task, + add_to_datetime, to_timedelta, + WorkflowException, + Executable) + +logger = getLogger(__name__.split('.')[-1]) + + +class OceanIceProducts(Task): + """Ocean Ice Products Task + """ + + VALID_COMPONENTS = ['ocean', 'ice'] + COMPONENT_RES_MAP = {'ocean': 'OCNRES', 'ice': 'ICERES'} + VALID_PRODUCT_GRIDS = {'mx025': ['1p00', '0p25'], + 'mx050': ['1p00', '0p50'], + 'mx100': ['1p00'], + 'mx500': ['5p00']} + + # These could be read from the yaml file + TRIPOLE_DIMS_MAP = {'mx025': [1440, 1080], 'mx050': [720, 526], 'mx100': [360, 320], 'mx500': [72, 35]} + LATLON_DIMS_MAP = {'0p25': [1440, 721], '0p50': [720, 361], '1p00': [360, 181], '5p00': [72, 36]} + + @logit(logger, name="OceanIceProducts") + def __init__(self, config: Dict[str, Any]) -> None: + """Constructor for the Ocean/Ice Productstask + + Parameters + ---------- + config : Dict[str, Any] + Incoming configuration for the task from the environment + + Returns + ------- + None + """ + super().__init__(config) + + if self.task_config.COMPONENT not in self.VALID_COMPONENTS: + raise NotImplementedError(f'{self.task_config.COMPONENT} is not a valid model component.\n' + + 'Valid model components are:\n' + + f'{", ".join(self.VALID_COMPONENTS)}') + + model_grid = f"mx{self.task_config[self.COMPONENT_RES_MAP[self.task_config.COMPONENT]]:03d}" + + valid_datetime = add_to_datetime(self.task_config.current_cycle, to_timedelta(f"{self.task_config.FORECAST_HOUR}H")) + + if self.task_config.COMPONENT == 'ice': + offset = int(self.task_config.current_cycle.strftime("%H")) % self.task_config.FHOUT_ICE_GFS + # For CICE cases where offset is not 0, forecast_hour needs to be adjusted based on the offset. + # TODO: Consider FHMIN when calculating offset. + if offset != 0: + forecast_hour = self.task_config.FORECAST_HOUR - int(self.task_config.current_cycle.strftime("%H")) + # For the first forecast hour, the interval may be different from the intervals of subsequent forecast hours + if forecast_hour <= self.task_config.FHOUT_ICE_GFS: + interval = self.task_config.FHOUT_ICE_GFS - int(self.task_config.current_cycle.strftime("%H")) + else: + interval = self.task_config.FHOUT_ICE_GFS + else: + forecast_hour = self.task_config.FORECAST_HOUR + interval = self.task_config.FHOUT_ICE_GFS + if self.task_config.COMPONENT == 'ocean': + forecast_hour = self.task_config.FORECAST_HOUR + interval = self.task_config.FHOUT_OCN_GFS + + # TODO: This is a bit of a hack, but it works for now + # FIXME: find a better way to provide the averaging period + avg_period = f"{forecast_hour-interval:03d}-{forecast_hour:03d}" + + # Extend task_config with localdict + localdict = AttrDict( + {'component': self.task_config.COMPONENT, + 'forecast_hour': forecast_hour, + 'valid_datetime': valid_datetime, + 'avg_period': avg_period, + 'model_grid': model_grid, + 'interval': interval, + 'product_grids': self.VALID_PRODUCT_GRIDS[model_grid]} + ) + self.task_config = AttrDict(**self.task_config, **localdict) + + # Read the oceanice_products.yaml file for common configuration + logger.info(f"Read the ocean ice products configuration yaml file {self.task_config.OCEANICEPRODUCTS_CONFIG}") + self.task_config.oceanice_yaml = parse_j2yaml(self.task_config.OCEANICEPRODUCTS_CONFIG, self.task_config) + logger.debug(f"oceanice_yaml:\n{pformat(self.task_config.oceanice_yaml)}") + + @staticmethod + @logit(logger) + def initialize(config: Dict) -> None: + """Initialize the work directory by copying all the common fix data + + Parameters + ---------- + config : Dict + Configuration dictionary for the task + + Returns + ------- + None + """ + + # Copy static data to run directory + logger.info("Copy static data to run directory") + FileHandler(config.oceanice_yaml.ocnicepost.fix_data).sync() + + # Copy "component" specific model data to run directory (e.g. ocean/ice forecast output) + logger.info(f"Copy {config.component} data to run directory") + FileHandler(config.oceanice_yaml[config.component].data_in).sync() + + @staticmethod + @logit(logger) + def configure(config: Dict, product_grid: str) -> None: + """Configure the namelist for the product_grid in the work directory. + Create namelist 'ocnicepost.nml' from template + + Parameters + ---------- + config : Dict + Configuration dictionary for the task + product_grid : str + Target product grid to process + + Returns + ------- + None + """ + + # Make a localconf with the "component" specific configuration for parsing the namelist + localconf = AttrDict() + localconf.DATA = config.DATA + localconf.component = config.component + + localconf.source_tripole_dims = ', '.join(map(str, OceanIceProducts.TRIPOLE_DIMS_MAP[config.model_grid])) + localconf.target_latlon_dims = ', '.join(map(str, OceanIceProducts.LATLON_DIMS_MAP[product_grid])) + + localconf.maskvar = config.oceanice_yaml[config.component].namelist.maskvar + localconf.sinvar = config.oceanice_yaml[config.component].namelist.sinvar + localconf.cosvar = config.oceanice_yaml[config.component].namelist.cosvar + localconf.angvar = config.oceanice_yaml[config.component].namelist.angvar + localconf.debug = ".true." if config.oceanice_yaml.ocnicepost.namelist.debug else ".false." + + logger.debug(f"localconf:\n{pformat(localconf)}") + + # Configure the namelist and write to file + logger.info("Create namelist for ocnicepost.x") + nml_template = os.path.join(localconf.DATA, "ocnicepost.nml.jinja2") + nml_data = Jinja(nml_template, localconf).render + logger.debug(f"ocnicepost_nml:\n{nml_data}") + nml_file = os.path.join(localconf.DATA, "ocnicepost.nml") + with open(nml_file, "w") as fho: + fho.write(nml_data) + + @staticmethod + @logit(logger) + def execute(config: Dict, product_grid: str) -> None: + """Run the ocnicepost.x executable to interpolate and convert to grib2 + + Parameters + ---------- + config : Dict + Configuration dictionary for the task + product_grid : str + Target product grid to process + + Returns + ------- + None + """ + + # Run the ocnicepost.x executable + OceanIceProducts.interp(config.DATA, config.APRUN_OCNICEPOST, exec_name="ocnicepost.x") + + # Convert interpolated netCDF file to grib2 + OceanIceProducts.netCDF_to_grib2(config, product_grid) + + @staticmethod + @logit(logger) + def interp(workdir: str, aprun_cmd: str, exec_name: str = "ocnicepost.x") -> None: + """ + Run the interpolation executable to generate rectilinear netCDF file + + Parameters + ---------- + config : Dict + Configuration dictionary for the task + workdir : str + Working directory for the task + aprun_cmd : str + aprun command to use + exec_name : str + Name of the executable e.g. ocnicepost.x + + Returns + ------- + None + """ + os.chdir(workdir) + logger.debug(f"Current working directory: {os.getcwd()}") + + exec_cmd = Executable(aprun_cmd) + exec_cmd.add_default_arg(os.path.join(workdir, exec_name)) + + OceanIceProducts._call_executable(exec_cmd) + + @staticmethod + @logit(logger) + def netCDF_to_grib2(config: Dict, grid: str) -> None: + """Convert interpolated netCDF file to grib2 + + Parameters + ---------- + config : Dict + Configuration dictionary for the task + grid : str + Target product grid to process + + Returns + ------ + None + """ + + os.chdir(config.DATA) + + exec_cmd = Executable(config.oceanice_yaml.nc2grib2.script) + arguments = [config.component, grid, config.current_cycle.strftime("%Y%m%d%H"), config.avg_period] + if config.component == 'ocean': + levs = config.oceanice_yaml.ocean.namelist.ocean_levels + arguments.append(':'.join(map(str, levs))) + + logger.info(f"Executing {exec_cmd} with arguments {arguments}") + try: + exec_cmd(*arguments) + except OSError: + logger.exception(f"FATAL ERROR: Failed to execute {exec_cmd}") + raise OSError(f"{exec_cmd}") + except Exception: + logger.exception(f"FATAL ERROR: Error occurred during execution of {exec_cmd}") + raise WorkflowException(f"{exec_cmd}") + + @staticmethod + @logit(logger) + def subset(config: Dict) -> None: + """ + Subset a list of variables from a netcdf file and save to a new netcdf file. + Also save global attributes and history from the old netcdf file into new netcdf file + + Parameters + ---------- + config : Dict + Configuration dictionary for the task + + Returns + ------- + None + """ + + os.chdir(config.DATA) + + input_file = f"{config.component}.nc" + output_file = f"{config.component}_subset.nc" + varlist = config.oceanice_yaml[config.component].subset + + logger.info(f"Subsetting {varlist} from {input_file} to {output_file}") + + try: + # open the netcdf file + ds = xr.open_dataset(input_file) + + # subset the variables + ds_subset = ds[varlist] + + # save global attributes from the old netcdf file into new netcdf file + ds_subset.attrs = ds.attrs + + # save subsetted variables to a new netcdf file + ds_subset.to_netcdf(output_file) + + except FileNotFoundError: + logger.exception(f"FATAL ERROR: Input file not found: {input_file}") + raise FileNotFoundError(f"File not found: {input_file}") + + except IOError as err: + logger.exception(f"FATAL ERROR: IOError occurred during netCDF subset: {input_file}") + raise IOError(f"An I/O error occurred: {err}") + + except Exception as err: + logger.exception(f"FATAL ERROR: Error occurred during netCDF subset: {input_file}") + raise WorkflowException(f"{err}") + + finally: + # close the netcdf files + ds.close() + ds_subset.close() + + @staticmethod + @logit(logger) + def _call_executable(exec_cmd: Executable) -> None: + """Internal method to call executable + + Parameters + ---------- + exec_cmd : Executable + Executable to run + + Raises + ------ + OSError + Failure due to OS issues + WorkflowException + All other exceptions + """ + + logger.info(f"Executing {exec_cmd}") + try: + exec_cmd() + except OSError: + logger.exception(f"FATAL ERROR: Failed to execute {exec_cmd}") + raise OSError(f"{exec_cmd}") + except Exception: + logger.exception(f"FATAL ERROR: Error occurred during execution of {exec_cmd}") + raise WorkflowException(f"{exec_cmd}") + + @staticmethod + @logit(logger) + def finalize(config: Dict) -> None: + """Perform closing actions of the task. + Copy data back from the DATA/ directory to COM/ + + Parameters + ---------- + config: Dict + Configuration dictionary for the task + + Returns + ------- + None + """ + + # Copy "component" specific generated data to COM/ directory + data_out = config.oceanice_yaml[config.component].data_out + + logger.info(f"Copy processed data to COM/ directory") + FileHandler(data_out).sync() diff --git a/ush/python/pygfs/task/snow_analysis.py b/ush/python/pygfs/task/snow_analysis.py new file mode 100644 index 0000000000..9656b00a8e --- /dev/null +++ b/ush/python/pygfs/task/snow_analysis.py @@ -0,0 +1,627 @@ +#!/usr/bin/env python3 + +import os +from logging import getLogger +from typing import Dict, List +from pprint import pformat +import numpy as np +from netCDF4 import Dataset + +from wxflow import (AttrDict, + FileHandler, + to_fv3time, to_YMD, to_YMDH, to_timedelta, add_to_datetime, + rm_p, + parse_j2yaml, save_as_yaml, + Jinja, + logit, + Executable, + WorkflowException) +from pygfs.task.analysis import Analysis + +logger = getLogger(__name__.split('.')[-1]) + + +class SnowAnalysis(Analysis): + """ + Class for global snow analysis tasks + """ + + NMEM_SNOWENS = 2 + + @logit(logger, name="SnowAnalysis") + def __init__(self, config): + super().__init__(config) + + _res = int(self.task_config['CASE'][1:]) + _window_begin = add_to_datetime(self.task_config.current_cycle, -to_timedelta(f"{self.task_config['assim_freq']}H") / 2) + _letkfoi_yaml = os.path.join(self.task_config.DATA, f"{self.task_config.RUN}.t{self.task_config['cyc']:02d}z.letkfoi.yaml") + + # Create a local dictionary that is repeatedly used across this class + local_dict = AttrDict( + { + 'npx_ges': _res + 1, + 'npy_ges': _res + 1, + 'npz_ges': self.task_config.LEVS - 1, + 'npz': self.task_config.LEVS - 1, + 'SNOW_WINDOW_BEGIN': _window_begin, + 'SNOW_WINDOW_LENGTH': f"PT{self.task_config['assim_freq']}H", + '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.", + 'jedi_yaml': _letkfoi_yaml + } + ) + + # Extend task_config with local_dict + self.task_config = AttrDict(**self.task_config, **local_dict) + + @logit(logger) + def prepare_GTS(self) -> None: + """Prepare the GTS data for a global snow analysis + + This method will prepare GTS data for a global snow analysis using JEDI. + This includes: + - processing GTS bufr snow depth observation data to IODA format + + Parameters + ---------- + Analysis: parent class for GDAS task + + Returns + ---------- + None + """ + + # create a temporary dict of all keys needed in this method + localconf = AttrDict() + keys = ['HOMEgfs', 'DATA', 'current_cycle', 'COM_OBS', 'COM_ATMOS_RESTART_PREV', + 'OPREFIX', 'CASE', 'OCNRES', 'ntiles'] + for key in keys: + localconf[key] = self.task_config[key] + + # Read and render the GTS_OBS_LIST yaml + logger.info(f"Reading {self.task_config.GTS_OBS_LIST}") + prep_gts_config = parse_j2yaml(self.task_config.GTS_OBS_LIST, localconf) + logger.debug(f"{self.task_config.GTS_OBS_LIST}:\n{pformat(prep_gts_config)}") + + # copy the GTS obs files from COM_OBS to DATA/obs + logger.info("Copying GTS obs for bufr2ioda.x") + FileHandler(prep_gts_config.gtsbufr).sync() + + logger.info("Link BUFR2IODAX into DATA/") + exe_src = self.task_config.BUFR2IODAX + exe_dest = os.path.join(localconf.DATA, os.path.basename(exe_src)) + if os.path.exists(exe_dest): + rm_p(exe_dest) + os.symlink(exe_src, exe_dest) + + # Create executable instance + exe = Executable(self.task_config.BUFR2IODAX) + + def _gtsbufr2iodax(exe, yaml_file): + if not os.path.isfile(yaml_file): + logger.exception(f"FATAL ERROR: {yaml_file} not found") + raise FileNotFoundError(yaml_file) + + logger.info(f"Executing {exe}") + try: + exe(yaml_file) + except OSError: + raise OSError(f"Failed to execute {exe} {yaml_file}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exe} {yaml_file}") + + # Loop over entries in prep_gts_config.bufr2ioda keys + # 1. generate bufr2ioda YAML files + # 2. execute bufr2ioda.x + for name in prep_gts_config.bufr2ioda.keys(): + gts_yaml = os.path.join(self.task_config.DATA, f"bufr_{name}_snow.yaml") + logger.info(f"Generate BUFR2IODA YAML file: {gts_yaml}") + temp_yaml = parse_j2yaml(prep_gts_config.bufr2ioda[name], localconf) + save_as_yaml(temp_yaml, gts_yaml) + logger.info(f"Wrote bufr2ioda YAML to: {gts_yaml}") + + # execute BUFR2IODAX to convert {name} bufr data into IODA format + _gtsbufr2iodax(exe, gts_yaml) + + # Ensure the IODA snow depth GTS file is produced by the IODA converter + # If so, copy to COM_OBS/ + try: + FileHandler(prep_gts_config.gtsioda).sync() + except OSError as err: + logger.exception(f"{self.task_config.BUFR2IODAX} failed to produce GTS ioda files") + raise OSError(err) + + @logit(logger) + def prepare_IMS(self) -> None: + """Prepare the IMS data for a global snow analysis + + This method will prepare IMS data for a global snow analysis using JEDI. + This includes: + - staging model backgrounds + - processing raw IMS observation data and prepare for conversion to IODA + - creating IMS snowdepth data in IODA format. + + Parameters + ---------- + Analysis: parent class for GDAS task + + Returns + ---------- + None + """ + + # create a temporary dict of all keys needed in this method + localconf = AttrDict() + keys = ['DATA', 'current_cycle', 'COM_OBS', 'COM_ATMOS_RESTART_PREV', + 'OPREFIX', 'CASE', 'OCNRES', 'ntiles', 'FIXgfs'] + for key in keys: + localconf[key] = self.task_config[key] + + # stage backgrounds + logger.info("Staging backgrounds") + FileHandler(self.get_bkg_dict(localconf)).sync() + + # Read and render the IMS_OBS_LIST yaml + logger.info(f"Reading {self.task_config.IMS_OBS_LIST}") + prep_ims_config = parse_j2yaml(self.task_config.IMS_OBS_LIST, localconf) + logger.debug(f"{self.task_config.IMS_OBS_LIST}:\n{pformat(prep_ims_config)}") + + # copy the IMS obs files from COM_OBS to DATA/obs + logger.info("Copying IMS obs for CALCFIMSEXE") + FileHandler(prep_ims_config.calcfims).sync() + + logger.info("Create namelist for CALCFIMSEXE") + nml_template = self.task_config.FIMS_NML_TMPL + nml_data = Jinja(nml_template, localconf).render + logger.debug(f"fims.nml:\n{nml_data}") + + nml_file = os.path.join(localconf.DATA, "fims.nml") + with open(nml_file, "w") as fho: + fho.write(nml_data) + + logger.info("Link CALCFIMSEXE into DATA/") + exe_src = self.task_config.CALCFIMSEXE + exe_dest = os.path.join(localconf.DATA, os.path.basename(exe_src)) + if os.path.exists(exe_dest): + rm_p(exe_dest) + os.symlink(exe_src, exe_dest) + + # execute CALCFIMSEXE to calculate IMS snowdepth + exe = Executable(self.task_config.APRUN_CALCFIMS) + exe.add_default_arg(os.path.join(localconf.DATA, os.path.basename(exe_src))) + logger.info(f"Executing {exe}") + try: + exe() + except OSError: + raise OSError(f"Failed to execute {exe}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exe}") + + # Ensure the snow depth IMS file is produced by the above executable + input_file = f"IMSscf.{to_YMD(localconf.current_cycle)}.{localconf.CASE}_oro_data.nc" + if not os.path.isfile(f"{os.path.join(localconf.DATA, input_file)}"): + logger.exception(f"{self.task_config.CALCFIMSEXE} failed to produce {input_file}") + raise FileNotFoundError(f"{os.path.join(localconf.DATA, input_file)}") + + # Execute imspy to create the IMS obs data in IODA format + logger.info("Create IMS obs data in IODA format") + + output_file = f"ims_snow_{to_YMDH(localconf.current_cycle)}.nc4" + if os.path.isfile(f"{os.path.join(localconf.DATA, output_file)}"): + rm_p(output_file) + + exe = Executable(self.task_config.IMS2IODACONV) + exe.add_default_arg(["-i", f"{os.path.join(localconf.DATA, input_file)}"]) + exe.add_default_arg(["-o", f"{os.path.join(localconf.DATA, output_file)}"]) + try: + logger.debug(f"Executing {exe}") + exe() + except OSError: + raise OSError(f"Failed to execute {exe}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exe}") + + # Ensure the IODA snow depth IMS file is produced by the IODA converter + # If so, copy to COM_OBS/ + if not os.path.isfile(f"{os.path.join(localconf.DATA, output_file)}"): + logger.exception(f"{self.task_config.IMS2IODACONV} failed to produce {output_file}") + raise FileNotFoundError(f"{os.path.join(localconf.DATA, output_file)}") + else: + logger.info(f"Copy {output_file} to {self.task_config.COM_OBS}") + FileHandler(prep_ims_config.ims2ioda).sync() + + @logit(logger) + def initialize(self) -> None: + """Initialize method for snow analysis + This method: + - creates artifacts in the DATA directory by copying fix files + - creates the JEDI LETKF yaml from the template + - stages backgrounds, observations and ensemble members + + Parameters + ---------- + self : Analysis + Instance of the SnowAnalysis object + """ + + super().initialize() + + # create a temporary dict of all keys needed in this method + localconf = AttrDict() + keys = ['DATA', 'current_cycle', 'COM_OBS', 'COM_ATMOS_RESTART_PREV', + 'OPREFIX', 'CASE', 'OCNRES', 'ntiles'] + for key in keys: + localconf[key] = self.task_config[key] + + # Make member directories in DATA for background + dirlist = [] + for imem in range(1, SnowAnalysis.NMEM_SNOWENS + 1): + dirlist.append(os.path.join(localconf.DATA, 'bkg', f'mem{imem:03d}')) + FileHandler({'mkdir': dirlist}).sync() + + # stage fix files + logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") + jedi_fix_list = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + FileHandler(jedi_fix_list).sync() + + # stage backgrounds + logger.info("Staging ensemble backgrounds") + FileHandler(self.get_ens_bkg_dict(localconf)).sync() + + # Write out letkfoi YAML file + save_as_yaml(self.task_config.jedi_config, self.task_config.jedi_yaml) + logger.info(f"Wrote letkfoi YAML to: {self.task_config.jedi_yaml}") + + # need output dir for diags and anl + logger.info("Create empty output [anl, diags] directories to receive output from executable") + newdirs = [ + os.path.join(localconf.DATA, "anl"), + os.path.join(localconf.DATA, "diags"), + ] + FileHandler({'mkdir': newdirs}).sync() + + @logit(logger) + def execute(self) -> None: + """Run a series of tasks to create Snow analysis + This method: + - creates an 2 member ensemble + - runs the JEDI LETKF executable to produce increments + - creates analysis from increments + + Parameters + ---------- + self : Analysis + Instance of the SnowAnalysis object + """ + + # create a temporary dict of all keys needed in this method + localconf = AttrDict() + keys = ['HOMEgfs', 'DATA', 'current_cycle', + 'COM_ATMOS_RESTART_PREV', 'COM_SNOW_ANALYSIS', 'APREFIX', + 'SNOWDEPTHVAR', 'BESTDDEV', 'CASE', 'OCNRES', 'ntiles', + 'APRUN_SNOWANL', 'JEDIEXE', 'jedi_yaml', 'DOIAU', 'SNOW_WINDOW_BEGIN', + 'APPLY_INCR_NML_TMPL', 'APPLY_INCR_EXE', 'APRUN_APPLY_INCR'] + for key in keys: + localconf[key] = self.task_config[key] + + logger.info("Creating ensemble") + self.create_ensemble(localconf.SNOWDEPTHVAR, + localconf.BESTDDEV, + AttrDict({key: localconf[key] for key in ['DATA', 'ntiles', 'current_cycle']})) + + logger.info("Running JEDI LETKF") + exec_cmd = Executable(localconf.APRUN_SNOWANL) + exec_name = os.path.join(localconf.DATA, 'gdas.x') + exec_cmd.add_default_arg(exec_name) + exec_cmd.add_default_arg('fv3jedi') + exec_cmd.add_default_arg('localensembleda') + exec_cmd.add_default_arg(localconf.jedi_yaml) + + try: + logger.debug(f"Executing {exec_cmd}") + exec_cmd() + except OSError: + raise OSError(f"Failed to execute {exec_cmd}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exec_cmd}") + + logger.info("Creating analysis from backgrounds and increments") + self.add_increments(localconf) + + @logit(logger) + def finalize(self) -> None: + """Performs closing actions of the Snow analysis task + This method: + - tar and gzip the output diag files and place in COM/ + - copy the generated YAML file from initialize to the COM/ + - copy the analysis files to the COM/ + - copy the increment files to the COM/ + + Parameters + ---------- + self : Analysis + Instance of the SnowAnalysis object + """ + + logger.info("Create diagnostic tarball of diag*.nc4 files") + statfile = os.path.join(self.task_config.COM_SNOW_ANALYSIS, f"{self.task_config.APREFIX}snowstat.tgz") + self.tgz_diags(statfile, self.task_config.DATA) + + logger.info("Copy full YAML to COM") + src = os.path.join(self.task_config['DATA'], f"{self.task_config.APREFIX}letkfoi.yaml") + dest = os.path.join(self.task_config.COM_CONF, f"{self.task_config.APREFIX}letkfoi.yaml") + yaml_copy = { + 'mkdir': [self.task_config.COM_CONF], + 'copy': [[src, dest]] + } + FileHandler(yaml_copy).sync() + + logger.info("Copy analysis to COM") + bkgtimes = [] + if self.task_config.DOIAU: + # need both beginning and middle of window + bkgtimes.append(self.task_config.SNOW_WINDOW_BEGIN) + bkgtimes.append(self.task_config.current_cycle) + anllist = [] + for bkgtime in bkgtimes: + template = f'{to_fv3time(bkgtime)}.sfc_data.tile{{tilenum}}.nc' + for itile in range(1, self.task_config.ntiles + 1): + filename = template.format(tilenum=itile) + src = os.path.join(self.task_config.DATA, 'anl', filename) + dest = os.path.join(self.task_config.COM_SNOW_ANALYSIS, filename) + anllist.append([src, dest]) + FileHandler({'copy': anllist}).sync() + + logger.info('Copy increments to COM') + template = f'snowinc.{to_fv3time(self.task_config.current_cycle)}.sfc_data.tile{{tilenum}}.nc' + inclist = [] + for itile in range(1, self.task_config.ntiles + 1): + filename = template.format(tilenum=itile) + src = os.path.join(self.task_config.DATA, 'anl', filename) + dest = os.path.join(self.task_config.COM_SNOW_ANALYSIS, filename) + inclist.append([src, dest]) + FileHandler({'copy': inclist}).sync() + + @staticmethod + @logit(logger) + def get_bkg_dict(config: Dict) -> Dict[str, List[str]]: + """Compile a dictionary of model background files to copy + + This method constructs a dictionary of FV3 RESTART files (coupler, sfc_data) + that are needed for global snow DA and returns said dictionary for use by the FileHandler class. + + Parameters + ---------- + config: Dict + Dictionary of key-value pairs needed in this method + Should contain the following keys: + COM_ATMOS_RESTART_PREV + DATA + current_cycle + ntiles + + Returns + ---------- + bkg_dict: Dict + a dictionary containing the list of model background files to copy for FileHandler + """ + # NOTE for now this is FV3 RESTART files and just assumed to be fh006 + + # get FV3 sfc_data RESTART files, this will be a lot simpler when using history files + rst_dir = os.path.join(config.COM_ATMOS_RESTART_PREV) # for now, option later? + run_dir = os.path.join(config.DATA, 'bkg') + + # Start accumulating list of background files to copy + bkglist = [] + + # snow DA needs coupler + basename = f'{to_fv3time(config.current_cycle)}.coupler.res' + bkglist.append([os.path.join(rst_dir, basename), os.path.join(run_dir, basename)]) + + # snow DA only needs sfc_data + for ftype in ['sfc_data']: + template = f'{to_fv3time(config.current_cycle)}.{ftype}.tile{{tilenum}}.nc' + for itile in range(1, config.ntiles + 1): + basename = template.format(tilenum=itile) + bkglist.append([os.path.join(rst_dir, basename), os.path.join(run_dir, basename)]) + + bkg_dict = { + 'mkdir': [run_dir], + 'copy': bkglist + } + return bkg_dict + + @staticmethod + @logit(logger) + def get_ens_bkg_dict(config: Dict) -> Dict: + """Compile a dictionary of model background files to copy for the ensemble + Note that a "Fake" 2-member ensemble backgroud is being created by copying FV3 RESTART files (coupler, sfc_data) + from the deterministic background to DATA/bkg/mem001, 002. + + Parameters + ---------- + config: Dict + Dictionary of key-value pairs needed in this method + Should contain the following keys: + COM_ATMOS_RESTART_PREV + DATA + current_cycle + ntiles + + Returns + ---------- + bkg_dict: Dict + a dictionary containing the list of model background files to copy for FileHandler + """ + + dirlist = [] + bkglist = [] + + # get FV3 sfc_data RESTART files; Note an ensemble is being created + rst_dir = os.path.join(config.COM_ATMOS_RESTART_PREV) + + for imem in range(1, SnowAnalysis.NMEM_SNOWENS + 1): + memchar = f"mem{imem:03d}" + + run_dir = os.path.join(config.DATA, 'bkg', memchar, 'RESTART') + dirlist.append(run_dir) + + # Snow DA needs coupler + basename = f'{to_fv3time(config.current_cycle)}.coupler.res' + bkglist.append([os.path.join(rst_dir, basename), os.path.join(run_dir, basename)]) + + # Snow DA only needs sfc_data + for ftype in ['sfc_data']: + template = f'{to_fv3time(config.current_cycle)}.{ftype}.tile{{tilenum}}.nc' + for itile in range(1, config.ntiles + 1): + basename = template.format(tilenum=itile) + bkglist.append([os.path.join(rst_dir, basename), os.path.join(run_dir, basename)]) + + bkg_dict = { + 'mkdir': dirlist, + 'copy': bkglist + } + + return bkg_dict + + @staticmethod + @logit(logger) + def create_ensemble(vname: str, bestddev: float, config: Dict) -> None: + """Create a 2-member ensemble for Snow Depth analysis by perturbing snow depth with a prescribed variance. + Additionally, remove glacier locations + + Parameters + ---------- + vname : str + snow depth variable to perturb: "snodl" + bestddev : float + Background Error Standard Deviation to perturb around to create ensemble + config: Dict + Dictionary of key-value pairs needed in this method. It must contain the following keys: + DATA + current_cycle + ntiles + """ + + # 2 ens members + offset = bestddev / np.sqrt(SnowAnalysis.NMEM_SNOWENS) + + logger.info(f"Creating ensemble for LETKFOI by offsetting with {offset}") + + workdir = os.path.join(config.DATA, 'bkg') + + sign = [1, -1] + ens_dirs = ['mem001', 'mem002'] + + for (memchar, value) in zip(ens_dirs, sign): + logger.debug(f"creating ensemble member {memchar} with sign {value}") + for tt in range(1, config.ntiles + 1): + logger.debug(f"perturbing tile {tt}") + # open file + out_netcdf = os.path.join(workdir, memchar, 'RESTART', f"{to_fv3time(config.current_cycle)}.sfc_data.tile{tt}.nc") + logger.debug(f"creating member {out_netcdf}") + with Dataset(out_netcdf, "r+") as ncOut: + slmsk_array = ncOut.variables['slmsk'][:] + vtype_array = ncOut.variables['vtype'][:] + slmsk_array[vtype_array == 15] = 0 # remove glacier locations + var_array = ncOut.variables[vname][:] + var_array[slmsk_array == 1] = var_array[slmsk_array == 1] + value * offset + ncOut.variables[vname][0, :, :] = var_array[:] + + @staticmethod + @logit(logger) + def add_increments(config: Dict) -> None: + """Executes the program "apply_incr.exe" to create analysis "sfc_data" files by adding increments to backgrounds + + Parameters + ---------- + config: Dict + Dictionary of key-value pairs needed in this method + Should contain the following keys: + HOMEgfs + COM_ATMOS_RESTART_PREV + DATA + current_cycle + CASE + OCNRES + ntiles + APPLY_INCR_NML_TMPL + APPLY_INCR_EXE + APRUN_APPLY_INCR + DOIAU + SNOW_WINDOW_BEGIN + + Raises + ------ + OSError + Failure due to OS issues + WorkflowException + All other exceptions + """ + + # need backgrounds to create analysis from increments after LETKF + logger.info("Copy backgrounds into anl/ directory for creating analysis from increments") + bkgtimes = [] + if config.DOIAU: + # want analysis at beginning and middle of window + bkgtimes.append(config.SNOW_WINDOW_BEGIN) + bkgtimes.append(config.current_cycle) + anllist = [] + for bkgtime in bkgtimes: + template = f'{to_fv3time(bkgtime)}.sfc_data.tile{{tilenum}}.nc' + for itile in range(1, config.ntiles + 1): + filename = template.format(tilenum=itile) + src = os.path.join(config.COM_ATMOS_RESTART_PREV, filename) + dest = os.path.join(config.DATA, "anl", filename) + anllist.append([src, dest]) + FileHandler({'copy': anllist}).sync() + + if config.DOIAU: + logger.info("Copying increments to beginning of window") + template_in = f'snowinc.{to_fv3time(config.current_cycle)}.sfc_data.tile{{tilenum}}.nc' + template_out = f'snowinc.{to_fv3time(config.SNOW_WINDOW_BEGIN)}.sfc_data.tile{{tilenum}}.nc' + inclist = [] + for itile in range(1, config.ntiles + 1): + filename_in = template_in.format(tilenum=itile) + filename_out = template_out.format(tilenum=itile) + src = os.path.join(config.DATA, 'anl', filename_in) + dest = os.path.join(config.DATA, 'anl', filename_out) + inclist.append([src, dest]) + FileHandler({'copy': inclist}).sync() + + # loop over times to apply increments + for bkgtime in bkgtimes: + logger.info("Processing analysis valid: {bkgtime}") + logger.info("Create namelist for APPLY_INCR_EXE") + nml_template = config.APPLY_INCR_NML_TMPL + nml_config = { + 'current_cycle': bkgtime, + 'CASE': config.CASE, + 'DATA': config.DATA, + 'HOMEgfs': config.HOMEgfs, + 'OCNRES': config.OCNRES, + } + nml_data = Jinja(nml_template, nml_config).render + logger.debug(f"apply_incr_nml:\n{nml_data}") + + nml_file = os.path.join(config.DATA, "apply_incr_nml") + with open(nml_file, "w") as fho: + fho.write(nml_data) + + logger.info("Link APPLY_INCR_EXE into DATA/") + exe_src = config.APPLY_INCR_EXE + exe_dest = os.path.join(config.DATA, os.path.basename(exe_src)) + if os.path.exists(exe_dest): + rm_p(exe_dest) + os.symlink(exe_src, exe_dest) + + # execute APPLY_INCR_EXE to create analysis files + exe = Executable(config.APRUN_APPLY_INCR) + exe.add_default_arg(os.path.join(config.DATA, os.path.basename(exe_src))) + logger.info(f"Executing {exe}") + try: + exe() + except OSError: + raise OSError(f"Failed to execute {exe}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exe}") diff --git a/ush/python/pygfs/task/upp.py b/ush/python/pygfs/task/upp.py index 7db50e1582..7e42e07c64 100644 --- a/ush/python/pygfs/task/upp.py +++ b/ush/python/pygfs/task/upp.py @@ -46,26 +46,27 @@ def __init__(self, config: Dict[str, Any]) -> None: """ super().__init__(config) - if self.config.UPP_RUN not in self.VALID_UPP_RUN: - raise NotImplementedError(f'{self.config.UPP_RUN} is not a valid UPP run type.\n' + + if self.task_config.UPP_RUN not in self.VALID_UPP_RUN: + raise NotImplementedError(f'{self.task_config.UPP_RUN} is not a valid UPP run type.\n' + 'Valid UPP_RUN values are:\n' + f'{", ".join(self.VALID_UPP_RUN)}') - valid_datetime = add_to_datetime(self.runtime_config.current_cycle, to_timedelta(f"{self.config.FORECAST_HOUR}H")) + valid_datetime = add_to_datetime(self.task_config.current_cycle, to_timedelta(f"{self.task_config.FORECAST_HOUR}H")) + # Extend task_config with localdict localdict = AttrDict( - {'upp_run': self.config.UPP_RUN, - 'forecast_hour': self.config.FORECAST_HOUR, + {'upp_run': self.task_config.UPP_RUN, + 'forecast_hour': self.task_config.FORECAST_HOUR, 'valid_datetime': valid_datetime, 'atmos_filename': f"atm_{valid_datetime.strftime('%Y%m%d%H%M%S')}.nc", 'flux_filename': f"sfc_{valid_datetime.strftime('%Y%m%d%H%M%S')}.nc" } ) - self.task_config = AttrDict(**self.config, **self.runtime_config, **localdict) + self.task_config = AttrDict(**self.task_config, **localdict) # Read the upp.yaml file for common configuration - logger.info(f"Read the UPP configuration yaml file {self.config.UPP_CONFIG}") - self.task_config.upp_yaml = parse_j2yaml(self.config.UPP_CONFIG, self.task_config) + logger.info(f"Read the UPP configuration yaml file {self.task_config.UPP_CONFIG}") + self.task_config.upp_yaml = parse_j2yaml(self.task_config.UPP_CONFIG, self.task_config) logger.debug(f"upp_yaml:\n{pformat(self.task_config.upp_yaml)}") @staticmethod diff --git a/ush/python/pygfs/utils/__init__.py b/ush/python/pygfs/utils/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ush/python/pygfs/utils/marine_da_utils.py b/ush/python/pygfs/utils/marine_da_utils.py new file mode 100644 index 0000000000..016551878b --- /dev/null +++ b/ush/python/pygfs/utils/marine_da_utils.py @@ -0,0 +1,99 @@ +import f90nml +import os +from logging import getLogger +import xarray as xr + +from wxflow import (FileHandler, + logit, + WorkflowException, + AttrDict, + parse_j2yaml, + Executable, + jinja) + +logger = getLogger(__name__.split('.')[-1]) + + +@logit(logger) +def run(exec_cmd: Executable) -> None: + """Run the executable command + """ + logger.info(f"Executing {exec_cmd}") + try: + logger.debug(f"Executing {exec_cmd}") + exec_cmd() + except OSError: + raise OSError(f"Failed to execute {exec_cmd}") + except Exception: + raise WorkflowException(f"An error occured during execution of {exec_cmd}") + + +@logit(logger) +def link_executable(task_config: AttrDict, exe_name: str) -> None: + """Link the executable to the DATA directory + """ + logger.info(f"Link executable {exe_name}") + logger.warn("WARNING: Linking is not permitted per EE2.") + exe_src = os.path.join(task_config.EXECgfs, exe_name) + exe_dest = os.path.join(task_config.DATA, exe_name) + if os.path.exists(exe_dest): + os.remove(exe_dest) + os.symlink(exe_src, exe_dest) + + +@logit(logger) +def prep_input_nml(task_config: AttrDict) -> None: + """Prepare the input.nml file + TODO: Use jinja2 instead of f90nml + """ + # stage input.nml + mom_input_nml_tmpl_src = os.path.join(task_config.HOMEgdas, 'parm', 'soca', 'fms', 'input.nml') + mom_input_nml_tmpl = os.path.join(task_config.DATA, 'mom_input.nml.tmpl') + FileHandler({'copy': [[mom_input_nml_tmpl_src, mom_input_nml_tmpl]]}).sync() + + # swap date and stacksize + domain_stack_size = task_config.DOMAIN_STACK_SIZE + ymdhms = [int(s) for s in task_config.MARINE_WINDOW_END.strftime('%Y,%m,%d,%H,%M,%S').split(',')] + with open(mom_input_nml_tmpl, 'r') as nml_file: + nml = f90nml.read(nml_file) + nml['ocean_solo_nml']['date_init'] = ymdhms + nml['fms_nml']['domains_stack_size'] = int(domain_stack_size) + nml.write('mom_input.nml') + + +@logit(logger) +def cice_hist2fms(input_filename: str, output_filename: str) -> None: + """ Reformat the CICE history file so it can be read by SOCA/FMS + Simple reformatting utility to allow soca/fms to read the CICE history files + """ + + # open the CICE history file + ds = xr.open_dataset(input_filename) + + if 'aicen' in ds.variables and 'hicen' in ds.variables and 'hsnon' in ds.variables: + logger.info(f"*** Already reformatted, skipping.") + return + + # rename the dimensions to xaxis_1 and yaxis_1 + ds = ds.rename({'ni': 'xaxis_1', 'nj': 'yaxis_1'}) + + # rename the variables + ds = ds.rename({'aice_h': 'aicen', 'hi_h': 'hicen', 'hs_h': 'hsnon'}) + + # Save the new netCDF file + ds.to_netcdf(output_filename, mode='w') + + +@logit(logger) +def stage_ens_mem(task_config: AttrDict) -> None: + """ Copy the ensemble members to the DATA directory + Copy the ensemble members to the DATA directory and reformat the CICE history files + """ + # Copy the ensemble members to the DATA directory + logger.info("---------------- Stage ensemble members") + ensbkgconf = AttrDict(task_config) + ensbkgconf.RUN = task_config.GDUMP_ENS + logger.debug(f"{jinja.Jinja(task_config.MARINE_ENSDA_STAGE_BKG_YAML_TMPL, ensbkgconf).render}") + letkf_stage_list = parse_j2yaml(task_config.MARINE_ENSDA_STAGE_BKG_YAML_TMPL, ensbkgconf) + logger.info(f"{letkf_stage_list}") + FileHandler(letkf_stage_list).sync() diff --git a/ush/radmon_err_rpt.sh b/ush/radmon_err_rpt.sh index 6ae6505624..c3d251d5cd 100755 --- a/ush/radmon_err_rpt.sh +++ b/ush/radmon_err_rpt.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -55,9 +55,6 @@ cycle2=${5:-${cycle2:?}} diag_rpt=${6:-${diag_rpt:?}} outfile=${7:-${outfile:?}} -# Directories -HOMEradmon=${HOMEradmon:-$(pwd)} - # Other variables err=0 RADMON_SUFFIX=${RADMON_SUFFIX} diff --git a/ush/radmon_verf_angle.sh b/ush/radmon_verf_angle.sh index f68d7c88cc..3dff2a6f98 100755 --- a/ush/radmon_verf_angle.sh +++ b/ush/radmon_verf_angle.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -29,8 +29,6 @@ source "${HOMEgfs}/ush/preamble.sh" # Imported Shell Variables: # RADMON_SUFFIX data source suffix # defauls to opr -# EXECgfs executable directory -# PARMmonitor parm directory # RAD_AREA global or regional flag # defaults to global # TANKverf_rad data repository @@ -83,7 +81,6 @@ which prep_step which startmsg # File names -export pgmout=${pgmout:-${jlogfile}} touch "${pgmout}" # Other variables @@ -101,7 +98,7 @@ fi err=0 angle_exec=radmon_angle.x -shared_scaninfo="${shared_scaninfo:-${PARMmonitor}/gdas_radmon_scaninfo.txt}" +shared_scaninfo="${shared_scaninfo:-${PARMgfs}/monitor/gdas_radmon_scaninfo.txt}" scaninfo=scaninfo.txt #-------------------------------------------------------------------- diff --git a/ush/radmon_verf_bcoef.sh b/ush/radmon_verf_bcoef.sh index ab1058711e..4274436154 100755 --- a/ush/radmon_verf_bcoef.sh +++ b/ush/radmon_verf_bcoef.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -69,7 +69,6 @@ fi echo " RADMON_NETCDF, netcdf_boolean = ${RADMON_NETCDF}, ${netcdf_boolean}" # File names -pgmout=${pgmout:-${jlogfile}} touch "${pgmout}" # Other variables diff --git a/ush/radmon_verf_bcor.sh b/ush/radmon_verf_bcor.sh index f1f97c247e..ea0a7842e6 100755 --- a/ush/radmon_verf_bcor.sh +++ b/ush/radmon_verf_bcor.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -65,7 +65,6 @@ source "${HOMEgfs}/ush/preamble.sh" #################################################################### # File names -pgmout=${pgmout:-${jlogfile}} touch "${pgmout}" # Other variables diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index 7f98407ec5..0e935826dd 100755 --- a/ush/radmon_verf_time.sh +++ b/ush/radmon_verf_time.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -33,8 +33,6 @@ source "${HOMEgfs}/ush/preamble.sh" # defaults to 1 (on) # RADMON_SUFFIX data source suffix # defauls to opr -# EXECgfs executable directory -# PARMmonitor parm data directory # RAD_AREA global or regional flag # defaults to global # TANKverf_rad data repository @@ -75,11 +73,9 @@ source "${HOMEgfs}/ush/preamble.sh" #################################################################### # File names -#pgmout=${pgmout:-${jlogfile}} -#touch $pgmout radmon_err_rpt=${radmon_err_rpt:-${USHgfs}/radmon_err_rpt.sh} -base_file=${base_file:-${PARMmonitor}/gdas_radmon_base.tar} +base_file=${base_file:-${PARMgfs}/monitor/gdas_radmon_base.tar} report=report.txt disclaimer=disclaimer.txt diff --git a/ush/rstprod.sh b/ush/rstprod.sh index acac0340bb..b48a6817e0 100755 --- a/ush/rstprod.sh +++ b/ush/rstprod.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" #--------------------------------------------------------- # rstprod.sh diff --git a/ush/run_mpmd.sh b/ush/run_mpmd.sh index 24cb3f2656..e3fc2b7512 100755 --- a/ush/run_mpmd.sh +++ b/ush/run_mpmd.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" cmdfile=${1:?"run_mpmd requires an input file containing commands to execute in MPMD mode"} diff --git a/ush/syndat_getjtbul.sh b/ush/syndat_getjtbul.sh index c17067ff72..6596c6ef96 100755 --- a/ush/syndat_getjtbul.sh +++ b/ush/syndat_getjtbul.sh @@ -18,17 +18,10 @@ # Imported variables that must be passed in: # DATA - path to working directory # pgmout - string indicating path to for standard output file -# EXECSYND - path to syndat executable directory # TANK_TROPCY - path to home directory containing tropical cyclone record # data base -# Imported variables that can be passed in: -# jlogfile - path to job log file (skipped over by this script if not -# passed in) - -source "$HOMEgfs/ush/preamble.sh" - -EXECSYND=${EXECSYND:-${HOMESYND}/exec} +source "${USHgfs}/preamble.sh" cd $DATA @@ -52,8 +45,6 @@ hour=$(echo $CDATE10 | cut -c9-10) echo $PDYm1 pdym1=$PDYm1 -#pdym1=$(sh $utilscript/finddate.sh $pdy d-1) - echo " " >> $pgmout echo "Entering sub-shell syndat_getjtbul.sh to recover JTWC Bulletins" \ >> $pgmout @@ -123,7 +114,7 @@ fi [ -s jtwcbul ] && echo "Processing JTWC bulletin halfs into tcvitals records" >> $pgmout -pgm=$(basename $EXECSYND/syndat_getjtbul.x) +pgm=$(basename ${EXECgfs}/syndat_getjtbul.x) export pgm if [ -s prep_step ]; then set +u @@ -138,7 +129,7 @@ rm -f fnoc export FORT11=jtwcbul export FORT51=fnoc -time -p ${EXECSYND}/${pgm} >> $pgmout 2> errfile +time -p ${EXECgfs}/${pgm} >> $pgmout 2> errfile errget=$? ###cat errfile cat errfile >> $pgmout diff --git a/ush/syndat_qctropcy.sh b/ush/syndat_qctropcy.sh index cda9030577..8ec8f70b14 100755 --- a/ush/syndat_qctropcy.sh +++ b/ush/syndat_qctropcy.sh @@ -44,10 +44,6 @@ # COMSP - path to both output jtwc-fnoc file and output tcvitals file (this # tcvitals file is read by subsequent relocation processing and/or # subsequent program SYNDAT_SYNDATA) -# PARMSYND - path to syndat parm field directory -# EXECSYND - path to syndat executable directory -# FIXam - path to syndat fix field directory -# USHSYND - path to syndat ush directory # Imported variables that can be passed in: # ARCHSYND - path to syndat archive directory @@ -59,7 +55,7 @@ # data base # (Default: /dcom/us007003) # slmask - path to t126 32-bit gaussian land/sea mask file -# (Default: $FIXam/syndat_slmask.t126.gaussian) +# (Default: ${FIXgfs}/am/syndat_slmask.t126.gaussian) # copy_back - switch to copy updated files back to archive directory and # to tcvitals directory # (Default: YES) @@ -67,19 +63,13 @@ # (Default: not set) # TIMEIT - optional time and resource reporting (Default: not set) -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ARCHSYND=${ARCHSYND:-$COMROOTp3/gfs/prod/syndat} -HOMENHCp1=${HOMENHCp1:-/gpfs/?p1/nhc/save/guidance/storm-data/ncep} HOMENHC=${HOMENHC:-/gpfs/dell2/nhc/save/guidance/storm-data/ncep} TANK_TROPCY=${TANK_TROPCY:-${DCOMROOT}/us007003} -FIXam=${FIXam:-$HOMEgfs/fix/am} -USHSYND=${USHSYND:-$HOMEgfs/ush} -EXECSYND=${EXECSYND:-$HOMEgfs/exec} -PARMSYND=${PARMSYND:-$HOMEgfs/parm/relo} - -slmask=${slmask:-$FIXam/syndat_slmask.t126.gaussian} +slmask=${slmask:-${FIXgfs}/am/syndat_slmask.t126.gaussian} copy_back=${copy_back:-YES} files_override=${files_override:-""} @@ -188,12 +178,12 @@ if [ -n "$files_override" ]; then # for testing, typically want FILES=F fi echo " &INPUT RUNID = '${net}_${tmmark}_${cyc}', FILES = $files " > vitchk.inp -cat $PARMSYND/syndat_qctropcy.${RUN}.parm >> vitchk.inp +cat ${PARMgfs}/relo/syndat_qctropcy.${RUN}.parm >> vitchk.inp -# Copy the fixed fields from FIXam +# Copy the fixed fields -cp $FIXam/syndat_fildef.vit fildef.vit -cp $FIXam/syndat_stmnames stmnames +cp ${FIXgfs}/am/syndat_fildef.vit fildef.vit +cp ${FIXgfs}/am/syndat_stmnames stmnames rm -f nhc fnoc lthistry @@ -205,12 +195,9 @@ rm -f nhc fnoc lthistry # All are input to program syndat_qctropcy # ------------------------------------------------------------------ -if [ -s $HOMENHC/tcvitals ]; then - echo "tcvitals found" >> $pgmout - cp $HOMENHC/tcvitals nhc -elif [ -s $HOMENHCp1/tcvitals ]; then +if [ -s ${HOMENHC}/tcvitals ]; then echo "tcvitals found" >> $pgmout - cp $HOMENHCp1/tcvitals nhc + cp ${HOMENHC}/tcvitals nhc else echo "WARNING: tcvitals not found, create empty tcvitals" >> $pgmout > nhc @@ -221,17 +208,17 @@ touch nhc [ "$copy_back" = 'YES' ] && cat nhc >> $ARCHSYND/syndat_tcvitals.$year mv -f nhc nhc1 -$USHSYND/parse-storm-type.pl nhc1 > nhc +${USHgfs}/parse-storm-type.pl nhc1 > nhc cp -p nhc nhc.ORIG # JTWC/FNOC ... execute syndat_getjtbul script to write into working directory # as fnoc; copy to archive -$USHSYND/syndat_getjtbul.sh $CDATE10 +${USHgfs}/syndat_getjtbul.sh $CDATE10 touch fnoc [ "$copy_back" = 'YES' ] && cat fnoc >> $ARCHSYND/syndat_tcvitals.$year mv -f fnoc fnoc1 -$USHSYND/parse-storm-type.pl fnoc1 > fnoc +${USHgfs}/parse-storm-type.pl fnoc1 > fnoc if [ $SENDDBN = YES ]; then $DBNROOT/bin/dbn_alert MODEL SYNDAT_TCVITALS $job $ARCHSYND/syndat_tcvitals.$year @@ -245,7 +232,7 @@ cp $slmask slmask.126 # Execute program syndat_qctropcy -pgm=$(basename $EXECSYND/syndat_qctropcy.x) +pgm=$(basename ${EXECgfs}/syndat_qctropcy.x) export pgm if [ -s prep_step ]; then set +u @@ -259,7 +246,7 @@ fi echo "$CDATE10" > cdate10.dat export FORT11=slmask.126 export FORT12=cdate10.dat -${EXECSYND}/${pgm} >> $pgmout 2> errfile +${EXECgfs}/${pgm} >> $pgmout 2> errfile errqct=$? ###cat errfile cat errfile >> $pgmout @@ -323,28 +310,25 @@ diff nhc nhc.ORIG > /dev/null errdiff=$? ################################### -# Update NHC file in $HOMENHC +# Update NHC file in ${HOMENHC} ################################### if test "$errdiff" -ne '0' then if [ "$copy_back" = 'YES' -a ${envir} = 'prod' ]; then - if [ -s $HOMENHC/tcvitals ]; then - cp nhc $HOMENHC/tcvitals - fi - if [ -s $HOMENHCp1/tcvitals ]; then - cp nhc $HOMENHCp1/tcvitals + if [ -s ${HOMENHC}/tcvitals ]; then + cp nhc ${HOMENHC}/tcvitals fi err=$? if [ "$err" -ne '0' ]; then msg="###ERROR: Previous NHC Synthetic Data Record File \ -$HOMENHC/tcvitals not updated by syndat_qctropcy" +${HOMENHC}/tcvitals not updated by syndat_qctropcy" else msg="Previous NHC Synthetic Data Record File \ -$HOMENHC/tcvitals successfully updated by syndat_qctropcy" +${HOMENHC}/tcvitals successfully updated by syndat_qctropcy" fi set +x @@ -357,7 +341,7 @@ $HOMENHC/tcvitals successfully updated by syndat_qctropcy" else - msg="Previous NHC Synthetic Data Record File $HOMENHC/tcvitals \ + msg="Previous NHC Synthetic Data Record File ${HOMENHC}/tcvitals \ not changed by syndat_qctropcy" set +x echo diff --git a/ush/tropcy_relocate.sh b/ush/tropcy_relocate.sh index 01a21bd12c..11c0afb990 100755 --- a/ush/tropcy_relocate.sh +++ b/ush/tropcy_relocate.sh @@ -84,20 +84,13 @@ # envir String indicating environment under which job runs ('prod' # or 'test') # Default is "prod" -# HOMEALL String indicating parent directory path for some or -# all files under which job runs. -# If the imported variable MACHINE!=sgi, then the default is -# "/nw${envir}"; otherwise the default is -# "/disk1/users/snake/prepobs" -# HOMERELO String indicating parent directory path for relocation -# specific files. (May be under HOMEALL) # envir_getges String indicating environment under which GETGES utility -# ush runs (see documentation in $USHGETGES/getges.sh for +# ush runs (see documentation in ${USHgfs}/getges.sh for # more information) # Default is "$envir" # network_getges # String indicating job network under which GETGES utility -# ush runs (see documentation in $USHGETGES/getges.sh for +# ush runs (see documentation in ${USHgfs}/getges.sh for # more information) # Default is "global" unless the center relocation processing # date/time is not a multiple of 3-hrs, then the default is @@ -122,34 +115,20 @@ # POE_OPTS String indicating options to use with poe command # Default is "-pgmmodel mpmd -ilevel 2 -labelio yes \ # -stdoutmode ordered" -# USHGETGES String indicating directory path for GETGES utility ush -# file -# USHRELO String indicating directory path for RELOCATE ush files -# Default is "${HOMERELO}/ush" -# EXECRELO String indicating directory path for RELOCATE executables -# Default is "${HOMERELO}/exec" -# FIXRELO String indicating directory path for RELOCATE data fix- -# field files -# Default is "${HOMERELO}/fix" -# EXECUTIL String indicating directory path for utility program -# executables -# If the imported variable MACHINE!=sgi, then the default is -# "/nwprod/util/exec"; otherwise the default is -# "${HOMEALL}/util/exec" # RELOX String indicating executable path for RELOCATE_MV_NVORTEX # program -# Default is "$EXECRELO/relocate_mv_nvortex" +# Default is "${EXECgfs}/relocate_mv_nvortex" # SUPVX String indicating executable path for SUPVIT utility # program -# Default is "$EXECUTIL/supvit.x" +# Default is "${EXECgfs}/supvit.x" # GETTX String indicating executable path for GETTRK utility # program -# Default is "$EXECUTIL/gettrk" +# Default is "${EXECgfs}/gettrk" # BKGFREQ Frequency of background files for relocation # Default is "3" # SENDDBN String when set to "YES" alerts output files to $COMSP # NDATE String indicating executable path for NDATE utility program -# Default is "$EXECUTIL/ndate" +# Default is "${EXECgfs}/ndate" # # These do not have to be exported to this script. If they are, they will # be used by the script. If they are not, they will be skipped @@ -166,18 +145,18 @@ # # Modules and files referenced: # Herefile: RELOCATE_GES -# $USHRELO/tropcy_relocate_extrkr.sh -# $USHGETGES/getges.sh +# ${USHgfs}/tropcy_relocate_extrkr.sh +# ${USHgfs}/getges.sh # $NDATE (here and in child script -# $USHRELO/tropcy_relocate_extrkr.sh) +# ${USHgfs}/tropcy_relocate_extrkr.sh) # /usr/bin/poe # postmsg # $DATA/prep_step (here and in child script -# $USHRELO/tropcy_relocate_extrkr.sh) +# ${USHgfs}/tropcy_relocate_extrkr.sh) # $DATA/err_exit (here and in child script -# $USHRELO/tropcy_relocate_extrkr.sh) +# ${USHgfs}/tropcy_relocate_extrkr.sh) # $DATA/err_chk (here and in child script -# $USHRELO/tropcy_relocate_extrkr.sh) +# ${USHgfs}/tropcy_relocate_extrkr.sh) # NOTE: The last three scripts above are NOT REQUIRED utilities. # If $DATA/prep_step not found, a scaled down version of it is # executed in-line. If $DATA/err_exit or $DATA/err_chk are not @@ -188,7 +167,7 @@ # programs : # RELOCATE_MV_NVORTEX - executable $RELOX # T126 GRIB global land/sea mask: -# $FIXRELO/global_slmask.t126.grb +# ${FIXgfs}/am/global_slmask.t126.grb # SUPVIT - executable $SUPVX # GETTRK - executable $GETTX # @@ -204,7 +183,7 @@ # #### -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" MACHINE=${MACHINE:-$(hostname -s | cut -c 1-3)} @@ -275,14 +254,6 @@ set_trace envir=${envir:-prod} -if [ $MACHINE != sgi ]; then - HOMEALL=${HOMEALL:-$OPSROOT} -else - HOMEALL=${HOMEALL:-/disk1/users/snake/prepobs} -fi - -HOMERELO=${HOMERELO:-${shared_global_home}} - envir_getges=${envir_getges:-$envir} if [ $modhr -eq 0 ]; then network_getges=${network_getges:-global} @@ -295,21 +266,12 @@ pgmout=${pgmout:-/dev/null} tstsp=${tstsp:-/tmp/null/} tmmark=${tmmark:-tm00} -USHRELO=${USHRELO:-${HOMERELO}/ush} -##USHGETGES=${USHGETGES:-/nwprod/util/ush} -##USHGETGES=${USHGETGES:-${HOMERELO}/ush} -USHGETGES=${USHGETGES:-${USHRELO}} - -EXECRELO=${EXECRELO:-${HOMERELO}/exec} - -FIXRELO=${FIXRELO:-${HOMERELO}/fix} - -RELOX=${RELOX:-$EXECRELO/relocate_mv_nvortex} +RELOX=${RELOX:-${EXECgfs}/relocate_mv_nvortex} export BKGFREQ=${BKGFREQ:-1} -SUPVX=${SUPVX:-$EXECRELO/supvit.x} -GETTX=${GETTX:-$EXECRELO/gettrk} +SUPVX=${SUPVX:-${EXECgfs}/supvit.x} +GETTX=${GETTX:-${EXECgfs}/gettrk} ################################################ # EXECUTE TROPICAL CYCLONE RELOCATION PROCESSING @@ -355,7 +317,7 @@ echo " relocation processing date/time" echo "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" echo set_trace - $USHGETGES/getges.sh -e $envir_getges -n $network_getges \ + ${USHgfs}/getges.sh -e $envir_getges -n $network_getges \ -v $CDATE10 -f $fhr -t tcvges tcvitals.m${fhr} set +x echo @@ -405,7 +367,7 @@ echo " relocation processing date/time" echo "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" echo set_trace - $USHGETGES/getges.sh -e $envir_getges -n $network_getges \ + ${USHgfs}/getges.sh -e $envir_getges -n $network_getges \ -v $CDATE10 -t $stype $sges errges=$? if test $errges -ne 0; then @@ -439,7 +401,7 @@ to center relocation date/time;" # ---------------------------------------------------------------------------- if [ $fhr = "0" ]; then - "${USHGETGES}/getges.sh" -e "${envir_getges}" -n "${network_getges}" -v "${CDATE10}" \ + "${USHgfs}/getges.sh" -e "${envir_getges}" -n "${network_getges}" -v "${CDATE10}" \ -t "${stype}" > "${COM_OBS}/${RUN}.${cycle}.sgesprep_pre-relocate_pathname.${tmmark}" cp "${COM_OBS}/${RUN}.${cycle}.sgesprep_pre-relocate_pathname.${tmmark}" \ "${COM_OBS}/${RUN}.${cycle}.sgesprep_pathname.${tmmark}" @@ -459,7 +421,7 @@ echo " relocation processing date/time" echo "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" echo set_trace - $USHGETGES/getges.sh -e $envir_getges -n $network_getges \ + ${USHgfs}/getges.sh -e $envir_getges -n $network_getges \ -v $CDATE10 -t $ptype $pges errges=$? if test $errges -ne 0; then @@ -541,7 +503,7 @@ else # $DATA/$RUN.$cycle.relocate.model_track.tm00 # -------------------------------------------- - $USHRELO/tropcy_relocate_extrkr.sh + ${USHgfs}/tropcy_relocate_extrkr.sh err=$? if [ $err -ne 0 ]; then @@ -550,12 +512,12 @@ else set +x echo - echo "$USHRELO/tropcy_relocate_extrkr.sh failed" + echo "${USHgfs}/tropcy_relocate_extrkr.sh failed" echo "ABNORMAL EXIT!!!!!!!!!!!" echo set_trace if [ -s $DATA/err_exit ]; then - $DATA/err_exit "Script $USHRELO/tropcy_relocate_extrkr.sh failed" + $DATA/err_exit "Script ${USHgfs}/tropcy_relocate_extrkr.sh failed" else exit 555 fi @@ -569,10 +531,10 @@ else rm fort.* fi - ln -sf $DATA/tcvitals.now1 fort.11 - ln -sf $DATA/model_track.all fort.30 - ln -sf $DATA/rel_inform1 fort.62 - ln -sf $DATA/tcvitals.relocate0 fort.65 + ${NLN} $DATA/tcvitals.now1 fort.11 + ${NLN} $DATA/model_track.all fort.30 + ${NLN} $DATA/rel_inform1 fort.62 + ${NLN} $DATA/tcvitals.relocate0 fort.65 i1=20 i2=53 @@ -586,8 +548,8 @@ else tpref=p$fhr fi - ln -sf $DATA/sg${tpref}prep fort.$i1 - ln -sf $DATA/sg${tpref}prep.relocate fort.$i2 + ${NLN} $DATA/sg${tpref}prep fort.$i1 + ${NLN} $DATA/sg${tpref}prep.relocate fort.$i2 i1=$((i1+1)) i2=$((i2+BKGFREQ)) diff --git a/ush/tropcy_relocate_extrkr.sh b/ush/tropcy_relocate_extrkr.sh index ede2318c4a..18e0851368 100755 --- a/ush/tropcy_relocate_extrkr.sh +++ b/ush/tropcy_relocate_extrkr.sh @@ -3,7 +3,7 @@ # This script is executed by the script tropcy_relocate.sh # -------------------------------------------------------- -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" export machine=${machine:-ZEUS} export machine=$(echo $machine|tr '[a-z]' '[A-Z]') @@ -592,8 +592,8 @@ if [ -s fort.* ]; then rm fort.* fi -ln -s -f ${vdir}/vitals.${symd}${dishh} fort.31 -ln -s -f ${vdir}/vitals.upd.${cmodel}.${symd}${dishh} fort.51 +${NLN} ${vdir}/vitals.${symd}${dishh} fort.31 +${NLN} ${vdir}/vitals.upd.${cmodel}.${symd}${dishh} fort.51 ##$XLF_LINKSSH #if [ -z $XLF_LINKSSH ] ; then @@ -1528,19 +1528,19 @@ if [ -s fort.* ]; then rm fort.* fi -ln -s -f ${gribfile} fort.11 -ln -s -f ${vdir}/tmp.gfs.atcfunix.${symdh} fort.14 -ln -s -f ${vdir}/vitals.upd.${cmodel}.${symd}${dishh} fort.12 -ln -s -f ${ixfile} fort.31 -ln -s -f ${vdir}/trak.${cmodel}.all.${symdh} fort.61 -ln -s -f ${vdir}/trak.${cmodel}.atcf.${symdh} fort.62 -ln -s -f ${vdir}/trak.${cmodel}.radii.${symdh} fort.63 -ln -s -f ${vdir}/trak.${cmodel}.atcfunix.${symdh} fort.64 +${NLN} ${gribfile} fort.11 +${NLN} ${vdir}/tmp.gfs.atcfunix.${symdh} fort.14 +${NLN} ${vdir}/vitals.upd.${cmodel}.${symd}${dishh} fort.12 +${NLN} ${ixfile} fort.31 +${NLN} ${vdir}/trak.${cmodel}.all.${symdh} fort.61 +${NLN} ${vdir}/trak.${cmodel}.atcf.${symdh} fort.62 +${NLN} ${vdir}/trak.${cmodel}.radii.${symdh} fort.63 +${NLN} ${vdir}/trak.${cmodel}.atcfunix.${symdh} fort.64 if [ $BKGFREQ -eq 1 ]; then - ln -s -f ${FIXRELO}/${cmodel}.tracker_leadtimes_hrly fort.15 + ${NLN} ${FIXgfs}/am/${cmodel}.tracker_leadtimes_hrly fort.15 elif [ $BKGFREQ -eq 3 ]; then - ln -s -f ${FIXRELO}/${cmodel}.tracker_leadtimes fort.15 + ${NLN} ${FIXgfs}/am/${cmodel}.tracker_leadtimes fort.15 fi ##$XLF_LINKSSH diff --git a/ush/wafs_mkgbl.sh b/ush/wafs_mkgbl.sh new file mode 100755 index 0000000000..e6139bc9d3 --- /dev/null +++ b/ush/wafs_mkgbl.sh @@ -0,0 +1,152 @@ +# UTILITY SCRIPT NAME : wafs_mkgbl.sh +# AUTHOR : Mary Jacobs +# DATE WRITTEN : 11/06/96 +# +# Abstract: This utility script produces the GFS WAFS +# bulletins. +# +# Input: 2 arguments are passed to this script. +# 1st argument - Forecast Hour - format of 2I +# 2nd argument - In hours 12-30, the designator of +# a or b. +# +# Logic: If we are processing hours 12-30, we have the +# added variable of the a or b, and process +# accordingly. The other hours, the a or b is dropped. +# +echo "History: SEPT 1996 - First implementation of this utility script" +echo "History: AUG 1999 - Modified for implementation on IBM SP" +echo " - Allows users to run interactively" +# + +set -x +hour_list="$1" +sets_key=$2 +num=$# + +if test $num -ge 2 +then + echo " Appropriate number of arguments were passed" + set -x + if [ -z "$DATA" ] + then + export DATA=`pwd` + cd $DATA + setpdy.sh + . PDY + fi +else + echo "" + echo "Usage: wafs_mkgbl.sh \$hour [a|b]" + echo "" + exit 16 +fi + +echo " ------------------------------------------" +echo " BEGIN MAKING ${NET} WAFS PRODUCTS" +echo " ------------------------------------------" + +echo "Enter Make WAFS utility." + +for hour in $hour_list +do + ############################## + # Copy Input Field to $DATA + ############################## + + if test ! -f pgrbf${hour} + then +# cp $COMIN/${RUN}.${cycle}.pgrbf${hour} pgrbf${hour} + +# file name and forecast hour of GFS model data in Grib2 are 3 digits +# export fhr3=$hour +# if test $fhr3 -lt 100 +# then +# export fhr3="0$fhr3" +# fi + fhr3="$(printf "%03d" $(( 10#$hour )) )" + +# To solve Bugzilla #408: remove the dependency of grib1 files in gfs wafs job in next GFS upgrade +# Reason: It's not efficent if simply converting from grib2 to grib1 (costs 6 seconds with 415 records) +# Solution: Need to grep 'selected fields on selected levels' before CNVGRIB (costs 1 second with 92 records) + ${NLN} $COMIN/${RUN}.${cycle}.pgrb2.1p00.f$fhr3 pgrb2f${hour} + $WGRIB2 pgrb2f${hour} | grep -F -f $FIXgfs/grib_wafs.grb2to1.list | $WGRIB2 -i pgrb2f${hour} -grib pgrb2f${hour}.tmp +# on Cray, IOBUF_PARAMS has to used to speed up CNVGRIB +# export IOBUF_PARAMS='*:size=32M:count=4:verbose' + $CNVGRIB -g21 pgrb2f${hour}.tmp pgrbf${hour} +# unset IOBUF_PARAMS + fi + + # + # BAG - Put in fix on 20070925 to force the percision of U and V winds + # to default to 1 through the use of the grib_wafs.namelist file. + # + $COPYGB -g3 -i0 -N$FIXgfs/grib_wafs.namelist -x pgrbf${hour} tmp + mv tmp pgrbf${hour} + $GRBINDEX pgrbf${hour} pgrbif${hour} + + ############################## + # Process WAFS + ############################## + + if test $hour -ge '12' -a $hour -le '30' + then + sets=$sets_key + set +x + echo "We are processing the primary and secondary sets of hours." + echo "These sets are the a and b of hours 12-30." + set -x + else + # This is for hours 00/06 and 36-72. + unset sets + fi + + export pgm=wafs_makewafs + . prep_step + + export FORT11="pgrbf${hour}" + export FORT31="pgrbif${hour}" + export FORT51="xtrn.wfs${NET}${hour}${sets}" + export FORT53="com.wafs${hour}${sets}" + + startmsg + $EXECgfs/wafs_makewafs.x < $FIXgfs/grib_wfs${NET}${hour}${sets} >>$pgmout 2>errfile + export err=$?;err_chk + + + ############################## + # Post Files to PCOM + ############################## + + if test "$SENDCOM" = 'YES' + then + cp xtrn.wfs${NET}${hour}${sets} $PCOM/xtrn.wfs${NET}${cyc}${hour}${sets}.$jobsuffix +# cp com.wafs${hour}${sets} $PCOM/com.wafs${cyc}${hour}${sets}.$jobsuffix + +# if test "$SENDDBN_NTC" = 'YES' +# then +# if test "$NET" = 'gfs' +# then +# $DBNROOT/bin/dbn_alert MODEL GFS_WAFS $job \ +# $PCOM/com.wafs${cyc}${hour}${sets}.$jobsuffix +# $DBNROOT/bin/dbn_alert MODEL GFS_XWAFS $job \ +# $PCOM/xtrn.wfs${NET}${cyc}${hour}${sets}.$jobsuffix +# fi +# fi + fi + + ############################## + # Distribute Data + ############################## + + if [ "$SENDDBN_NTC" = 'YES' ] ; then + $DBNROOT/bin/dbn_alert GRIB_LOW $NET $job $PCOM/xtrn.wfs${NET}${cyc}${hour}${sets}.$jobsuffix + else + echo "xtrn.wfs${NET}${cyc}${hour}${sets}.$job file not posted to db_net." + fi + + echo "Wafs Processing $hour hour completed normally" + +done + +exit diff --git a/ush/wave_extractvars.sh b/ush/wave_extractvars.sh new file mode 100755 index 0000000000..32ee44986b --- /dev/null +++ b/ush/wave_extractvars.sh @@ -0,0 +1,34 @@ +#! /usr/bin/env bash + +################################################################################ +## UNIX Script Documentation Block +## Script name: wave_extractvars.sh +## Script description: Extracts variables from wave products +## and saves these variables in arcdir +####################### +# Main body starts here +####################### + +source "${USHgfs}/preamble.sh" + +subdata=${1} + +[[ -d "${subdata}" ]] || mkdir -p "${subdata}" + +for (( nh = FHOUT_WAV_EXTRACT; nh <= FHMAX_WAV; nh = nh + FHOUT_WAV_EXTRACT )); do + fnh=$(printf "%3.3d" "${nh}") + + infile=${COMIN_WAVE_GRID}/${RUN}wave.t${cyc}z.global.${wavres}.f${fnh}.grib2 + outfile=${subdata}/${RUN}wave.t${cyc}z.global.${wavres}.f${fnh}.grib2 + rm -f "${outfile}" # Remove outfile if it already exists before extraction + + if [[ -f "${infile}" ]]; then # Check if input file exists before extraction + # shellcheck disable=SC2312 + ${WGRIB2} "${infile}" | grep -F -f "${varlist_wav}" | ${WGRIB2} -i "${infile}" -append -grib "${outfile}" + else + echo "WARNING: ${infile} does not exist." + fi + copy_to_comout "${outfile}" "${ARC_RFCST_PROD_WAV}" +done # nh + +exit 0 diff --git a/ush/wave_grib2_sbs.sh b/ush/wave_grib2_sbs.sh index af28760269..99f89f3f37 100755 --- a/ush/wave_grib2_sbs.sh +++ b/ush/wave_grib2_sbs.sh @@ -25,7 +25,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -72,7 +72,7 @@ if [[ -n ${waveMEMB} ]]; then ENSTAG=".${membTAG}${waveMEMB}" ; fi outfile="${WAV_MOD_TAG}.${cycle}${ENSTAG}.${grdnam}.${grdres}.f${FH3}.grib2" # Only create file if not present in COM -if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then +if [[ ! -s "${COMOUT_WAVE_GRID}/${outfile}.idx" ]]; then set +x echo ' ' @@ -82,8 +82,8 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then echo " Model ID : $WAV_MOD_TAG" set_trace - if [[ -z "${PDY}" ]] || [[ -z ${cyc} ]] || [[ -z "${cycle}" ]] || [[ -z "${EXECwave}" ]] || \ - [[ -z "${COM_WAVE_GRID}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${gribflags}" ]] || \ + if [[ -z "${PDY}" ]] || [[ -z ${cyc} ]] || [[ -z "${cycle}" ]] || [[ -z "${EXECgfs}" ]] || \ + [[ -z "${COMOUT_WAVE_GRID}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${gribflags}" ]] || \ [[ -z "${GRIDNR}" ]] || [[ -z "${MODNR}" ]] || \ [[ -z "${SENDDBN}" ]]; then set +x @@ -110,8 +110,8 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then # 0.e Links to working directory - ln -s "${DATA}/mod_def.${grdID}" "mod_def.ww3" - ln -s "${DATA}/output_${ymdh}0000/out_grd.${grdID}" "out_grd.ww3" + ${NLN} "${DATA}/mod_def.${grdID}" "mod_def.ww3" + ${NLN} "${DATA}/output_${ymdh}0000/out_grd.${grdID}" "out_grd.ww3" # --------------------------------------------------------------------------- # # 1. Generate GRIB file with all data @@ -138,11 +138,11 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then set +x echo " Run ww3_grib2" - echo " Executing ${EXECwave}/ww3_grib" + echo " Executing ${EXECgfs}/ww3_grib" set_trace export pgm=ww3_grib;. prep_step - "${EXECwave}/ww3_grib" > "grib2_${grdnam}_${FH3}.out" 2>&1 + "${EXECgfs}/ww3_grib" > "grib2_${grdnam}_${FH3}.out" 2>&1 export err=$?;err_chk if [ ! -s gribfile ]; then @@ -157,11 +157,11 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then fi if (( fhr > 0 )); then - ${WGRIB2} gribfile -set_date "${PDY}${cyc}" -set_ftime "${fhr} hour fcst" -grib "${COM_WAVE_GRID}/${outfile}" + ${WGRIB2} gribfile -set_date "${PDY}${cyc}" -set_ftime "${fhr} hour fcst" -grib "${COMOUT_WAVE_GRID}/${outfile}" err=$? else ${WGRIB2} gribfile -set_date "${PDY}${cyc}" -set_ftime "${fhr} hour fcst" \ - -set table_1.4 1 -set table_1.2 1 -grib "${COM_WAVE_GRID}/${outfile}" + -set table_1.4 1 -set table_1.2 1 -grib "${COMOUT_WAVE_GRID}/${outfile}" err=$? fi @@ -177,7 +177,7 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then fi # Create index - ${WGRIB2} -s "${COM_WAVE_GRID}/${outfile}" > "${COM_WAVE_GRID}/${outfile}.idx" + ${WGRIB2} -s "${COMOUT_WAVE_GRID}/${outfile}" > "${COMOUT_WAVE_GRID}/${outfile}.idx" # Create grib2 subgrid is this is the source grid if [[ "${grdID}" = "${WAV_SUBGRBSRC}" ]]; then @@ -186,14 +186,14 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then subgrbnam=$(echo ${!subgrb} | cut -d " " -f 21) subgrbres=$(echo ${!subgrb} | cut -d " " -f 22) subfnam="${WAV_MOD_TAG}.${cycle}${ENSTAG}.${subgrbnam}.${subgrbres}.f${FH3}.grib2" - ${COPYGB2} -g "${subgrbref}" -i0 -x "${COM_WAVE_GRID}/${outfile}" "${COM_WAVE_GRID}/${subfnam}" - ${WGRIB2} -s "${COM_WAVE_GRID}/${subfnam}" > "${COM_WAVE_GRID}/${subfnam}.idx" + ${COPYGB2} -g "${subgrbref}" -i0 -x "${COMOUT_WAVE_GRID}/${outfile}" "${COMOUT_WAVE_GRID}/${subfnam}" + ${WGRIB2} -s "${COMOUT_WAVE_GRID}/${subfnam}" > "${COMOUT_WAVE_GRID}/${subfnam}.idx" done fi # 1.e Save in /com - if [[ ! -s "${COM_WAVE_GRID}/${outfile}" ]]; then + if [[ ! -s "${COMOUT_WAVE_GRID}/${outfile}" ]]; then set +x echo ' ' echo '********************************************* ' @@ -205,7 +205,7 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then set_trace exit 4 fi - if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then + if [[ ! -s "${COMOUT_WAVE_GRID}/${outfile}.idx" ]]; then set +x echo ' ' echo '*************************************************** ' @@ -220,11 +220,11 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then if [[ "${SENDDBN}" = 'YES' ]] && [[ ${outfile} != *global.0p50* ]]; then set +x - echo " Alerting GRIB file as ${COM_WAVE_GRID}/${outfile}" - echo " Alerting GRIB index file as ${COM_WAVE_GRID}/${outfile}.idx" + echo " Alerting GRIB file as ${COMOUT_WAVE_GRID}/${outfile}" + echo " Alerting GRIB index file as ${COMOUT_WAVE_GRID}/${outfile}.idx" set_trace - "${DBNROOT}/bin/dbn_alert" MODEL "${alertName}_WAVE_GB2" "${job}" "${COM_WAVE_GRID}/${outfile}" - "${DBNROOT}/bin/dbn_alert" MODEL "${alertName}_WAVE_GB2_WIDX" "${job}" "${COM_WAVE_GRID}/${outfile}.idx" + "${DBNROOT}/bin/dbn_alert" MODEL "${alertName}_WAVE_GB2" "${job}" "${COMOUT_WAVE_GRID}/${outfile}" + "${DBNROOT}/bin/dbn_alert" MODEL "${alertName}_WAVE_GB2_WIDX" "${job}" "${COMOUT_WAVE_GRID}/${outfile}.idx" else echo "${outfile} is global.0p50 or SENDDBN is NO, no alert sent" fi @@ -245,7 +245,7 @@ if [[ ! -s "${COM_WAVE_GRID}/${outfile}.idx" ]]; then else set +x echo ' ' - echo " File ${COM_WAVE_GRID}/${outfile} found, skipping generation process" + echo " File ${COMOUT_WAVE_GRID}/${outfile} found, skipping generation process" echo ' ' set_trace fi diff --git a/ush/wave_grid_interp_sbs.sh b/ush/wave_grid_interp_sbs.sh index c11a75f89d..31b7808c16 100755 --- a/ush/wave_grid_interp_sbs.sh +++ b/ush/wave_grid_interp_sbs.sh @@ -25,7 +25,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -65,8 +65,8 @@ source "$HOMEgfs/ush/preamble.sh" echo " Model ID : $WAV_MOD_TAG" set_trace - if [[ -z "${PDY}" ]] || [[ -z "${cyc}" ]] || [[ -z "${cycle}" ]] || [[ -z "${EXECwave}" ]] || \ - [[ -z "${COM_WAVE_PREP}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${SENDDBN}" ]] || \ + if [[ -z "${PDY}" ]] || [[ -z "${cyc}" ]] || [[ -z "${cycle}" ]] || [[ -z "${EXECgfs}" ]] || \ + [[ -z "${COMOUT_WAVE_PREP}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${SENDDBN}" ]] || \ [ -z "${waveGRD}" ] then set +x @@ -75,7 +75,7 @@ source "$HOMEgfs/ush/preamble.sh" echo '*** EXPORTED VARIABLES IN postprocessor NOT SET ***' echo '***************************************************' echo ' ' - echo "${PDY}${cyc} ${cycle} ${EXECwave} ${COM_WAVE_PREP} ${WAV_MOD_TAG} ${SENDDBN} ${waveGRD}" + echo "${PDY}${cyc} ${cycle} ${EXECgfs} ${COMOUT_WAVE_PREP} ${WAV_MOD_TAG} ${SENDDBN} ${waveGRD}" set_trace exit 1 fi @@ -85,18 +85,16 @@ source "$HOMEgfs/ush/preamble.sh" rm -f ${DATA}/output_${ymdh}0000/out_grd.$grdID if [ ! -f ${DATA}/${grdID}_interp.inp.tmpl ]; then - cp $PARMwave/${grdID}_interp.inp.tmpl ${DATA} + cp "${PARMgfs}/wave/${grdID}_interp.inp.tmpl" "${DATA}/${grdID}_interp.inp.tmpl" fi - ln -sf ${DATA}/${grdID}_interp.inp.tmpl . + ${NLN} "${DATA}/${grdID}_interp.inp.tmpl" "${grdID}_interp.inp.tmpl" - for ID in $waveGRD - do - ln -sf ${DATA}/output_${ymdh}0000/out_grd.$ID . + for ID in ${waveGRD}; do + ${NLN} "${DATA}/output_${ymdh}0000/out_grd.${ID}" "out_grd.${ID}" done - for ID in $waveGRD $grdID - do - ln -sf ${DATA}/mod_def.$ID . + for ID in ${waveGRD} ${grdID}; do + ${NLN} "${DATA}/mod_def.${ID}" "mod_def.${ID}" done # --------------------------------------------------------------------------- # @@ -113,42 +111,42 @@ source "$HOMEgfs/ush/preamble.sh" wht_OK='no' if [ ! -f ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} ]; then - if [ -f $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} ] + if [ -f ${FIXgfs}/wave/ww3_gint.WHTGRIDINT.bin.${grdID} ] then set +x echo ' ' - echo " Copying $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} " + echo " Copying ${FIXgfs}/wave/ww3_gint.WHTGRIDINT.bin.${grdID} " set_trace - cp $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} ${DATA} + cp ${FIXgfs}/wave/ww3_gint.WHTGRIDINT.bin.${grdID} ${DATA} wht_OK='yes' else set +x echo ' ' - echo " Not found: $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} " + echo " Not found: ${FIXgfs}/wave/ww3_gint.WHTGRIDINT.bin.${grdID} " fi fi # Check and link weights file if [ -f ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} ] then - ln -s ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} ./WHTGRIDINT.bin + ${NLN} ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} ./WHTGRIDINT.bin fi # 1.b Run interpolation code set +x echo " Run ww3_gint - echo " Executing $EXECwave/ww3_gint + echo " Executing ${EXECgfs}/ww3_gint set_trace export pgm=ww3_gint;. prep_step - $EXECwave/ww3_gint 1> gint.${grdID}.out 2>&1 + ${EXECgfs}/ww3_gint 1> gint.${grdID}.out 2>&1 export err=$?;err_chk # Write interpolation file to main TEMP dir area if not there yet if [ "wht_OK" = 'no' ] then cp -f ./WHTGRIDINT.bin ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} - cp -f ./WHTGRIDINT.bin ${FIXwave}/ww3_gint.WHTGRIDINT.bin.${grdID} + cp -f ./WHTGRIDINT.bin ${FIXgfs}/wave/ww3_gint.WHTGRIDINT.bin.${grdID} fi @@ -173,9 +171,9 @@ source "$HOMEgfs/ush/preamble.sh" # 1.c Save in /com set +x - echo " Saving GRID file as ${COM_WAVE_PREP}/${WAV_MOD_TAG}.out_grd.${grdID}.${PDY}${cyc}" + echo " Saving GRID file as ${COMOUT_WAVE_PREP}/${WAV_MOD_TAG}.out_grd.${grdID}.${PDY}${cyc}" set_trace - cp "${DATA}/output_${ymdh}0000/out_grd.${grdID}" "${COM_WAVE_PREP}/${WAV_MOD_TAG}.out_grd.${grdID}.${PDY}${cyc}" + cp "${DATA}/output_${ymdh}0000/out_grd.${grdID}" "${COMOUT_WAVE_PREP}/${WAV_MOD_TAG}.out_grd.${grdID}.${PDY}${cyc}" # if [ "$SENDDBN" = 'YES' ] # then diff --git a/ush/wave_grid_moddef.sh b/ush/wave_grid_moddef.sh index 5b1b212a16..1e8c44054a 100755 --- a/ush/wave_grid_moddef.sh +++ b/ush/wave_grid_moddef.sh @@ -20,7 +20,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -59,7 +59,7 @@ source "$HOMEgfs/ush/preamble.sh" # 0.c Define directories and the search path. # The tested variables should be exported by the postprocessor script. - if [ -z "$grdID" ] || [ -z "$EXECwave" ] || [ -z "$wave_sys_ver" ] + if [ -z "$grdID" ] || [ -z "${EXECgfs}" ] then set +x echo ' ' @@ -77,14 +77,22 @@ source "$HOMEgfs/ush/preamble.sh" set +x echo ' ' echo ' Creating mod_def file ...' - echo " Executing $EXECwave/ww3_grid" + echo " Executing ${EXECgfs}/ww3_grid" echo ' ' set_trace rm -f ww3_grid.inp - ln -sf ../ww3_grid.inp.$grdID ww3_grid.inp + ${NLN} ../ww3_grid.inp.$grdID ww3_grid.inp + + if [ -f ../${grdID}.msh ] + then + rm -f ${grdID}.msh + ${NLN} ../${grdID}.msh ${grdID}.msh + fi + + - $EXECwave/ww3_grid 1> grid_${grdID}.out 2>&1 + "${EXECgfs}/ww3_grid" 1> "grid_${grdID}.out" 2>&1 err=$? if [ "$err" != '0' ] @@ -99,10 +107,10 @@ source "$HOMEgfs/ush/preamble.sh" exit 3 fi - if [ -f mod_def.ww3 ] + if [[ -f mod_def.ww3 ]] then - cp mod_def.ww3 "${COM_WAVE_PREP}/${RUN}wave.mod_def.${grdID}" - mv mod_def.ww3 ../mod_def.$grdID + cp mod_def.ww3 "${COMOUT_WAVE_PREP}/${RUN}wave.mod_def.${grdID}" + mv mod_def.ww3 "../mod_def.${grdID}" else set +x echo ' ' @@ -118,6 +126,6 @@ source "$HOMEgfs/ush/preamble.sh" # 3. Clean up cd .. -rm -rf moddef_$grdID +rm -rf "moddef_${grdID}" # End of ww3_mod_def.sh ------------------------------------------------- # diff --git a/ush/wave_outp_cat.sh b/ush/wave_outp_cat.sh index f4bf6b2294..6ce3ce06cf 100755 --- a/ush/wave_outp_cat.sh +++ b/ush/wave_outp_cat.sh @@ -21,7 +21,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation bloc=$1 diff --git a/ush/wave_outp_spec.sh b/ush/wave_outp_spec.sh index 5acc0f95ab..37accbae49 100755 --- a/ush/wave_outp_spec.sh +++ b/ush/wave_outp_spec.sh @@ -22,7 +22,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation bloc=$1 @@ -31,6 +31,7 @@ source "$HOMEgfs/ush/preamble.sh" workdir=$4 YMDHE=$($NDATE $FHMAX_WAV_PNT $CDATE) + model_start_date=$(${NDATE} ${OFFSET_START_HOUR} "${PDY}${cyc}") cd $workdir @@ -73,21 +74,7 @@ source "$HOMEgfs/ush/preamble.sh" exit 1 else buoy=$bloc - grep $buoy ${DATA}/buoy_log.ww3 > tmp_list.loc - while read line - do - buoy_name=$(echo $line | awk '{print $2}') - if [ $buoy = $buoy_name ] - then - point=$(echo $line | awk '{ print $1 }') - set +x - echo " Location ID/# : $buoy (${point})" - echo " Spectral output start time : $ymdh " - echo ' ' - set_trace - break - fi - done < tmp_list.loc + point=$(awk "{if (\$2 == \"${buoy}\"){print \$1; exit} }" "${DATA}/buoy_log.ww3") if [ -z "$point" ] then set +x @@ -97,6 +84,11 @@ source "$HOMEgfs/ush/preamble.sh" echo ' ' set_trace exit 2 + else + set +x + echo " Location ID/# : $buoy (${point})" + echo " Spectral output start time : $ymdh " + echo ' ' fi fi @@ -104,7 +96,7 @@ source "$HOMEgfs/ush/preamble.sh" # 0.c Define directories and the search path. # The tested variables should be exported by the postprocessor script. - if [ -z "$CDATE" ] || [ -z "$dtspec" ] || [ -z "$EXECwave" ] || \ + if [ -z "$CDATE" ] || [ -z "$dtspec" ] || [ -z "${EXECgfs}" ] || \ [ -z "$WAV_MOD_TAG" ] || [ -z "${STA_DIR}" ] then set +x @@ -135,8 +127,8 @@ source "$HOMEgfs/ush/preamble.sh" # 0.f Links to mother directory - ln -s ${DATA}/output_${ymdh}0000/mod_def.${waveuoutpGRD} ./mod_def.ww3 - ln -s ${DATA}/output_${ymdh}0000/out_pnt.${waveuoutpGRD} ./out_pnt.ww3 + ${NLN} ${DATA}/output_${ymdh}0000/mod_def.${waveuoutpGRD} ./mod_def.ww3 + ${NLN} ${DATA}/output_${ymdh}0000/out_pnt.${waveuoutpGRD} ./out_pnt.ww3 # --------------------------------------------------------------------------- # # 2. Generate spectral data file @@ -170,11 +162,11 @@ source "$HOMEgfs/ush/preamble.sh" # 2.b Run the postprocessor set +x - echo " Executing $EXECwave/ww3_outp" + echo " Executing ${EXECgfs}/ww3_outp" set_trace export pgm=ww3_outp;. prep_step - $EXECwave/ww3_outp 1> outp_${specdir}_${buoy}.out 2>&1 + ${EXECgfs}/ww3_outp 1> outp_${specdir}_${buoy}.out 2>&1 export err=$?;err_chk @@ -196,31 +188,31 @@ source "$HOMEgfs/ush/preamble.sh" if [ -f $outfile ] then - if [ "${ymdh}" = "${CDATE}" ] + if [ "${ymdh}" = "${model_start_date}" ] then if [ "$specdir" = "bull" ] then - cat $outfile | sed -e '9,$d' >> ${STA_DIR}/${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.bull - cat $coutfile | sed -e '8,$d' >> ${STA_DIR}/c${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.cbull + sed '9,$d' "${outfile}" >> "${STA_DIR}/${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.bull" + sed '8,$d' "${coutfile}" >> "${STA_DIR}/c${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.cbull" else - cat $outfile >> ${STA_DIR}/${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.spec + cat $outfile >> "${STA_DIR}/${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.spec" fi elif [ "${ymdh}" = "${YMDHE}" ] then if [ "$specdir" = "bull" ] then - cat $outfile | sed -e '1,7d' >> ${STA_DIR}/${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.bull - cat $coutfile | sed -e '1,6d' >> ${STA_DIR}/c${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.cbull + sed '1,7d' "${outfile}" >> "${STA_DIR}/${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.bull" + sed '1,6d' "${coutfile}" >> "${STA_DIR}/c${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.cbull" else - cat $outfile | sed -n "/^${YMD} ${HMS}$/,\$p" >> ${STA_DIR}/${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.spec + sed -n "/^${YMD} ${HMS}$/,\$p" "${outfile}" >> "${STA_DIR}/${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.spec" fi else if [ "$specdir" = "bull" ] then - cat $outfile | sed -e '1,7d' | sed -e '2,$d' >> ${STA_DIR}/${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.bull - cat $coutfile | sed -e '1,6d' | sed -e '2,$d' >> ${STA_DIR}/c${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.cbull + sed '8q;d' "${outfile}" >> "${STA_DIR}/${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.bull" + sed '7q;d' "${coutfile}" >> "${STA_DIR}/c${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.cbull" else - cat $outfile | sed -n "/^${YMD} ${HMS}$/,\$p" >> ${STA_DIR}/${specdir}fhr/$WAV_MOD_TAG.${ymdh}.$buoy.spec + sed -n "/^${YMD} ${HMS}$/,\$p" "${outfile}" >> "${STA_DIR}/${specdir}fhr/${WAV_MOD_TAG}.${ymdh}.${buoy}.spec" fi fi else @@ -237,6 +229,6 @@ source "$HOMEgfs/ush/preamble.sh" # 3.b Clean up the rest cd .. -rm -rf ${specdir}_${bloc} +rm -rf "${specdir}_${bloc}" # End of ww3_outp_spec.sh ---------------------------------------------------- # diff --git a/ush/wave_prnc_cur.sh b/ush/wave_prnc_cur.sh index 6b1ab19db2..927710c581 100755 --- a/ush/wave_prnc_cur.sh +++ b/ush/wave_prnc_cur.sh @@ -22,7 +22,7 @@ ################################################################################ # -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ymdh_rtofs=$1 curfile=$2 @@ -46,7 +46,7 @@ mv -f "cur_temp3.nc" "cur_uv_${PDY}_${fext}${fh3}_flat.nc" # Convert to regular lat lon file # If weights need to be regenerated due to CDO ver change, use: # $CDO genbil,r4320x2160 rtofs_glo_2ds_f000_3hrly_prog.nc weights.nc -cp ${FIXwave}/weights_rtofs_to_r4320x2160.nc ./weights.nc +cp ${FIXgfs}/wave/weights_rtofs_to_r4320x2160.nc ./weights.nc # Interpolate to regular 5 min grid ${CDO} remap,r4320x2160,weights.nc "cur_uv_${PDY}_${fext}${fh3}_flat.nc" "cur_5min_01.nc" @@ -65,17 +65,17 @@ rm -f cur_temp[123].nc cur_5min_??.nc "cur_glo_uv_${PDY}_${fext}${fh3}.nc weight if [ ${flagfirst} = "T" ] then - sed -e "s/HDRFL/T/g" ${PARMwave}/ww3_prnc.cur.${WAVECUR_FID}.inp.tmpl > ww3_prnc.inp + sed -e "s/HDRFL/T/g" ${PARMgfs}/wave/ww3_prnc.cur.${WAVECUR_FID}.inp.tmpl > ww3_prnc.inp else - sed -e "s/HDRFL/F/g" ${PARMwave}/ww3_prnc.cur.${WAVECUR_FID}.inp.tmpl > ww3_prnc.inp + sed -e "s/HDRFL/F/g" ${PARMgfs}/wave/ww3_prnc.cur.${WAVECUR_FID}.inp.tmpl > ww3_prnc.inp fi rm -f cur.nc -ln -s "cur_glo_uv_${PDY}_${fext}${fh3}_5min.nc" "cur.nc" -ln -s "${DATA}/mod_def.${WAVECUR_FID}" ./mod_def.ww3 +${NLN} "cur_glo_uv_${PDY}_${fext}${fh3}_5min.nc" "cur.nc" +${NLN} "${DATA}/mod_def.${WAVECUR_FID}" ./mod_def.ww3 export pgm=ww3_prnc;. prep_step -$EXECwave/ww3_prnc 1> prnc_${WAVECUR_FID}_${ymdh_rtofs}.out 2>&1 +${EXECgfs}/ww3_prnc 1> prnc_${WAVECUR_FID}_${ymdh_rtofs}.out 2>&1 export err=$?; err_chk diff --git a/ush/wave_prnc_ice.sh b/ush/wave_prnc_ice.sh index 5ec1d7fc2e..be089c30bd 100755 --- a/ush/wave_prnc_ice.sh +++ b/ush/wave_prnc_ice.sh @@ -27,7 +27,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -36,7 +36,7 @@ source "$HOMEgfs/ush/preamble.sh" rm -rf ice mkdir ice cd ice - ln -s ${DATA}/postmsg . + ${NLN} "${DATA}/postmsg" postmsg # 0.b Define directories and the search path. # The tested variables should be exported by the postprocessor script. @@ -55,8 +55,8 @@ source "$HOMEgfs/ush/preamble.sh" echo "Making ice fields." if [[ -z "${YMDH}" ]] || [[ -z "${cycle}" ]] || \ - [[ -z "${COM_WAVE_PREP}" ]] || [[ -z "${FIXwave}" ]] || [[ -z "${EXECwave}" ]] || \ - [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${WAVEICE_FID}" ]] || [[ -z "${COM_OBS}" ]]; then + [[ -z "${COMOUT_WAVE_PREP}" ]] || [[ -z "${FIXgfs}" ]] || [[ -z "${EXECgfs}" ]] || \ + [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${WAVEICE_FID}" ]] || [[ -z "${COMIN_OBS}" ]]; then set +x echo ' ' @@ -71,13 +71,13 @@ source "$HOMEgfs/ush/preamble.sh" # 0.c Links to working directory - ln -s ${DATA}/mod_def.$WAVEICE_FID mod_def.ww3 + ${NLN} ${DATA}/mod_def.$WAVEICE_FID mod_def.ww3 # --------------------------------------------------------------------------- # # 1. Get the necessary files # 1.a Copy the ice data file - file=${COM_OBS}/${WAVICEFILE} + file=${COMIN_OBS}/${WAVICEFILE} if [ -f $file ] then @@ -144,7 +144,7 @@ source "$HOMEgfs/ush/preamble.sh" export pgm=ww3_prnc;. prep_step - $EXECwave/ww3_prnc 1> prnc_${WAVEICE_FID}_${cycle}.out 2>&1 + ${EXECgfs}/ww3_prnc 1> prnc_${WAVEICE_FID}_${cycle}.out 2>&1 export err=$?; err_chk if [ "$err" != '0' ] @@ -178,9 +178,9 @@ source "$HOMEgfs/ush/preamble.sh" fi set +x - echo " Saving ice.ww3 as ${COM_WAVE_PREP}/${icefile}" + echo " Saving ice.ww3 as ${COMOUT_WAVE_PREP}/${icefile}" set_trace - cp ice.ww3 "${COM_WAVE_PREP}/${icefile}" + cp ice.ww3 "${COMOUT_WAVE_PREP}/${icefile}" rm -f ice.ww3 # --------------------------------------------------------------------------- # diff --git a/ush/wave_tar.sh b/ush/wave_tar.sh index 1a8d6d6cc5..f82849854f 100755 --- a/ush/wave_tar.sh +++ b/ush/wave_tar.sh @@ -25,11 +25,11 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation - cd $DATA + cd "${DATA}" echo "Making TAR FILE" alertName=$(echo $RUN|tr [a-z] [A-Z]) @@ -47,7 +47,7 @@ source "$HOMEgfs/ush/preamble.sh" # 0.b Check if type set - if [ "$#" -lt '3' ] + if [[ "$#" -lt '3' ]] then set +x echo ' ' @@ -64,9 +64,9 @@ source "$HOMEgfs/ush/preamble.sh" fi filext=$type - if [ "$type" = "ibp" ]; then filext='spec'; fi - if [ "$type" = "ibpbull" ]; then filext='bull'; fi - if [ "$type" = "ibpcbull" ]; then filext='cbull'; fi + if [[ "$type" = "ibp" ]]; then filext='spec'; fi + if [[ "$type" = "ibpbull" ]]; then filext='bull'; fi + if [[ "$type" = "ibpcbull" ]]; then filext='cbull'; fi rm -rf TAR_${filext}_$ID @@ -76,7 +76,7 @@ source "$HOMEgfs/ush/preamble.sh" # 0.c Define directories and the search path. # The tested variables should be exported by the postprocessor script. - if [[ -z "${cycle}" ]] || [[ -z "${COM_WAVE_STATION}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || \ + if [[ -z "${cycle}" ]] || [[ -z "${COMOUT_WAVE_STATION}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || \ [[ -z "${SENDDBN}" ]] || [[ -z "${STA_DIR}" ]]; then set +x echo ' ' @@ -88,7 +88,7 @@ source "$HOMEgfs/ush/preamble.sh" exit 2 fi - cd ${STA_DIR}/${filext} + cd "${STA_DIR}/${filext}" # --------------------------------------------------------------------------- # # 2. Generate tar file (spectral files are compressed) @@ -98,21 +98,27 @@ source "$HOMEgfs/ush/preamble.sh" echo ' Making tar file ...' set_trace - count=0 countMAX=5 tardone='no' - - while [ "$count" -lt "$countMAX" ] && [ "$tardone" = 'no' ] + sleep_interval=10 + + while [[ "${tardone}" = "no" ]] do nf=$(ls | awk '/'$ID.*.$filext'/ {a++} END {print a}') nbm2=$(( $nb - 2 )) - if [ $nf -ge $nbm2 ] - then - tar -cf $ID.$cycle.${type}_tar ./$ID.*.$filext + if [[ "${nf}" -ge "${nbm2}" ]] + then + + tar -cf "${ID}.${cycle}.${type}_tar" ./${ID}.*.${filext} exit=$? + filename="${ID}.${cycle}.${type}_tar" + if ! wait_for_file "${filename}" "${sleep_interval}" "${countMAX}" ; then + echo "FATAL ERROR: File ${filename} not found after waiting $(( sleep_interval * (countMAX + 1) )) secs" + exit 3 + fi - if [ "$exit" != '0' ] + if [[ "${exit}" != '0' ]] then set +x echo ' ' @@ -124,21 +130,15 @@ source "$HOMEgfs/ush/preamble.sh" exit 3 fi - if [ -f "$ID.$cycle.${type}_tar" ] + if [[ -f "${ID}.${cycle}.${type}_tar" ]] then tardone='yes' fi - else - set +x - echo ' All files not found for tar. Sleeping 10 seconds and trying again ..' - set_trace - sleep 10 - count=$(expr $count + 1) fi done - if [ "$tardone" = 'no' ] + if [[ "${tardone}" = 'no' ]] then set +x echo ' ' @@ -150,15 +150,15 @@ source "$HOMEgfs/ush/preamble.sh" exit 3 fi - if [ "$type" = 'spec' ] + if [[ "${type}" = 'spec' ]] then - if [ -s $ID.$cycle.${type}_tar ] + if [[ -s "${ID}.${cycle}.${type}_tar" ]] then - file_name=$ID.$cycle.${type}_tar.gz - /usr/bin/gzip -c $ID.$cycle.${type}_tar > ${file_name} + file_name="${ID}.${cycle}.${type}_tar.gz" + /usr/bin/gzip -c "${ID}.${cycle}.${type}_tar" > "${file_name}" exit=$? - if [ "$exit" != '0' ] + if [[ "${exit}" != '0' ]] then set +x echo ' ' @@ -171,7 +171,7 @@ source "$HOMEgfs/ush/preamble.sh" fi fi else - file_name=$ID.$cycle.${type}_tar + file_name="${ID}.${cycle}.${type}_tar" fi # --------------------------------------------------------------------------- # @@ -179,14 +179,14 @@ source "$HOMEgfs/ush/preamble.sh" set +x echo ' ' - echo " Moving tar file ${file_name} to ${COM_WAVE_STATION} ..." + echo " Moving tar file ${file_name} to ${COMOUT_WAVE_STATION} ..." set_trace - cp "${file_name}" "${COM_WAVE_STATION}/." + cp "${file_name}" "${COMOUT_WAVE_STATION}/." exit=$? - if [ "$exit" != '0' ] + if [[ "${exit}" != '0' ]] then set +x echo ' ' @@ -198,21 +198,21 @@ source "$HOMEgfs/ush/preamble.sh" exit 4 fi - if [ "$SENDDBN" = 'YES' ] + if [[ "${SENDDBN}" = 'YES' ]] then set +x echo ' ' - echo " Alerting TAR file as ${COM_WAVE_STATION}/${file_name}" + echo " Alerting TAR file as ${COMOUT_WAVE_STATION}/${file_name}" echo ' ' set_trace "${DBNROOT}/bin/dbn_alert MODEL" "${alertName}_WAVE_TAR" "${job}" \ - "${COM_WAVE_STATION}/${file_name}" + "${COMOUT_WAVE_STATION}/${file_name}" fi # --------------------------------------------------------------------------- # # 4. Final clean up -cd $DATA +cd "${DATA}" if [[ ${KEEPDATA:-NO} == "NO" ]]; then set -v diff --git a/versions/build.gaea.ver b/versions/build.gaea.ver new file mode 100644 index 0000000000..b92fe8c1db --- /dev/null +++ b/versions/build.gaea.ver @@ -0,0 +1,6 @@ +export stack_intel_ver=2023.1.0 +export stack_cray_mpich_ver=8.1.25 +export spack_env=gsi-addon-dev + +source "${HOMEgfs:-}/versions/run.spack.ver" +export spack_mod_path="/ncrc/proj/epic/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/build.hercules.ver b/versions/build.hercules.ver index 5513466631..cab0c92111 100644 --- a/versions/build.hercules.ver +++ b/versions/build.hercules.ver @@ -1,3 +1,6 @@ export stack_intel_ver=2021.9.0 export stack_impi_ver=2021.9.0 +export intel_mkl_ver=2023.1.0 +export spack_env=gsi-addon-env source "${HOMEgfs:-}/versions/build.spack.ver" +export spack_mod_path="/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/build.jet.ver b/versions/build.jet.ver index ff85b1a801..55c0ea0bd1 100644 --- a/versions/build.jet.ver +++ b/versions/build.jet.ver @@ -1,3 +1,5 @@ export stack_intel_ver=2021.5.0 export stack_impi_ver=2021.5.1 +export spack_env=gsi-addon-dev source "${HOMEgfs:-}/versions/build.spack.ver" +export spack_mod_path="/lfs4/HFIP/hfv3gfs/role.epic/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/build.orion.ver b/versions/build.orion.ver index ff85b1a801..834ecfc166 100644 --- a/versions/build.orion.ver +++ b/versions/build.orion.ver @@ -1,3 +1,5 @@ -export stack_intel_ver=2021.5.0 -export stack_impi_ver=2021.5.1 +export stack_intel_ver=2021.9.0 +export stack_impi_ver=2021.9.0 +export spack_env=gsi-addon-env-rocky9 source "${HOMEgfs:-}/versions/build.spack.ver" +export spack_mod_path="/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/build.s4.ver b/versions/build.s4.ver index a0aae51d87..e2731ccfb3 100644 --- a/versions/build.s4.ver +++ b/versions/build.s4.ver @@ -1,3 +1,5 @@ export stack_intel_ver=2021.5.0 export stack_impi_ver=2021.5.0 +export spack_env=gsi-addon-env source "${HOMEgfs:-}/versions/build.spack.ver" +export spack_mod_path="/data/prod/jedi/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/build.spack.ver b/versions/build.spack.ver index ec6e508f97..808f85dd16 100644 --- a/versions/build.spack.ver +++ b/versions/build.spack.ver @@ -1,7 +1,6 @@ -export spack_stack_ver=1.5.1 -export spack_env=gsi-addon +export spack_stack_ver=1.6.0 -export cmake_ver=3.28.1 +export cmake_ver=3.23.1 export jasper_ver=2.0.32 export libpng_ver=1.6.37 diff --git a/versions/build.wcoss2.ver b/versions/build.wcoss2.ver index 046ff5c64e..3ae0b3a1cc 100644 --- a/versions/build.wcoss2.ver +++ b/versions/build.wcoss2.ver @@ -28,6 +28,6 @@ export wrf_io_ver=1.2.0 export ncio_ver=1.1.2 export ncdiag_ver=1.0.0 export g2tmpl_ver=1.10.2 -export crtm_ver=2.4.0 +export crtm_ver=2.4.0.1 export upp_ver=10.0.8 diff --git a/versions/fix.ver b/versions/fix.ver index 13d9b56dd2..5ca044ae3d 100644 --- a/versions/fix.ver +++ b/versions/fix.ver @@ -4,19 +4,23 @@ export aer_ver=20220805 export am_ver=20220805 export chem_ver=20220805 -export cice_ver=20231219 +export cice_ver=20240416 export cpl_ver=20230526 export datm_ver=20220805 export gdas_crtm_ver=20220805 export gdas_fv3jedi_ver=20220805 -export gdas_gsibec_ver=20221031 +export gdas_soca_ver=20240624 +export gdas_gsibec_ver=20240416 +export gdas_obs_ver=20240213 export glwu_ver=20220805 -export gsi_ver=20230911 +export gsi_ver=20240208 export lut_ver=20220805 -export mom6_ver=20231219 +export mom6_ver=20240416 export orog_ver=20231027 export reg2grb2_ver=20220805 export sfc_climo_ver=20220805 export ugwd_ver=20220805 export verif_ver=20220805 export wave_ver=20240105 +export orog_nest_ver=global-nest.20240419 +export ugwd_nest_ver=global-nest.20240419 diff --git a/versions/run.gaea.ver b/versions/run.gaea.ver new file mode 100644 index 0000000000..b92fe8c1db --- /dev/null +++ b/versions/run.gaea.ver @@ -0,0 +1,6 @@ +export stack_intel_ver=2023.1.0 +export stack_cray_mpich_ver=8.1.25 +export spack_env=gsi-addon-dev + +source "${HOMEgfs:-}/versions/run.spack.ver" +export spack_mod_path="/ncrc/proj/epic/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/run.hera.ver b/versions/run.hera.ver index b358f9d495..34f81bfe96 100644 --- a/versions/run.hera.ver +++ b/versions/run.hera.ver @@ -4,8 +4,10 @@ export spack_env=gsi-addon-dev-rocky8 export hpss_ver=hpss export ncl_ver=6.6.2 -export R_ver=3.5.0 -export gempak_ver=7.4.2 +export R_ver=3.6.1 + +export gempak_ver=7.17.0 +export perl_ver=5.38.0 source "${HOMEgfs:-}/versions/run.spack.ver" export spack_mod_path="/scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/run.hercules.ver b/versions/run.hercules.ver index 43f1b2181d..ee8e4f8aea 100644 --- a/versions/run.hercules.ver +++ b/versions/run.hercules.ver @@ -1,12 +1,7 @@ export stack_intel_ver=2021.9.0 export stack_impi_ver=2021.9.0 export intel_mkl_ver=2023.1.0 - -export ncl_ver=6.6.2 -export perl_ver=5.36.0 +export spack_env=gsi-addon-env source "${HOMEgfs:-}/versions/run.spack.ver" - -# wgrib2 and cdo are different on Hercules from all the other systems -export wgrib2_ver=3.1.1 -export cdo_ver=2.2.0 +export spack_mod_path="/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/run.jet.ver b/versions/run.jet.ver index 18a82cab4f..3aa586ee42 100644 --- a/versions/run.jet.ver +++ b/versions/run.jet.ver @@ -1,9 +1,14 @@ export stack_intel_ver=2021.5.0 export stack_impi_ver=2021.5.1 +export spack_env=gsi-addon-dev-rocky8 export hpss_ver= export ncl_ver=6.6.2 export R_ver=4.0.2 export gempak_ver=7.4.2 +# Adding perl as a module; With Rocky8, perl packages will not be from the OS +export perl_ver=5.38.0 + source "${HOMEgfs:-}/versions/run.spack.ver" +export spack_mod_path="/lfs4/HFIP/hfv3gfs/role.epic/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/run.orion.ver b/versions/run.orion.ver index 7671bc028d..59adda6b50 100644 --- a/versions/run.orion.ver +++ b/versions/run.orion.ver @@ -1,11 +1,10 @@ -export stack_intel_ver=2022.0.2 -export stack_impi_ver=2021.5.1 - -export ncl_ver=6.6.2 -export gempak_ver=7.5.1 +export stack_intel_ver=2021.9.0 +export stack_impi_ver=2021.9.0 +export spack_env=gsi-addon-env-rocky9 #For metplus jobs, not currently working with spack-stack #export met_ver=9.1.3 #export metplus_ver=3.1.1 source "${HOMEgfs:-}/versions/run.spack.ver" +export spack_mod_path="/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/run.s4.ver b/versions/run.s4.ver index 56817ef439..6d0f4cbaca 100644 --- a/versions/run.s4.ver +++ b/versions/run.s4.ver @@ -1,6 +1,8 @@ export stack_intel_ver=2021.5.0 export stack_impi_ver=2021.5.0 +export spack_env=gsi-addon-env export ncl_ver=6.4.0-precompiled source "${HOMEgfs:-}/versions/run.spack.ver" +export spack_mod_path="/data/prod/jedi/spack-stack/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/run.spack.ver b/versions/run.spack.ver index 80fa6acd1a..9aa5460c80 100644 --- a/versions/run.spack.ver +++ b/versions/run.spack.ver @@ -1,29 +1,35 @@ -export spack_stack_ver=1.5.1 -export spack_env=gsi-addon-dev-rocky8 -export python_ver=3.10.8 +export spack_stack_ver=1.6.0 +export python_ver=3.11.6 export jasper_ver=2.0.32 export libpng_ver=1.6.37 -export cdo_ver=2.0.5 +export cdo_ver=2.2.0 export nco_ver=5.0.6 export hdf5_ver=1.14.0 export netcdf_c_ver=4.9.2 -export netcdf_fortran_ver=4.6.0 +export netcdf_fortran_ver=4.6.1 export bufr_ver=11.7.0 export gsi_ncdiag_ver=1.1.2 export g2tmpl_ver=1.10.2 -export crtm_ver=2.4.0 +export crtm_ver=2.4.0.1 export wgrib2_ver=2.0.8 export grib_util_ver=1.3.0 -export prod_util_ver=1.2.2 +export prod_util_ver=2.1.1 export py_netcdf4_ver=1.5.8 -export py_pyyaml_ver=5.4.1 +export py_pyyaml_ver=6.0 export py_jinja2_ver=3.1.2 +export py_pandas_ver=1.5.3 +export py_python_dateutil_ver=2.8.2 +export py_f90nml_ver=1.4.3 + +export met_ver=9.1.3 +export metplus_ver=3.1.1 +export py_xarray_ver=2023.7.0 export obsproc_run_ver=1.1.2 -export prepobs_run_ver=1.0.1 +export prepobs_run_ver=1.0.2 export ens_tracker_ver=feature-GFSv17_com_reorg -export fit2obs_ver=1.0.0 +export fit2obs_ver=1.1.2 diff --git a/versions/run.wcoss2.ver b/versions/run.wcoss2.ver index a188cdea74..7f653dd50e 100644 --- a/versions/run.wcoss2.ver +++ b/versions/run.wcoss2.ver @@ -37,15 +37,17 @@ export bufr_dump_ver=1.0.0 export util_shared_ver=1.4.0 export g2tmpl_ver=1.10.2 export ncdiag_ver=1.0.0 -export crtm_ver=2.4.0 +export crtm_ver=2.4.0.1 export wgrib2_ver=2.0.8 +export met_ver=9.1.3 +export metplus_ver=3.1.1 # Development-only below export obsproc_run_ver=1.1.2 -export prepobs_run_ver=1.0.1 +export prepobs_run_ver=1.0.2 export ens_tracker_ver=feature-GFSv17_com_reorg -export fit2obs_ver=1.0.0 +export fit2obs_ver=1.1.2 export mos_ver=5.4.3 export mos_shared_ver=2.7.2 diff --git a/workflow/applications/applications.py b/workflow/applications/applications.py index d45b6a9abc..97a77c2c21 100644 --- a/workflow/applications/applications.py +++ b/workflow/applications/applications.py @@ -3,6 +3,7 @@ from typing import Dict, List, Any from datetime import timedelta from hosts import Host +from pathlib import Path from wxflow import Configuration, to_timedelta from abc import ABC, ABCMeta, abstractmethod @@ -31,7 +32,11 @@ def __init__(self, conf: Configuration) -> None: self.scheduler = Host().scheduler - _base = conf.parse_config('config.base') + # Save the configuration so we can source the config files when + # determining task resources + self.conf = conf + + _base = self.conf.parse_config('config.base') # Define here so the child __init__ functions can use it; will # be overwritten later during _init_finalize(). self._base = _base @@ -51,6 +56,7 @@ def __init__(self, conf: Configuration) -> None: self.do_ocean = _base.get('DO_OCN', False) self.do_ice = _base.get('DO_ICE', False) self.do_aero = _base.get('DO_AERO', False) + self.do_prep_obs_aero = _base.get('DO_PREP_OBS_AERO', False) self.do_bufrsnd = _base.get('DO_BUFRSND', False) self.do_gempak = _base.get('DO_GEMPAK', False) self.do_awips = _base.get('DO_AWIPS', False) @@ -64,30 +70,45 @@ def __init__(self, conf: Configuration) -> None: self.do_upp = not _base.get('WRITE_DOPOST', True) self.do_goes = _base.get('DO_GOES', False) self.do_mos = _base.get('DO_MOS', False) + self.do_extractvars = _base.get('DO_EXTRACTVARS', False) self.do_hpssarch = _base.get('HPSSARCH', False) self.nens = _base.get('NMEM_ENS', 0) - self.wave_cdumps = None + self.wave_runs = None if self.do_wave: - wave_cdump = _base.get('WAVE_CDUMP', 'BOTH').lower() - if wave_cdump in ['both']: - self.wave_cdumps = ['gfs', 'gdas'] - elif wave_cdump in ['gfs', 'gdas']: - self.wave_cdumps = [wave_cdump] - - def _init_finalize(self, conf: Configuration): + wave_run = _base.get('WAVE_RUN', 'BOTH').lower() + if wave_run in ['both']: + self.wave_runs = ['gfs', 'gdas'] + elif wave_run in ['gfs', 'gdas']: + self.wave_runs = [wave_run] + + self.aero_anl_runs = None + self.aero_fcst_runs = None + if self.do_aero: + aero_anl_run = _base.get('AERO_ANL_RUN', 'BOTH').lower() + if aero_anl_run in ['both']: + self.aero_anl_runs = ['gfs', 'gdas'] + elif aero_anl_run in ['gfs', 'gdas']: + self.aero_anl_runs = [aero_anl_run] + aero_fcst_run = _base.get('AERO_FCST_RUN', None).lower() + if aero_fcst_run in ['both']: + self.aero_fcst_runs = ['gfs', 'gdas'] + elif aero_fcst_run in ['gfs', 'gdas']: + self.aero_fcst_runs = [aero_fcst_run] + + def _init_finalize(self, *args): print("Finalizing initialize") # Get a list of all possible config_files that would be part of the application self.configs_names = self._get_app_configs() # Source the config_files for the jobs in the application - self.configs = self._source_configs(conf) + self.configs = self.source_configs() # Update the base config dictionary base on application - self.configs['base'] = self._update_base(self.configs['base']) + self.configs['base'] = self.update_base(self.configs['base']) # Save base in the internal state since it is often needed self._base = self.configs['base'] @@ -104,7 +125,7 @@ def _get_app_configs(self): @staticmethod @abstractmethod - def _update_base(base_in: Dict[str, Any]) -> Dict[str, Any]: + def update_base(base_in: Dict[str, Any]) -> Dict[str, Any]: ''' Make final updates to base and return an updated copy @@ -121,9 +142,9 @@ def _update_base(base_in: Dict[str, Any]) -> Dict[str, Any]: ''' pass - def _source_configs(self, conf: Configuration) -> Dict[str, Any]: + def source_configs(self, run: str = "gfs", log: bool = True) -> Dict[str, Any]: """ - Given the configuration object and jobs, + Given the configuration object used to initialize this application, source the configurations for each config and return a dictionary Every config depends on "config.base" """ @@ -131,7 +152,7 @@ def _source_configs(self, conf: Configuration) -> Dict[str, Any]: configs = dict() # Return config.base as well - configs['base'] = conf.parse_config('config.base') + configs['base'] = self.conf.parse_config('config.base') # Source the list of all config_files involved in the application for config in self.configs_names: @@ -145,20 +166,24 @@ def _source_configs(self, conf: Configuration) -> Dict[str, Any]: files += ['config.anal', 'config.eupd'] elif config in ['efcs']: files += ['config.fcst', 'config.efcs'] + elif config in ['atmanlinit', 'atmanlvar', 'atmanlfv3inc']: + files += ['config.atmanl', f'config.{config}'] + elif config in ['atmensanlinit', 'atmensanlletkf', 'atmensanlfv3inc']: + files += ['config.atmensanl', f'config.{config}'] elif 'wave' in config: files += ['config.wave', f'config.{config}'] else: files += [f'config.{config}'] - print(f'sourcing config.{config}') - configs[config] = conf.parse_config(files) + print(f'sourcing config.{config}') if log else 0 + configs[config] = self.conf.parse_config(files, RUN=run) return configs @abstractmethod def get_task_names(self) -> Dict[str, List[str]]: ''' - Create a list of task names for each CDUMP valid for the configuation. + Create a list of task names for each RUN valid for the configuation. Parameters ---------- @@ -166,7 +191,7 @@ def get_task_names(self) -> Dict[str, List[str]]: Returns ------- - Dict[str, List[str]]: Lists of tasks for each CDUMP. + Dict[str, List[str]]: Lists of tasks for each RUN. ''' pass diff --git a/workflow/applications/gefs.py b/workflow/applications/gefs.py index b2369e8dfc..364ee2c48b 100644 --- a/workflow/applications/gefs.py +++ b/workflow/applications/gefs.py @@ -14,22 +14,33 @@ def _get_app_configs(self): """ Returns the config_files that are involved in gefs """ - configs = ['stage_ic', 'fcst'] + configs = ['stage_ic', 'fcst', 'atmos_products'] if self.nens > 0: - configs += ['efcs'] + configs += ['efcs', 'atmos_ensstat'] if self.do_wave: - configs += ['waveinit'] + configs += ['waveinit', 'wavepostsbs', 'wavepostpnt'] + if self.do_wave_bnd: + configs += ['wavepostbndpnt', 'wavepostbndpntbll'] + + if self.do_ocean or self.do_ice: + configs += ['oceanice_products'] + + if self.do_aero: + configs += ['prep_emissions'] + + if self.do_extractvars: + configs += ['extractvars'] return configs @staticmethod - def _update_base(base_in): + def update_base(base_in): base_out = base_in.copy() base_out['INTERVAL_GFS'] = AppConfig.get_gfs_interval(base_in['gfs_cyc']) - base_out['CDUMP'] = 'gefs' + base_out['RUN'] = 'gefs' return base_out @@ -40,9 +51,32 @@ def get_task_names(self): if self.do_wave: tasks += ['waveinit'] + if self.do_aero: + tasks += ['prep_emissions'] + tasks += ['fcst'] if self.nens > 0: tasks += ['efcs'] - return {f"{self._base['CDUMP']}": tasks} + tasks += ['atmos_prod'] + + if self.nens > 0: + tasks += ['atmos_ensstat'] + + if self.do_ocean: + tasks += ['ocean_prod'] + + if self.do_ice: + tasks += ['ice_prod'] + + if self.do_wave: + tasks += ['wavepostsbs'] + if self.do_wave_bnd: + tasks += ['wavepostbndpnt', 'wavepostbndpntbll'] + tasks += ['wavepostpnt'] + + if self.do_extractvars: + tasks += ['extractvars'] + + return {f"{self._base['RUN']}": tasks} diff --git a/workflow/applications/gfs_cycled.py b/workflow/applications/gfs_cycled.py index 1ff6cc3723..e049a7d422 100644 --- a/workflow/applications/gfs_cycled.py +++ b/workflow/applications/gfs_cycled.py @@ -16,18 +16,19 @@ def __init__(self, conf: Configuration): self.do_jediatmvar = self._base.get('DO_JEDIATMVAR', False) self.do_jediatmens = self._base.get('DO_JEDIATMENS', False) self.do_jediocnvar = self._base.get('DO_JEDIOCNVAR', False) - self.do_jedilandda = self._base.get('DO_JEDILANDDA', False) + self.do_jedisnowda = self._base.get('DO_JEDISNOWDA', False) self.do_mergensst = self._base.get('DO_MERGENSST', False) + self.do_vrfy_oceanda = self._base.get('DO_VRFY_OCEANDA', False) self.lobsdiag_forenkf = False - self.eupd_cdumps = None + self.eupd_runs = None if self.do_hybvar: self.lobsdiag_forenkf = self._base.get('lobsdiag_forenkf', False) - eupd_cdump = self._base.get('EUPD_CYC', 'gdas').lower() - if eupd_cdump in ['both']: - self.eupd_cdumps = ['gfs', 'gdas'] - elif eupd_cdump in ['gfs', 'gdas']: - self.eupd_cdumps = [eupd_cdump] + eupd_run = self._base.get('EUPD_CYC', 'gdas').lower() + if eupd_run in ['both']: + self.eupd_runs = ['gfs', 'gdas'] + elif eupd_run in ['gfs', 'gdas']: + self.eupd_runs = [eupd_run] def _get_app_configs(self): """ @@ -37,23 +38,26 @@ def _get_app_configs(self): configs = ['prep'] if self.do_jediatmvar: - configs += ['prepatmiodaobs', 'atmanlinit', 'atmanlrun', 'atmanlfinal'] + configs += ['prepatmiodaobs', 'atmanlinit', 'atmanlvar', 'atmanlfv3inc', 'atmanlfinal'] else: configs += ['anal', 'analdiag'] if self.do_jediocnvar: - configs += ['prepoceanobs', 'ocnanalprep', 'ocnanalbmat', - 'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost', - 'ocnanalvrfy'] + configs += ['prepoceanobs', 'ocnanalprep', 'marinebmat', 'ocnanalrun'] + if self.do_hybvar: + configs += ['ocnanalecen'] + configs += ['ocnanalchkpt', 'ocnanalpost'] + if self.do_vrfy_oceanda: + configs += ['ocnanalvrfy'] - if self.do_ocean: - configs += ['ocnpost'] + if self.do_ocean or self.do_ice: + configs += ['oceanice_products'] configs += ['sfcanl', 'analcalc', 'fcst', 'upp', 'atmos_products', 'arch', 'cleanup'] if self.do_hybvar: if self.do_jediatmens: - configs += ['atmensanlinit', 'atmensanlrun', 'atmensanlfinal'] + configs += ['atmensanlinit', 'atmensanlletkf', 'atmensanlfv3inc', 'atmensanlfinal'] else: configs += ['eobs', 'eomg', 'ediag', 'eupd'] configs += ['ecen', 'esfc', 'efcs', 'echgres', 'epos', 'earc'] @@ -83,7 +87,9 @@ def _get_app_configs(self): configs += ['metp'] if self.do_gempak: - configs += ['gempak', 'npoess'] + configs += ['gempak'] + if self.do_goes: + configs += ['npoess'] if self.do_bufrsnd: configs += ['postsnd'] @@ -102,9 +108,11 @@ def _get_app_configs(self): if self.do_aero: configs += ['aeroanlinit', 'aeroanlrun', 'aeroanlfinal'] + if self.do_prep_obs_aero: + configs += ['prepobsaero'] - if self.do_jedilandda: - configs += ['preplandobs', 'landanl'] + if self.do_jedisnowda: + configs += ['prepsnowobs', 'snowanl'] if self.do_mos: configs += ['mos_stn_prep', 'mos_grd_prep', 'mos_ext_stn_prep', 'mos_ext_grd_prep', @@ -115,7 +123,7 @@ def _get_app_configs(self): return configs @staticmethod - def _update_base(base_in): + def update_base(base_in): return GFSCycledAppConfig.get_gfs_cyc_dates(base_in) @@ -130,23 +138,22 @@ def get_task_names(self): gdas_gfs_common_cleanup_tasks = ['arch', 'cleanup'] if self.do_jediatmvar: - gdas_gfs_common_tasks_before_fcst += ['prepatmiodaobs', 'atmanlinit', 'atmanlrun', 'atmanlfinal'] + gdas_gfs_common_tasks_before_fcst += ['prepatmiodaobs', 'atmanlinit', 'atmanlvar', 'atmanlfv3inc', 'atmanlfinal'] else: gdas_gfs_common_tasks_before_fcst += ['anal'] if self.do_jediocnvar: - gdas_gfs_common_tasks_before_fcst += ['prepoceanobs', 'ocnanalprep', - 'ocnanalbmat', 'ocnanalrun', - 'ocnanalchkpt', 'ocnanalpost', - 'ocnanalvrfy'] + gdas_gfs_common_tasks_before_fcst += ['prepoceanobs', 'ocnanalprep', 'marinebmat', 'ocnanalrun'] + if self.do_hybvar: + gdas_gfs_common_tasks_before_fcst += ['ocnanalecen'] + gdas_gfs_common_tasks_before_fcst += ['ocnanalchkpt', 'ocnanalpost'] + if self.do_vrfy_oceanda: + gdas_gfs_common_tasks_before_fcst += ['ocnanalvrfy'] gdas_gfs_common_tasks_before_fcst += ['sfcanl', 'analcalc'] - if self.do_aero: - gdas_gfs_common_tasks_before_fcst += ['aeroanlinit', 'aeroanlrun', 'aeroanlfinal'] - - if self.do_jedilandda: - gdas_gfs_common_tasks_before_fcst += ['preplandobs', 'landanl'] + if self.do_jedisnowda: + gdas_gfs_common_tasks_before_fcst += ['prepsnowobs', 'snowanl'] wave_prep_tasks = ['waveinit', 'waveprep'] wave_bndpnt_tasks = ['wavepostbndpnt', 'wavepostbndpntbll'] @@ -156,7 +163,7 @@ def get_task_names(self): hybrid_after_eupd_tasks = [] if self.do_hybvar: if self.do_jediatmens: - hybrid_tasks += ['atmensanlinit', 'atmensanlrun', 'atmensanlfinal', 'echgres'] + hybrid_tasks += ['atmensanlinit', 'atmensanlletkf', 'atmensanlfv3inc', 'atmensanlfinal', 'echgres'] else: hybrid_tasks += ['eobs', 'eupd', 'echgres'] hybrid_tasks += ['ediag'] if self.lobsdiag_forenkf else ['eomg'] @@ -168,16 +175,21 @@ def get_task_names(self): if not self.do_jediatmvar: gdas_tasks += ['analdiag'] - if self.do_wave and 'gdas' in self.wave_cdumps: + if self.do_wave and 'gdas' in self.wave_runs: gdas_tasks += wave_prep_tasks + if self.do_aero and 'gdas' in self.aero_anl_runs: + gdas_tasks += ['aeroanlinit', 'aeroanlrun', 'aeroanlfinal'] + if self.do_prep_obs_aero: + gdas_tasks += ['prepobsaero'] + gdas_tasks += ['atmanlupp', 'atmanlprod', 'fcst'] if self.do_upp: gdas_tasks += ['atmupp'] - gdas_tasks += ['atmprod'] + gdas_tasks += ['atmos_prod'] - if self.do_wave and 'gdas' in self.wave_cdumps: + if self.do_wave and 'gdas' in self.wave_runs: if self.do_wave_bnd: gdas_tasks += wave_bndpnt_tasks gdas_tasks += wave_post_tasks @@ -202,14 +214,25 @@ def get_task_names(self): # Collect "gfs" cycle tasks gfs_tasks = gdas_gfs_common_tasks_before_fcst.copy() - if self.do_wave and 'gfs' in self.wave_cdumps: + if self.do_wave and 'gfs' in self.wave_runs: gfs_tasks += wave_prep_tasks + if self.do_aero and 'gfs' in self.aero_anl_runs: + gfs_tasks += ['aeroanlinit', 'aeroanlrun', 'aeroanlfinal'] + if self.do_prep_obs_aero: + gfs_tasks += ['prepobsaero'] + gfs_tasks += ['atmanlupp', 'atmanlprod', 'fcst'] + if self.do_ocean: + gfs_tasks += ['ocean_prod'] + + if self.do_ice: + gfs_tasks += ['ice_prod'] + if self.do_upp: gfs_tasks += ['atmupp'] - gfs_tasks += ['atmprod'] + gfs_tasks += ['atmos_prod'] if self.do_goes: gfs_tasks += ['goesupp'] @@ -229,7 +252,7 @@ def get_task_names(self): if self.do_metp: gfs_tasks += ['metp'] - if self.do_wave and 'gfs' in self.wave_cdumps: + if self.do_wave and 'gfs' in self.wave_runs: if self.do_wave_bnd: gfs_tasks += wave_bndpnt_tasks gfs_tasks += wave_post_tasks @@ -245,11 +268,12 @@ def get_task_names(self): gfs_tasks += ['gempak'] gfs_tasks += ['gempakmeta'] gfs_tasks += ['gempakncdcupapgif'] - gfs_tasks += ['npoess_pgrb2_0p5deg'] - gfs_tasks += ['gempakpgrb2spec'] + if self.do_goes: + gfs_tasks += ['npoess_pgrb2_0p5deg'] + gfs_tasks += ['gempakpgrb2spec'] if self.do_awips: - gfs_tasks += ['awips_20km_1p0deg', 'awips_g2', 'fbwind'] + gfs_tasks += ['awips_20km_1p0deg', 'fbwind'] if self.do_mos: gfs_tasks += ['mos_stn_prep', 'mos_grd_prep', 'mos_ext_stn_prep', 'mos_ext_grd_prep', @@ -262,15 +286,15 @@ def get_task_names(self): tasks = dict() tasks['gdas'] = gdas_tasks - if self.do_hybvar and 'gdas' in self.eupd_cdumps: + if self.do_hybvar and 'gdas' in self.eupd_runs: enkfgdas_tasks = hybrid_tasks + hybrid_after_eupd_tasks tasks['enkfgdas'] = enkfgdas_tasks - # Add CDUMP=gfs tasks if running early cycle + # Add RUN=gfs tasks if running early cycle if self.gfs_cyc > 0: tasks['gfs'] = gfs_tasks - if self.do_hybvar and 'gfs' in self.eupd_cdumps: + if self.do_hybvar and 'gfs' in self.eupd_runs: enkfgfs_tasks = hybrid_tasks + hybrid_after_eupd_tasks enkfgfs_tasks.remove("echgres") tasks['enkfgfs'] = enkfgfs_tasks @@ -321,9 +345,4 @@ def get_gfs_cyc_dates(base: Dict[str, Any]) -> Dict[str, Any]: base_out['EDATE_GFS'] = edate_gfs base_out['INTERVAL_GFS'] = interval_gfs - fhmax_gfs = {} - for hh in ['00', '06', '12', '18']: - fhmax_gfs[hh] = base.get(f'FHMAX_GFS_{hh}', base.get('FHMAX_GFS_00', 120)) - base_out['FHMAX_GFS'] = fhmax_gfs - return base_out diff --git a/workflow/applications/gfs_forecast_only.py b/workflow/applications/gfs_forecast_only.py index 1145863210..caa545d1e1 100644 --- a/workflow/applications/gfs_forecast_only.py +++ b/workflow/applications/gfs_forecast_only.py @@ -25,7 +25,8 @@ def _get_app_configs(self): configs += ['atmos_products'] if self.do_aero: - configs += ['aerosol_init'] + if not self._base['EXP_WARM_START']: + configs += ['aerosol_init'] if self.do_tracker: configs += ['tracker'] @@ -49,7 +50,7 @@ def _get_app_configs(self): configs += ['awips'] if self.do_ocean or self.do_ice: - configs += ['ocnpost'] + configs += ['oceanice_products'] if self.do_wave: configs += ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostpnt'] @@ -69,11 +70,11 @@ def _get_app_configs(self): return configs @staticmethod - def _update_base(base_in): + def update_base(base_in): base_out = base_in.copy() base_out['INTERVAL_GFS'] = AppConfig.get_gfs_interval(base_in['gfs_cyc']) - base_out['CDUMP'] = 'gfs' + base_out['RUN'] = 'gfs' return base_out @@ -87,7 +88,10 @@ def get_task_names(self): tasks = ['stage_ic'] if self.do_aero: - tasks += ['aerosol_init'] + aero_fcst_run = self._base.get('AERO_FCST_RUN', 'BOTH').lower() + if self._base['RUN'] in aero_fcst_run or aero_fcst_run == "both": + if not self._base['EXP_WARM_START']: + tasks += ['aerosol_init'] if self.do_wave: tasks += ['waveinit'] @@ -100,7 +104,10 @@ def get_task_names(self): if self.do_upp: tasks += ['atmupp'] - tasks += ['atmprod'] + tasks += ['atmos_prod'] + + if self.do_goes: + tasks += ['goesupp'] if self.do_goes: tasks += ['goesupp'] @@ -124,10 +131,13 @@ def get_task_names(self): tasks += ['gempak', 'gempakmeta', 'gempakncdcupapgif', 'gempakpgrb2spec'] if self.do_awips: - tasks += ['awips_20km_1p0deg', 'awips_g2', 'fbwind'] + tasks += ['awips_20km_1p0deg', 'fbwind'] - if self.do_ocean or self.do_ice: - tasks += ['ocnpost'] + if self.do_ocean: + tasks += ['ocean_prod'] + + if self.do_ice: + tasks += ['ice_prod'] if self.do_wave: if self.do_wave_bnd: @@ -146,4 +156,4 @@ def get_task_names(self): tasks += ['arch', 'cleanup'] # arch and cleanup **must** be the last tasks - return {f"{self._base['CDUMP']}": tasks} + return {f"{self._base['RUN']}": tasks} diff --git a/workflow/create_experiment.py b/workflow/create_experiment.py index 7e0f350c0f..1317f7be28 100755 --- a/workflow/create_experiment.py +++ b/workflow/create_experiment.py @@ -11,6 +11,14 @@ The yaml file are simply the arguments for these two scripts. After this scripts runs the experiment is ready for launch. +Environmental variables +----------------------- + pslot + Name of the experiment + + RUNTESTS + Root directory where the test EXPDIR and COMROOT will be placed + Output ------ Functionally an experiment is setup as a result running the two scripts described above @@ -18,7 +26,6 @@ """ import os -import sys from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter from pathlib import Path @@ -28,8 +35,6 @@ import setup_expt import setup_xml -from hosts import Host - _here = os.path.dirname(__file__) _top = os.path.abspath(os.path.join(os.path.abspath(_here), '..')) @@ -63,7 +68,9 @@ def input_args(): formatter_class=ArgumentDefaultsHelpFormatter) parser.add_argument( - '--yaml', help='full path to yaml file describing the experiment configuration', type=Path, required=True) + '-y', '--yaml', help='full path to yaml file describing the experiment configuration', type=Path, required=True) + parser.add_argument( + '-o', '--overwrite', help='overwrite previously created experiment', action="store_true", required=False) return parser.parse_args() @@ -77,18 +84,15 @@ def input_args(): data.update(os.environ) testconf = parse_j2yaml(path=user_inputs.yaml, data=data) - if 'skip_ci_on_hosts' in testconf: - host = Host() - if host.machine.lower() in [machine.lower() for machine in testconf.skip_ci_on_hosts]: - logger.info(f'Skipping creation of case: {testconf.arguments.pslot} on {host.machine.capitalize()}') - sys.exit(0) - # Create a list of arguments to setup_expt.py setup_expt_args = [testconf.experiment.system, testconf.experiment.mode] for kk, vv in testconf.arguments.items(): setup_expt_args.append(f"--{kk}") setup_expt_args.append(str(vv)) + if user_inputs.overwrite: + setup_expt_args.append("--overwrite") + logger.info(f"Call: setup_expt.main()") logger.debug(f"setup_expt.py {' '.join(setup_expt_args)}") setup_expt.main(setup_expt_args) diff --git a/workflow/gsl_template_hera.xml b/workflow/gsl_template_hera.xml index b796f4ae82..e07a128364 100644 --- a/workflow/gsl_template_hera.xml +++ b/workflow/gsl_template_hera.xml @@ -6,7 +6,7 @@ Main workflow manager for Global Forecast System NOTES: - This workflow was automatically generated at 2023-06-13 23:31:49.582810 + This workflow was automatically generated at 2024-09-05 15:37:41.961069 --> &EXPDIR;/logs/@Y@m@d@H.log - 202401140000 202401140000 24:00:00 + 202409050000 202409050000 24:00:00 @@ -42,23 +42,25 @@ &ROTDIR;/logs/@Y@m@d@H/gfsinit.log - RUN_ENVIRemc - HOMEgfs&HOMEgfs; - EXPDIR&EXPDIR; - ROTDIR&ROTDIR; - ICSDIR&ICSDIR; - CASE&CASE; - COMPONENT&COMPONENT; - NETgfs - CDUMPgfs - RUNgfs - CDATE@Y@m@d@H - PDY@Y@m@d - cyc@H - COMROOT/scratch1/NCEPDEV/global/glopara/com - DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; - - + RUN_ENVIRemc + HOMEgfs&HOMEgfs; + EXPDIR&EXPDIR; + ROTDIR&ROTDIR; + ICSDIR&ICSDIR; + CASE&CASE; + COMPONENT&COMPONENT; + NETgfs + CDUMPgfs + RUNgfs + CDATE@Y@m@d@H + PDY@Y@m@d + cyc@H + COMROOT/scratch1/NCEPDEV/global/glopara/com + DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; + FHR3#fhr# + COMPONENTatmos + + &ROTDIR;/gfs.@Y@m@d/@H/model_data/atmos/input @@ -113,15 +115,17 @@ - _f000-f012 _f018-f030 _f036-f048 _f054-f066 _f072-f084 _f090-f102 _f108-f120 - f012 f030 f048 f066 f084 f102 f120 - f000_f006_f012 f018_f024_f030 f036_f042_f048 f054_f060_f066 f072_f078_f084 f090_f096_f102 f108_f114_f120 + + 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 + - + &JOBS_DIR;/atmos_products.sh - &PSLOT;_gfsatmprod#grp#_@H + &PSLOT;_gfsatmprod_f#fhr#_@H gsd-fv3 batch hera @@ -129,24 +133,23 @@ 1:ppn=24:tpp=1 &NATIVE_STR; - &ROTDIR;/logs/@Y@m@d@H/gfsatmprod#grp#.log + &ROTDIR;/logs/@Y@m@d@H/gfsatmprod_f#fhr#.log RUN_ENVIRemc HOMEgfs&HOMEgfs; EXPDIR&EXPDIR; - ROTDIR&ROTDIR; NETgfs - CDUMPgfs RUNgfs CDATE@Y@m@d@H PDY@Y@m@d cyc@H COMROOT/scratch1/NCEPDEV/global/glopara/com DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; - FHRLST#lst# + FHR3#fhr# + COMPONENTatmos - &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/master/gfs.t@Hz.master.grb2#dep# + &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/master/gfs.t@Hz.master.grb2f#fhr# diff --git a/workflow/hosts.py b/workflow/hosts.py index a17cd3f4a8..cd0cfe0083 100644 --- a/workflow/hosts.py +++ b/workflow/hosts.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import os +import socket from pathlib import Path from wxflow import YAMLFile @@ -15,7 +16,7 @@ class Host: """ SUPPORTED_HOSTS = ['HERA', 'ORION', 'JET', 'HERCULES', - 'WCOSS2', 'S4', 'CONTAINER', 'AWSPW'] + 'WCOSS2', 'S4', 'CONTAINER', 'AWSPW', 'GAEA'] def __init__(self, host=None): @@ -39,16 +40,15 @@ def detect(cls): if os.path.exists('/scratch1/NCEPDEV'): machine = 'HERA' elif os.path.exists('/work/noaa'): - if os.path.exists('/apps/other'): - machine = 'HERCULES' - else: - machine = 'ORION' + machine = socket.gethostname().split("-", 1)[0].upper() elif os.path.exists('/lfs4/HFIP'): machine = 'JET' elif os.path.exists('/lfs/f1'): machine = 'WCOSS2' elif os.path.exists('/data/prod'): machine = 'S4' + elif os.path.exists('/gpfs/f5'): + machine = 'GAEA' elif container is not None: machine = 'CONTAINER' elif pw_csp is not None: diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index c683010e0e..046dafcfa7 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -12,6 +12,8 @@ QUEUE: batch QUEUE_SERVICE: batch PARTITION_BATCH: compute PARTITION_SERVICE: compute +RESERVATION: '' +CLUSTERS: '' CHGRP_RSTPROD: 'YES' CHGRP_CMD: 'chgrp rstprod' # TODO: This is not yet supported. HPSSARCH: 'YES' diff --git a/workflow/hosts/container.yaml b/workflow/hosts/container.yaml index 3fd3856679..d7924724ae 100644 --- a/workflow/hosts/container.yaml +++ b/workflow/hosts/container.yaml @@ -12,6 +12,8 @@ QUEUE: '' QUEUE_SERVICE: '' PARTITION_BATCH: '' PARTITION_SERVICE: '' +RESERVATION: '' +CLUSTERS: '' CHGRP_RSTPROD: 'YES' CHGRP_CMD: 'chgrp rstprod' HPSSARCH: 'NO' diff --git a/workflow/hosts/gaea.yaml b/workflow/hosts/gaea.yaml new file mode 100644 index 0000000000..619a86f2e5 --- /dev/null +++ b/workflow/hosts/gaea.yaml @@ -0,0 +1,27 @@ +BASE_GIT: '/gpfs/f5/ufs-ard/world-shared/global/glopara/data/git' +DMPDIR: '/gpfs/f5/ufs-ard/world-shared/global/glopara/data/dump' +BASE_CPLIC: '/gpfs/f5/ufs-ard/world-shared/global/glopara/data/ICSDIR/prototype_ICs' +PACKAGEROOT: '/gpfs/f5/ufs-ard/world-shared/global/glopara/data/nwpara' +COMROOT: '/gpfs/f5/ufs-ard/world-shared/global/glopara/data/com' +COMINsyn: '${COMROOT}/gfs/prod/syndat' +HOMEDIR: '/gpfs/f5/ufs-ard/scratch/${USER}' +STMP: '/gpfs/f5/ufs-ard/scratch/${USER}' +PTMP: '/gpfs/f5/ufs-ard/scratch/${USER}' +NOSCRUB: $HOMEDIR +ACCOUNT: ufs-ard +SCHEDULER: slurm +QUEUE: normal +QUEUE_SERVICE: normal +PARTITION_BATCH: batch +PARTITION_SERVICE: batch +RESERVATION: '' +CLUSTERS: 'c5' +CHGRP_RSTPROD: 'NO' +CHGRP_CMD: 'chgrp rstprod' +HPSSARCH: 'NO' +HPSS_PROJECT: emc-global +LOCALARCH: 'NO' +ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' +MAKE_NSSTBUFR: 'NO' +MAKE_ACFTBUFR: 'NO' +SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] diff --git a/workflow/hosts/hera_gsl.yaml b/workflow/hosts/hera_gsl.yaml index c12cac1559..31274dc707 100644 --- a/workflow/hosts/hera_gsl.yaml +++ b/workflow/hosts/hera_gsl.yaml @@ -2,8 +2,7 @@ BASE_GIT: '/scratch1/NCEPDEV/global/glopara/git' DMPDIR: '/scratch1/NCEPDEV/global/glopara/dump' BASE_CPLIC: '/scratch1/NCEPDEV/global/glopara/data/ICSDIR/prototype_ICs' PACKAGEROOT: '/scratch1/NCEPDEV/global/glopara/nwpara' -COMROOT: '/scratch1/NCEPDEV/global/glopara/com' -COMINsyn: '${COMROOT}/gfs/prod/syndat' +COMINsyn: '/scratch1/NCEPDEV/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/scratch1/BMC/gsd-fv3-dev/NCEPDEV/global/${USER}' STMP: '${HOMEgfs}/FV3GFSrun/' PTMP: '${HOMEgfs}/FV3GFSrun/' @@ -14,7 +13,9 @@ QUEUE: batch QUEUE_SERVICE: batch PARTITION_BATCH: hera PARTITION_SERVICE: service +RESERVATION: '' CHGRP_RSTPROD: 'YES' +CLUSTERS: '' CHGRP_CMD: 'chgrp rstprod' HPSSARCH: 'YES' HPSS_PROJECT: fim @@ -23,3 +24,6 @@ ATARDIR: '/BMC/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /scratch1/NCEPDEV/global/glopara/data/external_gempak/ecmwf +COMINnam: /scratch1/NCEPDEV/global/glopara/data/external_gempak/nam +COMINukmet: /scratch1/NCEPDEV/global/glopara/data/external_gempak/ukmet diff --git a/workflow/hosts/hercules.yaml b/workflow/hosts/hercules.yaml index 58a9589f2f..b513bfd57a 100644 --- a/workflow/hosts/hercules.yaml +++ b/workflow/hosts/hercules.yaml @@ -1,11 +1,11 @@ -BASE_GIT: '/work/noaa/global/glopara/git' +BASE_GIT: '/work/noaa/global/glopara/git_rocky9' DMPDIR: '/work/noaa/rstprod/dump' BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/work/noaa/global/${USER}' -STMP: '/work/noaa/stmp/${USER}' -PTMP: '/work/noaa/stmp/${USER}' +STMP: '/work/noaa/stmp/${USER}/HERCULES' +PTMP: '/work/noaa/stmp/${USER}/HERCULES' NOSCRUB: $HOMEDIR SCHEDULER: slurm ACCOUNT: fv3-cpu @@ -13,7 +13,9 @@ QUEUE: batch QUEUE_SERVICE: batch PARTITION_BATCH: hercules PARTITION_SERVICE: service +RESERVATION: '' CHGRP_RSTPROD: 'YES' +CLUSTERS: '' CHGRP_CMD: 'chgrp rstprod' HPSSARCH: 'NO' HPSS_PROJECT: emc-global @@ -22,3 +24,6 @@ ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf +COMINnam: /work/noaa/global/glopara/data/external_gempak/nam +COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet diff --git a/workflow/hosts/jet_gsl.yaml b/workflow/hosts/jet_gsl.yaml index 9da6f2b2aa..e556ca4663 100644 --- a/workflow/hosts/jet_gsl.yaml +++ b/workflow/hosts/jet_gsl.yaml @@ -23,3 +23,6 @@ ATARDIR: '/BMC/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' SUPPORTED_RESOLUTIONS: ['C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /mnt/lfs4/HFIP/hfv3gfs/glopara/data/external_gempak/ecmwf +COMINnam: /mnt/lfs4/HFIP/hfv3gfs/glopara/data/external_gempak/nam +COMINukmet: /mnt/lfs4/HFIP/hfv3gfs/glopara/data/external_gempak/ukmet diff --git a/workflow/hosts/orion.yaml b/workflow/hosts/orion.yaml index 4c08a878dc..f0f807aacf 100644 --- a/workflow/hosts/orion.yaml +++ b/workflow/hosts/orion.yaml @@ -4,8 +4,8 @@ BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/work/noaa/global/${USER}' -STMP: '/work/noaa/stmp/${USER}' -PTMP: '/work/noaa/stmp/${USER}' +STMP: '/work/noaa/stmp/${USER}/ORION' +PTMP: '/work/noaa/stmp/${USER}/ORION' NOSCRUB: $HOMEDIR SCHEDULER: slurm ACCOUNT: fv3-cpu @@ -13,7 +13,9 @@ QUEUE: batch QUEUE_SERVICE: batch PARTITION_BATCH: orion PARTITION_SERVICE: service +RESERVATION: '' CHGRP_RSTPROD: 'YES' +CLUSTERS: '' CHGRP_CMD: 'chgrp rstprod' HPSSARCH: 'NO' HPSS_PROJECT: emc-global @@ -22,3 +24,6 @@ ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf +COMINnam: /work/noaa/global/glopara/data/external_gempak/nam +COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet diff --git a/workflow/hosts/s4.yaml b/workflow/hosts/s4.yaml index 52a9f7a365..aea807da63 100644 --- a/workflow/hosts/s4.yaml +++ b/workflow/hosts/s4.yaml @@ -13,7 +13,9 @@ QUEUE: s4 QUEUE_SERVICE: serial PARTITION_BATCH: s4 PARTITION_SERVICE: serial +RESERVATION: '' CHGRP_RSTPROD: 'NO' +CLUSTERS: '' CHGRP_CMD: 'ls' HPSSARCH: 'NO' HPSS_PROJECT: emc-global diff --git a/workflow/hosts/wcoss2.yaml b/workflow/hosts/wcoss2.yaml index cfb141061c..7ae2be1424 100644 --- a/workflow/hosts/wcoss2.yaml +++ b/workflow/hosts/wcoss2.yaml @@ -13,7 +13,9 @@ QUEUE: 'dev' QUEUE_SERVICE: 'dev_transfer' PARTITION_BATCH: '' PARTITION_SERVICE: '' +RESERVATION: '' CHGRP_RSTPROD: 'YES' +CLUSTERS: '' CHGRP_CMD: 'chgrp rstprod' HPSSARCH: 'NO' HPSS_PROJECT: emc-global @@ -22,3 +24,6 @@ ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /lfs/h2/emc/global/noscrub/emc.global/data/external_gempak/ecmwf +COMINnam: /lfs/h2/emc/global/noscrub/emc.global/data/external_gempak/nam +COMINukmet: /lfs/h2/emc/global/noscrub/emc.global/data/external_gempak/ukmet diff --git a/workflow/prod.yml b/workflow/prod.yml index 64783dd611..55717772b5 100644 --- a/workflow/prod.yml +++ b/workflow/prod.yml @@ -113,17 +113,6 @@ suites: jgfs_atmos_awips_f( 3,27,6 ): edits: TRDRUN: 'NO' - awips_g2: - tasks: - jgfs_atmos_awips_g2_f( 0,64,6 ): - template: jgfs_atmos_awips_g2_master - triggers: - - task: jgfs_atmos_post_f( ) - edits: - FHRGRP: '( )' - FHRLST: 'f( )' - FCSTHR: '( )' - TRDRUN: 'YES' gempak: tasks: jgfs_atmos_gempak: diff --git a/workflow/rocoto/gefs_tasks.py b/workflow/rocoto/gefs_tasks.py index c46d9ad452..1b357d8ee3 100644 --- a/workflow/rocoto/gefs_tasks.py +++ b/workflow/rocoto/gefs_tasks.py @@ -1,57 +1,70 @@ from applications.applications import AppConfig from rocoto.tasks import Tasks import rocoto.rocoto as rocoto +from datetime import datetime, timedelta class GEFSTasks(Tasks): - def __init__(self, app_config: AppConfig, cdump: str) -> None: - super().__init__(app_config, cdump) + def __init__(self, app_config: AppConfig, run: str) -> None: + super().__init__(app_config, run) def stage_ic(self): - cpl_ic = self._configs['stage_ic'] - deps = [] - + dtg_prefix = "@Y@m@d.@H0000" + offset = str(self._configs['base']['OFFSET_START_HOUR']).zfill(2) + ":00:00" # Atm ICs if self.app_config.do_atm: - prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/mem000/atmos" - for file in ['gfs_ctrl.nc'] + \ - [f'{datatype}_data.tile{tile}.nc' - for datatype in ['gfs', 'sfc'] - for tile in range(1, self.n_tiles + 1)]: - data = f"{prefix}/{file}" - dep_dict = {'type': 'data', 'data': data} + prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/mem000/atmos/" + if self._base['EXP_WARM_START']: + for file in ['fv_core.res.nc'] + \ + [f'{datatype}.tile{tile}.nc' + for datatype in ['ca_data', 'fv_core.res', 'fv_srf_wnd.res', 'fv_tracer.res', 'phy_data', 'sfc_data'] + for tile in range(1, self.n_tiles + 1)]: + data = [prefix, f"{dtg_prefix}.{file}"] + dep_dict = {'type': 'data', 'data': data, 'offset': [None, offset]} + deps.append(rocoto.add_dependency(dep_dict)) + prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/mem000/med/" + data = [prefix, f"{dtg_prefix}.ufs.cpld.cpl.r.nc"] + dep_dict = {'type': 'data', 'data': data, 'offset': [None, offset]} deps.append(rocoto.add_dependency(dep_dict)) + else: + for file in ['gfs_ctrl.nc'] + \ + [f'{datatype}_data.tile{tile}.nc' + for datatype in ['gfs', 'sfc'] + for tile in range(1, self.n_tiles + 1)]: + data = f"{prefix}/{file}" + dep_dict = {'type': 'data', 'data': data} + deps.append(rocoto.add_dependency(dep_dict)) # Ocean ICs if self.app_config.do_ocean: ocn_res = f"{self._base.get('OCNRES', '025'):03d}" - prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_OCNIC']}/@Y@m@d@H/mem000/ocean" - data = f"{prefix}/@Y@m@d.@H0000.MOM.res.nc" - dep_dict = {'type': 'data', 'data': data} + prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_OCNIC']}/@Y@m@d@H/mem000/ocean/" + data = [prefix, f"{dtg_prefix}.MOM.res.nc"] + dep_dict = {'type': 'data', 'data': data, 'offset': [None, offset]} deps.append(rocoto.add_dependency(dep_dict)) if ocn_res in ['025']: # 0.25 degree ocean model also has these additional restarts for res in [f'res_{res_index}' for res_index in range(1, 4)]: - data = f"{prefix}/@Y@m@d.@H0000.MOM.{res}.nc" - dep_dict = {'type': 'data', 'data': data} + data = [prefix, f"{dtg_prefix}.MOM.{res}.nc"] + dep_dict = {'type': 'data', 'data': data, 'offset': [None, offset]} deps.append(rocoto.add_dependency(dep_dict)) # Ice ICs if self.app_config.do_ice: - prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ICEIC']}/@Y@m@d@H/mem000/ice" - data = f"{prefix}/@Y@m@d.@H0000.cice_model.res.nc" - dep_dict = {'type': 'data', 'data': data} + prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ICEIC']}/@Y@m@d@H/mem000/ice/" + data = [prefix, f"{dtg_prefix}.cice_model.res.nc"] + dep_dict = {'type': 'data', 'data': data, 'offset': [None, offset]} deps.append(rocoto.add_dependency(dep_dict)) # Wave ICs if self.app_config.do_wave: - prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_WAVIC']}/@Y@m@d@H/mem000/wave" + prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_WAVIC']}/@Y@m@d@H/mem000/wave/" for wave_grid in self._configs['waveinit']['waveGRD'].split(): - data = f"{prefix}/@Y@m@d.@H0000.restart.{wave_grid}" - dep_dict = {'type': 'data', 'data': data} + data = [prefix, f"{dtg_prefix}.restart.{wave_grid}"] + dep_dict = {'type': 'data', 'data': data, 'offset': [None, offset]} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) @@ -75,7 +88,7 @@ def stage_ic(self): def waveinit(self): resources = self.get_resource('waveinit') - task_name = f'waveinit' + task_name = f'wave_init' task_dict = {'task_name': task_name, 'resources': resources, 'envars': self.envars, @@ -89,21 +102,44 @@ def waveinit(self): return task - def fcst(self): + def prep_emissions(self): + deps = [] + dep_dict = {'type': 'task', 'name': f'stage_ic'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) - # TODO: Add real dependencies + resources = self.get_resource('prep_emissions') + task_name = 'prep_emissions' + task_dict = {'task_name': task_name, + 'resources': resources, + 'envars': self.envars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/prep_emissions.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + task = rocoto.create_task(task_dict) + + return task + + def fcst(self): dependencies = [] dep_dict = {'type': 'task', 'name': f'stage_ic'} dependencies.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_wave: - dep_dict = {'type': 'task', 'name': f'waveinit'} + dep_dict = {'type': 'task', 'name': f'wave_init'} + dependencies.append(rocoto.add_dependency(dep_dict)) + + if self.app_config.do_aero: + dep_dict = {'type': 'task', 'name': f'prep_emissions'} dependencies.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=dependencies) resources = self.get_resource('fcst') - task_name = f'fcst' + task_name = f'fcst_mem000' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -124,36 +160,389 @@ def efcs(self): dependencies.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_wave: - dep_dict = {'type': 'task', 'name': f'waveinit'} + dep_dict = {'type': 'task', 'name': f'wave_init'} + dependencies.append(rocoto.add_dependency(dep_dict)) + + if self.app_config.do_aero: + dep_dict = {'type': 'task', 'name': f'prep_emissions'} dependencies.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=dependencies) efcsenvars = self.envars.copy() - efcsenvars.append(rocoto.create_envar(name='ENSGRP', value='#grp#')) - - groups = self._get_hybgroups(self._base['NMEM_ENS'], self._configs['efcs']['NMEM_EFCSGRP']) - var_dict = {'grp': groups} + efcsenvars_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#' + } + for key, value in efcsenvars_dict.items(): + efcsenvars.append(rocoto.create_envar(name=key, value=str(value))) resources = self.get_resource('efcs') - task_name = f'efcs#grp#' + task_name = f'fcst_mem#member#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': efcsenvars, 'cycledef': 'gefs', - 'command': f'{self.HOMEgfs}/jobs/rocoto/efcs.sh', + 'command': f'{self.HOMEgfs}/jobs/rocoto/fcst.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': 'efmn', - 'var_dict': var_dict, + member_var_dict = {'member': ' '.join([f"{mem:03d}" for mem in range(1, self.nmem + 1)])} + metatask_dict = {'task_name': 'fcst_ens', + 'var_dict': member_var_dict, 'task_dict': task_dict } task = rocoto.create_task(metatask_dict) return task + + def atmos_prod(self): + return self._atmosoceaniceprod('atmos') + + def ocean_prod(self): + return self._atmosoceaniceprod('ocean') + + def ice_prod(self): + return self._atmosoceaniceprod('ice') + + def _atmosoceaniceprod(self, component: str): + + fhout_ocn_gfs = self._configs['base']['FHOUT_OCN_GFS'] + fhout_ice_gfs = self._configs['base']['FHOUT_ICE_GFS'] + products_dict = {'atmos': {'config': 'atmos_products', + 'history_path_tmpl': 'COM_ATMOS_MASTER_TMPL', + 'history_file_tmpl': f'{self.run}.t@Hz.master.grb2f#fhr#'}, + 'ocean': {'config': 'oceanice_products', + 'history_path_tmpl': 'COM_OCEAN_HISTORY_TMPL', + 'history_file_tmpl': f'{self.run}.ocean.t@Hz.{fhout_ocn_gfs}hr_avg.f#fhr_next#.nc'}, + 'ice': {'config': 'oceanice_products', + 'history_path_tmpl': 'COM_ICE_HISTORY_TMPL', + 'history_file_tmpl': f'{self.run}.ice.t@Hz.{fhout_ice_gfs}hr_avg.f#fhr#.nc'}} + + component_dict = products_dict[component] + config = component_dict['config'] + history_path_tmpl = component_dict['history_path_tmpl'] + history_file_tmpl = component_dict['history_file_tmpl'] + + resources = self.get_resource(config) + + history_path = self._template_to_rocoto_cycstring(self._base[history_path_tmpl], {'MEMDIR': 'mem#member#'}) + deps = [] + data = f'{history_path}/{history_file_tmpl}' + if component in ['ocean']: + dep_dict = {'type': 'data', 'data': data, 'age': 120} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': 'fcst_mem#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps, dep_condition='or') + elif component in ['ice']: + command = f"{self.HOMEgfs}/ush/check_ice_netcdf.sh @Y @m @d @H #fhr# &ROTDIR; #member# {fhout_ice_gfs}" + dep_dict = {'type': 'sh', 'command': command} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + else: + dep_dict = {'type': 'data', 'data': data, 'age': 120} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + postenvars = self.envars.copy() + postenvar_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#', + 'FHR3': '#fhr#', + 'COMPONENT': component} + for key, value in postenvar_dict.items(): + postenvars.append(rocoto.create_envar(name=key, value=str(value))) + + task_name = f'{component}_prod_mem#member#_f#fhr#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': postenvars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/{config}.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;'} + + fhrs = self._get_forecast_hours('gefs', self._configs[config], component) + + # when replaying, atmos component does not have fhr 0, therefore remove 0 from fhrs + is_replay = self._configs[config]['REPLAY_ICS'] + if is_replay and component in ['atmos'] and 0 in fhrs: + fhrs.remove(0) + + # ocean/ice components do not have fhr 0 as they are averaged output + if component in ['ocean', 'ice'] and 0 in fhrs: + fhrs.remove(0) + + fhr_var_dict = {'fhr': ' '.join([f"{fhr:03d}" for fhr in fhrs])} + if component in ['ocean']: + fhrs_next = fhrs[1:] + [fhrs[-1] + (fhrs[-1] - fhrs[-2])] + fhr_var_dict['fhr_next'] = ' '.join([f"{fhr:03d}" for fhr in fhrs_next]) + + fhr_metatask_dict = {'task_name': f'{component}_prod_#member#', + 'task_dict': task_dict, + 'var_dict': fhr_var_dict} + + member_var_dict = {'member': ' '.join([f"{mem:03d}" for mem in range(0, self.nmem + 1)])} + member_metatask_dict = {'task_name': f'{component}_prod', + 'task_dict': fhr_metatask_dict, + 'var_dict': member_var_dict} + + task = rocoto.create_task(member_metatask_dict) + + return task + + def atmos_ensstat(self): + + resources = self.get_resource('atmos_ensstat') + + deps = [] + for member in range(0, self.nmem + 1): + task = f'atmos_prod_mem{member:03d}_f#fhr#' + dep_dict = {'type': 'task', 'name': task} + deps.append(rocoto.add_dependency(dep_dict)) + + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + + postenvars = self.envars.copy() + postenvar_dict = {'FHR3': '#fhr#'} + for key, value in postenvar_dict.items(): + postenvars.append(rocoto.create_envar(name=key, value=str(value))) + + task_name = f'atmos_ensstat_f#fhr#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': postenvars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/atmos_ensstat.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;'} + + fhrs = self._get_forecast_hours('gefs', self._configs['atmos_ensstat']) + + # when replaying, atmos component does not have fhr 0, therefore remove 0 from fhrs + is_replay = self._configs['atmos_ensstat']['REPLAY_ICS'] + if is_replay and 0 in fhrs: + fhrs.remove(0) + + fhr_var_dict = {'fhr': ' '.join([f"{fhr:03d}" for fhr in fhrs])} + + fhr_metatask_dict = {'task_name': f'atmos_ensstat', + 'task_dict': task_dict, + 'var_dict': fhr_var_dict} + + task = rocoto.create_task(fhr_metatask_dict) + + return task + + def wavepostsbs(self): + deps = [] + for wave_grid in self._configs['wavepostsbs']['waveGRD'].split(): + wave_hist_path = self._template_to_rocoto_cycstring(self._base["COM_WAVE_HISTORY_TMPL"], {'MEMDIR': 'mem#member#'}) + data = f'{wave_hist_path}/gefswave.out_grd.{wave_grid}.@Y@m@d.@H0000' + dep_dict = {'type': 'data', 'data': data} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + + wave_post_envars = self.envars.copy() + postenvar_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#', + } + for key, value in postenvar_dict.items(): + wave_post_envars.append(rocoto.create_envar(name=key, value=str(value))) + + resources = self.get_resource('wavepostsbs') + + task_name = f'wave_post_grid_mem#member#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': wave_post_envars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostsbs.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(0, self.nmem + 1)])} + member_metatask_dict = {'task_name': 'wave_post_grid', + 'task_dict': task_dict, + 'var_dict': member_var_dict + } + + task = rocoto.create_task(member_metatask_dict) + + return task + + def wavepostbndpnt(self): + deps = [] + dep_dict = {'type': 'task', 'name': f'fcst_mem#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + wave_post_bndpnt_envars = self.envars.copy() + postenvar_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#', + } + for key, value in postenvar_dict.items(): + wave_post_bndpnt_envars.append(rocoto.create_envar(name=key, value=str(value))) + + resources = self.get_resource('wavepostbndpnt') + task_name = f'wave_post_bndpnt_mem#member#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': wave_post_bndpnt_envars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostbndpnt.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(0, self.nmem + 1)])} + member_metatask_dict = {'task_name': 'wave_post_bndpnt', + 'task_dict': task_dict, + 'var_dict': member_var_dict + } + + task = rocoto.create_task(member_metatask_dict) + + return task + + def wavepostbndpntbll(self): + deps = [] + atmos_hist_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_HISTORY_TMPL"], {'MEMDIR': 'mem#member#'}) + + # The wavepostbndpntbll job runs on forecast hours up to FHMAX_WAV_IBP + last_fhr = self._configs['wave']['FHMAX_WAV_IBP'] + + data = f'{atmos_hist_path}/{self.run}.t@Hz.atm.logf{last_fhr:03d}.txt' + dep_dict = {'type': 'data', 'data': data} + deps.append(rocoto.add_dependency(dep_dict)) + + dep_dict = {'type': 'task', 'name': f'fcst_mem#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='or', dep=deps) + + wave_post_bndpnt_bull_envars = self.envars.copy() + postenvar_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#', + } + for key, value in postenvar_dict.items(): + wave_post_bndpnt_bull_envars.append(rocoto.create_envar(name=key, value=str(value))) + + resources = self.get_resource('wavepostbndpntbll') + task_name = f'wave_post_bndpnt_bull_mem#member#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': wave_post_bndpnt_bull_envars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostbndpntbll.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(0, self.nmem + 1)])} + member_metatask_dict = {'task_name': 'wave_post_bndpnt_bull', + 'task_dict': task_dict, + 'var_dict': member_var_dict + } + + task = rocoto.create_task(member_metatask_dict) + + return task + + def wavepostpnt(self): + deps = [] + dep_dict = {'type': 'task', 'name': f'fcst_mem#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_wave_bnd: + dep_dict = {'type': 'task', 'name': f'wave_post_bndpnt_bull_mem#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + + wave_post_pnt_envars = self.envars.copy() + postenvar_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#', + } + for key, value in postenvar_dict.items(): + wave_post_pnt_envars.append(rocoto.create_envar(name=key, value=str(value))) + + resources = self.get_resource('wavepostpnt') + task_name = f'wave_post_pnt_mem#member#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': wave_post_pnt_envars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostpnt.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(0, self.nmem + 1)])} + member_metatask_dict = {'task_name': 'wave_post_pnt', + 'task_dict': task_dict, + 'var_dict': member_var_dict + } + + task = rocoto.create_task(member_metatask_dict) + + return task + + def extractvars(self): + deps = [] + if self.app_config.do_wave: + dep_dict = {'type': 'task', 'name': 'wave_post_grid_mem#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_ocean: + dep_dict = {'type': 'metatask', 'name': 'ocean_prod_#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_ice: + dep_dict = {'type': 'metatask', 'name': 'ice_prod_#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_atm: + dep_dict = {'type': 'metatask', 'name': 'atmos_prod_#member#'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + extractvars_envars = self.envars.copy() + extractvars_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#', + } + for key, value in extractvars_dict.items(): + extractvars_envars.append(rocoto.create_envar(name=key, value=str(value))) + + resources = self.get_resource('extractvars') + task_name = f'extractvars_mem#member#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': extractvars_envars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/extractvars.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(0, self.nmem + 1)])} + member_metatask_dict = {'task_name': 'extractvars', + 'task_dict': task_dict, + 'var_dict': member_var_dict + } + + task = rocoto.create_task(member_metatask_dict) + + return task diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 0f5e184192..960a7548ab 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -7,13 +7,13 @@ class GFSTasks(Tasks): - def __init__(self, app_config: AppConfig, cdump: str) -> None: - super().__init__(app_config, cdump) + def __init__(self, app_config: AppConfig, run: str) -> None: + super().__init__(app_config, run) @staticmethod - def _is_this_a_gdas_task(cdump, task_name): - if cdump != 'enkfgdas': - raise TypeError(f'{task_name} must be part of the "enkfgdas" cycle and not {cdump}') + def _is_this_a_gdas_task(run, task_name): + if run != 'enkfgdas': + raise TypeError(f'{task_name} must be part of the "enkfgdas" cycle and not {run}') # Specific Tasks begin here def stage_ic(self): @@ -71,12 +71,12 @@ def stage_ic(self): dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('stage_ic') - task_name = f'{self.cdump}stage_ic' + task_name = f'{self.run}stage_ic' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump, + 'cycledef': self.run, 'command': f'{self.HOMEgfs}/jobs/rocoto/stage_ic.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -96,25 +96,25 @@ def prep(self): dump_path = self._template_to_rocoto_cycstring(self._base["COM_OBSDMP_TMPL"], {'DMPDIR': dmpdir, 'DUMP_SUFFIX': dump_suffix}) - gfs_enkf = True if self.app_config.do_hybvar and 'gfs' in self.app_config.eupd_cdumps else False + gfs_enkf = True if self.app_config.do_hybvar and 'gfs' in self.app_config.eupd_runs else False deps = [] - dep_dict = {'type': 'metatask', 'name': 'gdasatmprod', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} + dep_dict = {'type': 'metatask', 'name': 'gdasatmos_prod', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) data = f'{atm_hist_path}/gdas.t@Hz.atmf009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) - data = f'{dump_path}/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' + data = f'{dump_path}/{self.run}.t@Hz.updated.status.tm00.bufr_d' dep_dict = {'type': 'data', 'data': data} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) - cycledef = self.cdump - if self.cdump in ['gfs'] and gfs_enkf and gfs_cyc != 4: + cycledef = self.run + if self.run in ['gfs'] and gfs_enkf and gfs_cyc != 4: cycledef = 'gdas' resources = self.get_resource('prep') - task_name = f'{self.cdump}prep' + task_name = f'{self.run}prep' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -134,17 +134,17 @@ def waveinit(self): resources = self.get_resource('waveinit') dependencies = None - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.run in ['gdas'] else self.run if self.app_config.mode in ['cycled']: deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}prep'} deps.append(rocoto.add_dependency(dep_dict)) - if self.cdump in ['gdas']: + if self.run in ['gdas']: dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='or', dep=deps) - task_name = f'{self.cdump}waveinit' + task_name = f'{self.run}waveinit' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -163,12 +163,12 @@ def waveinit(self): def waveprep(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}waveinit'} + dep_dict = {'type': 'task', 'name': f'{self.run}waveinit'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.run in ['gdas'] else self.run resources = self.get_resource('waveprep') - task_name = f'{self.cdump}waveprep' + task_name = f'{self.run}waveprep' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -197,11 +197,11 @@ def aerosol_init(self): dep_dict = {'type': 'data', 'data': data} deps.append(rocoto.add_dependency(dep_dict)) - # Calculate offset based on CDUMP = gfs | gdas + # Calculate offset based on RUN = gfs | gdas interval = None - if self.cdump in ['gfs']: + if self.run in ['gfs']: interval = self._base['INTERVAL_GFS'] - elif self.cdump in ['gdas']: + elif self.run in ['gdas']: interval = self._base['INTERVAL'] offset = timedelta_to_HMS(-interval) @@ -219,7 +219,7 @@ def aerosol_init(self): cycledef = 'gfs_seq' resources = self.get_resource('aerosol_init') - task_name = f'{self.cdump}aerosol_init' + task_name = f'{self.run}aerosol_init' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -237,7 +237,7 @@ def aerosol_init(self): def anal(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}prep'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_hybvar: dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} @@ -247,12 +247,12 @@ def anal(self): dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('anal') - task_name = f'{self.cdump}anal' + task_name = f'{self.run}anal' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/anal.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -267,24 +267,24 @@ def sfcanl(self): deps = [] if self.app_config.do_jediatmvar: - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanlfinal'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlfinal'} else: - dep_dict = {'type': 'task', 'name': f'{self.cdump}anal'} + dep_dict = {'type': 'task', 'name': f'{self.run}anal'} deps.append(rocoto.add_dependency(dep_dict)) - if self.app_config.do_jedilandda: - dep_dict = {'type': 'task', 'name': f'{self.cdump}landanl'} + if self.app_config.do_jedisnowda: + dep_dict = {'type': 'task', 'name': f'{self.run}snowanl'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) else: dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('sfcanl') - task_name = f'{self.cdump}sfcanl' + task_name = f'{self.run}sfcanl' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/sfcanl.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -299,24 +299,24 @@ def analcalc(self): deps = [] if self.app_config.do_jediatmvar: - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanlfinal'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlfinal'} else: - dep_dict = {'type': 'task', 'name': f'{self.cdump}anal'} + dep_dict = {'type': 'task', 'name': f'{self.run}anal'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.cdump}sfcanl'} + dep_dict = {'type': 'task', 'name': f'{self.run}sfcanl'} deps.append(rocoto.add_dependency(dep_dict)) - if self.app_config.do_hybvar and self.cdump in ['gdas']: + if self.app_config.do_hybvar and self.run in ['gdas']: dep_dict = {'type': 'task', 'name': 'enkfgdasechgres', '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('analcalc') - task_name = f'{self.cdump}analcalc' + task_name = f'{self.run}analcalc' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/analcalc.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -330,17 +330,17 @@ def analcalc(self): def analdiag(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}anal'} + dep_dict = {'type': 'task', 'name': f'{self.run}anal'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('analdiag') - task_name = f'{self.cdump}analdiag' + task_name = f'{self.run}analdiag' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/analdiag.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -354,17 +354,17 @@ def analdiag(self): def prepatmiodaobs(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('prepatmiodaobs') - task_name = f'{self.cdump}prepatmiodaobs' + task_name = f'{self.run}prepatmiodaobs' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/prepatmiodaobs.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -378,7 +378,7 @@ def prepatmiodaobs(self): def atmanlinit(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prepatmiodaobs'} + dep_dict = {'type': 'task', 'name': f'{self.run}prepatmiodaobs'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_hybvar: dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} @@ -388,14 +388,14 @@ def atmanlinit(self): dependencies = rocoto.create_dependency(dep=deps) gfs_cyc = self._base["gfs_cyc"] - gfs_enkf = True if self.app_config.do_hybvar and 'gfs' in self.app_config.eupd_cdumps else False + gfs_enkf = True if self.app_config.do_hybvar and 'gfs' in self.app_config.eupd_runs else False - cycledef = self.cdump - if self.cdump in ['gfs'] and gfs_enkf and gfs_cyc != 4: + cycledef = self.run + if self.run in ['gfs'] and gfs_enkf and gfs_cyc != 4: cycledef = 'gdas' resources = self.get_resource('atmanlinit') - task_name = f'{self.cdump}atmanlinit' + task_name = f'{self.run}atmanlinit' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -411,21 +411,45 @@ def atmanlinit(self): return task - def atmanlrun(self): + def atmanlvar(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanlinit'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlinit'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - resources = self.get_resource('atmanlrun') - task_name = f'{self.cdump}atmanlrun' + resources = self.get_resource('atmanlvar') + task_name = f'{self.run}atmanlvar' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/atmanlrun.sh', + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/atmanlvar.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + task = rocoto.create_task(task_dict) + + return task + + def atmanlfv3inc(self): + + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlvar'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + resources = self.get_resource('atmanlfv3inc') + task_name = f'{self.run}atmanlfv3inc' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': self.envars, + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/atmanlfv3inc.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' @@ -438,17 +462,17 @@ def atmanlrun(self): def atmanlfinal(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanlrun'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlfv3inc'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('atmanlfinal') - task_name = f'{self.cdump}atmanlfinal' + task_name = f'{self.run}atmanlfinal' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/atmanlfinal.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -459,20 +483,45 @@ def atmanlfinal(self): return task + def prepobsaero(self): + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.run}prep'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + + resources = self.get_resource('prepobsaero') + task_name = f'{self.run}prepobsaero' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': self.envars, + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/prepobsaero.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + task = rocoto.create_task(task_dict) + + return task + def aeroanlinit(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}prep'} + if self.app_config.do_prep_obs_aero: + dep_dict = {'type': 'task', 'name': f'{self.run}prepobsaero'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('aeroanlinit') - task_name = f'{self.cdump}aeroanlinit' + task_name = f'{self.run}aeroanlinit' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/aeroanlinit.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -486,17 +535,17 @@ def aeroanlinit(self): def aeroanlrun(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}aeroanlinit'} + dep_dict = {'type': 'task', 'name': f'{self.run}aeroanlinit'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('aeroanlrun') - task_name = f'{self.cdump}aeroanlrun' + task_name = f'{self.run}aeroanlrun' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/aeroanlrun.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -510,17 +559,17 @@ def aeroanlrun(self): def aeroanlfinal(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}aeroanlrun'} + dep_dict = {'type': 'task', 'name': f'{self.run}aeroanlrun'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('aeroanlfinal') - task_name = f'{self.cdump}aeroanlfinal' + task_name = f'{self.run}aeroanlfinal' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/aeroanlfinal.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -531,21 +580,21 @@ def aeroanlfinal(self): return task - def preplandobs(self): + def prepsnowobs(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - resources = self.get_resource('preplandobs') - task_name = f'{self.cdump}preplandobs' + resources = self.get_resource('prepsnowobs') + task_name = f'{self.run}prepsnowobs' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/preplandobs.sh', + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/prepsnowobs.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' @@ -555,21 +604,21 @@ def preplandobs(self): return task - def landanl(self): + def snowanl(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}preplandobs'} + dep_dict = {'type': 'task', 'name': f'{self.run}prepsnowobs'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - resources = self.get_resource('landanl') - task_name = f'{self.cdump}landanl' + resources = self.get_resource('snowanl') + task_name = f'{self.run}snowanl' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/landanl.sh', + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/snowanl.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' @@ -583,18 +632,18 @@ def prepoceanobs(self): ocean_hist_path = self._template_to_rocoto_cycstring(self._base["COM_OCEAN_HISTORY_TMPL"], {'RUN': 'gdas'}) deps = [] - data = f'{ocean_hist_path}/gdas.t@Hz.ocnf009.nc' + 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) resources = self.get_resource('prepoceanobs') - task_name = f'{self.cdump}prepoceanobs' + task_name = f'{self.run}prepoceanobs' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/prepoceanobs.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -605,21 +654,24 @@ def prepoceanobs(self): return task - def ocnanalprep(self): + def marinebmat(self): + + ocean_hist_path = self._template_to_rocoto_cycstring(self._base["COM_OCEAN_HISTORY_TMPL"], {'RUN': 'gdas'}) deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prepoceanobs'} + 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) - resources = self.get_resource('ocnanalprep') - task_name = f'{self.cdump}ocnanalprep' + resources = self.get_resource('marinebmat') + task_name = f'{self.run}marinebmat' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalprep.sh', + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/marinebmat.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' @@ -629,21 +681,25 @@ def ocnanalprep(self): return task - def ocnanalbmat(self): + def ocnanalprep(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalprep'} + dep_dict = {'type': 'task', 'name': f'{self.run}prepoceanobs'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep=deps) + dep_dict = {'type': 'task', 'name': f'{self.run}marinebmat'} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': 'gdasfcst', '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('ocnanalbmat') - task_name = f'{self.cdump}ocnanalbmat' + resources = self.get_resource('ocnanalprep') + task_name = f'{self.run}ocnanalprep' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalbmat.sh', + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalprep.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' @@ -656,17 +712,17 @@ def ocnanalbmat(self): def ocnanalrun(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalbmat'} + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalprep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('ocnanalrun') - task_name = f'{self.cdump}ocnanalrun' + task_name = f'{self.run}ocnanalrun' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalrun.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -677,24 +733,51 @@ def ocnanalrun(self): return task + def ocnanalecen(self): + + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalrun'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + resources = self.get_resource('ocnanalecen') + task_name = f'{self.run}ocnanalecen' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': self.envars, + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalecen.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + task = rocoto.create_task(task_dict) + + return task + def ocnanalchkpt(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalrun'} + if self.app_config.do_hybvar: + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalecen'} + else: + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalrun'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_mergensst: - data = f'&ROTDIR;/{self.cdump}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.sfcanl.nc' + data = f'&ROTDIR;/{self.run}.@Y@m@d/@H/atmos/{self.run}.t@Hz.sfcanl.nc' dep_dict = {'type': 'data', 'data': data} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('ocnanalchkpt') - task_name = f'{self.cdump}ocnanalchkpt' + task_name = f'{self.run}ocnanalchkpt' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalchkpt.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -708,17 +791,17 @@ def ocnanalchkpt(self): def ocnanalpost(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalchkpt'} + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalchkpt'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('ocnanalpost') - task_name = f'{self.cdump}ocnanalpost' + task_name = f'{self.run}ocnanalpost' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalpost.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -732,17 +815,17 @@ def ocnanalpost(self): def ocnanalvrfy(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalpost'} + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalpost'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('ocnanalvrfy') - task_name = f'{self.cdump}ocnanalvrfy' + task_name = f'{self.run}ocnanalvrfy' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalvrfy.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -770,24 +853,26 @@ def fcst(self): def _fcst_forecast_only(self): dependencies = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}stage_ic'} + dep_dict = {'type': 'task', 'name': f'{self.run}stage_ic'} dependencies.append(rocoto.add_dependency(dep_dict)) - if self.app_config.do_wave and self.cdump in self.app_config.wave_cdumps: + if self.app_config.do_wave and self.run in self.app_config.wave_runs: wave_job = 'waveprep' if self.app_config.model_app in ['ATMW'] else 'waveinit' - dep_dict = {'type': 'task', 'name': f'{self.cdump}{wave_job}'} + dep_dict = {'type': 'task', 'name': f'{self.run}{wave_job}'} dependencies.append(rocoto.add_dependency(dep_dict)) - if self.app_config.do_aero: - # Calculate offset based on CDUMP = gfs | gdas + if self.app_config.do_aero and \ + self.run in self.app_config.aero_fcst_runs and \ + not self._base['EXP_WARM_START']: + # Calculate offset based on RUN = gfs | gdas interval = None - if self.cdump in ['gfs']: + if self.run in ['gfs']: interval = self._base['INTERVAL_GFS'] - elif self.cdump in ['gdas']: + elif self.run in ['gdas']: interval = self._base['INTERVAL'] offset = timedelta_to_HMS(-interval) deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}aerosol_init'} + dep_dict = {'type': 'task', 'name': f'{self.run}aerosol_init'} deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': offset} deps.append(rocoto.add_dependency(dep_dict)) @@ -796,12 +881,12 @@ def _fcst_forecast_only(self): dependencies = rocoto.create_dependency(dep_condition='and', dep=dependencies) resources = self.get_resource('fcst') - task_name = f'{self.cdump}fcst' + task_name = f'{self.run}fcst' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/fcst.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -814,38 +899,38 @@ def _fcst_forecast_only(self): def _fcst_cycled(self): - dep_dict = {'type': 'task', 'name': f'{self.cdump}sfcanl'} + dep_dict = {'type': 'task', 'name': f'{self.run}sfcanl'} dep = rocoto.add_dependency(dep_dict) dependencies = rocoto.create_dependency(dep=dep) if self.app_config.do_jediocnvar: - dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalpost'} + dep_dict = {'type': 'task', 'name': f'{self.run}ocnanalpost'} dependencies.append(rocoto.add_dependency(dep_dict)) - if self.app_config.do_aero: - dep_dict = {'type': 'task', 'name': f'{self.cdump}aeroanlfinal'} + if self.app_config.do_aero and self.run in self.app_config.aero_anl_runs: + dep_dict = {'type': 'task', 'name': f'{self.run}aeroanlfinal'} dependencies.append(rocoto.add_dependency(dep_dict)) - if self.app_config.do_jedilandda: - dep_dict = {'type': 'task', 'name': f'{self.cdump}landanl'} + if self.app_config.do_jedisnowda: + dep_dict = {'type': 'task', 'name': f'{self.run}snowanl'} dependencies.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=dependencies) - if self.cdump in ['gdas']: + if self.run in ['gdas']: dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} dependencies.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='or', dep=dependencies) - if self.app_config.do_wave and self.cdump in self.app_config.wave_cdumps: - dep_dict = {'type': 'task', 'name': f'{self.cdump}waveprep'} + if self.app_config.do_wave and self.run in self.app_config.wave_runs: + dep_dict = {'type': 'task', 'name': f'{self.run}waveprep'} dependencies.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=dependencies) - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.run in ['gdas'] else self.run resources = self.get_resource('fcst') - task_name = f'{self.cdump}fcst' + task_name = f'{self.run}fcst' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -863,30 +948,30 @@ def _fcst_cycled(self): def atmanlupp(self): postenvars = self.envars.copy() - postenvar_dict = {'FHRLST': 'f000', + postenvar_dict = {'FHR3': '000', 'UPP_RUN': 'analysis'} for key, value in postenvar_dict.items(): postenvars.append(rocoto.create_envar(name=key, value=str(value))) atm_anl_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_ANALYSIS_TMPL"]) deps = [] - data = f'{atm_anl_path}/{self.cdump}.t@Hz.atmanl.nc' + data = f'{atm_anl_path}/{self.run}.t@Hz.atmanl.nc' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) - data = f'{atm_anl_path}/{self.cdump}.t@Hz.sfcanl.nc' + data = f'{atm_anl_path}/{self.run}.t@Hz.sfcanl.nc' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) - data = f'{atm_anl_path}/{self.cdump}.t@Hz.loganl.txt' + data = f'{atm_anl_path}/{self.run}.t@Hz.loganl.txt' dep_dict = {'type': 'data', 'data': data, 'age': 60} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps, dep_condition='and') resources = self.get_resource('upp') - task_name = f'{self.cdump}atmanlupp' + task_name = f'{self.run}atmanlupp' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': postenvars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/upp.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -899,23 +984,23 @@ def atmanlupp(self): def atmanlprod(self): postenvars = self.envars.copy() - postenvar_dict = {'FHRLST': '-f001'} + postenvar_dict = {'FHR3': '-001'} for key, value in postenvar_dict.items(): postenvars.append(rocoto.create_envar(name=key, value=str(value))) atm_master_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_MASTER_TMPL"]) deps = [] - data = f'{atm_master_path}/{self.cdump}.t@Hz.master.grb2anl' + data = f'{atm_master_path}/{self.run}.t@Hz.master.grb2anl' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('atmos_products') - task_name = f'{self.cdump}atmanlprod' + task_name = f'{self.run}atmanlprod' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': postenvars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/atmos_products.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -926,39 +1011,6 @@ def atmanlprod(self): return task - @staticmethod - def _get_ufs_postproc_grps(cdump, config): - - fhmin = config['FHMIN'] - fhmax = config['FHMAX'] - fhout = config['FHOUT'] - - # Get a list of all forecast hours - fhrs = [] - if cdump in ['gdas']: - fhrs = range(fhmin, fhmax + fhout, fhout) - elif cdump in ['gfs']: - fhmax = np.max( - [config['FHMAX_GFS_00'], config['FHMAX_GFS_06'], config['FHMAX_GFS_12'], config['FHMAX_GFS_18']]) - fhout = config['FHOUT_GFS'] - fhmax_hf = config['FHMAX_HF_GFS'] - fhout_hf = config['FHOUT_HF_GFS'] - fhrs_hf = range(fhmin, fhmax_hf + fhout_hf, fhout_hf) - fhrs = list(fhrs_hf) + list(range(fhrs_hf[-1] + fhout, fhmax + fhout, fhout)) - - nfhrs_per_grp = config.get('NFHRS_PER_GROUP', 1) - ngrps = len(fhrs) // nfhrs_per_grp if len(fhrs) % nfhrs_per_grp == 0 else len(fhrs) // nfhrs_per_grp + 1 - - fhrs = [f'f{fhr:03d}' for fhr in fhrs] - fhrs = np.array_split(fhrs, ngrps) - fhrs = [fhr.tolist() for fhr in fhrs] - - grp = ' '.join(f'_{fhr[0]}-{fhr[-1]}' if len(fhr) > 1 else f'_{fhr[0]}' for fhr in fhrs) - dep = ' '.join([fhr[-1] for fhr in fhrs]) - lst = ' '.join(['_'.join(fhr) for fhr in fhrs]) - - return grp, dep, lst - def atmupp(self): return self._upptask(upp_run='forecast', task_id='atmupp') @@ -971,32 +1023,28 @@ def _upptask(self, upp_run="forecast", task_id="atmupp"): if upp_run not in VALID_UPP_RUN: raise KeyError(f"{upp_run} is invalid; UPP_RUN options are: {('|').join(VALID_UPP_RUN)}") - varname1, varname2, varname3 = 'grp', 'dep', 'lst' - varval1, varval2, varval3 = self._get_ufs_postproc_grps(self.cdump, self._configs['upp']) - var_dict = {varname1: varval1, varname2: varval2, varname3: varval3} - postenvars = self.envars.copy() - postenvar_dict = {'FHRLST': '#lst#', + postenvar_dict = {'FHR3': '#fhr#', 'UPP_RUN': upp_run} for key, value in postenvar_dict.items(): postenvars.append(rocoto.create_envar(name=key, value=str(value))) atm_hist_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_HISTORY_TMPL"]) deps = [] - data = f'{atm_hist_path}/{self.cdump}.t@Hz.atm#dep#.nc' + data = f'{atm_hist_path}/{self.run}.t@Hz.atmf#fhr#.nc' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) - data = f'{atm_hist_path}/{self.cdump}.t@Hz.sfc#dep#.nc' + data = f'{atm_hist_path}/{self.run}.t@Hz.sfcf#fhr#.nc' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) - data = f'{atm_hist_path}/{self.cdump}.t@Hz.atm.log#dep#.txt' + data = f'{atm_hist_path}/{self.run}.t@Hz.atm.logf#fhr#.txt' dep_dict = {'type': 'data', 'data': data, 'age': 60} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps, dep_condition='and') - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.run in ['gdas'] else self.run resources = self.get_resource('upp') - task_name = f'{self.cdump}{task_id}#{varname1}#' + task_name = f'{self.run}{task_id}_f#fhr#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -1008,95 +1056,86 @@ def _upptask(self, upp_run="forecast", task_id="atmupp"): 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}{task_id}', + fhrs = self._get_forecast_hours(self.run, self._configs['upp']) + fhr_var_dict = {'fhr': ' '.join([f"{fhr:03d}" for fhr in fhrs])} + + metatask_dict = {'task_name': f'{self.run}{task_id}', 'task_dict': task_dict, - 'var_dict': var_dict + 'var_dict': fhr_var_dict } task = rocoto.create_task(metatask_dict) return task - def atmprod(self): + def atmos_prod(self): + return self._atmosoceaniceprod('atmos') - varname1, varname2, varname3 = 'grp', 'dep', 'lst' - varval1, varval2, varval3 = self._get_ufs_postproc_grps(self.cdump, self._configs['atmos_products']) - var_dict = {varname1: varval1, varname2: varval2, varname3: varval3} + def ocean_prod(self): + return self._atmosoceaniceprod('ocean') - postenvars = self.envars.copy() - postenvar_dict = {'FHRLST': '#lst#'} - for key, value in postenvar_dict.items(): - postenvars.append(rocoto.create_envar(name=key, value=str(value))) + def ice_prod(self): + return self._atmosoceaniceprod('ice') - atm_master_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_MASTER_TMPL"]) - deps = [] - data = f'{atm_master_path}/{self.cdump}.t@Hz.master.grb2#dep#' - dep_dict = {'type': 'data', 'data': data, 'age': 120} - deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep=deps) - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump - resources = self.get_resource('atmos_products') + def _atmosoceaniceprod(self, component: str): - task_name = f'{self.cdump}atmprod#{varname1}#' - task_dict = {'task_name': task_name, - 'resources': resources, - 'dependency': dependencies, - 'envars': postenvars, - 'cycledef': cycledef, - 'command': f'{self.HOMEgfs}/jobs/rocoto/atmos_products.sh', - 'job_name': f'{self.pslot}_{task_name}_@H', - 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', - 'maxtries': '&MAXTRIES;' - } + products_dict = {'atmos': {'config': 'atmos_products', + 'history_path_tmpl': 'COM_ATMOS_MASTER_TMPL', + 'history_file_tmpl': f'{self.run}.t@Hz.master.grb2f#fhr#'}, + 'ocean': {'config': 'oceanice_products', + 'history_path_tmpl': 'COM_OCEAN_HISTORY_TMPL', + 'history_file_tmpl': f'{self.run}.ocean.t@Hz.6hr_avg.f#fhr_next#.nc'}, + 'ice': {'config': 'oceanice_products', + 'history_path_tmpl': 'COM_ICE_HISTORY_TMPL', + 'history_file_tmpl': f'{self.run}.ice.t@Hz.6hr_avg.f#fhr#.nc'}} - metatask_dict = {'task_name': f'{self.cdump}atmprod', - 'task_dict': task_dict, - 'var_dict': var_dict - } - - task = rocoto.create_task(metatask_dict) - - return task - - def ocnpost(self): - - varname1, varname2, varname3 = 'grp', 'dep', 'lst' - varval1, varval2, varval3 = self._get_ufs_postproc_grps(self.cdump, self._configs['ocnpost']) - var_dict = {varname1: varval1, varname2: varval2, varname3: varval3} + component_dict = products_dict[component] + config = component_dict['config'] + history_path_tmpl = component_dict['history_path_tmpl'] + history_file_tmpl = component_dict['history_file_tmpl'] postenvars = self.envars.copy() - postenvar_dict = {'FHRLST': '#lst#', - 'ROTDIR': self.rotdir} + postenvar_dict = {'FHR3': '#fhr#', 'COMPONENT': component} for key, value in postenvar_dict.items(): postenvars.append(rocoto.create_envar(name=key, value=str(value))) + history_path = self._template_to_rocoto_cycstring(self._base[history_path_tmpl]) deps = [] - atm_hist_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_HISTORY_TMPL"]) - data = f'{atm_hist_path}/{self.cdump}.t@Hz.atm.log#dep#.txt' - dep_dict = {'type': 'data', 'data': data} + data = f'{history_path}/{history_file_tmpl}' + dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.cdump}fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}fcst'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='or', dep=deps) - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump - resources = self.get_resource('ocnpost') + dependencies = rocoto.create_dependency(dep=deps, dep_condition='or') + + cycledef = 'gdas_half,gdas' if self.run in ['gdas'] else self.run + resources = self.get_resource(component_dict['config']) - task_name = f'{self.cdump}ocnpost#{varname1}#' + task_name = f'{self.run}{component}_prod_f#fhr#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': postenvars, 'cycledef': cycledef, - 'command': f'{self.HOMEgfs}/jobs/rocoto/ocnpost.sh', + 'command': f"{self.HOMEgfs}/jobs/rocoto/{config}.sh", 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}ocnpost', + fhrs = self._get_forecast_hours(self.run, self._configs[config], component) + + # ocean/ice components do not have fhr 0 as they are averaged output + if component in ['ocean', 'ice'] and 0 in fhrs: + fhrs.remove(0) + + fhr_var_dict = {'fhr': ' '.join([f"{fhr:03d}" for fhr in fhrs])} + if component in ['ocean']: + fhrs_next = fhrs[1:] + [fhrs[-1] + (fhrs[-1] - fhrs[-2])] + fhr_var_dict['fhr_next'] = ' '.join([f"{fhr:03d}" for fhr in fhrs_next]) + metatask_dict = {'task_name': f'{self.run}{component}_prod', 'task_dict': task_dict, - 'var_dict': var_dict - } + 'var_dict': fhr_var_dict} task = rocoto.create_task(metatask_dict) @@ -1106,18 +1145,18 @@ def wavepostsbs(self): deps = [] for wave_grid in self._configs['wavepostsbs']['waveGRD'].split(): wave_hist_path = self._template_to_rocoto_cycstring(self._base["COM_WAVE_HISTORY_TMPL"]) - data = f'{wave_hist_path}/{self.cdump}wave.out_grd.{wave_grid}.@Y@m@d.@H0000' + data = f'{wave_hist_path}/{self.run}wave.out_grd.{wave_grid}.@Y@m@d.@H0000' dep_dict = {'type': 'data', 'data': data} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('wavepostsbs') - task_name = f'{self.cdump}wavepostsbs' + task_name = f'{self.run}wavepostsbs' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostsbs.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1130,17 +1169,17 @@ def wavepostsbs(self): def wavepostbndpnt(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('wavepostbndpnt') - task_name = f'{self.cdump}wavepostbndpnt' + task_name = f'{self.run}wavepostbndpnt' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostbndpnt.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1152,20 +1191,24 @@ def wavepostbndpnt(self): return task def wavepostbndpntbll(self): + + # The wavepostbndpntbll job runs on forecast hours up to FHMAX_WAV_IBP + last_fhr = self._configs['wave']['FHMAX_WAV_IBP'] + deps = [] atmos_hist_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_HISTORY_TMPL"]) - data = f'{atmos_hist_path}/{self.cdump}.t@Hz.atm.logf180.txt' + data = f'{atmos_hist_path}/{self.run}.t@Hz.atm.logf{last_fhr:03d}.txt' dep_dict = {'type': 'data', 'data': data} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('wavepostbndpntbll') - task_name = f'{self.cdump}wavepostbndpntbll' + task_name = f'{self.run}wavepostbndpntbll' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostbndpntbll.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1178,20 +1221,20 @@ def wavepostbndpntbll(self): def wavepostpnt(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}fcst'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_wave_bnd: - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostbndpntbll'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostbndpntbll'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('wavepostpnt') - task_name = f'{self.cdump}wavepostpnt' + task_name = f'{self.run}wavepostpnt' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/wavepostpnt.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1204,17 +1247,17 @@ def wavepostpnt(self): def wavegempak(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostsbs'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostsbs'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('wavegempak') - task_name = f'{self.cdump}wavegempak' + task_name = f'{self.run}wavegempak' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/wavegempak.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1227,19 +1270,19 @@ def wavegempak(self): def waveawipsbulls(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostsbs'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostsbs'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostpnt'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostpnt'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('waveawipsbulls') - task_name = f'{self.cdump}waveawipsbulls' + task_name = f'{self.run}waveawipsbulls' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/waveawipsbulls.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1252,17 +1295,17 @@ def waveawipsbulls(self): def waveawipsgridded(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostsbs'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostsbs'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('waveawipsgridded') - task_name = f'{self.cdump}waveawipsgridded' + task_name = f'{self.run}waveawipsgridded' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/waveawipsgridded.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1275,17 +1318,17 @@ def waveawipsgridded(self): def postsnd(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('postsnd') - task_name = f'{self.cdump}postsnd' + task_name = f'{self.run}postsnd' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/postsnd.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1298,15 +1341,15 @@ def postsnd(self): def fbwind(self): - atmos_prod_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_GRIB_GRID_TMPL"], {'RUN': self.cdump, 'GRID': '0p25'}) + atmos_prod_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_GRIB_GRID_TMPL"], {'RUN': self.run, 'GRID': '0p25'}) deps = [] - data = f'{atmos_prod_path}/{self.cdump}.t@Hz.pgrb2.0p25.f006' + data = f'{atmos_prod_path}/{self.run}.t@Hz.pgrb2.0p25.f006' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) - data = f'{atmos_prod_path}/{self.cdump}.t@Hz.pgrb2.0p25.f012' + data = f'{atmos_prod_path}/{self.run}.t@Hz.pgrb2.0p25.f012' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) - data = f'{atmos_prod_path}/{self.cdump}.t@Hz.pgrb2.0p25.f024' + data = f'{atmos_prod_path}/{self.run}.t@Hz.pgrb2.0p25.f024' dep_dict = {'type': 'data', 'data': data, 'age': 120} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps, dep_condition='and') @@ -1317,12 +1360,12 @@ def fbwind(self): # prematurely starting with partial files. Unfortunately, the # ability to "group" post would make this more convoluted than # it should be and not worth the complexity. - task_name = f'{self.cdump}fbwind' + task_name = f'{self.run}fbwind' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/fbwind.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1334,7 +1377,7 @@ def fbwind(self): return task @staticmethod - def _get_awipsgroups(cdump, config): + def _get_awipsgroups(run, config): fhmin = config['FHMIN'] fhmax = config['FHMAX'] @@ -1342,11 +1385,10 @@ def _get_awipsgroups(cdump, config): # Get a list of all forecast hours fhrs = [] - if cdump in ['gdas']: + if run in ['gdas']: fhrs = range(fhmin, fhmax + fhout, fhout) - elif cdump in ['gfs']: - fhmax = np.max( - [config['FHMAX_GFS_00'], config['FHMAX_GFS_06'], config['FHMAX_GFS_12'], config['FHMAX_GFS_18']]) + elif run in ['gfs']: + fhmax = config['FHMAX_GFS'] fhout = config['FHOUT_GFS'] fhmax_hf = config['FHMAX_HF_GFS'] fhout_hf = config['FHOUT_HF_GFS'] @@ -1373,7 +1415,7 @@ def _get_awipsgroups(cdump, config): def awips_20km_1p0deg(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) @@ -1385,65 +1427,24 @@ def awips_20km_1p0deg(self): awipsenvars.append(rocoto.create_envar(name=key, value=str(value))) varname1, varname2, varname3 = 'grp', 'dep', 'lst' - varval1, varval2, varval3 = self._get_awipsgroups(self.cdump, self._configs['awips']) + varval1, varval2, varval3 = self._get_awipsgroups(self.run, self._configs['awips']) var_dict = {varname1: varval1, varname2: varval2, varname3: varval3} resources = self.get_resource('awips') - task_name = f'{self.cdump}awips_20km_1p0deg#{varname1}#' + task_name = f'{self.run}awips_20km_1p0deg#{varname1}#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': awipsenvars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/awips_20km_1p0deg.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}awips_20km_1p0deg', - 'task_dict': task_dict, - 'var_dict': var_dict - } - - task = rocoto.create_task(metatask_dict) - - return task - - def awips_g2(self): - - deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} - deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep=deps) - - awipsenvars = self.envars.copy() - awipsenvar_dict = {'FHRGRP': '#grp#', - 'FHRLST': '#lst#', - 'ROTDIR': self.rotdir} - for key, value in awipsenvar_dict.items(): - awipsenvars.append(rocoto.create_envar(name=key, value=str(value))) - - varname1, varname2, varname3 = 'grp', 'dep', 'lst' - varval1, varval2, varval3 = self._get_awipsgroups(self.cdump, self._configs['awips']) - var_dict = {varname1: varval1, varname2: varval2, varname3: varval3} - - resources = self.get_resource('awips') - - task_name = f'{self.cdump}awips_g2#{varname1}#' - task_dict = {'task_name': task_name, - 'resources': resources, - 'dependency': dependencies, - 'envars': awipsenvars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/awips_g2.sh', - 'job_name': f'{self.pslot}_{task_name}_@H', - 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', - 'maxtries': '&MAXTRIES;' - } - - metatask_dict = {'task_name': f'{self.cdump}awips_g2', + metatask_dict = {'task_name': f'{self.run}awips_20km_1p0deg', 'task_dict': task_dict, 'var_dict': var_dict } @@ -1455,40 +1456,52 @@ def awips_g2(self): def gempak(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmos_prod_f#fhr#'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) + gempak_vars = self.envars.copy() + gempak_dict = {'FHR3': '#fhr#'} + for key, value in gempak_dict.items(): + gempak_vars.append(rocoto.create_envar(name=key, value=str(value))) + resources = self.get_resource('gempak') - task_name = f'{self.cdump}gempak' + task_name = f'{self.run}gempak_f#fhr#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, - 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'envars': gempak_vars, + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/gempak.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - task = rocoto.create_task(task_dict) + fhrs = self._get_forecast_hours(self.run, self._configs['gempak']) + fhr_var_dict = {'fhr': ' '.join([f"{fhr:03d}" for fhr in fhrs])} + + fhr_metatask_dict = {'task_name': f'{self.run}gempak', + 'task_dict': task_dict, + 'var_dict': fhr_var_dict} + + task = rocoto.create_task(fhr_metatask_dict) return task def gempakmeta(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}gempak'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('gempak') - task_name = f'{self.cdump}gempakmeta' + task_name = f'{self.run}gempakmeta' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/gempakmeta.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1501,17 +1514,17 @@ def gempakmeta(self): def gempakmetancdc(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}gempak'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('gempak') - task_name = f'{self.cdump}gempakmetancdc' + task_name = f'{self.run}gempakmetancdc' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/gempakmetancdc.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1524,17 +1537,17 @@ def gempakmetancdc(self): def gempakncdcupapgif(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}gempak'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('gempak') - task_name = f'{self.cdump}gempakncdcupapgif' + task_name = f'{self.run}gempakncdcupapgif' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/gempakncdcupapgif.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1547,42 +1560,65 @@ def gempakncdcupapgif(self): def gempakpgrb2spec(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}npoess_pgrb2_0p5deg'} + dep_dict = {'type': 'task', 'name': f'{self.run}npoess_pgrb2_0p5deg'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) + gempak_vars = self.envars.copy() + gempak_dict = {'FHR3': '#fhr#'} + for key, value in gempak_dict.items(): + gempak_vars.append(rocoto.create_envar(name=key, value=str(value))) + resources = self.get_resource('gempak') - task_name = f'{self.cdump}gempakgrb2spec' + task_name = f'{self.run}gempakgrb2spec_f#fhr#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, - 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'envars': gempak_vars, + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/gempakgrb2spec.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - task = rocoto.create_task(task_dict) + # Override forecast lengths locally to be that of gempak goes job + local_config = self._configs['gempak'] + goes_times = { + 'FHMAX_HF_GFS': 0, + 'FHMAX_GFS': local_config['FHMAX_GOES'], + 'FHOUT_GFS': local_config['FHOUT_GOES'], + } + local_config.update(goes_times) + + fhrs = self._get_forecast_hours(self.run, local_config) + fhr_var_dict = {'fhr': ' '.join([f"{fhr:03d}" for fhr in fhrs])} + + fhr_metatask_dict = {'task_name': f'{self.run}gempakgrb2spec', + 'task_dict': task_dict, + 'var_dict': fhr_var_dict} + + task = rocoto.create_task(fhr_metatask_dict) return task def npoess_pgrb2_0p5deg(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanlprod'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlprod'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep=deps) + dep_dict = {'type': 'metatask', 'name': f'{self.run}goesupp'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps, dep_condition='and') resources = self.get_resource('npoess') - task_name = f'{self.cdump}npoess_pgrb2_0p5deg' + task_name = f'{self.run}npoess_pgrb2_0p5deg' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/npoess_pgrb2_0p5deg.sh', + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/npoess.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' @@ -1594,17 +1630,17 @@ def npoess_pgrb2_0p5deg(self): def verfozn(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}analdiag'} + dep_dict = {'type': 'task', 'name': f'{self.run}analdiag'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('verfozn') - task_name = f'{self.cdump}verfozn' + task_name = f'{self.run}verfozn' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/verfozn.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1617,17 +1653,17 @@ def verfozn(self): def verfrad(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}analdiag'} + dep_dict = {'type': 'task', 'name': f'{self.run}analdiag'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('verfrad') - task_name = f'{self.cdump}verfrad' + task_name = f'{self.run}verfrad' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/verfrad.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1640,17 +1676,17 @@ def verfrad(self): def vminmon(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}anal'} + dep_dict = {'type': 'task', 'name': f'{self.run}anal'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('vminmon') - task_name = f'{self.cdump}vminmon' + task_name = f'{self.run}vminmon' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/vminmon.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1663,17 +1699,17 @@ def vminmon(self): def tracker(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('tracker') - task_name = f'{self.cdump}tracker' + task_name = f'{self.run}tracker' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/tracker.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1686,17 +1722,17 @@ def tracker(self): def genesis(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('genesis') - task_name = f'{self.cdump}genesis' + task_name = f'{self.run}genesis' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/genesis.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1709,17 +1745,17 @@ def genesis(self): def genesis_fsu(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('genesis_fsu') - task_name = f'{self.cdump}genesis_fsu' + task_name = f'{self.run}genesis_fsu' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/genesis_fsu.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1732,17 +1768,17 @@ def genesis_fsu(self): def fit2obs(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('fit2obs') - task_name = f'{self.cdump}fit2obs' + task_name = f'{self.run}fit2obs' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/fit2obs.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1755,13 +1791,14 @@ def fit2obs(self): def metp(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}arch'} + dep_dict = {'type': 'task', 'name': f'{self.run}arch'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) metpenvars = self.envars.copy() if self.app_config.mode in ['cycled']: - metpenvar_dict = {'SDATE_GFS': self._base.get('SDATE_GFS').strftime("%Y%m%d%H")} + metpenvar_dict = {'SDATE_GFS': self._base.get('SDATE_GFS').strftime("%Y%m%d%H"), + 'EDATE_GFS': self._base.get('EDATE_GFS').strftime("%Y%m%d%H")} elif self.app_config.mode in ['forecast-only']: metpenvar_dict = {'SDATE_GFS': self._base.get('SDATE').strftime("%Y%m%d%H")} metpenvar_dict['METPCASE'] = '#metpcase#' @@ -1774,19 +1811,19 @@ def metp(self): resources = self.get_resource('metp') - task_name = f'{self.cdump}metp#{varname1}#' + task_name = f'{self.run}metp#{varname1}#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': metpenvars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/metp.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}metp', + metatask_dict = {'task_name': f'{self.run}metp', 'task_dict': task_dict, 'var_dict': var_dict } @@ -1797,17 +1834,17 @@ def metp(self): def mos_stn_prep(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('mos_stn_prep') - task_name = f'{self.cdump}mos_stn_prep' + task_name = f'{self.run}mos_stn_prep' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_stn_prep.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1820,17 +1857,17 @@ def mos_stn_prep(self): def mos_grd_prep(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('mos_grd_prep') - task_name = f'{self.cdump}mos_grd_prep' + task_name = f'{self.run}mos_grd_prep' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_grd_prep.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1843,17 +1880,17 @@ def mos_grd_prep(self): def mos_ext_stn_prep(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('mos_ext_stn_prep') - task_name = f'{self.cdump}mos_ext_stn_prep' + task_name = f'{self.run}mos_ext_stn_prep' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_ext_stn_prep.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1866,17 +1903,17 @@ def mos_ext_stn_prep(self): def mos_ext_grd_prep(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('mos_ext_grd_prep') - task_name = f'{self.cdump}mos_ext_grd_prep' + task_name = f'{self.run}mos_ext_grd_prep' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_ext_grd_prep.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1889,17 +1926,17 @@ def mos_ext_grd_prep(self): def mos_stn_fcst(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_stn_prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_stn_prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('mos_stn_fcst') - task_name = f'{self.cdump}mos_stn_fcst' + task_name = f'{self.run}mos_stn_fcst' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_stn_fcst.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1912,20 +1949,20 @@ def mos_stn_fcst(self): def mos_grd_fcst(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_stn_prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_stn_prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_grd_prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_grd_prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('mos_grd_fcst') - task_name = f'{self.cdump}mos_grd_fcst' + task_name = f'{self.run}mos_grd_fcst' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_grd_fcst.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1938,20 +1975,20 @@ def mos_grd_fcst(self): def mos_ext_stn_fcst(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_ext_stn_prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_ext_stn_prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_stn_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_stn_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('mos_ext_stn_fcst') - task_name = f'{self.cdump}mos_ext_stn_fcst' + task_name = f'{self.run}mos_ext_stn_fcst' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_ext_stn_fcst.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1964,23 +2001,23 @@ def mos_ext_stn_fcst(self): def mos_ext_grd_fcst(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_ext_stn_prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_ext_stn_prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_ext_grd_prep'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_ext_grd_prep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_grd_fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_grd_fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('mos_ext_grd_fcst') - task_name = f'{self.cdump}mos_ext_grd_fcst' + task_name = f'{self.run}mos_ext_grd_fcst' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_ext_grd_fcst.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -1993,17 +2030,17 @@ def mos_ext_grd_fcst(self): def mos_stn_prdgen(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_stn_fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_stn_fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('mos_stn_prdgen') - task_name = f'{self.cdump}mos_stn_prdgen' + task_name = f'{self.run}mos_stn_prdgen' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_stn_prdgen.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2016,20 +2053,20 @@ def mos_stn_prdgen(self): def mos_grd_prdgen(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_grd_fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_grd_fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_stn_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_stn_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('mos_grd_prdgen') - task_name = f'{self.cdump}mos_grd_prdgen' + task_name = f'{self.run}mos_grd_prdgen' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_grd_prdgen.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2042,20 +2079,20 @@ def mos_grd_prdgen(self): def mos_ext_stn_prdgen(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_ext_stn_fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_ext_stn_fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_stn_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_stn_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('mos_ext_stn_prdgen') - task_name = f'{self.cdump}mos_ext_stn_prdgen' + task_name = f'{self.run}mos_ext_stn_prdgen' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_ext_stn_prdgen.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2068,23 +2105,23 @@ def mos_ext_stn_prdgen(self): def mos_ext_grd_prdgen(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_ext_grd_fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_ext_grd_fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_grd_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_grd_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_ext_stn_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_ext_stn_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('mos_ext_grd_prdgen') - task_name = f'{self.cdump}mos_ext_grd_prdgen' + task_name = f'{self.run}mos_ext_grd_prdgen' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_ext_grd_prdgen.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2097,17 +2134,17 @@ def mos_ext_grd_prdgen(self): def mos_wx_prdgen(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_grd_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_grd_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('mos_wx_prdgen') - task_name = f'{self.cdump}mos_wx_prdgen' + task_name = f'{self.run}mos_wx_prdgen' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_wx_prdgen.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2120,20 +2157,20 @@ def mos_wx_prdgen(self): def mos_wx_ext_prdgen(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_ext_grd_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_ext_grd_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_wx_prdgen'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_wx_prdgen'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('mos_wx_ext_prdgen') - task_name = f'{self.cdump}mos_wx_ext_prdgen' + task_name = f'{self.run}mos_wx_ext_prdgen' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/mos_wx_ext_prdgen.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2146,79 +2183,75 @@ def mos_wx_ext_prdgen(self): def arch(self): deps = [] - dependencies = [] if self.app_config.mode in ['cycled']: - if self.cdump in ['gfs']: - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanlprod'} + if self.run in ['gfs']: + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlprod'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_vminmon: - dep_dict = {'type': 'task', 'name': f'{self.cdump}vminmon'} + dep_dict = {'type': 'task', 'name': f'{self.run}vminmon'} deps.append(rocoto.add_dependency(dep_dict)) - elif self.cdump in ['gdas']: # Block for handling half cycle dependencies - deps2 = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanlprod'} - deps2.append(rocoto.add_dependency(dep_dict)) + elif self.run in ['gdas']: + dep_dict = {'type': 'task', 'name': f'{self.run}atmanlprod'} + deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_fit2obs: - dep_dict = {'type': 'task', 'name': f'{self.cdump}fit2obs'} - deps2.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': f'{self.run}fit2obs'} + deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_verfozn: - dep_dict = {'type': 'task', 'name': f'{self.cdump}verfozn'} - deps2.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': f'{self.run}verfozn'} + deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_verfrad: - dep_dict = {'type': 'task', 'name': f'{self.cdump}verfrad'} - deps2.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': f'{self.run}verfrad'} + deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_vminmon: - dep_dict = {'type': 'task', 'name': f'{self.cdump}vminmon'} - deps2.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='and', dep=deps2) - dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} - dependencies.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='or', dep=dependencies) - if self.cdump in ['gfs'] and self.app_config.do_tracker: - dep_dict = {'type': 'task', 'name': f'{self.cdump}tracker'} + dep_dict = {'type': 'task', 'name': f'{self.run}vminmon'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.run in ['gfs'] and self.app_config.do_tracker: + dep_dict = {'type': 'task', 'name': f'{self.run}tracker'} deps.append(rocoto.add_dependency(dep_dict)) - if self.cdump in ['gfs'] and self.app_config.do_genesis: - dep_dict = {'type': 'task', 'name': f'{self.cdump}genesis'} + if self.run in ['gfs'] and self.app_config.do_genesis: + dep_dict = {'type': 'task', 'name': f'{self.run}genesis'} deps.append(rocoto.add_dependency(dep_dict)) - if self.cdump in ['gfs'] and self.app_config.do_genesis_fsu: - dep_dict = {'type': 'task', 'name': f'{self.cdump}genesis_fsu'} + if self.run in ['gfs'] and self.app_config.do_genesis_fsu: + dep_dict = {'type': 'task', 'name': f'{self.run}genesis_fsu'} deps.append(rocoto.add_dependency(dep_dict)) # Post job dependencies - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}atmprod'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}atmos_prod'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_wave: - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostsbs'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostsbs'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostpnt'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostpnt'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_wave_bnd: - dep_dict = {'type': 'task', 'name': f'{self.cdump}wavepostbndpnt'} + dep_dict = {'type': 'task', 'name': f'{self.run}wavepostbndpnt'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_ocean: - if self.app_config.mode in ['forecast-only']: # TODO: fix ocnpost to run in cycled mode - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}ocnpost'} + if self.run in ['gfs']: + dep_dict = {'type': 'metatask', 'name': f'{self.run}ocean_prod'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_ice: + if self.run in ['gfs']: + dep_dict = {'type': 'metatask', 'name': f'{self.run}ice_prod'} deps.append(rocoto.add_dependency(dep_dict)) # MOS job dependencies - if self.cdump in ['gfs'] and self.app_config.do_mos: + if self.run in ['gfs'] and self.app_config.do_mos: mos_jobs = ["stn_prep", "grd_prep", "ext_stn_prep", "ext_grd_prep", "stn_fcst", "grd_fcst", "ext_stn_fcst", "ext_grd_fcst", "stn_prdgen", "grd_prdgen", "ext_stn_prdgen", "ext_grd_prdgen", "wx_prdgen", "wx_ext_prdgen"] for job in mos_jobs: - dep_dict = {'type': 'task', 'name': f'{self.cdump}mos_{job}'} + dep_dict = {'type': 'task', 'name': f'{self.run}mos_{job}'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='and', dep=deps + dependencies) - - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('arch') - task_name = f'{self.cdump}arch' + task_name = f'{self.run}arch' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': cycledef, + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/arch.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2232,22 +2265,37 @@ def arch(self): # Cleanup def cleanup(self): deps = [] - if 'enkf' in self.cdump: - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}eamn'} + if 'enkf' in self.run: + dep_dict = {'type': 'metatask', 'name': f'{self.run}eamn'} deps.append(rocoto.add_dependency(dep_dict)) else: - dep_dict = {'type': 'task', 'name': f'{self.cdump}arch'} + dep_dict = {'type': 'task', 'name': f'{self.run}arch'} deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_gempak: + if self.run in ['gdas']: + dep_dict = {'type': 'task', 'name': f'{self.run}gempakmetancdc'} + deps.append(rocoto.add_dependency(dep_dict)) + elif self.run in ['gfs']: + dep_dict = {'type': 'task', 'name': f'{self.run}gempakmeta'} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': f'{self.run}gempakncdcupapgif'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_goes: + dep_dict = {'type': 'metatask', 'name': f'{self.run}gempakgrb2spec'} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'task', 'name': f'{self.run}npoess_pgrb2_0p5deg'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('cleanup') - task_name = f'{self.cdump}cleanup' + task_name = f'{self.run}cleanup' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/cleanup.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2261,19 +2309,19 @@ def cleanup(self): # Start of ensemble tasks def eobs(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}prep'} + dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf","")}prep'} deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', '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('eobs') - task_name = f'{self.cdump}eobs' + task_name = f'{self.run}eobs' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/eobs.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2286,32 +2334,33 @@ def eobs(self): def eomg(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}eobs'} + dep_dict = {'type': 'task', 'name': f'{self.run}eobs'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) eomgenvars = self.envars.copy() - eomgenvars.append(rocoto.create_envar(name='ENSGRP', value='#grp#')) - - groups = self._get_hybgroups(self._base['NMEM_ENS'], self._configs['eobs']['NMEM_EOMGGRP']) - - var_dict = {'grp': groups} + eomgenvars_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#' + } + for key, value in eomgenvars_dict.items(): + eomgenvars.append(rocoto.create_envar(name=key, value=str(value))) resources = self.get_resource('eomg') - task_name = f'{self.cdump}eomg#grp#' + task_name = f'{self.run}eomg_mem#member#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': eomgenvars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/eomg.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}eomn', - 'var_dict': var_dict, + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(1, self.nmem + 1)])} + metatask_dict = {'task_name': f'{self.run}eomg', + 'var_dict': member_var_dict, 'task_dict': task_dict, } @@ -2321,17 +2370,17 @@ def eomg(self): def ediag(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}eobs'} + dep_dict = {'type': 'task', 'name': f'{self.run}eobs'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('ediag') - task_name = f'{self.cdump}ediag' + task_name = f'{self.run}ediag' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/ediag.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2345,19 +2394,19 @@ def ediag(self): def eupd(self): deps = [] if self.app_config.lobsdiag_forenkf: - dep_dict = {'type': 'task', 'name': f'{self.cdump}ediag'} + dep_dict = {'type': 'task', 'name': f'{self.run}ediag'} else: - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}eomn'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}eomg'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('eupd') - task_name = f'{self.cdump}eupd' + task_name = f'{self.run}eupd' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/eupd.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2370,7 +2419,7 @@ def eupd(self): def atmensanlinit(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}prepatmiodaobs'} + dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf","")}prepatmiodaobs'} deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} deps.append(rocoto.add_dependency(dep_dict)) @@ -2378,7 +2427,7 @@ def atmensanlinit(self): cycledef = "gdas" resources = self.get_resource('atmensanlinit') - task_name = f'{self.cdump}atmensanlinit' + task_name = f'{self.run}atmensanlinit' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -2394,23 +2443,49 @@ def atmensanlinit(self): return task - def atmensanlrun(self): + def atmensanlletkf(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmensanlinit'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmensanlinit'} deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', '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('atmensanlrun') - task_name = f'{self.cdump}atmensanlrun' + resources = self.get_resource('atmensanlletkf') + task_name = f'{self.run}atmensanlletkf' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), - 'command': f'{self.HOMEgfs}/jobs/rocoto/atmensanlrun.sh', + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/atmensanlletkf.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + task = rocoto.create_task(task_dict) + + return task + + def atmensanlfv3inc(self): + + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.run}atmensanlletkf'} + deps.append(rocoto.add_dependency(dep_dict)) + dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', '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('atmensanlfv3inc') + task_name = f'{self.run}atmensanlfv3inc' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': self.envars, + 'cycledef': self.run.replace('enkf', ''), + 'command': f'{self.HOMEgfs}/jobs/rocoto/atmensanlfv3inc.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' @@ -2423,17 +2498,17 @@ def atmensanlrun(self): def atmensanlfinal(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmensanlrun'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmensanlfv3inc'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('atmensanlfinal') - task_name = f'{self.cdump}atmensanlfinal' + task_name = f'{self.run}atmensanlfinal' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/atmensanlfinal.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2470,12 +2545,12 @@ def _get_ecengroups(): return grp, dep, lst deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}analcalc'} + dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf","")}analcalc'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_jediatmens: - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmensanlfinal'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmensanlfinal'} else: - dep_dict = {'type': 'task', 'name': f'{self.cdump}eupd'} + dep_dict = {'type': 'task', 'name': f'{self.run}eupd'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) @@ -2491,19 +2566,19 @@ def _get_ecengroups(): resources = self.get_resource('ecen') - task_name = f'{self.cdump}ecen#{varname1}#' + task_name = f'{self.run}ecen#{varname1}#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': ecenenvars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/ecen.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}ecmn', + metatask_dict = {'task_name': f'{self.run}ecmn', 'var_dict': var_dict, 'task_dict': task_dict } @@ -2513,25 +2588,25 @@ def _get_ecengroups(): def esfc(self): - # eupd_cdump = 'gdas' if 'gdas' in self.app_config.eupd_cdumps else 'gfs' + # eupd_run = 'gdas' if 'gdas' in self.app_config.eupd_runs else 'gfs' deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}analcalc'} + dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf","")}analcalc'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_jediatmens: - dep_dict = {'type': 'task', 'name': f'{self.cdump}atmensanlfinal'} + dep_dict = {'type': 'task', 'name': f'{self.run}atmensanlfinal'} else: - dep_dict = {'type': 'task', 'name': f'{self.cdump}eupd'} + dep_dict = {'type': 'task', 'name': f'{self.run}eupd'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('esfc') - task_name = f'{self.cdump}esfc' + task_name = f'{self.run}esfc' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': self.envars, - 'cycledef': self.cdump.replace('enkf', ''), + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/esfc.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', @@ -2545,9 +2620,9 @@ def esfc(self): def efcs(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}ecmn'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}ecmn'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.cdump}esfc'} + dep_dict = {'type': 'task', 'name': f'{self.run}esfc'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': f"-{timedelta_to_HMS(self._base['cycle_interval'])}"} @@ -2555,31 +2630,30 @@ def efcs(self): dependencies = rocoto.create_dependency(dep_condition='or', dep=dependencies) efcsenvars = self.envars.copy() - efcsenvars.append(rocoto.create_envar(name='ENSGRP', value='#grp#')) + efcsenvars_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#' + } + for key, value in efcsenvars_dict.items(): + efcsenvars.append(rocoto.create_envar(name=key, value=str(value))) - groups = self._get_hybgroups(self._base['NMEM_ENS'], self._configs['efcs']['NMEM_EFCSGRP']) - - if self.cdump == "enkfgfs": - groups = self._get_hybgroups(self._base['NMEM_ENS_GFS'], self._configs['efcs']['NMEM_EFCSGRP_GFS']) - cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump.replace('enkf', '') + cycledef = 'gdas_half,gdas' if self.run in ['enkfgdas'] else self.run.replace('enkf', '') resources = self.get_resource('efcs') - var_dict = {'grp': groups} - - task_name = f'{self.cdump}efcs#grp#' + task_name = f'{self.run}fcst_mem#member#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': efcsenvars, 'cycledef': cycledef, - 'command': f'{self.HOMEgfs}/jobs/rocoto/efcs.sh', + 'command': f'{self.HOMEgfs}/jobs/rocoto/fcst.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}efmn', - 'var_dict': var_dict, + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(1, self.nmem + 1)])} + metatask_dict = {'task_name': f'{self.run}fcst', + 'var_dict': member_var_dict, 'task_dict': task_dict } @@ -2589,19 +2663,19 @@ def efcs(self): def echgres(self): - self._is_this_a_gdas_task(self.cdump, 'echgres') + self._is_this_a_gdas_task(self.run, 'echgres') deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}fcst'} + dep_dict = {'type': 'task', 'name': f'{self.run.replace("enkf","")}fcst'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'task', 'name': f'{self.cdump}efcs01'} + dep_dict = {'type': 'task', 'name': f'{self.run}fcst_mem001'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) - cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.run in ['enkfgdas'] else self.run resources = self.get_resource('echgres') - task_name = f'{self.cdump}echgres' + task_name = f'{self.run}echgres' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -2623,7 +2697,7 @@ def _get_eposgroups(epos): fhmin = epos['FHMIN_ENKF'] fhmax = epos['FHMAX_ENKF'] fhout = epos['FHOUT_ENKF'] - if self.cdump == "enkfgfs": + if self.run == "enkfgfs": fhmax = epos['FHMAX_ENKF_GFS'] fhout = epos['FHOUT_ENKF_GFS'] fhrs = range(fhmin, fhmax + fhout, fhout) @@ -2642,7 +2716,7 @@ def _get_eposgroups(epos): return grp, dep, lst deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}efmn'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}fcst'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) @@ -2656,11 +2730,11 @@ def _get_eposgroups(epos): varval1, varval2, varval3 = _get_eposgroups(self._configs['epos']) var_dict = {varname1: varval1, varname2: varval2, varname3: varval3} - cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump.replace('enkf', '') + cycledef = 'gdas_half,gdas' if self.run in ['enkfgdas'] else self.run.replace('enkf', '') resources = self.get_resource('epos') - task_name = f'{self.cdump}epos#{varname1}#' + task_name = f'{self.run}epos#{varname1}#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, @@ -2672,7 +2746,7 @@ def _get_eposgroups(epos): 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}epmn', + metatask_dict = {'task_name': f'{self.run}epmn', 'var_dict': var_dict, 'task_dict': task_dict } @@ -2684,34 +2758,34 @@ def _get_eposgroups(epos): def earc(self): deps = [] - dep_dict = {'type': 'metatask', 'name': f'{self.cdump}epmn'} + dep_dict = {'type': 'metatask', 'name': f'{self.run}epmn'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) earcenvars = self.envars.copy() earcenvars.append(rocoto.create_envar(name='ENSGRP', value='#grp#')) - groups = self._get_hybgroups(self._base['NMEM_ENS'], self._configs['earc']['NMEM_EARCGRP'], start_index=0) - - cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump.replace('enkf', '') + # Integer division is floor division, but we need ceiling division + n_groups = -(self.nmem // -self._configs['earc']['NMEM_EARCGRP']) + groups = ' '.join([f'{grp:02d}' for grp in range(0, n_groups + 1)]) resources = self.get_resource('earc') var_dict = {'grp': groups} - task_name = f'{self.cdump}earc#grp#' + task_name = f'{self.run}earc#grp#' task_dict = {'task_name': task_name, 'resources': resources, 'dependency': dependencies, 'envars': earcenvars, - 'cycledef': cycledef, + 'cycledef': self.run.replace('enkf', ''), 'command': f'{self.HOMEgfs}/jobs/rocoto/earc.sh', 'job_name': f'{self.pslot}_{task_name}_@H', 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', 'maxtries': '&MAXTRIES;' } - metatask_dict = {'task_name': f'{self.cdump}eamn', + metatask_dict = {'task_name': f'{self.run}eamn', 'var_dict': var_dict, 'task_dict': task_dict } diff --git a/workflow/rocoto/rocoto.py b/workflow/rocoto/rocoto.py index 679c0952ed..0abb56cafb 100644 --- a/workflow/rocoto/rocoto.py +++ b/workflow/rocoto/rocoto.py @@ -8,6 +8,7 @@ ABOUT: Helper module to create tasks, metatasks, and dependencies for Rocoto + Rocoto documentation is available at https://christopherwharrop.github.io/rocoto ''' __all__ = ['create_task', @@ -182,7 +183,8 @@ def add_dependency(dep_dict: Dict[str, Any]) -> str: 'data': _add_data_tag, 'cycleexist': _add_cycle_tag, 'streq': _add_streq_tag, - 'strneq': _add_streq_tag} + 'strneq': _add_streq_tag, + 'sh': _add_sh_tag} dep_condition = dep_dict.get('condition', None) dep_type = dep_dict.get('type', None) @@ -333,6 +335,31 @@ def _add_streq_tag(dep_dict: Dict[str, Any]) -> str: return string +def _add_sh_tag(dep_dict: Dict[str, Any]) -> str: + """ + create a simple shell execution tag + :param: dep_dict: shell command to execute + :type dep_dict: dict + :return: Rocoto simple shell execution dependency + :rtype: str + """ + + shell = dep_dict.get('shell', '/bin/sh') + command = dep_dict.get('command', 'echo "Hello World"') + + if '@' in command: + offset_string_b = f'' + offset_string_e = '' + else: + offset_string_b = '' + offset_string_e = '' + cmd = f'{offset_string_b}{command}{offset_string_e}' + + string = f'{cmd}' + + return string + + def _traverse(o, tree_types=(list, tuple)): """ Traverse through a list of lists or tuples and yield the value diff --git a/workflow/rocoto/tasks_emc.py b/workflow/rocoto/tasks_emc.py index 1c79de0c19..353d2aa943 100644 --- a/workflow/rocoto/tasks_emc.py +++ b/workflow/rocoto/tasks_emc.py @@ -1,9 +1,11 @@ #!/usr/bin/env python3 +import copy import numpy as np from applications.applications import AppConfig import rocoto.rocoto as rocoto from wxflow import Template, TemplateConstants, to_timedelta +from typing import List __all__ = ['Tasks'] @@ -12,21 +14,21 @@ class Tasks: SERVICE_TASKS = ['arch', 'earc'] VALID_TASKS = ['aerosol_init', 'stage_ic', 'prep', 'anal', 'sfcanl', 'analcalc', 'analdiag', 'arch', "cleanup", - 'prepatmiodaobs', 'atmanlinit', 'atmanlrun', 'atmanlfinal', + 'prepatmiodaobs', 'atmanlinit', 'atmanlvar', 'atmanlfv3inc', 'atmanlfinal', 'prepoceanobs', - 'ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy', + 'ocnanalprep', 'marinebmat', 'ocnanalrun', 'ocnanalecen', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy', 'earc', 'ecen', 'echgres', 'ediag', 'efcs', 'eobs', 'eomg', 'epos', 'esfc', 'eupd', - 'atmensanlinit', 'atmensanlrun', 'atmensanlfinal', + 'atmensanlinit', 'atmensanlletkf', 'atmensanlfv3inc', 'atmensanlfinal', 'aeroanlinit', 'aeroanlrun', 'aeroanlfinal', - 'preplandobs', 'landanl', + 'prepsnowobs', 'snowanl', 'fcst', - 'atmanlupp', 'atmanlprod', 'atmupp', 'atmprod', 'goesupp', - 'ocnpost', + 'atmanlupp', 'atmanlprod', 'atmupp', 'goesupp', + 'atmos_prod', 'ocean_prod', 'ice_prod', 'verfozn', 'verfrad', 'vminmon', 'metp', 'tracker', 'genesis', 'genesis_fsu', - 'postsnd', 'awips_g2', 'awips_20km_1p0deg', 'fbwind', + 'postsnd', 'awips_20km_1p0deg', 'fbwind', 'gempak', 'gempakmeta', 'gempakmetancdc', 'gempakncdcupapgif', 'gempakpgrb2spec', 'npoess_pgrb2_0p5deg' 'waveawipsbulls', 'waveawipsgridded', 'wavegempak', 'waveinit', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt', 'wavepostsbs', 'waveprep', @@ -35,32 +37,43 @@ class Tasks: 'mos_stn_fcst', 'mos_grd_fcst', 'mos_ext_stn_fcst', 'mos_ext_grd_fcst', 'mos_stn_prdgen', 'mos_grd_prdgen', 'mos_ext_stn_prdgen', 'mos_ext_grd_prdgen', 'mos_wx_prdgen', 'mos_wx_ext_prdgen'] - def __init__(self, app_config: AppConfig, cdump: str) -> None: + def __init__(self, app_config: AppConfig, run: str) -> None: - self.app_config = app_config - self.cdump = cdump + self.app_config = copy.deepcopy(app_config) + self.run = run + # Re-source the configs with RUN specified + print(f"Source configs with RUN={run}") + self._configs = self.app_config.source_configs(run=run, log=False) + # Update the base config for the application + self._configs['base'] = self.app_config.update_base(self._configs['base']) # Save dict_configs and base in the internal state (never know where it may be needed) - self._configs = self.app_config.configs self._base = self._configs['base'] + self.HOMEgfs = self._base['HOMEgfs'] self.rotdir = self._base['ROTDIR'] self.pslot = self._base['PSLOT'] + if self.run == "enkfgfs": + self.nmem = int(self._base['NMEM_ENS_GFS']) + else: + self.nmem = int(self._base['NMEM_ENS']) self._base['cycle_interval'] = to_timedelta(f'{self._base["assim_freq"]}H') self.n_tiles = 6 # TODO - this needs to be elsewhere + # DATAROOT is set by prod_envir in ops. Here, we use `STMP` to construct DATAROOT + dataroot_str = f"{self._base.get('STMP')}/RUNDIRS/{self._base.get('PSLOT')}/{self.run}.@Y@m@d@H" envar_dict = {'RUN_ENVIR': self._base.get('RUN_ENVIR', 'emc'), 'HOMEgfs': self.HOMEgfs, 'EXPDIR': self._base.get('EXPDIR'), 'NET': self._base.get('NET'), - 'CDUMP': self.cdump, - 'RUN': self.cdump, + 'RUN': self.run, 'CDATE': '@Y@m@d@H', 'PDY': '@Y@m@d', 'cyc': '@H', 'COMROOT': self._base.get('COMROOT'), - 'DATAROOT': self._base.get('DATAROOT')} + 'DATAROOT': dataroot_str} + self.envars = self._set_envars(envar_dict) @staticmethod @@ -72,12 +85,6 @@ def _set_envars(envar_dict) -> list: return envars - @staticmethod - def _get_hybgroups(nens: int, nmem_per_group: int, start_index: int = 1): - ngrps = nens / nmem_per_group - groups = ' '.join([f'{x:02d}' for x in range(start_index, int(ngrps) + 1)]) - return groups - def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> str: ''' Takes a string templated with ${ } and converts it into a string suitable @@ -87,8 +94,8 @@ def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> Variables substitued by default: ${ROTDIR} -> '&ROTDIR;' - ${RUN} -> self.cdump - ${DUMP} -> self.cdump + ${RUN} -> self.run + ${DUMP} -> self.run ${MEMDIR} -> '' ${YMD} -> '@Y@m@d' ${HH} -> '@H' @@ -110,8 +117,8 @@ def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> # Defaults rocoto_conversion_dict = { 'ROTDIR': '&ROTDIR;', - 'RUN': self.cdump, - 'DUMP': self.cdump, + 'RUN': self.run, + 'DUMP': self.run, 'MEMDIR': '', 'YMD': '@Y@m@d', 'HH': '@H' @@ -123,12 +130,49 @@ def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> TemplateConstants.DOLLAR_CURLY_BRACE, rocoto_conversion_dict.get) + @staticmethod + def _get_forecast_hours(run, config, component='atmos') -> List[str]: + # Make a local copy of the config to avoid modifying the original + local_config = config.copy() + + # Ocean/Ice components do not have a HF output option like the atmosphere + if component in ['ocean', 'ice']: + local_config['FHMAX_HF_GFS'] = 0 + + if component in ['ocean']: + local_config['FHOUT_HF_GFS'] = config['FHOUT_OCN_GFS'] + local_config['FHOUT_GFS'] = config['FHOUT_OCN_GFS'] + local_config['FHOUT'] = config['FHOUT_OCN'] + + if component in ['ice']: + local_config['FHOUT_HF_GFS'] = config['FHOUT_ICE_GFS'] + local_config['FHOUT_GFS'] = config['FHOUT_ICE_GFS'] + local_config['FHOUT'] = config['FHOUT_ICE'] + + fhmin = local_config['FHMIN'] + + # Get a list of all forecast hours + fhrs = [] + if run in ['gdas']: + fhmax = local_config['FHMAX'] + fhout = local_config['FHOUT'] + fhrs = list(range(fhmin, fhmax + fhout, fhout)) + elif run in ['gfs', 'gefs']: + fhmax = local_config['FHMAX_GFS'] + fhout = local_config['FHOUT_GFS'] + fhmax_hf = local_config['FHMAX_HF_GFS'] + fhout_hf = local_config['FHOUT_HF_GFS'] + fhrs_hf = range(fhmin, fhmax_hf + fhout_hf, fhout_hf) + fhrs = list(fhrs_hf) + list(range(fhrs_hf[-1] + fhout, fhmax + fhout, fhout)) + + return fhrs + def get_resource(self, task_name): """ Given a task name (task_name) and its configuration (task_names), return a dictionary of resources (task_resource) used by the task. Task resource dictionary includes: - account, walltime, cores, nodes, ppn, threads, memory, queue, partition, native + account, walltime, ntasks, nodes, ppn, threads, memory, queue, partition, native """ scheduler = self.app_config.scheduler @@ -137,32 +181,28 @@ def get_resource(self, task_name): account = task_config['ACCOUNT'] - walltime = task_config[f'wtime_{task_name}'] - if self.cdump in ['gfs'] and f'wtime_{task_name}_gfs' in task_config.keys(): - walltime = task_config[f'wtime_{task_name}_gfs'] + walltime = task_config[f'walltime'] + ntasks = task_config[f'ntasks'] + ppn = task_config[f'tasks_per_node'] - cores = task_config[f'npe_{task_name}'] - if self.cdump in ['gfs'] and f'npe_{task_name}_gfs' in task_config.keys(): - cores = task_config[f'npe_{task_name}_gfs'] + nodes = int(np.ceil(float(ntasks) / float(ppn))) - ppn = task_config[f'npe_node_{task_name}'] - if self.cdump in ['gfs'] and f'npe_node_{task_name}_gfs' in task_config.keys(): - ppn = task_config[f'npe_node_{task_name}_gfs'] + threads = task_config[f'threads_per_task'] - nodes = int(np.ceil(float(cores) / float(ppn))) + # Memory is not required + memory = task_config.get(f'memory', None) - threads = task_config[f'nth_{task_name}'] - if self.cdump in ['gfs'] and f'nth_{task_name}_gfs' in task_config.keys(): - threads = task_config[f'nth_{task_name}_gfs'] - - memory = task_config.get(f'memory_{task_name}', None) if scheduler in ['pbspro']: if task_config.get('prepost', False): memory += ':prepost=true' native = None if scheduler in ['pbspro']: - native = '-l debug=true,place=vscatter' + # Set place=vscatter by default and debug=true if DEBUG_POSTSCRIPT="YES" + if self._base['DEBUG_POSTSCRIPT']: + native = '-l debug=true,place=vscatter' + else: + native = '-l place=vscatter' # Set either exclusive or shared - default on WCOSS2 is exclusive when not set if task_config.get('is_exclusive', False): native += ':exclhost' @@ -170,6 +210,10 @@ def get_resource(self, task_name): native += ':shared' elif scheduler in ['slurm']: native = '--export=NONE' + if task_config['RESERVATION'] != "": + native += '' if task_name in Tasks.SERVICE_TASKS else ' --reservation=' + task_config['RESERVATION'] + if task_config.get('CLUSTERS', "") not in ["", '@CLUSTERS@']: + native += ' --clusters=' + task_config['CLUSTERS'] queue = task_config['QUEUE_SERVICE'] if task_name in Tasks.SERVICE_TASKS else task_config['QUEUE'] @@ -181,7 +225,7 @@ def get_resource(self, task_name): task_resource = {'account': account, 'walltime': walltime, 'nodes': nodes, - 'cores': cores, + 'ntasks': ntasks, 'ppn': ppn, 'threads': threads, 'memory': memory, diff --git a/workflow/rocoto/tasks_gsl.py b/workflow/rocoto/tasks_gsl.py index 371721bbb9..3ebd2d9437 100644 --- a/workflow/rocoto/tasks_gsl.py +++ b/workflow/rocoto/tasks_gsl.py @@ -1,9 +1,11 @@ #!/usr/bin/env python3 +import copy import numpy as np from applications.applications import AppConfig import rocoto.rocoto as rocoto from wxflow import Template, TemplateConstants, to_timedelta +from typing import List __all__ = ['Tasks'] @@ -12,21 +14,21 @@ class Tasks: SERVICE_TASKS = ['arch', 'earc'] VALID_TASKS = ['aerosol_init', 'stage_ic', 'prep', 'anal', 'sfcanl', 'analcalc', 'analdiag', 'arch', "cleanup", - 'prepatmiodaobs', 'atmanlinit', 'atmanlrun', 'atmanlfinal', + 'prepatmiodaobs', 'atmanlinit', 'atmanlvar', 'atmanlfv3inc', 'atmanlfinal', 'prepoceanobs', - 'ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy', + 'ocnanalprep', 'marinebmat', 'ocnanalrun', 'ocnanalecen', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy', 'earc', 'ecen', 'echgres', 'ediag', 'efcs', 'eobs', 'eomg', 'epos', 'esfc', 'eupd', - 'atmensanlinit', 'atmensanlrun', 'atmensanlfinal', + 'atmensanlinit', 'atmensanlletkf', 'atmensanlfv3inc', 'atmensanlfinal', 'aeroanlinit', 'aeroanlrun', 'aeroanlfinal', - 'preplandobs', 'landanl', + 'prepsnowobs', 'snowanl', 'fcst', - 'atmanlupp', 'atmanlprod', 'atmupp', 'atmprod', 'goesupp', - 'ocnpost', + 'atmanlupp', 'atmanlprod', 'atmupp', 'goesupp', + 'atmos_prod', 'ocean_prod', 'ice_prod', 'verfozn', 'verfrad', 'vminmon', 'metp', 'tracker', 'genesis', 'genesis_fsu', - 'postsnd', 'awips_g2', 'awips_20km_1p0deg', 'fbwind', + 'postsnd', 'awips_20km_1p0deg', 'fbwind', 'gempak', 'gempakmeta', 'gempakmetancdc', 'gempakncdcupapgif', 'gempakpgrb2spec', 'npoess_pgrb2_0p5deg' 'waveawipsbulls', 'waveawipsgridded', 'wavegempak', 'waveinit', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt', 'wavepostsbs', 'waveprep', @@ -35,33 +37,45 @@ class Tasks: 'mos_stn_fcst', 'mos_grd_fcst', 'mos_ext_stn_fcst', 'mos_ext_grd_fcst', 'mos_stn_prdgen', 'mos_grd_prdgen', 'mos_ext_stn_prdgen', 'mos_ext_grd_prdgen', 'mos_wx_prdgen', 'mos_wx_ext_prdgen'] - def __init__(self, app_config: AppConfig, cdump: str) -> None: + def __init__(self, app_config: AppConfig, run: str) -> None: - self.app_config = app_config - self.cdump = cdump + self.app_config = copy.deepcopy(app_config) + self.run = run + # Re-source the configs with RUN specified + print(f"Source configs with RUN={run}") + self._configs = self.app_config.source_configs(run=run, log=False) + # Update the base config for the application + self._configs['base'] = self.app_config.update_base(self._configs['base']) # Save dict_configs and base in the internal state (never know where it may be needed) - self._configs = self.app_config.configs self._base = self._configs['base'] + self.HOMEgfs = self._base['HOMEgfs'] self.rotdir = self._base['ROTDIR'] self.pslot = self._base['PSLOT'] + if self.run == "enkfgfs": + self.nmem = int(self._base['NMEM_ENS_GFS']) + else: + self.nmem = int(self._base['NMEM_ENS']) self._base['cycle_interval'] = to_timedelta(f'{self._base["assim_freq"]}H') self.n_tiles = 6 # TODO - this needs to be elsewhere + # DATAROOT is set by prod_envir in ops. Here, we use `STMP` to construct DATAROOT + dataroot_str = f"{self._base.get('STMP')}/RUNDIRS/{self._base.get('PSLOT')}/{self.run}.@Y@m@d@H" envar_dict = {'RUN_ENVIR': self._base.get('RUN_ENVIR', 'emc'), 'HOMEgfs': self.HOMEgfs, 'EXPDIR': self._base.get('EXPDIR'), +#JKH 'ROTDIR': self._base.get('ROTDIR'), 'NET': self._base.get('NET'), - 'CDUMP': self.cdump, - 'RUN': self.cdump, + 'RUN': self.run, 'CDATE': '@Y@m@d@H', 'PDY': '@Y@m@d', 'cyc': '@H', 'COMROOT': self._base.get('COMROOT'), - 'DATAROOT': self._base.get('DATAROOT')} + 'DATAROOT': dataroot_str} + self.envars = self._set_envars(envar_dict) @staticmethod @@ -73,12 +87,6 @@ def _set_envars(envar_dict) -> list: return envars - @staticmethod - def _get_hybgroups(nens: int, nmem_per_group: int, start_index: int = 1): - ngrps = nens / nmem_per_group - groups = ' '.join([f'{x:02d}' for x in range(start_index, int(ngrps) + 1)]) - return groups - def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> str: ''' Takes a string templated with ${ } and converts it into a string suitable @@ -88,8 +96,8 @@ def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> Variables substitued by default: ${ROTDIR} -> '&ROTDIR;' - ${RUN} -> self.cdump - ${DUMP} -> self.cdump + ${RUN} -> self.run + ${DUMP} -> self.run ${MEMDIR} -> '' ${YMD} -> '@Y@m@d' ${HH} -> '@H' @@ -111,8 +119,8 @@ def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> # Defaults rocoto_conversion_dict = { 'ROTDIR': '&ROTDIR;', - 'RUN': self.cdump, - 'DUMP': self.cdump, + 'RUN': self.run, + 'DUMP': self.run, 'MEMDIR': '', 'YMD': '@Y@m@d', 'HH': '@H' @@ -124,12 +132,49 @@ def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> TemplateConstants.DOLLAR_CURLY_BRACE, rocoto_conversion_dict.get) + @staticmethod + def _get_forecast_hours(run, config, component='atmos') -> List[str]: + # Make a local copy of the config to avoid modifying the original + local_config = config.copy() + + # Ocean/Ice components do not have a HF output option like the atmosphere + if component in ['ocean', 'ice']: + local_config['FHMAX_HF_GFS'] = 0 + + if component in ['ocean']: + local_config['FHOUT_HF_GFS'] = config['FHOUT_OCN_GFS'] + local_config['FHOUT_GFS'] = config['FHOUT_OCN_GFS'] + local_config['FHOUT'] = config['FHOUT_OCN'] + + if component in ['ice']: + local_config['FHOUT_HF_GFS'] = config['FHOUT_ICE_GFS'] + local_config['FHOUT_GFS'] = config['FHOUT_ICE_GFS'] + local_config['FHOUT'] = config['FHOUT_ICE'] + + fhmin = local_config['FHMIN'] + + # Get a list of all forecast hours + fhrs = [] + if run in ['gdas']: + fhmax = local_config['FHMAX'] + fhout = local_config['FHOUT'] + fhrs = list(range(fhmin, fhmax + fhout, fhout)) + elif run in ['gfs', 'gefs']: + fhmax = local_config['FHMAX_GFS'] + fhout = local_config['FHOUT_GFS'] + fhmax_hf = local_config['FHMAX_HF_GFS'] + fhout_hf = local_config['FHOUT_HF_GFS'] + fhrs_hf = range(fhmin, fhmax_hf + fhout_hf, fhout_hf) + fhrs = list(fhrs_hf) + list(range(fhrs_hf[-1] + fhout, fhmax + fhout, fhout)) + + return fhrs + def get_resource(self, task_name): """ Given a task name (task_name) and its configuration (task_names), return a dictionary of resources (task_resource) used by the task. Task resource dictionary includes: - account, walltime, cores, nodes, ppn, threads, memory, queue, partition, native + account, walltime, ntasks, nodes, ppn, threads, memory, queue, partition, native """ scheduler = self.app_config.scheduler @@ -138,39 +183,40 @@ def get_resource(self, task_name): account = task_config['ACCOUNT'] - walltime = task_config[f'wtime_{task_name}'] - if self.cdump in ['gfs'] and f'wtime_{task_name}_gfs' in task_config.keys(): - walltime = task_config[f'wtime_{task_name}_gfs'] + walltime = task_config[f'walltime'] + ntasks = task_config[f'ntasks'] + ppn = task_config[f'tasks_per_node'] - cores = task_config[f'npe_{task_name}'] - if self.cdump in ['gfs'] and f'npe_{task_name}_gfs' in task_config.keys(): - cores = task_config[f'npe_{task_name}_gfs'] + nodes = int(np.ceil(float(ntasks) / float(ppn))) - ppn = task_config[f'npe_node_{task_name}'] - if self.cdump in ['gfs'] and f'npe_node_{task_name}_gfs' in task_config.keys(): - ppn = task_config[f'npe_node_{task_name}_gfs'] + threads = task_config[f'threads_per_task'] - nodes = int(np.ceil(float(cores) / float(ppn))) + # Memory is not required + memory = task_config.get(f'memory', None) - threads = task_config[f'nth_{task_name}'] - if self.cdump in ['gfs'] and f'nth_{task_name}_gfs' in task_config.keys(): - threads = task_config[f'nth_{task_name}_gfs'] - - memory = task_config.get(f'memory_{task_name}', None) if scheduler in ['pbspro']: if task_config.get('prepost', False): memory += ':prepost=true' native = None if scheduler in ['pbspro']: - native = '-l debug=true,place=vscatter' + # Set place=vscatter by default and debug=true if DEBUG_POSTSCRIPT="YES" + if self._base['DEBUG_POSTSCRIPT']: + native = '-l debug=true,place=vscatter' + else: + native = '-l place=vscatter' # Set either exclusive or shared - default on WCOSS2 is exclusive when not set if task_config.get('is_exclusive', False): native += ':exclhost' else: native += ':shared' elif scheduler in ['slurm']: +#JKH native = '--export=NONE' native = '&NATIVE_STR;' + if task_config['RESERVATION'] != "": + native += '' if task_name in Tasks.SERVICE_TASKS else ' --reservation=' + task_config['RESERVATION'] + if task_config.get('CLUSTERS', "") not in ["", '@CLUSTERS@']: + native += ' --clusters=' + task_config['CLUSTERS'] queue = task_config['QUEUE_SERVICE'] if task_name in Tasks.SERVICE_TASKS else task_config['QUEUE'] @@ -182,7 +228,7 @@ def get_resource(self, task_name): task_resource = {'account': account, 'walltime': walltime, 'nodes': nodes, - 'cores': cores, + 'ntasks': ntasks, 'ppn': ppn, 'threads': threads, 'memory': memory, diff --git a/workflow/rocoto/workflow_tasks.py b/workflow/rocoto/workflow_tasks.py index 84af898d36..78c31dba1b 100644 --- a/workflow/rocoto/workflow_tasks.py +++ b/workflow/rocoto/workflow_tasks.py @@ -14,10 +14,10 @@ def get_wf_tasks(app_config: AppConfig) -> List: """ tasks = [] - # Loop over all keys of cycles (CDUMP) - for cdump, cdump_tasks in app_config.task_names.items(): - task_obj = tasks_factory.create(app_config.net, app_config, cdump) # create Task object based on cdump - for task_name in cdump_tasks: + # Loop over all keys of cycles (RUN) + for run, run_tasks in app_config.task_names.items(): + task_obj = tasks_factory.create(app_config.net, app_config, run) # create Task object based on run + for task_name in run_tasks: tasks.append(task_obj.get_task(task_name)) return tasks diff --git a/workflow/rocoto_viewer.py b/workflow/rocoto_viewer.py index 95dd9e76dd..459381f601 100755 --- a/workflow/rocoto_viewer.py +++ b/workflow/rocoto_viewer.py @@ -1360,7 +1360,7 @@ def main(screen): screen.refresh() curses.mousemask(1) curses.noecho() - for i in range(0, curses.COLORS): + for i in range(0, curses.COLORS - 1): curses.init_pair(i + 1, i, curses.COLOR_BLACK) if i == 4: curses.init_pair(i + 1, i, curses.COLOR_WHITE) diff --git a/workflow/setup_expt.py b/workflow/setup_expt.py index 7d7ac84aad..3e70df0f02 100755 --- a/workflow/setup_expt.py +++ b/workflow/setup_expt.py @@ -73,10 +73,10 @@ def fill_ROTDIR_cycled(host, inputs): # Test if we are using the new COM structure or the old flat one for ICs if inputs.start in ['warm']: - pathstr = os.path.join(inputs.icsdir, f'{inputs.cdump}.{rdatestr[:8]}', + pathstr = os.path.join(inputs.icsdir, f'{inputs.run}.{rdatestr[:8]}', rdatestr[8:], 'model_data', 'atmos') else: - pathstr = os.path.join(inputs.icsdir, f'{inputs.cdump}.{idatestr[:8]}', + pathstr = os.path.join(inputs.icsdir, f'{inputs.run}.{idatestr[:8]}', idatestr[8:], 'model_data', 'atmos') if os.path.isdir(pathstr): @@ -96,6 +96,7 @@ def fill_ROTDIR_cycled(host, inputs): dst_ocn_rst_dir = os.path.join('model_data', 'ocean', 'restart') dst_ocn_anl_dir = os.path.join('analysis', 'ocean') dst_ice_rst_dir = os.path.join('model_data', 'ice', 'restart') + dst_ice_anl_dir = os.path.join('analysis', 'ice') dst_atm_anl_dir = os.path.join('analysis', 'atmos') if flat_structure: @@ -111,6 +112,7 @@ def fill_ROTDIR_cycled(host, inputs): src_ocn_rst_dir = os.path.join('ocean', 'RESTART') src_ocn_anl_dir = 'ocean' src_ice_rst_dir = os.path.join('ice', 'RESTART') + src_ice_anl_dir = dst_ice_anl_dir src_atm_anl_dir = 'atmos' else: src_atm_dir = dst_atm_dir @@ -118,6 +120,7 @@ def fill_ROTDIR_cycled(host, inputs): src_ocn_rst_dir = dst_ocn_rst_dir src_ocn_anl_dir = dst_ocn_anl_dir src_ice_rst_dir = dst_ice_rst_dir + src_ice_anl_dir = dst_ice_anl_dir src_atm_anl_dir = dst_atm_anl_dir def link_files_from_src_to_dst(src_dir, dst_dir): @@ -129,8 +132,8 @@ def link_files_from_src_to_dst(src_dir, dst_dir): # Link ensemble member initial conditions if inputs.nens > 0: - previous_cycle_dir = f'enkf{inputs.cdump}.{rdatestr[:8]}/{rdatestr[8:]}' - current_cycle_dir = f'enkf{inputs.cdump}.{idatestr[:8]}/{idatestr[8:]}' + previous_cycle_dir = f'enkf{inputs.run}.{rdatestr[:8]}/{rdatestr[8:]}' + current_cycle_dir = f'enkf{inputs.run}.{idatestr[:8]}/{idatestr[8:]}' for ii in range(1, inputs.nens + 1): memdir = f'mem{ii:03d}' @@ -152,7 +155,7 @@ def link_files_from_src_to_dst(src_dir, dst_dir): link_files_from_src_to_dst(src_dir, dst_dir) # First 1/2 cycle needs a MOM6 increment - incfile = f'enkf{inputs.cdump}.t{idatestr[8:]}z.ocninc.nc' + incfile = f'enkf{inputs.run}.t{idatestr[8:]}z.ocninc.nc' src_file = os.path.join(inputs.icsdir, current_cycle_dir, memdir, src_ocn_anl_dir, incfile) dst_file = os.path.join(rotdir, current_cycle_dir, memdir, dst_ocn_anl_dir, incfile) makedirs_if_missing(os.path.join(rotdir, current_cycle_dir, memdir, dst_ocn_anl_dir)) @@ -173,8 +176,8 @@ def link_files_from_src_to_dst(src_dir, dst_dir): link_files_from_src_to_dst(src_dir, dst_dir) # Link deterministic initial conditions - previous_cycle_dir = f'{inputs.cdump}.{rdatestr[:8]}/{rdatestr[8:]}' - current_cycle_dir = f'{inputs.cdump}.{idatestr[:8]}/{idatestr[8:]}' + previous_cycle_dir = f'{inputs.run}.{rdatestr[:8]}/{rdatestr[8:]}' + current_cycle_dir = f'{inputs.run}.{idatestr[:8]}/{idatestr[8:]}' # Link atmospheric files if inputs.start in ['warm']: @@ -195,7 +198,7 @@ def link_files_from_src_to_dst(src_dir, dst_dir): link_files_from_src_to_dst(src_dir, dst_dir) # First 1/2 cycle needs a MOM6 increment - incfile = f'{inputs.cdump}.t{idatestr[8:]}z.ocninc.nc' + incfile = f'{inputs.run}.t{idatestr[8:]}z.ocninc.nc' src_file = os.path.join(inputs.icsdir, current_cycle_dir, src_ocn_anl_dir, incfile) dst_file = os.path.join(rotdir, current_cycle_dir, dst_ocn_anl_dir, incfile) makedirs_if_missing(os.path.join(rotdir, current_cycle_dir, dst_ocn_anl_dir)) @@ -203,8 +206,9 @@ def link_files_from_src_to_dst(src_dir, dst_dir): # Link ice files if do_ice: - dst_dir = os.path.join(rotdir, previous_cycle_dir, dst_ice_rst_dir) - src_dir = os.path.join(inputs.icsdir, previous_cycle_dir, src_ice_rst_dir) + # First 1/2 cycle needs a CICE6 analysis restart + src_dir = os.path.join(inputs.icsdir, current_cycle_dir, src_ice_anl_dir) + dst_dir = os.path.join(rotdir, current_cycle_dir, src_ice_anl_dir) makedirs_if_missing(dst_dir) link_files_from_src_to_dst(src_dir, dst_dir) @@ -220,10 +224,29 @@ def link_files_from_src_to_dst(src_dir, dst_dir): dst_dir = os.path.join(rotdir, current_cycle_dir, dst_atm_anl_dir) makedirs_if_missing(dst_dir) for ftype in ['abias', 'abias_pc', 'abias_air', 'radstat']: - fname = f'{inputs.cdump}.t{idatestr[8:]}z.{ftype}' + fname = f'{inputs.run}.t{idatestr[8:]}z.{ftype}' src_file = os.path.join(src_dir, fname) if os.path.exists(src_file): os.symlink(src_file, os.path.join(dst_dir, fname)) + # First 1/2 cycle also needs a atmos increment if doing warm start + if inputs.start in ['warm']: + for ftype in ['atmi003.nc', 'atminc.nc', 'atmi009.nc']: + fname = f'{inputs.run}.t{idatestr[8:]}z.{ftype}' + src_file = os.path.join(src_dir, fname) + if os.path.exists(src_file): + os.symlink(src_file, os.path.join(dst_dir, fname)) + if inputs.nens > 0: + current_cycle_dir = f'enkf{inputs.run}.{idatestr[:8]}/{idatestr[8:]}' + for ii in range(1, inputs.nens + 1): + memdir = f'mem{ii:03d}' + src_dir = os.path.join(inputs.icsdir, current_cycle_dir, memdir, src_atm_anl_dir) + dst_dir = os.path.join(rotdir, current_cycle_dir, memdir, dst_atm_anl_dir) + makedirs_if_missing(dst_dir) + for ftype in ['ratmi003.nc', 'ratminc.nc', 'ratmi009.nc']: + fname = f'enkf{inputs.run}.t{idatestr[8:]}z.{ftype}' + src_file = os.path.join(src_dir, fname) + if os.path.exists(src_file): + os.symlink(src_file, os.path.join(dst_dir, fname)) return @@ -245,12 +268,6 @@ def fill_EXPDIR(inputs): expdir = os.path.join(inputs.expdir, inputs.pslot) configs = glob.glob(f'{configdir}/config.*') - exclude_configs = ['base', 'base.emc.dyn', 'base.nco.static', 'fv3.nco.static'] - for exclude in exclude_configs: - try: - configs.remove(f'{configdir}/config.{exclude}') - except ValueError: - pass if len(configs) == 0: raise IOError(f'no config files found in {configdir}') for config in configs: @@ -270,6 +287,8 @@ def _update_defaults(dict_in: dict) -> dict: data = AttrDict(host.info, **inputs.__dict__) data.HOMEgfs = _top yaml_path = inputs.yaml + if not os.path.exists(yaml_path): + raise IOError(f'YAML file does not exist, check path:' + yaml_path) yaml_dict = _update_defaults(AttrDict(parse_j2yaml(yaml_path, data))) # First update config.base @@ -288,7 +307,8 @@ def _update_defaults(dict_in: dict) -> dict: def edit_baseconfig(host, inputs, yaml_dict): """ - Parses and populates the templated `config.base.emc.dyn` to `config.base` + Parses and populates the templated `HOMEgfs/parm/config//config.base` + to `EXPDIR/pslot/config.base` """ tmpl_dict = { @@ -316,7 +336,8 @@ def edit_baseconfig(host, inputs, yaml_dict): "@EXP_WARM_START@": is_warm_start, "@MODE@": inputs.mode, "@gfs_cyc@": inputs.gfs_cyc, - "@APP@": inputs.app + "@APP@": inputs.app, + "@NMEM_ENS@": getattr(inputs, 'nens', 0) } tmpl_dict = dict(tmpl_dict, **extend_dict) @@ -324,7 +345,6 @@ def edit_baseconfig(host, inputs, yaml_dict): if getattr(inputs, 'nens', 0) > 0: extend_dict = { "@CASEENS@": f'C{inputs.resensatmos}', - "@NMEM_ENS@": inputs.nens, } tmpl_dict = dict(tmpl_dict, **extend_dict) @@ -340,7 +360,7 @@ def edit_baseconfig(host, inputs, yaml_dict): except KeyError: pass - base_input = f'{inputs.configdir}/config.base.emc.dyn' + base_input = f'{inputs.configdir}/config.base' base_output = f'{inputs.expdir}/{inputs.pslot}/config.base' edit_config(base_input, base_output, tmpl_dict) @@ -383,7 +403,7 @@ def input_args(*argv): Method to collect user arguments for `setup_expt.py` """ - ufs_apps = ['ATM', 'ATMA', 'ATMW', 'S2S', 'S2SA', 'S2SW'] + ufs_apps = ['ATM', 'ATMA', 'ATMW', 'S2S', 'S2SA', 'S2SW', 'S2SWA'] def _common_args(parser): parser.add_argument('--pslot', help='parallel experiment name', @@ -399,12 +419,14 @@ def _common_args(parser): parser.add_argument('--idate', help='starting date of experiment, initial conditions must exist!', required=True, type=lambda dd: to_datetime(dd)) parser.add_argument('--edate', help='end date experiment', required=True, type=lambda dd: to_datetime(dd)) + parser.add_argument('--overwrite', help='overwrite previously created experiment (if it exists)', + action='store_true', required=False) return parser def _gfs_args(parser): parser.add_argument('--start', help='restart mode: warm or cold', type=str, choices=['warm', 'cold'], required=False, default='cold') - parser.add_argument('--cdump', help='CDUMP to start the experiment', + parser.add_argument('--run', help='RUN to start the experiment', type=str, required=False, default='gdas') # --configdir is hidden from help parser.add_argument('--configdir', help=SUPPRESS, type=str, required=False, default=os.path.join(_top, 'parm/config/gfs')) @@ -429,7 +451,7 @@ def _gfs_or_gefs_ensemble_args(parser): def _gfs_or_gefs_forecast_args(parser): parser.add_argument('--app', help='UFS application', type=str, - choices=ufs_apps + ['S2SWA'], required=False, default='ATM') + choices=ufs_apps, required=False, default='ATM') parser.add_argument('--gfs_cyc', help='Number of forecasts per day', type=int, choices=[1, 2, 4], default=1, required=False) return parser @@ -493,17 +515,19 @@ def _gefs_args(parser): return parser.parse_args(list(*argv) if len(argv) else None) -def query_and_clean(dirname): +def query_and_clean(dirname, force_clean=False): """ Method to query if a directory exists and gather user input for further action """ create_dir = True if os.path.exists(dirname): - print() - print(f'directory already exists in {dirname}') - print() - overwrite = input('Do you wish to over-write [y/N]: ') + print(f'\ndirectory already exists in {dirname}') + if force_clean: + overwrite = True + print(f'removing directory ........ {dirname}\n') + else: + overwrite = input('Do you wish to over-write [y/N]: ') create_dir = True if overwrite in [ 'y', 'yes', 'Y', 'YES'] else False if create_dir: @@ -553,8 +577,8 @@ def main(*argv): rotdir = os.path.join(user_inputs.comroot, user_inputs.pslot) expdir = os.path.join(user_inputs.expdir, user_inputs.pslot) - create_rotdir = query_and_clean(rotdir) - create_expdir = query_and_clean(expdir) + create_rotdir = query_and_clean(rotdir, force_clean=user_inputs.overwrite) + create_expdir = query_and_clean(expdir, force_clean=user_inputs.overwrite) if create_rotdir: makedirs_if_missing(rotdir) @@ -565,6 +589,11 @@ def main(*argv): fill_EXPDIR(user_inputs) update_configs(host, user_inputs) + print(f"*" * 100) + print(f'EXPDIR: {expdir}') + print(f'ROTDIR: {rotdir}') + print(f"*" * 100) + if __name__ == '__main__': From 146bd4c9ec8c2e6d646572328e97cd55309d730c Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Fri, 20 Sep 2024 01:13:55 +0000 Subject: [PATCH 2/8] Update experiment directory. --- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aero | 9 +- .../rt_v17p8_ugwpv1_c3_mynn/config.aeroanl | 17 +- .../config.aeroanlfinal | 2 +- .../config.aeroanlinit | 2 +- .../rt_v17p8_ugwpv1_c3_mynn/config.aeroanlrun | 2 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.anal | 70 +- .../rt_v17p8_ugwpv1_c3_mynn/config.analcalc | 6 +- .../rt_v17p8_ugwpv1_c3_mynn/config.atmanl | 31 +- .../config.atmanlfv3inc | 14 + .../rt_v17p8_ugwpv1_c3_mynn/config.atmanlinit | 1 + .../rt_v17p8_ugwpv1_c3_mynn/config.atmanlvar | 11 + .../rt_v17p8_ugwpv1_c3_mynn/config.atmensanl | 15 +- .../config.atmensanlfv3inc | 14 + .../config.atmensanlinit | 1 + .../config.atmensanlletkf | 11 + .../config.atmos_products | 14 +- .../rt_v17p8_ugwpv1_c3_mynn/config.awips | 3 - FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base | 220 +- .../rt_v17p8_ugwpv1_c3_mynn/config.base.emc | 483 ++++ .../rt_v17p8_ugwpv1_c3_mynn/config.base.hera | 485 ++++ .../rt_v17p8_ugwpv1_c3_mynn/config.cleanup | 7 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.com | 26 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.earc | 20 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.efcs | 60 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eobs | 3 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.epos | 3 - FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.esfc | 13 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eupd | 2 +- .../rt_v17p8_ugwpv1_c3_mynn/config.fbwind | 11 + FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst | 162 +- .../rt_v17p8_ugwpv1_c3_mynn/config.fit2obs | 4 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ice | 5 + .../rt_v17p8_ugwpv1_c3_mynn/config.landanl | 4 +- .../config.marineanalletkf | 18 + .../rt_v17p8_ugwpv1_c3_mynn/config.marinebmat | 11 + FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.metp | 13 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.nsst | 5 + .../config.oceanice_products | 15 + FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocn | 13 +- .../rt_v17p8_ugwpv1_c3_mynn/config.ocnanal | 20 +- .../config.ocnanalecen | 11 + .../rt_v17p8_ugwpv1_c3_mynn/config.postsnd | 1 - FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prep | 15 +- .../config.prepatmiodaobs | 3 - .../config.prepobsaero | 17 + .../config.prepoceanobs | 15 +- .../config.prepsnowobs | 21 + .../rt_v17p8_ugwpv1_c3_mynn/config.resources | 2156 +++++++++-------- .../config.resources.GAEA | 27 + .../config.resources.HERA | 35 + .../config.resources.HERCULES | 16 + .../config.resources.JET | 52 + .../config.resources.ORION | 17 + .../config.resources.S4 | 59 + .../config.resources.WCOSS2 | 59 + .../rt_v17p8_ugwpv1_c3_mynn/config.sfcanl | 5 + .../rt_v17p8_ugwpv1_c3_mynn/config.snowanl | 30 + .../rt_v17p8_ugwpv1_c3_mynn/config.stage_ic | 22 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs | 441 ++-- .../config.ufs_c768_12x12_2th_1wg40wt | 441 ++-- .../config.ufs_c768_16x16_2th_2wg40wt | 441 ++-- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.upp | 2 +- .../rt_v17p8_ugwpv1_c3_mynn/config.verfozn | 7 +- .../rt_v17p8_ugwpv1_c3_mynn/config.verfrad | 5 +- .../rt_v17p8_ugwpv1_c3_mynn/config.vminmon | 5 +- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wave | 64 +- .../config.wavepostbndpnt | 2 +- .../config.wavepostbndpntbll | 2 +- .../config.wavepostpnt | 2 +- .../config.wavepostsbs | 3 +- .../rt_v17p8_ugwpv1_c3_mynn/config.waveprep | 2 +- .../rt_pygraf_centos_dev1.xml | 134 - .../rt_pygraf_global_ugwpv1_c3_mynn.xml | 134 - .../rt_v17p8_ugwpv1_c3_mynn.crontab | 5 - .../rt_v17p8_ugwpv1_c3_mynn.xml | 228 -- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds | 27 - .../rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml | 134 - workflow/rt_c3_mynn.sh | 8 +- 78 files changed, 3974 insertions(+), 2500 deletions(-) create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlfv3inc create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlvar create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlfv3inc create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlletkf create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.emc create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.hera create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fbwind create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marineanalletkf create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marinebmat create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.oceanice_products create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanalecen create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepobsaero create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepsnowobs create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.GAEA create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERA create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERCULES create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.JET create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.ORION create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.S4 create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.WCOSS2 create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.snowanl delete mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml delete mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml delete mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab delete mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml delete mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds delete mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aero b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aero index 32993554b4..2fae019574 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aero +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aero @@ -20,6 +20,9 @@ case ${machine} in "WCOSS2") AERO_INPUTS_DIR="/lfs/h2/emc/global/noscrub/emc.global/data/gocart_emissions" ;; + "GAEA") + AERO_INPUTS_DIR="/gpfs/f5/epic/proj-shared/global/glopara/data/gocart_emissions" + ;; "JET") AERO_INPUTS_DIR="/lfs4/HFIP/hfv3gfs/glopara/data/gocart_emissions" ;; @@ -30,12 +33,12 @@ case ${machine} in esac export AERO_INPUTS_DIR -export AERO_DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table.aero" -export AERO_FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table.aero" +export AERO_DIAG_TABLE="${PARMgfs}/ufs/fv3/diag_table.aero" +export AERO_FIELD_TABLE="${PARMgfs}/ufs/fv3/field_table.aero" # Biomass burning emission dataset. Choose from: gbbepx, qfed, none export AERO_EMIS_FIRE="qfed" # Directory containing GOCART configuration files -export AERO_CONFIG_DIR="${HOMEgfs}/parm/ufs/gocart" +export AERO_CONFIG_DIR="${PARMgfs}/ufs/gocart" # Aerosol convective scavenging factors (list of string array elements) # Element syntax: ':'. Use = * to set default factor for all aerosol tracers diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanl b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanl index 634d8c55b2..ac6e80ee55 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanl +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanl @@ -6,25 +6,26 @@ echo "BEGIN: config.aeroanl" export CASE_ANL=${CASE} -export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/aero/obs/config/ -export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/aero/obs/lists/gdas_aero_prototype.yaml +export OBS_LIST="${PARMgfs}/gdas/aero/obs/lists/gdas_aero.yaml.j2" export STATICB_TYPE='identity' -export BERROR_YAML=${HOMEgfs}/sorc/gdas.cd/parm/aero/berror/staticb_${STATICB_TYPE}.yaml -export FIXgdas=${HOMEgfs}/fix/gdas -export BERROR_DATA_DIR=${FIXgdas}/bump/aero/${CASE_ANL}/ +export BERROR_YAML="${PARMgfs}/gdas/aero/berror/staticb_${STATICB_TYPE}.yaml.j2" +export BERROR_DATA_DIR="${FIXgfs}/gdas/bump/aero/${CASE_ANL}/" export BERROR_DATE="20160630.000000" +export CRTM_FIX_YAML="${PARMgfs}/gdas/aero_crtm_coeff.yaml.j2" +export JEDI_FIX_YAML="${PARMgfs}/gdas/aero_jedi_fix.yaml.j2" + export io_layout_x=1 export io_layout_y=1 -export JEDIEXE=${HOMEgfs}/exec/fv3jedi_var.x +export JEDIEXE="${EXECgfs}/gdas.x" if [[ "${DOIAU}" == "YES" ]]; then export aero_bkg_times="3,6,9" - export AEROVARYAML=${HOMEgfs}/sorc/gdas.cd/parm/aero/variational/3dvar_fgat_gfs_aero.yaml + export JEDIYAML="${PARMgfs}/gdas/aero/variational/3dvar_fgat_gfs_aero.yaml.j2" else export aero_bkg_times="6" - export AEROVARYAML=${HOMEgfs}/sorc/gdas.cd/parm/aero/variational/3dvar_gfs_aero.yaml + export JEDIYAML="${PARMgfs}/gdas/aero/variational/3dvar_gfs_aero.yaml.j2" fi echo "END: config.aeroanl" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlfinal b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlfinal index 230ec5205a..34e5d8f116 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlfinal +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlfinal @@ -6,5 +6,5 @@ echo "BEGIN: config.aeroanlfinal" # Get task specific resources -. $EXPDIR/config.resources aeroanlfinal +source "${EXPDIR}/config.resources" aeroanlfinal echo "END: config.aeroanlfinal" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlinit b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlinit index 72175b8d0c..7036d3d27b 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlinit +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlinit @@ -6,5 +6,5 @@ echo "BEGIN: config.aeroanlinit" # Get task specific resources -. $EXPDIR/config.resources aeroanlinit +source "${EXPDIR}/config.resources" aeroanlinit echo "END: config.aeroanlinit" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlrun b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlrun index da13df2831..012e5b79f3 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlrun +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.aeroanlrun @@ -6,6 +6,6 @@ echo "BEGIN: config.aeroanlrun" # Get task specific resources -. $EXPDIR/config.resources aeroanlrun +source "${EXPDIR}/config.resources" aeroanlrun echo "END: config.aeroanlrun" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.anal b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.anal index e3a17f9c6a..27ff8742e4 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.anal +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.anal @@ -12,20 +12,13 @@ if [[ ${DONST} = "YES" ]]; then . ${EXPDIR}/config.nsst fi -if [[ "${CDUMP}" = "gfs" ]] ; then +if [[ "${RUN}" == "gfs" ]] ; then export USE_RADSTAT="NO" # This can be only used when bias correction is not-zero. export GENDIAG="NO" export SETUP='diag_rad=.false.,diag_pcp=.false.,diag_conv=.false.,diag_ozone=.false.,write_diag(3)=.false.,niter(2)=100,' export DIAG_TARBALL="YES" fi -export npe_gsi=${npe_anal} - -if [[ "${CDUMP}" == "gfs" ]] ; then - export npe_gsi=${npe_anal_gfs} - export nth_anal=${nth_anal_gfs} -fi - # Set parameters specific to L127 if [[ ${LEVS} = "128" ]]; then export GRIDOPTS="nlayers(63)=1,nlayers(64)=1," @@ -45,51 +38,58 @@ export AMSR2BF=${AMSR2BF:-/dev/null} # Set default values for info files and observation error # NOTE: Remember to set PRVT in config.prep as OBERROR is set below -export CONVINFO=${FIXgsi}/global_convinfo.txt -export OZINFO=${FIXgsi}/global_ozinfo.txt -export SATINFO=${FIXgsi}/global_satinfo.txt -export OBERROR=${FIXgsi}/prepobs_errtable.global - +export CONVINFO=${FIXgfs}/gsi/global_convinfo.txt +export OZINFO=${FIXgfs}/gsi/global_ozinfo.txt +export SATINFO=${FIXgfs}/gsi/global_satinfo.txt +export OBERROR=${FIXgfs}/gsi/prepobs_errtable.global + +if [[ ${GSI_SOILANAL} = "YES" ]]; then + export hofx_2m_sfcfile=".true." + export reducedgrid=".false." # not possible for sfc analysis, Jeff Whitaker says it's not useful anyway + export paranc=".false." # temporary until sfc io coded for parance (PR being prepared by T. Gichamo) + export CONVINFO=${FIXgfs}/gsi/global_convinfo_2mObs.txt + export ANAVINFO=${FIXgfs}/gsi/global_anavinfo_soilanal.l127.txt +fi # Use experimental dumps in EMC GFS v16 parallels if [[ ${RUN_ENVIR} == "emc" ]]; then # Set info files and prepobs.errtable.global for GFS v16 retrospective parallels if [[ "${PDY}${cyc}" -ge "2019021900" && "${PDY}${cyc}" -lt "2019110706" ]]; then - export CONVINFO=${FIXgsi}/gfsv16_historical/global_convinfo.txt.2019021900 - export OBERROR=${FIXgsi}/gfsv16_historical/prepobs_errtable.global.2019021900 + export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2019021900 + export OBERROR=${FIXgfs}/gsi/gfsv16_historical/prepobs_errtable.global.2019021900 fi # Place GOES-15 AMVs in monitor, assimilate GOES-17 AMVs, assimilate KOMPSAT-5 gps if [[ "${PDY}${cyc}" -ge "2019110706" && "${PDY}${cyc}" -lt "2020040718" ]]; then - export CONVINFO=${FIXgsi}/gfsv16_historical/global_convinfo.txt.2019110706 - export OBERROR=${FIXgsi}/gfsv16_historical/prepobs_errtable.global.2019110706 + export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2019110706 + export OBERROR=${FIXgfs}/gsi/gfsv16_historical/prepobs_errtable.global.2019110706 fi # Assimilate 135 (T) & 235 (uv) Canadian AMDAR observations if [[ "${PDY}${cyc}" -ge "2020040718" && "${PDY}${cyc}" -lt "2020052612" ]]; then - export CONVINFO=${FIXgsi}/gfsv16_historical/global_convinfo.txt.2020040718 - export OBERROR=${FIXgsi}/gfsv16_historical/prepobs_errtable.global.2020040718 + export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2020040718 + export OBERROR=${FIXgfs}/gsi/gfsv16_historical/prepobs_errtable.global.2020040718 fi # Assimilate COSMIC-2 if [[ "${PDY}${cyc}" -ge "2020052612" && "${PDY}${cyc}" -lt "2020082412" ]]; then - export CONVINFO=${FIXgsi}/gfsv16_historical/global_convinfo.txt.2020052612 - export OBERROR=${FIXgsi}/gfsv16_historical/prepobs_errtable.global.2020040718 + export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2020052612 + export OBERROR=${FIXgfs}/gsi/gfsv16_historical/prepobs_errtable.global.2020040718 fi # Assimilate HDOB if [[ "${PDY}${cyc}" -ge "2020082412" && "${PDY}${cyc}" -lt "2020091612" ]]; then - export CONVINFO=${FIXgsi}/gfsv16_historical/global_convinfo.txt.2020082412 + export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2020082412 fi # Assimilate Metop-C GNSSRO if [[ "${PDY}${cyc}" -ge "2020091612" && "${PDY}${cyc}" -lt "2021031712" ]]; then - export CONVINFO=${FIXgsi}/gfsv16_historical/global_convinfo.txt.2020091612 + export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2020091612 fi # Assimilate DO-2 GeoOptics if [[ "${PDY}${cyc}" -ge "2021031712" && "${PDY}${cyc}" -lt "2021091612" ]]; then - export CONVINFO=${FIXgsi}/gfsv16_historical/global_convinfo.txt.2021031712 + export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2021031712 fi # NOTE: @@ -98,38 +98,38 @@ if [[ ${RUN_ENVIR} == "emc" ]]; then # needed at this time. # Assimilate COSMIC-2 GPS # if [[ "${PDY}${cyc}" -ge "2021110312" && "${PDY}${cyc}" -lt "YYYYMMDDHH" ]]; then - # export CONVINFO=$FIXgsi/gfsv16_historical/global_convinfo.txt.2021110312 + # export CONVINFO=${FIXgfs}/gsi/gfsv16_historical/global_convinfo.txt.2021110312 # fi # Turn off assmilation of OMPS during period of bad data if [[ "${PDY}${cyc}" -ge "2020011600" && "${PDY}${cyc}" -lt "2020011806" ]]; then - export OZINFO=${FIXgsi}/gfsv16_historical/global_ozinfo.txt.2020011600 + export OZINFO=${FIXgfs}/gsi/gfsv16_historical/global_ozinfo.txt.2020011600 fi # Set satinfo for start of GFS v16 parallels if [[ "${PDY}${cyc}" -ge "2019021900" && "${PDY}${cyc}" -lt "2019110706" ]]; then - export SATINFO=${FIXgsi}/gfsv16_historical/global_satinfo.txt.2019021900 + export SATINFO=${FIXgfs}/gsi/gfsv16_historical/global_satinfo.txt.2019021900 fi # Turn on assimilation of Metop-C AMSUA and MHS if [[ "${PDY}${cyc}" -ge "2019110706" && "${PDY}${cyc}" -lt "2020022012" ]]; then - export SATINFO=${FIXgsi}/gfsv16_historical/global_satinfo.txt.2019110706 + export SATINFO=${FIXgfs}/gsi/gfsv16_historical/global_satinfo.txt.2019110706 fi # Turn off assimilation of Metop-A MHS if [[ "${PDY}${cyc}" -ge "2020022012" && "${PDY}${cyc}" -lt "2021052118" ]]; then - export SATINFO=${FIXgsi}/gfsv16_historical/global_satinfo.txt.2020022012 + export SATINFO=${FIXgfs}/gsi/gfsv16_historical/global_satinfo.txt.2020022012 fi # Turn off assimilation of S-NPP CrIS if [[ "${PDY}${cyc}" -ge "2021052118" && "${PDY}${cyc}" -lt "2021092206" ]]; then - export SATINFO=${FIXgsi}/gfsv16_historical/global_satinfo.txt.2021052118 + export SATINFO=${FIXgfs}/gsi/gfsv16_historical/global_satinfo.txt.2021052118 fi # Turn off assimilation of MetOp-A IASI if [[ "${PDY}${cyc}" -ge "2021092206" && "${PDY}${cyc}" -lt "2021102612" ]]; then - export SATINFO=${FIXgsi}/gfsv16_historical/global_satinfo.txt.2021092206 + export SATINFO=${FIXgfs}/gsi/gfsv16_historical/global_satinfo.txt.2021092206 fi # NOTE: @@ -139,8 +139,14 @@ if [[ ${RUN_ENVIR} == "emc" ]]; then # # Turn off assmilation of all Metop-A MHS # if [[ "${PDY}${cyc}" -ge "2021110312" && "${PDY}${cyc}" -lt "YYYYMMDDHH" ]]; then - # export SATINFO=$FIXgsi/gfsv16_historical/global_satinfo.txt.2021110312 + # export SATINFO=${FIXgfs}/gsi/gfsv16_historical/global_satinfo.txt.2021110312 # fi fi +# Flag to turn on (.true.) or off (.false.) the infrared cloud and aerosol detection software +# for AIRS, CrIS, and IASI. Default is .false. +export AIRS_CADS=".false." +export CRIS_CADS=".false." +export IASI_CADS=".false." + echo "END: config.anal" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.analcalc b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.analcalc index 9405114ecc..d9501503f0 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.analcalc +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.analcalc @@ -6,10 +6,6 @@ echo "BEGIN: config.analcalc" # Get task specific resources -. $EXPDIR/config.resources analcalc - -if [[ "$CDUMP" == "gfs" ]]; then - export nth_echgres=$nth_echgres_gfs -fi +. ${EXPDIR}/config.resources analcalc echo "END: config.analcalc" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanl b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanl index 59ea7072a6..7ee57da05e 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanl +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanl @@ -5,17 +5,34 @@ echo "BEGIN: config.atmanl" -export CASE_ANL=${CASE} -export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/config/ -export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/lists/gdas_prototype_3d.yaml -export ATMVARYAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/variational/3dvar_dripcg.yaml -export STATICB_TYPE="gsibec" -export BERROR_YAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/berror/staticb_${STATICB_TYPE}.yaml +export JCB_BASE_YAML="${PARMgfs}/gdas/atm/jcb-base.yaml.j2" +export JCB_ALGO_YAML=${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2 + +export STATICB_TYPE=gsibec +export LOCALIZATION_TYPE="bump" export INTERP_METHOD='barycentric' +if [[ ${DOHYBVAR} = "YES" ]]; then + # shellcheck disable=SC2153 + export CASE_ANL=${CASE_ENS} + export BERROR_YAML="atmosphere_background_error_hybrid_${STATICB_TYPE}_${LOCALIZATION_TYPE}" +else + export CASE_ANL=${CASE} + export BERROR_YAML="atmosphere_background_error_static_${STATICB_TYPE}" +fi + +export CRTM_FIX_YAML="${PARMgfs}/gdas/atm_crtm_coeff.yaml.j2" +export JEDI_FIX_YAML="${PARMgfs}/gdas/atm_jedi_fix.yaml.j2" +export VAR_BKG_STAGING_YAML="${PARMgfs}/gdas/staging/atm_var_bkg.yaml.j2" +export BERROR_STAGING_YAML="${PARMgfs}/gdas/staging/atm_berror_${STATICB_TYPE}.yaml.j2" +export FV3ENS_STAGING_YAML="${PARMgfs}/gdas/staging/atm_var_fv3ens.yaml.j2" + +export layout_x_atmanl=8 +export layout_y_atmanl=8 + export io_layout_x=1 export io_layout_y=1 -export JEDIEXE=${HOMEgfs}/exec/fv3jedi_var.x +export JEDIEXE=${EXECgfs}/gdas.x echo "END: config.atmanl" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlfv3inc b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlfv3inc new file mode 100644 index 0000000000..ab7efa3a60 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlfv3inc @@ -0,0 +1,14 @@ +#! /usr/bin/env bash + +########## config.atmanlfv3inc ########## +# Atm Var Analysis specific + +echo "BEGIN: config.atmanlfv3inc" + +# Get task specific resources +. "${EXPDIR}/config.resources" atmanlfv3inc + +export JCB_ALGO=fv3jedi_fv3inc_variational +export JEDIEXE=${EXECgfs}/fv3jedi_fv3inc.x + +echo "END: config.atmanlfv3inc" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlinit b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlinit index bc95ef4962..1aec88bcc2 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlinit +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlinit @@ -7,4 +7,5 @@ echo "BEGIN: config.atmanlinit" # Get task specific resources . "${EXPDIR}/config.resources" atmanlinit + echo "END: config.atmanlinit" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlvar b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlvar new file mode 100644 index 0000000000..cbc0334a08 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmanlvar @@ -0,0 +1,11 @@ +#! /usr/bin/env bash + +########## config.atmanlvar ########## +# Atm Var Analysis specific + +echo "BEGIN: config.atmanlvar" + +# Get task specific resources +. "${EXPDIR}/config.resources" atmanlvar + +echo "END: config.atmanlvar" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanl b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanl index 6b5da7699b..0db554c424 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanl +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanl @@ -5,14 +5,21 @@ echo "BEGIN: config.atmensanl" -export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/config/ -export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/lists/lgetkf_prototype.yaml -export ATMENSYAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/lgetkf/lgetkf.yaml +export JCB_BASE_YAML="${PARMgfs}/gdas/atm/jcb-base.yaml.j2" +export JCB_ALGO_YAML=${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2 + export INTERP_METHOD='barycentric' +export CRTM_FIX_YAML="${PARMgfs}/gdas/atm_crtm_coeff.yaml.j2" +export JEDI_FIX_YAML="${PARMgfs}/gdas/atm_jedi_fix.yaml.j2" +export LGETKF_BKG_STAGING_YAML="${PARMgfs}/gdas/staging/atm_lgetkf_bkg.yaml.j2" + +export layout_x_atmensanl=8 +export layout_y_atmensanl=8 + export io_layout_x=1 export io_layout_y=1 -export JEDIEXE=${HOMEgfs}/exec/fv3jedi_letkf.x +export JEDIEXE=${EXECgfs}/gdas.x echo "END: config.atmensanl" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlfv3inc b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlfv3inc new file mode 100644 index 0000000000..2dc73f3f6e --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlfv3inc @@ -0,0 +1,14 @@ +#! /usr/bin/env bash + +########## config.atmensanlfv3inc ########## +# Atm Var Analysis specific + +echo "BEGIN: config.atmensanlfv3inc" + +# Get task specific resources +. "${EXPDIR}/config.resources" atmensanlfv3inc + +export JCB_ALGO=fv3jedi_fv3inc_lgetkf +export JEDIEXE=${EXECgfs}/fv3jedi_fv3inc.x + +echo "END: config.atmensanlfv3inc" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlinit b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlinit index 34429023bb..0eee2ffa82 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlinit +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlinit @@ -7,4 +7,5 @@ echo "BEGIN: config.atmensanlinit" # Get task specific resources . "${EXPDIR}/config.resources" atmensanlinit + echo "END: config.atmensanlinit" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlletkf b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlletkf new file mode 100644 index 0000000000..1fdc57ae62 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmensanlletkf @@ -0,0 +1,11 @@ +#! /usr/bin/env bash + +########## config.atmensanlletkf ########## +# Atm Ens Analysis specific + +echo "BEGIN: config.atmensanlletkf" + +# Get task specific resources +. "${EXPDIR}/config.resources" atmensanlletkf + +echo "END: config.atmensanlletkf" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmos_products b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmos_products index c3e861b281..e2827bc98f 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmos_products +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.atmos_products @@ -12,13 +12,15 @@ echo "BEGIN: config.atmos_products" export NFHRS_PER_GROUP=3 # Scripts used by this job -export INTERP_ATMOS_MASTERSH="${HOMEgfs}/ush/interp_atmos_master.sh" -export INTERP_ATMOS_SFLUXSH="${HOMEgfs}/ush/interp_atmos_sflux.sh" +export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" +export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" if [[ "${RUN:-}" == "gdas" ]]; then export downset=1 export FHOUT_PGBS=${FHOUT:-1} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="NO" # Create interpolated sflux.1p00 file + export WGNE="NO" # WGNE products are created for first FHMAX_WGNE forecast hours + export FHMAX_WGNE=0 elif [[ "${RUN:-}" == "gfs" ]]; then #JKHexport downset=2 ## create pgrb2b files export downset=1 ## JKH @@ -27,9 +29,9 @@ elif [[ "${RUN:-}" == "gfs" ]]; then fi # paramlist files for the different forecast hours and downsets -export paramlista="${HOMEgfs}/parm/post/global_1x1_paramlist_g2" -export paramlista_anl="${HOMEgfs}/parm/post/global_1x1_paramlist_g2.anl" -export paramlista_f000="${HOMEgfs}/parm/post/global_1x1_paramlist_g2.f000" -export paramlistb="${HOMEgfs}/parm/post/global_master-catchup_parmlist_g2" +export paramlista="${PARMgfs}/product/gfs.fFFF.paramlist.a.txt" +export paramlista_anl="${PARMgfs}/product/gfs.anl.paramlist.a.txt" +export paramlista_f000="${PARMgfs}/product/gfs.f000.paramlist.a.txt" +export paramlistb="${PARMgfs}/product/gfs.fFFF.paramlist.b.txt" echo "END: config.atmos_products" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.awips b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.awips index 3b78d4bb4b..61f0dc5652 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.awips +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.awips @@ -8,9 +8,6 @@ echo "BEGIN: config.awips" # Get task specific resources . "${EXPDIR}/config.resources" awips -export AWIPS20KM1P0DEGSH="${HOMEgfs}/jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG" -export AWIPSG2SH="${HOMEgfs}/jobs/JGFS_ATMOS_AWIPS_G2" - # No. of concurrent awips jobs export NAWIPSGRP=42 diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base index 0ca2c4d04e..f057f78330 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base @@ -17,40 +17,46 @@ export QUEUE="batch" export QUEUE_SERVICE="batch" export PARTITION_BATCH="hera" export PARTITION_SERVICE="service" +export RESERVATION="" +export CLUSTERS="" # Project to use in mass store: export HPSS_PROJECT="fim" # Directories relative to installation areas: -export HOMEgfs=/scratch1/BMC/gsd-fv3/rtruns/UFS-CAMsuite_dev1_21mar24 -export PARMgfs="${HOMEgfs}/parm" -export FIXgfs="${HOMEgfs}/fix" -export USHgfs="${HOMEgfs}/ush" -export UTILgfs="${HOMEgfs}/util" +export HOMEgfs=/scratch1/BMC/gsd-fv3/rtruns/UFS-CAMsuite_dev1 export EXECgfs="${HOMEgfs}/exec" +export FIXgfs="${HOMEgfs}/fix" +export PARMgfs="${HOMEgfs}/parm" export SCRgfs="${HOMEgfs}/scripts" +export USHgfs="${HOMEgfs}/ush" export FIXam="${FIXgfs}/am" export FIXaer="${FIXgfs}/aer" export FIXcpl="${FIXgfs}/cpl" export FIXlut="${FIXgfs}/lut" -export FIXorog="${FIXgfs}/orog" export FIXcice="${FIXgfs}/cice" export FIXmom="${FIXgfs}/mom6" export FIXreg2grb2="${FIXgfs}/reg2grb2" -export FIXugwd="${FIXgfs}/ugwd" +export FIXgdas="${FIXgfs}/gdas" ######################################################################## # GLOBAL static environment parameters export PACKAGEROOT="/scratch1/NCEPDEV/global/glopara/nwpara" # TODO: set via prod_envir in Ops -export COMROOT="/scratch1/NCEPDEV/global/glopara/com" # TODO: set via prod_envir in Ops -export COMINsyn="${COMROOT}/gfs/prod/syndat" +export COMROOT="/scratch1/BMC/gsd-fv3/rtruns/UFS-CAMsuite_dev1/FV3GFSrun" # TODO: set via prod_envir in Ops +export COMINsyn="/scratch1/NCEPDEV/global/glopara/com/gfs/prod/syndat" export DMPDIR="/scratch1/NCEPDEV/global/glopara/dump" export BASE_CPLIC="/scratch1/NCEPDEV/global/glopara/data/ICSDIR/prototype_ICs" +# Gempak from external models +# Default locations are to dummy locations for testing +export COMINecmwf=/scratch1/NCEPDEV/global/glopara/data/external_gempak/ecmwf +export COMINnam=/scratch1/NCEPDEV/global/glopara/data/external_gempak/nam +export COMINukmet=/scratch1/NCEPDEV/global/glopara/data/external_gempak/ukmet + # USER specific paths -export HOMEDIR="/scratch1/BMC/gsd-fv3/NCEPDEV/global/${USER}" +export HOMEDIR="/scratch1/BMC/gsd-fv3-dev/NCEPDEV/global/${USER}" export STMP="${HOMEgfs}/FV3GFSrun/" export PTMP="${HOMEgfs}/FV3GFSrun/" export NOSCRUB="$HOMEDIR" @@ -59,25 +65,18 @@ export NOSCRUB="$HOMEDIR" export BASE_GIT="/scratch1/NCEPDEV/global/glopara/git" # Toggle to turn on/off GFS downstream processing. -export DO_GOES="NO" # GOES products -export DO_BUFRSND="NO" # BUFR sounding products -export DO_GEMPAK="NO" # GEMPAK products -export DO_AWIPS="NO" # AWIPS products -export DO_NPOESS="NO" # NPOESS products +export DO_GOES="NO" # GOES products +export DO_BUFRSND="NO" # BUFR sounding products +export DO_GEMPAK="NO" # GEMPAK products +export DO_AWIPS="NO" # AWIPS products +export DO_NPOESS="NO" # NPOESS products export DO_TRACKER="NO" # Hurricane track verification ## JKH export DO_GENESIS="NO" # Cyclone genesis verification ## JKH export DO_GENESIS_FSU="NO" # Cyclone genesis verification (FSU) -# The monitor is not yet supported on Hercules -if [[ "${machine}" == "HERCULES" ]]; then - export DO_VERFOZN="NO" # Ozone data assimilation monitoring - export DO_VERFRAD="NO" # Radiance data assimilation monitoring - export DO_VMINMON="NO" # GSI minimization monitoring -else - export DO_VERFOZN="YES" # Ozone data assimilation monitoring - export DO_VERFRAD="YES" # Radiance data assimilation monitoring - export DO_VMINMON="YES" # GSI minimization monitoring -fi -export DO_MOS="NO" # GFS Model Output Statistics - Only supported on WCOSS2 +export DO_VERFOZN="YES" # Ozone data assimilation monitoring +export DO_VERFRAD="YES" # Radiance data assimilation monitoring +export DO_VMINMON="YES" # GSI minimization monitoring +export DO_MOS="NO" # GFS Model Output Statistics - Only supported on WCOSS2 # NO for retrospective parallel; YES for real-time parallel # arch.sh uses REALTIME for MOS. Need to set REALTIME=YES @@ -105,6 +104,7 @@ export NMV="/bin/mv" export NLN="/bin/ln -sf" export VERBOSE="YES" export KEEPDATA="NO" +export DEBUG_POSTSCRIPT="NO" # PBS only; sets debug=true export CHGRP_RSTPROD="YES" export CHGRP_CMD="chgrp rstprod" export NCDUMP="${NETCDF:-${netcdf_c_ROOT:-}}/bin/ncdump" @@ -115,34 +115,30 @@ export BASE_ENV="${HOMEgfs}/env" export BASE_JOB="${HOMEgfs}/jobs/rocoto" # EXPERIMENT specific environment parameters -export SDATE=2024011400 -export EDATE=2024011400 +export SDATE=2024091800 +export EDATE=2024091800 export EXP_WARM_START=".false." export assim_freq=6 export PSLOT="rt_v17p8_ugwpv1_c3_mynn" -export EXPDIR="/home/role.rtfim/UFS-CAMsuite_dev1//FV3GFSwfm/${PSLOT}" -export ROTDIR="/home/role.rtfim/UFS-CAMsuite_dev1//FV3GFSrun/${PSLOT}" +export EXPDIR="/scratch1/BMC/gsd-fv3/rtruns/UFS-CAMsuite_dev1/FV3GFSwfm/${PSLOT}" +export ROTDIR="/scratch1/BMC/gsd-fv3/rtruns/UFS-CAMsuite_dev1/FV3GFSrun/${PSLOT}" export ROTDIR_DUMP="YES" #Note: A value of "NO" does not currently work export DUMP_SUFFIX="" if [[ "${PDY}${cyc}" -ge "2019092100" && "${PDY}${cyc}" -le "2019110700" ]]; then export DUMP_SUFFIX="p" # Use dumps from NCO GFS v15.3 parallel fi -export DATAROOT="${STMP}/RUNDIRS/${PSLOT}" # TODO: set via prod_envir in Ops -export RUNDIR="${DATAROOT}" # TODO: Should be removed; use DATAROOT instead export ARCDIR="${NOSCRUB}/archive/${PSLOT}" -export ATARDIR="/BMC/${HPSS_PROJECT}/2year/${PSLOT}" +export ATARDIR="/BMC/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}" # Commonly defined parameters in JJOBS export envir=${envir:-"prod"} export NET="gfs" # NET is defined in the job-card (ecf) -export RUN=${RUN:-${CDUMP:-"gfs"}} # RUN is defined in the job-card (ecf); CDUMP is used at EMC as a RUN proxy -# TODO: determine where is RUN actually used in the workflow other than here -# TODO: is it possible to replace all instances of ${CDUMP} to ${RUN} to be -# consistent w/ EE2? +export RUN=${RUN:-"gfs"} # RUN is defined in the job-card (ecf) # Get all the COM path templates source "${EXPDIR}/config.com" +# shellcheck disable=SC2016 export ERRSCRIPT=${ERRSCRIPT:-'eval [[ $err = 0 ]]'} export LOGSCRIPT=${LOGSCRIPT:-""} #export ERRSCRIPT=${ERRSCRIPT:-"err_chk"} @@ -159,6 +155,17 @@ export DBNROOT=${DBNROOT:-${UTILROOT:-}/fakedbn} # APP settings export APP=ATM +shopt -s extglob +# Adjust APP based on RUN +case "${RUN}" in + enkf*) # Turn off aerosols and waves + APP="${APP/%+([WA])}" + ;; + *) # Keep app unchanged + ;; +esac +shopt -u extglob + # Defaults: export DO_ATM="YES" export DO_COUPLED="NO" @@ -166,9 +173,24 @@ export DO_WAVE="NO" export DO_OCN="NO" export DO_ICE="NO" export DO_AERO="NO" -export WAVE_CDUMP="" # When to include wave suite: gdas, gfs, or both +export DO_PREP_OBS_AERO="NO" +export AERO_FCST_RUN="" # When to run aerosol forecast: gdas, gfs, or both +export AERO_ANL_RUN="" # When to run aerosol analysis: gdas, gfs, or both +export WAVE_RUN="" # When to include wave suite: gdas, gfs, or both export DOBNDPNT_WAVE="NO" +export DOIBP_WAV="NO" # Option to create point outputs from input boundary points export FRAC_GRID=".true." +export DO_NEST="NO" # Whether to run a global-nested domain +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export ntiles=7 + export NEST_OUTPUT_GRID="regional_latlon" + export FIXugwd="${FIXgfs}/ugwd_nest" + export FIXorog="${FIXgfs}/orog_nest" +else + export ntiles=6 + export FIXugwd="${FIXgfs}/ugwd" + export FIXorog="${FIXgfs}/orog" +fi # Set operational resolution export OPS_RES="C768" # Do not change # TODO: Why is this needed and where is it used? @@ -179,19 +201,20 @@ export CASE="C768" export CASE_ENS="@CASEENS@" export OCNRES="025" export ICERES="${OCNRES}" + # These are the currently recommended grid-combinations case "${CASE}" in "C48") - export waveGRD='glo_500' + export waveGRD='uglo_100km' ;; "C96" | "C192") - export waveGRD='glo_200' + export waveGRD='uglo_100km' ;; "C384") - export waveGRD='glo_025' + export waveGRD='uglo_100km' ;; "C768" | "C1152") - export waveGRD='mx025' + export waveGRD='uglo_m1g16' ;; *) echo "FATAL ERROR: Unrecognized CASE ${CASE}, ABORT!" @@ -204,11 +227,13 @@ case "${APP}" in ;; ATMA) export DO_AERO="YES" + export AERO_ANL_RUN="both" + export AERO_FCST_RUN="gdas" ;; ATMW) export DO_COUPLED="YES" export DO_WAVE="YES" - export WAVE_CDUMP="both" + export WAVE_RUN="both" ;; NG-GODAS) export DO_ATM="NO" @@ -222,11 +247,13 @@ case "${APP}" in if [[ "${APP}" =~ A$ ]]; then export DO_AERO="YES" + export AERO_ANL_RUN="both" + export AERO_FCST_RUN="gdas" fi if [[ "${APP}" =~ ^S2SW ]]; then export DO_WAVE="YES" - export WAVE_CDUMP="both" + export WAVE_RUN="both" fi ;; *) @@ -236,10 +263,10 @@ case "${APP}" in esac # Surface cycle update frequency -if [[ "${CDUMP}" =~ "gdas" ]] ; then +if [[ "${RUN}" =~ "gdas" ]] ; then export FHCYC=1 export FTSFS=10 -elif [[ "${CDUMP}" =~ "gfs" ]] ; then +elif [[ "${RUN}" =~ "gfs" ]] ; then export FHCYC=24 fi @@ -247,6 +274,8 @@ fi export FHMIN=0 export FHMAX=9 export FHOUT=3 # Will be changed to 1 in config.base if (DOHYBVAR set to NO and l4densvar set to false) +export FHOUT_OCN=3 +export FHOUT_ICE=3 # Cycle to run EnKF (set to BOTH for both gfs and gdas) export EUPD_CYC="gdas" @@ -256,26 +285,40 @@ export gfs_cyc=1 # 0: no GFS cycle, 1: 00Z only, 2: 00Z and 12Z only, 4: all 4 c # GFS output and frequency export FHMIN_GFS=0 - -export FHMAX_GFS_00=120 -export FHMAX_GFS_06=120 -export FHMAX_GFS_12=120 -export FHMAX_GFS_18=120 -current_fhmax_var=FHMAX_GFS_${cyc}; declare -x FHMAX_GFS=${!current_fhmax_var} - -export FHOUT_GFS=6 # Must be 6 for S2S until #1629 is addressed; 3 for ops +export FHMAX_GFS=120 +export FHOUT_GFS=6 # 3 for ops export FHMAX_HF_GFS=0 export FHOUT_HF_GFS=1 +export FHOUT_OCN_GFS=6 +export FHOUT_ICE_GFS=6 +export FHMIN_WAV=0 +export FHOUT_WAV=3 +export FHMAX_HF_WAV=120 +export FHOUT_HF_WAV=1 +export FHMAX_WAV=${FHMAX:-9} +export FHMAX_WAV_GFS=${FHMAX_GFS} if (( gfs_cyc != 0 )); then export STEP_GFS=$(( 24 / gfs_cyc )) else export STEP_GFS="0" fi -export ILPOST=1 # gempak output frequency up to F120 +# TODO: Change gempak to use standard out variables (#2348) +export ILPOST=${FHOUT_HF_GFS} # gempak output frequency up to F120 +if (( FHMAX_HF_GFS < 120 )); then + export ILPOST=${FHOUT_GFS} +fi + +# Limit bounds of goes processing +export FHMAX_GOES=180 +export FHOUT_GOES=3 +if (( FHMAX_GOES > FHMAX_GFS )); then + export FHMAX_GOES=${FHMAX_GFS} +fi # GFS restart interval in hours #JKHexport restart_interval_gfs=12 -export restart_interval_gfs=-1 ## JKH +#KYWexport restart_interval_gfs=-1 ## JKH +export restart_interval_gfs=$FHMAX_GFS # NOTE: Do not set this to zero. Instead set it to $FHMAX_GFS # TODO: Remove this variable from config.base and reference from config.fcst # TODO: rework logic in config.wave and push it to parsing_nameslist_WW3.sh where it is actually used @@ -311,22 +354,27 @@ export imp_physics=8 export DO_JEDIATMVAR="NO" export DO_JEDIATMENS="NO" export DO_JEDIOCNVAR="NO" -export DO_JEDILANDDA="NO" +export DO_JEDISNOWDA="NO" export DO_MERGENSST="NO" # Hybrid related export DOHYBVAR="@DOHYBVAR@" -export NMEM_ENS=@NMEM_ENS@ -export NMEM_ENS_GFS=@NMEM_ENS@ +export NMEM_ENS=0 export SMOOTH_ENKF="NO" export l4densvar=".true." export lwrite4danl=".true." +export DO_CALC_INCREMENT="NO" + +# Early-cycle EnKF parameters +export NMEM_ENS_GFS=30 +export NMEM_ENS_GFS_OFFSET=20 +export DO_CALC_INCREMENT_ENKF_GFS="NO" # EnKF output frequency if [[ ${DOHYBVAR} = "YES" ]]; then export FHMIN_ENKF=3 export FHMAX_ENKF=9 - export FHMAX_ENKF_GFS=120 + export FHMAX_ENKF_GFS=12 export FHOUT_ENKF_GFS=3 if [[ ${l4densvar} = ".true." ]]; then export FHOUT=1 @@ -344,6 +392,9 @@ if [[ ${DOHYBVAR} == "NO" && ${DOIAU} == "YES" ]]; then export IAUFHRS_ENKF="6" fi +# Generate post-processing ensemble spread files +export ENKF_SPREAD="YES" + # Check if cycle is cold starting, DOIAU off, or free-forecast mode if [[ "${MODE}" = "cycled" && "${SDATE}" = "${PDY}${cyc}" && ${EXP_WARM_START} = ".false." ]] || [[ "${DOIAU}" = "NO" ]] || [[ "${MODE}" = "forecast-only" && ${EXP_WARM_START} = ".false." ]] ; then export IAU_OFFSET=0 @@ -353,6 +404,24 @@ fi if [[ "${DOIAU_ENKF}" = "NO" ]]; then export IAUFHRS_ENKF="6"; fi +# Determine restart intervals +# For IAU, write restarts at beginning of window also +if [[ "${DOIAU_ENKF:-}" == "YES" ]]; then + export restart_interval_enkfgdas="3" +else + export restart_interval_enkfgdas="6" +fi + +export restart_interval_enkfgfs=${restart_interval_enkfgdas} + +if [[ "${DOIAU}" == "YES" ]]; then + export restart_interval_gdas="3" +else + export restart_interval_gdas="6" +fi + +export GSI_SOILANAL=NO + # turned on nsst in anal and/or fcst steps, and turn off rtgsst export DONST="YES" if [[ ${DONST} = "YES" ]]; then export FNTSFA=" "; fi @@ -367,13 +436,10 @@ export MAKE_NSSTBUFR="NO" export MAKE_ACFTBUFR="NO" # Analysis increments to zero in CALCINCEXEC -export INCREMENTS_TO_ZERO="'liq_wat_inc','icmr_inc'" - -# Write analysis files for early cycle EnKF -export DO_CALC_INCREMENT_ENKF_GFS="YES" +export INCREMENTS_TO_ZERO="'liq_wat_inc','icmr_inc','rwmr_inc','snmr_inc','grle_inc'" # Stratospheric increments to zero -export INCVARS_ZERO_STRAT="'sphum_inc','liq_wat_inc','icmr_inc'" +export INCVARS_ZERO_STRAT="'sphum_inc','liq_wat_inc','icmr_inc','rwmr_inc','snmr_inc','grle_inc'" export INCVARS_EFOLD="5" # Swith to generate netcdf or binary diagnostic files. If not specified, @@ -383,8 +449,13 @@ export netcdf_diag=".true." export binary_diag=".false." # Verification options -export DO_METP="NO" # Run METPLUS jobs - set METPLUS settings in config.metp; not supported with spack-stack +export DO_METP="YES" # Run METPLUS jobs - set METPLUS settings in config.metp export DO_FIT2OBS="NO" # Run fit to observations package ## JKH +export DO_VRFY_OCEANDA="NO" # Run SOCA Ocean and Seaice DA verification tasks + +#--online archive of netcdf files for fit2obs verification +export FHMAX_FITS=132 +[[ "${FHMAX_FITS}" -gt "${FHMAX_GFS}" ]] && export FHMAX_FITS=${FHMAX_GFS} # Archiving options export HPSSARCH="YES" # save data to HPSS archive @@ -397,9 +468,18 @@ export ARCH_CYC=00 # Archive data at this cycle for warm_start capabil export ARCH_WARMICFREQ=4 # Archive frequency in days for warm_start capability export ARCH_FCSTICFREQ=1 # Archive frequency in days for gdas and gfs forecast-only capability -#--online archive of nemsio files for fit2obs verification -export FITSARC="YES" -export FHMAX_FITS=132 -[[ "${FHMAX_FITS}" -gt "${FHMAX_GFS}" ]] && export FHMAX_FITS=${FHMAX_GFS} +# The monitor jobs are not yet supported for JEDIATMVAR. +if [[ ${DO_JEDIATMVAR} = "YES" ]]; then + export DO_VERFOZN="NO" # Ozone data assimilation monitoring + export DO_VERFRAD="NO" # Radiance data assimilation monitoring + export DO_VMINMON="NO" # GSI minimization monitoring +fi + +# If starting ICs that are not at cycle hour +export REPLAY_ICS="NO" +export OFFSET_START_HOUR=0 + +# Number of regional collectives to create soundings for +export NUM_SND_COLLECTIVES=${NUM_SND_COLLECTIVES:-9} echo "END: config.base" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.emc b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.emc new file mode 100644 index 0000000000..56005199aa --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.emc @@ -0,0 +1,483 @@ +#! /usr/bin/env bash + +########## config.base ########## +# Common to all steps + +echo "BEGIN: config.base" + +# Machine environment +export machine="@MACHINE@" + +# EMC parallel or NCO production +export RUN_ENVIR="emc" + +# Account, queue, etc. +export ACCOUNT="@ACCOUNT@" +export QUEUE="@QUEUE@" +export QUEUE_SERVICE="@QUEUE_SERVICE@" +export PARTITION_BATCH="@PARTITION_BATCH@" +export PARTITION_SERVICE="@PARTITION_SERVICE@" +export RESERVATION="@RESERVATION@" +export CLUSTERS="@CLUSTERS@" + +# Project to use in mass store: +export HPSS_PROJECT="@HPSS_PROJECT@" + +# Directories relative to installation areas: +export HOMEgfs=@HOMEgfs@ +export EXECgfs="${HOMEgfs}/exec" +export FIXgfs="${HOMEgfs}/fix" +export PARMgfs="${HOMEgfs}/parm" +export SCRgfs="${HOMEgfs}/scripts" +export USHgfs="${HOMEgfs}/ush" + +export FIXam="${FIXgfs}/am" +export FIXaer="${FIXgfs}/aer" +export FIXcpl="${FIXgfs}/cpl" +export FIXlut="${FIXgfs}/lut" +export FIXcice="${FIXgfs}/cice" +export FIXmom="${FIXgfs}/mom6" +export FIXreg2grb2="${FIXgfs}/reg2grb2" +export FIXgdas="${FIXgfs}/gdas" + +######################################################################## + +# GLOBAL static environment parameters +export PACKAGEROOT="@PACKAGEROOT@" # TODO: set via prod_envir in Ops +export COMROOT="@COMROOT@" # TODO: set via prod_envir in Ops +export COMINsyn="@COMINsyn@" +export DMPDIR="@DMPDIR@" +export BASE_CPLIC="@BASE_CPLIC@" + +# Gempak from external models +# Default locations are to dummy locations for testing +export COMINecmwf=@COMINecmwf@ +export COMINnam=@COMINnam@ +export COMINukmet=@COMINukmet@ + +# USER specific paths +export HOMEDIR="@HOMEDIR@" +export STMP="@STMP@" +export PTMP="@PTMP@" +export NOSCRUB="@NOSCRUB@" + +# Base directories for various builds +export BASE_GIT="@BASE_GIT@" + +# Toggle to turn on/off GFS downstream processing. +export DO_GOES="@DO_GOES@" # GOES products +export DO_BUFRSND="@DO_BUFRSND@" # BUFR sounding products +export DO_GEMPAK="@DO_GEMPAK@" # GEMPAK products +export DO_AWIPS="@DO_AWIPS@" # AWIPS products +export DO_NPOESS="@DO_NPOESS@" # NPOESS products +export DO_TRACKER="@DO_TRACKER@" # Hurricane track verification +export DO_GENESIS="@DO_GENESIS@" # Cyclone genesis verification +export DO_GENESIS_FSU="@DO_GENESIS_FSU@" # Cyclone genesis verification (FSU) +export DO_VERFOZN="YES" # Ozone data assimilation monitoring +export DO_VERFRAD="YES" # Radiance data assimilation monitoring +export DO_VMINMON="YES" # GSI minimization monitoring +export DO_MOS="NO" # GFS Model Output Statistics - Only supported on WCOSS2 + +# NO for retrospective parallel; YES for real-time parallel +# arch.sh uses REALTIME for MOS. Need to set REALTIME=YES +# if want MOS written to HPSS. Should update arch.sh to +# use RUNMOS flag +export REALTIME="YES" + +# Experiment mode (cycled or forecast-only) +export MODE="@MODE@" # cycled/forecast-only + +#################################################### +# DO NOT ADD MACHINE DEPENDENT STUFF BELOW THIS LINE +# IF YOU HAVE TO MAKE MACHINE SPECIFIC CHANGES BELOW +# FEEL FREE TO MOVE THEM ABOVE THIS LINE TO KEEP IT +# CLEAR +#################################################### +# Build paths relative to $HOMEgfs +export FIXgsi="${HOMEgfs}/fix/gsi" +export HOMEpost="${HOMEgfs}" +export HOMEobsproc="${BASE_GIT:-}/obsproc/v${obsproc_run_ver:-1.1.2}" + +# CONVENIENT utility scripts and other environment parameters +export NCP="/bin/cp -p" +export NMV="/bin/mv" +export NLN="/bin/ln -sf" +export VERBOSE="YES" +export KEEPDATA="NO" +export DEBUG_POSTSCRIPT="NO" # PBS only; sets debug=true +export CHGRP_RSTPROD="@CHGRP_RSTPROD@" +export CHGRP_CMD="@CHGRP_CMD@" +export NCDUMP="${NETCDF:-${netcdf_c_ROOT:-}}/bin/ncdump" +export NCLEN="${HOMEgfs}/ush/getncdimlen" + +# Machine environment, jobs, and other utility scripts +export BASE_ENV="${HOMEgfs}/env" +export BASE_JOB="${HOMEgfs}/jobs/rocoto" + +# EXPERIMENT specific environment parameters +export SDATE=@SDATE@ +export EDATE=@EDATE@ +export EXP_WARM_START="@EXP_WARM_START@" +export assim_freq=6 +export PSLOT="@PSLOT@" +export EXPDIR="@EXPDIR@/${PSLOT}" +export ROTDIR="@COMROOT@/${PSLOT}" +export ROTDIR_DUMP="YES" #Note: A value of "NO" does not currently work +export DUMP_SUFFIX="" +if [[ "${PDY}${cyc}" -ge "2019092100" && "${PDY}${cyc}" -le "2019110700" ]]; then + export DUMP_SUFFIX="p" # Use dumps from NCO GFS v15.3 parallel +fi +export ARCDIR="${NOSCRUB}/archive/${PSLOT}" +export ATARDIR="@ATARDIR@" + +# Commonly defined parameters in JJOBS +export envir=${envir:-"prod"} +export NET="gfs" # NET is defined in the job-card (ecf) +export RUN=${RUN:-"gfs"} # RUN is defined in the job-card (ecf) + +# Get all the COM path templates +source "${EXPDIR}/config.com" + +# shellcheck disable=SC2016 +export ERRSCRIPT=${ERRSCRIPT:-'eval [[ $err = 0 ]]'} +export LOGSCRIPT=${LOGSCRIPT:-""} +#export ERRSCRIPT=${ERRSCRIPT:-"err_chk"} +#export LOGSCRIPT=${LOGSCRIPT:-"startmsg"} +export REDOUT="1>" +export REDERR="2>" + +export SENDECF=${SENDECF:-"NO"} +export SENDSDM=${SENDSDM:-"NO"} +export SENDDBN_NTC=${SENDDBN_NTC:-"NO"} +export SENDDBN=${SENDDBN:-"NO"} +export DBNROOT=${DBNROOT:-${UTILROOT:-}/fakedbn} + +# APP settings +export APP=@APP@ + +shopt -s extglob +# Adjust APP based on RUN +case "${RUN}" in + enkf*) # Turn off aerosols and waves + APP="${APP/%+([WA])}" + ;; + *) # Keep app unchanged + ;; +esac +shopt -u extglob + +# Defaults: +export DO_ATM="YES" +export DO_COUPLED="NO" +export DO_WAVE="NO" +export DO_OCN="NO" +export DO_ICE="NO" +export DO_AERO="NO" +export DO_PREP_OBS_AERO="NO" +export AERO_FCST_RUN="" # When to run aerosol forecast: gdas, gfs, or both +export AERO_ANL_RUN="" # When to run aerosol analysis: gdas, gfs, or both +export WAVE_RUN="" # When to include wave suite: gdas, gfs, or both +export DOBNDPNT_WAVE="NO" +export DOIBP_WAV="NO" # Option to create point outputs from input boundary points +export FRAC_GRID=".true." +export DO_NEST="NO" # Whether to run a global-nested domain +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export ntiles=7 + export NEST_OUTPUT_GRID="regional_latlon" + export FIXugwd="${FIXgfs}/ugwd_nest" + export FIXorog="${FIXgfs}/orog_nest" +else + export ntiles=6 + export FIXugwd="${FIXgfs}/ugwd" + export FIXorog="${FIXgfs}/orog" +fi + +# Set operational resolution +export OPS_RES="C768" # Do not change # TODO: Why is this needed and where is it used? + +# Resolution specific parameters +export LEVS=128 +export CASE="@CASECTL@" +export CASE_ENS="@CASEENS@" +export OCNRES="@OCNRES@" +export ICERES="${OCNRES}" + +# These are the currently recommended grid-combinations +case "${CASE}" in + "C48") + export waveGRD='uglo_100km' + ;; + "C96" | "C192") + export waveGRD='uglo_100km' + ;; + "C384") + export waveGRD='uglo_100km' + ;; + "C768" | "C1152") + export waveGRD='uglo_m1g16' + ;; + *) + echo "FATAL ERROR: Unrecognized CASE ${CASE}, ABORT!" + exit 1 + ;; +esac + +case "${APP}" in + ATM) + ;; + ATMA) + export DO_AERO="YES" + export AERO_ANL_RUN="both" + export AERO_FCST_RUN="gdas" + ;; + ATMW) + export DO_COUPLED="YES" + export DO_WAVE="YES" + export WAVE_RUN="both" + ;; + NG-GODAS) + export DO_ATM="NO" + export DO_OCN="YES" + export DO_ICE="YES" + ;; + S2S*) + export DO_COUPLED="YES" + export DO_OCN="YES" + export DO_ICE="YES" + + if [[ "${APP}" =~ A$ ]]; then + export DO_AERO="YES" + export AERO_ANL_RUN="both" + export AERO_FCST_RUN="gdas" + fi + + if [[ "${APP}" =~ ^S2SW ]]; then + export DO_WAVE="YES" + export WAVE_RUN="both" + fi + ;; + *) + echo "Unrecognized APP: '${APP}'" + exit 1 + ;; +esac + +# Surface cycle update frequency +if [[ "${RUN}" =~ "gdas" ]] ; then + export FHCYC=1 + export FTSFS=10 +elif [[ "${RUN}" =~ "gfs" ]] ; then + export FHCYC=24 +fi + +# Output frequency of the forecast model (for cycling) +export FHMIN=0 +export FHMAX=9 +export FHOUT=3 # Will be changed to 1 in config.base if (DOHYBVAR set to NO and l4densvar set to false) +export FHOUT_OCN=3 +export FHOUT_ICE=3 + +# Cycle to run EnKF (set to BOTH for both gfs and gdas) +export EUPD_CYC="@EUPD_CYC@" + +# GFS cycle info +export gfs_cyc=@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=0 +export FHMAX_GFS=@FHMAX_GFS@ +export FHOUT_GFS=3 # 3 for ops +export FHMAX_HF_GFS=@FHMAX_HF_GFS@ +export FHOUT_HF_GFS=1 +export FHOUT_OCN_GFS=6 +export FHOUT_ICE_GFS=6 +export FHMIN_WAV=0 +export FHOUT_WAV=3 +export FHMAX_HF_WAV=120 +export FHOUT_HF_WAV=1 +export FHMAX_WAV=${FHMAX:-9} +export FHMAX_WAV_GFS=${FHMAX_GFS} +if (( gfs_cyc != 0 )); then + export STEP_GFS=$(( 24 / gfs_cyc )) +else + export STEP_GFS="0" +fi +# TODO: Change gempak to use standard out variables (#2348) +export ILPOST=${FHOUT_HF_GFS} # gempak output frequency up to F120 +if (( FHMAX_HF_GFS < 120 )); then + export ILPOST=${FHOUT_GFS} +fi + +# Limit bounds of goes processing +export FHMAX_GOES=180 +export FHOUT_GOES=3 +if (( FHMAX_GOES > FHMAX_GFS )); then + export FHMAX_GOES=${FHMAX_GFS} +fi + +# GFS restart interval in hours +export restart_interval_gfs=12 +# NOTE: Do not set this to zero. Instead set it to $FHMAX_GFS +# TODO: Remove this variable from config.base and reference from config.fcst +# TODO: rework logic in config.wave and push it to parsing_nameslist_WW3.sh where it is actually used + +export QUILTING=".true." +export OUTPUT_GRID="gaussian_grid" +export WRITE_DOPOST=".true." # WRITE_DOPOST=true, use inline POST +export WRITE_NSFLIP=".true." + +# IAU related parameters +export DOIAU="@DOIAU@" # Enable 4DIAU for control with 3 increments +export IAUFHRS="3,6,9" +export IAU_FHROT=${IAUFHRS%%,*} +export IAU_DELTHRS=6 +export IAU_OFFSET=6 +export DOIAU_ENKF=${DOIAU:-"YES"} # Enable 4DIAU for EnKF ensemble +export IAUFHRS_ENKF="3,6,9" +export IAU_DELTHRS_ENKF=6 + +# Use Jacobians in eupd and thereby remove need to run eomg +export lobsdiag_forenkf=".true." + +# if [[ "$SDATE" -lt "2019020100" ]]; then # no rtofs in GDA +# export DO_WAVE="NO" +# echo "WARNING: Wave suite turned off due to lack of RTOFS in GDA for SDATE" +# fi + +# Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL +export imp_physics=8 + +# Shared parameters +# DA engine +export DO_JEDIATMVAR="@DO_JEDIATMVAR@" +export DO_JEDIATMENS="@DO_JEDIATMENS@" +export DO_JEDIOCNVAR="@DO_JEDIOCNVAR@" +export DO_JEDISNOWDA="@DO_JEDISNOWDA@" +export DO_MERGENSST="@DO_MERGENSST@" + +# Hybrid related +export DOHYBVAR="@DOHYBVAR@" +export NMEM_ENS=@NMEM_ENS@ +export SMOOTH_ENKF="NO" +export l4densvar=".true." +export lwrite4danl=".true." +export DO_CALC_INCREMENT="NO" + +# Early-cycle EnKF parameters +export NMEM_ENS_GFS=30 +export NMEM_ENS_GFS_OFFSET=20 +export DO_CALC_INCREMENT_ENKF_GFS="NO" + +# EnKF output frequency +if [[ ${DOHYBVAR} = "YES" ]]; then + export FHMIN_ENKF=3 + export FHMAX_ENKF=9 + export FHMAX_ENKF_GFS=@FHMAX_ENKF_GFS@ + export FHOUT_ENKF_GFS=3 + if [[ ${l4densvar} = ".true." ]]; then + export FHOUT=1 + export FHOUT_ENKF=1 + else + export FHOUT_ENKF=3 + fi +fi + +# if 3DVAR and IAU +if [[ ${DOHYBVAR} == "NO" && ${DOIAU} == "YES" ]]; then + export IAUFHRS="6" + export IAU_FHROT="3" + export IAU_FILTER_INCREMENTS=".true." + export IAUFHRS_ENKF="6" +fi + +# Generate post-processing ensemble spread files +export ENKF_SPREAD="YES" + +# Check if cycle is cold starting, DOIAU off, or free-forecast mode +if [[ "${MODE}" = "cycled" && "${SDATE}" = "${PDY}${cyc}" && ${EXP_WARM_START} = ".false." ]] || [[ "${DOIAU}" = "NO" ]] || [[ "${MODE}" = "forecast-only" && ${EXP_WARM_START} = ".false." ]] ; then + export IAU_OFFSET=0 + export IAU_FHROT=0 + export IAUFHRS="6" +fi + +if [[ "${DOIAU_ENKF}" = "NO" ]]; then export IAUFHRS_ENKF="6"; fi + +# Determine restart intervals +# For IAU, write restarts at beginning of window also +if [[ "${DOIAU_ENKF:-}" == "YES" ]]; then + export restart_interval_enkfgdas="3" +else + export restart_interval_enkfgdas="6" +fi + +export restart_interval_enkfgfs=${restart_interval_enkfgdas} + +if [[ "${DOIAU}" == "YES" ]]; then + export restart_interval_gdas="3" +else + export restart_interval_gdas="6" +fi + +export GSI_SOILANAL=@GSI_SOILANAL@ + +# turned on nsst in anal and/or fcst steps, and turn off rtgsst +export DONST="YES" +if [[ ${DONST} = "YES" ]]; then export FNTSFA=" "; fi + +# The switch to apply SST elevation correction or not +export nst_anl=.true. + +# Make the nsstbufr file on the fly or use the GDA version +export MAKE_NSSTBUFR="@MAKE_NSSTBUFR@" + +# Make the aircraft prepbufr file on the fly or use the GDA version +export MAKE_ACFTBUFR="@MAKE_ACFTBUFR@" + +# Analysis increments to zero in CALCINCEXEC +export INCREMENTS_TO_ZERO="'liq_wat_inc','icmr_inc','rwmr_inc','snmr_inc','grle_inc'" + +# Stratospheric increments to zero +export INCVARS_ZERO_STRAT="'sphum_inc','liq_wat_inc','icmr_inc','rwmr_inc','snmr_inc','grle_inc'" +export INCVARS_EFOLD="5" + +# Swith to generate netcdf or binary diagnostic files. If not specified, +# script default to binary diagnostic files. Set diagnostic file +# variables here since used in DA job +export netcdf_diag=".true." +export binary_diag=".false." + +# Verification options +export DO_METP="@DO_METP@" # Run METPLUS jobs - set METPLUS settings in config.metp +export DO_FIT2OBS="YES" # Run fit to observations package +export DO_VRFY_OCEANDA="@DO_VRFY_OCEANDA@" # Run SOCA Ocean and Seaice DA verification tasks + +#--online archive of netcdf files for fit2obs verification +export FHMAX_FITS=132 +[[ "${FHMAX_FITS}" -gt "${FHMAX_GFS}" ]] && export FHMAX_FITS=${FHMAX_GFS} + +# Archiving options +export HPSSARCH="@HPSSARCH@" # save data to HPSS archive +export LOCALARCH="@LOCALARCH@" # save data to local archive +if [[ ${HPSSARCH} = "YES" ]] && [[ ${LOCALARCH} = "YES" ]]; then + echo "Both HPSS and local archiving selected. Please choose one or the other." + exit 2 +fi +export ARCH_CYC=00 # Archive data at this cycle for warm_start capability +export ARCH_WARMICFREQ=4 # Archive frequency in days for warm_start capability +export ARCH_FCSTICFREQ=1 # Archive frequency in days for gdas and gfs forecast-only capability + +# The monitor jobs are not yet supported for JEDIATMVAR. +if [[ ${DO_JEDIATMVAR} = "YES" ]]; then + export DO_VERFOZN="NO" # Ozone data assimilation monitoring + export DO_VERFRAD="NO" # Radiance data assimilation monitoring + export DO_VMINMON="NO" # GSI minimization monitoring +fi + +# If starting ICs that are not at cycle hour +export REPLAY_ICS="NO" +export OFFSET_START_HOUR=0 + +# Number of regional collectives to create soundings for +export NUM_SND_COLLECTIVES=${NUM_SND_COLLECTIVES:-9} + +echo "END: config.base" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.hera b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.hera new file mode 100644 index 0000000000..f779b4ace1 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.base.hera @@ -0,0 +1,485 @@ +#! /usr/bin/env bash + +########## config.base ########## +# Common to all steps + +echo "BEGIN: config.base" + +# Machine environment +export machine="@MACHINE@" + +# EMC parallel or NCO production +export RUN_ENVIR="emc" + +# Account, queue, etc. +export ACCOUNT="@ACCOUNT@" +export QUEUE="@QUEUE@" +export QUEUE_SERVICE="@QUEUE_SERVICE@" +export PARTITION_BATCH="@PARTITION_BATCH@" +export PARTITION_SERVICE="@PARTITION_SERVICE@" +export RESERVATION="@RESERVATION@" +export CLUSTERS="@CLUSTERS@" + +# Project to use in mass store: +export HPSS_PROJECT="@HPSS_PROJECT@" + +# Directories relative to installation areas: +export HOMEgfs=@HOMEgfs@ +export EXECgfs="${HOMEgfs}/exec" +export FIXgfs="${HOMEgfs}/fix" +export PARMgfs="${HOMEgfs}/parm" +export SCRgfs="${HOMEgfs}/scripts" +export USHgfs="${HOMEgfs}/ush" + +export FIXam="${FIXgfs}/am" +export FIXaer="${FIXgfs}/aer" +export FIXcpl="${FIXgfs}/cpl" +export FIXlut="${FIXgfs}/lut" +export FIXcice="${FIXgfs}/cice" +export FIXmom="${FIXgfs}/mom6" +export FIXreg2grb2="${FIXgfs}/reg2grb2" +export FIXgdas="${FIXgfs}/gdas" + +######################################################################## + +# GLOBAL static environment parameters +export PACKAGEROOT="@PACKAGEROOT@" # TODO: set via prod_envir in Ops +export COMROOT="@COMROOT@" # TODO: set via prod_envir in Ops +export COMINsyn="@COMINsyn@" +export DMPDIR="@DMPDIR@" +export BASE_CPLIC="@BASE_CPLIC@" + +# Gempak from external models +# Default locations are to dummy locations for testing +export COMINecmwf=@COMINecmwf@ +export COMINnam=@COMINnam@ +export COMINukmet=@COMINukmet@ + +# USER specific paths +export HOMEDIR="@HOMEDIR@" +export STMP="@STMP@" +export PTMP="@PTMP@" +export NOSCRUB="@NOSCRUB@" + +# Base directories for various builds +export BASE_GIT="@BASE_GIT@" + +# Toggle to turn on/off GFS downstream processing. +export DO_GOES="@DO_GOES@" # GOES products +export DO_BUFRSND="@DO_BUFRSND@" # BUFR sounding products +export DO_GEMPAK="@DO_GEMPAK@" # GEMPAK products +export DO_AWIPS="@DO_AWIPS@" # AWIPS products +export DO_NPOESS="@DO_NPOESS@" # NPOESS products +export DO_TRACKER="NO" # Hurricane track verification ## JKH +export DO_GENESIS="NO" # Cyclone genesis verification ## JKH +export DO_GENESIS_FSU="@DO_GENESIS_FSU@" # Cyclone genesis verification (FSU) +export DO_VERFOZN="YES" # Ozone data assimilation monitoring +export DO_VERFRAD="YES" # Radiance data assimilation monitoring +export DO_VMINMON="YES" # GSI minimization monitoring +export DO_MOS="NO" # GFS Model Output Statistics - Only supported on WCOSS2 + +# NO for retrospective parallel; YES for real-time parallel +# arch.sh uses REALTIME for MOS. Need to set REALTIME=YES +# if want MOS written to HPSS. Should update arch.sh to +# use RUNMOS flag +export REALTIME="YES" + +# Experiment mode (cycled or forecast-only) +export MODE="@MODE@" # cycled/forecast-only + +#################################################### +# DO NOT ADD MACHINE DEPENDENT STUFF BELOW THIS LINE +# IF YOU HAVE TO MAKE MACHINE SPECIFIC CHANGES BELOW +# FEEL FREE TO MOVE THEM ABOVE THIS LINE TO KEEP IT +# CLEAR +#################################################### +# Build paths relative to $HOMEgfs +export FIXgsi="${HOMEgfs}/fix/gsi" +export HOMEpost="${HOMEgfs}" +export HOMEobsproc="${BASE_GIT:-}/obsproc/v${obsproc_run_ver:-1.1.2}" + +# CONVENIENT utility scripts and other environment parameters +export NCP="/bin/cp -p" +export NMV="/bin/mv" +export NLN="/bin/ln -sf" +export VERBOSE="YES" +export KEEPDATA="NO" +export DEBUG_POSTSCRIPT="NO" # PBS only; sets debug=true +export CHGRP_RSTPROD="@CHGRP_RSTPROD@" +export CHGRP_CMD="@CHGRP_CMD@" +export NCDUMP="${NETCDF:-${netcdf_c_ROOT:-}}/bin/ncdump" +export NCLEN="${HOMEgfs}/ush/getncdimlen" + +# Machine environment, jobs, and other utility scripts +export BASE_ENV="${HOMEgfs}/env" +export BASE_JOB="${HOMEgfs}/jobs/rocoto" + +# EXPERIMENT specific environment parameters +export SDATE=@SDATE@ +export EDATE=@EDATE@ +export EXP_WARM_START="@EXP_WARM_START@" +export assim_freq=6 +export PSLOT="@PSLOT@" +export EXPDIR="@EXPDIR@/${PSLOT}" +export ROTDIR="@COMROOT@/${PSLOT}" +export ROTDIR_DUMP="YES" #Note: A value of "NO" does not currently work +export DUMP_SUFFIX="" +if [[ "${PDY}${cyc}" -ge "2019092100" && "${PDY}${cyc}" -le "2019110700" ]]; then + export DUMP_SUFFIX="p" # Use dumps from NCO GFS v15.3 parallel +fi +export ARCDIR="${NOSCRUB}/archive/${PSLOT}" +export ATARDIR="@ATARDIR@" + +# Commonly defined parameters in JJOBS +export envir=${envir:-"prod"} +export NET="gfs" # NET is defined in the job-card (ecf) +export RUN=${RUN:-"gfs"} # RUN is defined in the job-card (ecf) + +# Get all the COM path templates +source "${EXPDIR}/config.com" + +# shellcheck disable=SC2016 +export ERRSCRIPT=${ERRSCRIPT:-'eval [[ $err = 0 ]]'} +export LOGSCRIPT=${LOGSCRIPT:-""} +#export ERRSCRIPT=${ERRSCRIPT:-"err_chk"} +#export LOGSCRIPT=${LOGSCRIPT:-"startmsg"} +export REDOUT="1>" +export REDERR="2>" + +export SENDECF=${SENDECF:-"NO"} +export SENDSDM=${SENDSDM:-"NO"} +export SENDDBN_NTC=${SENDDBN_NTC:-"NO"} +export SENDDBN=${SENDDBN:-"NO"} +export DBNROOT=${DBNROOT:-${UTILROOT:-}/fakedbn} + +# APP settings +export APP=@APP@ + +shopt -s extglob +# Adjust APP based on RUN +case "${RUN}" in + enkf*) # Turn off aerosols and waves + APP="${APP/%+([WA])}" + ;; + *) # Keep app unchanged + ;; +esac +shopt -u extglob + +# Defaults: +export DO_ATM="YES" +export DO_COUPLED="NO" +export DO_WAVE="NO" +export DO_OCN="NO" +export DO_ICE="NO" +export DO_AERO="NO" +export DO_PREP_OBS_AERO="NO" +export AERO_FCST_RUN="" # When to run aerosol forecast: gdas, gfs, or both +export AERO_ANL_RUN="" # When to run aerosol analysis: gdas, gfs, or both +export WAVE_RUN="" # When to include wave suite: gdas, gfs, or both +export DOBNDPNT_WAVE="NO" +export DOIBP_WAV="NO" # Option to create point outputs from input boundary points +export FRAC_GRID=".true." +export DO_NEST="NO" # Whether to run a global-nested domain +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export ntiles=7 + export NEST_OUTPUT_GRID="regional_latlon" + export FIXugwd="${FIXgfs}/ugwd_nest" + export FIXorog="${FIXgfs}/orog_nest" +else + export ntiles=6 + export FIXugwd="${FIXgfs}/ugwd" + export FIXorog="${FIXgfs}/orog" +fi + +# Set operational resolution +export OPS_RES="C768" # Do not change # TODO: Why is this needed and where is it used? + +# Resolution specific parameters +export LEVS=128 +export CASE="@CASECTL@" +export CASE_ENS="@CASEENS@" +export OCNRES="@OCNRES@" +export ICERES="${OCNRES}" + +# These are the currently recommended grid-combinations +case "${CASE}" in + "C48") + export waveGRD='uglo_100km' + ;; + "C96" | "C192") + export waveGRD='uglo_100km' + ;; + "C384") + export waveGRD='uglo_100km' + ;; + "C768" | "C1152") + export waveGRD='uglo_m1g16' + ;; + *) + echo "FATAL ERROR: Unrecognized CASE ${CASE}, ABORT!" + exit 1 + ;; +esac + +case "${APP}" in + ATM) + ;; + ATMA) + export DO_AERO="YES" + export AERO_ANL_RUN="both" + export AERO_FCST_RUN="gdas" + ;; + ATMW) + export DO_COUPLED="YES" + export DO_WAVE="YES" + export WAVE_RUN="both" + ;; + NG-GODAS) + export DO_ATM="NO" + export DO_OCN="YES" + export DO_ICE="YES" + ;; + S2S*) + export DO_COUPLED="YES" + export DO_OCN="YES" + export DO_ICE="YES" + + if [[ "${APP}" =~ A$ ]]; then + export DO_AERO="YES" + export AERO_ANL_RUN="both" + export AERO_FCST_RUN="gdas" + fi + + if [[ "${APP}" =~ ^S2SW ]]; then + export DO_WAVE="YES" + export WAVE_RUN="both" + fi + ;; + *) + echo "Unrecognized APP: '${APP}'" + exit 1 + ;; +esac + +# Surface cycle update frequency +if [[ "${RUN}" =~ "gdas" ]] ; then + export FHCYC=1 + export FTSFS=10 +elif [[ "${RUN}" =~ "gfs" ]] ; then + export FHCYC=24 +fi + +# Output frequency of the forecast model (for cycling) +export FHMIN=0 +export FHMAX=9 +export FHOUT=3 # Will be changed to 1 in config.base if (DOHYBVAR set to NO and l4densvar set to false) +export FHOUT_OCN=3 +export FHOUT_ICE=3 + +# Cycle to run EnKF (set to BOTH for both gfs and gdas) +export EUPD_CYC="@EUPD_CYC@" + +# GFS cycle info +export gfs_cyc=@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=0 +export FHMAX_GFS=@FHMAX_GFS@ +export FHOUT_GFS=6 # 3 for ops +export FHMAX_HF_GFS=@FHMAX_HF_GFS@ +export FHOUT_HF_GFS=1 +export FHOUT_OCN_GFS=6 +export FHOUT_ICE_GFS=6 +export FHMIN_WAV=0 +export FHOUT_WAV=3 +export FHMAX_HF_WAV=120 +export FHOUT_HF_WAV=1 +export FHMAX_WAV=${FHMAX:-9} +export FHMAX_WAV_GFS=${FHMAX_GFS} +if (( gfs_cyc != 0 )); then + export STEP_GFS=$(( 24 / gfs_cyc )) +else + export STEP_GFS="0" +fi +# TODO: Change gempak to use standard out variables (#2348) +export ILPOST=${FHOUT_HF_GFS} # gempak output frequency up to F120 +if (( FHMAX_HF_GFS < 120 )); then + export ILPOST=${FHOUT_GFS} +fi + +# Limit bounds of goes processing +export FHMAX_GOES=180 +export FHOUT_GOES=3 +if (( FHMAX_GOES > FHMAX_GFS )); then + export FHMAX_GOES=${FHMAX_GFS} +fi + +# GFS restart interval in hours +#JKHexport restart_interval_gfs=12 +#KYWexport restart_interval_gfs=-1 ## JKH +export restart_interval_gfs=$FHMAX_GFS +# NOTE: Do not set this to zero. Instead set it to $FHMAX_GFS +# TODO: Remove this variable from config.base and reference from config.fcst +# TODO: rework logic in config.wave and push it to parsing_nameslist_WW3.sh where it is actually used + +export QUILTING=".true." +export OUTPUT_GRID="gaussian_grid" +export WRITE_DOPOST=".true." # WRITE_DOPOST=true, use inline POST +export WRITE_NSFLIP=".true." + +# IAU related parameters +export DOIAU="@DOIAU@" # Enable 4DIAU for control with 3 increments +export IAUFHRS="3,6,9" +export IAU_FHROT=${IAUFHRS%%,*} +export IAU_DELTHRS=6 +export IAU_OFFSET=6 +export DOIAU_ENKF=${DOIAU:-"YES"} # Enable 4DIAU for EnKF ensemble +export IAUFHRS_ENKF="3,6,9" +export IAU_DELTHRS_ENKF=6 + +# Use Jacobians in eupd and thereby remove need to run eomg +export lobsdiag_forenkf=".true." + +# if [[ "$SDATE" -lt "2019020100" ]]; then # no rtofs in GDA +# export DO_WAVE="NO" +# echo "WARNING: Wave suite turned off due to lack of RTOFS in GDA for SDATE" +# fi + +# Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL +export imp_physics=8 + +# Shared parameters +# DA engine +export DO_JEDIATMVAR="@DO_JEDIATMVAR@" +export DO_JEDIATMENS="@DO_JEDIATMENS@" +export DO_JEDIOCNVAR="@DO_JEDIOCNVAR@" +export DO_JEDISNOWDA="@DO_JEDISNOWDA@" +export DO_MERGENSST="@DO_MERGENSST@" + +# Hybrid related +export DOHYBVAR="@DOHYBVAR@" +export NMEM_ENS=@NMEM_ENS@ +export SMOOTH_ENKF="NO" +export l4densvar=".true." +export lwrite4danl=".true." +export DO_CALC_INCREMENT="NO" + +# Early-cycle EnKF parameters +export NMEM_ENS_GFS=30 +export NMEM_ENS_GFS_OFFSET=20 +export DO_CALC_INCREMENT_ENKF_GFS="NO" + +# EnKF output frequency +if [[ ${DOHYBVAR} = "YES" ]]; then + export FHMIN_ENKF=3 + export FHMAX_ENKF=9 + export FHMAX_ENKF_GFS=@FHMAX_ENKF_GFS@ + export FHOUT_ENKF_GFS=3 + if [[ ${l4densvar} = ".true." ]]; then + export FHOUT=1 + export FHOUT_ENKF=1 + else + export FHOUT_ENKF=3 + fi +fi + +# if 3DVAR and IAU +if [[ ${DOHYBVAR} == "NO" && ${DOIAU} == "YES" ]]; then + export IAUFHRS="6" + export IAU_FHROT="3" + export IAU_FILTER_INCREMENTS=".true." + export IAUFHRS_ENKF="6" +fi + +# Generate post-processing ensemble spread files +export ENKF_SPREAD="YES" + +# Check if cycle is cold starting, DOIAU off, or free-forecast mode +if [[ "${MODE}" = "cycled" && "${SDATE}" = "${PDY}${cyc}" && ${EXP_WARM_START} = ".false." ]] || [[ "${DOIAU}" = "NO" ]] || [[ "${MODE}" = "forecast-only" && ${EXP_WARM_START} = ".false." ]] ; then + export IAU_OFFSET=0 + export IAU_FHROT=0 + export IAUFHRS="6" +fi + +if [[ "${DOIAU_ENKF}" = "NO" ]]; then export IAUFHRS_ENKF="6"; fi + +# Determine restart intervals +# For IAU, write restarts at beginning of window also +if [[ "${DOIAU_ENKF:-}" == "YES" ]]; then + export restart_interval_enkfgdas="3" +else + export restart_interval_enkfgdas="6" +fi + +export restart_interval_enkfgfs=${restart_interval_enkfgdas} + +if [[ "${DOIAU}" == "YES" ]]; then + export restart_interval_gdas="3" +else + export restart_interval_gdas="6" +fi + +export GSI_SOILANAL=@GSI_SOILANAL@ + +# turned on nsst in anal and/or fcst steps, and turn off rtgsst +export DONST="YES" +if [[ ${DONST} = "YES" ]]; then export FNTSFA=" "; fi + +# The switch to apply SST elevation correction or not +export nst_anl=.true. + +# Make the nsstbufr file on the fly or use the GDA version +export MAKE_NSSTBUFR="@MAKE_NSSTBUFR@" + +# Make the aircraft prepbufr file on the fly or use the GDA version +export MAKE_ACFTBUFR="@MAKE_ACFTBUFR@" + +# Analysis increments to zero in CALCINCEXEC +export INCREMENTS_TO_ZERO="'liq_wat_inc','icmr_inc','rwmr_inc','snmr_inc','grle_inc'" + +# Stratospheric increments to zero +export INCVARS_ZERO_STRAT="'sphum_inc','liq_wat_inc','icmr_inc','rwmr_inc','snmr_inc','grle_inc'" +export INCVARS_EFOLD="5" + +# Swith to generate netcdf or binary diagnostic files. If not specified, +# script default to binary diagnostic files. Set diagnostic file +# variables here since used in DA job +export netcdf_diag=".true." +export binary_diag=".false." + +# Verification options +export DO_METP="@DO_METP@" # Run METPLUS jobs - set METPLUS settings in config.metp +export DO_FIT2OBS="NO" # Run fit to observations package ## JKH +export DO_VRFY_OCEANDA="@DO_VRFY_OCEANDA@" # Run SOCA Ocean and Seaice DA verification tasks + +#--online archive of netcdf files for fit2obs verification +export FHMAX_FITS=132 +[[ "${FHMAX_FITS}" -gt "${FHMAX_GFS}" ]] && export FHMAX_FITS=${FHMAX_GFS} + +# Archiving options +export HPSSARCH="@HPSSARCH@" # save data to HPSS archive +export LOCALARCH="@LOCALARCH@" # save data to local archive +if [[ ${HPSSARCH} = "YES" ]] && [[ ${LOCALARCH} = "YES" ]]; then + echo "Both HPSS and local archiving selected. Please choose one or the other." + exit 2 +fi +export ARCH_CYC=00 # Archive data at this cycle for warm_start capability +export ARCH_WARMICFREQ=4 # Archive frequency in days for warm_start capability +export ARCH_FCSTICFREQ=1 # Archive frequency in days for gdas and gfs forecast-only capability + +# The monitor jobs are not yet supported for JEDIATMVAR. +if [[ ${DO_JEDIATMVAR} = "YES" ]]; then + export DO_VERFOZN="NO" # Ozone data assimilation monitoring + export DO_VERFRAD="NO" # Radiance data assimilation monitoring + export DO_VMINMON="NO" # GSI minimization monitoring +fi + +# If starting ICs that are not at cycle hour +export REPLAY_ICS="NO" +export OFFSET_START_HOUR=0 + +# Number of regional collectives to create soundings for +export NUM_SND_COLLECTIVES=${NUM_SND_COLLECTIVES:-9} + +echo "END: config.base" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.cleanup b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.cleanup index 1908c91bb5..44e2690f65 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.cleanup +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.cleanup @@ -12,6 +12,11 @@ export CLEANUP_COM="YES" # NO=retain ROTDIR. YES default in cleanup.sh export RMOLDSTD=144 export RMOLDEND=24 +if [[ "${DO_GEMPAK}" == "YES" ]]; then + export RMOLDSTD=346 + export RMOLDEND=222 +fi + # Specify the list of files to exclude from the first stage of cleanup # Because arrays cannot be exported, list is a single string of comma- # separated values. This string is split to form an array at runtime. @@ -22,4 +27,4 @@ case ${RUN} in esac export exclude_string -echo "END: config.cleanup" \ No newline at end of file +echo "END: config.cleanup" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.com b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.com index db648b5866..222ffdae95 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.com +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.com @@ -5,11 +5,11 @@ echo "BEGIN: config.com" # These are just templates. All templates must use single quotations so variable # expansion does not occur when this file is sourced. Substitution happens later -# during runtime. It is recommended to use the helper function `generate_com()`, +# during runtime. It is recommended to use the helper function `declare_from_tmpl()`, # to do this substitution, which is defined in `ush/preamble.sh`. # -# Syntax for generate_com(): -# generate_com [-rx] $var1[:$tmpl1] [$var2[:$tmpl2]] [...]] +# Syntax for declare_from_tmpl(): +# declare_from_tmpl [-rx] $var1[:$tmpl1] [$var2[:$tmpl2]] [...]] # # options: # -r: Make variable read-only (same as `decalre -r`) @@ -20,14 +20,14 @@ echo "BEGIN: config.com" # # Examples: # # Current cycle and RUN -# YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS +# YMD=${PDY} HH=${cyc} declare_from_tmpl -rx COM_ATMOS_ANALYSIS # # # Previous cycle and gdas -# RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} generate_com -rx \ +# RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ # COM_ATMOS_HISTORY_PREV:COM_ATMOS_HISTORY_TMPL # # # Current cycle and COM for first member -# MEMDIR='mem001' YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_HISTORY +# MEMDIR='mem001' YMD=${PDY} HH=${cyc} declare_from_tmpl -rx COM_ATMOS_HISTORY # # @@ -49,10 +49,12 @@ COM_BASE='${ROTDIR}/${RUN}.${YMD}/${HH}/${MEMDIR}' declare -rx COM_TOP_TMPL='${ROTDIR}/${RUN}.${YMD}/${HH}' declare -rx COM_CONF_TMPL=${COM_BASE}'/conf' +declare -rx COM_OBS_JEDI=${COM_BASE}'/obs_jedi' + declare -rx COM_ATMOS_INPUT_TMPL=${COM_BASE}'/model_data/atmos/input' declare -rx COM_ATMOS_RESTART_TMPL=${COM_BASE}'/model_data/atmos/restart' declare -rx COM_ATMOS_ANALYSIS_TMPL=${COM_BASE}'/analysis/atmos' -declare -rx COM_LAND_ANALYSIS_TMPL=${COM_BASE}'/analysis/land' +declare -rx COM_SNOW_ANALYSIS_TMPL=${COM_BASE}'/analysis/snow' declare -rx COM_ATMOS_HISTORY_TMPL=${COM_BASE}'/model_data/atmos/history' declare -rx COM_ATMOS_MASTER_TMPL=${COM_BASE}'/model_data/atmos/master' declare -rx COM_ATMOS_GRIB_TMPL=${COM_BASE}'/products/atmos/grib2' @@ -80,15 +82,19 @@ declare -rx COM_OCEAN_HISTORY_TMPL=${COM_BASE}'/model_data/ocean/history' declare -rx COM_OCEAN_RESTART_TMPL=${COM_BASE}'/model_data/ocean/restart' declare -rx COM_OCEAN_INPUT_TMPL=${COM_BASE}'/model_data/ocean/input' declare -rx COM_OCEAN_ANALYSIS_TMPL=${COM_BASE}'/analysis/ocean' -declare -rx COM_OCEAN_2D_TMPL=${COM_BASE}'/products/ocean/2D' -declare -rx COM_OCEAN_3D_TMPL=${COM_BASE}'/products/ocean/3D' -declare -rx COM_OCEAN_XSECT_TMPL=${COM_BASE}'/products/ocean/xsect' +declare -rx COM_OCEAN_BMATRIX_TMPL=${COM_BASE}'/bmatrix/ocean' +declare -rx COM_OCEAN_NETCDF_TMPL=${COM_BASE}'/products/ocean/netcdf' declare -rx COM_OCEAN_GRIB_TMPL=${COM_BASE}'/products/ocean/grib2' declare -rx COM_OCEAN_GRIB_GRID_TMPL=${COM_OCEAN_GRIB_TMPL}'/${GRID}' +declare -rx COM_ICE_ANALYSIS_TMPL=${COM_BASE}'/analysis/ice' +declare -rx COM_ICE_BMATRIX_TMPL=${COM_BASE}'/bmatrix/ice' declare -rx COM_ICE_INPUT_TMPL=${COM_BASE}'/model_data/ice/input' declare -rx COM_ICE_HISTORY_TMPL=${COM_BASE}'/model_data/ice/history' declare -rx COM_ICE_RESTART_TMPL=${COM_BASE}'/model_data/ice/restart' +declare -rx COM_ICE_NETCDF_TMPL=${COM_BASE}'/products/ice/netcdf' +declare -rx COM_ICE_GRIB_TMPL=${COM_BASE}'/products/ice/grib2' +declare -rx COM_ICE_GRIB_GRID_TMPL=${COM_ICE_GRIB_TMPL}'/${GRID}' declare -rx COM_CHEM_HISTORY_TMPL=${COM_BASE}'/model_data/chem/history' declare -rx COM_CHEM_ANALYSIS_TMPL=${COM_BASE}'/analysis/chem' diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.earc b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.earc index de73a93731..00a2fa95bd 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.earc +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.earc @@ -8,7 +8,25 @@ echo "BEGIN: config.earc" # Get task specific resources . $EXPDIR/config.resources earc -export NMEM_EARCGRP=10 +# Set the number of ensemble members to archive per earc job +case "${CASE_ENS}" in + "C48" | "C96") + export NMEM_EARCGRP=80 + ;; + "C192") + export NMEM_EARCGRP=20 + ;; + "C384" | "C768") + export NMEM_EARCGRP=10 + ;; + "C1152") + export NMEM_EARCGRP=4 + ;; + *) + echo "FATAL ERROR: Unknown ensemble resolution ${CASE_ENS}, ABORT!" + exit 1 + ;; +esac #--starting and ending hours of previous cycles to be removed from rotating directory export RMOLDSTD_ENKF=144 diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.efcs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.efcs index 283ec3ab7e..1837cf0619 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.efcs +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.efcs @@ -5,14 +5,10 @@ echo "BEGIN: config.efcs" -# Turn off components in ensemble via _ENKF, or use setting from deterministic -export DO_AERO=${DO_AERO_ENKF:-${DO_AERO:-"NO"}} -export DO_OCN=${DO_OCN_ENKF:-${DO_OCN:-"NO"}} -export DO_ICE=${DO_ICE_ENKF:-${DO_ICE:-"NO"}} -export DO_WAVE=${DO_WAVE_ENKF:-${DO_WAVE:-"NO"}} +export CASE="${CASE_ENS}" # Source model specific information that is resolution dependent -string="--fv3 ${CASE_ENS}" +string="--fv3 ${CASE}" # Ocean/Ice/Waves ensemble configurations are identical to deterministic member [[ "${DO_OCN}" == "YES" ]] && string="${string} --mom6 ${OCNRES}" [[ "${DO_ICE}" == "YES" ]] && string="${string} --cice6 ${ICERES}" @@ -25,15 +21,23 @@ source "${EXPDIR}/config.ufs" ${string} # Get task specific resources . "${EXPDIR}/config.resources" efcs +# nggps_diag_nml +export FHOUT=${FHOUT_ENKF:-3} +if [[ ${RUN} == "enkfgfs" ]]; then + export FHOUT=${FHOUT_ENKF_GFS:-${FHOUT}} +fi + +# model_configure +export FHMIN=${FHMIN_ENKF:-3} +export FHMAX=${FHMAX_ENKF:-9} +if [[ ${RUN} == "enkfgfs" ]]; then + export FHMAX=${FHMAX_ENKF_GFS:-${FHMAX}} +fi + # Use serial I/O for ensemble (lustre?) export OUTPUT_FILETYPE_ATM="netcdf" export OUTPUT_FILETYPE_SFC="netcdf" -# Number of enkf members per fcst job -export NMEM_EFCSGRP=2 -export NMEM_EFCSGRP_GFS=1 -export RERUN_EFCSGRP="NO" - # Turn off inline UPP for EnKF forecast export WRITE_DOPOST=".false." @@ -56,17 +60,35 @@ export SPPT_LSCALE=500000. export SPPT_LOGIT=".true." export SPPT_SFCLIMIT=".true." -if [[ "${QUILTING}" = ".true." ]] && [[ "${OUTPUT_GRID}" = "gaussian_grid" ]]; then - export DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table_da" +if [[ "${QUILTING}" == ".true." ]] && [[ "${OUTPUT_GRID}" == "gaussian_grid" ]]; then + export DIAG_TABLE="${PARMgfs}/ufs/fv3/diag_table_da" else - export DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table_da_orig" + export DIAG_TABLE="${PARMgfs}/ufs/fv3/diag_table_da_orig" fi -# For IAU, write restarts at beginning of window also -if [[ "${DOIAU_ENKF:-}" = "YES" ]]; then - export restart_interval="3" -else - export restart_interval="6" +# Model config option for Ensemble +# export TYPE=nh # choices: nh, hydro +# export MONO=non-mono # choices: mono, non-mono + +# gfs_physics_nml +export FHSWR=3600. +export FHLWR=3600. +export IEMS=1 +export ISOL=2 +export ICO2=2 +export dspheat=".true." +export shal_cnv=".true." +export FHZER=6 + +# Set PREFIX_ATMINC to r when recentering on +if [[ ${RECENTER_ENKF:-"YES"} == "YES" ]]; then + export PREFIX_ATMINC="r" +fi + +# Set restart interval to enable restarting forecasts after failures +export restart_interval=${restart_interval_enkfgdas:-6} +if [[ ${RUN} == "enkfgfs" ]]; then + export restart_interval=${restart_interval_enkfgfs:-12} fi echo "END: config.efcs" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eobs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eobs index 21f982addc..7b7823e764 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eobs +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eobs @@ -11,12 +11,11 @@ echo "BEGIN: config.eobs" # Number of enkf members per innovation job export NMEM_EOMGGRP=8 export RERUN_EOMGGRP="YES" -export npe_gsi=$npe_eobs # GSI namelist options related to observer for EnKF export OBSINPUT_INVOBS="dmesh(1)=225.0,dmesh(2)=225.0,dmesh(3)=225.0,dmesh(4)=100.0" export OBSQC_INVOBS="tcp_width=60.0,tcp_ermin=2.0,tcp_ermax=12.0" -if [ $LEVS = "128" ]; then +if (( LEVS == 128 )); then export GRIDOPTS_INVOBS="nlayers(63)=1,nlayers(64)=1," export SETUP_INVOBS="gpstop=55,nsig_ext=56," fi diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.epos b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.epos index 8026a2ba2e..f1da929b62 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.epos +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.epos @@ -14,7 +14,4 @@ if [ $l4densvar = ".false." ]; then export NEPOSGRP=3 fi -# Generate ensemble spread files -export ENKF_SPREAD="YES" - echo "END: config.epos" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.esfc b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.esfc index 2bb3d48bb4..684dea4ee3 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.esfc +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.esfc @@ -12,8 +12,19 @@ echo "BEGIN: config.esfc" # Set DOSFCANL_ENKF=NO to prevent creation of sfcanl at # center of analysis window. -if [ $DOIAU_ENKF = "YES" ]; then +if [[ ${DOIAU_ENKF} = "YES" ]]; then export DOSFCANL_ENKF="NO" fi +# Turn off NST in JEDIATMENS +if [[ "${DO_JEDIATMENS}" == "YES" ]]; then + export DONST="NO" +fi + +# set up soil analysis +if [[ ${GSI_SOILANAL} = "YES" ]]; then + export DO_LNDINC=".true." + export LND_SOI_FILE="lnd_incr" +fi + echo "END: config.esfc" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eupd b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eupd index 1ac90d2b75..2ff48240ae 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eupd +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.eupd @@ -8,7 +8,7 @@ echo "BEGIN: config.eupd" # Get task specific resources . $EXPDIR/config.resources eupd -export npe_enkf=$npe_eupd +export ntasks_enkf=${ntasks} # Use NAM_ENKF below for serial EnKF ##export NAM_ENKF="analpertwtnh=0.9,analpertwtsh=0.9,analpertwttr=0.9" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fbwind b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fbwind new file mode 100644 index 0000000000..49fdb9e7b4 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fbwind @@ -0,0 +1,11 @@ +#! /usr/bin/env bash + +########## config.gempak ########## +# GFS fbwind step specific + +echo "BEGIN: config.fbwind" + +# Get task specific resources +source "${EXPDIR}/config.resources" fbwind + +echo "END: config.fbwind" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst index ee1077c1b3..44f137eace 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst @@ -5,12 +5,21 @@ echo "BEGIN: config.fcst" -# Turn off waves if not used for this CDUMP -case ${WAVE_CDUMP} in - both | "${CDUMP/enkf}" ) ;; # Don't change +export USE_ESMF_THREADING="YES" # Toggle to use ESMF-managed threading or traditional threading in UFSWM +export COPY_FINAL_RESTARTS="NO" # Toggle to copy restarts from the end of GFS/GEFS Run (GDAS is handled seperately) + +# Turn off waves if not used for this RUN +case ${WAVE_RUN} in + both | "${RUN/enkf}" ) ;; # Don't change *) DO_WAVE="NO" ;; # Turn waves off esac +# Turn off aerosols if not used for this RUN +case ${AERO_FCST_RUN} in + both | "${RUN/enkf}" ) ;; # Don't change + *) DO_AERO="NO" ;; # Turn aerosols off +esac + # Source model specific information that is resolution dependent string="--fv3 ${CASE}" [[ "${DO_OCN}" == "YES" ]] && string="${string} --mom6 ${OCNRES}" @@ -21,6 +30,26 @@ string="--fv3 ${CASE}" # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} +# Forecast length for GFS forecast +case ${RUN} in + *gfs) + # shellcheck disable=SC2153 + export FHMAX=${FHMAX_GFS} + # shellcheck disable=SC2153 + export FHOUT=${FHOUT_GFS} + export FHMAX_HF=${FHMAX_HF_GFS} + export FHOUT_HF=${FHOUT_HF_GFS} + export FHOUT_OCN=${FHOUT_OCN_GFS} + export FHOUT_ICE=${FHOUT_ICE_GFS} + ;; + *gdas) + export FHMAX_HF=0 + export FHOUT_HF=0 + ;; + *) + echo "FATAL ERROR: Unsupported RUN '${RUN}'" + exit 1 +esac # Get task specific resources source "${EXPDIR}/config.resources" fcst @@ -37,16 +66,14 @@ export esmf_logkind="ESMF_LOGKIND_MULTI_ON_ERROR" #Options: ESMF_LOGKIND_MULTI_O ####################################################################### -export FORECASTSH="${HOMEgfs}/scripts/exglobal_forecast.sh" -#export FORECASTSH="${HOMEgfs}/scripts/exglobal_forecast.py" # Temp. while this is worked on -export FCSTEXECDIR="${HOMEgfs}/exec" +export FORECASTSH="${SCRgfs}/exglobal_forecast.sh" +#export FORECASTSH="${SCRgfs}/exglobal_forecast.py" # Temp. while this is worked on export FCSTEXEC="ufs_model.x" ####################################################################### # Model configuration export TYPE="nh" export MONO="non-mono" -#JKHexport range_warn=".false." ## JKH # Use stratosphere h2o physics export h2o_phys=".true." @@ -93,36 +120,36 @@ if (( gwd_opt == 2 )); then export do_ugwp_v0_orog_only=".false." export do_ugwp_v0_nst_only=".false." export do_gsl_drag_ls_bl=".true." - export do_gsl_drag_ss=".true." + export do_gsl_drag_ss=".true." #KYW (Checked with Mike) + #export do_gsl_drag_ss=".false." export do_gsl_drag_tofd=".true." + export do_gwd_opt_psl=".false." + #export do_gwd_opt_psl=".true." #KYW (Checked with Mike) export do_ugwp_v1_orog_only=".false." + export alpha_fd=35.0 #KYW (Checked with Mike) launch_level=$(echo "${LEVS}/2.35" |bc) export launch_level - if [[ ${do_gsl_drag_ls_bl} == ".true." ]]; then - export cdmbgwd=${cdmbgwd_gsl} - fi fi # Sponge layer settings -export tau=0. -export rf_cutoff=10. export d2_bg_k1=0.20 export d2_bg_k2=0.04 export dz_min=6 export n_sponge=42 -if (( LEVS == 128 )) && [[ "${CDUMP}" =~ "gdas" ]]; then - export tau=5.0 - export rf_cutoff=1.0e3 - export d2_bg_k1=0.20 - export d2_bg_k2=0.0 -fi -# PBL/turbulence schemes +# PBL/turbulance schemes export hybedmf=".false." +if [[ "${CCPP_SUITE}" == "FV3_global_nest"* ]]; then + export satmedmf=".false." +else + export satmedmf=".true." +fi +export isatmedmf=1 +#JKH if [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_c3_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_c3_mynn" ]] ; then export satmedmf=".false." export isatmedmf=0 - export shal_cnv=".false." + export CPP export do_mynnedmf=".true." export do_mynnsfclay=".false." export icloud_bl=1 @@ -130,20 +157,21 @@ if [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_mynn" || "$CCPP_SUITE" == "FV3_GFS export bl_mynn_edmf=1 export bl_mynn_edmf_mom=1 export lcnorm=".true." ## JKH -else - export satmedmf=".true." - export isatmedmf=1 fi tbf="" if [[ "${satmedmf}" == ".true." ]]; then tbf="_satmedmf" ; fi -#Convection schemes +#Convection schemes ### JKH - affects field table name export progsigma=".true." tbp="" if [[ "${progsigma}" == ".true." ]]; then tbp="_progsigma" ; fi # Radiation options -export IAER=1011 ; #spectral band mapping method for aerosol optical properties +if [[ "${DO_AERO}" == "YES" ]]; then + export IAER=2011 # spectral band mapping method for aerosol optical properties +else + export IAER=1011 +fi export iovr_lw=3 ; #de-correlation length cloud overlap method (Barker, 2008) export iovr_sw=3 ; #de-correlation length cloud overlap method (Barker, 2008) export iovr=3 ; #de-correlation length cloud overlap method (Barker, 2008) @@ -161,21 +189,22 @@ export doGP_lwscat=.false. export iopt_sfc="3" export iopt_trs="2" +#JKH # Convection Options: 2-SASAS, 3-GF export progsigma=".true." if [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_c3_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_c3_mynn" ]] ; then export imfdeepcnv=5 export imfshalcnv=-1 ## JKH - no shallow GF -elif [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_c3" ]] ; then +elif [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_c3" ]] ; then export imfdeepcnv=5 - export imfshalcnv=5 -elif [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_c3" ]] ; then + export imfshalcnv=5 +elif [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_c3" ]] ; then export progsigma=.false. export imfdeepcnv=5 - export imfshalcnv=5 -elif [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_gf" ]] ; then + export imfshalcnv=5 +elif [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_gf" ]] ; then export imfdeepcnv=3 - export imfshalcnv=3 + export imfshalcnv=3 else export imfdeepcnv=2 if [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_mynn" ]] ; then @@ -184,11 +213,7 @@ else export imfshalcnv=2 fi fi - -#Convection schemes ### JKH - affects field table name -tbp="" -if [ "$progsigma" = ".true." ]; then tbp="_progsigma" ; fi - +#JKH # Microphysics configuration export dnats=0 @@ -199,12 +224,12 @@ export random_clds=".true." case ${imp_physics} in 99) # ZhaoCarr export ncld=1 - export FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table_zhaocarr${tbf}${tbp}" + export FIELD_TABLE="${PARMgfs}/ufs/fv3/field_table_zhaocarr${tbf}${tbp}" export nwat=2 ;; 6) # WSM6 export ncld=2 - export FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table_wsm6${tbf}${tbp}" + export FIELD_TABLE="${PARMgfs}/ufs/fv3/field_table_wsm6${tbf}${tbp}" export nwat=6 ;; 8) # Thompson @@ -217,31 +242,46 @@ case ${imp_physics} in export lradar=".true." export ttendlim="-999" export sedi_semi=.true. + if [[ "${sedi_semi}" == .true. ]]; then export dt_inner=${DELTIM} ; fi export decfl=10 - - if [[ "${CCPP_SUITE}" == "FV3_GFS_v17_p8_ugwpv1_mynn" || "${CCPP_SUITE}" == "FV3_GFS_v17_p8_ugwpv1_c3_mynn" || "${CCPP_SUITE}" == "FV3_GFS_v17_p8_mynn" || "${CCPP_SUITE}" == "FV3_GFS_v17_p8_c3_mynn" || +#JKH + if [[ "${CCPP_SUITE}" == "FV3_GFS_v17_p8_ugwpv1_mynn" || "${CCPP_SUITE}" == "FV3_GFS_v17_p8_ugwpv1_c3_mynn" || "${CCPP_SUITE}" == "FV3_GFS_v17_p8_mynn" || "${CCPP_SUITE}" == "FV3_GFS_v17_p8_c3_mynn" || "${CCPP_SUITE}" == "FV3_GFS_v17_p8_thompson" ]] ; then #JKH set dt_inner to 50 if running aerosol-aware Thompson export dt_inner=50 export ltaerosol=".true." - export FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table_thompson_aero_tke${tbp}" + export FIELD_TABLE="${PARMgfs}/ufs/fv3/field_table_thompson_aero_tke${tbp}" else export dt_inner=$((DELTIM/2)) if [[ "${sedi_semi}" == .true. ]]; then export dt_inner=${DELTIM} ; fi export ltaerosol=".false." - export FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table_thompson_noaero_tke${tbp}" + export FIELD_TABLE="${PARMgfs}/ufs/fv3/field_table_thompson_noaero_tke${tbp}" fi - +#JKH export hord_mt_nh_nonmono=5 export hord_xx_nh_nonmono=5 export vtdm4_nh_nonmono=0.02 export nord=2 export dddmp=0.1 export d4_bg=0.12 + + if [[ "${CCPP_SUITE}" == "FV3_global_nest"* ]]; then + export FIELD_TABLE="${PARMgfs}/ufs/fv3/field_table_thompson_aero_tke${tbp}" + export ltaerosol=".true." + export lcnorm=".true." + export do_mynnedmf=".true." + export do_mynnsfclay=".true." + export imfshalcnv=5 + export imfdeepcnv=5 + export betascu=0.5 + export betamcu=1.5 + export betadcu=8.0 + fi + ;; 11) # GFDL export ncld=5 - export FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table_gfdl${tbf}${tbp}" + export FIELD_TABLE="${PARMgfs}/ufs/fv3/field_table_gfdl${tbf}${tbp}" export nwat=6 export dnats=1 export cal_pre=".false." @@ -267,6 +307,9 @@ export DO_SKEB=${DO_SKEB:-"NO"} export DO_SHUM=${DO_SHUM:-"NO"} export DO_LAND_PERT=${DO_LAND_PERT:-"NO"} export DO_CA=${DO_CA:-"YES"} +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DO_CA="NO" # CA does not work with nesting. +fi #coupling settings export cplmode="ufs.frac" @@ -283,38 +326,21 @@ export FSICL="0" export FSICS="0" #--------------------------------------------------------------------- - -# ideflate: netcdf zlib lossless compression (0-9): 0 no compression -# nbits: netcdf lossy compression level (0-32): 0 lossless -export ideflate=1 -export nbits=14 -export ishuffle=0 -# compression for RESTART files written by FMS -export shuffle=1 -export deflate_level=1 - -#--------------------------------------------------------------------- -# Disable the use of coupler.res; get model start time from model_configure -export USE_COUPLER_RES="NO" - -if [[ "${CDUMP}" =~ "gdas" ]] ; then # GDAS cycle specific parameters +if [[ "${RUN}" =~ "gdas" ]] ; then # GDAS cycle specific parameters # Variables used in DA cycling - export DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table_da" + export DIAG_TABLE="${PARMgfs}/ufs/fv3/diag_table_da" - if [[ "${DOIAU}" == "YES" ]]; then - export restart_interval="3" - else - export restart_interval="6" - fi + # Write gfs restart files to rerun fcst from any break point + export restart_interval=${restart_interval_gdas:-6} # Turn on dry mass adjustment in GDAS export adjust_dry_mass=".true." -elif [[ "${CDUMP}" =~ "gfs" ]] ; then # GFS cycle specific parameters +elif [[ "${RUN}" =~ "gfs" ]] ; then # GFS cycle specific parameters # Write more variables to output - export DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table" + export DIAG_TABLE="${PARMgfs}/ufs/fv3/diag_table" # Write gfs restart files to rerun fcst from any break point export restart_interval=${restart_interval_gfs:-12} diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fit2obs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fit2obs index 46baaa9e45..9b3fb87ead 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fit2obs +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fit2obs @@ -8,8 +8,8 @@ echo "BEGIN: config.fit2obs" # Get task specific resources . "${EXPDIR}/config.resources" fit2obs -export PRVT=${HOMEgfs}/fix/gsi/prepobs_errtable.global -export HYBLEVS=${HOMEgfs}/fix/am/global_hyblev.l${LEVS}.txt +export PRVT=${FIXgfs}/gsi/prepobs_errtable.global +export HYBLEVS=${FIXgfs}/am/global_hyblev.l${LEVS}.txt export VBACKUP_FITS=24 export OUTPUT_FILETYPE="netcdf" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ice b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ice index 205458020f..055bd1e2bb 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ice +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ice @@ -6,4 +6,9 @@ echo "BEGIN: config.ice" export min_seaice="1.0e-6" export use_cice_alb=".true." +export MESH_ICE="mesh.mx${ICERES}.nc" + +export CICE_GRID="grid_cice_NEMS_mx${ICERES}.nc" +export CICE_MASK="kmtu_cice_NEMS_mx${ICERES}.nc" + echo "END: config.ice" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.landanl b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.landanl index 8d49f10d76..70ebae7529 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.landanl +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.landanl @@ -28,7 +28,7 @@ export BESTDDEV="30." # Background Error Std. Dev. for LETKFOI export APPLY_INCR_EXE="${HOMEgfs}/exec/apply_incr.exe" export APPLY_INCR_NML_TMPL="${HOMEgfs}/sorc/gdas.cd/parm/land/letkfoi/apply_incr_nml.j2" -export io_layout_x=1 -export io_layout_y=1 +export io_layout_x=@IO_LAYOUT_X@ +export io_layout_y=@IO_LAYOUT_Y@ echo "END: config.landanl" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marineanalletkf b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marineanalletkf new file mode 100644 index 0000000000..fde3433a13 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marineanalletkf @@ -0,0 +1,18 @@ +#!/bin/bash + +########## config.marineanalletkf ########## +# Ocn Analysis specific + +echo "BEGIN: config.marineanalletkf" + +# Get task specific resources +. "${EXPDIR}/config.resources" marineanalletkf + +export MARINE_LETKF_EXEC="${JEDI_BIN}/gdas.x" +export MARINE_LETKF_YAML_TMPL="${PARMgfs}/gdas/soca/letkf/letkf.yaml.j2" +export MARINE_LETKF_STAGE_YAML_TMPL="${PARMgfs}/gdas/soca/letkf/letkf_stage.yaml.j2" + +export GRIDGEN_EXEC="${JEDI_BIN}/gdas_soca_gridgen.x" +export GRIDGEN_YAML="${PARMgfs}/gdas/soca/gridgen/gridgen.yaml" + +echo "END: config.marineanalletkf" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marinebmat b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marinebmat new file mode 100644 index 0000000000..d88739dced --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.marinebmat @@ -0,0 +1,11 @@ +#!/bin/bash + +########## config.marinebmat ########## +# configuration for the marine B-matrix + +echo "BEGIN: config.marinebmat" + +# Get task specific resources +. "${EXPDIR}/config.resources" marinebmat + +echo "END: config.marinebmat" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.metp b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.metp index c90903f6a5..564966fd6d 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.metp +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.metp @@ -8,6 +8,8 @@ echo "BEGIN: config.metp" # Get task specific resources . "${EXPDIR}/config.resources" metp +export nproc=${tasks_per_node:-1} + export RUN_GRID2GRID_STEP1="YES" # Run grid-to-grid verification using METplus export RUN_GRID2OBS_STEP1="YES" # Run grid-to-obs verification using METplus export RUN_PRECIP_STEP1="YES" # Run precip verification using METplus @@ -21,8 +23,9 @@ export HOMEverif_global=${HOMEgfs}/sorc/verif-global.fd export VERIF_GLOBALSH=${HOMEverif_global}/ush/run_verif_global_in_global_workflow.sh ## INPUT DATA SETTINGS export model=${PSLOT} -export model_file_format="pgbf{lead?fmt=%2H}.${CDUMP}.{init?fmt=%Y%m%d%H}.grib2" +export model_file_format="pgbf{lead?fmt=%2H}.${RUN}.{init?fmt=%Y%m%d%H}.grib2" export model_hpss_dir=${ATARDIR}/.. +export model_dir=${ARCDIR}/.. export get_data_from_hpss="NO" export hpss_walltime="10" ## OUTPUT SETTINGS @@ -38,19 +41,19 @@ export log_MET_output_to_METplus="yes" # GRID-TO-GRID STEP 1: gfsmetpg2g1 export g2g1_type_list="anom pres sfc" export g2g1_anom_truth_name="self_anl" -export g2g1_anom_truth_file_format="pgbanl.${CDUMP}.{valid?fmt=%Y%m%d%H}.grib2" +export g2g1_anom_truth_file_format="pgbanl.${RUN}.{valid?fmt=%Y%m%d%H}.grib2" export g2g1_anom_fhr_min=${FHMIN_GFS} export g2g1_anom_fhr_max=${FHMAX_GFS} export g2g1_anom_grid="G002" export g2g1_anom_gather_by="VSDB" export g2g1_pres_truth_name="self_anl" -export g2g1_pres_truth_file_format="pgbanl.${CDUMP}.{valid?fmt=%Y%m%d%H}.grib2" +export g2g1_pres_truth_file_format="pgbanl.${RUN}.{valid?fmt=%Y%m%d%H}.grib2" export g2g1_pres_fhr_min=${FHMIN_GFS} export g2g1_pres_fhr_max=${FHMAX_GFS} export g2g1_pres_grid="G002" export g2g1_pres_gather_by="VSDB" export g2g1_sfc_truth_name="self_f00" -export g2g1_sfc_truth_file_format="pgbf00.${CDUMP}.{valid?fmt=%Y%m%d%H}.grib2" +export g2g1_sfc_truth_file_format="pgbf00.${RUN}.{valid?fmt=%Y%m%d%H}.grib2" export g2g1_sfc_fhr_min=${FHMIN_GFS} export g2g1_sfc_fhr_max=${FHMAX_GFS} export g2g1_sfc_grid="G002" @@ -86,7 +89,7 @@ export g2o1_mv_database_desc="Grid-to-obs METplus data for global workflow exper export precip1_type_list="ccpa_accum24hr" export precip1_ccpa_accum24hr_model_bucket="06" export precip1_ccpa_accum24hr_model_var="APCP" -export precip1_ccpa_accum24hr_model_file_format="pgbf{lead?fmt=%2H}.${CDUMP}.{init?fmt=%Y%m%d%H}.grib2" +export precip1_ccpa_accum24hr_model_file_format="pgbf{lead?fmt=%2H}.${RUN}.{init?fmt=%Y%m%d%H}.grib2" export precip1_ccpa_accum24hr_fhr_min=${FHMIN_GFS} export precip1_ccpa_accum24hr_fhr_max="180" export precip1_ccpa_accum24hr_grid="G211" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.nsst b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.nsst index db4367b2c0..7bda81f058 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.nsst +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.nsst @@ -10,6 +10,11 @@ echo "BEGIN: config.nsst" # nstf_name(1) : NST_MODEL (NSST Model) : 0 = OFF, 1 = ON but uncoupled, 2 = ON and coupled export NST_MODEL=2 +# Set NST_MODEL for JEDIATMVAR or JEDIATMENS +if [[ "${DO_JEDIATMVAR}" == "YES" || "${DO_JEDIATMENS}" == "YES" ]]; then + export NST_MODEL=1 +fi + # nstf_name(2) : NST_SPINUP : 0 = OFF, 1 = ON, export NST_SPINUP=0 cdate="${PDY}${cyc}" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.oceanice_products b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.oceanice_products new file mode 100644 index 0000000000..9e5c5b1c68 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.oceanice_products @@ -0,0 +1,15 @@ +#! /usr/bin/env bash + +########## config.oceanice_products ########## + +echo "BEGIN: config.oceanice_products" + +# Get task specific resources +source "${EXPDIR}/config.resources" oceanice_products + +export OCEANICEPRODUCTS_CONFIG="${PARMgfs}/post/oceanice_products.yaml" + +# No. of forecast hours to process in a single job +export NFHRS_PER_GROUP=3 + +echo "END: config.oceanice_products" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocn b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocn index 37f6a966aa..317a76e58a 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocn +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocn @@ -2,8 +2,7 @@ echo "BEGIN: config.ocn" -# MOM_input template to use -export MOM_INPUT="MOM_input_template_${OCNRES}" +export MESH_OCN="mesh.mx${OCNRES}.nc" export DO_OCN_SPPT="NO" # In MOM_input, this variable is determines OCN_SPPT (OCN_SPPT = True|False) export DO_OCN_PERT_EPBL="NO" # In MOM_input, this variable determines PERT_EPBL (PERT_EPBL = True|False) @@ -17,6 +16,14 @@ if [[ "${DO_JEDIOCNVAR}" == "YES" ]]; then else export ODA_INCUPD="False" fi -export ODA_INCUPD_NHOURS="3.0" # In MOM_input, this is time interval for applying increment + +# Time interval for applying the increment +if [[ "${DOIAU}" == "YES" ]]; then + export ODA_INCUPD_NHOURS="6.0" +else + export ODA_INCUPD_NHOURS="3.0" +fi + + echo "END: config.ocn" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanal b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanal index 821efbb11b..5a6e524b5d 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanal +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanal @@ -6,21 +6,15 @@ echo "BEGIN: config.ocnanal" export OBS_YAML_DIR="${HOMEgfs}/sorc/gdas.cd/parm/soca/obs/config" -export OBS_LIST=/scratch1/BMC/gsd-fv3/rtruns/UFS-CAMsuite_dev1_21mar24/sorc/gdas.cd/parm/soca/obs/obs_list.yaml -export OBS_YAML="${OBS_LIST}" -export FV3JEDI_STAGE_YAML="${HOMEgfs}/sorc/gdas.cd/test/soca/testinput/dumy.yaml" -export SOCA_INPUT_FIX_DIR=/scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/static/72x35x25/soca -export SOCA_VARS=tocn,socn,ssh -export SABER_BLOCKS_YAML= +export OBS_LIST=${PARMgfs}/gdas/soca/obs/obs_list.yaml # TODO(GA): doesn't look necessary as is to have +export OBS_YAML="${OBS_LIST}" # OBS_LIST and OBS_YAML pick one or add logic +export SOCA_INPUT_FIX_DIR=${FIXgfs}/gdas/soca/72x35x25/soca export SOCA_NINNER=100 -export CASE_ANL=C48 export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent -export JEDI_BIN=${HOMEgfs}/sorc/gdas.cd/build/bin +export SOCA_ENS_BKG_STAGE_YAML_TMPL="${PARMgfs}/gdas/soca/soca_ens_bkg_stage.yaml.j2" +export SOCA_FIX_YAML_TMPL="${PARMgfs}/gdas/soca/soca_fix_stage_${OCNRES}.yaml.j2" -export COMIN_OBS=/scratch2/NCEPDEV/marineda/r2d2-v2-v3 - -# NICAS -export NICAS_RESOL=1 -export NICAS_GRID_SIZE=15000 +export JEDI_BIN=${HOMEgfs}/sorc/gdas.cd/build/bin # TODO(GA): remove once analysis "run" + # and "checkpoint" are refactored echo "END: config.ocnanal" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanalecen b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanalecen new file mode 100644 index 0000000000..b64c2bcf62 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ocnanalecen @@ -0,0 +1,11 @@ +#!/bin/bash + +########## config.ocnanalecen ########## +# Ocn Analysis specific + +echo "BEGIN: config.ocnanalecen" + +# Get task specific resources +. "${EXPDIR}/config.resources" ocnanalecen + +echo "END: config.ocnanalecen" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.postsnd b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.postsnd index 53d66bf4f6..7ec0ad6321 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.postsnd +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.postsnd @@ -8,7 +8,6 @@ echo "BEGIN: config.postsnd" # Get task specific resources . $EXPDIR/config.resources postsnd -export POSTSNDSH=$HOMEgfs/jobs/JGFS_ATMOS_POSTSND export ENDHOUR=180 if [[ "$FHMAX_GFS" -lt "$ENDHOUR" ]] ; then export ENDHOUR=$FHMAX_GFS ; fi diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prep b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prep index d5ac1925f7..e719d03d1d 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prep +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prep @@ -13,33 +13,28 @@ export cdate10=${PDY}${cyc} # Relocation and syndata QC export PROCESS_TROPCY=${PROCESS_TROPCY:-NO} -export TROPCYQCRELOSH="$HOMEgfs/scripts/exglobal_atmos_tropcy_qc_reloc.sh" +export TROPCYQCRELOSH="${SCRgfs}/exglobal_atmos_tropcy_qc_reloc.sh" -export COMINtcvital=${COMINtcvital:-${DMPDIR}/${CDUMP}.${PDY}/${cyc}/atmos} +export COMINtcvital=${COMINtcvital:-${DMPDIR}/${RUN}.${PDY}/${cyc}/atmos} export COMINsyn=${COMINsyn:-$(compath.py ${envir}/com/gfs/${gfs_ver})/syndat} -export HOMERELO=$HOMEgfs -export EXECRELO=${HOMERELO}/exec -export FIXRELO=${HOMERELO}/fix/am -export USHRELO=${HOMERELO}/ush - # Adjust observation error for GFS v16 parallels # # NOTE: Remember to set OBERROR in config.anal as PRVT is set below # # Set default prepobs_errtable.global -export PRVT=$FIXgsi/prepobs_errtable.global +export PRVT=${FIXgfs}/gsi/prepobs_errtable.global # Set prepobs.errtable.global for GFS v16 retrospective parallels if [[ $RUN_ENVIR == "emc" ]]; then if [[ "${PDY}${cyc}" -ge "2019021900" && "${PDY}${cyc}" -lt "2019110706" ]]; then - export PRVT=$FIXgsi/gfsv16_historical/prepobs_errtable.global.2019021900 + export PRVT=${FIXgfs}/gsi/gfsv16_historical/prepobs_errtable.global.2019021900 fi # Place GOES-15 AMVs in monitor, assimilate GOES-17 AMVs, assimilate KOMPSAT-5 gps if [[ "${PDY}${cyc}" -ge "2019110706" && "${PDY}${cyc}" -lt "2020040718" ]]; then - export PRVT=$FIXgsi/gfsv16_historical/prepobs_errtable.global.2019110706 + export PRVT=${FIXgfs}/gsi/gfsv16_historical/prepobs_errtable.global.2019110706 fi # NOTE: diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepatmiodaobs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepatmiodaobs index ed9b246120..e29cf67b07 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepatmiodaobs +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepatmiodaobs @@ -8,7 +8,4 @@ echo "BEGIN: config.prepatmiodaobs" # Get task specific resources . "${EXPDIR}/config.resources" prepatmiodaobs -export BUFR2IODASH="${HOMEgfs}/ush/run_bufr2ioda.py" -export IODAPARM="${HOMEgfs}/sorc/gdas.cd/parm/ioda/bufr2ioda" - echo "END: config.prepatmiodaobs" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepobsaero b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepobsaero new file mode 100644 index 0000000000..f70138991c --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepobsaero @@ -0,0 +1,17 @@ +#!/bin/bash -x + +########## config.prepobsaero ########## +# Prepare and thin/superob aerosol observations + +echo "BEGIN: config.prepobsaero" + +# Get task specific resources +source "${EXPDIR}/config.resources" prepobsaero + +export OBSPROCYAML="${PARMgfs}/gdas/aero/obs/lists/gdas_aero_obsproc.yaml.j2" +export OBSPROCEXE="${EXECgfs}/gdas_obsprovider2ioda.x" +export VIIRS_DATA_DIR="/scratch2/NCEPDEV/stmp3/Yaping.Wang/VIIRS/AWS/" +export SENSORS="npp,n20" + + +echo "END: config.prepaeroobs" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepoceanobs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepoceanobs index d7c4e37bb9..cbc072a2fa 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepoceanobs +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepoceanobs @@ -6,14 +6,19 @@ echo "BEGIN: config.prepoceanobs" export OCNOBS2IODAEXEC=${HOMEgfs}/sorc/gdas.cd/build/bin/gdas_obsprovider2ioda.x -export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/soca/obs/config -export OBSPROC_YAML=@OBSPROC_YAML@ -export OBS_LIST=@SOCA_OBS_LIST@ -[[ -n "${OBS_LIST}" ]] || export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml +export SOCA_INPUT_FIX_DIR=${FIXgfs}/gdas/soca/72x35x25/soca + +export OBS_YAML_DIR="${PARMgfs}/gdas/soca/obs/config" +export OBSPREP_YAML=${PARMgfs}/gdas/soca/obsprep/obsprep_config.yaml +export OBS_LIST=${PARMgfs}/gdas/soca/obs/obs_list.yaml export OBS_YAML=${OBS_LIST} # ocean analysis needs own dmpdir until standard dmpdir has full ocean obs -export DMPDIR=@DMPDIR@ +export DMPDIR=/scratch1/NCEPDEV/global/glopara/data/experimental_obs + +# For BUFR2IODA json and python scripts +export JSON_TMPL_DIR="${PARMgfs}/gdas/ioda/bufr2ioda" +export BUFR2IODA_PY_DIR="${USHgfs}" # Get task specific resources . "${EXPDIR}/config.resources" prepoceanobs diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepsnowobs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepsnowobs new file mode 100644 index 0000000000..60ca16ce9e --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.prepsnowobs @@ -0,0 +1,21 @@ +#! /usr/bin/env bash + +########## config.prepsnowobs ########## +# Snow Obs Prep specific + +echo "BEGIN: config.prepsnowobs" + +# Get task specific resources +. "${EXPDIR}/config.resources" prepsnowobs + +export GTS_OBS_LIST="${PARMgfs}/gdas/snow/prep/prep_gts.yaml.j2" +export IMS_OBS_LIST="${PARMgfs}/gdas/snow/prep/prep_ims.yaml.j2" + +export BUFR2IODAX="${EXECgfs}/bufr2ioda.x" + +export CALCFIMSEXE="${EXECgfs}/calcfIMS.exe" +export FIMS_NML_TMPL="${PARMgfs}/gdas/snow/prep/fims.nml.j2" + +export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" + +echo "END: config.prepsnowobs" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources index c179c33df4..7b737d05f0 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources @@ -1,29 +1,32 @@ #! /usr/bin/env bash +# shellcheck disable=SC2034 ########## config.resources ########## # Set resource information for job tasks # e.g. walltime, node, cores per node, memory etc. +# Note: machine-specific resources should be placed into the appropriate config file: +# config.resources.${machine} -if [[ $# -ne 1 ]]; then +if (( $# != 1 )); then echo "Must specify an input task argument to set resource variables!" echo "argument can be any one of the following:" echo "stage_ic aerosol_init" - echo "prep preplandobs prepatmiodaobs" - echo "atmanlinit atmanlrun atmanlfinal" - echo "atmensanlinit atmensanlrun atmensanlfinal" - echo "landanl" - echo "aeroanlinit aeroanlrun aeroanlfinal" + echo "prep prepsnowobs prepatmiodaobs" + echo "atmanlinit atmanlvar atmanlfv3inc atmanlfinal" + echo "atmensanlinit atmensanlletkf atmensanlfv3inc atmensanlfinal" + echo "snowanl" + echo "prepobsaero aeroanlinit aeroanlrun aeroanlfinal" echo "anal sfcanl analcalc analdiag fcst echgres" echo "upp atmos_products" echo "tracker genesis genesis_fsu" echo "verfozn verfrad vminmon fit2obs metp arch cleanup" echo "eobs ediag eomg eupd ecen esfc efcs epos earc" - echo "init_chem mom6ic ocnpost" + echo "init_chem mom6ic oceanice_products" echo "waveinit waveprep wavepostsbs wavepostbndpnt wavepostbndpntbll wavepostpnt" echo "wavegempak waveawipsbulls waveawipsgridded" echo "postsnd awips gempak npoess" - echo "ocnanalprep prepoceanobs ocnanalbmat ocnanalrun ocnanalchkpt ocnanalpost ocnanalvrfy" + echo "ocnanalprep prepoceanobs marinebmat ocnanalrun ocnanalecen marineanalletkf ocnanalchkpt ocnanalpost ocnanalvrfy" exit 1 fi @@ -32,1164 +35,1269 @@ step=$1 echo "BEGIN: config.resources" -if [[ "${machine}" = "WCOSS2" ]]; then - export npe_node_max=128 -elif [[ "${machine}" = "JET" ]]; then - if [[ "${PARTITION_POST_BATCH}" = "sjet" ]]; then - export npe_node_max=16 - elif [[ "${PARTITION_BATCH}" = "xjet" ]]; then - export npe_node_max=24 - elif [[ ${PARTITION_BATCH} = "vjet" || ${PARTITION_BATCH} = "sjet" ]]; then - export npe_node_max=16 - elif [[ ${PARTITION_BATCH} = "kjet" ]]; then - export npe_node_max=40 - fi -elif [[ "${machine}" = "HERA" ]]; then - export npe_node_max=40 -elif [[ "${machine}" = "S4" ]]; then - if [[ ${PARTITION_BATCH} = "s4" ]]; then - export npe_node_max=32 - elif [[ ${PARTITION_BATCH} = "ivy" ]]; then - export npe_node_max=20 - fi -elif [[ "${machine}" = "AWSPW" ]]; then - export PARTITION_BATCH="compute" - export npe_node_max=40 -elif [[ "${machine}" = "ORION" ]]; then - export npe_node_max=40 -elif [[ "${machine}" = "HERCULES" ]]; then - export npe_node_max=80 -fi - -if [[ "${step}" = "prep" ]]; then - export wtime_prep='00:30:00' - export npe_prep=4 - export npe_node_prep=2 - export nth_prep=1 - if [[ "${machine}" = "WCOSS2" ]]; then - export is_exclusive=True - else - export memory_prep="40G" +case ${machine} in + "WCOSS2") + max_tasks_per_node=128 + # shellcheck disable=SC2034 + mem_node_max="500GB" + ;; + "HERA") + max_tasks_per_node=40 + # shellcheck disable=SC2034 + mem_node_max="96GB" + ;; + "GAEA") + max_tasks_per_node=128 + # shellcheck disable=SC2034 + mem_node_max="251GB" + ;; + "ORION") + max_tasks_per_node=40 + # shellcheck disable=SC2034 + mem_node_max="192GB" + ;; + "HERCULES") + max_tasks_per_node=80 + # shellcheck disable=SC2034 + mem_node_max="512GB" + ;; + "JET") + case ${PARTITION_BATCH} in + "xjet") + max_tasks_per_node=24 + # shellcheck disable=SC2034 + mem_node_max="61GB" + ;; + "vjet") + max_tasks_per_node=16 + # shellcheck disable=SC2034 + mem_node_max="61GB" + ;; + "sjet") + max_tasks_per_node=16 + # shellcheck disable=SC2034 + mem_node_max="29GB" + ;; + "kjet") + max_tasks_per_node=40 + # shellcheck disable=SC2034 + mem_node_max="88GB" + ;; + *) + echo "FATAL ERROR: Unknown partition ${PARTITION_BATCH} specified for ${machine}" + exit 3 + esac + ;; + "S4") + case ${PARTITION_BATCH} in + "s4") max_tasks_per_node=32 + # shellcheck disable=SC2034 + mem_node_max="168GB" + ;; + "ivy") + max_tasks_per_node=20 + # shellcheck disable=SC2034 + mem_node_max="128GB" + ;; + *) + echo "FATAL ERROR: Unknown partition ${PARTITION_BATCH} specified for ${machine}" + exit 3 + esac + ;; + "AWSPW") + export PARTITION_BATCH="compute" + max_tasks_per_node=40 + # TODO Supply a max mem/node value for AWS + # shellcheck disable=SC2034 + mem_node_max="" + ;; + "CONTAINER") + max_tasks_per_node=1 + # TODO Supply a max mem/node value for a container + # shellcheck disable=SC2034 + mem_node_max="" + ;; + *) + echo "FATAL ERROR: Unknown machine encountered by ${BASH_SOURCE[0]}" + exit 2 + ;; +esac + +export max_tasks_per_node + +case ${step} in + "prep") + walltime='00:30:00' + ntasks=4 + tasks_per_node=2 + threads_per_task=1 + memory="40GB" + ;; + + "prepsnowobs") + walltime="00:05:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + ;; + + "prepatmiodaobs") + walltime="00:30:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "aerosol_init") + walltime="00:05:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + NTASKS=${ntasks} + memory="6GB" + ;; + + "waveinit") + walltime="00:10:00" + ntasks=12 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + NTASKS=${ntasks} + memory="2GB" + ;; + + "waveprep") + walltime="00:10:00" + ntasks_gdas=5 + ntasks_gfs=65 + threads_per_task=1 + + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + NTASKS_gdas=${ntasks_gdas} + NTASKS_gfs=${ntasks_gfs} + memory_gdas="100GB" + memory_gfs="150GB" + ;; + + "wavepostsbs") + walltime_gdas="00:20:00" + walltime_gfs="03:00:00" + ntasks=8 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + NTASKS=${ntasks} + memory_gdas="10GB" + memory_gfs="10GB" + ;; + + # The wavepost*pnt* jobs are I/O heavy and do not scale well to large nodes. + # Limit the number of tasks/node to 40. + "wavepostbndpnt") + walltime="03:00:00" + ntasks=240 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + export is_exclusive=True + if [[ ${tasks_per_node} -gt 40 ]]; then + tasks_per_node=40 + export is_exclusive=False fi - -elif [[ "${step}" = "preplandobs" ]]; then - export wtime_preplandobs="00:05:00" - npe_preplandobs=1 - export npe_preplandobs - export nth_preplandobs=1 - npe_node_preplandobs=1 - export npe_node_preplandobs - -elif [[ "${step}" = "prepatmiodaobs" ]]; then - export wtime_prepatmiodaobs="00:10:00" - export npe_prepatmiodaobs=1 - export nth_prepatmiodaobs=1 - npe_node_prepatmiodaobs=$(echo "${npe_node_max} / ${nth_prepatmiodaobs}" | bc) - export npe_node_prepatmiodaobs - -elif [[ "${step}" = "aerosol_init" ]]; then - export wtime_aerosol_init="00:05:00" - export npe_aerosol_init=1 - export nth_aerosol_init=1 - npe_node_aerosol_init=$(echo "${npe_node_max} / ${nth_aerosol_init}" | bc) - export npe_node_aerosol_init - export NTASKS=${npe_aerosol_init} - export memory_aerosol_init="6G" - -elif [[ "${step}" = "waveinit" ]]; then - - export wtime_waveinit="00:10:00" - export npe_waveinit=12 - export nth_waveinit=1 - npe_node_waveinit=$(echo "${npe_node_max} / ${nth_waveinit}" | bc) - export npe_node_waveinit - export NTASKS=${npe_waveinit} - export memory_waveinit="2GB" - -elif [[ "${step}" = "waveprep" ]]; then - - export wtime_waveprep="00:10:00" - export npe_waveprep=5 - export npe_waveprep_gfs=65 - export nth_waveprep=1 - export nth_waveprep_gfs=1 - npe_node_waveprep=$(echo "${npe_node_max} / ${nth_waveprep}" | bc) - export npe_node_waveprep - npe_node_waveprep_gfs=$(echo "${npe_node_max} / ${nth_waveprep_gfs}" | bc) - export npe_node_waveprep_gfs - export NTASKS=${npe_waveprep} - export NTASKS_gfs=${npe_waveprep_gfs} - export memory_waveprep="100GB" - export memory_waveprep_gfs="150GB" - -elif [[ "${step}" = "wavepostsbs" ]]; then - - export wtime_wavepostsbs="00:20:00" - export wtime_wavepostsbs_gfs="03:00:00" - export npe_wavepostsbs=8 - export nth_wavepostsbs=1 - npe_node_wavepostsbs=$(echo "${npe_node_max} / ${nth_wavepostsbs}" | bc) - export npe_node_wavepostsbs - export NTASKS=${npe_wavepostsbs} - export memory_wavepostsbs="10GB" - export memory_wavepostsbs_gfs="10GB" - -elif [[ "${step}" = "wavepostbndpnt" ]]; then - - export wtime_wavepostbndpnt="01:00:00" - export npe_wavepostbndpnt=240 - export nth_wavepostbndpnt=1 - npe_node_wavepostbndpnt=$(echo "${npe_node_max} / ${nth_wavepostbndpnt}" | bc) - export npe_node_wavepostbndpnt - export NTASKS=${npe_wavepostbndpnt} + NTASKS=${ntasks} + ;; + + "wavepostbndpntbll") + walltime="01:00:00" + ntasks=448 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True - -elif [[ "${step}" = "wavepostbndpntbll" ]]; then - - export wtime_wavepostbndpntbll="01:00:00" - export npe_wavepostbndpntbll=448 - export nth_wavepostbndpntbll=1 - npe_node_wavepostbndpntbll=$(echo "${npe_node_max} / ${nth_wavepostbndpntbll}" | bc) - export npe_node_wavepostbndpntbll - export NTASKS=${npe_wavepostbndpntbll} + if [[ ${tasks_per_node} -gt 40 ]]; then + tasks_per_node=40 + export is_exclusive=False + fi + NTASKS=${ntasks} + ;; + + "wavepostpnt") + walltime="04:00:00" + ntasks=200 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True - -elif [[ "${step}" = "wavepostpnt" ]]; then - - export wtime_wavepostpnt="04:00:00" - export npe_wavepostpnt=200 - export nth_wavepostpnt=1 - npe_node_wavepostpnt=$(echo "${npe_node_max} / ${nth_wavepostpnt}" | bc) - export npe_node_wavepostpnt - export NTASKS=${npe_wavepostpnt} + if [[ ${tasks_per_node} -gt 40 ]]; then + tasks_per_node=40 + export is_exclusive=False + fi + NTASKS=${ntasks} + ;; + + "wavegempak") + walltime="02:00:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + NTASKS=${ntasks} + memory="1GB" + ;; + + "waveawipsbulls") + walltime="00:20:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + NTASKS=${ntasks} export is_exclusive=True - -elif [[ "${step}" = "wavegempak" ]]; then - - export wtime_wavegempak="02:00:00" - export npe_wavegempak=1 - export nth_wavegempak=1 - npe_node_wavegempak=$(echo "${npe_node_max} / ${nth_wavegempak}" | bc) - export npe_node_wavegempak - export NTASKS=${npe_wavegempak} - export memory_wavegempak="1GB" - -elif [[ "${step}" = "waveawipsbulls" ]]; then - - export wtime_waveawipsbulls="00:20:00" - export npe_waveawipsbulls=1 - export nth_waveawipsbulls=1 - npe_node_waveawipsbulls=$(echo "${npe_node_max} / ${nth_waveawipsbulls}" | bc) - export npe_node_waveawipsbulls - export NTASKS=${npe_waveawipsbulls} + ;; + + "waveawipsgridded") + walltime="02:00:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + NTASKS=${ntasks} + memory_gfs="1GB" + ;; + + "atmanlinit") + export layout_x=${layout_x_atmanl} + export layout_y=${layout_y_atmanl} + + export layout_gsib_x=$(( layout_x * 3 )) + export layout_gsib_y=$(( layout_y * 2 )) + + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="3072M" + ;; + + "atmanlvar") + export layout_x=${layout_x_atmanl} + export layout_y=${layout_y_atmanl} + + walltime="00:30:00" + ntasks_gdas=$(( layout_x * layout_y * 6 )) + ntasks_gfs=$(( layout_x * layout_y * 6 )) + threads_per_task_gdas=1 + threads_per_task_gfs=${threads_per_task_gdas} + tasks_per_node_gdas=$(( max_tasks_per_node / threads_per_task_gdas )) + tasks_per_node_gfs=$(( max_tasks_per_node / threads_per_task_gfs )) + memory="96GB" export is_exclusive=True - -elif [[ ${step} = "waveawipsgridded" ]]; then - - export wtime_waveawipsgridded="02:00:00" - export npe_waveawipsgridded=1 - export nth_waveawipsgridded=1 - npe_node_waveawipsgridded=$(echo "${npe_node_max} / ${nth_waveawipsgridded}" | bc) - export npe_node_waveawipsgridded - export NTASKS=${npe_waveawipsgridded} - export memory_waveawipsgridded_gfs="1GB" - -elif [[ "${step}" = "atmanlinit" ]]; then - - # make below case dependent later - export layout_x=1 - export layout_y=1 - - layout_gsib_x=$(echo "${layout_x} * 3" | bc) - export layout_gsib_x - layout_gsib_y=$(echo "${layout_y} * 2" | bc) - export layout_gsib_y - - export wtime_atmanlinit="00:10:00" - export npe_atmanlinit=1 - export nth_atmanlinit=1 - npe_node_atmanlinit=$(echo "${npe_node_max} / ${nth_atmanlinit}" | bc) - export npe_node_atmanlinit - export memory_atmanlinit="3072M" - -elif [[ "${step}" = "atmanlrun" ]]; then - - # make below case dependent later - export layout_x=1 - export layout_y=1 - - export wtime_atmanlrun="00:30:00" - npe_atmanlrun=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmanlrun - npe_atmanlrun_gfs=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmanlrun_gfs - export nth_atmanlrun=1 - export nth_atmanlrun_gfs=${nth_atmanlrun} - npe_node_atmanlrun=$(echo "${npe_node_max} / ${nth_atmanlrun}" | bc) - export npe_node_atmanlrun + ;; + + "atmanlfv3inc") + export layout_x=${layout_x_atmanl} + export layout_y=${layout_y_atmanl} + + walltime="00:30:00" + ntasks_gdas=$(( layout_x * layout_y * 6 )) + ntasks_gfs=$(( layout_x * layout_y * 6 )) + threads_per_task_gdas=1 + threads_per_task_gfs=${threads_per_task_gdas} + tasks_per_node_gdas=$(( max_tasks_per_node / threads_per_task_gdas )) + tasks_per_node_gfs=$(( max_tasks_per_node / threads_per_task_gfs )) + memory="96GB" export is_exclusive=True + ;; -elif [[ "${step}" = "atmanlfinal" ]]; then - - export wtime_atmanlfinal="00:30:00" - export npe_atmanlfinal=${npe_node_max} - export nth_atmanlfinal=1 - npe_node_atmanlfinal=$(echo "${npe_node_max} / ${nth_atmanlfinal}" | bc) - export npe_node_atmanlfinal + "atmanlfinal") + walltime="00:30:00" + ntasks=${max_tasks_per_node} + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True + ;; -elif [[ "${step}" = "landanl" ]]; then - # below lines are for creating JEDI YAML - case ${CASE} in - C768) + "snowanl") + # below lines are for creating JEDI YAML + case ${CASE} in + "C768") layout_x=6 layout_y=6 ;; - C384) + "C384") layout_x=5 layout_y=5 ;; - C192 | C96 | C48) + "C192" | "C96" | "C48") layout_x=1 layout_y=1 ;; - *) - echo "FATAL ERROR: Resolution not supported for land analysis'" - exit 1 - esac - - export layout_x - export layout_y - - export wtime_landanl="00:15:00" - npe_landanl=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_landanl - export nth_landanl=1 - npe_node_landanl=$(echo "${npe_node_max} / ${nth_landanl}" | bc) - export npe_node_landanl - -elif [[ "${step}" = "aeroanlinit" ]]; then - - # below lines are for creating JEDI YAML - case ${CASE} in - C768) + *) + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 + esac + + export layout_x + export layout_y + + walltime="00:15:00" + ntasks=$(( layout_x * layout_y * 6 )) + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "prepobsaero") + walltime="00:30:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + memory="96GB" + ;; + + "aeroanlinit") + # below lines are for creating JEDI YAML + case ${CASE} in + "C768") layout_x=8 layout_y=8 ;; - C384) + "C384") layout_x=8 layout_y=8 ;; - C192 | C96) + "C192" | "C96") layout_x=8 layout_y=8 ;; - C48 ) + "C48" ) # this case is for testing only layout_x=1 layout_y=1 ;; *) - echo "FATAL ERROR: Resolution not supported for aerosol analysis'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 esac export layout_x export layout_y - - export wtime_aeroanlinit="00:10:00" - export npe_aeroanlinit=1 - export nth_aeroanlinit=1 - npe_node_aeroanlinit=$(echo "${npe_node_max} / ${nth_aeroanlinit}" | bc) - export npe_node_aeroanlinit - export memory_aeroanlinit="3072M" - -elif [[ "${step}" = "aeroanlrun" ]]; then - - case ${CASE} in - C768) + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="3072M" + ;; + + "aeroanlrun") + case ${CASE} in + "C768") layout_x=8 layout_y=8 ;; - C384) + "C384") layout_x=8 layout_y=8 ;; - C192 | C96) + "C192" | "C96") layout_x=8 layout_y=8 ;; - C48 ) + "C48" ) # this case is for testing only layout_x=1 layout_y=1 ;; *) - echo "FATAL ERROR: Resolution ${CASE} is not supported, ABORT!" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 esac export layout_x export layout_y - export wtime_aeroanlrun="00:30:00" - npe_aeroanlrun=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_aeroanlrun - npe_aeroanlrun_gfs=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_aeroanlrun_gfs - export nth_aeroanlrun=1 - export nth_aeroanlrun_gfs=1 - npe_node_aeroanlrun=$(echo "${npe_node_max} / ${nth_aeroanlrun}" | bc) - export npe_node_aeroanlrun + walltime="00:30:00" + ntasks=$(( layout_x * layout_y * 6 )) + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True + ;; + + "aeroanlfinal") + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="3072M" + ;; + + "ocnanalprep") + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="24GB" + ;; + + "prepoceanobs") + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="48GB" + ;; + + "marinebmat") + npes=16 + ntasks=16 + case ${OCNRES} in + "025") ntasks=480;; + "050") ntasks=16;; + "500") ntasks=16;; + *) + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${OCNRES}" + exit 4 + esac -elif [[ "${step}" = "aeroanlfinal" ]]; then - - export wtime_aeroanlfinal="00:10:00" - export npe_aeroanlfinal=1 - export nth_aeroanlfinal=1 - npe_node_aeroanlfinal=$(echo "${npe_node_max} / ${nth_aeroanlfinal}" | bc) - export npe_node_aeroanlfinal - export memory_aeroanlfinal="3072M" - -elif [[ "${step}" = "ocnanalprep" ]]; then - - export wtime_ocnanalprep="00:10:00" - export npe_ocnanalprep=1 - export nth_ocnanalprep=1 - npe_node_ocnanalprep=$(echo "${npe_node_max} / ${nth_ocnanalprep}" | bc) - export npe_node_ocnanalprep - export memory_ocnanalprep="24GB" - -elif [[ "${step}" = "prepoceanobs" ]]; then - - export wtime_prepoceanobs="00:10:00" - export npe_prepoceanobs=1 - export nth_prepoceanobs=1 - npe_node_prepoceanobs=$(echo "${npe_node_max} / ${nth_prepoceanobs}" | bc) - export npe_node_prepoceanobs - export memory_prepoceanobs="24GB" - - -elif [[ "${step}" = "ocnanalbmat" ]]; then - npes=16 - case ${CASE} in - C384) - npes=480 + walltime="00:30:00" + threads_per_task=1 + export is_exclusive=True + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "ocnanalrun") + ntasks=16 + case ${OCNRES} in + "025") + ntasks=480 + memory="96GB" ;; - C96) - npes=16 + "050") + ntasks=16 + memory="96GB" ;; - C48) - npes=16 + "500") + ntasks=16 + memory="24GB" ;; *) - echo "FATAL: Resolution not supported'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${OCNRES}" + exit 4 esac - export wtime_ocnanalbmat="00:30:00" - export npe_ocnanalbmat=${npes} - export nth_ocnanalbmat=1 + walltime="00:15:00" + threads_per_task=1 export is_exclusive=True - npe_node_ocnanalbmat=$(echo "${npe_node_max} / ${nth_ocnanalbmat}" | bc) - export npe_node_ocnanalbmat - -elif [[ "${step}" = "ocnanalrun" ]]; then - npes=16 - case ${CASE} in - C384) - npes=480 - memory_ocnanalrun="128GB" + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "ocnanalecen") + ntasks=16 + case ${OCNRES} in + "025") + ntasks=40 + memory="96GB" ;; - C96) - npes=16 + "050") + ntasks=16 + memory="96GB" ;; - C48) - npes=16 - memory_ocnanalrun="64GB" + "500") + ntasks=16 + memory="24GB" ;; *) - echo "FATAL: Resolution not supported'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${OCNRES}" + exit 4 esac - export wtime_ocnanalrun="00:15:00" - export npe_ocnanalrun=${npes} - export nth_ocnanalrun=2 + walltime="00:10:00" + threads_per_task=1 export is_exclusive=True - npe_node_ocnanalrun=$(echo "${npe_node_max} / ${nth_ocnanalrun}" | bc) - export npe_node_ocnanalrun - export memory_ocnanalrun - -elif [[ "${step}" = "ocnanalchkpt" ]]; then - - export wtime_ocnanalchkpt="00:10:00" - export npe_ocnanalchkpt=1 - export nth_ocnanalchkpt=1 - npe_node_ocnanalchkpt=$(echo "${npe_node_max} / ${nth_ocnanalchkpt}" | bc) - export npe_node_ocnanalchkpt - case ${CASE} in - C384) - export memory_ocnanalchkpt="128GB" + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "marineanalletkf") + ntasks=16 + case ${OCNRES} in + "025") + ntasks=480 + memory="96GB" ;; - C96) - export memory_ocnanalchkpt="32GB" + "050") + ntasks=16 + memory="96GB" ;; - C48) - export memory_ocnanalchkpt="32GB" + "500") + ntasks=16 + memory="24GB" ;; *) - echo "FATAL: Resolution not supported'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${OCNRES}" + exit 4 esac -elif [[ "${step}" = "ocnanalpost" ]]; then - - export wtime_ocnanalpost="00:30:00" - export npe_ocnanalpost=${npe_node_max} - export nth_ocnanalpost=1 - npe_node_ocnanalpost=$(echo "${npe_node_max} / ${nth_ocnanalpost}" | bc) - export npe_node_ocnanalpost - -elif [[ "${step}" = "ocnanalvrfy" ]]; then - - export wtime_ocnanalvrfy="00:35:00" - export npe_ocnanalvrfy=1 - export nth_ocnanalvrfy=1 - npe_node_ocnanalvrfy=$(echo "${npe_node_max} / ${nth_ocnanalvrfy}" | bc) - export npe_node_ocnanalvrfy - export memory_ocnanalvrfy="24GB" - -elif [[ "${step}" = "anal" ]]; then - - export wtime_anal="00:50:00" - export wtime_anal_gfs="00:40:00" - export npe_anal=780 - export nth_anal=5 - export npe_anal_gfs=825 - export nth_anal_gfs=5 - if [[ "${machine}" = "WCOSS2" ]]; then - export nth_anal=8 - export nth_anal_gfs=8 - fi - if [[ "${CASE}" = "C384" ]]; then - export npe_anal=160 - export npe_anal_gfs=160 - export nth_anal=10 - export nth_anal_gfs=10 - if [[ "${machine}" = "S4" ]]; then - #On the S4-s4 partition, this is accomplished by increasing the task - #count to a multiple of 32 - if [[ ${PARTITION_BATCH} = "s4" ]]; then - export npe_anal=416 - export npe_anal_gfs=416 - fi - #S4 is small, so run this task with just 1 thread - export nth_anal=1 - export nth_anal_gfs=1 - export wtime_anal="02:00:00" - fi - fi - if [[ "${CASE}" = "C192" || "${CASE}" = "C96" || "${CASE}" = "C48" ]]; then - export npe_anal=84 - export npe_anal_gfs=84 - if [[ "${machine}" = "S4" ]]; then - export nth_anal=4 - export nth_anal_gfs=4 - #Adjust job count for S4 - if [[ "${PARTITION_BATCH}" = "s4" ]]; then - export npe_anal=88 - export npe_anal_gfs=88 - elif [[ ${PARTITION_BATCH} = "ivy" ]]; then - export npe_anal=90 - export npe_anal_gfs=90 - fi - fi + walltime="00:10:00" + threads_per_task=1 + export is_exclusive=True + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + + "ocnanalchkpt") + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + case ${OCNRES} in + "025") + memory="128GB" + ntasks=40;; + "050") + memory="32GB" + ntasks=16;; + "500") + memory="32GB" + ntasks=8;; + *) + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${OCNRES}" + exit 4 + esac + ;; + + "ocnanalpost") + walltime="00:30:00" + ntasks=${max_tasks_per_node} + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "ocnanalvrfy") + walltime="00:35:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="24GB" + ;; + + "anal") + walltime_gdas="01:20:00" + walltime_gfs="01:00:00" + case ${CASE} in + "C768") + ntasks_gdas=780 + ntasks_gfs=825 + threads_per_task=5 + ;; + "C384") + ntasks_gdas=160 + ntasks_gfs=160 + threads_per_task=10 + ;; + "C192" | "C96" | "C48") + ntasks_gdas=84 + ntasks_gfs=84 + threads_per_task=5 + ;; + *) + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 + ;; + esac + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + export threads_per_task_cycle=${threads_per_task} + export tasks_per_node_cycle=$(( max_tasks_per_node / threads_per_task_cycle )) + export is_exclusive=True + ;; + + "analcalc") + walltime="00:15:00" + ntasks=127 + export ntasks_calcanl="${ntasks}" + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + export threads_per_task_echgres_gdas=4 + export threads_per_task_echgres_gfs=12 + export is_exclusive=True + memory="48GB" + if [[ "${CASE}" == "C384" || "${CASE}" == "C768" ]]; then + memory="${mem_node_max}" fi - npe_node_anal=$(echo "${npe_node_max} / ${nth_anal}" | bc) - export npe_node_anal - export nth_cycle=${nth_anal} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle + ;; + + "analdiag") + walltime="00:15:00" + ntasks=96 # Should be at least twice ediag's tasks + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="48GB" + ;; + + "sfcanl") + walltime="00:20:00" + ntasks=${ntiles:-6} + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True + ;; -elif [[ "${step}" = "analcalc" ]]; then - - export wtime_analcalc="00:10:00" - export npe_analcalc=127 - export ntasks="${npe_analcalc}" - export nth_analcalc=1 - export nth_echgres=4 - export nth_echgres_gfs=12 - npe_node_analcalc=$(echo "${npe_node_max} / ${nth_analcalc}" | bc) - export npe_node_analcalc + "fcst" | "efcs") export is_exclusive=True - export memory_analcalc="48GB" -elif [[ "${step}" = "analdiag" ]]; then - - export wtime_analdiag="00:15:00" - export npe_analdiag=96 # Should be at least twice npe_ediag - export nth_analdiag=1 - npe_node_analdiag=$(echo "${npe_node_max} / ${nth_analdiag}" | bc) - export npe_node_analdiag - export memory_analdiag="48GB" + _RUN=${RUN:-"gfs"} + _RUN=${RUN/enkf/} + + # Declare variables from config.ufs based on _RUN + # Export layout and write task variables, but not ntasks/threads + # Capitalize _RUN for write tasks + for var in layout_x layout_y ntasks_fv3 ntasks_quilt nthreads_fv3 nthreads_ufs \ + WRITE_GROUP WRTTASK_PER_GROUP_PER_THREAD; do + if [[ ${var} =~ "layout" ]]; then + ufs_var_name="${var}_${_RUN}" + declare -x "${var}"="${!ufs_var_name}" + elif [[ ${var} =~ "WR" ]]; then + ufs_var_name="${var}_${_RUN^^}" + declare -x "${var}"="${!ufs_var_name}" + else + ufs_var_name="${var}_${_RUN}" + declare "${var}"="${!ufs_var_name}" + fi + done -elif [[ "${step}" = "sfcanl" ]]; then + # Will not set mediator threads if we are skipping the mediator + if [[ ${_RUN} == "gfs" ]]; then + nthreads_mediator=${nthreads_mediator_gfs:-} + elif [[ ${_RUN} == "gdas" ]]; then + nthreads_mediator=${nthreads_mediator_gdas:-} + fi - export wtime_sfcanl="00:10:00" - export npe_sfcanl=6 - export nth_sfcanl=1 - npe_node_sfcanl=$(echo "${npe_node_max} / ${nth_sfcanl}" | bc) - export npe_node_sfcanl - export is_exclusive=True + # Determine if using ESMF-managed threading or traditional threading + # If using traditional threading, set them to 1 + if [[ "${USE_ESMF_THREADING:-}" == "YES" ]]; then + export UFS_THREADS=1 + else # traditional threading + export UFS_THREADS=${nthreads_ufs:-1} + nthreads_fv3=1 + nthreads_mediator=1 + [[ "${DO_WAVE}" == "YES" ]] && nthreads_ww3=1 + [[ "${DO_OCN}" == "YES" ]] && nthreads_mom6=1 + [[ "${DO_ICE}" == "YES" ]] && nthreads_cice6=1 + fi -elif [[ "${step}" = "fcst" || "${step}" = "efcs" ]]; then + if (( ntiles > 6 )); then + export layout_x_nest=${layout_x_nest:-10} + export layout_y_nest=${layout_y_nest:-10} + export npx_nest=${npx_nest:-1441} + export npy_nest=${npy_nest:-961} + fi - export is_exclusive=True + # PETS for the atmosphere dycore + (( FV3PETS = ntasks_fv3 * nthreads_fv3 )) + echo "FV3 using (nthreads, PETS) = (${nthreads_fv3}, ${FV3PETS})" - if [[ "${step}" = "fcst" ]]; then - _CDUMP_LIST=${CDUMP:-"gdas gfs"} - elif [[ "${step}" = "efcs" ]]; then - _CDUMP_LIST=${CDUMP:-"enkfgdas enkfgfs"} + # PETS for quilting + if [[ "${QUILTING:-}" == ".true." ]]; then + (( QUILTPETS = ntasks_quilt * nthreads_fv3 )) + (( WRTTASK_PER_GROUP = WRTTASK_PER_GROUP_PER_THREAD )) + export WRTTASK_PER_GROUP + else + QUILTPETS=0 + fi + echo "QUILT using (nthreads, PETS) = (${nthreads_fv3}, ${QUILTPETS})" + + # Total PETS for the atmosphere component + ATMTHREADS=${nthreads_fv3} + (( ATMPETS = FV3PETS + QUILTPETS )) + export ATMPETS ATMTHREADS + echo "FV3ATM using (nthreads, PETS) = (${ATMTHREADS}, ${ATMPETS})" + + # Total PETS for the coupled model (starting w/ the atmosphere) + NTASKS_TOT=${ATMPETS} + + # The mediator PETS can overlap with other components, usually it lands on the atmosphere tasks. + # However, it is suggested limiting mediator PETS to 300, as it may cause the slow performance. + # See https://docs.google.com/document/d/1bKpi-52t5jIfv2tuNHmQkYUe3hkKsiG_DG_s6Mnukog/edit + # TODO: Update reference when moved to ufs-weather-model RTD + MEDTHREADS=${nthreads_mediator:-1} + MEDPETS=${MEDPETS:-${FV3PETS}} + (( "${MEDPETS}" > 300 )) && MEDPETS=300 + export MEDPETS MEDTHREADS + echo "MEDIATOR using (threads, PETS) = (${MEDTHREADS}, ${MEDPETS})" + + CHMPETS=0; CHMTHREADS=0 + if [[ "${DO_AERO}" == "YES" ]]; then + # GOCART shares the same grid and forecast tasks as FV3 (do not add write grid component tasks). + (( CHMTHREADS = ATMTHREADS )) + (( CHMPETS = FV3PETS )) + # Do not add to NTASKS_TOT + echo "GOCART using (threads, PETS) = (${CHMTHREADS}, ${CHMPETS})" fi + export CHMPETS CHMTHREADS + + WAVPETS=0; WAVTHREADS=0 + if [[ "${DO_WAVE}" == "YES" ]]; then + (( WAVPETS = ntasks_ww3 * nthreads_ww3 )) + (( WAVTHREADS = nthreads_ww3 )) + echo "WW3 using (threads, PETS) = (${WAVTHREADS}, ${WAVPETS})" + (( NTASKS_TOT = NTASKS_TOT + WAVPETS )) + fi + export WAVPETS WAVTHREADS + + OCNPETS=0; OCNTHREADS=0 + if [[ "${DO_OCN}" == "YES" ]]; then + (( OCNPETS = ntasks_mom6 * nthreads_mom6 )) + (( OCNTHREADS = nthreads_mom6 )) + echo "MOM6 using (threads, PETS) = (${OCNTHREADS}, ${OCNPETS})" + (( NTASKS_TOT = NTASKS_TOT + OCNPETS )) + fi + export OCNPETS OCNTHREADS + + ICEPETS=0; ICETHREADS=0 + if [[ "${DO_ICE}" == "YES" ]]; then + (( ICEPETS = ntasks_cice6 * nthreads_cice6 )) + (( ICETHREADS = nthreads_cice6 )) + echo "CICE6 using (threads, PETS) = (${ICETHREADS}, ${ICEPETS})" + (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) + fi + export ICEPETS ICETHREADS - # During workflow creation, we need resources for all CDUMPs and CDUMP is undefined - for _CDUMP in ${_CDUMP_LIST}; do - if [[ "${_CDUMP}" =~ "gfs" ]]; then - export layout_x=${layout_x_gfs} - export layout_y=${layout_y_gfs} - export WRITE_GROUP=${WRITE_GROUP_GFS} - export WRTTASK_PER_GROUP_PER_THREAD=${WRTTASK_PER_GROUP_PER_THREAD_GFS} - ntasks_fv3=${ntasks_fv3_gfs} - ntasks_quilt=${ntasks_quilt_gfs} - nthreads_fv3=${nthreads_fv3_gfs} - fi - - # PETS for the atmosphere dycore - (( FV3PETS = ntasks_fv3 * nthreads_fv3 )) - echo "FV3 using (nthreads, PETS) = (${nthreads_fv3}, ${FV3PETS})" - - # PETS for quilting - if [[ "${QUILTING:-}" = ".true." ]]; then - (( QUILTPETS = ntasks_quilt * nthreads_fv3 )) - (( WRTTASK_PER_GROUP = WRTTASK_PER_GROUP_PER_THREAD )) - export WRTTASK_PER_GROUP - else - QUILTPETS=0 - fi - echo "QUILT using (nthreads, PETS) = (${nthreads_fv3}, ${QUILTPETS})" - - # Total PETS for the atmosphere component - ATMTHREADS=${nthreads_fv3} - (( ATMPETS = FV3PETS + QUILTPETS )) - export ATMPETS ATMTHREADS - echo "FV3ATM using (nthreads, PETS) = (${ATMTHREADS}, ${ATMPETS})" - - # Total PETS for the coupled model (starting w/ the atmosphere) - NTASKS_TOT=${ATMPETS} - - # The mediator PETS can overlap with other components, usually it lands on the atmosphere tasks. - # However, it is suggested limiting mediator PETS to 300, as it may cause the slow performance. - # See https://docs.google.com/document/d/1bKpi-52t5jIfv2tuNHmQkYUe3hkKsiG_DG_s6Mnukog/edit - # TODO: Update reference when moved to ufs-weather-model RTD - MEDTHREADS=${nthreads_mediator:-1} - MEDPETS=${MEDPETS:-${FV3PETS}} - [[ "${MEDPETS}" -gt 300 ]] && MEDPETS=300 - export MEDPETS MEDTHREADS - echo "MEDIATOR using (threads, PETS) = (${MEDTHREADS}, ${MEDPETS})" - - CHMPETS=0; CHMTHREADS=0 - if [[ "${DO_AERO}" = "YES" ]]; then - # GOCART shares the same grid and forecast tasks as FV3 (do not add write grid component tasks). - (( CHMTHREADS = ATMTHREADS )) - (( CHMPETS = FV3PETS )) - # Do not add to NTASKS_TOT - echo "GOCART using (threads, PETS) = (${CHMTHREADS}, ${CHMPETS})" - fi - export CHMPETS CHMTHREADS - - WAVPETS=0; WAVTHREADS=0 - if [[ "${DO_WAVE}" = "YES" ]]; then - (( WAVPETS = ntasks_ww3 * nthreads_ww3 )) - (( WAVTHREADS = nthreads_ww3 )) - echo "WW3 using (threads, PETS) = (${WAVTHREADS}, ${WAVPETS})" - (( NTASKS_TOT = NTASKS_TOT + WAVPETS )) - fi - export WAVPETS WAVTHREADS - - OCNPETS=0; OCNTHREADS=0 - if [[ "${DO_OCN}" = "YES" ]]; then - (( OCNPETS = ntasks_mom6 * nthreads_mom6 )) - (( OCNTHREADS = nthreads_mom6 )) - echo "MOM6 using (threads, PETS) = (${OCNTHREADS}, ${OCNPETS})" - (( NTASKS_TOT = NTASKS_TOT + OCNPETS )) - fi - export OCNPETS OCNTHREADS - - ICEPETS=0; ICETHREADS=0 - if [[ "${DO_ICE}" = "YES" ]]; then - (( ICEPETS = ntasks_cice6 * nthreads_cice6 )) - (( ICETHREADS = nthreads_cice6 )) - echo "CICE6 using (threads, PETS) = (${ICETHREADS}, ${ICEPETS})" - (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) - fi - export ICEPETS ICETHREADS - - echo "Total PETS for ${_CDUMP} = ${NTASKS_TOT}" - - if [[ "${_CDUMP}" =~ "gfs" ]]; then - declare -x "npe_${step}_gfs"="${NTASKS_TOT}" - declare -x "nth_${step}_gfs"=1 # ESMF handles threading for the UFS-weather-model - declare -x "npe_node_${step}_gfs"="${npe_node_max}" - else - declare -x "npe_${step}"="${NTASKS_TOT}" - declare -x "nth_${step}"=1 # ESMF handles threading for the UFS-weather-model - declare -x "npe_node_${step}"="${npe_node_max}" - fi + echo "Total PETS for ${RUN:-gfs} = ${NTASKS_TOT}" - done + declare -x "ntasks"="${NTASKS_TOT}" + declare -x "threads_per_task"="${UFS_THREADS}" + declare -x "tasks_per_node"="${max_tasks_per_node}" case "${CASE}" in "C48" | "C96" | "C192") - declare -x "wtime_${step}"="00:30:00" - declare -x "wtime_${step}_gfs"="03:00:00" + declare -x "walltime_gdas"="00:20:00" + declare -x "walltime_enkfgdas"="00:20:00" + declare -x "walltime_gfs"="03:00:00" + declare -x "walltime_enkfgfs"="00:20:00" ;; "C384") - declare -x "wtime_${step}"="00:20:00" - declare -x "wtime_${step}_gfs"="06:00:00" + declare -x "walltime_gdas"="00:30:00" + declare -x "walltime_enkfgdas"="00:30:00" + declare -x "walltime_gfs"="06:00:00" + declare -x "walltime_enkfgfs"="00:30:00" ;; "C768" | "C1152") - declare -x "wtime_${step}"="01:00:00" - declare -x "wtime_${step}_gfs"="06:00:00" + # Not valid resolutions for ensembles + declare -x "walltime_gdas"="00:40:00" + declare -x "walltime_gfs"="06:00:00" ;; *) - echo "FATAL ERROR: Resolution ${CASE} not supported in ${step}" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 ;; esac - unset _CDUMP _CDUMP_LIST + unset _RUN unset NTASKS_TOT + ;; -elif [[ "${step}" = "ocnpost" ]]; then - - export wtime_ocnpost="00:30:00" - export npe_ocnpost=1 - export npe_node_ocnpost=1 - export nth_ocnpost=1 - export memory_ocnpost="96G" - if [[ "${machine}" == "JET" ]]; then - # JET only has 88GB of requestable memory per node - # so a second node is required to meet the requiremtn - npe_ocnpost=2 - fi - -elif [[ "${step}" = "upp" ]]; then + "oceanice_products") + walltime="00:15:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 + memory="96GB" + ;; + "upp") case "${CASE}" in "C48" | "C96") - export npe_upp=${CASE:1} + ntasks=${CASE:1} ;; - "C192" | "C384" | "C768") - export npe_upp=120 + "C192" | "C384" | "C768" ) + ntasks=120 + memory="${mem_node_max}" ;; *) - echo "FATAL ERROR: Resolution '${CASE}' not supported for UPP'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 ;; esac - export npe_node_upp=${npe_upp} + tasks_per_node=${ntasks} - export nth_upp=1 + threads_per_task=1 - export wtime_upp="00:15:00" - if [[ "${npe_node_upp}" -gt "${npe_node_max}" ]]; then - export npe_node_upp=${npe_node_max} + walltime="00:15:00" + if (( tasks_per_node > max_tasks_per_node )); then + tasks_per_node=${max_tasks_per_node} fi export is_exclusive=True + ;; -elif [[ ${step} = "atmos_products" ]]; then - - export wtime_atmos_products="00:15:00" - export npe_atmos_products=24 - export nth_atmos_products=1 - export npe_node_atmos_products="${npe_atmos_products}" - export wtime_atmos_products_gfs="${wtime_atmos_products}" - export npe_atmos_products_gfs="${npe_atmos_products}" - export nth_atmos_products_gfs="${nth_atmos_products}" - export npe_node_atmos_products_gfs="${npe_node_atmos_products}" + "atmos_products") + walltime="00:15:00" + ntasks=24 + threads_per_task=1 + tasks_per_node="${ntasks}" export is_exclusive=True - -elif [[ ${step} = "verfozn" ]]; then - - export wtime_verfozn="00:05:00" - export npe_verfozn=1 - export nth_verfozn=1 - export npe_node_verfozn=1 - export memory_verfozn="1G" - -elif [[ ${step} = "verfrad" ]]; then - - export wtime_verfrad="00:40:00" - export npe_verfrad=1 - export nth_verfrad=1 - export npe_node_verfrad=1 - export memory_verfrad="5G" - -elif [[ ${step} = "vminmon" ]]; then - - export wtime_vminmon="00:05:00" - export npe_vminmon=1 - export nth_vminmon=1 - export npe_node_vminmon=1 - export wtime_vminmon_gfs="00:05:00" - export npe_vminmon_gfs=1 - export nth_vminmon_gfs=1 - export npe_node_vminmon_gfs=1 - export memory_vminmon="1G" - -elif [[ ${step} = "tracker" ]]; then - - export wtime_tracker="00:10:00" - export npe_tracker=1 - export nth_tracker=1 - export npe_node_tracker=1 - export memory_tracker="4G" - -elif [[ ${step} = "genesis" ]]; then - - export wtime_genesis="00:25:00" - export npe_genesis=1 - export nth_genesis=1 - export npe_node_genesis=1 - export memory_genesis="4G" - -elif [[ ${step} = "genesis_fsu" ]]; then - - export wtime_genesis_fsu="00:10:00" - export npe_genesis_fsu=1 - export nth_genesis_fsu=1 - export npe_node_genesis_fsu=1 - export memory_genesis_fsu="4G" - -elif [[ "${step}" = "fit2obs" ]]; then - - export wtime_fit2obs="00:20:00" - export npe_fit2obs=3 - export nth_fit2obs=1 - export npe_node_fit2obs=1 - export memory_fit2obs="20G" - if [[ "${machine}" == "WCOSS2" ]]; then export npe_node_fit2obs=3 ; fi - -elif [[ "${step}" = "metp" ]]; then - - export nth_metp=1 - export wtime_metp="03:00:00" - export npe_metp=4 - export npe_node_metp=4 - export wtime_metp_gfs="06:00:00" - export npe_metp_gfs=4 - export npe_node_metp_gfs=4 + ;; + + "verfozn") + walltime="00:05:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + memory="1G" + ;; + + "verfrad") + walltime="00:40:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + memory="5G" + ;; + + "vminmon") + walltime="00:05:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + memory="1G" + ;; + + "tracker") + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + memory="4G" + ;; + + "genesis") + walltime="00:25:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + memory="10G" + ;; + + "genesis_fsu") + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=1 + memory="10G" + ;; + + "fit2obs") + walltime="00:20:00" + ntasks=3 + threads_per_task=1 + tasks_per_node=1 + memory="20G" + [[ ${CASE} == "C768" ]] && memory="80GB" + ;; + + "metp") + threads_per_task=1 + walltime_gdas="03:00:00" + walltime_gfs="06:00:00" + ntasks=1 + tasks_per_node=1 + export memory="80G" + ;; + + "echgres") + walltime="00:10:00" + ntasks=3 + threads_per_task=${max_tasks_per_node} + tasks_per_node=1 + ;; + + "init") + walltime="00:30:00" + ntasks=24 + threads_per_task=1 + tasks_per_node=6 + memory="70GB" + ;; + + "init_chem") + walltime="00:30:00" + ntasks=1 + tasks_per_node=1 export is_exclusive=True + ;; -elif [[ "${step}" = "echgres" ]]; then - - export wtime_echgres="00:10:00" - export npe_echgres=3 - export nth_echgres=${npe_node_max} - export npe_node_echgres=1 - if [[ "${machine}" = "WCOSS2" ]]; then - export memory_echgres="200GB" - fi - -elif [[ "${step}" = "init" ]]; then - - export wtime_init="00:30:00" - export npe_init=24 - export nth_init=1 - export npe_node_init=6 - export memory_init="70G" - -elif [[ "${step}" = "init_chem" ]]; then - - export wtime_init_chem="00:30:00" - export npe_init_chem=1 - export npe_node_init_chem=1 + "mom6ic") + walltime="00:30:00" + ntasks=24 + tasks_per_node=24 export is_exclusive=True - -elif [[ "${step}" = "mom6ic" ]]; then - - export wtime_mom6ic="00:30:00" - export npe_mom6ic=24 - export npe_node_mom6ic=24 + ;; + + "arch" | "earc" | "getic") + walltime="06:00:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 + memory="4096M" + ;; + + "cleanup") + walltime="00:15:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 + memory="4096M" + ;; + + "stage_ic") + walltime="00:15:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 export is_exclusive=True + ;; + + "atmensanlinit") + export layout_x=${layout_x_atmensanl} + export layout_y=${layout_y_atmensanl} + + walltime="00:10:00" + ntasks=1 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="3072M" + ;; + + "atmensanlletkf") + export layout_x=${layout_x_atmensanl} + export layout_y=${layout_y_atmensanl} + + walltime="00:30:00" + ntasks=$(( layout_x * layout_y * 6 )) + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="96GB" + export is_exclusive=True + ;; -elif [[ ${step} = "arch" || ${step} = "earc" || ${step} = "getic" ]]; then - - eval "export wtime_${step}='06:00:00'" - eval "export npe_${step}=1" - eval "export npe_node_${step}=1" - eval "export nth_${step}=1" - eval "export memory_${step}=4096M" - if [[ "${machine}" = "WCOSS2" ]]; then - eval "export memory_${step}=50GB" - fi - -elif [[ ${step} == "cleanup" ]]; then - export wtime_cleanup="01:00:00" - export npe_cleanup=1 - export npe_node_cleanup=1 - export nth_cleanup=1 - export memory_cleanup="4096M" - -elif [[ ${step} = "stage_ic" ]]; then + "atmensanlfv3inc") + export layout_x=${layout_x_atmensanl} + export layout_y=${layout_y_atmensanl} - export wtime_stage_ic="00:15:00" - export npe_stage_ic=1 - export npe_node_stage_ic=1 - export nth_stage_ic=1 + walltime="00:30:00" + ntasks=$(( layout_x * layout_y * 6 )) + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="96GB" export is_exclusive=True + ;; -elif [[ "${step}" = "atmensanlinit" ]]; then - - # make below case dependent later - export layout_x=1 - export layout_y=1 - - export wtime_atmensanlinit="00:10:00" - export npe_atmensanlinit=1 - export nth_atmensanlinit=1 - npe_node_atmensanlinit=$(echo "${npe_node_max} / ${nth_atmensanlinit}" | bc) - export npe_node_atmensanlinit - export memory_atmensanlinit="3072M" - -elif [[ "${step}" = "atmensanlrun" ]]; then - - # make below case dependent later - export layout_x=1 - export layout_y=1 - - export wtime_atmensanlrun="00:30:00" - npe_atmensanlrun=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmensanlrun - npe_atmensanlrun_gfs=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmensanlrun_gfs - export nth_atmensanlrun=1 - export nth_atmensanlrun_gfs=${nth_atmensanlrun} - npe_node_atmensanlrun=$(echo "${npe_node_max} / ${nth_atmensanlrun}" | bc) - export npe_node_atmensanlrun + "atmensanlfinal") + walltime="00:30:00" + ntasks=${max_tasks_per_node} + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True + ;; -elif [[ "${step}" = "atmensanlfinal" ]]; then + "eobs" | "eomg") + if [[ "${step}" == "eobs" ]]; then + walltime="00:15:00" + else + walltime="00:30:00" + fi - export wtime_atmensanlfinal="00:30:00" - export npe_atmensanlfinal=${npe_node_max} - export nth_atmensanlfinal=1 - npe_node_atmensanlfinal=$(echo "${npe_node_max} / ${nth_atmensanlfinal}" | bc) - export npe_node_atmensanlfinal + case ${CASE} in + "C768") ntasks=200;; + "C384") ntasks=100;; + "C192" | "C96" | "C48") ntasks=40;; + *) + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 + ;; + esac + threads_per_task=2 + # NOTE The number of tasks and cores used must be the same for eobs + # See https://github.com/NOAA-EMC/global-workflow/issues/2092 for details + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True - -elif [[ "${step}" = "eobs" || "${step}" = "eomg" ]]; then - - export wtime_eobs="00:15:00" - export wtime_eomg="01:00:00" - if [[ "${CASE}" = "C768" ]]; then - export npe_eobs=200 - elif [[ "${CASE}" = "C384" ]]; then - export npe_eobs=100 - elif [[ "${CASE}" = "C192" || "${CASE}" = "C96" || "${CASE}" = "C48" ]]; then - export npe_eobs=40 + # Unset tasks_per_node if it is not a multiple of max_tasks_per_node + # to prevent dropping data on the floor. This should be set int + # config.resources.{machine} instead. This will result in an error at + # experiment setup time if not set in config.resources.{machine}. + if [[ $(( max_tasks_per_node % tasks_per_node )) != 0 ]]; then + unset max_tasks_per_node fi - export npe_eomg=${npe_eobs} - export nth_eobs=2 - export nth_eomg=${nth_eobs} - npe_node_eobs=$(echo "${npe_node_max} / ${nth_eobs}" | bc) - export npe_node_eobs + ;; + + "ediag") + walltime="00:15:00" + ntasks=48 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + memory="30GB" + ;; + + "eupd") + walltime="00:30:00" + case ${CASE} in + "C768") + ntasks=480 + threads_per_task=6 + ;; + "C384") + ntasks=270 + threads_per_task=8 + ;; + "C192" | "C96" | "C48") + ntasks=42 + threads_per_task=2 + ;; + *) + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 + ;; + esac + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True - # The number of tasks and cores used must be the same for eobs - # See https://github.com/NOAA-EMC/global-workflow/issues/2092 for details - # For S4, this is accomplished by running 10 tasks/node - if [[ ${machine} = "S4" ]]; then - export npe_node_eobs=10 - elif [[ ${machine} = "HERCULES" ]]; then - # For Hercules, this is only an issue at C384; use 20 tasks/node - if [[ ${CASE} = "C384" ]]; then - export npe_node_eobs=20 - fi - fi - export npe_node_eomg=${npe_node_eobs} - -elif [[ "${step}" = "ediag" ]]; then - - export wtime_ediag="00:15:00" - export npe_ediag=48 - export nth_ediag=1 - npe_node_ediag=$(echo "${npe_node_max} / ${nth_ediag}" | bc) - export npe_node_ediag - export memory_ediag="30GB" - -elif [[ "${step}" = "eupd" ]]; then - - export wtime_eupd="00:30:00" - if [[ "${CASE}" = "C768" ]]; then - export npe_eupd=480 - export nth_eupd=6 - if [[ "${machine}" = "WCOSS2" ]]; then - export npe_eupd=315 - export nth_eupd=14 - fi - elif [[ "${CASE}" = "C384" ]]; then - export npe_eupd=270 - export nth_eupd=8 - if [[ "${machine}" = "WCOSS2" ]]; then - export npe_eupd=315 - export nth_eupd=14 - elif [[ "${machine}" = "S4" ]]; then - export npe_eupd=160 - export nth_eupd=2 - fi - elif [[ "${CASE}" = "C192" || "${CASE}" = "C96" || "${CASE}" = "C48" ]]; then - export npe_eupd=42 - export nth_eupd=2 - if [[ "${machine}" = "HERA" || "${machine}" = "JET" ]]; then - export nth_eupd=4 - fi + ;; + + "ecen") + walltime="00:10:00" + ntasks=80 + threads_per_task=4 + if [[ ${CASE} == "C384" || ${CASE} == "C192" || ${CASE} == "C96" || ${CASE} == "C48" ]]; then + threads_per_task=2 fi - npe_node_eupd=$(echo "${npe_node_max} / ${nth_eupd}" | bc) - export npe_node_eupd - export is_exclusive=True - -elif [[ "${step}" = "ecen" ]]; then - - export wtime_ecen="00:10:00" - export npe_ecen=80 - export nth_ecen=4 - if [[ "${machine}" = "HERA" ]]; then export nth_ecen=6; fi - if [[ "${CASE}" = "C384" || "${CASE}" = "C192" || "${CASE}" = "C96" || "${CASE}" = "C48" ]]; then export nth_ecen=2; fi - npe_node_ecen=$(echo "${npe_node_max} / ${nth_ecen}" | bc) - export npe_node_ecen - export nth_cycle=${nth_ecen} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + export threads_per_task_cycle=${threads_per_task} + export tasks_per_node_cycle=${tasks_per_node} export is_exclusive=True - -elif [[ "${step}" = "esfc" ]]; then - - export wtime_esfc="00:08:00" - export npe_esfc=80 - export nth_esfc=1 - npe_node_esfc=$(echo "${npe_node_max} / ${nth_esfc}" | bc) - export npe_node_esfc - export nth_cycle=${nth_esfc} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle - export memory_esfc="80GB" - -elif [[ "${step}" = "epos" ]]; then - - export wtime_epos="00:15:00" - export npe_epos=80 - export nth_epos=1 - npe_node_epos=$(echo "${npe_node_max} / ${nth_epos}" | bc) - export npe_node_epos + ;; + + "esfc") + walltime="00:15:00" + ntasks=80 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + threads_per_task_cycle=${threads_per_task} + tasks_per_node_cycle=$(( max_tasks_per_node / threads_per_task_cycle )) + ;; + + "epos") + walltime="00:15:00" + [[ ${CASE} == "C768" ]] && walltime="00:25:00" + ntasks=80 + threads_per_task=1 + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True - -elif [[ "${step}" = "postsnd" ]]; then - - export wtime_postsnd="02:00:00" - export npe_postsnd=40 - export nth_postsnd=8 - export npe_node_postsnd=10 - export npe_postsndcfp=9 - export npe_node_postsndcfp=1 - postsnd_req_cores=$(echo "${npe_node_postsnd} * ${nth_postsnd}" | bc) - if [[ ${postsnd_req_cores} -gt "${npe_node_max}" ]]; then - npe_node_postsnd=$(echo "${npe_node_max} / ${nth_postsnd}" | bc) - export npe_node_postsnd + ;; + + "postsnd") + walltime="02:00:00" + ntasks=40 + threads_per_task=8 + tasks_per_node=10 + export ntasks_postsndcfp=9 + export tasks_per_node_postsndcfp=1 + postsnd_req_cores=$(( tasks_per_node * threads_per_task )) + if (( postsnd_req_cores > max_tasks_per_node )); then + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) fi export is_exclusive=True - -elif [[ "${step}" = "awips" ]]; then - - export wtime_awips="03:30:00" - export npe_awips=1 - export npe_node_awips=1 - export nth_awips=1 - export memory_awips="3GB" - -elif [[ ${step} = "npoess" ]]; then - - export wtime_npoess="03:30:00" - export npe_npoess=1 - export npe_node_npoess=1 - export nth_npoess=1 - export memory_npoess="3GB" - -elif [[ ${step} = "gempak" ]]; then - - export wtime_gempak="03:00:00" - export npe_gempak=2 - export npe_gempak_gfs=28 - export npe_node_gempak=2 - export npe_node_gempak_gfs=28 - export nth_gempak=1 - export memory_gempak="4GB" - export memory_gempak_gfs="2GB" - -elif [[ ${step} = "mos_stn_prep" ]]; then - - export wtime_mos_stn_prep="00:10:00" - export npe_mos_stn_prep=3 - export npe_node_mos_stn_prep=3 - export nth_mos_stn_prep=1 - export memory_mos_stn_prep="5GB" - export NTASK="${npe_mos_stn_prep}" - export PTILE="${npe_node_mos_stn_prep}" - -elif [[ ${step} = "mos_grd_prep" ]]; then - - export wtime_mos_grd_prep="00:10:00" - export npe_mos_grd_prep=4 - export npe_node_mos_grd_prep=4 - export nth_mos_grd_prep=1 - export memory_mos_grd_prep="16GB" - export NTASK="${npe_mos_grd_prep}" - export PTILE="${npe_node_mos_grd_prep}" - -elif [[ ${step} = "mos_ext_stn_prep" ]]; then - - export wtime_mos_ext_stn_prep="00:15:00" - export npe_mos_ext_stn_prep=2 - export npe_node_mos_ext_stn_prep=2 - export nth_mos_ext_stn_prep=1 - export memory_mos_ext_stn_prep="5GB" - export NTASK="${npe_mos_ext_stn_prep}" - export PTILE="${npe_node_mos_ext_stn_prep}" - -elif [[ ${step} = "mos_ext_grd_prep" ]]; then - - export wtime_mos_ext_grd_prep="00:10:00" - export npe_mos_ext_grd_prep=7 - export npe_node_mos_ext_grd_prep=7 - export nth_mos_ext_grd_prep=1 - export memory_mos_ext_grd_prep="3GB" - export NTASK="${npe_mos_ext_grd_prep}" - export PTILE="${npe_node_mos_ext_grd_prep}" - -elif [[ ${step} = "mos_stn_fcst" ]]; then - - export wtime_mos_stn_fcst="00:10:00" - export npe_mos_stn_fcst=5 - export npe_node_mos_stn_fcst=5 - export nth_mos_stn_fcst=1 - export memory_mos_stn_fcst="40GB" - export NTASK="${npe_mos_stn_fcst}" - export PTILE="${npe_node_mos_stn_fcst}" - -elif [[ ${step} = "mos_grd_fcst" ]]; then - - export wtime_mos_grd_fcst="00:10:00" - export npe_mos_grd_fcst=7 - export npe_node_mos_grd_fcst=7 - export nth_mos_grd_fcst=1 - export memory_mos_grd_fcst="50GB" - export NTASK="${npe_mos_grd_fcst}" - export PTILE="${npe_node_mos_grd_fcst}" - -elif [[ ${step} = "mos_ext_stn_fcst" ]]; then - - export wtime_mos_ext_stn_fcst="00:20:00" - export npe_mos_ext_stn_fcst=3 - export npe_node_mos_ext_stn_fcst=3 - export nth_mos_ext_stn_fcst=1 - export memory_mos_ext_stn_fcst="50GB" - export NTASK="${npe_mos_ext_stn_fcst}" - export PTILE="${npe_node_mos_ext_stn_fcst}" + ;; + + "awips") + walltime="03:30:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 + memory="3GB" + ;; + + "npoess") + walltime="03:30:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 + memory="3GB" + ;; + + "gempak") + walltime="00:30:00" + ntasks_gdas=2 + ntasks_gfs=28 + tasks_per_node_gdas=2 + tasks_per_node_gfs=28 + threads_per_task=1 + memory_gdas="4GB" + memory_gfs="2GB" + ;; + + "fbwind") + walltime="00:05:00" + ntasks=1 + threads_per_task=1 + memory="4GB" + ;; + + "mos_stn_prep") + walltime="00:10:00" + ntasks=3 + tasks_per_node=3 + threads_per_task=1 + memory="5GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + ;; + + "mos_grd_prep") + walltime="00:10:00" + ntasks=4 + tasks_per_node=4 + threads_per_task=1 + memory="16GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + ;; + + "mos_ext_stn_prep") + walltime="00:15:00" + ntasks=2 + tasks_per_node=2 + threads_per_task=1 + memory="5GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + ;; + + "mos_ext_grd_prep") + walltime="00:10:00" + ntasks=7 + tasks_per_node=7 + threads_per_task=1 + memory="3GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + ;; + + "mos_stn_fcst") + walltime="00:10:00" + ntasks=5 + tasks_per_node=5 + threads_per_task=1 + memory="40GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + ;; + + "mos_grd_fcst") + walltime="00:10:00" + ntasks=7 + tasks_per_node=7 + threads_per_task=1 + memory="50GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + ;; + + "mos_ext_stn_fcst") + walltime="00:20:00" + ntasks=3 + tasks_per_node=3 + threads_per_task=1 + memory="50GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" export prepost=True - -elif [[ ${step} = "mos_ext_grd_fcst" ]]; then - - export wtime_mos_ext_grd_fcst="00:10:00" - export npe_mos_ext_grd_fcst=7 - export npe_node_mos_ext_grd_fcst=7 - export nth_mos_ext_grd_fcst=1 - export memory_mos_ext_grd_fcst="50GB" - export NTASK="${npe_mos_ext_grd_fcst}" - export PTILE="${npe_node_mos_ext_grd_fcst}" - -elif [[ ${step} = "mos_stn_prdgen" ]]; then - - export wtime_mos_stn_prdgen="00:10:00" - export npe_mos_stn_prdgen=1 - export npe_node_mos_stn_prdgen=1 - export nth_mos_stn_prdgen=1 - export memory_mos_stn_prdgen="15GB" - export NTASK="${npe_mos_stn_prdgen}" - export PTILE="${npe_node_mos_stn_prdgen}" + ;; + + "mos_ext_grd_fcst") + walltime="00:10:00" + ntasks=7 + tasks_per_node=7 + threads_per_task=1 + memory="50GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + ;; + + "mos_stn_prdgen") + walltime="00:10:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 + memory="15GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" export prepost=True - -elif [[ ${step} = "mos_grd_prdgen" ]]; then - - export wtime_mos_grd_prdgen="00:40:00" - export npe_mos_grd_prdgen=72 - export npe_node_mos_grd_prdgen=18 - export nth_mos_grd_prdgen=4 - export memory_mos_grd_prdgen="20GB" - export NTASK="${npe_mos_grd_prdgen}" - export PTILE="${npe_node_mos_grd_prdgen}" - export OMP_NUM_THREADS="${nth_mos_grd_prdgen}" - -elif [[ ${step} = "mos_ext_stn_prdgen" ]]; then - - export wtime_mos_ext_stn_prdgen="00:10:00" - export npe_mos_ext_stn_prdgen=1 - export npe_node_mos_ext_stn_prdgen=1 - export nth_mos_ext_stn_prdgen=1 - export memory_mos_ext_stn_prdgen="15GB" - export NTASK="${npe_mos_ext_stn_prdgen}" - export PTILE="${npe_node_mos_ext_stn_prdgen}" + ;; + + "mos_grd_prdgen") + walltime="00:40:00" + ntasks=72 + tasks_per_node=18 + threads_per_task=4 + memory="20GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + export OMP_NUM_THREADS="${threads_per_task}" + ;; + + "mos_ext_stn_prdgen") + walltime="00:10:00" + ntasks=1 + tasks_per_node=1 + threads_per_task=1 + memory="15GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" export prepost=True + ;; + + "mos_ext_grd_prdgen") + walltime="00:30:00" + ntasks=96 + tasks_per_node=6 + threads_per_task=16 + memory="30GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + export OMP_NUM_THREADS="${threads_per_task}" + ;; + + "mos_wx_prdgen") + walltime="00:10:00" + ntasks=4 + tasks_per_node=2 + threads_per_task=2 + memory="10GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + export OMP_NUM_THREADS="${threads_per_task}" + ;; + + "mos_wx_ext_prdgen") + walltime="00:10:00" + ntasks=4 + tasks_per_node=2 + threads_per_task=2 + memory="10GB" + NTASK="${ntasks}" + export PTILE="${tasks_per_node}" + export OMP_NUM_THREADS="${threads_per_task}" + ;; + + *) + echo "FATAL ERROR: Invalid job ${step} passed to ${BASH_SOURCE[0]}" + exit 1 + ;; -elif [[ ${step} = "mos_ext_grd_prdgen" ]]; then - - export wtime_mos_ext_grd_prdgen="00:30:00" - export npe_mos_ext_grd_prdgen=96 - export npe_node_mos_ext_grd_prdgen=6 - export nth_mos_ext_grd_prdgen=16 - export memory_mos_ext_grd_prdgen="30GB" - export NTASK="${npe_mos_ext_grd_prdgen}" - export PTILE="${npe_node_mos_ext_grd_prdgen}" - export OMP_NUM_THREADS="${nth_mos_ext_grd_prdgen}" - -elif [[ ${step} = "mos_wx_prdgen" ]]; then - - export wtime_mos_wx_prdgen="00:10:00" - export npe_mos_wx_prdgen=4 - export npe_node_mos_wx_prdgen=2 - export nth_mos_wx_prdgen=2 - export memory_mos_wx_prdgen="10GB" - export NTASK="${npe_mos_wx_prdgen}" - export PTILE="${npe_node_mos_wx_prdgen}" - export OMP_NUM_THREADS="${nth_mos_wx_prdgen}" - -elif [[ ${step} = "mos_wx_ext_prdgen" ]]; then - - export wtime_mos_wx_ext_prdgen="00:10:00" - export npe_mos_wx_ext_prdgen=4 - export npe_node_mos_wx_ext_prdgen=2 - export nth_mos_wx_ext_prdgen=2 - export memory_mos_wx_ext_prdgen="10GB" - export NTASK="${npe_mos_wx_ext_prdgen}" - export PTILE="${npe_node_mos_wx_ext_prdgen}" - export OMP_NUM_THREADS="${nth_mos_wx_ext_prdgen}" - -else - - echo "Invalid step = ${step}, ABORT!" - exit 2 +esac +# Get machine-specific resources, overriding/extending the above assignments +if [[ -f "${EXPDIR}/config.resources.${machine}" ]]; then + source "${EXPDIR}/config.resources.${machine}" fi +# Check for RUN-specific variables and export them +for resource_var in threads_per_task ntasks tasks_per_node NTASKS memory walltime; do + run_resource_var="${resource_var}_${RUN}" + if [[ -n "${!run_resource_var+0}" ]]; then + declare -x "${resource_var}"="${!run_resource_var}" + elif [[ -n "${!resource_var+0}" ]]; then + export "${resource_var?}" + fi +done + echo "END: config.resources" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.GAEA b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.GAEA new file mode 100644 index 0000000000..51007b5b4f --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.GAEA @@ -0,0 +1,27 @@ +#! /usr/bin/env bash + +# Gaea-specific job resources + +case ${step} in + "eobs") + # The number of tasks and cores used must be the same for eobs + # See https://github.com/NOAA-EMC/global-workflow/issues/2092 for details + case ${CASE} in + "C768" | "C384") + export tasks_per_node=50 + ;; + *) + export tasks_per_node=40 + ;; + esac + ;; + + *) + ;; + +esac + +# shellcheck disable=SC2312 +for mem_var in $(env | grep '^memory_' | cut -d= -f1); do + unset "${mem_var}" +done diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERA b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERA new file mode 100644 index 0000000000..36f50508c3 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERA @@ -0,0 +1,35 @@ +#! /usr/bin/env bash + +# Hera-specific job resources + +case ${step} in + "anal") + if [[ "${CASE}" == "C384" ]]; then + export ntasks=270 + export threads_per_task_anal=8 + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + fi + ;; + + "eupd") + case ${CASE} in + "C384") + export ntasks=80 + ;; + "C192" | "C96" | "C48") + export threads_per_task=4 + ;; + *) + ;; + esac + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "ecen") + if [[ "${CASE}" == "C768" ]]; then export threads_per_task=6; fi + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + *) + ;; +esac diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERCULES b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERCULES new file mode 100644 index 0000000000..7a5a74f69c --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.HERCULES @@ -0,0 +1,16 @@ +#! /usr/bin/env bash + +# Hercules-specific job resources + +case ${step} in + "eobs" | "eomg") + # The number of tasks and cores used must be the same for eobs + # See https://github.com/NOAA-EMC/global-workflow/issues/2092 for details + # For Hercules, this is only an issue at C384; use 20 tasks/node + if [[ ${CASE} = "C384" ]]; then + export tasks_per_node=20 + fi + ;; + *) + ;; +esac diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.JET b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.JET new file mode 100644 index 0000000000..47b953c0f4 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.JET @@ -0,0 +1,52 @@ +#! /usr/bin/env bash + +# Jet-specific job resources + +case ${step} in + "anal") + if [[ "${CASE}" == "C384" ]]; then + export ntasks=270 + export threads_per_task=8 + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + fi + ;; + + "eobs") + if [[ "${PARTITION_BATCH}" == "xjet" ]]; then + # The number of tasks and cores used must be the same for eobs + # See https://github.com/NOAA-EMC/global-workflow/issues/2092 for details + # This would also be an issues for vjet and sjet if anyone runs on those nodes. + export tasks_per_node=10 + fi + ;; + + "eupd") + case ${CASE} in + "C384") + export ntasks=80 + ;; + "C192" | "C96" | "C48") + export threads_per_task=4 + ;; + *) + ;; + esac + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "ecen") + if [[ "${CASE}" == "C768" ]]; then export threads_per_task=6; fi + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "upp") + export memory="${mem_node_max}" + ;; + + "esfc") + export memory="${mem_node_max}" + ;; + + *) + ;; +esac diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.ORION b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.ORION new file mode 100644 index 0000000000..e3e81b0182 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.ORION @@ -0,0 +1,17 @@ +#! /usr/bin/env bash + +# Orion-specific job resources + +case ${step} in + "anal") + # TODO: + # On Orion, after Rocky 9 upgrade, GSI performance is degraded. + # Remove this block once GSI issue is resolved + # https://github.com/NOAA-EMC/GSI/pull/764 + # https://github.com/JCSDA/spack-stack/issues/1166 + export wtime_anal_gdas="02:40:00" + export wtime_anal_gfs="02:00:00" + ;; + *) + ;; +esac diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.S4 b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.S4 new file mode 100644 index 0000000000..1af64bf250 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.S4 @@ -0,0 +1,59 @@ +#! /usr/bin/env bash + +# S4-specific job resources + +case ${step} in + "anal") + case ${CASE} in + "C384") + #Some of the intermediate data can be lost if the number of tasks + #per node does not match the number of reserved cores/node. + #On the S4-s4 partition, this is accomplished by increasing the task + #count to a multiple of 32 + if [[ ${PARTITION_BATCH} = "s4" ]]; then + export ntasks_gdas=416 + export ntasks_gfs=416 + fi + #S4 is small, so run this task with just 1 thread + export threads_per_task=1 + export walltime_gdas="02:00:00" + export walltime_gfs="02:00:00" + ;; + "C192" | "C96" | "C48") + export threads_per_task=4 + if [[ ${PARTITION_BATCH} == "s4" ]]; then + export ntasks_gdas=88 + export ntasks_gfs=88 + elif [[ ${PARTITION_BATCH} == "ivy" ]]; then + export ntasks_gdas=90 + export ntasks_gfs=90 + fi + ;; + *) + ;; + esac + export tasks_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "eobs") + # The number of tasks and cores used must be the same for eobs + # See https://github.com/NOAA-EMC/global-workflow/issues/2092 for details + # For S4, this is accomplished by running 10 tasks/node + export tasks_per_node=10 + ;; + + "eupd") + if [[ "${CASE}" == "C384" ]]; then + export ntasks=160 + export threads_per_task=2 + fi + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "ediag") + export memory="${mem_node_max}" + ;; + + *) + ;; +esac diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.WCOSS2 b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.WCOSS2 new file mode 100644 index 0000000000..a0a69fa8d1 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.resources.WCOSS2 @@ -0,0 +1,59 @@ +#! /usr/bin/env bash + +# WCOSS2-specific job resources + +case ${step} in + "prep") + export is_exclusive=True + export memory="480GB" + ;; + + "anal") + if [[ "${CASE}" == "C768" ]]; then + export threads_per_task=8 + # Make ntasks a multiple of 16 + export ntasks_gdas=784 + export ntasks_gfs=832 + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + fi + ;; + + "fit2obs") + export tasks_per_node=3 + ;; + + "echgres") + export memory="200GB" + ;; + + "arch" | "earc" | "getic") + declare -x "memory"="50GB" + ;; + + "eupd") + case ${CASE} in + "C768" | "C384") + export ntasks=315 + export threads_per_task=14 + ;; + *) + ;; + esac + export tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + ;; + + "eobs") + case ${CASE} in + "C768" | "C384") + export tasks_per_node=50 + ;; + *) + export tasks_per_node=40 + ;; + esac + ;; + + *) + ;; + +esac diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.sfcanl b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.sfcanl index 9592fb77c9..e2fde8992a 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.sfcanl +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.sfcanl @@ -8,4 +8,9 @@ echo "BEGIN: config.sfcanl" # Get task specific resources . $EXPDIR/config.resources sfcanl +# Turn off NST in JEDIATMVAR +if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then + export DONST="NO" +fi + echo "END: config.sfcanl" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.snowanl b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.snowanl new file mode 100644 index 0000000000..b8b04f2edc --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.snowanl @@ -0,0 +1,30 @@ +#! /usr/bin/env bash + +########## config.snowanl ########## +# configuration common to snow analysis tasks + +echo "BEGIN: config.snowanl" + +# Get task specific resources +source "${EXPDIR}/config.resources" snowanl + +export OBS_LIST="${PARMgfs}/gdas/snow/obs/lists/gdas_snow.yaml.j2" + +# Name of the JEDI executable and its yaml template +export JEDIEXE="${EXECgfs}/gdas.x" +export JEDIYAML="${PARMgfs}/gdas/snow/letkfoi/letkfoi.yaml.j2" + +# Ensemble member properties +export SNOWDEPTHVAR="snodl" +export BESTDDEV="30." # Background Error Std. Dev. for LETKFOI + +# Name of the executable that applies increment to bkg and its namelist template +export APPLY_INCR_EXE="${EXECgfs}/apply_incr.exe" +export APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/letkfoi/apply_incr_nml.j2" + +export JEDI_FIX_YAML="${PARMgfs}/gdas/snow_jedi_fix.yaml.j2" + +export io_layout_x=1 +export io_layout_y=1 + +echo "END: config.snowanl" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.stage_ic b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.stage_ic index 7f3956af4d..9956e8af6a 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.stage_ic +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.stage_ic @@ -8,7 +8,7 @@ echo "BEGIN: config.stage_ic" source "${EXPDIR}/config.resources" stage_ic case "${CASE}" in - "C48" | "C96") + "C48" | "C96" | "C192") export CPL_ATMIC="workflow_${CASE}_refactored" export CPL_ICEIC="workflow_${CASE}_refactored" export CPL_OCNIC="workflow_${CASE}_refactored" @@ -21,16 +21,16 @@ case "${CASE}" in export CPL_WAVIC=workflow_C384_refactored ;; "C768") - export CPL_ATMIC=HR2_refactored - export CPL_ICEIC=HR1_refactored - export CPL_OCNIC=HR1_refactored - export CPL_WAVIC=HR1_refactored + export CPL_ATMIC=HR3C768 + export CPL_ICEIC=HR3marine + export CPL_OCNIC=HR3marine + export CPL_WAVIC=HR3marine ;; "C1152") - export CPL_ATMIC=HR2_C1152_refactored - export CPL_ICEIC=HR3_refactored - export CPL_OCNIC=HR3_refactored - export CPL_WAVIC=HR1_refactored + export CPL_ATMIC=HR3C1152 + export CPL_ICEIC=HR3marine + export CPL_OCNIC=HR3marine + export CPL_WAVIC=HR3marine ;; *) echo "FATAL ERROR Unrecognized resolution: ${CASE}" @@ -38,4 +38,8 @@ case "${CASE}" in ;; esac +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export CPL_ATMIC="GLOBAL-NEST_${CASE}" +fi + echo "END: config.stage_ic" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs index 3aee6a3aa1..20be02e110 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs @@ -15,7 +15,7 @@ if (( $# <= 1 )); then echo "--fv3 C48|C96|C192|C384|C768|C1152|C3072" echo "--mom6 500|100|025" echo "--cice6 500|100|025" - echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_200|glo_500|mx025" + echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_100|glo_200|glo_500|mx025|uglo_100km|uglo_m1g16" echo "--gocart" exit 1 @@ -68,169 +68,271 @@ if [[ "${skip_mom6}" == "false" ]] || [[ "${skip_cice6}" == "false" ]] || [[ "${ skip_mediator=false fi -case "${machine}" in - "WCOSS2") - npe_node_max=128 - ;; - "HERA" | "ORION" ) - npe_node_max=40 - ;; - "HERCULES" ) - npe_node_max=80 - ;; - "JET") - case "${PARTITION_BATCH}" in - "xjet") - npe_node_max=24 - ;; - "vjet" | "sjet") - npe_node_max=16 - ;; - "kjet") - npe_node_max=40 - ;; - *) - echo "FATAL ERROR: Unsupported ${machine} PARTITION_BATCH = ${PARTITION_BATCH}, ABORT!" - exit 1 - ;; - esac - ;; - "S4") - case "${PARTITION_BATCH}" in - "s4") - npe_node_max=32 - ;; - "ivy") - npe_node_max=20 - ;; - *) - echo "FATAL ERROR: Unsupported ${machine} PARTITION_BATCH = ${PARTITION_BATCH}, ABORT!" - exit 1 - ;; - esac - ;; - *) - echo "FATAL ERROR: Unrecognized machine ${machine}" - exit 14 - ;; -esac -export npe_node_max +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + # Describe nest location, interaction with parent, etc. + export grid_type=0 + export stretch_fac=1.0001 + export TARGET_LAT=32.5 + export TARGET_LON=-135.0 + export NEST_LON1=-195.000000 + export NEST_LAT1=-7.500000 + export NEST_LON2=-75.000000 + export NEST_LAT2=72.500000 + export twowaynest=${twowaynest:-.true.} +else + # No nest. + export grid_type=-1 +fi # (Standard) Model resolution dependent variables case "${fv3_res}" in "C48") export DELTIM=1200 - export layout_x=1 - export layout_y=1 + export layout_x_gdas=1 + export layout_y_gdas=1 export layout_x_gfs=1 export layout_y_gfs=1 - export nthreads_fv3=1 + export nthreads_fv3_gdas=1 export nthreads_fv3_gfs=1 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=1 + export xr_cnvcld=".false." # Do not pass conv. clouds to Xu-Randall cloud fraction export cdmbgwd="0.071,2.1,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="40.0,1.77,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=6.0e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 + export k_split=1 + export n_split=4 + export tau=8.0 + export rf_cutoff=100.0 + export fv_sg_adj=3600 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=1 export WRITE_GROUP_GFS=1 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 ;; "C96") - export DELTIM=600 - export layout_x=2 - export layout_y=2 - export layout_x_gfs=2 - export layout_y_gfs=2 - export nthreads_fv3=1 - export nthreads_fv3_gfs=1 - export cdmbgwd="0.14,1.8,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="20.0,2.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=3.0e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 - export WRITE_GROUP_GFS=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=450 + export layout_x_gfs=4 + export layout_y_gfs=4 + export layout_x_nest=12 + export layout_y_nest=10 + export nest_refine=4 + export nest_ioffset=4 + export nest_joffset=9 + export npx_nest=361 + export npy_nest=241 + export NEST_DLON=0.25 + export NEST_DLAT=0.25 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=2 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=2 + else + export DELTIM=600 + export layout_x_gdas=2 + export layout_y_gdas=2 + export layout_x_gfs=2 + export layout_y_gfs=2 + export nthreads_fv3_gdas=1 + export nthreads_fv3_gfs=1 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=1 + export xr_cnvcld=.false. # Do not pass conv. clouds to Xu-Randall cloud fraction + export cdmbgwd="0.14,1.8,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="20.0,2.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=3.0e-3 # setting for UGWPv1 non-stationary GWD + export k_split=1 + export n_split=4 + export tau=8.0 + export rf_cutoff=100.0 + export fv_sg_adj=1800 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=1 + export WRITE_GROUP_GFS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 + fi ;; "C192") - export DELTIM=450 - export layout_x=4 - export layout_y=6 - export layout_x_gfs=4 - export layout_y_gfs=6 - export nthreads_fv3=1 - export nthreads_fv3_gfs=2 - export cdmbgwd="0.23,1.5,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="10.0,3.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=1.5e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - export WRITE_GROUP_GFS=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=5 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=225 + export layout_x_gfs=5 + export layout_y_gfs=6 + export layout_x_nest=15 + export layout_y_nest=25 + export nest_refine=4 + export nest_ioffset=7 + export nest_joffset=19 + export npx_nest=721 + export npy_nest=481 + export NEST_DLON=0.125 + export NEST_DLAT=0.125 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=15 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=15 + else + export DELTIM=600 + export layout_x_gdas=4 + export layout_y_gdas=6 + export layout_x_gfs=4 + export layout_y_gfs=6 + export nthreads_fv3_gdas=1 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=2 + export cdmbgwd="0.23,1.5,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="10.0,3.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=1.5e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=6.0 + export rf_cutoff=100.0 + export fv_sg_adj=1800 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=5 + fi ;; "C384") - export DELTIM=300 - export layout_x=8 - export layout_y=8 - export layout_x_gfs=8 - export layout_y_gfs=8 - export nthreads_fv3=2 - export nthreads_fv3_gfs=2 - export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="5.0,5.0,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=0.8e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - export WRITE_GROUP_GFS=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=8 + export layout_x_gfs=8 + export layout_y_gfs=8 + export layout_x_nest=34 + export layout_y_nest=24 + export nest_refine=4 + export nest_ioffset=13 + export nest_joffset=37 + export npx_nest=1441 + export npy_nest=961 + export NEST_DLON=0.0625 + export NEST_DLAT=0.0625 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=20 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 + else + export DELTIM=300 + export layout_x_gdas=8 + export layout_y_gdas=8 + export layout_x_gfs=8 + export layout_y_gfs=8 + export nthreads_fv3_gdas=2 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=2 + export nthreads_ufs_gfs=2 + export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="5.0,5.0,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=0.8e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=4.0 + export rf_cutoff=100.0 + export fv_sg_adj=900 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + export WRITE_GROUP_GFS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 + fi ;; "C768") - export DELTIM=150 - export layout_x=8 - export layout_y=12 - export layout_x_gfs=12 - export layout_y_gfs=12 - #JKHexport layout_y_gfs=16 - export nthreads_fv3=4 - #JKHexport nthreads_fv3_gfs=4 - export nthreads_fv3_gfs=2 - export cdmbgwd="4.0,0.15,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="2.5,7.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=0.5e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - #JKHexport WRITE_GROUP_GFS=4 - #JKHexport WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 #Note this should be 10 for WCOSS2 - export WRITE_GROUP_GFS=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=40 #Note this should be 10 for WCOSS2 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=75 + export layout_x_gdas=16 + export layout_y_gdas=10 + export layout_x_gfs=16 + export layout_y_gfs=10 + export layout_x_nest=48 + export layout_y_nest=45 + export nthreads_fv3_nest=2 + export nthreads_fv3_gdas=2 + export nthreads_fv3_gfs=2 + export nest_refine=4 + export nest_ioffset=24 + export nest_joffset=72 + export npx_nest=2881 + export npy_nest=1921 + export NEST_DLON=0.0325 + export NEST_DLAT=0.0325 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=90 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=90 + else + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=12 + export layout_x_gfs=12 + export layout_y_gfs=12 + #JKHexport layout_y_gfs=16 + export nthreads_fv3_gdas=4 + #JKHexport nthreads_fv3_gfs=4 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=2 + export cdmbgwd="4.0,0.15,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="2.5,7.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=0.5e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=3.0 + export rf_cutoff=100.0 + export fv_sg_adj=450 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + #JKHexport WRITE_GROUP_GFS=4 + #JKHexport WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 #Note this should be 10 for WCOSS2 + export WRITE_GROUP_GFS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=40 #Note this should be 10 for WCOSS2 + fi ;; "C1152") - export DELTIM=120 - export layout_x=8 - export layout_y=16 + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=16 export layout_x_gfs=8 export layout_y_gfs=16 - export nthreads_fv3=4 + export nthreads_fv3_gdas=4 export nthreads_fv3_gfs=4 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=4 export cdmbgwd="4.0,0.10,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="1.67,8.8,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=0.35e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 # TODO: refine these numbers when a case is available + export k_split=2 + export n_split=6 + export tau=2.5 + export rf_cutoff=100.0 + export fv_sg_adj=450 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 # TODO: refine these numbers when a case is available export WRITE_GROUP_GFS=4 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 # TODO: refine these numbers when a case is available ;; "C3072") export DELTIM=90 export layout_x=16 - export layout_y=32 - export layout_x_gfs=16 + export layout_y_gdas=32 + export layout_x_gfs_gdas=16 export layout_y_gfs=32 - export nthreads_fv3=4 + export nthreads_fv3_gdas=4 export nthreads_fv3_gfs=4 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=4 export cdmbgwd="4.0,0.05,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="0.625,14.1,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=0.13e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 # TODO: refine these numbers when a case is available + export k_split=4 + export n_split=5 + export tau=0.5 + export rf_cutoff=100.0 + export fv_sg_adj=300 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 # TODO: refine these numbers when a case is available export WRITE_GROUP_GFS=4 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 # TODO: refine these numbers when a case is available ;; @@ -240,19 +342,22 @@ case "${fv3_res}" in ;; esac -(( WRTTASK_PER_GROUP_PER_THREAD = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE * 6 )) +(( WRTTASK_PER_GROUP_PER_THREAD_GDAS = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS * 6 )) (( WRTTASK_PER_GROUP_PER_THREAD_GFS = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS * 6 )) -export WRTTASK_PER_GROUP_PER_THREAD +export WRTTASK_PER_GROUP_PER_THREAD_GDAS export WRTTASK_PER_GROUP_PER_THREAD_GFS -(( ntasks_fv3 = layout_x * layout_y * 6 )) +(( ntasks_fv3_gdas = layout_x_gdas * layout_y_gdas * 6 )) (( ntasks_fv3_gfs = layout_x_gfs * layout_y_gfs * 6 )) -export ntasks_fv3 +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + (( ntasks_fv3_gfs += layout_x_nest * layout_y_nest )) +fi +export ntasks_fv3_gdas export ntasks_fv3_gfs -(( ntasks_quilt = WRITE_GROUP * WRTTASK_PER_GROUP_PER_THREAD )) +(( ntasks_quilt_gdas = WRITE_GROUP_GDAS * WRTTASK_PER_GROUP_PER_THREAD_GDAS )) (( ntasks_quilt_gfs = WRITE_GROUP_GFS * WRTTASK_PER_GROUP_PER_THREAD_GFS )) -export ntasks_quilt +export ntasks_quilt_gdas export ntasks_quilt_gfs # Determine whether to use parallel NetCDF based on resolution @@ -279,13 +384,19 @@ export cplice=".false." export cplchm=".false." export cplwav=".false." export cplwav2atm=".false." +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export CCPP_SUITE="${CCPP_SUITE:-FV3_global_nest_v1}" +else +#JKH export CCPP_SUITE="${CCPP_SUITE:-FV3_GFS_v17_p8_ugwpv1}" export CCPP_SUITE="FV3_GFS_v17_p8_ugwpv1_c3_mynn" +fi model_list="atm" # Mediator specific settings if [[ "${skip_mediator}" == "false" ]]; then export cpl=".true." - export nthreads_mediator=${nthreads_fv3} # Use same threads as FV3 + export nthreads_mediator_gfs=${nthreads_fv3_gfs} # Use same threads as FV3 + export nthreads_mediator_gdas=${nthreads_fv3_gdas} export CCPP_SUITE="FV3_GFS_v17_coupled_p8_ugwpv1" # TODO: Does this include FV3_GFS_v17_p8? Can this be used instead of FV3_GFS_v17_p8? fi @@ -307,9 +418,13 @@ if [[ "${skip_mom6}" == "false" ]]; then CHLCLIM="seawifs_1998-2006_smoothed_2X.nc" MOM6_RESTART_SETTING='r' MOM6_RIVER_RUNOFF='False' + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then + MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_MISVAL="0.0" + fi eps_imesh="4.0e-1" MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_25L.nc" - MOM6_DIAG_MISVAL="0.0" MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" ;; @@ -326,12 +441,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RIVER_RUNOFF='False' eps_imesh="2.5e-1" TOPOEDITS="ufs.topo_edits_011818.nc" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='True' ;; @@ -347,12 +462,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RESTART_SETTING='n' MOM6_RIVER_RUNOFF='True' eps_imesh="1.0e-1" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" @@ -369,12 +484,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RIVER_RUNOFF='True' MOM6_RESTART_SETTING="r" eps_imesh="1.0e-1" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" @@ -457,6 +572,10 @@ if [[ "${skip_ww3}" == "false" ]]; then "glo_025") ntasks_ww3=262 ;; + "glo_100") + ntasks_ww3=20 + nthreads_ww3=1 + ;; "glo_200") ntasks_ww3=30 nthreads_ww3=1 @@ -468,6 +587,14 @@ if [[ "${skip_ww3}" == "false" ]]; then "mx025") ntasks_ww3=80 ;; + "uglo_100km") + ntasks_ww3=40 + nthreads_ww3=1 + ;; + "uglo_m1g16") + ntasks_ww3=1000 + nthreads_ww3=1 + ;; *) echo "FATAL ERROR: Unsupported WW3 resolution = ${ww3_res}, ABORT!" exit 1 @@ -484,39 +611,45 @@ if [[ "${skip_gocart}" == "false" ]]; then fi # Set the name of the UFS (previously nems) configure template to use +# Default ufs.configure templates for supported model configurations +if [[ "${USE_ESMF_THREADING:-}" == "YES" ]]; then + tmpl_suffix="_esmf" +fi case "${model_list}" in atm) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atm${tmpl_suffix:-}.IN" ;; atm.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm_aero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atmaero${tmpl_suffix:-}.IN" ;; atm.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" + default_template="${PARMgfs}/ufs/ufs.configure.leapfrog_atm_wav${tmpl_suffix:-}.IN" ;; atm.ocean.ice) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2s${tmpl_suffix:-}.IN" ;; atm.ocean.ice.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sa${tmpl_suffix:-}.IN" ;; atm.ocean.ice.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_outerwave.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sw${tmpl_suffix:-}.IN" ;; atm.ocean.ice.wave.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero_outerwave.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2swa${tmpl_suffix:-}.IN" ;; *) - echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" + echo "FATAL ERROR: Unsupported UFSWM configuration for ${model_list}" exit 16 ;; esac +# Allow user to override the default template +export ufs_configure_template=${ufs_configure_template:-${default_template:-"/dev/null"}} +unset model_list default_template + if [[ ! -r "${ufs_configure_template}" ]]; then echo "FATAL ERROR: ${ufs_configure_template} either doesn't exist or is not readable." exit 17 fi -unset model_list - echo "END: config.ufs" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_12x12_2th_1wg40wt b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_12x12_2th_1wg40wt index 3aee6a3aa1..20be02e110 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_12x12_2th_1wg40wt +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_12x12_2th_1wg40wt @@ -15,7 +15,7 @@ if (( $# <= 1 )); then echo "--fv3 C48|C96|C192|C384|C768|C1152|C3072" echo "--mom6 500|100|025" echo "--cice6 500|100|025" - echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_200|glo_500|mx025" + echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_100|glo_200|glo_500|mx025|uglo_100km|uglo_m1g16" echo "--gocart" exit 1 @@ -68,169 +68,271 @@ if [[ "${skip_mom6}" == "false" ]] || [[ "${skip_cice6}" == "false" ]] || [[ "${ skip_mediator=false fi -case "${machine}" in - "WCOSS2") - npe_node_max=128 - ;; - "HERA" | "ORION" ) - npe_node_max=40 - ;; - "HERCULES" ) - npe_node_max=80 - ;; - "JET") - case "${PARTITION_BATCH}" in - "xjet") - npe_node_max=24 - ;; - "vjet" | "sjet") - npe_node_max=16 - ;; - "kjet") - npe_node_max=40 - ;; - *) - echo "FATAL ERROR: Unsupported ${machine} PARTITION_BATCH = ${PARTITION_BATCH}, ABORT!" - exit 1 - ;; - esac - ;; - "S4") - case "${PARTITION_BATCH}" in - "s4") - npe_node_max=32 - ;; - "ivy") - npe_node_max=20 - ;; - *) - echo "FATAL ERROR: Unsupported ${machine} PARTITION_BATCH = ${PARTITION_BATCH}, ABORT!" - exit 1 - ;; - esac - ;; - *) - echo "FATAL ERROR: Unrecognized machine ${machine}" - exit 14 - ;; -esac -export npe_node_max +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + # Describe nest location, interaction with parent, etc. + export grid_type=0 + export stretch_fac=1.0001 + export TARGET_LAT=32.5 + export TARGET_LON=-135.0 + export NEST_LON1=-195.000000 + export NEST_LAT1=-7.500000 + export NEST_LON2=-75.000000 + export NEST_LAT2=72.500000 + export twowaynest=${twowaynest:-.true.} +else + # No nest. + export grid_type=-1 +fi # (Standard) Model resolution dependent variables case "${fv3_res}" in "C48") export DELTIM=1200 - export layout_x=1 - export layout_y=1 + export layout_x_gdas=1 + export layout_y_gdas=1 export layout_x_gfs=1 export layout_y_gfs=1 - export nthreads_fv3=1 + export nthreads_fv3_gdas=1 export nthreads_fv3_gfs=1 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=1 + export xr_cnvcld=".false." # Do not pass conv. clouds to Xu-Randall cloud fraction export cdmbgwd="0.071,2.1,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="40.0,1.77,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=6.0e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 + export k_split=1 + export n_split=4 + export tau=8.0 + export rf_cutoff=100.0 + export fv_sg_adj=3600 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=1 export WRITE_GROUP_GFS=1 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 ;; "C96") - export DELTIM=600 - export layout_x=2 - export layout_y=2 - export layout_x_gfs=2 - export layout_y_gfs=2 - export nthreads_fv3=1 - export nthreads_fv3_gfs=1 - export cdmbgwd="0.14,1.8,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="20.0,2.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=3.0e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 - export WRITE_GROUP_GFS=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=450 + export layout_x_gfs=4 + export layout_y_gfs=4 + export layout_x_nest=12 + export layout_y_nest=10 + export nest_refine=4 + export nest_ioffset=4 + export nest_joffset=9 + export npx_nest=361 + export npy_nest=241 + export NEST_DLON=0.25 + export NEST_DLAT=0.25 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=2 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=2 + else + export DELTIM=600 + export layout_x_gdas=2 + export layout_y_gdas=2 + export layout_x_gfs=2 + export layout_y_gfs=2 + export nthreads_fv3_gdas=1 + export nthreads_fv3_gfs=1 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=1 + export xr_cnvcld=.false. # Do not pass conv. clouds to Xu-Randall cloud fraction + export cdmbgwd="0.14,1.8,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="20.0,2.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=3.0e-3 # setting for UGWPv1 non-stationary GWD + export k_split=1 + export n_split=4 + export tau=8.0 + export rf_cutoff=100.0 + export fv_sg_adj=1800 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=1 + export WRITE_GROUP_GFS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 + fi ;; "C192") - export DELTIM=450 - export layout_x=4 - export layout_y=6 - export layout_x_gfs=4 - export layout_y_gfs=6 - export nthreads_fv3=1 - export nthreads_fv3_gfs=2 - export cdmbgwd="0.23,1.5,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="10.0,3.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=1.5e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - export WRITE_GROUP_GFS=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=5 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=225 + export layout_x_gfs=5 + export layout_y_gfs=6 + export layout_x_nest=15 + export layout_y_nest=25 + export nest_refine=4 + export nest_ioffset=7 + export nest_joffset=19 + export npx_nest=721 + export npy_nest=481 + export NEST_DLON=0.125 + export NEST_DLAT=0.125 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=15 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=15 + else + export DELTIM=600 + export layout_x_gdas=4 + export layout_y_gdas=6 + export layout_x_gfs=4 + export layout_y_gfs=6 + export nthreads_fv3_gdas=1 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=2 + export cdmbgwd="0.23,1.5,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="10.0,3.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=1.5e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=6.0 + export rf_cutoff=100.0 + export fv_sg_adj=1800 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=5 + fi ;; "C384") - export DELTIM=300 - export layout_x=8 - export layout_y=8 - export layout_x_gfs=8 - export layout_y_gfs=8 - export nthreads_fv3=2 - export nthreads_fv3_gfs=2 - export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="5.0,5.0,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=0.8e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - export WRITE_GROUP_GFS=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=8 + export layout_x_gfs=8 + export layout_y_gfs=8 + export layout_x_nest=34 + export layout_y_nest=24 + export nest_refine=4 + export nest_ioffset=13 + export nest_joffset=37 + export npx_nest=1441 + export npy_nest=961 + export NEST_DLON=0.0625 + export NEST_DLAT=0.0625 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=20 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 + else + export DELTIM=300 + export layout_x_gdas=8 + export layout_y_gdas=8 + export layout_x_gfs=8 + export layout_y_gfs=8 + export nthreads_fv3_gdas=2 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=2 + export nthreads_ufs_gfs=2 + export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="5.0,5.0,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=0.8e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=4.0 + export rf_cutoff=100.0 + export fv_sg_adj=900 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + export WRITE_GROUP_GFS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 + fi ;; "C768") - export DELTIM=150 - export layout_x=8 - export layout_y=12 - export layout_x_gfs=12 - export layout_y_gfs=12 - #JKHexport layout_y_gfs=16 - export nthreads_fv3=4 - #JKHexport nthreads_fv3_gfs=4 - export nthreads_fv3_gfs=2 - export cdmbgwd="4.0,0.15,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="2.5,7.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=0.5e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - #JKHexport WRITE_GROUP_GFS=4 - #JKHexport WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 #Note this should be 10 for WCOSS2 - export WRITE_GROUP_GFS=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=40 #Note this should be 10 for WCOSS2 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=75 + export layout_x_gdas=16 + export layout_y_gdas=10 + export layout_x_gfs=16 + export layout_y_gfs=10 + export layout_x_nest=48 + export layout_y_nest=45 + export nthreads_fv3_nest=2 + export nthreads_fv3_gdas=2 + export nthreads_fv3_gfs=2 + export nest_refine=4 + export nest_ioffset=24 + export nest_joffset=72 + export npx_nest=2881 + export npy_nest=1921 + export NEST_DLON=0.0325 + export NEST_DLAT=0.0325 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=90 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=90 + else + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=12 + export layout_x_gfs=12 + export layout_y_gfs=12 + #JKHexport layout_y_gfs=16 + export nthreads_fv3_gdas=4 + #JKHexport nthreads_fv3_gfs=4 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=2 + export cdmbgwd="4.0,0.15,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="2.5,7.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=0.5e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=3.0 + export rf_cutoff=100.0 + export fv_sg_adj=450 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + #JKHexport WRITE_GROUP_GFS=4 + #JKHexport WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 #Note this should be 10 for WCOSS2 + export WRITE_GROUP_GFS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=40 #Note this should be 10 for WCOSS2 + fi ;; "C1152") - export DELTIM=120 - export layout_x=8 - export layout_y=16 + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=16 export layout_x_gfs=8 export layout_y_gfs=16 - export nthreads_fv3=4 + export nthreads_fv3_gdas=4 export nthreads_fv3_gfs=4 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=4 export cdmbgwd="4.0,0.10,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="1.67,8.8,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=0.35e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 # TODO: refine these numbers when a case is available + export k_split=2 + export n_split=6 + export tau=2.5 + export rf_cutoff=100.0 + export fv_sg_adj=450 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 # TODO: refine these numbers when a case is available export WRITE_GROUP_GFS=4 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 # TODO: refine these numbers when a case is available ;; "C3072") export DELTIM=90 export layout_x=16 - export layout_y=32 - export layout_x_gfs=16 + export layout_y_gdas=32 + export layout_x_gfs_gdas=16 export layout_y_gfs=32 - export nthreads_fv3=4 + export nthreads_fv3_gdas=4 export nthreads_fv3_gfs=4 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=4 export cdmbgwd="4.0,0.05,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="0.625,14.1,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=0.13e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 # TODO: refine these numbers when a case is available + export k_split=4 + export n_split=5 + export tau=0.5 + export rf_cutoff=100.0 + export fv_sg_adj=300 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 # TODO: refine these numbers when a case is available export WRITE_GROUP_GFS=4 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 # TODO: refine these numbers when a case is available ;; @@ -240,19 +342,22 @@ case "${fv3_res}" in ;; esac -(( WRTTASK_PER_GROUP_PER_THREAD = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE * 6 )) +(( WRTTASK_PER_GROUP_PER_THREAD_GDAS = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS * 6 )) (( WRTTASK_PER_GROUP_PER_THREAD_GFS = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS * 6 )) -export WRTTASK_PER_GROUP_PER_THREAD +export WRTTASK_PER_GROUP_PER_THREAD_GDAS export WRTTASK_PER_GROUP_PER_THREAD_GFS -(( ntasks_fv3 = layout_x * layout_y * 6 )) +(( ntasks_fv3_gdas = layout_x_gdas * layout_y_gdas * 6 )) (( ntasks_fv3_gfs = layout_x_gfs * layout_y_gfs * 6 )) -export ntasks_fv3 +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + (( ntasks_fv3_gfs += layout_x_nest * layout_y_nest )) +fi +export ntasks_fv3_gdas export ntasks_fv3_gfs -(( ntasks_quilt = WRITE_GROUP * WRTTASK_PER_GROUP_PER_THREAD )) +(( ntasks_quilt_gdas = WRITE_GROUP_GDAS * WRTTASK_PER_GROUP_PER_THREAD_GDAS )) (( ntasks_quilt_gfs = WRITE_GROUP_GFS * WRTTASK_PER_GROUP_PER_THREAD_GFS )) -export ntasks_quilt +export ntasks_quilt_gdas export ntasks_quilt_gfs # Determine whether to use parallel NetCDF based on resolution @@ -279,13 +384,19 @@ export cplice=".false." export cplchm=".false." export cplwav=".false." export cplwav2atm=".false." +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export CCPP_SUITE="${CCPP_SUITE:-FV3_global_nest_v1}" +else +#JKH export CCPP_SUITE="${CCPP_SUITE:-FV3_GFS_v17_p8_ugwpv1}" export CCPP_SUITE="FV3_GFS_v17_p8_ugwpv1_c3_mynn" +fi model_list="atm" # Mediator specific settings if [[ "${skip_mediator}" == "false" ]]; then export cpl=".true." - export nthreads_mediator=${nthreads_fv3} # Use same threads as FV3 + export nthreads_mediator_gfs=${nthreads_fv3_gfs} # Use same threads as FV3 + export nthreads_mediator_gdas=${nthreads_fv3_gdas} export CCPP_SUITE="FV3_GFS_v17_coupled_p8_ugwpv1" # TODO: Does this include FV3_GFS_v17_p8? Can this be used instead of FV3_GFS_v17_p8? fi @@ -307,9 +418,13 @@ if [[ "${skip_mom6}" == "false" ]]; then CHLCLIM="seawifs_1998-2006_smoothed_2X.nc" MOM6_RESTART_SETTING='r' MOM6_RIVER_RUNOFF='False' + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then + MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_MISVAL="0.0" + fi eps_imesh="4.0e-1" MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_25L.nc" - MOM6_DIAG_MISVAL="0.0" MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" ;; @@ -326,12 +441,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RIVER_RUNOFF='False' eps_imesh="2.5e-1" TOPOEDITS="ufs.topo_edits_011818.nc" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='True' ;; @@ -347,12 +462,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RESTART_SETTING='n' MOM6_RIVER_RUNOFF='True' eps_imesh="1.0e-1" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" @@ -369,12 +484,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RIVER_RUNOFF='True' MOM6_RESTART_SETTING="r" eps_imesh="1.0e-1" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" @@ -457,6 +572,10 @@ if [[ "${skip_ww3}" == "false" ]]; then "glo_025") ntasks_ww3=262 ;; + "glo_100") + ntasks_ww3=20 + nthreads_ww3=1 + ;; "glo_200") ntasks_ww3=30 nthreads_ww3=1 @@ -468,6 +587,14 @@ if [[ "${skip_ww3}" == "false" ]]; then "mx025") ntasks_ww3=80 ;; + "uglo_100km") + ntasks_ww3=40 + nthreads_ww3=1 + ;; + "uglo_m1g16") + ntasks_ww3=1000 + nthreads_ww3=1 + ;; *) echo "FATAL ERROR: Unsupported WW3 resolution = ${ww3_res}, ABORT!" exit 1 @@ -484,39 +611,45 @@ if [[ "${skip_gocart}" == "false" ]]; then fi # Set the name of the UFS (previously nems) configure template to use +# Default ufs.configure templates for supported model configurations +if [[ "${USE_ESMF_THREADING:-}" == "YES" ]]; then + tmpl_suffix="_esmf" +fi case "${model_list}" in atm) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atm${tmpl_suffix:-}.IN" ;; atm.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm_aero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atmaero${tmpl_suffix:-}.IN" ;; atm.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" + default_template="${PARMgfs}/ufs/ufs.configure.leapfrog_atm_wav${tmpl_suffix:-}.IN" ;; atm.ocean.ice) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2s${tmpl_suffix:-}.IN" ;; atm.ocean.ice.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sa${tmpl_suffix:-}.IN" ;; atm.ocean.ice.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_outerwave.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sw${tmpl_suffix:-}.IN" ;; atm.ocean.ice.wave.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero_outerwave.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2swa${tmpl_suffix:-}.IN" ;; *) - echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" + echo "FATAL ERROR: Unsupported UFSWM configuration for ${model_list}" exit 16 ;; esac +# Allow user to override the default template +export ufs_configure_template=${ufs_configure_template:-${default_template:-"/dev/null"}} +unset model_list default_template + if [[ ! -r "${ufs_configure_template}" ]]; then echo "FATAL ERROR: ${ufs_configure_template} either doesn't exist or is not readable." exit 17 fi -unset model_list - echo "END: config.ufs" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_16x16_2th_2wg40wt b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_16x16_2th_2wg40wt index 589358a89e..fdf3fcde7e 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_16x16_2th_2wg40wt +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.ufs_c768_16x16_2th_2wg40wt @@ -15,7 +15,7 @@ if (( $# <= 1 )); then echo "--fv3 C48|C96|C192|C384|C768|C1152|C3072" echo "--mom6 500|100|025" echo "--cice6 500|100|025" - echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_200|glo_500|mx025" + echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_100|glo_200|glo_500|mx025|uglo_100km|uglo_m1g16" echo "--gocart" exit 1 @@ -68,169 +68,271 @@ if [[ "${skip_mom6}" == "false" ]] || [[ "${skip_cice6}" == "false" ]] || [[ "${ skip_mediator=false fi -case "${machine}" in - "WCOSS2") - npe_node_max=128 - ;; - "HERA" | "ORION" ) - npe_node_max=40 - ;; - "HERCULES" ) - npe_node_max=80 - ;; - "JET") - case "${PARTITION_BATCH}" in - "xjet") - npe_node_max=24 - ;; - "vjet" | "sjet") - npe_node_max=16 - ;; - "kjet") - npe_node_max=40 - ;; - *) - echo "FATAL ERROR: Unsupported ${machine} PARTITION_BATCH = ${PARTITION_BATCH}, ABORT!" - exit 1 - ;; - esac - ;; - "S4") - case "${PARTITION_BATCH}" in - "s4") - npe_node_max=32 - ;; - "ivy") - npe_node_max=20 - ;; - *) - echo "FATAL ERROR: Unsupported ${machine} PARTITION_BATCH = ${PARTITION_BATCH}, ABORT!" - exit 1 - ;; - esac - ;; - *) - echo "FATAL ERROR: Unrecognized machine ${machine}" - exit 14 - ;; -esac -export npe_node_max +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + # Describe nest location, interaction with parent, etc. + export grid_type=0 + export stretch_fac=1.0001 + export TARGET_LAT=32.5 + export TARGET_LON=-135.0 + export NEST_LON1=-195.000000 + export NEST_LAT1=-7.500000 + export NEST_LON2=-75.000000 + export NEST_LAT2=72.500000 + export twowaynest=${twowaynest:-.true.} +else + # No nest. + export grid_type=-1 +fi # (Standard) Model resolution dependent variables case "${fv3_res}" in "C48") export DELTIM=1200 - export layout_x=1 - export layout_y=1 + export layout_x_gdas=1 + export layout_y_gdas=1 export layout_x_gfs=1 export layout_y_gfs=1 - export nthreads_fv3=1 + export nthreads_fv3_gdas=1 export nthreads_fv3_gfs=1 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=1 + export xr_cnvcld=".false." # Do not pass conv. clouds to Xu-Randall cloud fraction export cdmbgwd="0.071,2.1,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="40.0,1.77,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=6.0e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 + export k_split=1 + export n_split=4 + export tau=8.0 + export rf_cutoff=100.0 + export fv_sg_adj=3600 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=1 export WRITE_GROUP_GFS=1 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 ;; "C96") - export DELTIM=600 - export layout_x=2 - export layout_y=2 - export layout_x_gfs=2 - export layout_y_gfs=2 - export nthreads_fv3=1 - export nthreads_fv3_gfs=1 - export cdmbgwd="0.14,1.8,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="20.0,2.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=3.0e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 - export WRITE_GROUP_GFS=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=450 + export layout_x_gfs=4 + export layout_y_gfs=4 + export layout_x_nest=12 + export layout_y_nest=10 + export nest_refine=4 + export nest_ioffset=4 + export nest_joffset=9 + export npx_nest=361 + export npy_nest=241 + export NEST_DLON=0.25 + export NEST_DLAT=0.25 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=2 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=2 + else + export DELTIM=600 + export layout_x_gdas=2 + export layout_y_gdas=2 + export layout_x_gfs=2 + export layout_y_gfs=2 + export nthreads_fv3_gdas=1 + export nthreads_fv3_gfs=1 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=1 + export xr_cnvcld=.false. # Do not pass conv. clouds to Xu-Randall cloud fraction + export cdmbgwd="0.14,1.8,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="20.0,2.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=3.0e-3 # setting for UGWPv1 non-stationary GWD + export k_split=1 + export n_split=4 + export tau=8.0 + export rf_cutoff=100.0 + export fv_sg_adj=1800 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=1 + export WRITE_GROUP_GFS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1 + fi ;; "C192") - export DELTIM=450 - export layout_x=4 - export layout_y=6 - export layout_x_gfs=4 - export layout_y_gfs=6 - export nthreads_fv3=1 - export nthreads_fv3_gfs=2 - export cdmbgwd="0.23,1.5,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="10.0,3.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=1.5e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=1 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - export WRITE_GROUP_GFS=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=5 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=225 + export layout_x_gfs=5 + export layout_y_gfs=6 + export layout_x_nest=15 + export layout_y_nest=25 + export nest_refine=4 + export nest_ioffset=7 + export nest_joffset=19 + export npx_nest=721 + export npy_nest=481 + export NEST_DLON=0.125 + export NEST_DLAT=0.125 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=15 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=15 + else + export DELTIM=600 + export layout_x_gdas=4 + export layout_y_gdas=6 + export layout_x_gfs=4 + export layout_y_gfs=6 + export nthreads_fv3_gdas=1 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=1 + export nthreads_ufs_gfs=2 + export cdmbgwd="0.23,1.5,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="10.0,3.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=1.5e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=6.0 + export rf_cutoff=100.0 + export fv_sg_adj=1800 + export WRITE_GROUP_GDAS=1 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=5 + fi ;; "C384") - export DELTIM=300 - export layout_x=8 - export layout_y=8 - export layout_x_gfs=8 - export layout_y_gfs=8 - export nthreads_fv3=2 - export nthreads_fv3_gfs=2 - export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="5.0,5.0,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=0.8e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - export WRITE_GROUP_GFS=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=8 + export layout_x_gfs=8 + export layout_y_gfs=8 + export layout_x_nest=34 + export layout_y_nest=24 + export nest_refine=4 + export nest_ioffset=13 + export nest_joffset=37 + export npx_nest=1441 + export npy_nest=961 + export NEST_DLON=0.0625 + export NEST_DLAT=0.0625 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=20 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 + else + export DELTIM=300 + export layout_x_gdas=8 + export layout_y_gdas=8 + export layout_x_gfs=8 + export layout_y_gfs=8 + export nthreads_fv3_gdas=2 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=2 + export nthreads_ufs_gfs=2 + export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="5.0,5.0,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=0.8e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=4.0 + export rf_cutoff=100.0 + export fv_sg_adj=900 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + export WRITE_GROUP_GFS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 + fi ;; "C768") - export DELTIM=150 - export layout_x=8 - export layout_y=12 - #JKHexport layout_x_gfs=12 - export layout_x_gfs=16 - export layout_y_gfs=16 - export nthreads_fv3=4 - #JKHexport nthreads_fv3_gfs=4 - export nthreads_fv3_gfs=2 - export cdmbgwd="4.0,0.15,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - export cdmbgwd_gsl="2.5,7.5,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=0.5e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 - #JKHexport WRITE_GROUP_GFS=4 - #JKHexport WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 #Note this should be 10 for WCOSS2 - export WRITE_GROUP_GFS=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=40 #Note this should be 10 for WCOSS2 + if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export DELTIM=75 + export layout_x_gdas=16 + export layout_y_gdas=10 + export layout_x_gfs=16 + export layout_y_gfs=10 + export layout_x_nest=48 + export layout_y_nest=45 + export nthreads_fv3_nest=2 + export nthreads_fv3_gdas=2 + export nthreads_fv3_gfs=2 + export nest_refine=4 + export nest_ioffset=24 + export nest_joffset=72 + export npx_nest=2881 + export npy_nest=1921 + export NEST_DLON=0.0325 + export NEST_DLAT=0.0325 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=90 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=90 + else + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=12 + export layout_x_gfs=16 + export layout_y_gfs=16 + #JKHexport layout_y_gfs=12 + export nthreads_fv3_gdas=4 + #JKHexport nthreads_fv3_gfs=4 + export nthreads_fv3_gfs=2 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=2 + export cdmbgwd="4.0,0.15,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling + export cdmbgwd_gsl="2.5,7.5,1.0,1.0" # settings for GSL drag suite + export knob_ugwp_tauamp=0.5e-3 # setting for UGWPv1 non-stationary GWD + export k_split=2 + export n_split=4 + export tau=3.0 + export rf_cutoff=100.0 + export fv_sg_adj=450 + export WRITE_GROUP_GDAS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 + #JKHexport WRITE_GROUP_GFS=4 + #JKHexport WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 #Note this should be 10 for WCOSS2 + export WRITE_GROUP_GFS=2 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=40 #Note this should be 10 for WCOSS2 + fi ;; "C1152") - export DELTIM=120 - export layout_x=8 - export layout_y=16 + export DELTIM=150 + export layout_x_gdas=8 + export layout_y_gdas=16 export layout_x_gfs=8 export layout_y_gfs=16 - export nthreads_fv3=4 + export nthreads_fv3_gdas=4 export nthreads_fv3_gfs=4 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=4 export cdmbgwd="4.0,0.10,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="1.67,8.8,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=0.35e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 # TODO: refine these numbers when a case is available + export k_split=2 + export n_split=6 + export tau=2.5 + export rf_cutoff=100.0 + export fv_sg_adj=450 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 # TODO: refine these numbers when a case is available export WRITE_GROUP_GFS=4 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 # TODO: refine these numbers when a case is available ;; "C3072") export DELTIM=90 export layout_x=16 - export layout_y=32 - export layout_x_gfs=16 + export layout_y_gdas=32 + export layout_x_gfs_gdas=16 export layout_y_gfs=32 - export nthreads_fv3=4 + export nthreads_fv3_gdas=4 export nthreads_fv3_gfs=4 + export nthreads_ufs_gdas=4 + export nthreads_ufs_gfs=4 export cdmbgwd="4.0,0.05,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="0.625,14.1,1.0,1.0" # settings for GSL drag suite export knob_ugwp_tauamp=0.13e-3 # setting for UGWPv1 non-stationary GWD - export WRITE_GROUP=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 # TODO: refine these numbers when a case is available + export k_split=4 + export n_split=5 + export tau=0.5 + export rf_cutoff=100.0 + export fv_sg_adj=300 + export WRITE_GROUP_GDAS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=10 # TODO: refine these numbers when a case is available export WRITE_GROUP_GFS=4 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 # TODO: refine these numbers when a case is available ;; @@ -240,19 +342,22 @@ case "${fv3_res}" in ;; esac -(( WRTTASK_PER_GROUP_PER_THREAD = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE * 6 )) +(( WRTTASK_PER_GROUP_PER_THREAD_GDAS = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS * 6 )) (( WRTTASK_PER_GROUP_PER_THREAD_GFS = WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS * 6 )) -export WRTTASK_PER_GROUP_PER_THREAD +export WRTTASK_PER_GROUP_PER_THREAD_GDAS export WRTTASK_PER_GROUP_PER_THREAD_GFS -(( ntasks_fv3 = layout_x * layout_y * 6 )) +(( ntasks_fv3_gdas = layout_x_gdas * layout_y_gdas * 6 )) (( ntasks_fv3_gfs = layout_x_gfs * layout_y_gfs * 6 )) -export ntasks_fv3 +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + (( ntasks_fv3_gfs += layout_x_nest * layout_y_nest )) +fi +export ntasks_fv3_gdas export ntasks_fv3_gfs -(( ntasks_quilt = WRITE_GROUP * WRTTASK_PER_GROUP_PER_THREAD )) +(( ntasks_quilt_gdas = WRITE_GROUP_GDAS * WRTTASK_PER_GROUP_PER_THREAD_GDAS )) (( ntasks_quilt_gfs = WRITE_GROUP_GFS * WRTTASK_PER_GROUP_PER_THREAD_GFS )) -export ntasks_quilt +export ntasks_quilt_gdas export ntasks_quilt_gfs # Determine whether to use parallel NetCDF based on resolution @@ -279,13 +384,19 @@ export cplice=".false." export cplchm=".false." export cplwav=".false." export cplwav2atm=".false." +if [[ "${DO_NEST:-NO}" == "YES" ]] ; then + export CCPP_SUITE="${CCPP_SUITE:-FV3_global_nest_v1}" +else +#JKH export CCPP_SUITE="${CCPP_SUITE:-FV3_GFS_v17_p8_ugwpv1}" export CCPP_SUITE="FV3_GFS_v17_p8_ugwpv1_c3_mynn" +fi model_list="atm" # Mediator specific settings if [[ "${skip_mediator}" == "false" ]]; then export cpl=".true." - export nthreads_mediator=${nthreads_fv3} # Use same threads as FV3 + export nthreads_mediator_gfs=${nthreads_fv3_gfs} # Use same threads as FV3 + export nthreads_mediator_gdas=${nthreads_fv3_gdas} export CCPP_SUITE="FV3_GFS_v17_coupled_p8_ugwpv1" # TODO: Does this include FV3_GFS_v17_p8? Can this be used instead of FV3_GFS_v17_p8? fi @@ -307,9 +418,13 @@ if [[ "${skip_mom6}" == "false" ]]; then CHLCLIM="seawifs_1998-2006_smoothed_2X.nc" MOM6_RESTART_SETTING='r' MOM6_RIVER_RUNOFF='False' + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then + MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_MISVAL="0.0" + fi eps_imesh="4.0e-1" MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_25L.nc" - MOM6_DIAG_MISVAL="0.0" MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" ;; @@ -326,12 +441,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RIVER_RUNOFF='False' eps_imesh="2.5e-1" TOPOEDITS="ufs.topo_edits_011818.nc" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='True' ;; @@ -347,12 +462,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RESTART_SETTING='n' MOM6_RIVER_RUNOFF='True' eps_imesh="1.0e-1" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" @@ -369,12 +484,12 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RIVER_RUNOFF='True' MOM6_RESTART_SETTING="r" eps_imesh="1.0e-1" - if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then - MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" - MOM6_DIAG_MISVAL="0.0" - else + if [[ ${RUN} == "gfs" || "${RUN}" == "gefs" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" + else + MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" + MOM6_DIAG_MISVAL="0.0" fi MOM6_ALLOW_LANDMASK_CHANGES='False' TOPOEDITS="" @@ -457,6 +572,10 @@ if [[ "${skip_ww3}" == "false" ]]; then "glo_025") ntasks_ww3=262 ;; + "glo_100") + ntasks_ww3=20 + nthreads_ww3=1 + ;; "glo_200") ntasks_ww3=30 nthreads_ww3=1 @@ -468,6 +587,14 @@ if [[ "${skip_ww3}" == "false" ]]; then "mx025") ntasks_ww3=80 ;; + "uglo_100km") + ntasks_ww3=40 + nthreads_ww3=1 + ;; + "uglo_m1g16") + ntasks_ww3=1000 + nthreads_ww3=1 + ;; *) echo "FATAL ERROR: Unsupported WW3 resolution = ${ww3_res}, ABORT!" exit 1 @@ -484,39 +611,45 @@ if [[ "${skip_gocart}" == "false" ]]; then fi # Set the name of the UFS (previously nems) configure template to use +# Default ufs.configure templates for supported model configurations +if [[ "${USE_ESMF_THREADING:-}" == "YES" ]]; then + tmpl_suffix="_esmf" +fi case "${model_list}" in atm) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atm${tmpl_suffix:-}.IN" ;; atm.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm_aero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atmaero${tmpl_suffix:-}.IN" ;; atm.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" + default_template="${PARMgfs}/ufs/ufs.configure.leapfrog_atm_wav${tmpl_suffix:-}.IN" ;; atm.ocean.ice) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2s${tmpl_suffix:-}.IN" ;; atm.ocean.ice.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sa${tmpl_suffix:-}.IN" ;; atm.ocean.ice.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_outerwave.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sw${tmpl_suffix:-}.IN" ;; atm.ocean.ice.wave.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero_outerwave.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2swa${tmpl_suffix:-}.IN" ;; *) - echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" + echo "FATAL ERROR: Unsupported UFSWM configuration for ${model_list}" exit 16 ;; esac +# Allow user to override the default template +export ufs_configure_template=${ufs_configure_template:-${default_template:-"/dev/null"}} +unset model_list default_template + if [[ ! -r "${ufs_configure_template}" ]]; then echo "FATAL ERROR: ${ufs_configure_template} either doesn't exist or is not readable." exit 17 fi -unset model_list - echo "END: config.ufs" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.upp b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.upp index a1bd0a7d34..41015c2fee 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.upp +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.upp @@ -8,7 +8,7 @@ echo "BEGIN: config.upp" # Get task specific resources . "${EXPDIR}/config.resources" upp -export UPP_CONFIG="${HOMEgfs}/parm/post/upp.yaml" +export UPP_CONFIG="${PARMgfs}/post/upp.yaml" # No. of forecast hours to process in a single job export NFHRS_PER_GROUP=3 diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfozn b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfozn index 9eea0f25a3..df7d18012d 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfozn +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfozn @@ -9,15 +9,14 @@ echo "BEGIN: config.verfozn" export DO_DATA_RPT=1 export OZN_AREA="glb" export OZNMON_SUFFIX=${NET} -export PARMmonitor=${PARMgfs}/monitor -export SATYPE_FILE=${PARMmonitor}/gdas_oznmon_satype.txt +export SATYPE_FILE=${PARMgfs}/monitor/gdas_oznmon_satype.txt # Source the parm file -. "${PARMmonitor}/gdas_oznmon.parm" +. "${PARMgfs}/monitor/gdas_oznmon.parm" # Set up validation file if [[ ${VALIDATE_DATA} -eq 1 ]]; then - export ozn_val_file=${PARMmonitor}/gdas_oznmon_base.tar + export ozn_val_file=${PARMgfs}/monitor/gdas_oznmon_base.tar fi echo "END: config.verfozn" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfrad b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfrad index dd65020180..506ce50b4f 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfrad +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.verfrad @@ -6,11 +6,10 @@ echo "BEGIN: config.verfrad" # Get task specific resources . "${EXPDIR}/config.resources" verfrad -export PARMmonitor=${PARMgfs}/monitor -export satype_file=${PARMmonitor}/gdas_radmon_satype.txt +export satype_file=${PARMgfs}/monitor/gdas_radmon_satype.txt # Source the parm file -. "${PARMmonitor}/da_mon.parm" +. "${PARMgfs}/monitor/da_mon.parm" # Other variables export RAD_AREA="glb" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.vminmon b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.vminmon index 8929c36e0e..7c7d362161 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.vminmon +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.vminmon @@ -9,8 +9,7 @@ echo "BEGIN: config.vminmon" export MINMON_SUFFIX=${MINMON_SUFFIX:-${NET}} export CYCLE_INTERVAL=${assim_freq:-6} -export PARMmonitor=${PARMgfs}/monitor -export mm_gnormfile=${PARMmonitor}/${RUN}_minmon_gnorm.txt -export mm_costfile=${PARMmonitor}/${RUN}_minmon_cost.txt +export mm_gnormfile=${PARMgfs}/monitor/${RUN}_minmon_gnorm.txt +export mm_costfile=${PARMgfs}/monitor/${RUN}_minmon_cost.txt echo "END: config.vminmon" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wave b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wave index acb4c518ba..db4eb9f708 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wave +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wave @@ -6,26 +6,14 @@ echo "BEGIN: config.wave" # Parameters that are common to all wave model steps - -# System and version -export wave_sys_ver=v1.0.0 - -export EXECwave="${HOMEgfs}/exec" -export FIXwave="${HOMEgfs}/fix/wave" -export PARMwave="${HOMEgfs}/parm/wave" -export USHwave="${HOMEgfs}/ush" - # This config contains variables/parameters used in the fcst step # Some others are also used across the workflow in wave component scripts # General runtime labels -export CDUMPwave="${RUN}wave" +export RUNwave="${RUN}wave" # In GFS/GDAS, restart files are generated/read from gdas runs -export CDUMPRSTwave="gdas" - -# Grids for wave model -export waveGRD=${waveGRD:-'mx025'} +export RUNRSTwave="gdas" #grid dependent variable defaults export waveGRDN='1' # grid number for ww3_multi @@ -68,6 +56,12 @@ case "${waveGRD}" in export wavepostGRD='glo_025' export waveuoutpGRD=${waveGRD} ;; + "glo_100") + #Global regular lat/lon 1deg deg grid + export waveinterpGRD='' + export wavepostGRD='glo_100' + export waveuoutpGRD=${waveGRD} + ;; "glo_200") #Global regular lat/lon 2deg deg grid export waveinterpGRD='' @@ -80,7 +74,19 @@ case "${waveGRD}" in export wavepostGRD='glo_500' export waveuoutpGRD=${waveGRD} ;; - *) + "uglo_100km") + #unstructured 100km grid + export waveinterpGRD='glo_200' + export wavepostGRD='' + export waveuoutpGRD=${waveGRD} + ;; + "uglo_m1g16") + #unstructured m1v16 grid + export waveinterpGRD='glo_15mxt' + export wavepostGRD='' + export waveuoutpGRD=${waveGRD} + ;; + *) echo "FATAL ERROR: No grid specific wave config values exist for ${waveGRD}. Aborting." exit 1 ;; @@ -91,18 +97,12 @@ export WAVEWND_DID= export WAVEWND_FID= # The start time reflects the number of hindcast hours prior to the cycle initial time -if [[ "${CDUMP}" = "gdas" ]]; then - export FHMAX_WAV=${FHMAX:-9} -else - export FHMAX_WAV=${FHMAX_GFS} +if [[ "${RUN}" == "gfs" ]]; then + export FHMAX_WAV=${FHMAX_WAV_GFS} fi export WAVHINDH=0 -export FHMIN_WAV=0 -export FHOUT_WAV=3 -export FHMAX_HF_WAV=120 -export FHOUT_HF_WAV=1 export FHMAX_WAV_IBP=180 -if (( FHMAX_WAV < FHMAX_WAV_IBP )); then export FHMAX_WAV_IBP=${FHMAX_GFS} ; fi +if (( FHMAX_WAV < FHMAX_WAV_IBP )); then export FHMAX_WAV_IBP=${FHMAX_WAV} ; fi # gridded and point output rate export DTFLD_WAV=$(( FHOUT_HF_WAV * 3600 )) @@ -113,7 +113,7 @@ export FHINCP_WAV=$(( DTPNT_WAV / 3600 )) export OUTPARS_WAV="WND CUR ICE HS T01 T02 DIR FP DP PHS PTP PDIR CHA" # Restart file config -if [[ "${CDUMP}" = "gdas" ]]; then +if [[ "${RUN}" == "gdas" ]]; then export WAVNCYC=4 export WAVHCYC=${assim_freq:-6} export FHMAX_WAV_CUR=48 # RTOFS forecasts only out to 8 days @@ -128,7 +128,7 @@ fi # Restart timing business export RSTTYPE_WAV='T' # generate second tier of restart files -if [[ "${CDUMP}" != gfs ]]; then # Setting is valid for GDAS and GEFS +if [[ "${RUN}" != gfs ]]; then # Setting is valid for GDAS and GEFS export DT_1_RST_WAV=10800 # time between restart files, set to DTRST=1 for a single restart file export DT_2_RST_WAV=43200 # restart stride for checkpointing restart export RSTIOFF_WAV=0 # first restart file offset relative to model start @@ -136,8 +136,8 @@ else # This is a GFS run rst_dt_gfs=$(( restart_interval_gfs * 3600 )) # TODO: This calculation needs to move to parsing_namelists_WW3.sh if [[ ${rst_dt_gfs} -gt 0 ]]; then export DT_1_RST_WAV=0 #${rst_dt_gfs:-0} # time between restart files, set to DTRST=1 for a single restart file - #temporarily set to zero to avoid a clash in requested restart times - #which makes the wave model crash a fix for the model issue will be coming + # temporarily set to zero to avoid a clash in requested restart times + # which makes the wave model crash a fix for the model issue will be coming export DT_2_RST_WAV=${rst_dt_gfs:-0} # restart stride for checkpointing restart else rst_dt_fhmax=$(( FHMAX_WAV * 3600 )) @@ -149,15 +149,15 @@ fi # # Set runmember to default value if not GEFS cpl run # (for a GFS coupled run, RUNMEN would be unset, this should default to -1) -export RUNMEM=${RUNMEM:--1} +export RUNMEM="-1" # Set wave model member tags if ensemble run # -1: no suffix, deterministic; xxxNN: extract two last digits to make ofilename prefix=gwesNN -if [[ ${RUNMEM} = -1 ]]; then +if (( RUNMEM == -1 )); then # No suffix added to model ID in case of deterministic run - export waveMEMB= + export waveMEMB="" else # Extract member number only - export waveMEMB="${RUNMEM: -2}" + export waveMEMB="${RUNMEM}" fi # Determine if wave component needs input and/or is coupled diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpnt b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpnt index dfeddc79b2..412c5fb42a 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpnt +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpnt @@ -6,6 +6,6 @@ echo "BEGIN: config.wavepostbndpnt" # Get task specific resources -. $EXPDIR/config.resources wavepostbndpnt +source "${EXPDIR}/config.resources" wavepostbndpnt echo "END: config.wavepostbndpnt" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpntbll b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpntbll index bb7224cc70..6695ab0f84 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpntbll +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostbndpntbll @@ -6,6 +6,6 @@ echo "BEGIN: config.wavepostbndpntbll" # Get task specific resources -. $EXPDIR/config.resources wavepostbndpntbll +source "${EXPDIR}/config.resources" wavepostbndpntbll echo "END: config.wavepostbndpntbll" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostpnt b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostpnt index 8befb91760..e87237da82 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostpnt +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostpnt @@ -6,6 +6,6 @@ echo "BEGIN: config.wavepostpnt" # Get task specific resources -. $EXPDIR/config.resources wavepostpnt +source "${EXPDIR}/config.resources" wavepostpnt echo "END: config.wavepostpnt" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostsbs b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostsbs index 8e74aae069..82cec321da 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostsbs +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.wavepostsbs @@ -6,14 +6,13 @@ echo "BEGIN: config.wavepostsbs" # Get task specific resources -. $EXPDIR/config.resources wavepostsbs +source "${EXPDIR}/config.resources" wavepostsbs # Subgrid info for grib2 encoding export WAV_SUBGRBSRC="" export WAV_SUBGRB="" # Options for point output (switch on/off boundary point output) -export DOIBP_WAV='NO' # Input boundary points export DOFLD_WAV='YES' # Field data export DOPNT_WAV='YES' # Station data export DOGRB_WAV='YES' # Create grib2 files diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.waveprep b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.waveprep index 1c9a40c1d8..1f746eab77 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.waveprep +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.waveprep @@ -21,7 +21,7 @@ export WAV_CUR_CDO_SMOOTH="NO" export CDO_ROOT=${CDO_ROOT:-/usrx/local/dev/packages/cdo/1.9.8} if [ "${WW3ICEINP}" = "YES" ]; then - export WAVICEFILE=${CDUMP}.t${cyc}z.seaice.5min.grib2 + export WAVICEFILE=${RUN}.t${cyc}z.seaice.5min.grib2 fi echo "END: config.waveprep" diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml deleted file mode 100644 index 0ca6e2274d..0000000000 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - &EXPDIR;/logs/@Y@m@d@H.log - - - &SDATE; &EDATE; &INTERVAL; - - - - 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 - 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 - - - &JOBS_DIR;/remapgrib.ksh - &ACCOUNT; - 1 - 00:15:00 - remapgrib_#T#_&PSLOT; - &ROTDIR;/logs/@Y@m@d@H/remapgrib_#T#.log - ROTDIR&ROTDIR; - CDUMP&CDUMP; - COMPONENT&COMPONENT; - yyyymmdd@Y@m@d - hh@H - fcst#T# - GRID_NAMES201D130D242 - - &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/&CDUMP;.t@Hz.pgrb2.&RES;.f#T# - - - - - - - - full 242 130 201 - full,Africa,Beijing,Cambodia,EPacific,Europe,Taiwan,WAtlantic,WPacific AK,AKZoom,AKZoom2 CONUS,NC,NE,NW,SC,SE,SW NHemi - global.yml globalAK.yml globalCONUS.yml globalNHemi.yml - - - - - - source &PYGRAFDIR;/pre.sh; - cd &PYGRAFDIR;; - python &PYGRAFDIR;/create_graphics.py \ - maps \ - -d &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/post/#GRID_ID#\ - -f 0 &FCST_LENGTH; 6 \ - --file_type prs \ - --file_tmpl "&CDUMP;.t@Hz.pgrb2.0p25.f{FCST_TIME:03d}"\ - --images &PYGRAFDIR;/image_lists/#IMGFILE# hourly\ - -m "GFSv17p8_UGWPV1_C3_MYNN" \ - -n ${SLURM_CPUS_ON_NODE:-12} \ - -o &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/pyprd \ - -s @Y@m@d@H \ - --tiles "#TILESET#" \ - -z &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/img - - - &ACCOUNT; - &QUEUE; - &RESOURCES_PYTHON; - &WALLTIME_PYTHON; - --exclusive - FV3GFS_python_maps_#GRID_ID#_@H_ugwpv1_c3_mynn - &ROTDIR;/logs/@Y@m@d@H/python_@Y@m@d@H00_maps_#GRID_ID#_0-6-&FCST_LENGTH;.log - - - - - - - - - - - diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml deleted file mode 100644 index 4d7d3cdbec..0000000000 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - &EXPDIR;/logs/@Y@m@d@H.log - - - &SDATE; &EDATE; &INTERVAL; - - - - 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 - 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 - - - &JOBS_DIR;/remapgrib.ksh - &ACCOUNT; - 1 - 00:35:00 - remapgrib_#T#_&PSLOT; - &ROTDIR;/logs/@Y@m@d@H/remapgrib_#T#.log - ROTDIR&ROTDIR; - CDUMP&CDUMP; - COMPONENT&COMPONENT; - yyyymmdd@Y@m@d - hh@H - fcst#T# - GRID_NAMES201D130D242 - - &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/&CDUMP;.t@Hz.pgrb2.&RES;.f#T# - - - - - - - - full 242 130 201 - full,Africa,Beijing,Cambodia,EPacific,Europe,Taiwan,WAtlantic,WPacific AK,AKZoom,AKZoom2 CONUS,NC,NE,NW,SC,SE,SW NHemi - global.yml globalAK.yml globalCONUS.yml globalNHemi.yml - - - - - - source &PYGRAFDIR;/pre.sh; - cd &PYGRAFDIR;; - python &PYGRAFDIR;/create_graphics.py \ - maps \ - -d &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/post/#GRID_ID#\ - -f 0 &FCST_LENGTH; 6 \ - --file_type prs \ - --file_tmpl "&CDUMP;.t@Hz.pgrb2.0p25.f{FCST_TIME:03d}"\ - --images &PYGRAFDIR;/image_lists/#IMGFILE# hourly\ - -m "GFSv17p8_UGWPV1_C3_MYNN" \ - -n ${SLURM_CPUS_ON_NODE:-12} \ - -o &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/pyprd \ - -s @Y@m@d@H \ - --tiles "#TILESET#" \ - -z &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/img - - - &ACCOUNT; - &QUEUE; - &RESOURCES_PYTHON; - &WALLTIME_PYTHON; - --exclusive - FV3GFS_python_maps_#GRID_ID#_@H_ugwpv1_c3_mynn - &ROTDIR;/logs/@Y@m@d@H/python_@Y@m@d@H00_maps_#GRID_ID#_0-6-&FCST_LENGTH;.log - - - - - - - - - - - diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab deleted file mode 100644 index 428ce232aa..0000000000 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab +++ /dev/null @@ -1,5 +0,0 @@ - -#################### rt_v17p8_ugwpv1_c3_mynn #################### -MAILTO="" -*/5 * * * * /apps/rocoto/1.3.6/bin/rocotorun -d /home/role.rtfim/UFS-CAMsuite_dev1//FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.db -w /home/role.rtfim/UFS-CAMsuite_dev1//FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml -################################################################# diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml deleted file mode 100644 index 7df2260c8e..0000000000 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - - - - - -]> - - - - &EXPDIR;/logs/@Y@m@d@H.log - - - 202403210000 203401140000 24:00:00 - - - - &JOBS_DIR;/makeinit_link.sh - - &PSLOT;_gfsinit_@H - gsd-fv3 - batch - hera - 00:02:00 - 1:ppn=1:tpp=1 - &NATIVE_STR; - - &ROTDIR;/logs/@Y@m@d@H/gfsinit.log - - RUN_ENVIRemc - HOMEgfs&HOMEgfs; - EXPDIR&EXPDIR; - ROTDIR&ROTDIR; - ICSDIR&ICSDIR; - CASE&CASE; - COMPONENT&COMPONENT; - NETgfs - CDUMPgfs - RUNgfs - CDATE@Y@m@d@H - PDY@Y@m@d - cyc@H - COMROOT/scratch1/NCEPDEV/global/glopara/com - DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; - - - - - &ROTDIR;/gfs.@Y@m@d/@H/model_data/atmos/input - - - &ICSDIR;/@Y@m@d@H/gfs/&CASE;/INPUT/gfs_data.tile6.nc - &ICSDIR;/@Y@m@d@H/gfs/&CASE;/INPUT/sfc_data.tile6.nc - - - - - - - - - &JOBS_DIR;/fcst.sh - - &PSLOT;_gfsfcst_@H - gsd-fv3 - batch - hera - 05:30:00 - - 56:ppn=40:tpp=1 - &NATIVE_STR; - - &ROTDIR;/logs/@Y@m@d@H/gfsfcst.log - - RUN_ENVIRemc - HOMEgfs&HOMEgfs; - EXPDIR&EXPDIR; - ROTDIR&ROTDIR; - NETgfs - CDUMPgfs - RUNgfs - CDATE@Y@m@d@H - PDY@Y@m@d - cyc@H - COMROOT/scratch1/NCEPDEV/global/glopara/com - DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; - - - - - &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/input/sfc_data.tile6.nc - &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/restart/@Y@m@d.@H0000.sfcanl_data.tile6.nc - - - - - - - - - _f000-f012 _f018-f030 _f036-f048 _f054-f066 _f072-f084 _f090-f102 _f108-f120 - f012 f030 f048 f066 f084 f102 f120 - f000_f006_f012 f018_f024_f030 f036_f042_f048 f054_f060_f066 f072_f078_f084 f090_f096_f102 f108_f114_f120 - - - - &JOBS_DIR;/atmos_products.sh - - &PSLOT;_gfsatmprod#grp#_@H - gsd-fv3 - batch - hera - 00:15:00 - 1:ppn=24:tpp=1 - &NATIVE_STR; - - &ROTDIR;/logs/@Y@m@d@H/gfsatmprod#grp#.log - - RUN_ENVIRemc - HOMEgfs&HOMEgfs; - EXPDIR&EXPDIR; - ROTDIR&ROTDIR; - NETgfs - CDUMPgfs - RUNgfs - CDATE@Y@m@d@H - PDY@Y@m@d - cyc@H - COMROOT/scratch1/NCEPDEV/global/glopara/com - DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; - FHRLST#lst# - - - &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/master/gfs.t@Hz.master.grb2#dep# - - - - - - - - - &JOBS_DIR;/arch.sh - - &PSLOT;_gfsarch_@H - gsd-fv3 - batch - service - 06:00:00 - 1:ppn=1:tpp=1 - 4096M - &NATIVE_STR; - - &ROTDIR;/logs/@Y@m@d@H/gfsarch.log - - RUN_ENVIRemc - HOMEgfs&HOMEgfs; - EXPDIR&EXPDIR; - ROTDIR&ROTDIR; - NETgfs - ATCFNAME&ATCFNAME; - CDUMPgfs - RUNgfs - CDATE@Y@m@d@H - PDY@Y@m@d - cyc@H - COMROOT/scratch1/NCEPDEV/global/glopara/com - DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; - - - - - - - - diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds deleted file mode 100644 index aa43700fbc..0000000000 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds +++ /dev/null @@ -1,27 +0,0 @@ -rocotorun -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_v17p8_ugwpv1_c3_mynn.db -rocotostat -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_v17p8_ugwpv1_c3_mynn.db -c `date --date='4 days ago' +%Y%m%d0000`: | m - -rocotorun -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/retro_dbfiles/v17p8_ugwpv1_c3_mynn.db -rocotostat -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/retro_dbfiles/v17p8_ugwpv1_c3_mynn.db - - - -PyGraf workflow -=============== -rocotorun -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_pygraf_global_ugwpv1_c3_mynn.db -rocotostat -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_pygraf_global_ugwpv1_c3_mynn.db -c `date --date='4 days ago' +%Y%m%d0000`: | m - -rocotorun -w pygraf_global_ugwpv1_c3_mynn.xml -d pygraf_global_ugwpv1_c3_mynn.db -rocotostat -w pygraf_global_ugwpv1_c3_mynn.xml -d pygraf_global_ugwpv1_c3_mynn.db - -** CentOS ** - 03/21-25 -rocotorun -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1_0.db -rocotostat -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1_0.db | m - 03/25-26 -rocotorun -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1.db -rocotostat -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1.db | m - -** Rocky test ** -rocotorun -w test_pygraf.xml -d test_pygraf.db -rocotostat -w test_pygraf.xml -d test_pygraf.db diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml deleted file mode 100644 index d3a7c94622..0000000000 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - &EXPDIR;/logs/@Y@m@d@H.log - - - &SDATE; &EDATE; &INTERVAL; - - - - 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 - 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 - - - &JOBS_DIR;/remapgrib.sh - &ACCOUNT; - 1 - 00:35:00 - remapgrib_#T#_&PSLOT; - &ROTDIR;/logs/@Y@m@d@H/remapgrib_#T#.log - ROTDIR&ROTDIR; - CDUMP&CDUMP; - COMPONENT&COMPONENT; - yyyymmdd@Y@m@d - hh@H - fcst#T# - GRID_NAMES201D130D242 - - &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/&CDUMP;.t@Hz.pgrb2.&RES;.f#T# - - - - - - - - full 242 130 201 - full,Africa,Beijing,Cambodia,EPacific,Europe,Taiwan,WAtlantic,WPacific AK,AKZoom,AKZoom2 CONUS,NC,NE,NW,SC,SE,SW NHemi - global.yml globalAK.yml globalCONUS.yml globalNHemi.yml - - - - - - source &PYGRAFDIR;/pre.sh; - cd &PYGRAFDIR;; - python &PYGRAFDIR;/create_graphics.py \ - maps \ - -d &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/post/#GRID_ID#\ - -f 0 &FCST_LENGTH; 6 \ - --file_type prs \ - --file_tmpl "&CDUMP;.t@Hz.pgrb2.0p25.f{FCST_TIME:03d}"\ - --images &PYGRAFDIR;/image_lists/#IMGFILE# hourly\ - -m "GFSv17p8_UGWPV1_C3_MYNN" \ - -n ${SLURM_CPUS_ON_NODE:-12} \ - -o &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/pyprd \ - -s @Y@m@d@H \ - --tiles "#TILESET#" \ - -z &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/img - - - &ACCOUNT; - &QUEUE; - &RESOURCES_PYTHON; - &WALLTIME_PYTHON; - --exclusive - FV3GFS_python_maps_#GRID_ID#_@H_ugwpv1_c3_mynn - &ROTDIR;/logs/@Y@m@d@H/python_@Y@m@d@H00_maps_#GRID_ID#_0-6-&FCST_LENGTH;.log - - - - - - - - - - - diff --git a/workflow/rt_c3_mynn.sh b/workflow/rt_c3_mynn.sh index d50ca41bb3..7867debed3 100755 --- a/workflow/rt_c3_mynn.sh +++ b/workflow/rt_c3_mynn.sh @@ -1,12 +1,14 @@ +#!/bin/sh USER=role.rtfim -GITDIR=${HOME}/UFS-CAMsuite/ ## where your git checkout is located +#GITDIR=${HOME}/UFS-CAMsuite/ ## where your git checkout is located +GITDIR=/scratch2/BMC/gsd-fv3-dev/KaYee.Wong/global/test/Merge_gsl_ufs_dev_to_gsl_ufsrtdev1/ COMROT=$GITDIR/FV3GFSrun ## default COMROT directory EXPDIR=$GITDIR/FV3GFSwfm ## default EXPDIR directory ICSDIR=/scratch1/BMC/gsd-fv3/rtruns/FV3ICS_L127 PSLOT=rt_v17p8_ugwpv1_c3_mynn -IDATE=2024011400 -EDATE=2024011400 +IDATE=2024091800 +EDATE=2024091800 RESDET=768 ## 96 192 384 768 ### gfs_cyc 1 00Z only; gfs_cyc 2 00Z and 12Z From 2a40c4ef046f3eb94475daf8702e89c9e368d74b Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Fri, 20 Sep 2024 15:00:16 +0000 Subject: [PATCH 3/8] Real time path fix. --- workflow/rt_c3_mynn.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/workflow/rt_c3_mynn.sh b/workflow/rt_c3_mynn.sh index 7867debed3..f87ebdad70 100755 --- a/workflow/rt_c3_mynn.sh +++ b/workflow/rt_c3_mynn.sh @@ -1,7 +1,6 @@ #!/bin/sh USER=role.rtfim -#GITDIR=${HOME}/UFS-CAMsuite/ ## where your git checkout is located -GITDIR=/scratch2/BMC/gsd-fv3-dev/KaYee.Wong/global/test/Merge_gsl_ufs_dev_to_gsl_ufsrtdev1/ +GITDIR=${HOME}/UFS-CAMsuite/ ## where your git checkout is located COMROT=$GITDIR/FV3GFSrun ## default COMROT directory EXPDIR=$GITDIR/FV3GFSwfm ## default EXPDIR directory ICSDIR=/scratch1/BMC/gsd-fv3/rtruns/FV3ICS_L127 From a2d37d2001e48e7f3e5145b9b7f58a98811c5417 Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Fri, 20 Sep 2024 17:20:22 +0000 Subject: [PATCH 4/8] Update realtime xml. --- .../rt_pygraf_centos_dev1.xml | 134 ++++++++++ .../rt_pygraf_global_ugwpv1_c3_mynn.xml | 134 ++++++++++ .../rt_v17p8_ugwpv1_c3_mynn.crontab | 5 + .../rt_v17p8_ugwpv1_c3_mynn.xml | 231 ++++++++++++++++++ FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds | 27 ++ .../rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml | 134 ++++++++++ 6 files changed, 665 insertions(+) create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds create mode 100644 FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml new file mode 100644 index 0000000000..0ca6e2274d --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_centos_dev1.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + &EXPDIR;/logs/@Y@m@d@H.log + + + &SDATE; &EDATE; &INTERVAL; + + + + 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 + 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 + + + &JOBS_DIR;/remapgrib.ksh + &ACCOUNT; + 1 + 00:15:00 + remapgrib_#T#_&PSLOT; + &ROTDIR;/logs/@Y@m@d@H/remapgrib_#T#.log + ROTDIR&ROTDIR; + CDUMP&CDUMP; + COMPONENT&COMPONENT; + yyyymmdd@Y@m@d + hh@H + fcst#T# + GRID_NAMES201D130D242 + + &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/&CDUMP;.t@Hz.pgrb2.&RES;.f#T# + + + + + + + + full 242 130 201 + full,Africa,Beijing,Cambodia,EPacific,Europe,Taiwan,WAtlantic,WPacific AK,AKZoom,AKZoom2 CONUS,NC,NE,NW,SC,SE,SW NHemi + global.yml globalAK.yml globalCONUS.yml globalNHemi.yml + + + + + + source &PYGRAFDIR;/pre.sh; + cd &PYGRAFDIR;; + python &PYGRAFDIR;/create_graphics.py \ + maps \ + -d &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/post/#GRID_ID#\ + -f 0 &FCST_LENGTH; 6 \ + --file_type prs \ + --file_tmpl "&CDUMP;.t@Hz.pgrb2.0p25.f{FCST_TIME:03d}"\ + --images &PYGRAFDIR;/image_lists/#IMGFILE# hourly\ + -m "GFSv17p8_UGWPV1_C3_MYNN" \ + -n ${SLURM_CPUS_ON_NODE:-12} \ + -o &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/pyprd \ + -s @Y@m@d@H \ + --tiles "#TILESET#" \ + -z &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/img + + + &ACCOUNT; + &QUEUE; + &RESOURCES_PYTHON; + &WALLTIME_PYTHON; + --exclusive + FV3GFS_python_maps_#GRID_ID#_@H_ugwpv1_c3_mynn + &ROTDIR;/logs/@Y@m@d@H/python_@Y@m@d@H00_maps_#GRID_ID#_0-6-&FCST_LENGTH;.log + + + + + + + + + + + diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml new file mode 100644 index 0000000000..4d7d3cdbec --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + &EXPDIR;/logs/@Y@m@d@H.log + + + &SDATE; &EDATE; &INTERVAL; + + + + 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 + 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 + + + &JOBS_DIR;/remapgrib.ksh + &ACCOUNT; + 1 + 00:35:00 + remapgrib_#T#_&PSLOT; + &ROTDIR;/logs/@Y@m@d@H/remapgrib_#T#.log + ROTDIR&ROTDIR; + CDUMP&CDUMP; + COMPONENT&COMPONENT; + yyyymmdd@Y@m@d + hh@H + fcst#T# + GRID_NAMES201D130D242 + + &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/&CDUMP;.t@Hz.pgrb2.&RES;.f#T# + + + + + + + + full 242 130 201 + full,Africa,Beijing,Cambodia,EPacific,Europe,Taiwan,WAtlantic,WPacific AK,AKZoom,AKZoom2 CONUS,NC,NE,NW,SC,SE,SW NHemi + global.yml globalAK.yml globalCONUS.yml globalNHemi.yml + + + + + + source &PYGRAFDIR;/pre.sh; + cd &PYGRAFDIR;; + python &PYGRAFDIR;/create_graphics.py \ + maps \ + -d &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/post/#GRID_ID#\ + -f 0 &FCST_LENGTH; 6 \ + --file_type prs \ + --file_tmpl "&CDUMP;.t@Hz.pgrb2.0p25.f{FCST_TIME:03d}"\ + --images &PYGRAFDIR;/image_lists/#IMGFILE# hourly\ + -m "GFSv17p8_UGWPV1_C3_MYNN" \ + -n ${SLURM_CPUS_ON_NODE:-12} \ + -o &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/pyprd \ + -s @Y@m@d@H \ + --tiles "#TILESET#" \ + -z &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/img + + + &ACCOUNT; + &QUEUE; + &RESOURCES_PYTHON; + &WALLTIME_PYTHON; + --exclusive + FV3GFS_python_maps_#GRID_ID#_@H_ugwpv1_c3_mynn + &ROTDIR;/logs/@Y@m@d@H/python_@Y@m@d@H00_maps_#GRID_ID#_0-6-&FCST_LENGTH;.log + + + + + + + + + + + diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab new file mode 100644 index 0000000000..428ce232aa --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.crontab @@ -0,0 +1,5 @@ + +#################### rt_v17p8_ugwpv1_c3_mynn #################### +MAILTO="" +*/5 * * * * /apps/rocoto/1.3.6/bin/rocotorun -d /home/role.rtfim/UFS-CAMsuite_dev1//FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.db -w /home/role.rtfim/UFS-CAMsuite_dev1//FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml +################################################################# diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml new file mode 100644 index 0000000000..25ff7bc597 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + +]> + + + + &EXPDIR;/logs/@Y@m@d@H.log + + + 202409180000 202409180000 24:00:00 + + + + &JOBS_DIR;/makeinit_link.sh + + &PSLOT;_gfsinit_@H + gsd-fv3 + batch + hera + 00:02:00 + 1:ppn=1:tpp=1 + &NATIVE_STR; + + &ROTDIR;/logs/@Y@m@d@H/gfsinit.log + + RUN_ENVIRemc + HOMEgfs&HOMEgfs; + EXPDIR&EXPDIR; + ROTDIR&ROTDIR; + ICSDIR&ICSDIR; + CASE&CASE; + COMPONENT&COMPONENT; + NETgfs + CDUMPgfs + RUNgfs + CDATE@Y@m@d@H + PDY@Y@m@d + cyc@H + COMROOT/scratch1/NCEPDEV/global/glopara/com + DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; + FHR3#fhr# + COMPONENTatmos + + + + + &ROTDIR;/gfs.@Y@m@d/@H/model_data/atmos/input + + + &ICSDIR;/@Y@m@d@H/gfs/&CASE;/INPUT/gfs_data.tile6.nc + &ICSDIR;/@Y@m@d@H/gfs/&CASE;/INPUT/sfc_data.tile6.nc + + + + + + + + + &JOBS_DIR;/fcst.sh + + &PSLOT;_gfsfcst_@H + gsd-fv3 + batch + hera + 06:00:00 + + 56:ppn=40:tpp=1 + &NATIVE_STR; + + &ROTDIR;/logs/@Y@m@d@H/gfsfcst.log + + RUN_ENVIRemc + HOMEgfs&HOMEgfs; + EXPDIR&EXPDIR; + ROTDIR&ROTDIR; + NETgfs + CDUMPgfs + RUNgfs + CDATE@Y@m@d@H + PDY@Y@m@d + cyc@H + COMROOT/scratch1/NCEPDEV/global/glopara/com + DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; + + + + + &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/input/sfc_data.tile6.nc + &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/restart/@Y@m@d.@H0000.sfcanl_data.tile6.nc + + + + + + + + + + 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 + + + + + &JOBS_DIR;/atmos_products.sh + + &PSLOT;_gfsatmprod_f#fhr#_@H + gsd-fv3 + batch + hera + 00:15:00 + 1:ppn=24:tpp=1 + &NATIVE_STR; + + &ROTDIR;/logs/@Y@m@d@H/gfsatmprod_f#fhr#.log + + RUN_ENVIRemc + HOMEgfs&HOMEgfs; + EXPDIR&EXPDIR; + NETgfs + RUNgfs + CDATE@Y@m@d@H + PDY@Y@m@d + cyc@H + COMROOT/scratch1/NCEPDEV/global/glopara/com + DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; + FHR3#fhr# + COMPONENTatmos + + + &ROTDIR;/gfs.@Y@m@d/@H//model_data/atmos/master/gfs.t@Hz.master.grb2f#fhr# + + + + + + + + + &JOBS_DIR;/arch.sh + + &PSLOT;_gfsarch_@H + gsd-fv3 + batch + service + 06:00:00 + 1:ppn=1:tpp=1 + 4096M + &NATIVE_STR; + + &ROTDIR;/logs/@Y@m@d@H/gfsarch.log + + RUN_ENVIRemc + HOMEgfs&HOMEgfs; + EXPDIR&EXPDIR; + ROTDIR&ROTDIR; + NETgfs + ATCFNAME&ATCFNAME; + CDUMPgfs + RUNgfs + CDATE@Y@m@d@H + PDY@Y@m@d + cyc@H + COMROOT/scratch1/NCEPDEV/global/glopara/com + DATAROOT&ROTDIR;/../RUNDIRS/&PSLOT; + + + + + + + + diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds new file mode 100644 index 0000000000..aa43700fbc --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/runcmds @@ -0,0 +1,27 @@ +rocotorun -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_v17p8_ugwpv1_c3_mynn.db +rocotostat -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_v17p8_ugwpv1_c3_mynn.db -c `date --date='4 days ago' +%Y%m%d0000`: | m + +rocotorun -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/retro_dbfiles/v17p8_ugwpv1_c3_mynn.db +rocotostat -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/v17p8_ugwpv1_c3_mynn.xml -d ${HOME}/retro_dbfiles/v17p8_ugwpv1_c3_mynn.db + + + +PyGraf workflow +=============== +rocotorun -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_pygraf_global_ugwpv1_c3_mynn.db +rocotostat -w ${HOME}/UFS-CAMsuite_dev1/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/rt_pygraf_global_ugwpv1_c3_mynn.xml -d ${HOME}/rt_dbfiles/rt_pygraf_global_ugwpv1_c3_mynn.db -c `date --date='4 days ago' +%Y%m%d0000`: | m + +rocotorun -w pygraf_global_ugwpv1_c3_mynn.xml -d pygraf_global_ugwpv1_c3_mynn.db +rocotostat -w pygraf_global_ugwpv1_c3_mynn.xml -d pygraf_global_ugwpv1_c3_mynn.db + +** CentOS ** + 03/21-25 +rocotorun -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1_0.db +rocotostat -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1_0.db | m + 03/25-26 +rocotorun -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1.db +rocotostat -w rt_pygraf_centos_dev1.xml -d ~/rt_dbfiles/rt_pygraf_centos_dev1.db | m + +** Rocky test ** +rocotorun -w test_pygraf.xml -d test_pygraf.db +rocotostat -w test_pygraf.xml -d test_pygraf.db diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml new file mode 100644 index 0000000000..d3a7c94622 --- /dev/null +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/test_pygraf.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + &EXPDIR;/logs/@Y@m@d@H.log + + + &SDATE; &EDATE; &INTERVAL; + + + + 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 + 000 006 012 018 024 030 036 042 048 054 060 066 072 078 084 090 096 102 108 114 120 + + + &JOBS_DIR;/remapgrib.sh + &ACCOUNT; + 1 + 00:35:00 + remapgrib_#T#_&PSLOT; + &ROTDIR;/logs/@Y@m@d@H/remapgrib_#T#.log + ROTDIR&ROTDIR; + CDUMP&CDUMP; + COMPONENT&COMPONENT; + yyyymmdd@Y@m@d + hh@H + fcst#T# + GRID_NAMES201D130D242 + + &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/&CDUMP;.t@Hz.pgrb2.&RES;.f#T# + + + + + + + + full 242 130 201 + full,Africa,Beijing,Cambodia,EPacific,Europe,Taiwan,WAtlantic,WPacific AK,AKZoom,AKZoom2 CONUS,NC,NE,NW,SC,SE,SW NHemi + global.yml globalAK.yml globalCONUS.yml globalNHemi.yml + + + + + + source &PYGRAFDIR;/pre.sh; + cd &PYGRAFDIR;; + python &PYGRAFDIR;/create_graphics.py \ + maps \ + -d &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/grib2/0p25/post/#GRID_ID#\ + -f 0 &FCST_LENGTH; 6 \ + --file_type prs \ + --file_tmpl "&CDUMP;.t@Hz.pgrb2.0p25.f{FCST_TIME:03d}"\ + --images &PYGRAFDIR;/image_lists/#IMGFILE# hourly\ + -m "GFSv17p8_UGWPV1_C3_MYNN" \ + -n ${SLURM_CPUS_ON_NODE:-12} \ + -o &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/pyprd \ + -s @Y@m@d@H \ + --tiles "#TILESET#" \ + -z &ROTDIR;/&CDUMP;.@Y@m@d/@H/products/&COMPONENT;/img + + + &ACCOUNT; + &QUEUE; + &RESOURCES_PYTHON; + &WALLTIME_PYTHON; + --exclusive + FV3GFS_python_maps_#GRID_ID#_@H_ugwpv1_c3_mynn + &ROTDIR;/logs/@Y@m@d@H/python_@Y@m@d@H00_maps_#GRID_ID#_0-6-&FCST_LENGTH;.log + + + + + + + + + + + From ee90eed60d06acdb8c2cf220a837901d8d74fe7c Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Wed, 25 Sep 2024 17:09:44 +0000 Subject: [PATCH 5/8] Resolve unit test and Python conflicts. --- ci/scripts/tests/test_setup.py | 2 +- workflow/rocoto/tasks_gsl.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/scripts/tests/test_setup.py b/ci/scripts/tests/test_setup.py index 77a36369f4..9c304dd5cf 100755 --- a/ci/scripts/tests/test_setup.py +++ b/ci/scripts/tests/test_setup.py @@ -7,7 +7,7 @@ HOMEgfs = os.sep.join(_here.split(os.sep)[:-3]) RUNDIR = os.path.join(_here, 'testdata/RUNDIR') pslot = "C48_ATM" -account = "fv3-cpu" +account = "gsd-fv3" foobar = "foobar" diff --git a/workflow/rocoto/tasks_gsl.py b/workflow/rocoto/tasks_gsl.py index 3ebd2d9437..18354744b7 100644 --- a/workflow/rocoto/tasks_gsl.py +++ b/workflow/rocoto/tasks_gsl.py @@ -66,7 +66,7 @@ def __init__(self, app_config: AppConfig, run: str) -> None: envar_dict = {'RUN_ENVIR': self._base.get('RUN_ENVIR', 'emc'), 'HOMEgfs': self.HOMEgfs, 'EXPDIR': self._base.get('EXPDIR'), -#JKH + # JKH 'ROTDIR': self._base.get('ROTDIR'), 'NET': self._base.get('NET'), 'RUN': self.run, @@ -211,7 +211,7 @@ def get_resource(self, task_name): else: native += ':shared' elif scheduler in ['slurm']: -#JKH native = '--export=NONE' + # JKH native = '--export=NONE' native = '&NATIVE_STR;' if task_config['RESERVATION'] != "": native += '' if task_name in Tasks.SERVICE_TASKS else ' --reservation=' + task_config['RESERVATION'] From ed968e9650694c6fc5cc792107cb4607dff21dd6 Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Thu, 26 Sep 2024 23:53:25 +0000 Subject: [PATCH 6/8] Update ufs_model.fd and ufs_utils.fd pointers. Add shal_cnv back to config.fcst. --- .gitmodules | 7 +++---- parm/config/gfs/config.fcst | 8 ++++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index d43c5bb0ba..f96873bde1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ [submodule "sorc/ufs_model.fd"] path = sorc/ufs_model.fd - url = https://github.com/kayeekayee/ufs-weather-model.git - branch = 2024jul19_c127601 + url = https://github.com/NOAA-GSL/ufs-weather-model + ignore = dirty [submodule "sorc/wxflow"] path = sorc/wxflow url = https://github.com/NOAA-EMC/wxflow @@ -10,8 +10,7 @@ url = https://github.com/NOAA-EMC/gfs-utils [submodule "sorc/ufs_utils.fd"] path = sorc/ufs_utils.fd - url = https://github.com/kayeekayee/UFS_UTILS.git - branch = 2024aug4_3ef2e6b + url = https://github.com/NOAA-GSL/UFS_UTILS.git [submodule "sorc/verif-global.fd"] path = sorc/verif-global.fd url = https://github.com/NOAA-EMC/EMC_verif-global.git diff --git a/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index 44f137eace..89165d984e 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -137,7 +137,7 @@ export d2_bg_k2=0.04 export dz_min=6 export n_sponge=42 -# PBL/turbulance schemes +# PBL/turbulence schemes export hybedmf=".false." if [[ "${CCPP_SUITE}" == "FV3_global_nest"* ]]; then export satmedmf=".false." @@ -149,7 +149,7 @@ export isatmedmf=1 if [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_c3_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_c3_mynn" ]] ; then export satmedmf=".false." export isatmedmf=0 - export CPP + export shal_cnv=".false." export do_mynnedmf=".true." export do_mynnsfclay=".false." export icloud_bl=1 @@ -214,6 +214,10 @@ else fi fi #JKH +#Convection schemes ### JKH - affects field table name +tbp="" +if [ "$progsigma" = ".true." ]; then tbp="_progsigma" ; fi + # Microphysics configuration export dnats=0 From c64aa91285fe96bd0fe3e278526ff40579dbe2d2 Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Fri, 27 Sep 2024 01:01:33 +0000 Subject: [PATCH 7/8] Remove extra statement. --- parm/config/gfs/config.fcst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index 89165d984e..800e68e1e7 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -214,10 +214,6 @@ else fi fi #JKH -#Convection schemes ### JKH - affects field table name -tbp="" -if [ "$progsigma" = ".true." ]; then tbp="_progsigma" ; fi - # Microphysics configuration export dnats=0 From 6f008e1ad5082da18f803e9e882514bfbe1f4e92 Mon Sep 17 00:00:00 2001 From: "kayee.wong" Date: Fri, 27 Sep 2024 16:14:50 +0000 Subject: [PATCH 8/8] Update pointers and submodules. --- FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst | 2 +- sorc/ufs_model.fd | 2 +- sorc/ufs_utils.fd | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst index 44f137eace..44826db5d1 100644 --- a/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst +++ b/FV3GFSwfm/rt_v17p8_ugwpv1_c3_mynn/config.fcst @@ -149,7 +149,7 @@ export isatmedmf=1 if [[ "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_ugwpv1_c3_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_mynn" || "$CCPP_SUITE" == "FV3_GFS_v17_p8_c3_mynn" ]] ; then export satmedmf=".false." export isatmedmf=0 - export CPP + export shal_cnv=".false." export do_mynnedmf=".true." export do_mynnsfclay=".false." export icloud_bl=1 diff --git a/sorc/ufs_model.fd b/sorc/ufs_model.fd index 945128c1b3..3b4f88528b 160000 --- a/sorc/ufs_model.fd +++ b/sorc/ufs_model.fd @@ -1 +1 @@ -Subproject commit 945128c1b35d1d31ea0572721be87d013d53123b +Subproject commit 3b4f88528ba1a8c00265eae2a2339f4b82e26dc2 diff --git a/sorc/ufs_utils.fd b/sorc/ufs_utils.fd index f689bd2b50..78ff429bc2 160000 --- a/sorc/ufs_utils.fd +++ b/sorc/ufs_utils.fd @@ -1 +1 @@ -Subproject commit f689bd2b5049cf18f2367c3fa65473fad0f797b1 +Subproject commit 78ff429bc2dec45ff7dd9ac0d53cc75f12a739a8