diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 3113c31149..b04c85688b 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -57,7 +57,7 @@ jobs: if-no-files-found: ignore - name: Comment ReadDocs Link in PR - if: github.event_name == 'pull_request' + if: ${{ github.event_name == 'pull_request' }} uses: actions/github-script@v6 with: script: | diff --git a/.gitignore b/.gitignore index c9e384aae0..d8acb1db70 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,6 @@ fix/chem fix/cice fix/cpl fix/datm -fix/gldas fix/gdas fix/gsi fix/lut diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile index 34535ed608..6f27804a3c 100644 --- a/ci/Jenkinsfile +++ b/ci/Jenkinsfile @@ -119,7 +119,7 @@ pipeline { axis { name 'Case' // TODO add dynamic list of cases from env vars (needs addtional plugins) - values 'C48C48_ufs_hybatmDA', 'C48_ATM', 'C48_S2SW', 'C48_S2SWA_gefs', 'C48mx500_3DVarAOWCDA', 'C96C48_hybatmDA', 'C96_atm3DVar', 'C96_atmsnowDA' + values 'C48C48_ufs_hybatmDA', 'C48_ATM', 'C48_S2SW', 'C48_S2SWA_gefs', 'C48mx500_3DVarAOWCDA', 'C96C48_hybatmDA', 'C96_atm3DVar', 'C96_atmaerosnowDA' } } stages { @@ -155,12 +155,18 @@ pipeline { sh(script: "${HOMEgfs}/ci/scripts/utils/ci_utils_wrapper.sh cancel_all_batch_jobs ${HOME}/RUNTESTS") ws(HOME) { if (fileExists('RUNTESTS/error.logs')) { + def error_logs = sh(script: "cat RUNTESTS/error.logs", returnStdout: true).trim() + try { + pullRequest.comment("Experiment ${Case} failed on ${Machine}\n\nError logs:\n\n${error_logs}") + } catch (Exception error) { + echo "Failed to comment on PR: ${error.getMessage()}" + } def fileContent = readFile 'RUNTESTS/error.logs' def lines = fileContent.readLines() for (line in lines) { echo "archiving: ${line}" archiveArtifacts artifacts: "${line}", fingerprint: true - } + } } } error("Failed to run experiments ${Case} on ${Machine}") diff --git a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml index d9156e38f3..b972d3a445 100644 --- a/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml +++ b/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml @@ -19,5 +19,4 @@ arguments: skip_ci_on_hosts: - orion - - hera - hercules diff --git a/ci/cases/pr/C48C48_ufs_hybatmDA.yaml b/ci/cases/pr/C96C48_ufs_hybatmDA.yaml similarity index 77% rename from ci/cases/pr/C48C48_ufs_hybatmDA.yaml rename to ci/cases/pr/C96C48_ufs_hybatmDA.yaml index 7d3644b1af..da68b0f86c 100644 --- a/ci/cases/pr/C48C48_ufs_hybatmDA.yaml +++ b/ci/cases/pr/C96C48_ufs_hybatmDA.yaml @@ -5,12 +5,13 @@ experiment: arguments: pslot: {{ 'pslot' | getenv }} app: ATM - resdetatmos: 48 + resdetatmos: 96 resensatmos: 48 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - idate: 2021032312 - edate: 2021032400 + icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C96C48 + idate: 2024022318 + edate: 2024022400 nens: 2 gfs_cyc: 1 start: warm diff --git a/ci/cases/pr/C96_atmsnowDA.yaml b/ci/cases/pr/C96_atmaerosnowDA.yaml similarity index 81% rename from ci/cases/pr/C96_atmsnowDA.yaml rename to ci/cases/pr/C96_atmaerosnowDA.yaml index 35fcc10fb2..7e22955a37 100644 --- a/ci/cases/pr/C96_atmsnowDA.yaml +++ b/ci/cases/pr/C96_atmaerosnowDA.yaml @@ -4,7 +4,7 @@ experiment: arguments: pslot: {{ 'pslot' | getenv }} - app: ATM + app: ATMA resdetatmos: 96 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR @@ -14,7 +14,7 @@ arguments: nens: 0 gfs_cyc: 1 start: cold - yaml: {{ HOMEgfs }}/ci/cases/yamls/atmsnowDA_defaults_ci.yaml + yaml: {{ HOMEgfs }}/ci/cases/yamls/atmaerosnowDA_defaults_ci.yaml skip_ci_on_hosts: - orion diff --git a/ci/cases/yamls/atmsnowDA_defaults_ci.yaml b/ci/cases/yamls/atmaerosnowDA_defaults_ci.yaml similarity index 100% rename from ci/cases/yamls/atmsnowDA_defaults_ci.yaml rename to ci/cases/yamls/atmaerosnowDA_defaults_ci.yaml diff --git a/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml b/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml index 126c0f461a..1075f55b63 100644 --- a/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml +++ b/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml @@ -6,11 +6,11 @@ base: DO_JEDIATMENS: "YES" ACCOUNT: {{ 'SLURM_ACCOUNT' | getenv }} atmanl: - LAYOUT_X_ATMANL: 1 - LAYOUT_Y_ATMANL: 1 + LAYOUT_X_ATMANL: 4 + LAYOUT_Y_ATMANL: 4 atmensanl: - LAYOUT_X_ATMENSANL: 1 - LAYOUT_Y_ATMENSANL: 1 + LAYOUT_X_ATMENSANL: 4 + LAYOUT_Y_ATMENSANL: 4 esfc: DONST: "NO" nsst: diff --git a/ci/scripts/pr_list_database.py b/ci/scripts/pr_list_database.py index 224aabd361..f525d64987 100755 --- a/ci/scripts/pr_list_database.py +++ b/ci/scripts/pr_list_database.py @@ -2,154 +2,126 @@ import sys import os -from pathlib import Path -from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter, REMAINDER, ZERO_OR_MORE -import sqlite3 +from wxflow import SQLiteDB, SQLiteDBError +from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter, REMAINDER def full_path(string): """ - Gets the absolute path of the given file and confirms the directory exists + full_path Get the absolute path of a file or directory. Parameters ---------- string : str - Path to a file + The relative path of the file or directory. Returns - -------- + ------- str - Absolute path of input path + The absolute path of the file or directory. Raises - ------- + ------ NotADirectoryError - If the target directory for the file does not exist. - + If the provided string does not represent a valid file or directory. """ - if os.path.isfile(string) or os.path.isdir(os.path.dirname(string)): return os.path.abspath(string) else: raise NotADirectoryError(string) -def sql_connection(filename: os.path) -> sqlite3.Connection: +def create_table(db: SQLiteDB): """ - Returns an Sqlite3 Cursor object from a given path to a sqlite3 database file + Create a new table in a database. Parameters ---------- - filename : Path - Full path to a sqlite3 database file - - Returns - ------- - sqlite3.Connection - Sqlite3 Connection object for updating table - + db : SQLiteDB + The database to create. """ - try: - return sqlite3.connect(filename) - except sqlite3.Error: - print(sqlite3.Error) - sys.exit(-1) + db.create_table('pr_list', ['pr INTEGER PRIMARY KEY UNIQUE', 'state TEXT', 'status TEXT', 'reset_id INTEGER', 'cases TEXT']) -def sql_table(obj: sqlite3.Cursor) -> None: +def add_pr(db: SQLiteDB, pr: str): """ - Creates the initial sqlite3 table for PR states and status + Add a pull request to the database. Parameters ---------- - obj : sqlite3.Cursor - Cursor object for Sqlite3 - - """ - - obj.execute("CREATE TABLE processing(pr integer PRIMARY KEY, state text, status text, reset_id integer, cases text)") - - -def sql_insert(obj: sqlite3.Cursor, entities: list) -> None: + ci_database : SQLiteDB + The database to add the pull request to. + pr : str + The pull request to add. """ - Inserts a new row in sqlite3 table with PR, state, and status + entities = (pr, 'Open', 'Ready', 0, 'ci_repo') + try: + db.insert_data('pr_list', entities) + except (SQLiteDBError.IntegrityError) as e: + if 'unique' in str(e).lower(): + print(f"pr {pr} already is in list: nothing added") - Parameters - ---------- - obj : sqlite3.Cursor - Cursor object for Sqlite3 - entities : list - A list of four string values that go into sqlite table (pr, state, status, reset_id, cases) - pr: pull request number - state: The new value for the state (Open, Closed) - status: The new value for the status (Ready, Running, Failed) - reset_id: The value for number of times reset_id to Ready - cases: String containing case selection information +def update_pr(db: SQLiteDB, args): """ - - obj.execute('INSERT INTO processing(pr, state, status, reset_id, cases) VALUES(?, ?, ?, ?, ?)', entities) - - -def sql_update(obj: sqlite3.Cursor, pr: str, updates: dict) -> None: - """Updates table for a given pr with new values for state and status + Update a pull request in the database. Parameters ---------- - obj : sqlite.sql_connection - sqlite3 Cursor Object - pr : str - The given pr number to update in the table - updates : dict - Dictionary of values to update for a given PR to include by postion - state, The new value for the state (Open, Closed) - status, The new value for the status (Ready, Running, Failed) - reset_id, The value for number of times reset_id to Ready - cases, Information regarding which cases are used (i.e. self PR) - + db : SQLiteDB + The database to update the pull request in. + args : argparse.Namespace + The command line arguments. """ + if len(args.update_pr) < 2: + print(f"update_pr must have at least one vaule to update") + sys.exit(0) update_list = ['state', 'status', 'reset_id', 'cases'] - rows = sql_fetch(obj) - for value in updates: + for value in args.update_pr[1:]: update = update_list.pop(0) - obj.execute(f'UPDATE processing SET "{update}" = "{value}" WHERE pr = {pr}') - + db.update_data('pr_list', update, value, 'pr', args.update_pr[0]) -def sql_fetch(obj: sqlite3.Cursor) -> list: - """ Gets list of all rows in table - - Parameters - ---------- - obj : sqlite.sql_connection - sqlite3 Cursor Object +def display_db(db, display): """ - - obj.execute('SELECT * FROM processing') - return obj.fetchall() - - -def sql_remove(obj: sqlite3.Cursor, pr: str) -> None: - """ Removes the row from table with given pr number + Display the database. Parameters ---------- - obj : sqlite.sql_connection - sqlite3 Connection Object - pr : str - pr number acting as key for removing the row with in it + ci_database : SQLiteDB + The database to display. + display : list + The command line argument values. + Returns + ------- + list + The rows of the database. """ + values = [] + if len(display) == 1: + rows = db.fetch_data('pr_list', ['pr', 'state', 'status', 'reset_id', 'cases'], f'pr = {display[0]}') + else: + rows = db.fetch_data('pr_list', ['pr', 'state', 'status', 'reset_id', 'cases']) + for row in rows: + values.append(' '.join(map(str, row))) - obj.execute(f'DELETE FROM processing WHERE pr = {pr}').rowcount + return values def input_args(): + """ + Parse command line arguments. - description = """Arguments for creating and updating db file for pr states + Returns + ------- + argparse.Namespace + The parsed command line arguments. """ + description = """Arguments for creating and updating db file for pr states + """ parser = ArgumentParser(description=description, formatter_class=ArgumentDefaultsHelpFormatter) @@ -160,7 +132,6 @@ def input_args(): parser.add_argument('--update_pr', nargs=REMAINDER, metavar=('pr', 'state', 'status', 'reset_id', 'cases'), help='updates state and status of a given pr', required=False) parser.add_argument('--display', nargs='*', help='output pr table', required=False) - args = parser.parse_args() return args @@ -174,42 +145,19 @@ def input_args(): print(f'Error: {args.dbfile} does not exsist') sys.exit(-1) - con = sql_connection(args.dbfile) - obj = con.cursor() + ci_database = SQLiteDB(args.dbfile) + ci_database.connect() if args.create: - sql_table(obj) - + create_table(ci_database) if args.add_pr: - rows = sql_fetch(obj) - for row in rows: - if str(row[0]) == str(args.add_pr[0]): - print(f"pr {row[0]} already is in list: nothing added") - sys.exit(0) - - entities = (args.add_pr[0], 'Open', 'Ready', 0, 'ci_repo') - sql_insert(obj, entities) - + add_pr(ci_database, args.add_pr[0]) if args.update_pr: - if len(args.update_pr) < 2: - print(f"update_pr must have at least one vaule to update") - sys.exit(0) - pr = args.update_pr[0] - - sql_update(obj, pr, args.update_pr[1:]) - + update_pr(ci_database, args) if args.remove_pr: - sql_remove(obj, args.remove_pr[0]) - + ci_database.remove_data('pr_list', 'PR', args.remove_pr[0]) if args.display is not None: - rows = sql_fetch(obj) - if len(args.display) == 1: - for row in rows: - if int(args.display[0]) == int(row[0]): - print(' '.join(map(str, row))) - else: - for row in rows: - print(' '.join(map(str, row))) - - con.commit() - con.close() + for rows in display_db(ci_database, args.display): + print(rows) + + ci_database.disconnect() diff --git a/docs/source/configure.rst b/docs/source/configure.rst index 12c2f75a48..439c5df110 100644 --- a/docs/source/configure.rst +++ b/docs/source/configure.rst @@ -4,58 +4,60 @@ Configure Run The global-workflow configs contain switches that change how the system runs. Many defaults are set initially. Users wishing to run with different settings should adjust their $EXPDIR configs and then rerun the ``setup_xml.py`` script since some configuration settings/switches change the workflow/xml ("Adjusts XML" column value is "YES"). -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| Switch | What | Default | Adjusts XML | More Details | -+================+==================================+===============+=============+===================================================+ -| APP | Model application | ATM | YES | See case block in config.base for options | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DOIAU | Enable 4DIAU for control | YES | NO | Turned off for cold-start first half cycle | -| | with 3 increments | | | | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DOHYBVAR | Run EnKF | YES | YES | Don't recommend turning off | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DONST | Run NSST | YES | NO | If YES, turns on NSST in anal/fcst steps, and | -| | | | | turn off rtgsst | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_AWIPS | Run jobs to produce AWIPS | NO | YES | downstream processing, ops only | -| | products | | | | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_BUFRSND | Run job to produce BUFR | NO | YES | downstream processing | -| | sounding products | | | | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_GEMPAK | Run job to produce GEMPAK | NO | YES | downstream processing, ops only | -| | products | | | | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_FIT2OBS | Run FIT2OBS job | YES | YES | Whether to run the FIT2OBS job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_TRACKER | Run tracker job | YES | YES | Whether to run the tracker job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_GENESIS | Run genesis job | YES | YES | Whether to run the genesis job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_GENESIS_FSU | Run FSU genesis job | YES | YES | Whether to run the FSU genesis job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_VERFOZN | Run GSI monitor ozone job | YES | YES | Whether to run the GSI monitor ozone job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_VERFRAD | Run GSI monitor radiance job | YES | YES | Whether to run the GSI monitor radiance job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_VMINMON | Run GSI monitor minimization job | YES | YES | Whether to run the GSI monitor minimization job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| DO_METP | Run METplus jobs | YES | YES | One cycle spinup | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| EXP_WARM_START | Is experiment starting warm | .false. | NO | Impacts IAU settings for initial cycle. Can also | -| | (.true.) or cold (.false)? | | | be set when running ``setup_expt.py`` script with | -| | | | | the ``--start`` flag (e.g. ``--start warm``) | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| HPSSARCH | Archive to HPPS | NO | Possibly | Whether to save output to tarballs on HPPS | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| LOCALARCH | Archive to a local directory | NO | Possibly | Instead of archiving data to HPSS, archive to a | -| | | | | local directory, specified by ATARDIR. If | -| | | | | LOCALARCH=YES, then HPSSARCH must =NO. Changing | -| | | | | HPSSARCH from YES to NO will adjust the XML. | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| QUILTING | Use I/O quilting | .true. | NO | If .true. choose OUTPUT_GRID as cubed_sphere_grid | -| | | | | in netcdf or gaussian_grid | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ -| WRITE_DOPOST | Run inline post | .true. | NO | If .true. produces master post output in forecast | -| | | | | job | -+----------------+----------------------------------+---------------+-------------+---------------------------------------------------+ ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| Switch | What | Default | Adjusts XML | More Details | ++==================+==================================+===============+=============+===================================================+ +| APP | Model application | ATM | YES | See case block in config.base for options | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DEBUG_POSTSCRIPT | Debug option for PBS scheduler | NO | YES | Sets debug=true for additional logging | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DOIAU | Enable 4DIAU for control | YES | NO | Turned off for cold-start first half cycle | +| | with 3 increments | | | | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DOHYBVAR | Run EnKF | YES | YES | Don't recommend turning off | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DONST | Run NSST | YES | NO | If YES, turns on NSST in anal/fcst steps, and | +| | | | | turn off rtgsst | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_AWIPS | Run jobs to produce AWIPS | NO | YES | downstream processing, ops only | +| | products | | | | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_BUFRSND | Run job to produce BUFR | NO | YES | downstream processing | +| | sounding products | | | | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_GEMPAK | Run job to produce GEMPAK | NO | YES | downstream processing, ops only | +| | products | | | | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_FIT2OBS | Run FIT2OBS job | YES | YES | Whether to run the FIT2OBS job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_TRACKER | Run tracker job | YES | YES | Whether to run the tracker job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_GENESIS | Run genesis job | YES | YES | Whether to run the genesis job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_GENESIS_FSU | Run FSU genesis job | YES | YES | Whether to run the FSU genesis job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_VERFOZN | Run GSI monitor ozone job | YES | YES | Whether to run the GSI monitor ozone job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_VERFRAD | Run GSI monitor radiance job | YES | YES | Whether to run the GSI monitor radiance job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_VMINMON | Run GSI monitor minimization job | YES | YES | Whether to run the GSI monitor minimization job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| DO_METP | Run METplus jobs | YES | YES | One cycle spinup | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| EXP_WARM_START | Is experiment starting warm | .false. | NO | Impacts IAU settings for initial cycle. Can also | +| | (.true.) or cold (.false)? | | | be set when running ``setup_expt.py`` script with | +| | | | | the ``--start`` flag (e.g. ``--start warm``) | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| HPSSARCH | Archive to HPPS | NO | Possibly | Whether to save output to tarballs on HPPS | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| LOCALARCH | Archive to a local directory | NO | Possibly | Instead of archiving data to HPSS, archive to a | +| | | | | local directory, specified by ATARDIR. If | +| | | | | LOCALARCH=YES, then HPSSARCH must =NO. Changing | +| | | | | HPSSARCH from YES to NO will adjust the XML. | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| QUILTING | Use I/O quilting | .true. | NO | If .true. choose OUTPUT_GRID as cubed_sphere_grid | +| | | | | in netcdf or gaussian_grid | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ +| WRITE_DOPOST | Run inline post | .true. | NO | If .true. produces master post output in forecast | +| | | | | job | ++------------------+----------------------------------+---------------+-------------+---------------------------------------------------+ diff --git a/docs/source/init.rst b/docs/source/init.rst index 14a0ea0d56..1b28d75584 100644 --- a/docs/source/init.rst +++ b/docs/source/init.rst @@ -246,14 +246,15 @@ Automated Generation Cycled mode ----------- -Not yet supported. See :ref:`Manual Generation` section below for how to create your ICs yourself (outside of workflow). +Not yet supported. .. _forecastonly-coupled: --------------------- Forecast-only coupled --------------------- -Coupled initial conditions are currently only generated offline and copied prior to the forecast run. Prototype initial conditions will automatically be used when setting up an experiment as an S2SW app, there is no need to do anything additional. Copies of initial conditions from the prototype runs are currently maintained on Hera, Orion/Hercules, Jet, and WCOSS2. The locations used are determined by ``parm/config/config.coupled_ic``. If you need prototype ICs on another machine, please contact Walter (Walter.Kolczynski@noaa.gov). +Coupled initial conditions are currently only generated offline and copied prior to the forecast run. Prototype initial conditions will automatically be used when setting up an experiment as an S2SW app, there is no need to do anything additional. Sample copies of initial conditions from the prototype runs are currently maintained on Hera, Orion/Hercules, Jet, and WCOSS2. The locations used are determined by ``parm/config/config.stage_ic``. +Note however, that due to the rapid changes in the model configuration, some staged initial conditions may not work. .. _forecastonly-atmonly: @@ -261,7 +262,7 @@ Coupled initial conditions are currently only generated offline and copied prior Forecast-only mode (atm-only) ----------------------------- -The table below lists the needed initial condition files from past GFS versions to be used by the UFS_UTILS gdas_init utility. The utility will pull these files for you. See the next section (Manual Generation) for how to run the UFS_UTILS gdas_init utility and create initial conditions for your experiment. +The table below lists for reference the needed initial condition files from past GFS versions to be used by the UFS_UTILS gdas_init utility. The utility will pull these files for you. See the next section (Manual Generation) for how to run the UFS_UTILS gdas_init utility and create initial conditions for your experiment. Note for table: yyyy=year; mm=month; dd=day; hh=cycle @@ -284,11 +285,11 @@ Operations/production output location on HPSS: /NCEPPROD/hpssprod/runhistory/rh +----------------+---------------------------------+-----------------------------------------------------------------------------+--------------------------------+ | v15 ops | gfs.t. ``hh`` z.atmanl.nemsio | gpfs_dell1_nco_ops_com_gfs_prod_gfs. ``yyyymmdd`` _ ``hh`` .gfs_nemsioa.tar | gfs. ``yyyymmdd`` /``hh`` | | | | | | -| pre-2020022600 | gfs.t. ``hh`` z.sfcanl.nemsio | | | +| pre-2020022600 | gfs.t. ``hh`` z.sfcanl.nemsio | | | +----------------+---------------------------------+-----------------------------------------------------------------------------+--------------------------------+ | v15 ops | gfs.t. ``hh`` z.atmanl.nemsio | com_gfs_prod_gfs. ``yyyymmdd`` _ ``hh`` .gfs_nemsioa.tar | gfs. ``yyyymmdd`` /``hh`` | | | | | | -| | gfs.t. ``hh`` z.sfcanl.nemsio | | | +| | gfs.t. ``hh`` z.sfcanl.nemsio | | | +----------------+---------------------------------+-----------------------------------------------------------------------------+--------------------------------+ | v16 retro | gfs.t. ``hh`` z.atmanl.nc | gfs_netcdfa.tar* | gfs. ``yyyymmdd`` /``hh``/atmos| | | | | | @@ -318,82 +319,14 @@ Manual Generation The following information is for users needing to generate cold-start initial conditions for a cycled experiment that will run at a different resolution or layer amount than the operational GFS (C768C384L127). -The ``chgres_cube`` code is available from the `UFS_UTILS repository `_ on GitHub and can be used to convert GFS ICs to a different resolution or number of layers. Users may clone the develop/HEAD branch or the same version used by global-workflow develop. The ``chgres_cube`` code/scripts currently support the following GFS inputs: +The ``chgres_cube`` code is available from the `UFS_UTILS repository `_ on GitHub and can be used to convert GFS ICs to a different resolution or number of layers. Users should see the documentation to generation initial conditions in the UFS_UTILS repository. The ``chgres_cube`` code/scripts currently support the following GFS inputs: * pre-GFSv14 * GFSv14 * GFSv15 * GFSv16 -Users can use the copy of UFS_UTILS that is already cloned and built within their global-workflow clone or clone/build it separately: - -Within a built/linked global-workflow clone: - -:: - - cd sorc/ufs_utils.fd/util/gdas_init - -Clone and build separately: - -1. Clone UFS_UTILS: - -:: - - git clone --recursive https://github.com/NOAA-EMC/UFS_UTILS.git - -Then switch to a different tag or use the default branch (develop). - -2. Build UFS_UTILS: - -:: - - sh build_all.sh - cd fix - sh link_fixdirs.sh emc $MACHINE - -where ``$MACHINE`` is ``wcoss2``, ``hera``, or ``jet``. - -.. note:: - UFS-UTILS builds on Orion/Hercules but due to the lack of HPSS access on Orion/Hercules the ``gdas_init`` utility is not supported there. - -3. Configure your conversion: - -:: - - cd util/gdas_init - vi config - -Read the doc block at the top of the config and adjust the variables to meet you needs (e.g. ``yy, mm, dd, hh`` for ``SDATE``). - -Most users will want to adjust the following ``config`` settings for the current system design: - -#. EXTRACT_DATA=YES (to pull original ICs to convert off HPSS) -#. RUN_CHGRES=YES (to run chgres_cube on the original ICs pulled off HPSS) -#. LEVS=128 (for the L127 GFS) - -4. Submit conversion script: - -:: - - ./driver.$MACHINE.sh - -where ``$MACHINE`` is currently ``wcoss2``, ``hera`` or ``jet``. Additional options will be available as support for other machines expands. - -.. note:: - UFS-UTILS builds on Orion/Hercules but due to lack of HPSS access there is no ``gdas_init`` driver for Orion/Hercules nor support to pull initial conditions from HPSS for the ``gdas_init`` utility. - -Several small jobs will be submitted: - - - 1 jobs to pull inputs off HPSS - - 1 or 2 jobs to run ``chgres_cube`` (1 for deterministic/hires and 1 for each EnKF ensemble member) - -The chgres jobs will have a dependency on the data-pull jobs and will wait to run until all data-pull jobs have completed. - -5. Check output: - -In the config you will have defined an output folder called ``$OUTDIR``. The converted output will be found there, including the needed abias and radstat initial condition files (if CDUMP=gdas). The files will be in the needed directory structure for the global-workflow system, therefore a user can move the contents of their ``$OUTDIR`` directly into their ``$ROTDIR``. - -Please report bugs to George Gayno (george.gayno@noaa.gov) and Kate Friedman (kate.friedman@noaa.gov). +See instructions in UFS_UTILS to clone, build and generate initial conditions. .. _warmstarts-prod: @@ -489,7 +422,7 @@ Tarballs per cycle: com_gfs_vGFSVER_enkfgdas.YYYYMMDD_CC.enkfgdas_restart_grp7.tar com_gfs_vGFSVER_enkfgdas.YYYYMMDD_CC.enkfgdas_restart_grp8.tar -Go to the top of your ``ROTDIR`` and pull the contents of all tarballs there. The tarballs already contain the needed directory structure. +Go to the top of your ``ROTDIR`` and pull the contents of all tarballs there. The tarballs already contain the needed directory structure. Note that the directory structure has changed, so this may not be correct. .. _warmstarts-preprod-parallels: @@ -517,6 +450,7 @@ Recent pre-implementation parallel series was for GFS v16 (implemented March 202 * **Where do I put the warm-start initial conditions?** Extraction should occur right inside your ROTDIR. You may need to rename the enkf folder (enkf.gdas.$PDY -> enkfgdas.$PDY). Due to a recent change in the dycore, you may also need an additional offline step to fix the checksum of the NetCDF files for warm start. See the :ref:`Fix netcdf checksum section `. +The current model has undergone several updates and the files generated may not be completely usable by the model. .. _retrospective: diff --git a/env/HERA.env b/env/HERA.env index 2029a69328..f55434e8d9 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -107,6 +107,14 @@ elif [[ "${step}" = "ocnanalchkpt" ]]; then export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalchkpt}" +elif [[ "${step}" = "ocnanalecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ocnanalecen)) + + export NTHREADS_OCNANALECEN=${nth_ocnanalecen:-${nth_max}} + [[ ${NTHREADS_OCNANALECEN} -gt ${nth_max} ]] && export NTHREADS_OCNANALECEN=${nth_max} + export APRUN_OCNANALECEN="${launcher} -n ${npe_ocnanalecen} --cpus-per-task=${NTHREADS_OCNANALECEN}" + elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then export MKL_NUM_THREADS=4 diff --git a/env/ORION.env b/env/ORION.env index 692fa8ab66..17d0d24d97 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -118,6 +118,14 @@ elif [[ "${step}" = "ocnanalchkpt" ]]; then [[ ${NTHREADS_OCNANAL} -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalchkpt} --cpus-per-task=${NTHREADS_OCNANAL}" +elif [[ "${step}" = "ocnanalecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ocnanalecen)) + + export NTHREADS_OCNANALECEN=${nth_ocnanalecen:-${nth_max}} + [[ ${NTHREADS_OCNANALECEN} -gt ${nth_max} ]] && export NTHREADS_OCNANALECEN=${nth_max} + export APRUN_OCNANALECEN="${launcher} -n ${npe_ocnanalecen} --cpus-per-task=${NTHREADS_OCNANALECEN}" + elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then export MKL_NUM_THREADS=4 diff --git a/gempak/fix/gfs_meta b/gempak/fix/gfs_meta index 5ca99b4dc6..c86233214b 100755 --- a/gempak/fix/gfs_meta +++ b/gempak/fix/gfs_meta @@ -1,23 +1,23 @@ -$USHgempak/gfs_meta_us.sh 36 84 126 216 -$USHgempak/gfs_meta_bwx.sh 36 84 126 180 -$USHgempak/gfs_meta_comp.sh 36 84 126 -$USHgempak/gfs_meta_ak.sh 36 84 132 216 -$USHgempak/gfs_meta_crb.sh 126 -$USHgempak/gfs_meta_hur.sh 36 84 126 -$USHgempak/gfs_meta_qpf.sh 36 84 132 216 -$USHgempak/gfs_meta_precip.sh 36 84 132 216 384 -$USHgempak/gfs_meta_sa.sh 126 -$USHgempak/gfs_meta_ver.sh 126 -$USHgempak/gfs_meta_hi.sh 384 -$USHgempak/gfs_meta_nhsh.sh 384 -$USHgempak/gfs_meta_trop.sh 384 -$USHgempak/gfs_meta_usext.sh 384 -$USHgempak/gfs_meta_mar_ql.sh 24 48 96 180 -$USHgempak/gfs_meta_mar_comp.sh 126 -$USHgempak/gfs_meta_opc_na_ver 126 -$USHgempak/gfs_meta_opc_np_ver 126 -$USHgempak/gfs_meta_mar_atl.sh 180 -$USHgempak/gfs_meta_mar_pac.sh 180 -$USHgempak/gfs_meta_mar_ver.sh 48 -$USHgempak/gfs_meta_mar_skewt.sh 72 -$USHgempak/gfs_meta_sa2.sh 144 +${HOMEgfs}/gempak/ush/gfs_meta_us.sh 36 84 126 216 +${HOMEgfs}/gempak/ush/gfs_meta_bwx.sh 36 84 126 180 +${HOMEgfs}/gempak/ush/gfs_meta_comp.sh 36 84 126 +${HOMEgfs}/gempak/ush/gfs_meta_ak.sh 36 84 132 216 +${HOMEgfs}/gempak/ush/gfs_meta_crb.sh 126 +${HOMEgfs}/gempak/ush/gfs_meta_hur.sh 36 84 126 +${HOMEgfs}/gempak/ush/gfs_meta_qpf.sh 36 84 132 216 +${HOMEgfs}/gempak/ush/gfs_meta_precip.sh 36 84 132 216 384 +${HOMEgfs}/gempak/ush/gfs_meta_sa.sh 126 +${HOMEgfs}/gempak/ush/gfs_meta_ver.sh 126 +${HOMEgfs}/gempak/ush/gfs_meta_hi.sh 384 +${HOMEgfs}/gempak/ush/gfs_meta_nhsh.sh 384 +${HOMEgfs}/gempak/ush/gfs_meta_trop.sh 384 +${HOMEgfs}/gempak/ush/gfs_meta_usext.sh 384 +${HOMEgfs}/gempak/ush/gfs_meta_mar_ql.sh 24 48 96 180 +${HOMEgfs}/gempak/ush/gfs_meta_mar_comp.sh 126 +${HOMEgfs}/gempak/ush/gfs_meta_opc_na_ver 126 +${HOMEgfs}/gempak/ush/gfs_meta_opc_np_ver 126 +${HOMEgfs}/gempak/ush/gfs_meta_mar_atl.sh 180 +${HOMEgfs}/gempak/ush/gfs_meta_mar_pac.sh 180 +${HOMEgfs}/gempak/ush/gfs_meta_mar_ver.sh 48 +${HOMEgfs}/gempak/ush/gfs_meta_mar_skewt.sh 72 +${HOMEgfs}/gempak/ush/gfs_meta_sa2.sh 144 diff --git a/gempak/ush/gdas_meta_na.sh b/gempak/ush/gdas_meta_na.sh index 6c4768cfb7..fb1c328140 100755 --- a/gempak/ush/gdas_meta_na.sh +++ b/gempak/ush/gdas_meta_na.sh @@ -51,7 +51,7 @@ PROJ = str/90;-105;0 LATLON = 1 -restore $USHgempak/restore/pmsl_thkn.2.nts +restore ${HOMEgfs}/gempak/ush/restore/pmsl_thkn.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -60,7 +60,7 @@ l ru -restore $USHgempak/restore/850mb_hght_tmpc.2.nts +restore ${HOMEgfs}/gempak/ush/restore/850mb_hght_tmpc.2.nts CLRBAR = 1 TEXT = 1/21//hw SKIP = 0 !0 !0 !0 !/3 @@ -70,7 +70,7 @@ l ru -restore $USHgempak/restore/700mb_hght_relh_omeg.2.nts +restore ${HOMEgfs}/gempak/ush/restore/700mb_hght_relh_omeg.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HGT, REL HUMIDITY AND OMEGA|~@ HGT, RH AND OMEGA!0 @@ -78,7 +78,7 @@ l ru -restore $USHgempak/restore/500mb_hght_absv.2.nts +restore ${HOMEgfs}/gempak/ush/restore/500mb_hght_absv.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HGT AND VORTICITY|~@ HGT AND VORTICITY!0 @@ -86,7 +86,7 @@ l ru -restore $USHgempak/restore/250mb_hght_wnd.2.nts +restore ${HOMEgfs}/gempak/ush/restore/250mb_hght_wnd.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HGT, ISOTACHS AND WIND (KTS)|~@ HGT AND WIND!0 diff --git a/gempak/ush/gfs_meta_hi.sh b/gempak/ush/gfs_meta_hi.sh index 6167855ae2..5272204b7a 100755 --- a/gempak/ush/gfs_meta_hi.sh +++ b/gempak/ush/gfs_meta_hi.sh @@ -45,9 +45,9 @@ MAP = 1 CLEAR = yes CLRBAR = 1 -restore ${USHgempak}/restore/garea_hi.nts +restore ${HOMEgfs}/gempak/ush/restore/garea_hi.nts -restore ${USHgempak}/restore/pmsl_thkn.2.nts +restore ${HOMEgfs}/gempak/ush/restore/pmsl_thkn.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -56,7 +56,7 @@ l ru -restore ${USHgempak}/restore/850mb_hght_tmpc.2.nts +restore ${HOMEgfs}/gempak/ush/restore/850mb_hght_tmpc.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HGHTS, TEMPERATURE AND WIND (KTS)|~@ HGHT, TMP, WIND!0!0!0 @@ -64,7 +64,7 @@ l ru -restore ${USHgempak}/restore/700mb_hght_relh_omeg.2.nts +restore ${HOMEgfs}/gempak/ush/restore/700mb_hght_relh_omeg.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HGHTS, REL HUMIDITY AND OMEGA|~@ HGHT, RH AND OMEGA!0 @@ -72,7 +72,7 @@ l ru -restore ${USHgempak}/restore/500mb_hght_absv.2.nts +restore ${HOMEgfs}/gempak/ush/restore/500mb_hght_absv.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HEIGHTS AND VORTICITY|~@ HGHT AND VORTICITY!0 @@ -80,7 +80,7 @@ l ru -restore ${USHgempak}/restore/200mb_hght_wnd.2.nts +restore ${HOMEgfs}/gempak/ush/restore/200mb_hght_wnd.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HEIGHTS, ISOTACHS AND WIND (KTS)|~@ HGHT AND WIND!0 @@ -88,7 +88,7 @@ l ru -restore ${USHgempak}/restore/250mb_hght_wnd.2.nts +restore ${HOMEgfs}/gempak/ush/restore/250mb_hght_wnd.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HEIGHTS, ISOTACHS AND WIND (KTS)|~@ HGHT AND WIND!0 @@ -96,7 +96,7 @@ l ru -restore ${USHgempak}/restore/300mb_hght_wnd.2.nts +restore ${HOMEgfs}/gempak/ush/restore/300mb_hght_wnd.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 5/-2/~ ? $m_title @ HEIGHTS, ISOTACHS AND WIND (KTS)|~@ HGHT AND WIND!0 @@ -149,7 +149,7 @@ CLRBAR = 1 r -restore ${USHgempak}/restore/precip.2.nts +restore ${HOMEgfs}/gempak/ush/restore/precip.2.nts CLRBAR = 1 TEXT = 1/21//hw GDATTIM = F12-F192-06; F214-F384-12 diff --git a/gempak/ush/gfs_meta_nhsh.sh b/gempak/ush/gfs_meta_nhsh.sh index 6e6981c2df..47ac4b1331 100755 --- a/gempak/ush/gfs_meta_nhsh.sh +++ b/gempak/ush/gfs_meta_nhsh.sh @@ -43,9 +43,9 @@ MAP = 1 CLEAR = yes CLRBAR = 1 -restore ${USHgempak}/restore/garea_nh.nts +restore ${HOMEgfs}/gempak/ush/restore/garea_nh.nts -restore ${USHgempak}/restore/500mb_hght_absv.2.nts +restore ${HOMEgfs}/gempak/ush/restore/500mb_hght_absv.2.nts CLRBAR = 1 TEXT = 1/21//hw SKIP = 0 !0 !1 @@ -65,7 +65,7 @@ l ru -restore ${USHgempak}/restore/garea_sh.nts +restore ${HOMEgfs}/gempak/ush/restore/garea_sh.nts DEVICE = nc | Nmeta_sh TITLE = 5//~ ? $m_title @ HEIGHTS AND VORTICITY|~ @ HGHT AND VORTICITY!0 @@ -73,10 +73,10 @@ l ru -restore ${USHgempak}/restore/garea_nh.nts +restore ${HOMEgfs}/gempak/ush/restore/garea_nh.nts DEVICE = nc | Nmeta_nh -restore ${USHgempak}/restore/250mb_hght_wnd.2.nts +restore ${HOMEgfs}/gempak/ush/restore/250mb_hght_wnd.2.nts CLRBAR = 1 TEXT = 1/21//hw GDPFUN = knts((mag(wnd))) !sm9s(hght) @@ -85,11 +85,11 @@ l ru -restore ${USHgempak}/restore/garea_sh.nts +restore ${HOMEgfs}/gempak/ush/restore/garea_sh.nts DEVICE = nc | Nmeta_sh ru -restore ${USHgempak}/restore/precip.2.nts +restore ${HOMEgfs}/gempak/ush/restore/precip.2.nts CLRBAR = 1 TEXT = 1/21//hw GDATTIM = F12-F240-12 @@ -99,7 +99,7 @@ TITLE = 5//~ ? $m_title 12-HOUR TOTAL PRECIPITATION (IN)|~ 12-HOURLY TOTAL PCP l r -restore ${USHgempak}/restore/garea_sh.nts +restore ${HOMEgfs}/gempak/ush/restore/garea_sh.nts DEVICE = nc | Nmeta_sh ru diff --git a/gempak/ush/gfs_meta_us.sh b/gempak/ush/gfs_meta_us.sh index 495cbc5839..f3c6cd0692 100755 --- a/gempak/ush/gfs_meta_us.sh +++ b/gempak/ush/gfs_meta_us.sh @@ -53,7 +53,7 @@ GAREA = 17.529;-129.296;53.771;-22.374 PROJ = str/90;-105;0 LATLON = 0 -restore $USHgempak/restore/pmsl_thkn.2.nts +restore ${HOMEgfs}/gempak/ush/restore/pmsl_thkn.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -62,7 +62,7 @@ l run -restore $USHgempak/restore/850mb_hght_tmpc.2.nts +restore ${HOMEgfs}/gempak/ush/restore/850mb_hght_tmpc.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -71,7 +71,7 @@ l run -restore $USHgempak/restore/700mb_hght_relh_omeg.2.nts +restore ${HOMEgfs}/gempak/ush/restore/700mb_hght_relh_omeg.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -80,7 +80,7 @@ l run -restore $USHgempak/restore/500mb_hght_absv.2.nts +restore ${HOMEgfs}/gempak/ush/restore/500mb_hght_absv.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -89,7 +89,7 @@ l run -restore $USHgempak/restore/250mb_hght_wnd.2.nts +restore ${HOMEgfs}/gempak/ush/restore/250mb_hght_wnd.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -98,7 +98,7 @@ l run -restore $USHgempak/restore/p06m_pmsl.2.nts +restore ${HOMEgfs}/gempak/ush/restore/p06m_pmsl.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw HLSYM = 2;1.5//21//hw diff --git a/gempak/ush/gfs_meta_usext.sh b/gempak/ush/gfs_meta_usext.sh index 3db7c27be4..59b1ce5bab 100755 --- a/gempak/ush/gfs_meta_usext.sh +++ b/gempak/ush/gfs_meta_usext.sh @@ -71,7 +71,7 @@ GAREA = 17.529;-129.296;53.771;-22.374 PROJ = str/90;-105;0 LATLON = 18/2 -restore ${USHgempak}/restore/pmsl_thkn.2.nts +restore ${HOMEgfs}/gempak/ush/restore/pmsl_thkn.2.nts CLRBAR = 1 HLSYM = 2;1.5//21//hw TEXT = 1/21//hw @@ -79,35 +79,35 @@ TITLE = 1/-2/~ ? $m_title PMSL, 1000-500 MB THICKNESS|~MSLP, 1000-500 THKN!0 l run -restore ${USHgempak}/restore/850mb_hght_tmpc.2.nts +restore ${HOMEgfs}/gempak/ush/restore/850mb_hght_tmpc.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 1/-2/~ ? $m_title @ HGT, TEMPERATURE AND WIND (KTS)|~@ HGT, TMP, WIND!0 l run -restore ${USHgempak}/restore/700mb_hght_relh_omeg.2.nts +restore ${HOMEgfs}/gempak/ush/restore/700mb_hght_relh_omeg.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 1/-2/~ ? $m_title @ HGT, REL HUMIDITY AND OMEGA|~@ HGT, RH AND OMEGA!0 l run -restore ${USHgempak}/restore/500mb_hght_absv.2.nts +restore ${HOMEgfs}/gempak/ush/restore/500mb_hght_absv.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 1/-2/~ ? $m_title @ HGT AND VORTICITY|~@ HGT AND VORTICITY!0 l run -restore ${USHgempak}/restore/500mb_hght_gabsv.2.nts +restore ${HOMEgfs}/gempak/ush/restore/500mb_hght_gabsv.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 1/-2/~ ? $m_title @ HGT AND GEO ABS VORT|~@ HGT, GEO ABS VORT!0 l run -restore ${USHgempak}/restore/250mb_hght_wnd.2.nts +restore ${HOMEgfs}/gempak/ush/restore/250mb_hght_wnd.2.nts CLRBAR = 1 TEXT = 1/21//hw TITLE = 1/-2/~ ? $m_title @ HGT, ISOTACHS AND WIND (KTS)|~@ HGT AND WIND!0 @@ -137,7 +137,7 @@ CLEAR = YES l run -restore ${USHgempak}/restore/precip.2.nts +restore ${HOMEgfs}/gempak/ush/restore/precip.2.nts CLRBAR = 1 TEXT = 1/21//hw HILO = 31;0/x#2/.25-10///y diff --git a/jobs/JGDAS_ATMOS_GEMPAK b/jobs/JGDAS_ATMOS_GEMPAK index 55aca00cee..d0d1f16f81 100755 --- a/jobs/JGDAS_ATMOS_GEMPAK +++ b/jobs/JGDAS_ATMOS_GEMPAK @@ -5,16 +5,6 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "gempak" -c "base gempak" # TODO (#1219) This j-job is not part of the rocoto suite -################################ -# Set up the HOME directory -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export PARMwmo=${PARMwmo:-${HOMEgfs}/parm/wmo} -export PARMproduct=${PARMproduct:-${HOMEgfs}/parm/product} -export USHgempak=${USHgempak:-${HOMEgfs}/gempak/ush} -export SRCgfs=${SRCgfs:-${HOMEgfs}/scripts} -export UTILgfs=${UTILgfs:-${HOMEgfs}/util} - ############################################ # Set up model and cycle specific variables ############################################ @@ -58,12 +48,12 @@ fi ######################################################## # Execute the script. -echo "${SRCgfs}/exgdas_atmos_nawips.sh gdas 009 GDAS_GEMPAK ${COM_ATMOS_GEMPAK_1p00}" >> poescript +echo "${SCRgfs}/exgdas_atmos_nawips.sh gdas 009 GDAS_GEMPAK ${COM_ATMOS_GEMPAK_1p00}" >> poescript ######################################################## ######################################################## # Execute the script for quater-degree grib -echo "${SRCgfs}/exgdas_atmos_nawips.sh gdas_0p25 009 GDAS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}" >> poescript +echo "${SCRgfs}/exgdas_atmos_nawips.sh gdas_0p25 009 GDAS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}" >> poescript ######################################################## cat poescript diff --git a/jobs/JGDAS_ATMOS_GEMPAK_META_NCDC b/jobs/JGDAS_ATMOS_GEMPAK_META_NCDC index 92b56f10b8..a6c54b8337 100755 --- a/jobs/JGDAS_ATMOS_GEMPAK_META_NCDC +++ b/jobs/JGDAS_ATMOS_GEMPAK_META_NCDC @@ -9,21 +9,7 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "gempak_meta" -c "base gempak" -################################ -# Set up the HOME directory -################################ -export HOMEgfs=${HOMEgfs:-${PACKAGEROOT}/gfs.${gfs_ver}} -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export PARMwmo=${PARMwmo:-${HOMEgfs}/parm/wmo} -export PARMproduct=${PARMproduct:-${HOMEgfs}/parm/product} -export USHgempak=${USHgempak:-${HOMEgfs}/gempak/ush} -export SRCgfs=${SRCgfs:-${HOMEgfs}/scripts} -export UTILgfs=${UTILgfs:-${HOMEgfs}/util} - -# # Now set up GEMPAK/NTRANS environment -# cp ${HOMEgfs}/gempak/fix/datatype.tbl datatype.tbl @@ -67,10 +53,10 @@ export pgmout=OUTPUT.$$ ######################################################## # Execute the script. -${USHgempak}/gdas_meta_na.sh -${USHgempak}/gdas_ecmwf_meta_ver.sh -${USHgempak}/gdas_meta_loop.sh -${USHgempak}/gdas_ukmet_meta_ver.sh +${HOMEgfs}/gempak/ush/gdas_meta_na.sh +${HOMEgfs}/gempak/ush/gdas_ecmwf_meta_ver.sh +${HOMEgfs}/gempak/ush/gdas_meta_loop.sh +${HOMEgfs}/gempak/ush/gdas_ukmet_meta_ver.sh export err=$?; err_chk ######################################################## @@ -80,7 +66,7 @@ export err=$?; err_chk ######################################################## # Execute the script. -${SRCgfs}/exgdas_atmos_gempak_gif_ncdc.sh +${SCRgfs}/exgdas_atmos_gempak_gif_ncdc.sh export err=$?; err_chk ######################################################## diff --git a/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN b/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN new file mode 100755 index 0000000000..c4ad80c9e3 --- /dev/null +++ b/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN @@ -0,0 +1,38 @@ +#!/bin/bash +source "${HOMEgfs}/ush/preamble.sh" +source "${HOMEgfs}/ush/jjob_header.sh" -e "ocnanalecen" -c "base ocnanal ocnanalecen" + +############################################## +# Set variables used in the script +############################################## + +############################################## +# Begin JOB SPECIFIC work +############################################## + +############################################################### +# Run relevant script + +EXSCRIPT=${GDASOCNCENPY:-${HOMEgfs}/scripts/exgdas_global_marine_analysis_ecen.py} +${EXSCRIPT} +status=$? +[[ ${status} -ne 0 ]] && exit "${status}" + +############################################## +# End JOB SPECIFIC work +############################################## + +############################################## +# Final processing +############################################## +if [[ -e "${pgmout}" ]] ; then + cat "${pgmout}" +fi + +########################################## +# Remove the Temporary working directory +########################################## +cd "${DATAROOT}" || exit 1 +[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" + +exit 0 diff --git a/jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG b/jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG index d2277bb0da..60f21c469b 100755 --- a/jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG +++ b/jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG @@ -5,16 +5,6 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "awips" -c "base awips" export OMP_NUM_THREADS=${OMP_NUM_THREADS:-1} -################################ -# Set up the HOME directory -################################ -export HOMEgfs=${HOMEgfs:-${PACKAGEROOT}/gfs.${gfs_ver}} -export USHgfs=${USHgfs:-${HOMEgfs}/ush} -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export PARMwmo=${PARMwmo:-${HOMEgfs}/parm/wmo} -export PARMproduct=${PARMproduct:-${HOMEgfs}/parm/product} - ################################### # Specify NET and RUN Name and model #################################### @@ -46,7 +36,7 @@ export pgmout=OUTPUT.$$ ######################################################## # Execute the script. -"${HOMEgfs}/scripts/exgfs_atmos_awips_20km_1p0deg.sh" "${fcsthrs}" +"${SCRgfs}/exgfs_atmos_awips_20km_1p0deg.sh" "${fcsthrs}" export err=$?; err_chk ######################################################## diff --git a/jobs/JGFS_ATMOS_AWIPS_G2 b/jobs/JGFS_ATMOS_AWIPS_G2 index 3503a92b08..27e37d7214 100755 --- a/jobs/JGFS_ATMOS_AWIPS_G2 +++ b/jobs/JGFS_ATMOS_AWIPS_G2 @@ -9,16 +9,6 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "awips" -c "base awips" export OMP_NUM_THREADS=${OMP_NUM_THREADS:-1} -################################ -# Set up the HOME directory -################################ -export USHgfs=${USHgfs:-${HOMEgfs}/ush} -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export PARMwmo=${PARMwmo:-${HOMEgfs}/parm/wmo} -export PARMproduct=${PARMproduct:-${HOMEgfs}/parm/product} -export UTILgfs=${UTILgfs:-${HOMEgfs}/util} - ################################### # Specify NET and RUN Name and model #################################### @@ -45,7 +35,7 @@ export pgmout=OUTPUT.$$ ######################################################### mkdir -m 775 awips_g1 cd ${DATA}/awips_g1 -${HOMEgfs}/scripts/exgfs_atmos_grib_awips.sh ${fcsthrs} +"${SCRgfs}/exgfs_atmos_grib_awips.sh" "${fcsthrs}" export err=$?; err_chk ############################################ diff --git a/jobs/JGFS_ATMOS_FBWIND b/jobs/JGFS_ATMOS_FBWIND index d640907c5c..dbfca49610 100755 --- a/jobs/JGFS_ATMOS_FBWIND +++ b/jobs/JGFS_ATMOS_FBWIND @@ -8,16 +8,6 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "fbwind" -c "base" -################################ -# Set up the HOME directory -################################ -export USHgfs=${USHgfs:-${HOMEgfs}/ush} -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export PARMwmo=${PARMwmo:-${HOMEgfs}/parm/wmo} -export PARMproduct=${PARMproduct:-${HOMEgfs}/parm/product} -export UTILgfs=${UTILgfs:-${HOMEgfs}/util} - ################################### # Specify NET and RUN Name and model #################################### @@ -39,7 +29,7 @@ mkdir -m 775 -p ${COMOUT} ${COMOUTwmo} ######################################################## # Execute the script. -${HOMEgfs}/scripts/exgfs_atmos_fbwind.sh +${SCRgfs}/exgfs_atmos_fbwind.sh export err=$?;err_chk ######################################################## diff --git a/jobs/JGFS_ATMOS_GEMPAK b/jobs/JGFS_ATMOS_GEMPAK index ff7479daf2..e71338b6de 100755 --- a/jobs/JGFS_ATMOS_GEMPAK +++ b/jobs/JGFS_ATMOS_GEMPAK @@ -3,19 +3,6 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "gempak" -c "base gempak" - -################################ -# Set up the HOME directory -################################ -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export EXPDIR=${EXPDIR:-${HOMEgfs}/parm/config} -export USHgempak=${USHgempak:-${HOMEgfs}/gempak/ush} -export SRCgfs=${SRCgfs:-${HOMEgfs}/scripts} - -# For half-degree P Grib files -export DO_HD_PGRB=${DO_HD_PGRB:-YES} - ############################################ # Set up model and cycle specific variables ############################################ @@ -26,6 +13,9 @@ export GRIB=${GRIB:-pgrb2f} export EXT="" export DBN_ALERT_TYPE=${DBN_ALERT_TYPE:-GFS_GEMPAK} +# For half-degree P Grib files +export DO_HD_PGRB=${DO_HD_PGRB:-YES} + ################################### # Specify NET and RUN Name and model #################################### @@ -63,54 +53,54 @@ fi ################################################################# # Execute the script for the 384 hour 1 degree grib ################################################################## -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.1 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.2 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.3 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.4 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.5 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.6 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.1 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.2 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.3 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.4 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.5 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_1p00} &> ${DATA}/gfs_1p0.$$.6 " >> poescript ################################################################# # Execute the script for the half-degree grib ################################################################## -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.1 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.2 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.3 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.4 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.5 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.6 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.1 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.2 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.3 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.4 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.5 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p50 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p50} &> ${DATA}/gfs_0p5.$$.6 " >> poescript ################################################################# # Execute the script for the quater-degree grib #################################################################### -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.1 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.2 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.3 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.4 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.5 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.6 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.7 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.8 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.9 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.10 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.1 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.2 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.3 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.4 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.5 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.6 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.7 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.8 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.9 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs_0p25 ${FHMAX_GFS} GFS_GEMPAK ${COM_ATMOS_GEMPAK_0p25}&> ${DATA}/gfs_0p25.$$.10 " >> poescript #################################################################### # Execute the script to create the 35km Pacific grids for OPC ##################################################################### -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs35_pac ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_pac} &> ${DATA}/gfs35_pac.$$.1 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs35_pac ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_pac} &> ${DATA}/gfs35_pac.$$.2 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs35_pac ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_pac} &> ${DATA}/gfs35_pac.$$.1 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs35_pac ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_pac} &> ${DATA}/gfs35_pac.$$.2 " >> poescript #################################################################### # Execute the script to create the 35km Atlantic grids for OPC ##################################################################### -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs35_atl ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_atl} &> ${DATA}/gfs35_atl.$$.1 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs35_atl ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_atl} &> ${DATA}/gfs35_atl.$$.2 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs35_atl ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_atl} &> ${DATA}/gfs35_atl.$$.1 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs35_atl ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_35km_atl} &> ${DATA}/gfs35_atl.$$.2 " >> poescript ##################################################################### # Execute the script to create the 40km grids for HPC ###################################################################### -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs40 ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_40km} &> ${DATA}/gfs40.$$.1 " >> poescript -echo "time ${SRCgfs}/exgfs_atmos_nawips.sh gfs40 ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_40km} &> ${DATA}/gfs40.$$.2 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs40 ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_40km} &> ${DATA}/gfs40.$$.1 " >> poescript +echo "time ${SCRgfs}/exgfs_atmos_nawips.sh gfs40 ${ocean_domain_max} GFS_GEMPAK_WWB ${COM_ATMOS_GEMPAK_40km} &> ${DATA}/gfs40.$$.2 " >> poescript if [[ ${CFP_MP:-"NO"} == "YES" ]]; then # Add task number to the MPMD script diff --git a/jobs/JGFS_ATMOS_GEMPAK_META b/jobs/JGFS_ATMOS_GEMPAK_META index f3573419c5..eebc137f30 100755 --- a/jobs/JGFS_ATMOS_GEMPAK_META +++ b/jobs/JGFS_ATMOS_GEMPAK_META @@ -18,16 +18,7 @@ export MP_LABELIO=yes export MP_PULSE=0 export MP_DEBUG_NOTIMEOUT=yes -################################ -# Set up the HOME directory -################################ -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export EXPDIR=${EXPDIR:-${HOMEgfs}/parm/config} -export USHgempak=${USHgempak:-${HOMEgfs}/gempak/ush} -export SRCgfs=${SRCgfs:-${HOMEgfs}/scripts} - -cp ${HOMEgfs}/gempak/fix/datatype.tbl datatype.tbl +cp ${HOMEgfs}/gempak/fix/datatype.tbl datatype.tbl ############################################# #set the fcst hrs for all the cycles @@ -66,7 +57,7 @@ mkdir -m 775 -p ${COMOUT} ######################################################## # Execute the script. -${SRCgfs}/exgfs_atmos_gempak_meta.sh +${SCRgfs}/exgfs_atmos_gempak_meta.sh export err=$?; err_chk ######################################################## diff --git a/jobs/JGFS_ATMOS_GEMPAK_NCDC_UPAPGIF b/jobs/JGFS_ATMOS_GEMPAK_NCDC_UPAPGIF index aa0acf445e..0f83594e72 100755 --- a/jobs/JGFS_ATMOS_GEMPAK_NCDC_UPAPGIF +++ b/jobs/JGFS_ATMOS_GEMPAK_NCDC_UPAPGIF @@ -8,30 +8,10 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "gempak_gif" -c "base" - -################################ -# Set up the HOME directory -################################ -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export EXPDIR=${EXPDIR:-${HOMEgfs}/parm/config} -export USHgempak=${USHgempak:-${HOMEgfs}/gempak/ush} -export SRCgfs=${SRCgfs:-${HOMEgfs}/scripts} -export UTILgfs=${UTILgfs:-${HOMEgfs}/util} - -###################################### -# Set up the GEMPAK directory -####################################### -export HOMEgempak=${HOMEgempak:-${HOMEgfs}/gempak} -export USHgempak=${USHgempak:-${HOMEgempak}/ush} - export MP_PULSE=0 export MP_TIMEOUT=2000 - -# # Set up model and cycle specific variables -# export MODEL=GFS export fend=384 @@ -64,7 +44,7 @@ export pgmout=OUTPUT.$$ ######################################################## # Execute the script. -${SRCgfs}/exgfs_atmos_gempak_gif_ncdc_skew_t.sh +${SCRgfs}/exgfs_atmos_gempak_gif_ncdc_skew_t.sh export err=$?; err_chk ######################################################## diff --git a/jobs/JGFS_ATMOS_GEMPAK_PGRB2_SPEC b/jobs/JGFS_ATMOS_GEMPAK_PGRB2_SPEC index 8b17f96a22..d2d4d81f93 100755 --- a/jobs/JGFS_ATMOS_GEMPAK_PGRB2_SPEC +++ b/jobs/JGFS_ATMOS_GEMPAK_PGRB2_SPEC @@ -6,19 +6,6 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "gempak_spec" -c "base" - -################################ -# Set up the HOME directory -################################ -export EXECgfs="${EXECgfs:-${HOMEgfs}/exec}" -export PARMgfs="${PARMgfs:-${HOMEgfs}/parm}" -export EXPDIR="${EXPDIR:-${HOMEgfs}/parm/config}" -export USHgempak="${USHgempak:-${HOMEgfs}/gempak/ush}" -export SRCgfs="${SRCgfs:-${HOMEgfs}/scripts}" - -# For half-degree P Grib files -#export DO_HD_PGRB=YES - ################################### # Specify NET and RUN Name and model #################################### @@ -27,6 +14,9 @@ export finc=3 export model=gfs export EXT="" +# For half-degree P Grib files +#export DO_HD_PGRB=YES + ############################################## # Define COM directories ############################################## @@ -57,7 +47,7 @@ echo "RUNS the Program" ######################################################## # Execute the script. -"${SRCgfs}/exgfs_atmos_goes_nawips.sh" +"${SCRgfs}/exgfs_atmos_goes_nawips.sh" ################################################################# # Execute the script for the 221 grib @@ -78,7 +68,7 @@ echo "RUNS the Program" ######################################################## # Execute the script. -"${SRCgfs}/exgfs_atmos_goes_nawips.sh" +"${SCRgfs}/exgfs_atmos_goes_nawips.sh" export err=$?; err_chk ######################################################## diff --git a/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS b/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS index ecebdffa3e..1c69eecbf1 100755 --- a/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS +++ b/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS @@ -10,16 +10,6 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "npoess" -c "base" export OMP_NUM_THREADS=${OMP_NUM_THREADS:-1} -################################ -# Set up the HOME directory -################################ -export USHgfs=${USHgfs:-${HOMEgfs}/ush} -export EXECgfs=${EXECgfs:-${HOMEgfs}/exec} -export PARMgfs=${PARMgfs:-${HOMEgfs}/parm} -export EXPDIR=${EXPDIR:-${HOMEgfs}/parm/config} -export PARMwmo=${PARMwmo:-${HOMEgfs}/parm/wmo} -export PARMproduct=${PARMproduct:-${HOMEgfs}/parm/product} - ################################### # Specify NET and RUN Name and model #################################### @@ -38,7 +28,7 @@ mkdir -m 775 -p "${COM_ATMOS_GOES}" ############################################################# # Execute the script -"${HOMEgfs}/scripts/exgfs_atmos_grib2_special_npoess.sh" +"${SCRgfs}/exgfs_atmos_grib2_special_npoess.sh" export err=$?;err_chk ############################################################# diff --git a/jobs/JGFS_ATMOS_POSTSND b/jobs/JGFS_ATMOS_POSTSND index 4e99ef7a46..e6411709fa 100755 --- a/jobs/JGFS_ATMOS_POSTSND +++ b/jobs/JGFS_ATMOS_POSTSND @@ -9,7 +9,6 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "postsnd" -c "base postsnd" ############################################## export CDUMP=${RUN/enkf} - ######################################## # Runs GFS BUFR SOUNDINGS ######################################## @@ -18,16 +17,6 @@ export model=${model:-gfs} export SENDDBN=${SENDDBN:-YES} export DBNROOT=${DBNROOT:-${UTILROOT}/fakedbn} -################################### -# Set up the source directories -################################### - -export HOMEbufrsnd=${HOMEbufrsnd:-${HOMEgfs}} -export EXECbufrsnd=${EXECbufrsnd:-${HOMEbufrsnd}/exec} -export PARMbufrsnd=${PARMbufrsnd:-${HOMEbufrsnd}/parm/product} -export USHbufrsnd=${USHbufrsnd:-${HOMEbufrsnd}/ush} -export SCRbufrsnd=${SCRbufrsnd:-${HOMEbufrsnd}/scripts} - ############################## # Define COM Directories ############################## @@ -43,7 +32,7 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_HISTORY COM_ATMOS_BUFR \ ######################################################## # Execute the script. -${SCRbufrsnd}/exgfs_atmos_postsnd.sh +${SCRgfs}/exgfs_atmos_postsnd.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/JGLOBAL_AERO_ANALYSIS_FINALIZE b/jobs/JGLOBAL_AERO_ANALYSIS_FINALIZE index ff8e2e9569..aaf5792bc2 100755 --- a/jobs/JGLOBAL_AERO_ANALYSIS_FINALIZE +++ b/jobs/JGLOBAL_AERO_ANALYSIS_FINALIZE @@ -31,7 +31,7 @@ mkdir -m 775 -p "${COM_CHEM_ANALYSIS}" ############################################################### # Run relevant script -EXSCRIPT=${GDASAEROFINALPY:-${HOMEgfs}/scripts/exglobal_aero_analysis_finalize.py} +EXSCRIPT=${GDASAEROFINALPY:-${SCRgfs}/exglobal_aero_analysis_finalize.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_AERO_ANALYSIS_INITIALIZE b/jobs/JGLOBAL_AERO_ANALYSIS_INITIALIZE index 79320b77ee..61a99e3137 100755 --- a/jobs/JGLOBAL_AERO_ANALYSIS_INITIALIZE +++ b/jobs/JGLOBAL_AERO_ANALYSIS_INITIALIZE @@ -30,7 +30,7 @@ mkdir -m 775 -p "${COM_CHEM_ANALYSIS}" ############################################################### # Run relevant script -EXSCRIPT=${GDASAEROINITPY:-${HOMEgfs}/scripts/exglobal_aero_analysis_initialize.py} +EXSCRIPT=${GDASAEROINITPY:-${SCRgfs}/exglobal_aero_analysis_initialize.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_AERO_ANALYSIS_RUN b/jobs/JGLOBAL_AERO_ANALYSIS_RUN index 853909dc03..43749b78c5 100755 --- a/jobs/JGLOBAL_AERO_ANALYSIS_RUN +++ b/jobs/JGLOBAL_AERO_ANALYSIS_RUN @@ -16,7 +16,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "aeroanlrun" -c "base aeroanl aeroanlr ############################################################### # Run relevant script -EXSCRIPT=${GDASAERORUNSH:-${HOMEgfs}/scripts/exglobal_aero_analysis_run.py} +EXSCRIPT=${GDASAERORUNSH:-${SCRgfs}/exglobal_aero_analysis_run.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_ATMENS_ANALYSIS_FINALIZE b/jobs/JGLOBAL_ATMENS_ANALYSIS_FINALIZE index 37a49e0ae0..5411b2dd8b 100755 --- a/jobs/JGLOBAL_ATMENS_ANALYSIS_FINALIZE +++ b/jobs/JGLOBAL_ATMENS_ANALYSIS_FINALIZE @@ -23,7 +23,7 @@ mkdir -m 755 -p "${COM_ATMOS_ANALYSIS_ENS}" ############################################################### # Run relevant script -EXSCRIPT=${GDASATMENSFINALPY:-${HOMEgfs}/scripts/exglobal_atmens_analysis_finalize.py} +EXSCRIPT=${GDASATMENSFINALPY:-${SCRgfs}/exglobal_atmens_analysis_finalize.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE b/jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE index c50214aad1..69a1239e61 100755 --- a/jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE +++ b/jobs/JGLOBAL_ATMENS_ANALYSIS_INITIALIZE @@ -25,7 +25,7 @@ RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} generate_com -rx \ ############################################################### # Run relevant script -EXSCRIPT=${GDASATMENSINITPY:-${HOMEgfs}/scripts/exglobal_atmens_analysis_initialize.py} +EXSCRIPT=${GDASATMENSINITPY:-${SCRgfs}/exglobal_atmens_analysis_initialize.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_ATMENS_ANALYSIS_RUN b/jobs/JGLOBAL_ATMENS_ANALYSIS_RUN index 0d10c76b05..65eeb5e0d8 100755 --- a/jobs/JGLOBAL_ATMENS_ANALYSIS_RUN +++ b/jobs/JGLOBAL_ATMENS_ANALYSIS_RUN @@ -16,7 +16,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "atmensanlrun" -c "base atmensanl atme ############################################################### # Run relevant script -EXSCRIPT=${GDASATMENSRUNSH:-${HOMEgfs}/scripts/exglobal_atmens_analysis_run.py} +EXSCRIPT=${GDASATMENSRUNSH:-${SCRgfs}/exglobal_atmens_analysis_run.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_ATMOS_POST_MANAGER b/jobs/JGLOBAL_ATMOS_POST_MANAGER index 797d26953b..d836de5d05 100755 --- a/jobs/JGLOBAL_ATMOS_POST_MANAGER +++ b/jobs/JGLOBAL_ATMOS_POST_MANAGER @@ -12,14 +12,6 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "post" -c "base post" export NET=${NET:-gfs} export RUN=${RUN:-gfs} -#################################### -# Specify Execution Areas -#################################### -export HOMEgfs=${HOMEgfs:-${PACKAGEROOT}/gfs.${gfs_ver}} -export EXECgfs=${HOMEgfs:-${HOMEgfs}/exec} -export PARMgfs=${HOMEgfs:-${HOMEgfs}/parm} -export USHgfs=${HOMEgfs:-${HOMEgfs}/ush} - ########################### # Set up EXT variable ########################### @@ -29,6 +21,6 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_HISTORY ######################################################## # Execute the script. -${HOMEgfs}/scripts/exglobal_atmos_pmgr.sh +${SCRgfs}/exglobal_atmos_pmgr.sh ######################################################## diff --git a/jobs/JGLOBAL_ATMOS_PRODUCTS b/jobs/JGLOBAL_ATMOS_PRODUCTS index 24e7edacdd..6fa00618d6 100755 --- a/jobs/JGLOBAL_ATMOS_PRODUCTS +++ b/jobs/JGLOBAL_ATMOS_PRODUCTS @@ -22,7 +22,7 @@ export PREFIX="${RUN}.t${cyc}z." ############################################################### # Run exglobal script -"${HOMEgfs}/scripts/exglobal_atmos_products.sh" +"${SCRgfs}/exglobal_atmos_products.sh" status=$? (( status != 0 )) && exit "${status}" diff --git a/jobs/JGLOBAL_ATMOS_UPP b/jobs/JGLOBAL_ATMOS_UPP index 9364f33225..1a1ecbc2a1 100755 --- a/jobs/JGLOBAL_ATMOS_UPP +++ b/jobs/JGLOBAL_ATMOS_UPP @@ -19,7 +19,7 @@ if [[ ! -d ${COM_ATMOS_MASTER} ]]; then mkdir -m 775 -p "${COM_ATMOS_MASTER}"; f ############################################################### # Run relevant exglobal script -"${HOMEgfs}/scripts/exglobal_atmos_upp.py" +"${SCRgfs}/exglobal_atmos_upp.py" status=$? (( status != 0 )) && exit "${status}" diff --git a/jobs/JGLOBAL_ATM_ANALYSIS_FINALIZE b/jobs/JGLOBAL_ATM_ANALYSIS_FINALIZE index 52a782d7c4..087eab604a 100755 --- a/jobs/JGLOBAL_ATM_ANALYSIS_FINALIZE +++ b/jobs/JGLOBAL_ATM_ANALYSIS_FINALIZE @@ -33,7 +33,7 @@ mkdir -m 775 -p "${COM_ATMOS_ANALYSIS}" ############################################################### # Run relevant script -EXSCRIPT=${GDASATMFINALPY:-${HOMEgfs}/scripts/exglobal_atm_analysis_finalize.py} +EXSCRIPT=${GDASATMFINALPY:-${SCRgfs}/exglobal_atm_analysis_finalize.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_ATM_ANALYSIS_INITIALIZE b/jobs/JGLOBAL_ATM_ANALYSIS_INITIALIZE index 4ef5e6392d..b7e2eeacc6 100755 --- a/jobs/JGLOBAL_ATM_ANALYSIS_INITIALIZE +++ b/jobs/JGLOBAL_ATM_ANALYSIS_INITIALIZE @@ -36,7 +36,7 @@ mkdir -m 775 -p "${COM_ATMOS_ANALYSIS}" ############################################################### # Run relevant script -EXSCRIPT=${GDASATMINITPY:-${HOMEgfs}/scripts/exglobal_atm_analysis_initialize.py} +EXSCRIPT=${GDASATMINITPY:-${SCRgfs}/exglobal_atm_analysis_initialize.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_ATM_ANALYSIS_RUN b/jobs/JGLOBAL_ATM_ANALYSIS_RUN index bbfdbe4a1f..2105d719de 100755 --- a/jobs/JGLOBAL_ATM_ANALYSIS_RUN +++ b/jobs/JGLOBAL_ATM_ANALYSIS_RUN @@ -18,7 +18,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "atmanlrun" -c "base atmanl atmanlrun" ############################################################### # Run relevant script -EXSCRIPT=${GDASATMRUNSH:-${HOMEgfs}/scripts/exglobal_atm_analysis_run.py} +EXSCRIPT=${GDASATMRUNSH:-${SCRgfs}/exglobal_atm_analysis_run.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_ATM_PREP_IODA_OBS b/jobs/JGLOBAL_ATM_PREP_IODA_OBS index ef0e682468..a3b23e859f 100755 --- a/jobs/JGLOBAL_ATM_PREP_IODA_OBS +++ b/jobs/JGLOBAL_ATM_PREP_IODA_OBS @@ -17,8 +17,8 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_OBS ############################################################### # Run relevant script -EXSCRIPT=${BUFR2IODASH:-${HOMEgfs}/ush/run_bufr2ioda.py} -${EXSCRIPT} "${PDY}${cyc}" "${RUN}" "${DMPDIR}" "${IODAPARM}" "${COM_OBS}/" +EXSCRIPT=${BUFR2IODASH:-${USHgfs}/run_bufr2ioda.py} +${EXSCRIPT} "${PDY}${cyc}" "${RUN}" "${DMPDIR}" "${PARMgfs}/gdas/ioda/bufr2ioda" "${COM_OBS}/" status=$? [[ ${status} -ne 0 ]] && (echo "FATAL ERROR: Error executing ${EXSCRIPT}, ABORT!"; exit "${status}") diff --git a/jobs/JGLOBAL_CLEANUP b/jobs/JGLOBAL_CLEANUP index ad938ccf60..2f81003989 100755 --- a/jobs/JGLOBAL_CLEANUP +++ b/jobs/JGLOBAL_CLEANUP @@ -3,7 +3,7 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "cleanup" -c "base cleanup" -"${HOMEgfs}/scripts/exglobal_cleanup.sh" +"${SCRgfs}/exglobal_cleanup.sh" status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_OCEANICE_PRODUCTS b/jobs/JGLOBAL_OCEANICE_PRODUCTS index 1d8c6b42c6..69e5f69448 100755 --- a/jobs/JGLOBAL_OCEANICE_PRODUCTS +++ b/jobs/JGLOBAL_OCEANICE_PRODUCTS @@ -15,7 +15,7 @@ YMD="${PDY}" HH="${cyc}" generate_com -rx "COM_${COMPONENT^^}_NETCDF" ############################################################### # Run exglobal script -"${HOMEgfs}/scripts/exglobal_oceanice_products.py" +"${SCRgfs}/exglobal_oceanice_products.py" status=$? (( status != 0 )) && exit "${status}" diff --git a/jobs/JGLOBAL_PREP_SNOW_OBS b/jobs/JGLOBAL_PREP_SNOW_OBS index 22ed977a5e..1fc7e3e5c3 100755 --- a/jobs/JGLOBAL_PREP_SNOW_OBS +++ b/jobs/JGLOBAL_PREP_SNOW_OBS @@ -25,7 +25,7 @@ RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} generate_com -rx \ ############################################################### # Run relevant script -EXSCRIPT=${GDASSNOWPREPPY:-${HOMEgfs}/scripts/exglobal_prep_snow_obs.py} +EXSCRIPT=${GDASSNOWPREPPY:-${SCRgfs}/exglobal_prep_snow_obs.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && (echo "FATAL ERROR: Error executing ${EXSCRIPT}, ABORT!"; exit "${status}") diff --git a/jobs/JGLOBAL_SNOW_ANALYSIS b/jobs/JGLOBAL_SNOW_ANALYSIS index db1a8a8ba3..50372d1342 100755 --- a/jobs/JGLOBAL_SNOW_ANALYSIS +++ b/jobs/JGLOBAL_SNOW_ANALYSIS @@ -28,7 +28,7 @@ mkdir -m 775 -p "${COM_SNOW_ANALYSIS}" "${COM_CONF}" ############################################################### # Run relevant script -EXSCRIPT=${SNOWANLPY:-${HOMEgfs}/scripts/exglobal_snow_analysis.py} +EXSCRIPT=${SNOWANLPY:-${SCRgfs}/exglobal_snow_analysis.py} ${EXSCRIPT} status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/jobs/JGLOBAL_STAGE_IC b/jobs/JGLOBAL_STAGE_IC index 4c94990fde..c460e91c9e 100755 --- a/jobs/JGLOBAL_STAGE_IC +++ b/jobs/JGLOBAL_STAGE_IC @@ -10,7 +10,7 @@ rCDUMP=${CDUMP} export rCDUMP # Execute the Script -"${HOMEgfs}/scripts/exglobal_stage_ic.sh" +"${SCRgfs}/exglobal_stage_ic.sh" ########################################## # Remove the Temporary working directory diff --git a/jobs/JGLOBAL_WAVE_GEMPAK b/jobs/JGLOBAL_WAVE_GEMPAK index 89c389fa11..f02bf3fce9 100755 --- a/jobs/JGLOBAL_WAVE_GEMPAK +++ b/jobs/JGLOBAL_WAVE_GEMPAK @@ -19,7 +19,7 @@ if [[ ! -d ${COM_WAVE_GEMPAK} ]]; then mkdir -p "${COM_WAVE_GEMPAK}"; fi ######################################################## # Execute the script. -${HOMEgfs}/scripts/exgfs_wave_nawips.sh +${SCRgfs}/exgfs_wave_nawips.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} ################################### diff --git a/jobs/JGLOBAL_WAVE_INIT b/jobs/JGLOBAL_WAVE_INIT index 7825c33496..02d4009c65 100755 --- a/jobs/JGLOBAL_WAVE_INIT +++ b/jobs/JGLOBAL_WAVE_INIT @@ -9,11 +9,6 @@ export errchk=${errchk:-err_chk} export MP_PULSE=0 -# Path to HOME Directory -export PARMwave=${PARMwave:-${HOMEgfs}/parm/wave} -export USHwave=${USHwave:-${HOMEgfs}/ush} -export EXECwave=${EXECwave:-${HOMEgfs}/exec} - # Set COM Paths YMD=${PDY} HH=${cyc} generate_com -rx COM_WAVE_PREP @@ -24,7 +19,7 @@ export wavempexec=${wavempexec:-"mpirun -n"} export wave_mpmd=${wave_mpmd:-"cfp"} # Execute the Script -${HOMEgfs}/scripts/exgfs_wave_init.sh +${SCRgfs}/exgfs_wave_init.sh ########################################## # Remove the Temporary working directory diff --git a/jobs/JGLOBAL_WAVE_POST_BNDPNT b/jobs/JGLOBAL_WAVE_POST_BNDPNT index 69200fba0b..cdf2ad3728 100755 --- a/jobs/JGLOBAL_WAVE_POST_BNDPNT +++ b/jobs/JGLOBAL_WAVE_POST_BNDPNT @@ -8,11 +8,6 @@ export errchk=${errchk:-err_chk} export MP_PULSE=0 -# Path to HOME Directory -export PARMwave=${PARMwave:-${HOMEgfs}/parm/wave} -export USHwave=${USHwave:-${HOMEgfs}/ush} -export EXECwave=${EXECwave:-${HOMEgfs}/exec} - # Set COM Paths and GETGES environment YMD=${PDY} HH=${cyc} generate_com -rx COM_WAVE_PREP COM_WAVE_HISTORY COM_WAVE_STATION @@ -33,7 +28,7 @@ export DOBLL_WAV='NO' # Bulletin post export DOBNDPNT_WAV='YES' # Do boundary points # Execute the Script -${HOMEgfs}/scripts/exgfs_wave_post_pnt.sh +${SCRgfs}/exgfs_wave_post_pnt.sh err=$? if [ ${err} -ne 0 ]; then echo "FATAL ERROR: ex-script of GWES_POST failed!" diff --git a/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL b/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL index 536cadd165..c091d67aca 100755 --- a/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL +++ b/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL @@ -12,11 +12,6 @@ export CDATE=${PDY}${cyc} export MP_PULSE=0 -# Path to HOME Directory -export PARMwave=${PARMwave:-${HOMEgfs}/parm/wave} -export USHwave=${USHwave:-${HOMEgfs}/ush} -export EXECwave=${EXECwave:-${HOMEgfs}/exec} - # Set COM Paths and GETGES environment YMD=${PDY} HH=${cyc} generate_com -rx COM_WAVE_PREP COM_WAVE_HISTORY COM_WAVE_STATION @@ -37,7 +32,7 @@ export DOBLL_WAV='YES' # Bulletin post export DOBNDPNT_WAV='YES' #boundary points # Execute the Script -${HOMEgfs}/scripts/exgfs_wave_post_pnt.sh +${SCRgfs}/exgfs_wave_post_pnt.sh err=$? if [ ${err} -ne 0 ]; then echo "FATAL ERROR: ex-script of GFS_WAVE_POST_PNT failed!" diff --git a/jobs/JGLOBAL_WAVE_POST_PNT b/jobs/JGLOBAL_WAVE_POST_PNT index 9ff2f78f63..800a58fbd8 100755 --- a/jobs/JGLOBAL_WAVE_POST_PNT +++ b/jobs/JGLOBAL_WAVE_POST_PNT @@ -8,11 +8,6 @@ export errchk=${errchk:-err_chk} export MP_PULSE=0 -# Path to HOME Directory -export PARMwave=${PARMwave:-${HOMEgfs}/parm/wave} -export USHwave=${USHwave:-${HOMEgfs}/ush} -export EXECwave=${EXECwave:-${HOMEgfs}/exec} - # Set COM Paths and GETGES environment YMD=${PDY} HH=${cyc} generate_com -rx COM_WAVE_PREP COM_WAVE_HISTORY COM_WAVE_STATION @@ -34,7 +29,7 @@ export DOBNDPNT_WAV='NO' #not boundary points # Execute the Script -${HOMEgfs}/scripts/exgfs_wave_post_pnt.sh +${SCRgfs}/exgfs_wave_post_pnt.sh err=$? if [ ${err} -ne 0 ]; then echo "FATAL ERROR: ex-script of GWES_POST failed!" diff --git a/jobs/JGLOBAL_WAVE_POST_SBS b/jobs/JGLOBAL_WAVE_POST_SBS index 2a7e5657dc..662b6e4395 100755 --- a/jobs/JGLOBAL_WAVE_POST_SBS +++ b/jobs/JGLOBAL_WAVE_POST_SBS @@ -8,11 +8,6 @@ export errchk=${errchk:-err_chk} export MP_PULSE=0 -# Path to HOME Directory -export PARMwave=${PARMwave:-${HOMEgfs}/parm/wave} -export USHwave=${USHwave:-${HOMEgfs}/ush} -export EXECwave=${EXECwave:-${HOMEgfs}/exec} - # Set COM Paths and GETGES environment YMD=${PDY} HH=${cyc} generate_com -rx COM_WAVE_PREP COM_WAVE_HISTORY COM_WAVE_GRID @@ -31,7 +26,7 @@ export WAV_MOD_TAG=${RUN}wave${waveMEMB} export CFP_VERBOSE=1 # Execute the Script -${HOMEgfs}/scripts/exgfs_wave_post_gridded_sbs.sh +${SCRgfs}/exgfs_wave_post_gridded_sbs.sh err=$? if [ ${err} -ne 0 ]; then echo "FATAL ERROR: ex-script of GWES_POST failed!" diff --git a/jobs/JGLOBAL_WAVE_PRDGEN_BULLS b/jobs/JGLOBAL_WAVE_PRDGEN_BULLS index 3a2947af56..5e3756e276 100755 --- a/jobs/JGLOBAL_WAVE_PRDGEN_BULLS +++ b/jobs/JGLOBAL_WAVE_PRDGEN_BULLS @@ -20,7 +20,7 @@ if [[ ! -d ${COM_WAVE_WMO} ]]; then mkdir -p "${COM_WAVE_WMO}"; fi ################################### # Execute the Script -${HOMEgfs}/scripts/exgfs_wave_prdgen_bulls.sh +${SCRgfs}/exgfs_wave_prdgen_bulls.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/JGLOBAL_WAVE_PRDGEN_GRIDDED b/jobs/JGLOBAL_WAVE_PRDGEN_GRIDDED index 4b32c709bf..d2cfd363d2 100755 --- a/jobs/JGLOBAL_WAVE_PRDGEN_GRIDDED +++ b/jobs/JGLOBAL_WAVE_PRDGEN_GRIDDED @@ -22,7 +22,7 @@ mkdir -p "${COM_WAVE_WMO}" ################################### # Execute the Script ################################### -${HOMEgfs}/scripts/exgfs_wave_prdgen_gridded.sh +${SCRgfs}/exgfs_wave_prdgen_gridded.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/JGLOBAL_WAVE_PREP b/jobs/JGLOBAL_WAVE_PREP index 479f9b8641..9fbc4b601b 100755 --- a/jobs/JGLOBAL_WAVE_PREP +++ b/jobs/JGLOBAL_WAVE_PREP @@ -16,18 +16,13 @@ export MP_PULSE=0 # CDO required for processing RTOFS currents export CDO=${CDO_ROOT}/bin/cdo -# Path to HOME Directory -export PARMwave=${PARMwave:-${HOMEgfs}/parm/wave} -export USHwave=${USHwave:-${HOMEgfs}/ush} -export EXECwave=${EXECwave:-${HOMEgfs}/exec} - # Set COM Paths and GETGES environment YMD=${PDY} HH=${cyc} generate_com -rx COM_OBS COM_WAVE_PREP generate_com -rx COM_RTOFS [[ ! -d ${COM_WAVE_PREP} ]] && mkdir -m 775 -p "${COM_WAVE_PREP}" # Execute the Script -${HOMEgfs}/scripts/exgfs_wave_prep.sh +${SCRgfs}/exgfs_wave_prep.sh ########################################## # Remove the Temporary working directory diff --git a/jobs/rocoto/awips_20km_1p0deg.sh b/jobs/rocoto/awips_20km_1p0deg.sh index e1bf623883..b2a291e37e 100755 --- a/jobs/rocoto/awips_20km_1p0deg.sh +++ b/jobs/rocoto/awips_20km_1p0deg.sh @@ -45,7 +45,7 @@ for fhr3 in ${fhrlst}; do if (( fhr >= fhmin && fhr <= fhmax )); then if ((fhr % 3 == 0)); then export fcsthrs="${fhr3}" - "${AWIPS20KM1P0DEGSH}" + "${HOMEgfs}/jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG" fi fi @@ -54,7 +54,7 @@ for fhr3 in ${fhrlst}; do if (( fhr >= fhmin && fhr <= fhmax )); then if ((fhr % 6 == 0)); then export fcsthrs="${fhr3}" - "${AWIPS20KM1P0DEGSH}" + "${HOMEgfs}/jobs/JGFS_ATMOS_AWIPS_20KM_1P0DEG" fi fi done diff --git a/jobs/rocoto/awips_g2.sh b/jobs/rocoto/awips_g2.sh index ed5a10c164..6bb004048d 100755 --- a/jobs/rocoto/awips_g2.sh +++ b/jobs/rocoto/awips_g2.sh @@ -45,7 +45,7 @@ for fhr3 in ${fhrlst}; do if (( fhr >= fhmin && fhr <= fhmax )); then if ((fhr % 6 == 0)); then export fcsthrs="${fhr3}" - "${AWIPSG2SH}" + "${HOMEgfs}/jobs/JGFS_ATMOS_AWIPS_G2" fi fi done diff --git a/jobs/rocoto/ocnanalecen.sh b/jobs/rocoto/ocnanalecen.sh new file mode 100755 index 0000000000..c5fdbbbf32 --- /dev/null +++ b/jobs/rocoto/ocnanalecen.sh @@ -0,0 +1,23 @@ +#! /usr/bin/env bash + +source "${HOMEgfs}/ush/preamble.sh" + +############################################################### +# Source UFSDA workflow modules +. "${HOMEgfs}/ush/load_ufsda_modules.sh" +status=$? +[[ ${status} -ne 0 ]] && exit "${status}" + +export job="ocnanalecen" +export jobid="${job}.$$" + +############################################################### +# Setup Python path for GDASApp ush +PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/sorc/gdas.cd/ush" +export PYTHONPATH + +############################################################### +# Execute the JJOB +"${HOMEgfs}"/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_ECEN +status=$? +exit "${status}" diff --git a/modulefiles/module_base.hercules.lua b/modulefiles/module_base.hercules.lua index 5534437392..77a77f5505 100644 --- a/modulefiles/module_base.hercules.lua +++ b/modulefiles/module_base.hercules.lua @@ -9,7 +9,6 @@ load(pathJoin("stack-intel", (os.getenv("stack_intel_ver") or "None"))) load(pathJoin("stack-intel-oneapi-mpi", (os.getenv("stack_impi_ver") or "None"))) load(pathJoin("intel-oneapi-mkl", (os.getenv("intel_mkl_ver") or "None"))) load(pathJoin("python", (os.getenv("python_ver") or "None"))) -load(pathJoin("perl", (os.getenv("perl_ver") or "None"))) load(pathJoin("jasper", (os.getenv("jasper_ver") or "None"))) load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) diff --git a/parm/config/gefs/config.atmos_products b/parm/config/gefs/config.atmos_products index 6ba38318c7..4a0fb8b49f 100644 --- a/parm/config/gefs/config.atmos_products +++ b/parm/config/gefs/config.atmos_products @@ -12,17 +12,17 @@ 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" export downset=2 export FHOUT_PGBS=${FHOUT_GFS:-3} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="NO" # Create interpolated sflux.1p00 file # paramlist files for the different forecast hours and downsets -export paramlista="${HOMEgfs}/parm/product/gefs.0p25.fFFF.paramlist.a.txt" -export paramlista_anl="${HOMEgfs}/parm/product/gefs.0p25.anl.paramlist.a.txt" -export paramlista_f000="${HOMEgfs}/parm/product/gefs.0p25.f000.paramlist.a.txt" -export paramlistb="${HOMEgfs}/parm/product/gefs.0p25.fFFF.paramlist.b.txt" +export paramlista="${PARMgfs}/product/gefs.0p25.fFFF.paramlist.a.txt" +export paramlista_anl="${PARMgfs}/product/gefs.0p25.anl.paramlist.a.txt" +export paramlista_f000="${PARMgfs}/product/gefs.0p25.f000.paramlist.a.txt" +export paramlistb="${PARMgfs}/product/gefs.0p25.fFFF.paramlist.b.txt" echo "END: config.atmos_products" diff --git a/parm/config/gefs/config.base b/parm/config/gefs/config.base index 69d4ed94a4..da315a73e7 100644 --- a/parm/config/gefs/config.base +++ b/parm/config/gefs/config.base @@ -23,12 +23,11 @@ export HPSS_PROJECT="@HPSS_PROJECT@" # Directories relative to installation areas: export HOMEgfs=@HOMEgfs@ -export PARMgfs=${HOMEgfs}/parm -export FIXgfs=${HOMEgfs}/fix -export USHgfs=${HOMEgfs}/ush -export UTILgfs=${HOMEgfs}/util export EXECgfs=${HOMEgfs}/exec +export FIXgfs=${HOMEgfs}/fix +export PARMgfs=${HOMEgfs}/parm export SCRgfs=${HOMEgfs}/scripts +export USHgfs=${HOMEgfs}/ush ######################################################################## @@ -76,6 +75,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="@CHGRP_RSTPROD@" export CHGRP_CMD="@CHGRP_CMD@" export NCDUMP="${NETCDF:-${netcdf_c_ROOT:-}}/bin/ncdump" diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index 74a84e1173..8c3de84357 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -44,9 +44,8 @@ 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" ####################################################################### @@ -163,17 +162,17 @@ 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 export ncld=2 - 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}" export nwat=6 export cal_pre=".false." @@ -196,7 +195,7 @@ case ${imp_physics} in ;; 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." @@ -239,7 +238,7 @@ export FSICS="0" #--------------------------------------------------------------------- # 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/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 866de52964..17d21573e4 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -435,25 +435,25 @@ fi # Default ufs.configure templates for supported model configurations case "${model_list}" in atm) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atm.IN" ;; atm.aero) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.atmaero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atmaero.IN" ;; atm.wave) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" + default_template="${PARMgfs}/ufs/ufs.configure.leapfrog_atm_wav.IN" ;; atm.ocean.ice) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2s_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2s_esmf.IN" ;; atm.ocean.ice.aero) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sa_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sa_esmf.IN" ;; atm.ocean.ice.wave) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sw_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sw_esmf.IN" ;; atm.ocean.ice.wave.aero) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2swa_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2swa_esmf.IN" ;; *) echo "FATAL ERROR: Unsupported UFSWM configuration for ${model_list}" diff --git a/parm/config/gefs/config.wave b/parm/config/gefs/config.wave index 5f4448985c..7298b12aec 100644 --- a/parm/config/gefs/config.wave +++ b/parm/config/gefs/config.wave @@ -6,11 +6,6 @@ echo "BEGIN: config.wave" # Parameters that are common to all wave model steps - -export EXECwave="${HOMEgfs}/exec" -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 diff --git a/parm/config/gfs/config.aero b/parm/config/gfs/config.aero index 32993554b4..c152fafd12 100644 --- a/parm/config/gfs/config.aero +++ b/parm/config/gfs/config.aero @@ -30,12 +30,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/parm/config/gfs/config.aeroanl b/parm/config/gfs/config.aeroanl index 8d8aa92c16..972f393feb 100644 --- a/parm/config/gfs/config.aeroanl +++ b/parm/config/gfs/config.aeroanl @@ -6,24 +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 BERROR_DATA_DIR=${FIXgfs}/gdas/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=@IO_LAYOUT_X@ export io_layout_y=@IO_LAYOUT_Y@ -export JEDIEXE=${HOMEgfs}/exec/fv3jedi_var.x +export JEDIEXE="${EXECgfs}/fv3jedi_var.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/parm/config/gfs/config.aeroanlfinal b/parm/config/gfs/config.aeroanlfinal index 230ec5205a..34e5d8f116 100644 --- a/parm/config/gfs/config.aeroanlfinal +++ b/parm/config/gfs/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/parm/config/gfs/config.aeroanlinit b/parm/config/gfs/config.aeroanlinit index 72175b8d0c..7036d3d27b 100644 --- a/parm/config/gfs/config.aeroanlinit +++ b/parm/config/gfs/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/parm/config/gfs/config.aeroanlrun b/parm/config/gfs/config.aeroanlrun index da13df2831..012e5b79f3 100644 --- a/parm/config/gfs/config.aeroanlrun +++ b/parm/config/gfs/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/parm/config/gfs/config.anal b/parm/config/gfs/config.anal index 98d0e88cc2..09aaa15a98 100644 --- a/parm/config/gfs/config.anal +++ b/parm/config/gfs/config.anal @@ -50,6 +50,13 @@ 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 diff --git a/parm/config/gfs/config.atmanl b/parm/config/gfs/config.atmanl index e344b0a662..7cfd0cb47f 100644 --- a/parm/config/gfs/config.atmanl +++ b/parm/config/gfs/config.atmanl @@ -5,20 +5,29 @@ 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_drpcg.yaml +export OBS_LIST="${PARMgfs}/gdas/atm/obs/lists/gdas_prototype_3d.yaml.j2" +export JEDIYAML="${PARMgfs}/gdas/atm/variational/3dvar_drpcg.yaml.j2" export STATICB_TYPE="gsibec" -export BERROR_YAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/berror/staticb_${STATICB_TYPE}.yaml export INTERP_METHOD='barycentric' +if [[ ${DOHYBVAR} = "YES" ]]; then + # shellcheck disable=SC2153 + export CASE_ANL=${CASE_ENS} + export BERROR_YAML="${PARMgfs}/gdas/atm/berror/hybvar_${STATICB_TYPE}.yaml.j2" +else + export CASE_ANL=${CASE} + export BERROR_YAML="${PARMgfs}/gdas/atm/berror/staticb_${STATICB_TYPE}.yaml.j2" +fi + +export CRTM_FIX_YAML="${PARMgfs}/gdas/atm_crtm_coeff.yaml.j2" +export JEDI_FIX_YAML="${PARMgfs}/gdas/atm_jedi_fix.yaml.j2" + export layout_x_atmanl=@LAYOUT_X_ATMANL@ export layout_y_atmanl=@LAYOUT_Y_ATMANL@ export io_layout_x=@IO_LAYOUT_X@ export io_layout_y=@IO_LAYOUT_Y@ -export JEDIEXE=${HOMEgfs}/exec/fv3jedi_var.x +export JEDIEXE=${EXECgfs}/fv3jedi_var.x echo "END: config.atmanl" diff --git a/parm/config/gfs/config.atmanlinit b/parm/config/gfs/config.atmanlinit index bc95ef4962..1aec88bcc2 100644 --- a/parm/config/gfs/config.atmanlinit +++ b/parm/config/gfs/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/parm/config/gfs/config.atmensanl b/parm/config/gfs/config.atmensanl index 7a3a632bf8..8e824b22f6 100644 --- a/parm/config/gfs/config.atmensanl +++ b/parm/config/gfs/config.atmensanl @@ -5,17 +5,19 @@ 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 OBS_LIST="${PARMgfs}/gdas/atm/obs/lists/lgetkf_prototype.yaml.j2" +export JEDIYAML="${PARMgfs}/gdas/atm/lgetkf/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 layout_x_atmensanl=@LAYOUT_X_ATMENSANL@ export layout_y_atmensanl=@LAYOUT_Y_ATMENSANL@ export io_layout_x=@IO_LAYOUT_X@ export io_layout_y=@IO_LAYOUT_Y@ -export JEDIEXE=${HOMEgfs}/exec/fv3jedi_letkf.x +export JEDIEXE=${EXECgfs}/fv3jedi_letkf.x echo "END: config.atmensanl" diff --git a/parm/config/gfs/config.atmensanlinit b/parm/config/gfs/config.atmensanlinit index 34429023bb..0eee2ffa82 100644 --- a/parm/config/gfs/config.atmensanlinit +++ b/parm/config/gfs/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/parm/config/gfs/config.atmos_products b/parm/config/gfs/config.atmos_products index aefb1e7014..451f5eff86 100644 --- a/parm/config/gfs/config.atmos_products +++ b/parm/config/gfs/config.atmos_products @@ -12,8 +12,8 @@ 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 @@ -32,9 +32,9 @@ fi export APCP_MSG="597" # Message number for APCP in GFSv16. Look for TODO in exglobal_atmos_products.sh # paramlist files for the different forecast hours and downsets -export paramlista="${HOMEgfs}/parm/product/gfs.fFFF.paramlist.a.txt" -export paramlista_anl="${HOMEgfs}/parm/product/gfs.anl.paramlist.a.txt" -export paramlista_f000="${HOMEgfs}/parm/product/gfs.f000.paramlist.a.txt" -export paramlistb="${HOMEgfs}/parm/product/gfs.fFFF.paramlist.b.txt" +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/parm/config/gfs/config.awips b/parm/config/gfs/config.awips index 3b78d4bb4b..61f0dc5652 100644 --- a/parm/config/gfs/config.awips +++ b/parm/config/gfs/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/parm/config/gfs/config.base b/parm/config/gfs/config.base index 205153313e..169fa37430 100644 --- a/parm/config/gfs/config.base +++ b/parm/config/gfs/config.base @@ -23,12 +23,11 @@ export HPSS_PROJECT="@HPSS_PROJECT@" # Directories relative to installation areas: export HOMEgfs=@HOMEgfs@ -export PARMgfs="${HOMEgfs}/parm" -export FIXgfs="${HOMEgfs}/fix" -export USHgfs="${HOMEgfs}/ush" -export UTILgfs="${HOMEgfs}/util" export EXECgfs="${HOMEgfs}/exec" +export FIXgfs="${HOMEgfs}/fix" +export PARMgfs="${HOMEgfs}/parm" export SCRgfs="${HOMEgfs}/scripts" +export USHgfs="${HOMEgfs}/ush" ######################################################################## @@ -57,16 +56,9 @@ export DO_NPOESS="NO" # NPOESS products export DO_TRACKER="YES" # Hurricane track verification export DO_GENESIS="YES" # Cyclone genesis verification 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_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 @@ -94,6 +86,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="@CHGRP_RSTPROD@" export CHGRP_CMD="@CHGRP_CMD@" export NCDUMP="${NETCDF:-${netcdf_c_ROOT:-}}/bin/ncdump" @@ -338,6 +331,8 @@ fi if [[ "${DOIAU_ENKF}" = "NO" ]]; then export IAUFHRS_ENKF="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 @@ -370,7 +365,7 @@ export binary_diag=".false." # Verification options export DO_METP="YES" # Run METPLUS jobs - set METPLUS settings in config.metp export DO_FIT2OBS="YES" # Run fit to observations package -export DO_VRFY_OCEANDA="NO" # Run SOCA Ocean DA verification tasks +export DO_VRFY_OCEANDA="@DO_VRFY_OCEANDA@" # Run SOCA Ocean and Seaice DA verification tasks # Archiving options export HPSSARCH="@HPSSARCH@" # save data to HPSS archive diff --git a/parm/config/gfs/config.efcs b/parm/config/gfs/config.efcs index 7a48feb4ce..effd443730 100644 --- a/parm/config/gfs/config.efcs +++ b/parm/config/gfs/config.efcs @@ -67,9 +67,9 @@ 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" + 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 # Model config option for Ensemble diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index 7c32313758..684dea4ee3 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -12,7 +12,7 @@ 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 @@ -21,4 +21,10 @@ 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/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index c03c97e56f..461f1c5b18 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -56,9 +56,8 @@ 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" ####################################################################### @@ -175,17 +174,17 @@ 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 export ncld=2 - 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}" export nwat=6 export cal_pre=".false." @@ -208,7 +207,7 @@ case ${imp_physics} in ;; 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." @@ -253,7 +252,7 @@ export FSICS="0" if [[ "${CDUMP}" =~ "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" @@ -267,7 +266,7 @@ if [[ "${CDUMP}" =~ "gdas" ]] ; then # GDAS cycle specific parameters elif [[ "${CDUMP}" =~ "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/parm/config/gfs/config.fit2obs b/parm/config/gfs/config.fit2obs index 46baaa9e45..9b3fb87ead 100644 --- a/parm/config/gfs/config.fit2obs +++ b/parm/config/gfs/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/parm/config/gfs/config.oceanice_products b/parm/config/gfs/config.oceanice_products index bea70c21cc..9e5c5b1c68 100644 --- a/parm/config/gfs/config.oceanice_products +++ b/parm/config/gfs/config.oceanice_products @@ -7,7 +7,7 @@ echo "BEGIN: config.oceanice_products" # Get task specific resources source "${EXPDIR}/config.resources" oceanice_products -export OCEANICEPRODUCTS_CONFIG="${HOMEgfs}/parm/post/oceanice_products.yaml" +export OCEANICEPRODUCTS_CONFIG="${PARMgfs}/post/oceanice_products.yaml" # No. of forecast hours to process in a single job export NFHRS_PER_GROUP=3 diff --git a/parm/config/gfs/config.ocnanalecen b/parm/config/gfs/config.ocnanalecen new file mode 100644 index 0000000000..b64c2bcf62 --- /dev/null +++ b/parm/config/gfs/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/parm/config/gfs/config.postsnd b/parm/config/gfs/config.postsnd index 53d66bf4f6..7ec0ad6321 100644 --- a/parm/config/gfs/config.postsnd +++ b/parm/config/gfs/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/parm/config/gfs/config.prep b/parm/config/gfs/config.prep index 9733eabc19..6009280db0 100644 --- a/parm/config/gfs/config.prep +++ b/parm/config/gfs/config.prep @@ -13,15 +13,11 @@ 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 COMINsyn=${COMINsyn:-$(compath.py ${envir}/com/gfs/${gfs_ver})/syndat} -export HOMERELO=$HOMEgfs -export EXECRELO=${HOMERELO}/exec -export USHRELO=${HOMERELO}/ush - # Adjust observation error for GFS v16 parallels # # NOTE: Remember to set OBERROR in config.anal as PRVT is set below diff --git a/parm/config/gfs/config.prepatmiodaobs b/parm/config/gfs/config.prepatmiodaobs index ed9b246120..e29cf67b07 100644 --- a/parm/config/gfs/config.prepatmiodaobs +++ b/parm/config/gfs/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/parm/config/gfs/config.prepsnowobs b/parm/config/gfs/config.prepsnowobs index e2bfdd1905..60ca16ce9e 100644 --- a/parm/config/gfs/config.prepsnowobs +++ b/parm/config/gfs/config.prepsnowobs @@ -8,14 +8,14 @@ echo "BEGIN: config.prepsnowobs" # Get task specific resources . "${EXPDIR}/config.resources" prepsnowobs -export GTS_OBS_LIST="${HOMEgfs}/parm/gdas/snow/prep/prep_gts.yaml.j2" -export IMS_OBS_LIST="${HOMEgfs}/parm/gdas/snow/prep/prep_ims.yaml.j2" +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="${HOMEgfs}/exec/bufr2ioda.x" +export BUFR2IODAX="${EXECgfs}/bufr2ioda.x" -export CALCFIMSEXE="${HOMEgfs}/exec/calcfIMS.exe" -export FIMS_NML_TMPL="${HOMEgfs}/parm/gdas/snow/prep/fims.nml.j2" +export CALCFIMSEXE="${EXECgfs}/calcfIMS.exe" +export FIMS_NML_TMPL="${PARMgfs}/gdas/snow/prep/fims.nml.j2" -export IMS2IODACONV="${HOMEgfs}/ush/imsfv3_scf2ioda.py" +export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" echo "END: config.prepsnowobs" diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 7e1f66cb04..21f0a111ef 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -23,7 +23,7 @@ if (( $# != 1 )); then 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 ocnanalbmat ocnanalrun ocnanalecen ocnanalchkpt ocnanalpost ocnanalvrfy" exit 1 fi @@ -356,12 +356,12 @@ case ${step} in "ocnanalbmat") npes=16 - case ${CASE} in - "C384") npes=480;; - "C96") npes=16;; - "C48") npes=16;; + case ${OCNRES} in + "025") npes=480;; + "050") npes=16;; + "500") npes=16;; *) - echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${OCNRES}" exit 4 esac @@ -374,20 +374,21 @@ case ${step} in "ocnanalrun") npes=16 - case ${CASE} in - "C384") + case ${OCNRES} in + "025") npes=480 - memory_ocnanalrun="128GB" + memory_ocnanalrun="96GB" ;; - "C96") + "050") npes=16 + memory_ocnanalrun="96GB" ;; - "C48") + "500") npes=16 - memory_ocnanalrun="64GB" + memory_ocnanalrun="24GB" ;; *) - echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${OCNRES}" exit 4 esac @@ -399,23 +400,51 @@ case ${step} in export memory_ocnanalrun ;; + "ocnanalecen") + npes=16 + case ${OCNRES} in + "025") + npes=40 + memory_ocnanalecen="96GB" + ;; + "050") + npes=16 + memory_ocnanalecen="96GB" + ;; + "500") + npes=16 + memory_ocnanalecen="24GB" + ;; + *) + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${OCNRES}" + exit 4 + esac + + export wtime_ocnanalecen="00:10:00" + export npe_ocnanalecen=${npes} + export nth_ocnanalecen=1 + export is_exclusive=True + export npe_node_ocnanalecen=$(( npe_node_max / nth_ocnanalecen )) + export memory_ocnanalecen + ;; + "ocnanalchkpt") export wtime_ocnanalchkpt="00:10:00" export npe_ocnanalchkpt=1 export nth_ocnanalchkpt=1 export npe_node_ocnanalchkpt=$(( npe_node_max / nth_ocnanalchkpt )) - case ${CASE} in - "C384") + case ${OCNRES} in + "025") memory_ocnanalchkpt="128GB" npes=40;; - "C96") + "050") memory_ocnanalchkpt="32GB" npes=16;; - "C48") + "500") memory_ocnanalchkpt="32GB" npes=8;; *) - echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${OCNRES}" exit 4 esac export npe_ocnanalchkpt=${npes} diff --git a/parm/config/gfs/config.snowanl b/parm/config/gfs/config.snowanl index d8554570d3..7b3ffa47f3 100644 --- a/parm/config/gfs/config.snowanl +++ b/parm/config/gfs/config.snowanl @@ -8,19 +8,21 @@ echo "BEGIN: config.snowanl" # Get task specific resources source "${EXPDIR}/config.resources" snowanl -export OBS_LIST="${HOMEgfs}/parm/gdas/snow/obs/lists/gdas_snow.yaml.j2" +export OBS_LIST="${PARMgfs}/gdas/snow/obs/lists/gdas_snow.yaml.j2" # Name of the JEDI executable and its yaml template -export JEDIEXE="${HOMEgfs}/exec/fv3jedi_letkf.x" -export JEDIYAML="${HOMEgfs}/parm/gdas/snow/letkfoi/letkfoi.yaml.j2" +export JEDIEXE="${EXECgfs}/fv3jedi_letkf.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="${HOMEgfs}/exec/apply_incr.exe" -export APPLY_INCR_NML_TMPL="${HOMEgfs}/parm/gdas/snow/letkfoi/apply_incr_nml.j2" +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=@IO_LAYOUT_X@ export io_layout_y=@IO_LAYOUT_Y@ diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 2e299fddf7..68a8941122 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -443,25 +443,25 @@ fi # Default ufs.configure templates for supported model configurations case "${model_list}" in atm) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atm.IN" ;; atm.aero) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.atmaero.IN" + default_template="${PARMgfs}/ufs/ufs.configure.atmaero.IN" ;; atm.wave) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" + default_template="${PARMgfs}/ufs/ufs.configure.leapfrog_atm_wav.IN" ;; atm.ocean.ice) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2s_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2s_esmf.IN" ;; atm.ocean.ice.aero) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sa_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sa_esmf.IN" ;; atm.ocean.ice.wave) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sw_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2sw_esmf.IN" ;; atm.ocean.ice.wave.aero) - default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2swa_esmf.IN" + default_template="${PARMgfs}/ufs/ufs.configure.s2swa_esmf.IN" ;; *) echo "FATAL ERROR: Unsupported UFSWM configuration for ${model_list}" diff --git a/parm/config/gfs/config.upp b/parm/config/gfs/config.upp index a1bd0a7d34..41015c2fee 100644 --- a/parm/config/gfs/config.upp +++ b/parm/config/gfs/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/parm/config/gfs/config.verfozn b/parm/config/gfs/config.verfozn index 9eea0f25a3..df7d18012d 100644 --- a/parm/config/gfs/config.verfozn +++ b/parm/config/gfs/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/parm/config/gfs/config.verfrad b/parm/config/gfs/config.verfrad index dd65020180..506ce50b4f 100644 --- a/parm/config/gfs/config.verfrad +++ b/parm/config/gfs/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/parm/config/gfs/config.vminmon b/parm/config/gfs/config.vminmon index 8929c36e0e..7c7d362161 100644 --- a/parm/config/gfs/config.vminmon +++ b/parm/config/gfs/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/parm/config/gfs/config.wave b/parm/config/gfs/config.wave index 8068ffcda6..6fbce69996 100644 --- a/parm/config/gfs/config.wave +++ b/parm/config/gfs/config.wave @@ -6,11 +6,6 @@ echo "BEGIN: config.wave" # Parameters that are common to all wave model steps - -export EXECwave="${HOMEgfs}/exec" -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 diff --git a/parm/config/gfs/yaml/defaults.yaml b/parm/config/gfs/yaml/defaults.yaml index e6108fff29..9f744df4db 100644 --- a/parm/config/gfs/yaml/defaults.yaml +++ b/parm/config/gfs/yaml/defaults.yaml @@ -7,6 +7,8 @@ base: DO_MERGENSST: "NO" DO_GOES: "NO" FHMAX_GFS: 120 + DO_VRFY_OCEANDA: "NO" + GSI_SOILANAL: "NO" atmanl: LAYOUT_X_ATMANL: 8 @@ -31,12 +33,12 @@ snowanl: ocnanal: SOCA_INPUT_FIX_DIR: "/scratch2/NCEPDEV/ocean/Guillaume.Vernieres/data/static/72x35x25/soca" # TODO: These need to go to glopara fix space. CASE_ANL: "C48" # TODO: Check in gdasapp if used anywhere for SOCA - SOCA_OBS_LIST: "{{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml" # TODO: This is also repeated in oceanprepobs + SOCA_OBS_LIST: "${PARMgfs}/gdas/soca/obs/obs_list.yaml" # TODO: This is also repeated in oceanprepobs SOCA_NINNER: 100 SABER_BLOCKS_YAML: "" NICAS_RESOL: 1 NICAS_GRID_SIZE: 15000 prepoceanobs: - SOCA_OBS_LIST: "{{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml" # TODO: This is also repeated in ocnanal - OBSPREP_YAML: "{{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obsprep/obsprep_config.yaml" + SOCA_OBS_LIST: "${PARMgfs}/gdas/soca/obs/obs_list.yaml" # TODO: This is also repeated in ocnanal + OBSPREP_YAML: "${PARMgfs}/gdas/soca/obsprep/obsprep_config.yaml" DMPDIR: "/scratch1/NCEPDEV/global/glopara/data/experimental_obs" diff --git a/parm/config/gfs/yaml/test_ci.yaml b/parm/config/gfs/yaml/test_ci.yaml index bb9602be59..7425d4d029 100644 --- a/parm/config/gfs/yaml/test_ci.yaml +++ b/parm/config/gfs/yaml/test_ci.yaml @@ -1,4 +1,4 @@ defaults: - !INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml + !INC {{ PARMgfs }}/config/gfs/yaml/defaults.yaml base: ACCOUNT: "nems" diff --git a/parm/gdas/aero_crtm_coeff.yaml b/parm/gdas/aero_crtm_coeff.yaml deleted file mode 100644 index 75b54c3741..0000000000 --- a/parm/gdas/aero_crtm_coeff.yaml +++ /dev/null @@ -1,13 +0,0 @@ -mkdir: -- {{ DATA }}/crtm/ -copy: -- [{{ CRTM_FIX }}/AerosolCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/CloudCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/v.viirs-m_npp.SpcCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/v.viirs-m_npp.TauCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/v.viirs-m_j1.SpcCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/v.viirs-m_j1.TauCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/NPOESS.VISice.EmisCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/NPOESS.VISland.EmisCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/NPOESS.VISsnow.EmisCoeff.bin, {{ DATA }}/crtm/] -- [{{ CRTM_FIX }}/NPOESS.VISwater.EmisCoeff.bin, {{ DATA }}/crtm/] diff --git a/parm/gdas/aero_crtm_coeff.yaml.j2 b/parm/gdas/aero_crtm_coeff.yaml.j2 new file mode 100644 index 0000000000..b48d8ff231 --- /dev/null +++ b/parm/gdas/aero_crtm_coeff.yaml.j2 @@ -0,0 +1,13 @@ +mkdir: +- '{{ DATA }}/crtm/' +copy: +- ['{{ CRTM_FIX }}/AerosolCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/CloudCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_npp.SpcCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_npp.TauCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_j1.SpcCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_j1.TauCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISice.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISland.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISsnow.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISwater.EmisCoeff.bin', '{{ DATA }}/crtm/'] diff --git a/parm/gdas/aero_jedi_fix.yaml b/parm/gdas/aero_jedi_fix.yaml deleted file mode 100644 index 16cbeac6e7..0000000000 --- a/parm/gdas/aero_jedi_fix.yaml +++ /dev/null @@ -1,11 +0,0 @@ -mkdir: -- !ENV ${DATA}/fv3jedi -copy: -- - !ENV ${FIXgfs}/gdas/fv3jedi/fv3files/akbk$(npz).nc4 - - !ENV ${DATA}/fv3jedi/akbk.nc4 -- - !ENV ${FIXgfs}/gdas/fv3jedi/fv3files/fmsmpp.nml - - !ENV ${DATA}/fv3jedi/fmsmpp.nml -- - !ENV ${FIXgfs}/gdas/fv3jedi/fv3files/field_table_gfdl - - !ENV ${DATA}/fv3jedi/field_table -- - !ENV $(HOMEgfs)/sorc/gdas.cd/parm/io/fv3jedi_fieldmetadata_restart.yaml - - !ENV ${DATA}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml diff --git a/parm/gdas/aero_jedi_fix.yaml.j2 b/parm/gdas/aero_jedi_fix.yaml.j2 new file mode 100644 index 0000000000..69039baddf --- /dev/null +++ b/parm/gdas/aero_jedi_fix.yaml.j2 @@ -0,0 +1,7 @@ +mkdir: +- '{{ DATA }}/fv3jedi' +copy: +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] +- ['{{ PARMgfs }}/gdas/io/fv3jedi_fieldmetadata_restart.yaml', '{{ DATA }}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml'] diff --git a/parm/gdas/atm_crtm_coeff.yaml b/parm/gdas/atm_crtm_coeff.yaml.j2 similarity index 100% rename from parm/gdas/atm_crtm_coeff.yaml rename to parm/gdas/atm_crtm_coeff.yaml.j2 diff --git a/parm/gdas/atm_jedi_fix.yaml b/parm/gdas/atm_jedi_fix.yaml deleted file mode 100644 index 3d1ca79f33..0000000000 --- a/parm/gdas/atm_jedi_fix.yaml +++ /dev/null @@ -1,7 +0,0 @@ -mkdir: -- $(DATA)/fv3jedi -copy: -- [$(HOMEgfs)/fix/gdas/fv3jedi/fv3files/akbk$(npz).nc4, $(DATA)/fv3jedi/akbk.nc4] -- [$(HOMEgfs)/fix/gdas/fv3jedi/fv3files/fmsmpp.nml, $(DATA)/fv3jedi/fmsmpp.nml] -- [$(HOMEgfs)/fix/gdas/fv3jedi/fv3files/field_table_gfdl, $(DATA)/fv3jedi/field_table] -- [$(HOMEgfs)/sorc/gdas.cd/parm/io/fv3jedi_fieldmetadata_restart.yaml, $(DATA)/fv3jedi/fv3jedi_fieldmetadata_restart.yaml] diff --git a/parm/gdas/atm_jedi_fix.yaml.j2 b/parm/gdas/atm_jedi_fix.yaml.j2 new file mode 100644 index 0000000000..69039baddf --- /dev/null +++ b/parm/gdas/atm_jedi_fix.yaml.j2 @@ -0,0 +1,7 @@ +mkdir: +- '{{ DATA }}/fv3jedi' +copy: +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] +- ['{{ PARMgfs }}/gdas/io/fv3jedi_fieldmetadata_restart.yaml', '{{ DATA }}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml'] diff --git a/parm/gdas/snow_jedi_fix.yaml.j2 b/parm/gdas/snow_jedi_fix.yaml.j2 index 4d820a82ba..69039baddf 100644 --- a/parm/gdas/snow_jedi_fix.yaml.j2 +++ b/parm/gdas/snow_jedi_fix.yaml.j2 @@ -1,7 +1,7 @@ mkdir: - '{{ DATA }}/fv3jedi' copy: -- ['{{ HOMEgfs }}/fix/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] -- ['{{ HOMEgfs }}/fix/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] -- ['{{ HOMEgfs }}/fix/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] -- ['{{ HOMEgfs }}/sorc/gdas.cd/parm/io/fv3jedi_fieldmetadata_restart.yaml', '{{ DATA }}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] +- ['{{ PARMgfs }}/gdas/io/fv3jedi_fieldmetadata_restart.yaml', '{{ DATA }}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml'] diff --git a/parm/post/oceanice_products.yaml b/parm/post/oceanice_products.yaml index 44b4094c56..8d8bcd4b51 100644 --- a/parm/post/oceanice_products.yaml +++ b/parm/post/oceanice_products.yaml @@ -6,20 +6,20 @@ ocnicepost: mkdir: - "{{ DATA }}" copy: - - ["{{ HOMEgfs }}/exec/ocnicepost.x", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/parm/post/ocnicepost.nml.jinja2", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/parm/post/{{ component }}.csv", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/fix/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Bu.to.Ct.bilinear.nc", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/fix/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Cu.to.Ct.bilinear.nc", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/fix/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Cv.to.Ct.bilinear.nc", "{{ DATA }}/"] + - ["{{ EXECgfs }}/ocnicepost.x", "{{ DATA }}/"] + - ["{{ PARMgfs }}/post/ocnicepost.nml.jinja2", "{{ DATA }}/"] + - ["{{ PARMgfs }}/post/{{ component }}.csv", "{{ DATA }}/"] + - ["{{ FIXgfs }}/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Bu.to.Ct.bilinear.nc", "{{ DATA }}/"] + - ["{{ FIXgfs }}/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Cu.to.Ct.bilinear.nc", "{{ DATA }}/"] + - ["{{ FIXgfs }}/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Cv.to.Ct.bilinear.nc", "{{ DATA }}/"] {% for grid in product_grids %} - - ["{{ HOMEgfs }}/fix/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Ct.to.rect.{{ grid }}.bilinear.nc", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/fix/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Ct.to.rect.{{ grid }}.conserve.nc", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/fix/mom6/post/template.global.{{ grid }}.gb2", "{{ DATA }}/"] + - ["{{ FIXgfs }}/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Ct.to.rect.{{ grid }}.bilinear.nc", "{{ DATA }}/"] + - ["{{ FIXgfs }}/mom6/post/{{ model_grid }}/tripole.{{ model_grid }}.Ct.to.rect.{{ grid }}.conserve.nc", "{{ DATA }}/"] + - ["{{ FIXgfs }}/mom6/post/template.global.{{ grid }}.gb2", "{{ DATA }}/"] {% endfor %} nc2grib2: - script: "{{ HOMEgfs }}/ush/oceanice_nc2grib2.sh" + script: "{{ USHgfs }}/oceanice_nc2grib2.sh" ocean: namelist: diff --git a/parm/post/upp.yaml b/parm/post/upp.yaml index ea7237dc83..c2f0315d86 100644 --- a/parm/post/upp.yaml +++ b/parm/post/upp.yaml @@ -9,16 +9,16 @@ upp: - "{{ DATA }}" copy: - ["{{ 'g2tmpl_ROOT' | getenv }}/share/params_grib2_tbl_new", "{{ DATA }}/params_grib2_tbl_new"] - - ["{{ HOMEgfs }}/parm/post/nam_micro_lookup.dat", "{{ DATA }}/eta_micro_lookup.dat"] - - ["{{ HOMEgfs }}/exec/upp.x", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/parm/post/itag.jinja", "{{ DATA }}/"] + - ["{{ PARMgfs }}/post/nam_micro_lookup.dat", "{{ DATA }}/eta_micro_lookup.dat"] + - ["{{ EXECgfs }}/upp.x", "{{ DATA }}/"] + - ["{{ PARMgfs }}/post/itag.jinja", "{{ DATA }}/"] analysis: config: rdaod: True data_in: copy: - - ["{{ HOMEgfs }}/parm/post/postxconfig-NT-GFS-ANL.txt", "{{ DATA }}/postxconfig-NT.txt"] + - ["{{ PARMgfs }}/post/postxconfig-NT-GFS-ANL.txt", "{{ DATA }}/postxconfig-NT.txt"] - ["{{ COM_ATMOS_ANALYSIS }}/{{ RUN }}.t{{ current_cycle | strftime('%H') }}z.atmanl.nc", "{{ DATA }}/{{ atmos_filename }}"] - ["{{ COM_ATMOS_ANALYSIS }}/{{ RUN }}.t{{ current_cycle | strftime('%H') }}z.sfcanl.nc", "{{ DATA }}/{{ flux_filename }}"] data_out: @@ -32,9 +32,9 @@ forecast: data_in: copy: {% if forecast_hour == 0 %} - - ["{{ HOMEgfs }}/parm/post/postxconfig-NT-GFS-F00-TWO.txt", "{{ DATA }}/postxconfig-NT.txt"] + - ["{{ PARMgfs }}/post/postxconfig-NT-GFS-F00-TWO.txt", "{{ DATA }}/postxconfig-NT.txt"] {% else %} - - ["{{ HOMEgfs }}/parm/post/postxconfig-NT-GFS-TWO.txt", "{{ DATA }}/postxconfig-NT.txt"] + - ["{{ PARMgfs }}/post/postxconfig-NT-GFS-TWO.txt", "{{ DATA }}/postxconfig-NT.txt"] {% endif %} - ["{{ COM_ATMOS_HISTORY }}/{{ RUN }}.t{{ current_cycle | strftime('%H') }}z.atmf{{ '%03d' % forecast_hour }}.nc", "{{ DATA }}/{{ atmos_filename }}"] - ["{{ COM_ATMOS_HISTORY }}/{{ RUN }}.t{{ current_cycle | strftime('%H') }}z.sfcf{{ '%03d' % forecast_hour }}.nc", "{{ DATA }}/{{ flux_filename }}"] @@ -81,7 +81,7 @@ goes: {% endfor %} - ["{{ 'CRTM_FIX' | getenv }}/AerosolCoeff.bin", "{{ DATA }}/"] - ["{{ 'CRTM_FIX' | getenv }}/CloudCoeff.bin", "{{ DATA }}/"] - - ["{{ HOMEgfs }}/parm/post/postxconfig-NT-GFS-GOES.txt", "{{ DATA }}/postxconfig-NT.txt"] + - ["{{ PARMgfs }}/post/postxconfig-NT-GFS-GOES.txt", "{{ DATA }}/postxconfig-NT.txt"] - ["{{ COM_ATMOS_HISTORY }}/{{ RUN }}.t{{ current_cycle | strftime('%H') }}z.atmf{{ '%03d' % forecast_hour }}.nc", "{{ DATA }}/{{ atmos_filename }}"] - ["{{ COM_ATMOS_HISTORY }}/{{ RUN }}.t{{ current_cycle | strftime('%H') }}z.sfcf{{ '%03d' % forecast_hour }}.nc", "{{ DATA }}/{{ flux_filename }}"] data_out: diff --git a/parm/product/bufr_ij9km.txt b/parm/product/bufr_ij9km.txt new file mode 100644 index 0000000000..321026f3d1 --- /dev/null +++ b/parm/product/bufr_ij9km.txt @@ -0,0 +1,2115 @@ + 1 2814 261 69.58 -140.18 + 2 2958 257 69.90 -128.97 + 3 3063 261 69.58 -120.75 + 4 2919 320 65.00 -132.00 + 5 3072 320 65.00 -120.00 + 6 3297 319 65.10 -102.43 + 7 2816 384 60.00 -140.00 + 8 3072 384 60.00 -120.00 + 9 3328 384 60.00 -100.00 + 10 2983 422 57.00 -127.00 + 11 2708 253 70.20 -148.47 + 12 3249 465 53.63 -106.20 + 13 2588 293 67.10 -157.85 + 14 3263 461 53.99 -105.12 + 15 3097 475 52.88 -118.07 + 16 3239 352 62.50 -107.00 + 17 3200 590 43.90 -110.00 + 18 3361 566 45.80 -97.45 + 19 3385 595 43.50 -95.60 + 20 3421 727 33.22 -92.80 + 21 3395 614 42.04 -94.79 + 22 3419 613 42.11 -92.92 + 23 3506 715 34.10 -86.10 + 24 3523 701 35.20 -84.80 + 25 3533 706 34.80 -84.05 + 26 3572 682 36.72 -80.97 + 27 3158 533 48.32 -113.35 + 28 3236 612 42.20 -107.20 + 29 3272 605 42.76 -104.45 + 30 3298 610 42.30 -102.40 + 31 3330 607 42.60 -99.90 + 32 3249 651 39.10 -106.20 + 33 3471 674 37.30 -88.90 + 34 3423 637 40.20 -92.60 + 35 3353 705 34.90 -98.10 + 36 3263 533 48.31 -105.10 + 37 3458 714 34.25 -89.87 + 38 3261 638 40.13 -105.24 + 39 3368 672 37.48 -96.93 + 40 3530 692 35.96 -84.29 + 41 3323 603 42.86 -100.41 + 42 3401 627 41.02 -94.36 + 43 3613 614 42.04 -77.76 + 44 3591 651 39.17 -79.52 + 45 3464 746 31.71 -89.41 + 46 3579 577 44.92 -80.42 + 47 3283 572 45.27 -103.54 + 48 3268 579 44.79 -104.73 + 49 3279 583 44.46 -103.85 + 50 3268 597 43.35 -104.69 + 51 3282 595 43.53 -103.65 + 52 3381 569 45.50 -95.90 + 53 3412 587 44.10 -93.50 + 54 3112 700 35.34 -116.88 + 55 3487 712 34.40 -87.60 + 56 3058 544 47.50 -121.10 + 57 3038 582 44.50 -122.70 + 58 3136 589 44.00 -115.00 + 59 3056 552 46.90 -121.30 + 60 3066 587 44.10 -120.50 + 61 3055 605 42.70 -121.40 + 62 3191 737 32.42 -110.73 + 63 3361 683 36.61 -97.49 + 64 3056 567 45.68 -121.27 + 65 3053 567 45.72 -121.56 + 66 3062 567 45.68 -120.82 + 67 3070 567 45.72 -120.21 + 68 3050 665 38.06 -121.77 + 69 3043 677 37.10 -122.28 + 70 3041 668 37.82 -122.47 + 71 3040 666 37.94 -122.50 + 72 3058 677 37.07 -121.12 + 73 3158 637 40.20 -113.30 + 74 3662 635 40.42 -73.98 + 75 3651 676 37.20 -74.80 + 76 3658 690 36.05 -74.25 + 77 3620 732 32.80 -77.20 + 78 3664 658 38.60 -73.75 + 79 3492 778 29.20 -87.25 + 80 3515 559 46.31 -85.46 + 81 3494 549 47.18 -87.22 + 82 3475 602 42.97 -88.55 + 83 3680 577 44.94 -72.51 + 84 3558 675 37.27 -82.10 + 85 3558 675 90.00 0.00 + 86 2604 201 74.30 -156.60 + 87 2816 192 75.00 -140.00 + 88 2390 376 60.60 -173.30 + 89 2538 385 59.90 -161.75 + 90 2691 347 62.88 -149.83 + 91 2703 374 60.79 -148.83 + 92 2691 378 60.49 -149.79 + 93 2700 372 60.95 -149.14 + 94 2705 374 60.78 -148.72 + 95 3146 778 29.22 -114.28 + 96 3563 689 36.20 -81.65 + 97 3483 607 42.59 -87.94 + 98 3100 607 42.59 -117.87 + 99 3042 549 47.08 -122.36 + 100 3020 551 46.91 -124.11 + 101 3445 542 47.66 -90.91 + 102 3440 553 46.77 -91.25 + 103 2554 444 55.31 -160.52 + 104 3615 700 35.33 -77.60 + 105 3679 582 44.53 -72.61 + 106 3582 619 41.63 -80.21 + 107 3576 657 38.69 -80.65 + 108 3102 709 34.57 -117.67 + 109 3103 709 34.63 -117.61 + 110 3506 563 45.97 -86.17 + 111 3499 558 46.42 -86.65 + 112 3461 651 39.16 -89.67 + 113 3308 588 44.05 -101.60 + 114 3505 594 43.58 -86.24 + 115 3517 596 43.43 -85.30 + 116 3528 597 43.37 -84.44 + 117 3274 712 34.38 -104.23 + 118 3994 554 46.70 -48.00 + 119 3903 548 47.20 -55.10 + 120 3506 605 42.75 -86.10 + 121 3504 609 42.41 -86.28 + 122 3108 571 45.35 -117.23 + 123 3388 620 41.59 -95.34 + 124 3484 591 43.78 -87.85 + 125 3292 756 30.90 -102.85 + 126 3434 721 33.64 -91.75 + 127 3427 688 36.22 -92.28 + 128 3284 750 31.38 -103.51 + 129 3566 814 26.42 -81.44 + 130 3572 810 26.75 -80.94 + 131 3337 753 31.18 -99.32 + 132 3320 760 30.59 -100.65 + 133 3060 652 39.08 -120.94 + 134 3072 672 37.51 -120.04 + 135 3069 671 37.58 -120.27 + 136 3081 680 36.83 -119.33 + 137 3056 693 35.85 -121.31 + 138 3049 546 47.31 -121.85 + 139 3057 659 38.49 -121.22 + 140 3062 651 39.13 -120.80 + 141 3041 631 40.72 -122.43 + 142 3656 633 40.50 -74.45 + 143 3705 602 42.99 -70.62 + 144 3667 569 45.50 -73.57 + 145 3676 626 41.10 -72.89 + 146 3048 644 39.69 -121.91 + 147 3058 651 39.17 -121.11 + 148 3076 696 35.62 -119.69 + 149 3056 695 35.66 -121.28 + 150 3031 658 38.61 -123.21 + 151 3031 659 38.51 -123.22 + 152 3034 656 38.78 -122.99 + 153 3069 677 37.11 -120.24 + 154 3046 640 39.99 -122.06 + 155 3033 653 39.00 -123.12 + 156 3035 659 38.51 -122.96 + 157 3249 723 33.50 -106.18 + 158 3243 719 33.82 -106.65 + 159 3180 632 40.58 -111.63 + 160 3546 591 43.78 -82.99 + 161 2791 409 58.00 -142.00 + 162 2778 461 54.00 -143.00 + 163 2855 435 56.00 -137.00 + 164 2624 448 55.00 -155.00 + 165 2829 473 53.00 -139.00 + 166 2722 498 51.10 -147.40 + 167 2535 486 52.00 -162.00 + 168 2641 518 49.50 -153.70 + 169 2448 522 49.20 -168.80 + 170 2880 512 50.00 -135.00 + 171 2957 659 38.50 -129.00 + 172 2996 717 34.00 -126.00 + 173 3034 774 29.50 -123.00 + 174 3072 832 25.00 -120.00 + 175 3136 832 25.00 -115.00 + 176 2806 585 44.30 -140.80 + 177 2764 541 47.70 -144.10 + 178 2855 673 37.40 -137.00 + 179 2842 550 47.00 -138.00 + 180 2874 594 43.60 -135.50 + 181 2902 644 39.70 -133.30 + 182 2951 531 48.50 -129.50 + 183 2976 581 44.60 -127.50 + 184 2799 505 50.50 -141.38 + 185 2983 633 40.50 -126.98 + 186 2176 448 55.00 170.00 + 187 2304 448 55.00 180.00 + 188 2240 384 60.00 175.00 + 189 3203 604 42.80 -109.81 + 190 3045 651 39.15 -122.15 + 191 3051 629 40.88 -121.66 + 192 3068 666 37.99 -120.38 + 193 3091 669 37.74 -118.59 + 194 3084 689 36.20 -119.10 + 195 3091 691 35.97 -118.54 + 196 3086 706 34.83 -118.95 + 197 3068 689 36.14 -120.35 + 198 3092 683 36.65 -118.48 + 199 3670 608 42.47 -73.29 + 200 3556 650 39.21 -82.23 + 201 3182 634 40.48 -111.43 + 202 3146 729 33.02 -114.24 + 203 3197 749 31.49 -110.30 + 204 3228 742 32.02 -107.87 + 205 3273 762 30.43 -104.33 + 206 3325 789 28.39 -100.29 + 207 3344 812 26.57 -98.82 + 208 3380 784 28.71 -95.96 + 209 3435 770 29.81 -91.66 + 210 3565 836 24.70 -81.51 + 211 3750 922 17.98 -67.08 + 212 3051 561 46.19 -121.70 + 213 3043 559 46.28 -122.28 + 214 3048 571 45.35 -121.94 + 215 3046 587 44.17 -122.06 + 216 3340 575 45.03 -99.11 + 217 3367 570 45.46 -96.99 + 218 3390 662 38.28 -95.22 + 219 3372 642 39.86 -96.63 + 220 3242 584 44.38 -106.72 + 221 3225 582 44.52 -108.08 + 222 3453 575 45.10 -90.30 + 223 3427 583 44.46 -92.29 + 224 3238 675 37.29 -107.06 + 225 3219 663 38.23 -108.56 + 226 3228 639 40.05 -107.89 + 227 3437 619 41.64 -91.54 + 228 3258 652 39.05 -105.51 + 229 3247 639 40.05 -106.36 + 230 3487 656 38.76 -87.61 + 231 3475 652 39.07 -88.53 + 232 3451 628 40.94 -90.43 + 233 3453 643 39.77 -90.24 + 234 3479 647 39.48 -88.28 + 235 3331 596 43.39 -99.84 + 236 3296 601 43.02 -102.52 + 237 3273 590 43.89 -104.32 + 238 3294 582 44.56 -102.66 + 239 3255 592 43.74 -105.74 + 240 3467 561 46.15 -89.21 + 241 3490 556 46.54 -87.39 + 242 3508 554 46.68 -85.97 + 243 3470 555 46.61 -88.91 + 244 3495 794 28.00 -87.00 + 245 3409 791 28.20 -93.70 + 246 3427 787 28.50 -92.30 + 247 3444 795 27.90 -91.00 + 248 3469 794 28.00 -89.00 + 249 3520 794 28.00 -85.00 + 250 3597 755 31.00 -79.00 + 251 3776 537 48.00 -65.00 + 252 3182 649 39.30 -111.46 + 253 3269 682 36.74 -104.65 + 254 3623 678 36.99 -77.00 + 255 3624 667 37.86 -76.89 + 256 3635 659 38.54 -76.03 + 257 3613 681 36.77 -77.79 + 258 3727 591 43.78 -68.86 + 259 3584 660 38.40 -80.00 + 260 3104 703 35.10 -117.56 + 261 3285 597 43.37 -103.39 + 262 3284 583 44.41 -103.48 + 263 3478 612 42.21 -88.32 + 264 3481 634 40.46 -88.10 + 265 3586 732 32.78 -79.92 + 266 3585 734 32.66 -79.93 + 267 3573 742 32.03 -80.89 + 268 3105 538 47.97 -117.43 + 269 3570 688 36.22 -81.10 + 270 3549 608 42.47 -82.76 + 271 3537 591 43.80 -83.72 + 272 3549 588 44.02 -82.79 + 273 3493 618 41.69 -87.15 + 274 3481 619 41.61 -88.10 + 275 3577 685 36.46 -80.55 + 276 3162 676 37.20 -112.99 + 277 3184 662 38.29 -111.26 + 278 3174 656 38.74 -112.10 + 279 3088 676 37.20 -118.80 + 280 3287 542 47.61 -103.26 + 281 3367 668 37.80 -97.01 + 282 3401 709 34.60 -94.30 + 283 3390 667 37.90 -95.20 + 284 3309 659 38.50 -101.50 + 285 3262 673 37.40 -105.20 + 286 3261 691 36.00 -105.30 + 287 3307 714 34.20 -101.70 + 288 3337 722 33.60 -99.30 + 289 3362 721 33.70 -97.40 + 290 3427 677 37.10 -92.30 + 291 3239 627 41.00 -107.00 + 292 3147 560 46.25 -114.15 + 293 3168 550 47.00 -112.50 + 294 3149 525 49.00 -114.00 + 295 3226 518 49.50 -108.00 + 296 3277 525 49.00 -104.00 + 297 3341 544 47.50 -99.00 + 298 3360 561 46.20 -97.50 + 299 3392 563 46.00 -95.00 + 300 3531 630 40.80 -84.20 + 301 3584 665 38.00 -80.00 + 302 3552 710 34.50 -82.50 + 303 3354 618 41.73 -98.01 + 304 3388 620 41.58 -95.34 + 305 3367 611 42.24 -96.98 + 306 3344 669 37.70 -98.75 + 307 3349 528 48.75 -98.39 + 308 3368 528 48.75 -96.94 + 309 3376 583 44.46 -96.25 + 310 3390 599 43.17 -95.21 + 311 3336 599 43.22 -99.40 + 312 3344 598 43.26 -98.76 + 313 3359 628 40.90 -97.62 + 314 3331 630 40.79 -99.78 + 315 3359 638 40.15 -97.58 + 316 3337 643 39.73 -99.32 + 317 3452 681 36.77 -90.32 + 318 3490 674 37.36 -87.40 + 319 3513 652 39.05 -85.61 + 320 3551 669 37.75 -82.64 + 321 3537 683 36.61 -83.74 + 322 3522 680 36.86 -84.86 + 323 3534 665 38.06 -83.98 + 324 3306 626 41.12 -101.77 + 325 3321 615 41.96 -100.57 + 326 3204 594 43.55 -109.69 + 327 3188 605 42.71 -110.94 + 328 3193 617 41.82 -110.56 + 329 3216 578 44.87 -108.79 + 330 3220 577 44.91 -108.45 + 331 3244 592 43.71 -106.63 + 332 3459 595 43.52 -89.77 + 333 3476 592 43.77 -88.49 + 334 3453 603 42.89 -90.24 + 335 3479 601 43.04 -88.24 + 336 3465 588 44.04 -89.31 + 337 3467 623 41.35 -89.15 + 338 3497 618 41.70 -86.82 + 339 3484 626 41.07 -87.85 + 340 3468 616 41.89 -89.08 + 341 3434 570 45.42 -91.77 + 342 3399 575 45.10 -94.51 + 343 3376 579 44.73 -96.27 + 344 3300 639 40.10 -102.24 + 345 3293 656 38.76 -102.79 + 346 3495 572 45.29 -86.98 + 347 3459 584 44.36 -89.84 + 348 3659 640 39.99 -74.17 + 349 3509 669 37.70 -85.87 + 350 3353 670 37.67 -98.12 + 351 3354 675 37.28 -98.04 + 352 3383 662 38.30 -95.72 + 353 3376 667 37.85 -96.29 + 354 3351 656 38.75 -98.23 + 355 3663 646 39.55 -73.90 + 356 3692 644 39.70 -71.60 + 357 3385 677 37.09 -95.57 + 358 3358 661 38.35 -97.69 + 359 3337 674 37.35 -99.35 + 360 3343 700 35.30 -98.90 + 361 3367 698 35.50 -97.00 + 362 3396 704 34.98 -94.69 + 363 3308 683 36.60 -101.60 + 364 3601 608 42.50 -78.68 + 365 3640 592 43.76 -75.68 + 366 3443 738 32.35 -91.03 + 367 3567 821 25.86 -81.38 + 368 3555 783 28.84 -82.33 + 369 3547 741 32.07 -82.90 + 370 3485 746 31.71 -87.78 + 371 3472 724 33.45 -88.82 + 372 3441 705 34.89 -91.20 + 373 3507 698 35.48 -86.09 + 374 3484 696 35.62 -87.84 + 375 3517 679 36.95 -85.26 + 376 3290 722 33.62 -103.02 + 377 3325 701 35.21 -100.25 + 378 3317 651 39.13 -100.87 + 379 3439 678 37.01 -91.36 + 380 3408 661 38.37 -93.79 + 381 3425 647 39.42 -92.44 + 382 3597 709 34.61 -79.06 + 383 3706 619 41.65 -70.52 + 384 3574 724 33.46 -80.85 + 385 3444 569 45.50 -91.00 + 386 3415 564 45.89 -93.27 + 387 3424 574 45.15 -92.54 + 388 3380 573 45.23 -96.00 + 389 3455 588 44.03 -90.08 + 390 3043 623 41.32 -122.32 + 391 3077 607 42.55 -119.66 + 392 3062 597 43.33 -120.84 + 393 3028 622 41.39 -123.49 + 394 3054 622 41.43 -121.46 + 395 3108 571 45.36 -117.25 + 396 3086 584 44.40 -118.96 + 397 3615 687 36.33 -77.64 + 398 3588 705 34.89 -79.76 + 399 3566 634 40.47 -81.42 + 400 3591 629 40.82 -79.53 + 401 3596 632 40.63 -79.11 + 402 3593 645 39.58 -79.34 + 403 3581 638 40.14 -80.29 + 404 3648 608 42.46 -75.06 + 405 3309 682 36.68 -101.50 + 406 3498 727 33.17 -86.77 + 407 3466 752 31.27 -89.26 + 408 3566 790 28.29 -81.44 + 409 3561 783 28.82 -81.81 + 410 3387 763 30.36 -95.41 + 411 3386 759 30.73 -95.47 + 412 3303 576 45.02 -102.02 + 413 3332 778 29.21 -99.74 + 414 3349 693 35.87 -98.42 + 415 3474 628 40.92 -88.62 + 416 3673 620 41.56 -73.05 + 417 3120 529 48.69 -116.32 + 418 3089 529 48.65 -118.73 + 419 3064 541 47.76 -120.65 + 420 3069 531 48.49 -120.24 + 421 3122 543 47.54 -116.14 + 422 3035 631 40.73 -122.94 + 423 3026 628 40.94 -123.63 + 424 3033 636 40.34 -123.07 + 425 3031 643 39.75 -123.21 + 426 3416 684 36.54 -93.20 + 427 2426 337 63.68 -170.50 + 428 2666 280 68.13 -151.73 + 429 2410 336 63.77 -171.73 + 430 2480 379 60.37 -166.27 + 431 2543 427 56.65 -161.37 + 432 2041 460 54.05 159.43 + 433 3684 577 44.89 -72.23 + 434 3309 596 43.46 -101.50 + 435 3280 589 43.99 -103.79 + 436 3533 777 29.30 -84.04 + 437 3372 795 27.90 -96.64 + 438 3528 713 34.31 -84.42 + 439 3535 713 34.27 -83.83 + 440 3528 623 41.34 -84.43 + 441 3510 624 41.28 -85.84 + 442 3515 617 41.81 -85.44 + 443 3498 620 41.57 -86.73 + 444 3286 526 48.93 -103.30 + 445 3333 526 48.88 -99.62 + 446 3285 561 46.19 -103.43 + 447 3337 563 46.02 -99.35 + 448 3353 561 46.17 -98.07 + 449 3537 563 46.01 -83.74 + 450 3465 552 46.88 -89.32 + 451 3495 568 45.58 -87.00 + 452 3103 712 34.36 -117.63 + 453 3076 705 34.94 -119.69 + 454 3070 711 34.48 -120.23 + 455 3071 709 34.61 -120.08 + 456 3186 592 43.74 -111.10 + 457 3533 706 34.85 -84.00 + 458 3280 584 44.35 -103.77 + 459 3273 583 44.41 -104.36 + 460 3395 668 37.80 -94.77 + 461 3423 670 37.64 -92.65 + 462 3414 661 38.35 -93.34 + 463 3052 646 39.49 -121.61 + 464 3478 718 33.90 -88.33 + 465 3282 709 34.64 -103.63 + 466 3643 655 38.83 -75.43 + 467 3338 735 32.54 -99.25 + 468 3402 655 38.81 -94.26 + 469 3355 687 36.34 -97.92 + 470 3342 712 34.36 -98.98 + 471 3509 631 40.72 -85.93 + 472 3362 759 30.72 -97.38 + 473 3348 636 40.32 -98.44 + 474 3515 749 31.46 -85.46 + 475 3510 735 32.54 -85.79 + 476 3311 531 48.50 -101.40 + 477 3541 689 36.17 -83.40 + 478 3643 595 43.47 -75.46 + 479 3542 734 32.68 -83.35 + 480 3491 682 36.74 -87.29 + 481 3143 750 31.40 -114.49 + 482 3164 738 32.37 -112.87 + 483 3205 732 32.82 -109.68 + 484 3129 532 48.39 -115.55 + 485 3271 528 48.76 -104.52 + 486 3034 669 37.70 -123.00 + 487 3033 661 38.32 -123.07 + 488 3274 558 46.37 -104.28 + 489 3183 583 44.42 -111.37 + 490 3171 612 42.17 -112.28 + 491 3124 646 39.50 -115.95 + 492 3083 662 38.30 -119.16 + 493 3668 580 44.65 -73.49 + 494 3644 625 41.14 -75.38 + 495 3638 640 39.98 -75.82 + 496 3295 675 37.28 -102.61 + 497 3709 568 45.64 -70.26 + 498 3722 544 47.46 -69.22 + 499 3745 569 45.56 -67.43 + 500 3672 614 42.05 -73.20 + 501 3208 613 42.11 -109.45 + 502 3228 608 42.49 -107.83 + 503 3215 608 42.48 -108.84 + 504 3195 599 43.20 -110.40 + 505 3381 632 40.61 -95.87 + 506 3372 624 41.24 -96.59 + 507 3495 621 41.45 -87.01 + 508 3477 622 41.42 -88.41 + 509 3344 643 39.76 -98.79 + 510 3241 633 40.51 -106.87 + 511 3234 647 39.43 -107.38 + 512 3250 647 39.48 -106.15 + 513 3232 633 40.50 -107.52 + 514 3464 627 41.02 -89.39 + 515 3480 656 38.72 -88.18 + 516 3352 652 39.06 -98.17 + 517 3377 677 37.13 -96.19 + 518 3373 661 38.37 -96.54 + 519 3622 606 42.64 -77.05 + 520 3630 617 41.77 -76.45 + 521 3248 631 40.73 -106.28 + 522 3629 596 43.45 -76.51 + 523 3402 600 43.08 -94.27 + 524 3396 596 43.40 -94.75 + 525 3394 635 40.35 -94.92 + 526 3539 663 38.22 -83.59 + 527 3416 656 38.71 -93.18 + 528 3416 647 39.42 -93.13 + 529 3221 592 43.71 -108.39 + 530 3187 599 43.18 -111.04 + 531 3283 568 45.59 -103.55 + 532 2654 373 60.82 -152.72 + 533 2560 269 69.00 -160.00 + 534 2273 486 52.00 177.55 + 535 2484 422 57.00 -166.00 + 536 2649 355 62.22 -153.08 + 537 2596 387 59.73 -157.26 + 538 2723 360 61.89 -147.32 + 539 2483 304 66.27 -166.05 + 540 3108 715 34.10 -117.23 + 541 3407 632 40.63 -93.90 + 542 3191 724 33.40 -110.77 + 543 3165 717 33.97 -112.74 + 544 3635 655 38.80 -76.07 + 545 3653 626 41.05 -74.63 + 546 2766 349 62.72 -143.97 + 547 2764 285 67.75 -144.11 + 548 2761 312 65.59 -144.36 + 549 2676 359 61.95 -151.00 + 550 2630 419 57.27 -154.56 + 551 2714 305 66.15 -148.03 + 552 2774 294 67.03 -143.29 + 553 2546 317 65.20 -161.15 + 554 2671 387 59.75 -151.37 + 555 2575 340 63.39 -158.83 + 556 2893 423 56.97 -134.00 + 557 2531 282 67.95 -162.31 + 558 2684 376 60.59 -150.32 + 559 2696 379 60.37 -149.41 + 560 2783 367 61.32 -142.59 + 561 2667 383 60.03 -151.66 + 562 2577 281 68.07 -158.71 + 563 2566 364 61.58 -159.54 + 564 2746 345 63.03 -145.49 + 565 2501 315 65.41 -164.66 + 566 2645 340 63.44 -153.36 + 567 2874 393 59.25 -135.52 + 568 2905 440 55.58 -133.10 + 569 2677 339 63.49 -150.88 + 570 2774 346 62.97 -143.34 + 571 2792 332 64.05 -141.93 + 572 2633 296 66.85 -154.34 + 573 2661 306 66.08 -152.17 + 574 2606 363 61.64 -156.44 + 575 2605 262 69.50 -156.50 + 576 2701 269 69.00 -149.00 + 577 2701 285 67.75 -149.00 + 578 2612 315 65.34 -155.95 + 579 2617 331 64.10 -155.56 + 580 2675 329 64.31 -151.08 + 581 2558 380 60.32 -160.20 + 582 2512 357 62.10 -163.80 + 583 2536 251 70.40 -161.90 + 584 2604 239 71.32 -156.62 + 585 3742 610 42.35 -67.70 + 586 3687 649 39.30 -72.00 + 587 3768 649 39.30 -65.70 + 588 3711 674 37.30 -70.10 + 589 3654 687 36.30 -74.60 + 590 3664 696 35.60 -73.80 + 591 3702 705 34.90 -70.80 + 592 3636 719 33.80 -76.00 + 593 3683 732 32.80 -72.30 + 594 2938 536 48.10 -130.50 + 595 2988 536 48.10 -126.60 + 596 2948 572 45.30 -129.70 + 597 3001 572 45.30 -125.60 + 598 2946 617 41.75 -129.90 + 599 2998 616 41.90 -125.80 + 600 3002 650 39.20 -125.50 + 601 3003 686 36.40 -125.40 + 602 3008 726 33.30 -125.00 + 603 3043 709 34.60 -122.30 + 604 3053 756 30.90 -121.50 + 605 3111 773 29.60 -117.00 + 606 3635 671 37.54 -76.01 + 607 3239 730 32.99 -106.97 + 608 3203 740 32.15 -109.84 + 609 3534 606 42.63 -83.98 + 610 3532 602 42.99 -84.14 + 611 3544 613 42.10 -83.16 + 612 3532 616 41.87 -84.07 + 613 3539 588 44.02 -83.54 + 614 3540 596 43.46 -83.45 + 615 3541 615 41.94 -83.43 + 616 3287 632 40.61 -103.26 + 617 3280 636 40.34 -103.80 + 618 3411 639 40.08 -93.59 + 619 3418 634 40.48 -93.01 + 620 3401 637 40.25 -94.33 + 621 3419 631 40.68 -92.90 + 622 3422 618 41.71 -92.73 + 623 3415 608 42.47 -93.27 + 624 3476 657 38.66 -88.45 + 625 3487 652 39.02 -87.65 + 626 3465 646 39.53 -89.33 + 627 3211 598 43.31 -109.19 + 628 3226 619 41.67 -107.98 + 629 3188 595 43.50 -110.96 + 630 3352 647 39.47 -98.13 + 631 3401 667 37.85 -94.31 + 632 3473 615 41.93 -88.71 + 633 3193 673 37.44 -110.56 + 634 3242 634 40.45 -106.75 + 635 3362 674 37.32 -97.39 + 636 3241 673 37.45 -106.80 + 637 3233 588 44.03 -107.45 + 638 3188 613 42.08 -110.96 + 639 3225 655 38.79 -108.06 + 640 3243 635 40.35 -106.70 + 641 3471 777 29.30 -88.84 + 642 4508 741 32.13 -7.88 + 643 3678 616 41.89 -72.71 + 644 143 381 60.20 11.10 + 645 230 388 59.67 17.93 + 646 230 392 59.35 17.95 + 647 320 380 60.32 24.97 + 648 4593 382 60.13 -1.18 + 649 4550 429 56.50 -4.58 + 650 3879 1574 -33.00 -57.00 + 651 4586 490 51.68 -1.78 + 652 4588 489 51.75 -1.58 + 653 4605 495 51.29 -0.27 + 654 4527 483 52.25 -6.33 + 655 4319 333 63.97 -22.60 + 656 4522 358 62.02 -6.76 + 657 161 438 55.77 12.53 + 658 56 486 52.03 4.35 + 659 58 500 50.90 4.47 + 660 89 553 46.82 6.95 + 661 31 528 48.73 2.40 + 662 4501 597 43.37 -8.42 + 663 4595 619 41.67 -1.02 + 664 4537 676 37.17 -5.62 + 665 4315 938 16.75 -22.95 + 666 184 291 67.27 14.37 + 667 2323 243 70.97 -178.53 + 668 2311 270 68.92 -179.48 + 669 2435 305 66.17 -169.83 + 670 2182 324 64.68 170.42 + 671 2272 323 64.73 177.50 + 672 2296 345 63.05 179.32 + 673 814 471 53.21 63.55 + 674 4528 407 58.22 -6.32 + 675 17 478 52.63 1.32 + 676 856 509 50.22 66.83 + 677 937 514 49.80 73.15 + 678 4541 511 50.08 -5.25 + 679 4529 452 54.65 -6.22 + 680 3674 705 34.90 -73.00 + 681 3646 738 32.30 -75.20 + 682 3596 736 32.50 -79.07 + 683 3618 777 29.30 -77.40 + 684 3573 750 31.40 -80.87 + 685 3604 782 28.90 -78.50 + 686 3589 732 32.80 -79.62 + 687 3579 739 32.28 -80.41 + 688 3460 820 25.90 -89.70 + 689 3410 820 25.90 -93.60 + 690 3509 820 25.90 -85.90 + 691 3392 795 27.90 -95.00 + 692 3373 806 27.00 -96.50 + 693 3704 659 38.50 -70.70 + 694 3730 607 42.60 -68.60 + 695 3712 595 43.53 -70.14 + 696 3720 633 40.50 -69.40 + 697 3652 659 38.50 -74.70 + 698 3756 626 41.10 -66.60 + 699 3651 683 36.60 -74.80 + 700 3686 631 40.70 -72.10 + 701 3672 636 40.30 -73.20 + 702 3747 585 44.30 -67.30 + 703 3665 635 40.37 -73.70 + 704 3644 669 37.76 -75.33 + 705 3485 537 48.06 -87.78 + 706 3503 572 45.33 -86.42 + 707 3549 571 45.35 -82.84 + 708 3501 543 47.56 -86.55 + 709 3554 618 41.68 -82.40 + 710 3458 546 47.32 -89.87 + 711 3495 606 42.67 -87.02 + 712 3555 584 44.28 -82.42 + 713 3618 594 43.62 -77.41 + 714 3569 608 42.47 -81.22 + 715 3592 596 43.40 -79.45 + 716 3593 605 42.74 -79.35 + 717 3486 612 42.14 -87.66 + 718 2712 431 56.30 -148.20 + 719 2938 608 42.50 -130.50 + 720 2613 488 51.90 -155.90 + 721 2932 562 46.10 -131.00 + 722 2848 628 40.90 -137.50 + 723 3021 650 39.20 -124.00 + 724 3011 605 42.75 -124.82 + 725 3019 561 46.20 -124.20 + 726 3015 635 40.40 -124.50 + 727 2334 422 57.00 -177.70 + 728 3079 737 32.40 -119.50 + 729 3098 736 32.49 -118.03 + 730 1267 912 18.77 98.96 + 731 1316 941 16.47 102.78 + 732 1282 950 15.77 100.14 + 733 1343 957 15.25 104.87 + 734 1288 977 13.67 100.61 + 735 1288 1060 7.19 100.61 + 736 2531 852 23.40 -162.30 + 737 2589 932 17.20 -157.80 + 738 2550 905 19.30 -160.80 + 739 2656 929 17.40 -152.50 + 740 110 441 55.52 8.55 + 741 61 482 52.31 4.76 + 742 89 483 52.28 6.89 + 743 2674 387 59.77 -151.17 + 744 80 525 48.98 6.25 + 745 3354 772 29.70 -98.01 + 746 3500 688 36.25 -86.57 + 747 3385 689 36.18 -95.56 + 748 3085 701 35.24 -119.03 + 749 3454 658 38.62 -90.18 + 750 3275 660 38.46 -104.18 + 751 3564 621 41.50 -81.60 + 752 3166 600 43.11 -112.68 + 753 3126 544 47.47 -115.80 + 754 27 624 41.28 2.07 + 755 4554 635 40.42 -4.25 + 756 4602 646 39.50 -0.47 + 757 3318 685 36.50 -100.80 + 758 3307 764 30.30 -101.70 + 759 3296 797 27.70 -102.50 + 760 3340 762 30.50 -99.10 + 761 3345 788 28.40 -98.70 + 762 3344 815 26.30 -98.80 + 763 3362 840 24.40 -97.40 + 764 3389 820 25.90 -95.30 + 765 3400 838 24.50 -94.40 + 766 3385 854 23.30 -95.60 + 767 3403 918 18.30 -94.20 + 768 3417 878 21.40 -93.10 + 769 3436 854 23.30 -91.60 + 770 3473 849 23.70 -88.70 + 771 3520 858 23.00 -85.00 + 772 3354 851 23.50 -98.00 + 773 3438 563 46.02 -91.45 + 774 3549 655 38.83 -82.80 + 775 3603 654 38.88 -78.52 + 776 3600 645 39.62 -78.76 + 777 3623 645 39.61 -77.01 + 778 113 473 53.05 8.79 + 779 172 480 52.47 13.40 + 780 92 501 50.87 7.15 + 781 110 511 50.05 8.58 + 782 119 529 48.68 9.22 + 783 151 533 48.35 11.78 + 784 182 535 48.23 14.19 + 785 213 536 48.12 16.57 + 786 183 511 50.10 14.26 + 787 237 456 54.38 18.47 + 788 269 484 52.17 20.97 + 789 217 498 51.10 16.89 + 790 246 545 47.43 19.18 + 791 263 579 44.78 20.53 + 792 300 605 42.69 23.41 + 793 353 607 42.57 27.52 + 794 357 599 43.23 27.83 + 795 319 613 42.07 24.86 + 796 334 581 44.57 26.09 + 797 158 569 45.50 12.33 + 798 162 617 41.80 12.60 + 799 157 617 41.80 12.23 + 800 310 697 35.53 24.15 + 801 373 627 40.97 29.08 + 802 423 638 40.13 33.00 + 803 515 669 37.75 40.20 + 804 426 702 35.15 33.28 + 805 2391 327 64.43 -173.23 + 806 387 389 59.58 30.18 + 807 481 438 55.75 37.57 + 808 1062 447 55.03 82.90 + 809 1689 600 43.12 131.90 + 810 985 599 43.23 76.93 + 811 576 618 41.68 44.95 + 812 954 601 43.07 74.47 + 813 887 624 41.27 69.27 + 814 461 743 31.98 35.98 + 815 451 744 31.87 35.22 + 816 599 833 24.88 46.77 + 817 599 836 24.72 46.72 + 818 615 778 29.22 47.98 + 819 553 687 36.32 43.15 + 820 567 727 33.22 44.23 + 821 612 761 30.57 47.78 + 822 628 794 28.00 49.00 + 823 640 806 27.00 50.00 + 824 657 695 35.68 51.32 + 825 787 754 31.05 61.47 + 826 903 711 34.42 70.47 + 827 843 751 31.31 65.85 + 828 661 829 25.25 51.57 + 829 709 829 25.25 55.33 + 830 700 839 24.42 54.65 + 831 3728 172 76.53 -68.75 + 832 989 786 28.58 77.20 + 833 1067 925 17.72 83.30 + 834 1372 599 43.20 107.17 + 835 1093 797 27.70 85.37 + 836 1462 866 22.32 114.17 + 837 1556 832 25.03 121.52 + 838 1483 1015 10.72 115.83 + 839 1624 671 37.55 126.80 + 840 1651 702 35.18 128.93 + 841 1810 631 40.70 141.37 + 842 1753 701 35.25 136.93 + 843 1790 697 35.55 139.78 + 844 1797 694 35.76 140.38 + 845 1735 708 34.68 135.53 + 846 1284 1084 5.30 100.27 + 847 1303 1117 2.75 101.72 + 848 1328 1134 1.38 103.72 + 849 1344 860 22.82 104.97 + 850 1355 883 21.02 105.80 + 851 1366 1013 10.82 106.67 + 852 1622 490 51.72 126.65 + 853 1491 642 39.80 116.47 + 854 1541 690 36.07 120.33 + 855 1332 759 30.67 104.02 + 856 1395 713 34.30 108.93 + 857 1458 710 34.52 113.83 + 858 1555 753 31.17 121.43 + 859 4412 794 27.93 -15.38 + 860 4510 722 33.57 -7.67 + 861 4506 747 31.62 -8.03 + 862 71 860 22.82 5.47 + 863 28 979 13.48 2.17 + 864 4570 938 16.72 -3.00 + 865 4384 963 14.73 -17.50 + 866 4393 981 13.35 -16.80 + 867 927 1245 -7.30 72.42 + 868 299 842 24.22 23.30 + 869 349 751 31.33 27.22 + 870 472 1168 -1.28 36.83 + 871 475 1196 -3.42 37.07 + 872 490 1215 -4.92 38.23 + 873 198 1208 -4.38 15.45 + 874 43 1068 6.58 3.33 + 875 4606 1080 5.60 -0.17 + 876 4512 1058 7.38 -7.53 + 877 4558 1085 5.25 -3.93 + 878 4476 1072 6.23 -10.37 + 879 170 1265 -8.85 13.23 + 880 398 1464 -24.37 31.05 + 881 239 1587 -33.97 18.60 + 882 2602 239 71.30 -156.78 + 883 2770 254 70.13 -143.63 + 884 2482 270 68.88 -166.13 + 885 2527 296 66.87 -162.63 + 886 2661 264 69.37 -152.13 + 887 2669 295 66.92 -151.52 + 888 2662 318 65.17 -152.10 + 889 2749 300 66.57 -145.27 + 890 2491 326 64.50 -165.43 + 891 2550 334 63.88 -160.80 + 892 2483 361 61.78 -166.03 + 893 2537 374 60.78 -161.80 + 894 2600 323 64.73 -156.93 + 895 2617 346 62.97 -155.62 + 896 2612 347 62.90 -155.98 + 897 2617 370 61.10 -155.58 + 898 2687 354 62.30 -150.10 + 899 2673 359 61.97 -151.18 + 900 2672 377 60.57 -151.25 + 901 2716 322 64.82 -147.87 + 902 2726 324 64.67 -147.10 + 903 2744 333 63.97 -145.70 + 904 2743 333 64.00 -145.73 + 905 2747 356 62.15 -145.45 + 906 2691 368 61.25 -149.80 + 907 2688 369 61.17 -150.02 + 908 2700 363 61.60 -149.08 + 909 2735 369 61.13 -146.35 + 910 2696 382 60.12 -149.45 + 911 2802 323 64.78 -141.15 + 912 2792 346 62.97 -141.93 + 913 2746 377 60.50 -145.50 + 914 2534 401 58.65 -162.07 + 915 2430 420 57.15 -170.22 + 916 2526 445 55.20 -162.73 + 917 2579 396 59.05 -158.52 + 918 2603 401 58.68 -156.65 + 919 2626 387 59.75 -154.92 + 920 2669 389 59.63 -151.50 + 921 2735 391 59.43 -146.33 + 922 2656 413 57.75 -152.50 + 923 2821 390 59.52 -139.67 + 924 2877 391 59.47 -135.30 + 925 2871 404 58.42 -135.73 + 926 2876 421 57.07 -135.35 + 927 2886 405 58.37 -134.58 + 928 2906 425 56.82 -132.97 + 929 2914 429 56.48 -132.37 + 930 2923 443 55.35 -131.70 + 931 2924 447 55.03 -131.57 + 932 2229 477 52.72 174.12 + 933 2347 488 51.88 -176.65 + 934 2447 474 52.95 -168.85 + 935 2477 462 53.90 -166.55 + 936 2931 487 51.93 -131.02 + 937 2986 316 65.28 -126.75 + 938 3005 230 72.00 -125.28 + 939 3105 432 56.23 -117.43 + 940 3081 176 76.23 -119.33 + 941 3315 424 56.87 -101.08 + 942 3356 438 55.75 -97.87 + 943 3568 271 68.78 -81.25 + 944 3811 96 82.50 -62.33 + 945 3042 524 49.03 -122.37 + 946 2978 503 50.68 -127.37 + 947 3148 466 53.55 -114.10 + 948 3155 470 53.30 -113.58 + 949 3219 459 54.13 -108.52 + 950 3185 508 50.27 -111.18 + 951 3277 469 53.33 -104.00 + 952 3693 552 46.90 -71.50 + 953 3851 543 47.57 -59.17 + 954 3080 513 49.95 -119.40 + 955 2944 404 58.42 -130.00 + 956 3585 599 43.17 -79.93 + 957 3580 595 43.47 -80.38 + 958 3796 577 44.88 -63.50 + 959 3778 576 44.98 -64.92 + 960 3773 592 43.72 -65.25 + 961 3184 310 65.77 -111.25 + 962 3546 611 42.27 -82.97 + 963 3840 590 43.93 -60.02 + 964 3796 581 44.63 -63.50 + 965 3762 590 43.87 -66.10 + 966 3765 572 45.32 -65.88 + 967 3570 601 43.03 -81.15 + 968 3589 593 43.67 -79.63 + 969 3619 564 45.95 -77.32 + 970 3664 570 45.47 -73.75 + 971 3661 567 45.68 -74.03 + 972 3640 572 45.32 -75.67 + 973 3605 586 44.23 -78.37 + 974 3593 576 44.97 -79.30 + 975 3570 579 44.75 -81.10 + 976 3758 565 45.83 -66.43 + 977 3781 562 46.12 -64.68 + 978 3800 559 46.28 -63.13 + 979 3840 561 46.17 -60.05 + 980 3695 553 46.80 -71.40 + 981 3636 558 46.38 -75.97 + 982 3613 537 48.05 -77.78 + 983 3592 558 46.37 -79.42 + 984 3523 538 47.97 -84.78 + 985 3567 530 48.57 -81.37 + 986 3484 483 52.23 -87.88 + 987 3465 533 48.37 -89.32 + 988 3029 529 48.65 -123.43 + 989 3934 542 47.62 -52.73 + 990 3910 525 48.95 -54.57 + 991 3874 522 49.22 -57.40 + 992 3760 509 50.22 -66.27 + 993 3859 531 48.53 -58.55 + 994 3835 469 53.32 -60.42 + 995 3655 515 49.77 -74.53 + 996 3666 464 53.75 -73.67 + 997 3496 515 49.78 -86.93 + 998 3576 496 51.27 -80.65 + 999 3577 495 51.28 -80.60 + 1000 3454 493 51.45 -90.20 + 1001 3458 463 53.83 -89.87 + 1002 3401 515 49.78 -94.37 + 1003 3364 513 49.90 -97.23 + 1004 3333 515 49.78 -99.65 + 1005 3307 452 54.68 -101.68 + 1006 3269 506 50.43 -104.67 + 1007 3243 484 52.17 -106.68 + 1008 3314 461 53.97 -101.10 + 1009 3256 471 53.22 -105.68 + 1010 3191 512 50.02 -110.72 + 1011 3165 517 49.63 -112.80 + 1012 3149 498 51.12 -114.02 + 1013 3127 517 49.62 -115.78 + 1014 3103 521 49.30 -117.63 + 1015 3032 522 49.18 -123.17 + 1016 3010 515 49.72 -124.90 + 1017 3038 462 53.88 -122.68 + 1018 3733 408 58.10 -68.42 + 1019 3609 404 58.45 -78.12 + 1020 3731 336 63.75 -68.53 + 1021 3404 400 58.75 -94.07 + 1022 3541 330 64.20 -83.37 + 1023 3509 128 79.98 -85.93 + 1024 3237 418 57.35 -107.13 + 1025 3393 195 74.72 -94.95 + 1026 3263 267 69.10 -105.12 + 1027 3380 329 64.30 -96.00 + 1028 3175 451 54.77 -112.02 + 1029 3176 384 60.02 -111.95 + 1030 3144 352 62.50 -114.40 + 1031 3039 399 58.83 -122.58 + 1032 3057 361 61.80 -121.20 + 1033 2960 382 60.12 -128.82 + 1034 2899 277 68.32 -133.53 + 1035 2880 375 60.72 -135.07 + 1036 2828 332 64.05 -139.13 + 1037 2819 287 67.57 -139.82 + 1038 3562 838 24.55 -81.75 + 1039 3571 835 24.73 -81.05 + 1040 3581 821 25.82 -80.28 + 1041 3581 820 25.90 -80.28 + 1042 3583 818 26.07 -80.15 + 1043 3579 824 25.65 -80.43 + 1044 3583 810 26.68 -80.12 + 1045 3582 817 26.20 -80.17 + 1046 3576 792 28.10 -80.65 + 1047 3579 798 27.65 -80.42 + 1048 3568 788 28.43 -81.32 + 1049 3571 778 29.18 -81.05 + 1050 3563 762 30.50 -81.69 + 1051 3560 765 30.22 -81.88 + 1052 3569 741 32.13 -81.19 + 1053 3576 739 32.22 -80.70 + 1054 3584 731 32.90 -80.03 + 1055 3554 797 27.70 -82.38 + 1056 3580 800 27.50 -80.37 + 1057 3561 812 26.58 -81.87 + 1058 3562 812 26.53 -81.75 + 1059 3552 794 27.97 -82.53 + 1060 3552 801 27.40 -82.55 + 1061 3550 795 27.92 -82.68 + 1062 3559 794 27.99 -82.02 + 1063 3545 773 29.62 -83.10 + 1064 3554 752 31.25 -82.40 + 1065 3566 752 31.25 -81.47 + 1066 3567 753 31.15 -81.37 + 1067 3529 763 30.38 -84.37 + 1068 3555 772 29.68 -82.27 + 1069 3526 725 33.36 -84.57 + 1070 3531 748 31.53 -84.18 + 1071 3543 758 30.78 -83.28 + 1072 3538 733 32.70 -83.65 + 1073 3559 725 33.37 -81.97 + 1074 3528 721 33.65 -84.42 + 1075 3527 720 33.78 -84.52 + 1076 3529 718 33.88 -84.30 + 1077 3521 771 29.73 -84.98 + 1078 3509 761 30.56 -85.92 + 1079 3493 762 30.47 -87.18 + 1080 3479 759 30.68 -88.25 + 1081 3481 760 30.63 -88.07 + 1082 3512 765 30.22 -85.68 + 1083 3523 738 32.33 -84.83 + 1084 3521 736 32.52 -84.93 + 1085 3503 738 32.30 -86.40 + 1086 3515 751 31.32 -85.45 + 1087 3498 722 33.57 -86.75 + 1088 3487 727 33.22 -87.62 + 1089 3510 722 33.58 -85.85 + 1090 3492 731 32.90 -87.25 + 1091 3414 771 29.78 -93.30 + 1092 3498 727 33.17 -86.77 + 1093 3454 779 29.10 -90.20 + 1094 3453 768 29.98 -90.25 + 1095 3432 768 30.03 -91.88 + 1096 3456 767 30.05 -90.03 + 1097 3442 761 30.53 -91.15 + 1098 3464 776 29.33 -89.40 + 1099 3459 764 30.33 -89.82 + 1100 3472 738 32.33 -88.75 + 1101 3465 749 31.47 -89.33 + 1102 3455 738 32.32 -90.08 + 1103 3444 723 33.48 -90.98 + 1104 3450 753 31.18 -90.47 + 1105 3455 723 33.50 -90.08 + 1106 3416 754 31.05 -93.20 + 1107 3415 766 30.12 -93.22 + 1108 3431 765 30.20 -91.98 + 1109 3405 769 29.95 -94.02 + 1110 3395 777 29.30 -94.80 + 1111 3388 768 29.97 -95.35 + 1112 3389 772 29.65 -95.28 + 1113 3375 760 30.58 -96.37 + 1114 3396 752 31.23 -94.75 + 1115 3387 738 32.34 -95.40 + 1116 3397 738 32.34 -94.65 + 1117 3408 736 32.47 -93.82 + 1118 3431 736 32.52 -92.03 + 1119 3427 750 31.40 -92.30 + 1120 3363 732 32.83 -97.30 + 1121 3361 820 25.90 -97.43 + 1122 3359 816 26.23 -97.65 + 1123 3351 817 26.18 -98.23 + 1124 3360 796 27.77 -97.50 + 1125 3354 797 27.73 -98.03 + 1126 3335 799 27.55 -99.47 + 1127 3386 779 29.12 -95.47 + 1128 3348 774 29.53 -98.47 + 1129 3358 764 30.30 -97.70 + 1130 3368 783 28.85 -96.92 + 1131 3364 747 31.62 -97.22 + 1132 3356 754 31.07 -97.83 + 1133 3369 732 32.84 -96.85 + 1134 3387 721 33.63 -95.45 + 1135 3367 731 32.90 -97.03 + 1136 3096 703 35.07 -118.15 + 1137 3362 732 32.82 -97.37 + 1138 3352 739 32.22 -98.18 + 1139 3317 776 29.37 -100.92 + 1140 3267 744 31.83 -104.80 + 1141 3322 750 31.37 -100.50 + 1142 3296 691 36.02 -102.55 + 1143 3277 763 30.37 -104.02 + 1144 3301 743 31.95 -102.18 + 1145 3288 745 31.78 -103.20 + 1146 3333 737 32.41 -99.68 + 1147 3305 721 33.65 -101.82 + 1148 3271 726 33.30 -104.53 + 1149 3274 738 32.33 -104.27 + 1150 3287 734 32.68 -103.22 + 1151 3249 739 32.24 -106.22 + 1152 3240 739 32.28 -106.92 + 1153 3247 745 31.80 -106.40 + 1154 3235 727 33.23 -107.27 + 1155 3230 739 32.27 -107.72 + 1156 3196 748 31.57 -110.33 + 1157 3206 749 31.47 -109.60 + 1158 3189 741 32.12 -110.93 + 1159 3175 724 33.43 -112.02 + 1160 3142 734 32.65 -114.60 + 1161 3103 716 34.05 -117.60 + 1162 3117 719 33.83 -116.50 + 1163 3094 714 34.20 -118.35 + 1164 3092 714 34.22 -118.48 + 1165 3064 701 35.23 -120.63 + 1166 3109 733 32.73 -117.17 + 1167 3111 735 32.57 -116.98 + 1168 3080 726 33.25 -119.45 + 1169 3093 724 33.40 -118.42 + 1170 3107 728 33.13 -117.28 + 1171 3109 731 32.85 -117.12 + 1172 3093 719 33.93 -118.40 + 1173 3096 719 33.82 -118.15 + 1174 3100 721 33.68 -117.87 + 1175 3611 713 34.27 -77.90 + 1176 3597 702 35.17 -79.02 + 1177 3599 704 34.98 -78.87 + 1178 3641 700 35.27 -75.55 + 1179 3625 707 34.78 -76.87 + 1180 3600 693 35.87 -78.78 + 1181 3618 696 35.64 -77.39 + 1182 3610 700 35.33 -77.97 + 1183 3611 693 35.84 -77.90 + 1184 3615 706 34.82 -77.61 + 1185 3686 681 36.82 -72.10 + 1186 3633 680 36.90 -76.19 + 1187 3629 677 37.13 -76.50 + 1188 3624 705 34.90 -76.88 + 1189 3622 703 35.07 -77.05 + 1190 3570 717 33.95 -81.12 + 1191 3588 714 34.18 -79.72 + 1192 3542 717 33.95 -83.32 + 1193 3554 706 34.84 -82.35 + 1194 3556 705 34.90 -82.22 + 1195 3550 710 34.50 -82.72 + 1196 3573 701 35.22 -80.93 + 1197 3567 695 35.73 -81.37 + 1198 3552 698 35.43 -82.55 + 1199 3585 690 36.08 -79.94 + 1200 3579 676 37.21 -80.41 + 1201 3554 685 36.48 -82.40 + 1202 3582 689 36.13 -80.22 + 1203 3518 712 34.35 -85.16 + 1204 3498 708 34.65 -86.77 + 1205 3487 707 34.75 -87.62 + 1206 3518 704 35.03 -85.20 + 1207 3534 693 35.82 -83.98 + 1208 3519 692 35.95 -85.08 + 1209 3499 689 36.13 -86.68 + 1210 3472 713 34.27 -88.77 + 1211 3456 703 35.05 -90.00 + 1212 3470 696 35.59 -88.92 + 1213 3428 706 34.83 -92.25 + 1214 3428 707 34.73 -92.23 + 1215 3448 693 35.83 -90.65 + 1216 3417 711 34.48 -93.10 + 1217 3432 714 34.18 -91.93 + 1218 3406 724 33.45 -93.98 + 1219 3421 727 33.22 -92.80 + 1220 3401 700 35.33 -94.37 + 1221 3403 691 36.00 -94.17 + 1222 3416 688 36.27 -93.15 + 1223 3425 689 36.20 -92.47 + 1224 3435 695 35.73 -91.65 + 1225 3432 680 36.88 -91.90 + 1226 3462 675 37.23 -89.57 + 1227 3405 679 36.91 -94.02 + 1228 3399 676 37.15 -94.50 + 1229 3348 717 33.98 -98.50 + 1230 3341 704 34.98 -99.05 + 1231 3339 700 35.33 -99.20 + 1232 3331 687 36.30 -99.77 + 1233 3359 699 35.40 -97.60 + 1234 3366 682 36.73 -97.10 + 1235 3349 709 34.60 -98.40 + 1236 3367 713 34.30 -97.02 + 1237 3381 689 36.20 -95.90 + 1238 3380 681 36.76 -96.01 + 1239 3383 705 34.88 -95.78 + 1240 3361 701 35.23 -97.47 + 1241 3288 685 36.45 -103.15 + 1242 3325 711 34.43 -100.28 + 1243 3216 697 35.52 -108.78 + 1244 3307 701 35.23 -101.70 + 1245 3243 744 31.87 -106.70 + 1246 3244 703 35.05 -106.62 + 1247 3251 696 35.62 -106.08 + 1248 3223 681 36.75 -108.23 + 1249 3282 702 35.18 -103.60 + 1250 3263 696 35.65 -105.15 + 1251 3150 700 35.27 -113.95 + 1252 3182 679 36.93 -111.45 + 1253 3169 710 34.53 -112.47 + 1254 3170 708 34.65 -112.42 + 1255 3191 704 35.02 -110.73 + 1256 3200 713 34.27 -110.00 + 1257 3208 710 34.51 -109.38 + 1258 3179 702 35.13 -111.67 + 1259 3177 701 35.23 -111.82 + 1260 3173 692 35.95 -112.15 + 1261 3141 707 34.77 -114.62 + 1262 3099 705 34.92 -117.90 + 1263 3114 706 34.84 -116.78 + 1264 3095 707 34.73 -118.22 + 1265 3097 709 34.63 -118.08 + 1266 3085 698 35.43 -119.05 + 1267 3134 690 36.08 -115.17 + 1268 3123 683 36.62 -116.02 + 1269 3076 681 36.77 -119.72 + 1270 3084 715 34.12 -119.12 + 1271 3075 711 34.43 -119.83 + 1272 3083 714 34.21 -119.20 + 1273 3065 707 34.75 -120.57 + 1274 3067 705 34.90 -120.45 + 1275 3064 695 35.66 -120.63 + 1276 3619 672 37.50 -77.33 + 1277 3604 664 38.13 -78.44 + 1278 3605 674 37.35 -78.43 + 1279 3642 666 37.93 -75.48 + 1280 3617 653 38.95 -77.44 + 1281 3617 662 38.27 -77.45 + 1282 3631 662 38.28 -76.40 + 1283 3642 661 38.33 -75.51 + 1284 3623 655 38.84 -77.03 + 1285 3627 650 39.18 -76.67 + 1286 3614 644 39.70 -77.73 + 1287 3630 648 39.33 -76.42 + 1288 3654 647 39.45 -74.57 + 1289 3648 648 39.37 -75.07 + 1290 3645 641 39.88 -75.25 + 1291 3648 639 40.08 -75.01 + 1292 3641 644 39.68 -75.60 + 1293 3651 636 40.28 -74.82 + 1294 3654 640 40.02 -74.60 + 1295 3656 630 40.80 -74.42 + 1296 3595 674 37.33 -79.19 + 1297 3593 684 36.57 -79.33 + 1298 3585 674 37.32 -79.97 + 1299 3587 666 37.95 -79.83 + 1300 3570 668 37.78 -81.12 + 1301 3569 674 37.30 -81.19 + 1302 3579 667 37.87 -80.40 + 1303 3564 661 38.37 -81.60 + 1304 3586 654 38.88 -79.85 + 1305 3582 649 39.30 -80.23 + 1306 3586 644 39.65 -79.92 + 1307 3610 648 39.40 -77.98 + 1308 3525 652 39.05 -84.67 + 1309 3526 665 38.03 -84.60 + 1310 3511 663 38.18 -85.73 + 1311 3542 671 37.59 -83.32 + 1312 3493 669 37.75 -87.16 + 1313 3508 667 37.91 -85.97 + 1314 3532 677 37.08 -84.08 + 1315 3552 661 38.37 -82.55 + 1316 3535 647 39.42 -83.83 + 1317 3496 662 38.25 -86.95 + 1318 3566 648 39.34 -81.43 + 1319 3576 638 40.18 -80.65 + 1320 3548 640 40.00 -82.88 + 1321 3547 642 39.82 -82.93 + 1322 3560 641 39.95 -81.90 + 1323 3531 641 39.90 -84.20 + 1324 3528 652 39.09 -84.42 + 1325 3488 665 38.05 -87.53 + 1326 3470 657 38.65 -88.97 + 1327 3466 668 37.78 -89.25 + 1328 3452 656 38.75 -90.37 + 1329 3448 657 38.66 -90.65 + 1330 3472 677 37.07 -88.77 + 1331 3525 678 37.05 -84.61 + 1332 3491 647 39.45 -87.32 + 1333 3500 651 39.15 -86.62 + 1334 3504 643 39.73 -86.27 + 1335 3496 635 40.41 -86.93 + 1336 3461 642 39.84 -89.67 + 1337 3441 641 39.95 -91.20 + 1338 3470 634 40.48 -88.92 + 1339 3487 638 40.12 -87.60 + 1340 3413 675 37.23 -93.38 + 1341 3428 655 38.82 -92.22 + 1342 3451 668 37.77 -90.43 + 1343 3434 664 38.13 -91.77 + 1344 3424 664 38.10 -92.55 + 1345 3396 649 39.32 -94.72 + 1346 3398 651 39.12 -94.60 + 1347 3394 655 38.83 -94.89 + 1348 3394 643 39.77 -94.92 + 1349 3361 670 37.65 -97.43 + 1350 3356 665 38.07 -97.87 + 1351 3386 670 37.66 -95.48 + 1352 3363 665 38.06 -97.28 + 1353 3329 668 37.77 -99.97 + 1354 3319 666 37.93 -100.72 + 1355 3316 678 37.04 -100.97 + 1356 3343 661 38.34 -98.86 + 1357 3338 655 38.85 -99.27 + 1358 3347 675 37.27 -98.55 + 1359 3371 651 39.13 -96.67 + 1360 3377 661 38.33 -96.19 + 1361 3385 652 39.07 -95.62 + 1362 3384 653 38.95 -95.67 + 1363 3359 646 39.55 -97.65 + 1364 3344 654 38.87 -98.82 + 1365 3359 655 38.80 -97.65 + 1366 3304 678 37.01 -101.88 + 1367 3253 673 37.45 -105.87 + 1368 3229 676 37.15 -107.75 + 1369 3227 666 37.95 -107.90 + 1370 3283 665 38.05 -103.52 + 1371 3294 665 38.07 -102.68 + 1372 3271 662 38.28 -104.52 + 1373 3307 648 39.37 -101.70 + 1374 3331 648 39.38 -99.83 + 1375 3268 655 38.82 -104.72 + 1376 3266 645 39.57 -104.85 + 1377 3240 644 39.65 -106.92 + 1378 3241 650 39.22 -106.87 + 1379 3240 659 38.53 -106.93 + 1380 3267 657 38.70 -104.77 + 1381 3266 643 39.75 -104.87 + 1382 3287 638 40.17 -103.22 + 1383 3263 641 39.91 -105.12 + 1384 3191 645 39.62 -110.75 + 1385 3207 670 37.62 -109.47 + 1386 3191 661 38.37 -110.72 + 1387 3156 678 37.04 -113.50 + 1388 3161 669 37.70 -113.10 + 1389 3173 669 37.70 -112.15 + 1390 3219 651 39.12 -108.53 + 1391 3227 659 38.50 -107.90 + 1392 3218 674 37.30 -108.67 + 1393 3269 634 40.43 -104.63 + 1394 3264 634 40.45 -105.01 + 1395 3198 653 39.00 -110.17 + 1396 3204 656 38.76 -109.75 + 1397 3167 648 39.33 -112.58 + 1398 3177 617 41.78 -111.85 + 1399 3093 674 37.37 -118.37 + 1400 3066 675 37.28 -120.52 + 1401 3053 659 38.52 -121.50 + 1402 3056 658 38.55 -121.30 + 1403 3052 657 38.70 -121.58 + 1404 3110 665 38.05 -117.08 + 1405 3090 658 38.55 -118.63 + 1406 3138 649 39.28 -114.85 + 1407 3143 670 37.62 -114.52 + 1408 3075 646 39.50 -119.78 + 1409 3075 645 39.57 -119.79 + 1410 3049 684 36.58 -121.85 + 1411 3052 683 36.66 -121.60 + 1412 3056 667 37.90 -121.25 + 1413 3049 669 37.70 -121.82 + 1414 3044 669 37.73 -122.22 + 1415 3042 670 37.62 -122.38 + 1416 3048 674 37.37 -121.93 + 1417 3036 659 38.52 -122.82 + 1418 3676 629 40.87 -72.86 + 1419 3659 631 40.70 -74.17 + 1420 3660 629 40.84 -74.07 + 1421 3663 630 40.77 -73.90 + 1422 3673 630 40.80 -73.10 + 1423 3663 619 41.63 -73.87 + 1424 3665 626 41.07 -73.69 + 1425 3660 621 41.50 -74.10 + 1426 3673 625 41.17 -73.12 + 1427 3676 624 41.27 -72.87 + 1428 3686 623 41.33 -72.05 + 1429 3692 625 41.17 -71.58 + 1430 3706 619 41.65 -70.52 + 1431 3712 625 41.25 -70.07 + 1432 3703 615 41.92 -70.73 + 1433 3700 618 41.68 -70.97 + 1434 3709 619 41.67 -70.28 + 1435 3694 618 41.73 -71.43 + 1436 3694 619 41.60 -71.42 + 1437 3678 615 41.93 -72.68 + 1438 3685 618 41.73 -72.18 + 1439 3683 607 42.57 -72.27 + 1440 3679 618 41.73 -72.65 + 1441 3701 607 42.58 -70.92 + 1442 3699 610 42.37 -71.03 + 1443 3689 611 42.27 -71.87 + 1444 3636 635 40.38 -75.97 + 1445 3626 637 40.20 -76.76 + 1446 3632 638 40.12 -76.29 + 1447 3599 625 41.18 -78.90 + 1448 3606 636 40.30 -78.32 + 1449 3599 636 40.32 -78.83 + 1450 3612 629 40.84 -77.85 + 1451 3639 623 41.33 -75.73 + 1452 3624 624 41.25 -76.92 + 1453 3651 618 41.70 -74.80 + 1454 3636 611 42.22 -75.98 + 1455 3630 608 42.48 -76.44 + 1456 3624 612 42.17 -76.90 + 1457 3675 595 43.53 -72.95 + 1458 3643 632 40.65 -75.43 + 1459 3664 605 42.75 -73.80 + 1460 3666 597 43.33 -73.62 + 1461 3642 580 44.68 -75.47 + 1462 3634 600 43.12 -76.12 + 1463 3644 600 43.15 -75.37 + 1464 3582 633 40.50 -80.22 + 1465 3579 630 40.77 -80.40 + 1466 3585 636 40.34 -79.93 + 1467 3592 636 40.28 -79.40 + 1468 3566 628 40.91 -81.43 + 1469 3594 612 42.15 -79.26 + 1470 3561 622 41.42 -81.87 + 1471 3552 629 40.82 -82.52 + 1472 3576 624 41.27 -80.67 + 1473 3582 613 42.08 -80.18 + 1474 3602 617 41.80 -78.62 + 1475 3586 622 41.38 -79.87 + 1476 3601 602 42.93 -78.73 + 1477 3598 600 43.10 -78.94 + 1478 3614 600 43.12 -77.67 + 1479 3483 615 41.98 -87.90 + 1480 3479 615 41.92 -88.25 + 1481 3479 640 40.03 -88.28 + 1482 3471 642 39.83 -88.87 + 1483 3461 631 40.66 -89.68 + 1484 3461 618 41.74 -89.68 + 1485 3518 627 41.00 -85.20 + 1486 3515 637 40.25 -85.40 + 1487 3490 619 41.62 -87.42 + 1488 3485 617 41.78 -87.75 + 1489 3487 616 41.87 -87.60 + 1490 3484 609 42.42 -87.87 + 1491 3504 618 41.70 -86.32 + 1492 3536 619 41.60 -83.80 + 1493 3538 627 41.02 -83.67 + 1494 3542 611 42.23 -83.33 + 1495 3546 609 42.42 -83.02 + 1496 3552 603 42.92 -82.53 + 1497 3483 545 47.45 -87.90 + 1498 3526 604 42.77 -84.60 + 1499 3527 611 42.27 -84.47 + 1500 3517 610 42.30 -85.25 + 1501 3468 612 42.20 -89.10 + 1502 3450 621 41.45 -90.52 + 1503 3435 616 41.88 -91.70 + 1504 3442 630 40.78 -91.13 + 1505 3410 620 41.53 -93.65 + 1506 3425 626 41.10 -92.45 + 1507 3387 630 40.75 -95.41 + 1508 3448 609 42.40 -90.70 + 1509 3434 598 43.28 -91.74 + 1510 3426 607 42.55 -92.40 + 1511 3414 600 43.15 -93.33 + 1512 3403 607 42.55 -94.20 + 1513 3390 607 42.60 -95.23 + 1514 3381 623 41.30 -95.90 + 1515 3370 629 40.84 -96.75 + 1516 3370 636 40.30 -96.75 + 1517 3350 627 40.97 -98.32 + 1518 3342 619 41.62 -98.95 + 1519 3341 631 40.73 -99.00 + 1520 3377 617 41.76 -96.18 + 1521 3385 639 40.08 -95.60 + 1522 3333 621 41.44 -99.64 + 1523 3361 615 41.98 -97.43 + 1524 3363 621 41.45 -97.34 + 1525 3345 608 42.47 -98.69 + 1526 3375 609 42.40 -96.38 + 1527 3375 623 41.32 -96.37 + 1528 3290 626 41.10 -102.98 + 1529 3320 625 41.13 -100.68 + 1530 3308 633 40.51 -101.62 + 1531 3337 634 40.45 -99.33 + 1532 3293 614 42.05 -102.80 + 1533 3289 604 42.83 -103.10 + 1534 3267 625 41.15 -104.82 + 1535 3256 623 41.32 -105.67 + 1536 3269 642 39.87 -104.67 + 1537 3282 616 41.87 -103.60 + 1538 3246 603 42.92 -106.47 + 1539 3207 634 40.43 -109.52 + 1540 3236 634 40.48 -107.22 + 1541 3230 646 39.53 -107.73 + 1542 3175 630 40.78 -111.97 + 1543 3178 637 40.22 -111.72 + 1544 3212 619 41.60 -109.07 + 1545 3236 617 41.80 -107.20 + 1546 3175 625 41.20 -112.02 + 1547 3217 604 42.82 -108.73 + 1548 3220 601 43.07 -108.47 + 1549 3187 624 41.28 -111.03 + 1550 3191 594 43.60 -110.73 + 1551 3167 603 42.92 -112.60 + 1552 3174 595 43.52 -112.07 + 1553 3122 577 44.88 -116.10 + 1554 3091 639 40.07 -118.57 + 1555 3149 631 40.73 -114.03 + 1556 3127 629 40.87 -115.73 + 1557 3127 629 40.83 -115.78 + 1558 3127 619 41.67 -115.78 + 1559 3101 628 40.90 -117.80 + 1560 3065 635 40.38 -120.57 + 1561 3064 649 39.28 -120.70 + 1562 3071 649 39.32 -120.13 + 1563 3072 654 38.90 -120.00 + 1564 3145 595 43.50 -114.30 + 1565 3143 608 42.48 -114.48 + 1566 3152 607 42.55 -113.77 + 1567 3050 612 42.15 -121.73 + 1568 3032 651 39.13 -123.20 + 1569 3044 638 40.15 -122.25 + 1570 3043 633 40.50 -122.30 + 1571 3020 627 40.98 -124.10 + 1572 3018 617 41.78 -124.23 + 1573 3066 621 41.50 -120.53 + 1574 3036 610 42.37 -122.87 + 1575 3693 599 43.20 -71.50 + 1576 3702 600 43.08 -70.82 + 1577 3708 593 43.65 -70.32 + 1578 3703 596 43.40 -70.72 + 1579 3733 583 44.45 -68.37 + 1580 3724 588 44.07 -69.10 + 1581 3751 577 44.92 -67.00 + 1582 3734 547 47.28 -68.32 + 1583 3727 578 44.80 -68.83 + 1584 3680 597 43.35 -72.52 + 1585 3683 593 43.63 -72.30 + 1586 3693 584 44.36 -71.55 + 1587 3687 583 44.42 -72.02 + 1588 3680 586 44.20 -72.57 + 1589 3694 594 43.57 -71.42 + 1590 3697 581 44.58 -71.18 + 1591 3683 603 42.90 -72.27 + 1592 3672 583 44.47 -73.15 + 1593 3706 582 44.53 -70.53 + 1594 3709 588 44.05 -70.28 + 1595 3715 585 44.32 -69.80 + 1596 3718 570 45.47 -69.58 + 1597 3729 568 45.65 -68.68 + 1598 3668 580 44.65 -73.47 + 1599 3650 577 44.93 -74.85 + 1600 3636 589 44.00 -76.01 + 1601 3659 584 44.38 -74.19 + 1602 3540 605 42.70 -83.47 + 1603 3524 577 44.90 -84.72 + 1604 3514 603 42.88 -85.52 + 1605 3502 612 42.14 -86.44 + 1606 3513 611 42.23 -85.55 + 1607 3504 599 43.17 -86.25 + 1608 3536 602 42.97 -83.75 + 1609 3541 606 42.67 -83.42 + 1610 3532 595 43.53 -84.08 + 1611 3525 584 44.36 -84.67 + 1612 3515 585 44.28 -85.42 + 1613 3504 585 44.28 -86.25 + 1614 3513 579 44.73 -85.58 + 1615 3539 575 45.07 -83.57 + 1616 3541 583 44.45 -83.40 + 1617 3483 602 42.95 -87.90 + 1618 3465 600 43.13 -89.33 + 1619 3469 606 42.62 -89.04 + 1620 3454 599 43.21 -90.18 + 1621 3440 590 43.87 -91.25 + 1622 3438 578 44.87 -91.48 + 1623 3424 590 43.92 -92.50 + 1624 3480 583 44.48 -88.13 + 1625 3486 587 44.13 -87.68 + 1626 3475 589 43.98 -88.55 + 1627 3461 577 44.93 -89.63 + 1628 3461 579 44.78 -89.67 + 1629 3494 567 45.73 -87.08 + 1630 3487 574 45.12 -87.63 + 1631 3411 578 44.85 -93.57 + 1632 3370 594 43.58 -96.73 + 1633 3369 585 44.31 -96.82 + 1634 3362 603 42.92 -97.38 + 1635 3337 591 43.80 -99.32 + 1636 3351 584 44.38 -98.22 + 1637 3354 592 43.77 -98.03 + 1638 3365 577 44.92 -97.15 + 1639 3404 569 45.55 -94.07 + 1640 3404 558 46.40 -94.13 + 1641 3391 582 44.55 -95.08 + 1642 3387 565 45.87 -95.40 + 1643 3382 583 44.45 -95.82 + 1644 3399 585 44.32 -94.50 + 1645 3401 564 45.95 -94.35 + 1646 3415 577 44.88 -93.22 + 1647 3417 577 44.95 -93.07 + 1648 3406 586 44.22 -93.91 + 1649 3400 593 43.65 -94.42 + 1650 3413 593 43.68 -93.37 + 1651 3349 570 45.45 -98.43 + 1652 3289 588 44.06 -103.05 + 1653 3258 584 44.35 -105.53 + 1654 3239 579 44.77 -106.97 + 1655 3195 582 44.54 -110.42 + 1656 3227 589 43.97 -107.95 + 1657 3259 570 45.45 -105.40 + 1658 3267 549 47.13 -104.80 + 1659 3323 569 45.55 -100.41 + 1660 3325 584 44.38 -100.28 + 1661 3301 564 45.93 -102.17 + 1662 3213 582 44.52 -109.02 + 1663 3199 607 42.58 -110.11 + 1664 3186 580 44.68 -111.12 + 1665 3219 566 45.80 -108.53 + 1666 3207 550 47.05 -109.47 + 1667 3168 564 45.95 -112.50 + 1668 3168 573 45.25 -112.55 + 1669 3186 566 45.78 -111.15 + 1670 3195 567 45.70 -110.45 + 1671 3121 594 43.57 -116.22 + 1672 3086 594 43.58 -118.95 + 1673 3058 585 44.25 -121.15 + 1674 3151 574 45.12 -113.88 + 1675 3122 564 45.95 -116.13 + 1676 3087 567 45.68 -118.85 + 1677 3100 578 44.83 -117.82 + 1678 3030 599 43.23 -123.35 + 1679 3018 596 43.42 -124.25 + 1680 3031 587 44.12 -123.22 + 1681 3034 577 44.92 -123.00 + 1682 3021 581 44.58 -124.06 + 1683 3039 568 45.60 -122.60 + 1684 3042 569 45.55 -122.40 + 1685 3035 569 45.53 -122.95 + 1686 3058 568 45.62 -121.17 + 1687 3741 562 46.12 -67.80 + 1688 3719 555 46.62 -69.53 + 1689 3738 552 46.87 -68.01 + 1690 3737 554 46.68 -68.05 + 1691 3529 557 46.47 -84.37 + 1692 3527 560 46.25 -84.47 + 1693 3523 569 45.57 -84.80 + 1694 3463 568 45.63 -89.47 + 1695 3488 556 46.53 -87.55 + 1696 3490 559 46.35 -87.40 + 1697 3481 565 45.82 -88.12 + 1698 3476 548 47.17 -88.50 + 1699 3455 556 46.53 -90.13 + 1700 3429 552 46.83 -92.18 + 1701 3420 545 47.38 -92.83 + 1702 3381 552 46.83 -95.89 + 1703 3433 540 47.82 -91.83 + 1704 3413 530 48.57 -93.38 + 1705 3397 528 48.73 -94.62 + 1706 3369 552 46.90 -96.80 + 1707 3345 551 46.93 -98.68 + 1708 3393 544 47.50 -94.93 + 1709 3388 526 48.93 -95.33 + 1710 3365 538 47.95 -97.18 + 1711 3343 536 48.10 -98.87 + 1712 3319 553 46.77 -100.75 + 1713 3293 553 46.80 -102.80 + 1714 3282 535 48.18 -103.63 + 1715 3312 534 48.27 -101.28 + 1716 3310 542 47.65 -101.43 + 1717 3244 535 48.22 -106.62 + 1718 3240 546 47.33 -106.93 + 1719 3257 536 48.10 -105.58 + 1720 3275 541 47.70 -104.20 + 1721 3175 555 46.60 -112.00 + 1722 3148 551 46.92 -114.08 + 1723 3183 544 47.48 -111.37 + 1724 3203 530 48.55 -109.77 + 1725 3146 534 48.30 -114.27 + 1726 3170 530 48.60 -112.37 + 1727 3066 556 46.57 -120.53 + 1728 3055 547 47.28 -121.33 + 1729 3072 545 47.40 -120.02 + 1730 3070 545 47.40 -120.20 + 1731 3079 546 47.30 -119.52 + 1732 3081 548 47.20 -119.32 + 1733 3111 558 46.38 -117.02 + 1734 3113 540 47.77 -116.82 + 1735 3082 559 46.32 -119.27 + 1736 3084 560 46.27 -119.12 + 1737 3095 562 46.10 -118.28 + 1738 3104 542 47.63 -117.53 + 1739 3107 542 47.68 -117.32 + 1740 3109 553 46.75 -117.12 + 1741 3103 541 47.70 -117.60 + 1742 3100 530 48.55 -117.88 + 1743 3066 550 47.03 -120.53 + 1744 3028 536 48.12 -123.50 + 1745 3079 532 48.42 -119.53 + 1746 3023 561 46.15 -123.88 + 1747 3035 551 46.97 -122.90 + 1748 3022 551 46.97 -123.93 + 1749 3035 562 46.12 -122.94 + 1750 3043 545 47.45 -122.30 + 1751 3044 544 47.50 -122.22 + 1752 3043 543 47.53 -122.30 + 1753 3043 539 47.90 -122.28 + 1754 3039 547 47.27 -122.58 + 1755 3567 798 27.65 -81.33 + 1756 3014 538 47.95 -124.55 + 1757 3040 527 48.80 -122.53 + 1758 3163 638 40.17 -112.93 + 1759 3253 558 46.43 -105.87 + 1760 3387 580 44.67 -95.45 + 1761 3450 599 43.22 -90.53 + 1762 3639 588 44.05 -75.73 + 1763 3709 590 43.90 -70.25 + 1764 3694 602 42.93 -71.43 + 1765 3249 616 41.90 -106.19 + 1766 3320 639 40.09 -100.65 + 1767 3307 603 42.91 -101.69 + 1768 3363 639 40.10 -97.34 + 1769 3357 612 42.21 -97.79 + 1770 3409 616 41.90 -93.70 + 1771 3449 619 41.61 -90.57 + 1772 3533 642 39.82 -84.03 + 1773 3476 617 41.77 -88.48 + 1774 3494 630 40.81 -87.05 + 1775 3515 655 38.83 -85.42 + 1776 3664 632 40.65 -73.78 + 1777 3696 608 42.47 -71.28 + 1778 3698 605 42.72 -71.12 + 1779 3680 612 42.20 -72.53 + 1780 3678 612 42.15 -72.72 + 1781 3714 619 41.67 -69.97 + 1782 3662 603 42.85 -73.93 + 1783 3301 668 37.77 -102.18 + 1784 3267 653 38.97 -104.82 + 1785 3281 649 39.26 -103.70 + 1786 3268 638 40.18 -104.72 + 1787 3340 670 37.65 -99.09 + 1788 3384 673 37.38 -95.63 + 1789 3363 662 38.31 -97.30 + 1790 3422 672 37.52 -92.70 + 1791 3403 645 39.58 -94.19 + 1792 3450 644 39.66 -90.48 + 1793 3465 638 40.15 -89.33 + 1794 3650 652 39.02 -74.92 + 1795 3102 695 35.68 -117.68 + 1796 3247 737 32.41 -106.35 + 1797 3227 680 36.84 -107.91 + 1798 3338 690 36.07 -99.22 + 1799 3335 686 36.43 -99.53 + 1800 3361 682 36.69 -97.48 + 1801 3381 695 35.68 -95.86 + 1802 3360 704 34.98 -97.52 + 1803 3457 680 36.88 -89.97 + 1804 3502 679 36.97 -86.42 + 1805 3633 688 36.27 -76.18 + 1806 3129 732 32.83 -115.58 + 1807 3122 721 33.63 -116.17 + 1808 3140 722 33.62 -114.72 + 1809 3282 703 35.08 -103.61 + 1810 3250 728 33.08 -106.12 + 1811 3247 731 32.90 -106.40 + 1812 3316 729 33.02 -100.98 + 1813 3331 762 30.50 -99.77 + 1814 3383 745 31.78 -95.71 + 1815 3402 715 34.11 -94.29 + 1816 3421 744 31.90 -92.78 + 1817 3468 763 30.40 -89.07 + 1818 3471 716 34.09 -88.86 + 1819 3564 744 31.90 -81.63 + 1820 3546 757 30.89 -83.01 + 1821 3578 717 33.97 -80.47 + 1822 3598 721 33.68 -78.93 + 1823 3601 719 33.82 -78.72 + 1824 3577 788 28.47 -80.55 + 1825 3111 735 32.55 -116.97 + 1826 3133 734 32.63 -115.24 + 1827 3246 747 31.63 -106.43 + 1828 3094 782 28.88 -118.30 + 1829 3188 780 29.07 -110.97 + 1830 3252 785 28.70 -105.97 + 1831 3171 802 27.32 -112.30 + 1832 3189 794 27.97 -110.93 + 1833 3190 794 27.95 -110.80 + 1834 3334 801 27.43 -99.57 + 1835 3351 819 26.02 -98.23 + 1836 3284 825 25.53 -103.45 + 1837 3326 821 25.87 -100.20 + 1838 3327 822 25.78 -100.10 + 1839 3360 822 25.77 -97.53 + 1840 3195 843 24.17 -110.42 + 1841 3196 844 24.07 -110.37 + 1842 3204 856 23.15 -109.70 + 1843 3234 834 24.82 -107.40 + 1844 3271 843 24.13 -104.53 + 1845 3246 855 23.20 -106.42 + 1846 3248 855 23.17 -106.27 + 1847 3340 848 23.73 -99.13 + 1848 3342 848 23.72 -98.97 + 1849 3294 859 22.90 -102.68 + 1850 3316 868 22.15 -100.98 + 1851 3356 867 22.28 -97.87 + 1852 3299 872 21.88 -102.30 + 1853 3497 883 21.03 -86.87 + 1854 3261 887 20.68 -105.25 + 1855 3286 889 20.52 -103.32 + 1856 3461 883 20.98 -89.65 + 1857 3496 889 20.53 -86.93 + 1858 3270 907 19.15 -104.57 + 1859 3315 898 19.85 -101.03 + 1860 3334 904 19.35 -99.57 + 1861 3340 903 19.43 -99.10 + 1862 3377 907 19.15 -96.18 + 1863 3398 920 18.10 -94.58 + 1864 3433 913 18.65 -91.80 + 1865 3310 927 17.60 -101.47 + 1866 3330 937 16.83 -99.92 + 1867 3332 937 16.77 -99.75 + 1868 3376 950 15.78 -96.27 + 1869 3426 963 14.78 -92.38 + 1870 3781 738 32.37 -64.68 + 1871 3598 810 26.70 -78.97 + 1872 3601 812 26.55 -78.69 + 1873 3593 823 25.73 -79.30 + 1874 3617 831 25.05 -77.47 + 1875 3639 851 23.50 -75.76 + 1876 3549 873 21.83 -82.78 + 1877 3554 858 22.98 -82.40 + 1878 3568 856 23.13 -81.28 + 1879 3612 878 21.42 -77.85 + 1880 3621 892 20.33 -77.12 + 1881 3628 891 20.40 -76.62 + 1882 3638 896 19.96 -75.85 + 1883 3647 895 20.08 -75.15 + 1884 3655 891 20.35 -74.50 + 1885 3650 888 20.65 -74.92 + 1886 3565 875 21.62 -81.55 + 1887 3600 873 21.78 -78.78 + 1888 3624 884 20.95 -76.94 + 1889 3647 897 19.90 -75.12 + 1890 3567 905 19.28 -81.35 + 1891 3611 915 18.50 -77.92 + 1892 3626 922 17.93 -76.78 + 1893 3685 899 19.75 -72.18 + 1894 3683 914 18.57 -72.30 + 1895 3705 899 19.75 -70.55 + 1896 3704 903 19.46 -70.69 + 1897 3733 914 18.57 -68.37 + 1898 3717 916 18.43 -69.67 + 1899 3714 916 18.47 -69.88 + 1900 3749 915 18.50 -67.12 + 1901 3749 918 18.27 -67.15 + 1902 3756 921 18.02 -66.57 + 1903 3764 916 18.43 -66.00 + 1904 3777 917 18.33 -64.97 + 1905 3779 925 17.70 -64.80 + 1906 3783 916 18.45 -64.53 + 1907 3478 928 17.53 -88.30 + 1908 3458 935 16.92 -89.88 + 1909 3438 956 15.32 -91.47 + 1910 3474 951 15.72 -88.60 + 1911 3450 965 14.58 -90.52 + 1912 3446 974 13.92 -90.82 + 1913 3459 978 13.57 -89.83 + 1914 3468 977 13.70 -89.12 + 1915 3469 980 13.43 -89.05 + 1916 3486 982 13.28 -87.67 + 1917 3509 941 16.46 -85.92 + 1918 3501 943 16.32 -86.53 + 1919 3497 951 15.73 -86.87 + 1920 3489 951 15.72 -87.48 + 1921 3493 958 15.17 -87.12 + 1922 3483 954 15.45 -87.93 + 1923 3536 957 15.22 -83.80 + 1924 3509 961 14.90 -85.93 + 1925 3472 963 14.78 -88.78 + 1926 3480 969 14.33 -88.17 + 1927 3492 972 14.05 -87.22 + 1928 3493 982 13.30 -87.18 + 1929 3541 972 14.05 -83.37 + 1930 3506 996 12.15 -86.17 + 1931 3523 1024 9.97 -84.78 + 1932 3530 1024 10.00 -84.22 + 1933 3531 1025 9.95 -84.15 + 1934 3545 1024 10.00 -83.05 + 1935 3513 1016 10.60 -85.55 + 1936 3552 1031 9.43 -82.52 + 1937 3593 1036 9.05 -79.37 + 1938 3554 1045 8.39 -82.42 + 1939 3556 1032 9.35 -82.25 + 1940 3572 1049 8.08 -80.94 + 1941 3591 1037 8.97 -79.51 + 1942 3801 919 18.20 -63.05 + 1943 3813 938 16.75 -62.17 + 1944 3806 931 17.29 -62.68 + 1945 3807 932 17.20 -62.58 + 1946 3818 933 17.12 -61.78 + 1947 3801 921 18.04 -63.12 + 1948 3802 928 17.48 -62.98 + 1949 3804 923 17.90 -62.85 + 1950 3821 944 16.27 -61.52 + 1951 3824 953 15.53 -61.30 + 1952 3823 953 15.53 -61.40 + 1953 3823 956 15.30 -61.40 + 1954 3847 985 13.07 -59.48 + 1955 3712 992 12.50 -70.01 + 1956 3726 996 12.20 -68.97 + 1957 3735 996 12.15 -68.28 + 1958 3562 991 12.58 -81.72 + 1959 3658 1010 11.13 -74.23 + 1960 3642 1018 10.45 -75.52 + 1961 3651 1012 10.90 -74.77 + 1962 3672 1061 7.10 -73.20 + 1963 3641 1072 6.22 -75.60 + 1964 3643 1073 6.18 -75.43 + 1965 3638 1090 4.82 -75.80 + 1966 3660 1092 4.70 -74.13 + 1967 3690 1017 10.57 -71.73 + 1968 3751 1016 10.60 -66.98 + 1969 3832 1188 -2.83 -60.70 + 1970 3988 1170 -1.43 -48.48 + 1971 3841 1192 -3.15 -59.98 + 1972 4115 1200 -3.78 -38.53 + 1973 3979 1223 -5.53 -49.15 + 1974 4060 1217 -5.05 -42.82 + 1975 4157 1228 -5.92 -35.25 + 1976 4095 1253 -7.88 -40.08 + 1977 3791 1263 -8.70 -63.90 + 1978 3978 1258 -8.27 -49.28 + 1979 4041 1268 -9.07 -44.37 + 1980 3989 1289 -10.70 -48.40 + 1981 4115 1318 -13.00 -38.52 + 1982 3890 1352 -15.65 -56.10 + 1983 4005 1446 -23.00 -47.13 + 1984 3980 1438 -22.32 -49.07 + 1985 4056 1445 -22.90 -43.17 + 1986 4011 1454 -23.62 -46.65 + 1987 3953 1537 -30.08 -51.18 + 1988 3461 1164 -0.90 -89.62 + 1989 3606 1154 -0.12 -78.35 + 1990 3586 1180 -2.15 -79.88 + 1991 3596 1255 -8.08 -79.12 + 1992 3623 1306 -12.02 -77.03 + 1993 3779 1341 -14.75 -64.80 + 1994 3736 1363 -16.50 -68.17 + 1995 3703 1579 -33.38 -70.78 + 1996 3697 1600 -34.97 -71.22 + 1997 3874 1474 -25.16 -57.38 + 1998 3853 1503 -27.45 -59.05 + 1999 3831 1573 -32.92 -60.78 + 2000 3859 1598 -34.82 -58.53 + 2001 3745 1738 -45.78 -67.45 + 2002 2569 871 21.98 -159.35 + 2003 2585 879 21.32 -158.07 + 2004 2587 879 21.35 -157.93 + 2005 2598 881 21.15 -157.10 + 2006 2606 884 20.90 -156.43 + 2007 1854 981 13.35 144.80 + 2008 1866 958 15.12 145.73 + 2009 2134 905 19.28 166.65 + 2010 2624 900 19.72 -155.07 + 2011 1944 1056 7.47 151.85 + 2012 2026 1063 6.97 158.22 + 2013 2087 1084 5.33 163.03 + 2014 2147 1040 8.73 167.73 + 2015 2194 1061 7.08 171.38 + 2016 1722 1058 7.33 134.48 + 2017 1768 1031 9.48 138.08 + 2018 1859 970 14.20 145.20 + 2019 1864 960 15.00 145.60 + 2020 1865 911 18.80 145.70 + 2021 1725 1048 8.10 134.70 + 2022 1693 1084 5.30 132.20 + 2023 1760 1046 8.30 137.50 + 2024 1790 1024 10.00 139.80 + 2025 1799 1027 9.80 140.50 + 2026 1727 1057 7.40 134.90 + 2027 1851 1042 8.60 144.60 + 2028 1883 1057 7.40 147.10 + 2029 1910 1057 7.40 149.20 + 2030 1917 1042 8.60 149.70 + 2031 1945 1042 8.60 151.90 + 2032 1955 1064 6.90 152.70 + 2033 1969 1082 5.50 153.80 + 2034 1984 1103 3.80 155.00 + 2035 2014 1078 5.80 157.30 + 2036 2022 1062 7.00 157.90 + 2037 2046 1065 6.80 159.80 + 2038 2057 1073 6.20 160.70 + 2039 2080 1001 11.80 162.50 + 2040 2121 1038 8.90 165.70 + 2041 2161 1059 7.30 168.80 + 2042 2171 1076 5.90 169.60 + 2043 2174 1009 11.20 169.80 + 2044 2179 1030 9.50 170.20 + 2045 2200 1074 6.10 171.80 + 2046 2804 1383 -18.07 -140.95 + 2047 2238 1626 -37.02 174.80 + 2048 1676 1311 -12.42 130.87 + 2049 1955 1506 -27.63 152.72 + 2050 1485 1561 -31.92 115.97 + 2051 1936 1587 -33.95 151.18 + 2052 1854 1634 -37.67 144.83 + 2053 1907 1605 -35.40 148.98 + 2054 1888 1700 -42.83 147.50 + 2055 1368 1231 -6.15 106.85 + 2056 3494 750 31.42 -87.05 + 2057 1544 958 15.18 120.57 + 2058 1549 966 14.52 121.00 + 2059 1563 1064 6.90 122.07 + 2060 3615 723 33.49 -77.59 + 2061 3143 776 29.37 -114.47 + 2062 3156 636 40.33 -113.50 + 2063 3591 702 35.17 -79.50 + 2064 3307 527 48.83 -101.67 + 2065 4600 586 44.22 -0.67 + 2066 276 1510 -28.00 21.50 + 2067 3738 1671 -40.50 -68.00 + 2068 3847 1502 -27.33 -59.50 + 2069 1728 1513 -28.23 134.98 + 2070 4262 657 38.70 -27.10 + 2071 2691 368 61.20 -149.80 + 2072 4424 1253 -7.90 -14.40 + 2073 1784 695 35.70 139.30 + 2074 3911 526 48.90 -54.50 + 2075 63 595 43.50 4.90 + 2076 4495 477 52.70 -8.90 + 2077 1694 1338 -14.50 132.30 + 2078 4507 664 38.10 -7.90 + 2079 1544 842 24.20 120.60 + 2080 1293 989 12.70 101.00 + 2081 533 892 20.30 41.60 + 2082 2424 1335 -14.30 -170.70 + 2083 3721 1813 -51.60 -69.30 + 2084 3208 1500 -27.20 -109.40 + 2085 1133 863 22.60 88.50 + 2086 4162 1256 -8.10 -34.90 + 2087 4013 1452 -23.40 -46.50 + 2088 1023 1060 7.20 79.90 + 2089 3751 1016 10.60 -67.00 + 2090 3938 1091 4.80 -52.40 + 2091 932 907 19.10 72.80 + 2092 608 1393 -18.80 47.50 + 2093 3189 740 32.20 -110.90 + 2094 3289 587 44.10 -103.10 + 2095 2727 325 64.60 -147.00 + 2096 3065 706 34.80 -120.60 + 2097 3097 709 34.60 -118.10 + 2098 3156 637 40.19 -113.47 + 2099 887 705 34.95 69.27 + 2100 4592 476 52.83 -1.32 + 2101 93 1037 9.01 7.26 + 2102 3118 850 23.61 -116.48 + 2103 814 563 46.00 63.56 + 2104 867 542 47.67 67.73 + 2105 2611 899 19.73 -156.05 + 2106 2875 394 59.23 -135.43 + 2107 2736 369 61.13 -146.25 + 2108 2600 886 20.78 -156.95 + 2109 2604 883 21.02 -156.63 + 2110 3757 923 17.85 -66.52 + 2111 3749 919 18.17 -67.15 + 2112 3417 701 35.25 -93.09 + 2113 1641 1351 -15.51 128.15 + 2114 4514 416 57.48 -7.36 + 2115 130 456 54.38 10.13 diff --git a/scripts/exgdas_atmos_chgres_forenkf.sh b/scripts/exgdas_atmos_chgres_forenkf.sh index 40f702beb2..45c6be973d 100755 --- a/scripts/exgdas_atmos_chgres_forenkf.sh +++ b/scripts/exgdas_atmos_chgres_forenkf.sh @@ -17,7 +17,7 @@ # ################################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -40,7 +40,7 @@ export NCP=${NCP:-"/bin/cp"} export NMV=${NMV:-"/bin/mv"} export NLN=${NLN:-"/bin/ln -sf"} export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} -export NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} +export NCLEN=${NCLEN:-${USHgfs}/getncdimlen} # IAU DOIAU=${DOIAU:-"NO"} @@ -48,7 +48,7 @@ export IAUFHRS=${IAUFHRS:-"6"} # Dependent Scripts and Executables export APRUN_CHGRES=${APRUN_CHGRES:-${APRUN:-""}} -export CHGRESNCEXEC=${CHGRESNCEXEC:-$HOMEgfs/exec/enkf_chgres_recenter_nc.x} +export CHGRESNCEXEC=${CHGRESNCEXEC:-${EXECgfs}/enkf_chgres_recenter_nc.x} export NTHREADS_CHGRES=${NTHREADS_CHGRES:-1} APRUNCFP=${APRUNCFP:-""} diff --git a/scripts/exgdas_atmos_gempak_gif_ncdc.sh b/scripts/exgdas_atmos_gempak_gif_ncdc.sh index 63a7475a0e..1fb9c94ccf 100755 --- a/scripts/exgdas_atmos_gempak_gif_ncdc.sh +++ b/scripts/exgdas_atmos_gempak_gif_ncdc.sh @@ -10,7 +10,7 @@ source "$HOMEgfs/ush/preamble.sh" cd $DATA -export NTS=$USHgempak/restore +export NTS=${HOMEgfs}/gempak/ush/restore if [ $MODEL = GDAS ] then @@ -47,9 +47,9 @@ then if [ $cyc -eq 00 -o $cyc -eq 12 ] then - $USHgempak/gempak_${RUN}_f${fhr}_gif.sh - if [ ! -f $USHgempak/gempak_${RUN}_f${fhr}_gif.sh ] ; then - echo "WARNING: $USHgempak/gempak_${RUN}_f${fhr}_gif.sh FILE is missing" + ${HOMEgfs}/gempak/ush/gempak_${RUN}_f${fhr}_gif.sh + if [ ! -f ${HOMEgfs}/gempak/ush/gempak_${RUN}_f${fhr}_gif.sh ] ; then + echo "WARNING: ${HOMEgfs}/gempak/ush/gempak_${RUN}_f${fhr}_gif.sh FILE is missing" fi fi diff --git a/scripts/exgdas_atmos_nawips.sh b/scripts/exgdas_atmos_nawips.sh index 83781bac5b..64a2b21e39 100755 --- a/scripts/exgdas_atmos_nawips.sh +++ b/scripts/exgdas_atmos_nawips.sh @@ -10,7 +10,7 @@ # echo " data on the CCS is properly protected." ##################################################################### -source "$HOMEgfs/ush/preamble.sh" "${2}" +source "${USHgfs}/preamble.sh" "${2}" cd $DATA RUN2=$1 diff --git a/scripts/exgdas_atmos_verfozn.sh b/scripts/exgdas_atmos_verfozn.sh index 1810fdef5d..e681fc55c5 100755 --- a/scripts/exgdas_atmos_verfozn.sh +++ b/scripts/exgdas_atmos_verfozn.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ # exgdas_atmos_verfozn.sh diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index 1ff01ccfa9..bad8715acd 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -131,15 +131,6 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then "${USHgfs}/radmon_verf_time.sh" rc_time=$? - #-------------------------------------- - # optionally run clean_tankdir script - # - if [[ ${CLEAN_TANKVERF:-0} -eq 1 ]]; then - "${USHradmon}/clean_tankdir.sh" glb 60 - rc_clean_tankdir=$? - echo "rc_clean_tankdir = ${rc_clean_tankdir}" - fi - fi diff --git a/scripts/exgdas_enkf_earc.sh b/scripts/exgdas_enkf_earc.sh index 199b5609a2..3e54c658e9 100755 --- a/scripts/exgdas_enkf_earc.sh +++ b/scripts/exgdas_enkf_earc.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ############################################## # Begin JOB SPECIFIC work @@ -15,16 +15,16 @@ if [ "${EARCICS_CYC}" -lt 0 ]; then EARCICS_CYC=$((EARCICS_CYC+24)) fi -"${HOMEgfs}/ush/hpssarch_gen.sh" "${RUN}" +"${USHgfs}/hpssarch_gen.sh" "${RUN}" status=$? if [ "${status}" -ne 0 ]; then - echo "${HOMEgfs}/ush/hpssarch_gen.sh ${RUN} failed, ABORT!" + echo "${USHgfs}/hpssarch_gen.sh ${RUN} failed, ABORT!" exit "${status}" fi cd "${ROTDIR}" || exit 2 -source "${HOMEgfs}/ush/file_utils.sh" +source "${USHgfs}/file_utils.sh" ################################################################### # ENSGRP > 0 archives a group of ensemble members diff --git a/scripts/exgdas_enkf_ecen.sh b/scripts/exgdas_enkf_ecen.sh index 59021debaa..ff25c78b7c 100755 --- a/scripts/exgdas_enkf_ecen.sh +++ b/scripts/exgdas_enkf_ecen.sh @@ -17,7 +17,7 @@ # ################################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -31,16 +31,16 @@ ntiles=${ntiles:-6} # Utilities NCP=${NCP:-"/bin/cp -p"} NLN=${NLN:-"/bin/ln -sf"} -NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} +NCLEN=${NCLEN:-${USHgfs}/getncdimlen} # Scripts # Executables. -GETATMENSMEANEXEC=${GETATMENSMEANEXEC:-$HOMEgfs/exec/getsigensmeanp_smooth.x} -GETSFCENSMEANEXEC=${GETSFCENSMEANEXEC:-$HOMEgfs/exec/getsfcensmeanp.x} -RECENATMEXEC=${RECENATMEXEC:-$HOMEgfs/exec/recentersigp.x} -CALCINCNEMSEXEC=${CALCINCNEMSEXEC:-$HOMEgfs/exec/calc_increment_ens.x} -CALCINCNCEXEC=${CALCINCEXEC:-$HOMEgfs/exec/calc_increment_ens_ncio.x} +GETATMENSMEANEXEC=${GETATMENSMEANEXEC:-${EXECgfs}/getsigensmeanp_smooth.x} +GETSFCENSMEANEXEC=${GETSFCENSMEANEXEC:-${EXECgfs}/getsfcensmeanp.x} +RECENATMEXEC=${RECENATMEXEC:-${EXECgfs}/recentersigp.x} +CALCINCNEMSEXEC=${CALCINCNEMSEXEC:-${EXECgfs}/calc_increment_ens.x} +CALCINCNCEXEC=${CALCINCEXEC:-${EXECgfs}/calc_increment_ens_ncio.x} # Files. OPREFIX=${OPREFIX:-""} @@ -66,14 +66,14 @@ else fi # global_chgres stuff -CHGRESNEMS=${CHGRESNEMS:-$HOMEgfs/exec/enkf_chgres_recenter.x} -CHGRESNC=${CHGRESNC:-$HOMEgfs/exec/enkf_chgres_recenter_nc.x} +CHGRESNEMS=${CHGRESNEMS:-${EXECgfs}/enkf_chgres_recenter.x} +CHGRESNC=${CHGRESNC:-${EXECgfs}/enkf_chgres_recenter_nc.x} NTHREADS_CHGRES=${NTHREADS_CHGRES:-24} APRUN_CHGRES=${APRUN_CHGRES:-""} # global_cycle stuff -CYCLESH=${CYCLESH:-$HOMEgfs/ush/global_cycle.sh} -export CYCLEXEC=${CYCLEXEC:-$HOMEgfs/exec/global_cycle} +CYCLESH=${CYCLESH:-${USHgfs}/global_cycle.sh} +export CYCLEXEC=${CYCLEXEC:-${EXECgfs}/global_cycle} APRUN_CYCLE=${APRUN_CYCLE:-${APRUN:-""}} NTHREADS_CYCLE=${NTHREADS_CYCLE:-${NTHREADS:-1}} export CYCLVARS=${CYCLVARS:-"FSNOL=-2.,FSNOS=99999.,"} diff --git a/scripts/exgdas_enkf_post.sh b/scripts/exgdas_enkf_post.sh index f240ae561d..1819502c45 100755 --- a/scripts/exgdas_enkf_post.sh +++ b/scripts/exgdas_enkf_post.sh @@ -17,7 +17,7 @@ # ################################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -37,8 +37,8 @@ LEVS=${LEVS:-64} HYBENSMOOTH=${HYBENSMOOTH:-${FIXgfs}/gsi/global_hybens_smoothinfo.l${LEVS}.txt} # Executables. -GETATMENSMEANEXEC=${GETATMENSMEANEXEC:-$HOMEgfs/exec/getsigensmeanp_smooth.x} -GETSFCENSMEANEXEC=${GETSFCENSMEANEXEC:-$HOMEgfs/exec/getsfcensmeanp.x} +GETATMENSMEANEXEC=${GETATMENSMEANEXEC:-${EXECgfs}/getsigensmeanp_smooth.x} +GETSFCENSMEANEXEC=${GETSFCENSMEANEXEC:-${EXECgfs}/getsfcensmeanp.x} # Other variables. PREFIX=${PREFIX:-""} diff --git a/scripts/exgdas_enkf_select_obs.sh b/scripts/exgdas_enkf_select_obs.sh index 2ad624bcdb..782838df6d 100755 --- a/scripts/exgdas_enkf_select_obs.sh +++ b/scripts/exgdas_enkf_select_obs.sh @@ -17,7 +17,7 @@ # ################################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -26,7 +26,7 @@ pwd=$(pwd) export NLN=${NLN:-"/bin/ln -sf"} # Scripts. -ANALYSISSH=${ANALYSISSH:-$HOMEgfs/scripts/exglobal_atmos_analysis.sh} +ANALYSISSH=${ANALYSISSH:-${SCRgfs}/exglobal_atmos_analysis.sh} # Select obs export RUN_SELECT=${RUN_SELECT:-"YES"} diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 085ab35351..73b6d95cbc 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -17,13 +17,14 @@ # ################################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) # Base variables DONST=${DONST:-"NO"} +GSI_SOILANAL=${GSI_SOILANAL:-"NO"} DOSFCANL_ENKF=${DOSFCANL_ENKF:-"YES"} export CASE=${CASE:-384} ntiles=${ntiles:-6} @@ -31,7 +32,7 @@ ntiles=${ntiles:-6} # Utilities NCP=${NCP:-"/bin/cp -p"} NLN=${NLN:-"/bin/ln -sf"} -NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} +NCLEN=${NCLEN:-${USHgfs}/getncdimlen} # Scripts @@ -50,8 +51,8 @@ NMEM_ENS=${NMEM_ENS:-80} DOIAU=${DOIAU_ENKF:-"NO"} # Global_cycle stuff -CYCLESH=${CYCLESH:-$HOMEgfs/ush/global_cycle.sh} -export CYCLEXEC=${CYCLEXEC:-$HOMEgfs/exec/global_cycle} +CYCLESH=${CYCLESH:-${USHgfs}/global_cycle.sh} +export CYCLEXEC=${CYCLEXEC:-${EXECgfs}/global_cycle} APRUN_CYCLE=${APRUN_CYCLE:-${APRUN:-""}} NTHREADS_CYCLE=${NTHREADS_CYCLE:-${NTHREADS:-1}} export CYCLVARS=${CYCLVARS:-"FSNOL=-2.,FSNOS=99999.,"} @@ -61,7 +62,6 @@ export DELTSFC=${DELTSFC:-6} APRUN_ESFC=${APRUN_ESFC:-${APRUN:-""}} NTHREADS_ESFC=${NTHREADS_ESFC:-${NTHREADS:-1}} - ################################################################################ # Preprocessing mkdata=NO @@ -142,8 +142,10 @@ if [ $DOIAU = "YES" ]; then MEMDIR=${memchar} RUN="enkfgdas" YMD=${gPDY} HH=${gcyc} generate_com \ COM_ATMOS_RESTART_MEM_PREV:COM_ATMOS_RESTART_TMPL - [[ ${TILE_NUM} -eq 1 ]] && mkdir -p "${COM_ATMOS_RESTART_MEM}" + MEMDIR=${memchar} YMD=${PDY} HH=${cyc} generate_com \ + COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL + [[ ${TILE_NUM} -eq 1 ]] && mkdir -p "${COM_ATMOS_RESTART_MEM}" ${NCP} "${COM_ATMOS_RESTART_MEM_PREV}/${bPDY}.${bcyc}0000.sfc_data.tile${n}.nc" \ "${COM_ATMOS_RESTART_MEM}/${bPDY}.${bcyc}0000.sfcanl_data.tile${n}.nc" ${NLN} "${COM_ATMOS_RESTART_MEM_PREV}/${bPDY}.${bcyc}0000.sfc_data.tile${n}.nc" \ @@ -153,7 +155,12 @@ if [ $DOIAU = "YES" ]; then ${NLN} "${FIXgfs}/orog/${CASE}/${CASE}_grid.tile${n}.nc" "${DATA}/fngrid.${cmem}" ${NLN} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" - done + if [[ ${GSI_SOILANAL} = "YES" ]]; then + FHR=6 + ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ + "${DATA}/lnd_incr.${cmem}" + fi + done # ensembles CDATE="${PDY}${cyc}" ${CYCLESH} export err=$?; err_chk diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index 60d2592e4d..dc9ef529f6 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -17,7 +17,7 @@ # ################################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -25,7 +25,7 @@ pwd=$(pwd) # Utilities NCP=${NCP:-"/bin/cp -p"} NLN=${NLN:-"/bin/ln -sf"} -NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} +NCLEN=${NCLEN:-${USHgfs}/getncdimlen} USE_CFP=${USE_CFP:-"NO"} CFP_MP=${CFP_MP:-"NO"} nm="" @@ -37,7 +37,7 @@ APRUN_ENKF=${APRUN_ENKF:-${APRUN:-""}} NTHREADS_ENKF=${NTHREADS_ENKF:-${NTHREADS:-1}} # Executables -ENKFEXEC=${ENKFEXEC:-$HOMEgfs/exec/enkf.x} +ENKFEXEC=${ENKFEXEC:-${EXECgfs}/enkf.x} # Cycling and forecast hour specific parameters CDATE=${CDATE:-"2001010100"} @@ -87,6 +87,7 @@ else DO_CALC_INCREMENT=${DO_CALC_INCREMENT:-"NO"} fi INCREMENTS_TO_ZERO=${INCREMENTS_TO_ZERO:-"'NONE'"} +GSI_SOILANAL=${GSI_SOILANAL:-"NO"} ################################################################################ @@ -203,6 +204,10 @@ for imem in $(seq 1 $NMEM_ENS); do for FHR in $nfhrs; do ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}atmf00${FHR}${ENKF_SUFFIX}.nc" \ "sfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" + if [ $GSI_SOILANAL = "YES" ]; then + ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}${ENKF_SUFFIX}.nc" \ + "bfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" + fi if [ $cnvw_option = ".true." ]; then ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_${memchar}" @@ -224,6 +229,10 @@ for imem in $(seq 1 $NMEM_ENS); do "incr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi fi + if [ $GSI_SOILANAL = "YES" ]; then + ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}sfci00${FHR}.nc" \ + "sfcincr_${PDY}${cyc}_fhr0${FHR}_${memchar}" + fi done done @@ -238,10 +247,10 @@ for FHR in $nfhrs; do fi done -if [ $USE_CFP = "YES" ]; then +if [[ $USE_CFP = "YES" ]]; then chmod 755 $DATA/mp_untar.sh ncmd=$(cat $DATA/mp_untar.sh | wc -l) - if [ $ncmd -gt 0 ]; then + if [[ $ncmd -gt 0 ]]; then ncmd_max=$((ncmd < npe_node_max ? ncmd : npe_node_max)) APRUNCFP=$(eval echo $APRUNCFP) $APRUNCFP $DATA/mp_untar.sh @@ -398,8 +407,8 @@ cat stdout stderr > "${COM_ATMOS_ANALYSIS_STAT}/${ENKFSTAT}" ################################################################################ # Postprocessing -cd $pwd -[[ $mkdata = "YES" ]] && rm -rf $DATA +cd "$pwd" +[[ $mkdata = "YES" ]] && rm -rf "${DATA}" -exit $err +exit ${err} diff --git a/scripts/exgfs_atmos_awips_20km_1p0deg.sh b/scripts/exgfs_atmos_awips_20km_1p0deg.sh index 7546f3cabe..490875b2c4 100755 --- a/scripts/exgfs_atmos_awips_20km_1p0deg.sh +++ b/scripts/exgfs_atmos_awips_20km_1p0deg.sh @@ -19,7 +19,7 @@ # echo " " ############################################################################### -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" fcsthrs="$1" num=$# @@ -38,7 +38,7 @@ fi cd "${DATA}" || exit 2 # "Import" functions used in this script -source "${HOMEgfs}/ush/product_functions.sh" +source "${USHgfs}/product_functions.sh" ############################################### # Wait for the availability of the pgrb file @@ -91,7 +91,7 @@ export opt28=' -new_grid_interpolation budget -fi ' cp "${COM_ATMOS_GRIB_0p25}/gfs.t${cyc}z.pgrb2.0p25.f${fcsthrs}" "tmpfile2${fcsthrs}" cp "${COM_ATMOS_GRIB_0p25}/gfs.t${cyc}z.pgrb2b.0p25.f${fcsthrs}" "tmpfile2b${fcsthrs}" cat "tmpfile2${fcsthrs}" "tmpfile2b${fcsthrs}" > "tmpfile${fcsthrs}" -${WGRIB2} "tmpfile${fcsthrs}" | grep -F -f "${PARMproduct}/gfs_awips_parmlist_g2" | \ +${WGRIB2} "tmpfile${fcsthrs}" | grep -F -f "${PARMgfs}/product/gfs_awips_parmlist_g2" | \ ${WGRIB2} -i -grib masterfile "tmpfile${fcsthrs}" export err=$? if [[ $err -ne 0 ]]; then @@ -179,7 +179,7 @@ for GRID in conus ak prico pac 003; do export FORT31="awps_file_fi${fcsthrs}_${GRID}" export FORT51="grib2.awpgfs${fcsthrs}.${GRID}" - cp "${PARMwmo}/grib2_awpgfs${fcsthrs}.${GRID}" "parm_list" + cp "${PARMgfs}/wmo/grib2_awpgfs${fcsthrs}.${GRID}" "parm_list" if [[ ${DO_WAVE} != "YES" ]]; then # Remove wave field it not running wave model grep -vw "5WAVH" "parm_list" > "parm_list_temp" @@ -213,7 +213,7 @@ for GRID in conus ak prico pac 003; do export FORT31="awps_file_fi${fcsthrs}_${GRID}" export FORT51="grib2.awpgfs_20km_${GRID}_f${fcsthrs}" - cp "${PARMwmo}/grib2_awpgfs_20km_${GRID}f${fcsthrs}" "parm_list" + cp "${PARMgfs}/wmo/grib2_awpgfs_20km_${GRID}f${fcsthrs}" "parm_list" if [[ ${DO_WAVE} != "YES" ]]; then # Remove wave field it not running wave model grep -vw "5WAVH" "parm_list" > "parm_list_temp" diff --git a/scripts/exgfs_atmos_fbwind.sh b/scripts/exgfs_atmos_fbwind.sh index 735a906bff..de8e448a01 100755 --- a/scripts/exgfs_atmos_fbwind.sh +++ b/scripts/exgfs_atmos_fbwind.sh @@ -14,7 +14,7 @@ # echo " Nov 2019 - B Vuong Removed WINTEMV bulletin (retired)" ##################################################################### -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" cd $DATA @@ -42,7 +42,7 @@ do cp $COMIN/gfs.${cycle}.pgrb2.0p25.f${fhr} tmp_pgrb2_0p25${fhr} cp $COMIN/gfs.${cycle}.pgrb2b.0p25.f${fhr} tmp_pgrb2b_0p25${fhr} cat tmp_pgrb2_0p25${fhr} tmp_pgrb2b_0p25${fhr} > tmp0p25filef${fhr} - $WGRIB2 tmp0p25filef${fhr} | grep -F -f $PARMproduct/gfs_fbwnd_parmlist_g2 | $WGRIB2 -i -grib tmpfilef${fhr} tmp0p25filef${fhr} + $WGRIB2 tmp0p25filef${fhr} | grep -F -f ${PARMgfs}/product/gfs_fbwnd_parmlist_g2 | $WGRIB2 -i -grib tmpfilef${fhr} tmp0p25filef${fhr} $CNVGRIB -g21 tmpfilef${fhr} tmpfilef${fhr}.grib1 $GRBINDEX tmpfilef${fhr}.grib1 tmpfilef${fhr}.grib1i mv tmpfilef${fhr}.grib1 gfs.t${cyc}z.grbf${fhr}_grb1 @@ -68,7 +68,7 @@ export FORT51="tran.fbwnd_pacific" startmsg -$EXECgfs/fbwndgfs < $PARMproduct/fbwnd_pacific.stnlist >> $pgmout 2> errfile +$EXECgfs/fbwndgfs < ${PARMgfs}/product/fbwnd_pacific.stnlist >> $pgmout 2> errfile export err=$?; err_chk diff --git a/scripts/exgfs_atmos_gempak_gif_ncdc_skew_t.sh b/scripts/exgfs_atmos_gempak_gif_ncdc_skew_t.sh index 2dd7fa886a..89de036fcb 100755 --- a/scripts/exgfs_atmos_gempak_gif_ncdc_skew_t.sh +++ b/scripts/exgfs_atmos_gempak_gif_ncdc_skew_t.sh @@ -11,7 +11,7 @@ source "$HOMEgfs/ush/preamble.sh" cd $DATA -export NTS=$USHgempak/restore +export NTS=${HOMEgfs}/gempak/ush/restore if [ $MODEL = GDAS -o $MODEL = GFS ] then @@ -48,7 +48,7 @@ then # if [ $cyc -eq 00 -o $cyc -eq 12 ] #then - $USHgempak/gempak_${RUN}_f${fhr}_gif.sh + ${HOMEgfs}/gempak/ush/gempak_${RUN}_f${fhr}_gif.sh #fi done diff --git a/scripts/exgfs_atmos_goes_nawips.sh b/scripts/exgfs_atmos_goes_nawips.sh index 137feec7c2..ed82082e8a 100755 --- a/scripts/exgfs_atmos_goes_nawips.sh +++ b/scripts/exgfs_atmos_goes_nawips.sh @@ -11,7 +11,7 @@ # echo "C. Magee: 10/2013 - swap X and Y for rtgssthr Atl and Pac." ##################################################################### -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" cd $DATA diff --git a/scripts/exgfs_atmos_grib2_special_npoess.sh b/scripts/exgfs_atmos_grib2_special_npoess.sh index a43c279ae6..1b01aed24d 100755 --- a/scripts/exgfs_atmos_grib2_special_npoess.sh +++ b/scripts/exgfs_atmos_grib2_special_npoess.sh @@ -7,7 +7,7 @@ # echo "-----------------------------------------------------" ##################################################################### -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" cd $DATA @@ -122,7 +122,7 @@ for (( fhr=$((10#${SHOUR})); fhr <= $((10#${FHOUR})); fhr = fhr + FHINC )); do ###################################################################### # Process Global NPOESS 0.50 GFS GRID PRODUCTS IN GRIB2 F000 - F024 # ###################################################################### - paramlist=${PARMproduct}/global_npoess_paramlist_g2 + paramlist=${PARMgfs}/product/global_npoess_paramlist_g2 cp "${COM_ATMOS_GRIB_0p50}/gfs.t${cyc}z.pgrb2.0p50.f${fhr3}" tmpfile2 cp "${COM_ATMOS_GRIB_0p50}/gfs.t${cyc}z.pgrb2b.0p50.f${fhr3}" tmpfile2b cat tmpfile2 tmpfile2b > tmpfile diff --git a/scripts/exgfs_atmos_grib_awips.sh b/scripts/exgfs_atmos_grib_awips.sh index 037b4ce191..bdfc625dce 100755 --- a/scripts/exgfs_atmos_grib_awips.sh +++ b/scripts/exgfs_atmos_grib_awips.sh @@ -21,7 +21,7 @@ # echo " FEB 2019 - Removed grid 225" ##################################################################### -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" fcsthrs="$1" num=$# @@ -40,7 +40,7 @@ fi cd "${DATA}/awips_g1" || exit 2 # "Import" functions used in this script -source "${HOMEgfs}/ush/product_functions.sh" +source "${USHgfs}/product_functions.sh" ############################################### # Wait for the availability of the pgrb file @@ -75,14 +75,14 @@ set_trace cp "${COM_ATMOS_GRIB_0p25}/gfs.t${cyc}z.pgrb2.0p25.f${fcsthrs}" "tmpfile2" cp "${COM_ATMOS_GRIB_0p25}/gfs.t${cyc}z.pgrb2b.0p25.f${fcsthrs}" "tmpfile2b" cat tmpfile2 tmpfile2b > tmpfile -${WGRIB2} tmpfile | grep -F -f "${PARMproduct}/gfs_awips_parmlist_g2" | \ +${WGRIB2} tmpfile | grep -F -f "${PARMgfs}/product/gfs_awips_parmlist_g2" | \ ${WGRIB2} -i -grib masterfile tmpfile scale_dec masterfile ${CNVGRIB} -g21 masterfile masterfile.grib1 ln -s masterfile.grib1 fort.11 -"${HOMEgfs}/exec/overgridid.x" << EOF +"${EXECgfs}/overgridid.x" << EOF 255 EOF @@ -105,8 +105,8 @@ export GRID=211 export FORT11="master.grbf${fcsthrs}" export FORT31="master.grbif${fcsthrs}" export FORT51="xtrn.awpgfs${fcsthrs}.${GRID}" -# $MKGFSAWPS < $PARMwmo/grib_awpgfs${fcsthrs}.${GRID} parm=KWBC >> $pgmout 2>errfile -"${HOMEgfs}/exec/mkgfsawps.x" < "${PARMwmo}/grib_awpgfs${fcsthrs}.${GRID}" parm=KWBC >> "${pgmout}" 2>errfile +# $MKGFSAWPS < ${PARMgfs}/wmo/grib_awpgfs${fcsthrs}.${GRID} parm=KWBC >> $pgmout 2>errfile +"${EXECgfs}/mkgfsawps.x" < "${PARMgfs}/wmo/grib_awpgfs${fcsthrs}.${GRID}" parm=KWBC >> "${pgmout}" 2>errfile export err=$?; err_chk ############################## # Post Files to ${COM_ATMOS_WMO} diff --git a/scripts/exgfs_atmos_nawips.sh b/scripts/exgfs_atmos_nawips.sh index d03ec9cef6..36c3c8e74a 100755 --- a/scripts/exgfs_atmos_nawips.sh +++ b/scripts/exgfs_atmos_nawips.sh @@ -10,7 +10,7 @@ # echo " data on the CCS is properly protected." ##################################################################### -source "${HOMEgfs}/ush/preamble.sh" "${2}" +source "${USHgfs}/preamble.sh" "${2}" #### If EMC GFS PARA runs hourly file are not available, The ILPOST #### will set to 3 hour in EMC GFS PARA. @@ -28,7 +28,7 @@ mkdir -p "${DATA_RUN}" cd "${DATA_RUN}" || exit 1 # "Import" functions used in this script -source "${HOMEgfs}/ush/product_functions.sh" +source "${USHgfs}/product_functions.sh" # NAGRIB="${GEMEXE}/nagrib2" diff --git a/scripts/exgfs_atmos_postsnd.sh b/scripts/exgfs_atmos_postsnd.sh index 368f001ed0..7aa97f3644 100755 --- a/scripts/exgfs_atmos_postsnd.sh +++ b/scripts/exgfs_atmos_postsnd.sh @@ -20,7 +20,7 @@ # 9) 2019-12-18 Guang Ping Lou generalizing to reading in NetCDF or nemsio ################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" cd $DATA @@ -44,7 +44,7 @@ export NINT3=${FHOUT_GFS:-3} rm -f -r "${COM_ATMOS_BUFR}" mkdir -p "${COM_ATMOS_BUFR}" -GETDIM="${HOMEgfs}/ush/getncdimlen" +GETDIM="${USHgfs}/getncdimlen" LEVS=$(${GETDIM} "${COM_ATMOS_HISTORY}/${RUN}.${cycle}.atmf000.${atmfm}" pfull) declare -x LEVS @@ -88,8 +88,7 @@ export FINT=$NINT1 if [ $FEND -gt $NEND1 ]; then export FINT=$NINT3 fi -## $USHbufrsnd/gfs_bufr.sh - $USHbufrsnd/gfs_bufr.sh + ${USHgfs}/gfs_bufr.sh export FSTART=$FEND done @@ -115,7 +114,7 @@ fi ######################################## rm -rf poe_col for (( m = 1; m <10 ; m++ )); do - echo "sh ${USHbufrsnd}/gfs_sndp.sh ${m} " >> poe_col + echo "sh ${USHgfs}/gfs_sndp.sh ${m} " >> poe_col done if [[ ${CFP_MP:-"NO"} == "YES" ]]; then @@ -129,7 +128,7 @@ chmod +x cmdfile ${APRUN_POSTSNDCFP} cmdfile -sh "${USHbufrsnd}/gfs_bfr2gpk.sh" +sh "${USHgfs}/gfs_bfr2gpk.sh" ############## END OF SCRIPT ####################### diff --git a/scripts/exgfs_pmgr.sh b/scripts/exgfs_pmgr.sh index a417bbed55..c3b9a5befa 100755 --- a/scripts/exgfs_pmgr.sh +++ b/scripts/exgfs_pmgr.sh @@ -6,7 +6,7 @@ # This script monitors the progress of the gfs_fcst job # -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" hour=00 TEND=384 diff --git a/scripts/exgfs_prdgen_manager.sh b/scripts/exgfs_prdgen_manager.sh index 7d0a95696b..01e8c58c87 100755 --- a/scripts/exgfs_prdgen_manager.sh +++ b/scripts/exgfs_prdgen_manager.sh @@ -6,7 +6,7 @@ # This script monitors the progress of the gfs_fcst job # -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" hour=00 TEND=384 diff --git a/scripts/exgfs_wave_init.sh b/scripts/exgfs_wave_init.sh index 22da372a2a..79c2931889 100755 --- a/scripts/exgfs_wave_init.sh +++ b/scripts/exgfs_wave_init.sh @@ -26,7 +26,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -127,9 +127,9 @@ source "${HOMEgfs}/ush/preamble.sh" [[ ! -d "${COM_WAVE_PREP}" ]] && mkdir -m 775 -p "${COM_WAVE_PREP}" if [ ${CFP_MP:-"NO"} = "YES" ]; then - echo "$nmoddef $USHwave/wave_grid_moddef.sh $grdID > $grdID.out 2>&1" >> cmdfile + echo "$nmoddef ${USHgfs}/wave_grid_moddef.sh $grdID > $grdID.out 2>&1" >> cmdfile else - echo "$USHwave/wave_grid_moddef.sh $grdID > $grdID.out 2>&1" >> cmdfile + echo "${USHgfs}/wave_grid_moddef.sh $grdID > $grdID.out 2>&1" >> cmdfile fi nmoddef=$(expr $nmoddef + 1) diff --git a/scripts/exgfs_wave_nawips.sh b/scripts/exgfs_wave_nawips.sh index 9145a30a2f..69c4e54ebb 100755 --- a/scripts/exgfs_wave_nawips.sh +++ b/scripts/exgfs_wave_nawips.sh @@ -11,7 +11,7 @@ # March-2020 Roberto.Padilla@noaa.gov ##################################################################### -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" #export grids=${grids:-'glo_30m at_10m ep_10m wc_10m ao_9km'} #Interpolated grids export grids=${grids:-'glo_30m'} #Native grids diff --git a/scripts/exgfs_wave_post_gridded_sbs.sh b/scripts/exgfs_wave_post_gridded_sbs.sh index af362b1c45..be17967865 100755 --- a/scripts/exgfs_wave_post_gridded_sbs.sh +++ b/scripts/exgfs_wave_post_gridded_sbs.sh @@ -30,7 +30,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -139,9 +139,9 @@ source "$HOMEgfs/ush/preamble.sh" then for intGRD in $waveinterpGRD do - if [ -f $PARMwave/${intGRD}_interp.inp.tmpl ] + if [ -f ${PARMgfs}/wave/${intGRD}_interp.inp.tmpl ] then - cp -f $PARMwave/${intGRD}_interp.inp.tmpl ${intGRD}_interp.inp.tmpl + cp -f ${PARMgfs}/wave/${intGRD}_interp.inp.tmpl ${intGRD}_interp.inp.tmpl fi if [ -f ${intGRD}_interp.inp.tmpl ] @@ -168,9 +168,9 @@ source "$HOMEgfs/ush/preamble.sh" then for grbGRD in $waveinterpGRD $wavepostGRD do - if [ -f $PARMwave/ww3_grib2.${grbGRD}.inp.tmpl ] + if [ -f ${PARMgfs}/wave/ww3_grib2.${grbGRD}.inp.tmpl ] then - cp -f $PARMwave/ww3_grib2.${grbGRD}.inp.tmpl ww3_grib2.${grbGRD}.inp.tmpl + cp -f ${PARMgfs}/wave/ww3_grib2.${grbGRD}.inp.tmpl ww3_grib2.${grbGRD}.inp.tmpl fi if [ -f ww3_grib2.${grbGRD}.inp.tmpl ] @@ -279,7 +279,7 @@ source "$HOMEgfs/ush/preamble.sh" for grdID in $waveinterpGRD do ymdh_int=$($NDATE -${WAVHINDH} $ymdh); dt_int=3600.; n_int=9999 ; - echo "$USHwave/wave_grid_interp_sbs.sh $grdID $ymdh_int $dt_int $n_int > grint_$grdID.out 2>&1" >> ${fcmdigrd}.${nigrd} + echo "${USHgfs}/wave_grid_interp_sbs.sh $grdID $ymdh_int $dt_int $n_int > grint_$grdID.out 2>&1" >> ${fcmdigrd}.${nigrd} if [ "$DOGRB_WAV" = 'YES' ] then gribFL=\'$(echo ${OUTPARS_WAV})\' @@ -296,7 +296,7 @@ source "$HOMEgfs/ush/preamble.sh" wc_10m) GRDNAME='wcoast' ; GRDRES=0p16 ; GRIDNR=255 ; MODNR=11 ;; ak_10m) GRDNAME='alaska' ; GRDRES=0p16 ; GRIDNR=255 ; MODNR=11 ;; esac - echo "$USHwave/wave_grib2_sbs.sh $grdID $GRIDNR $MODNR $ymdh $fhr $GRDNAME $GRDRES $gribFL > grib_$grdID.out 2>&1" >> ${fcmdigrd}.${nigrd} + echo "${USHgfs}/wave_grib2_sbs.sh $grdID $GRIDNR $MODNR $ymdh $fhr $GRDNAME $GRDRES $gribFL > grib_$grdID.out 2>&1" >> ${fcmdigrd}.${nigrd} fi echo "${GRIBDATA}/${fcmdigrd}.${nigrd}" >> ${fcmdnow} chmod 744 ${fcmdigrd}.${nigrd} @@ -325,7 +325,7 @@ source "$HOMEgfs/ush/preamble.sh" glo_500) GRDNAME='global' ; GRDRES=5p00 ; GRIDNR=255 ; MODNR=11 ;; gwes_30m) GRDNAME='global' ; GRDRES=0p50 ; GRIDNR=255 ; MODNR=10 ;; esac - echo "$USHwave/wave_grib2_sbs.sh $grdID $GRIDNR $MODNR $ymdh $fhr $GRDNAME $GRDRES $gribFL > grib_$grdID.out 2>&1" >> ${fcmdnow} + echo "${USHgfs}/wave_grib2_sbs.sh $grdID $GRIDNR $MODNR $ymdh $fhr $GRDNAME $GRDRES $gribFL > grib_$grdID.out 2>&1" >> ${fcmdnow} done fi diff --git a/scripts/exgfs_wave_post_pnt.sh b/scripts/exgfs_wave_post_pnt.sh index c085c48f30..bc4c85ec74 100755 --- a/scripts/exgfs_wave_post_pnt.sh +++ b/scripts/exgfs_wave_post_pnt.sh @@ -32,7 +32,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -151,13 +151,13 @@ source "$HOMEgfs/ush/preamble.sh" rm -f buoy.loc - if [ -f $PARMwave/wave_${NET}.buoys ] + if [ -f ${PARMgfs}/wave/wave_${NET}.buoys ] then - cp -f $PARMwave/wave_${NET}.buoys buoy.loc.temp + cp -f ${PARMgfs}/wave/wave_${NET}.buoys buoy.loc.temp if [ "$DOBNDPNT_WAV" = YES ]; then #only do boundary points sed -n '/^\$.*/!p' buoy.loc.temp | grep IBP > buoy.loc || { - echo "WARNING: No boundary points found in buoy file ${PARMwave}/wave_${NET}.buoys" + echo "WARNING: No boundary points found in buoy file ${PARMgfs}/wave/wave_${NET}.buoys" echo " Ending job without doing anything." exit 0 } @@ -170,7 +170,7 @@ source "$HOMEgfs/ush/preamble.sh" if [ -s buoy.loc ] then set +x - echo " buoy.loc and buoy.ibp copied and processed ($PARMwave/wave_${NET}.buoys)." + echo " buoy.loc and buoy.ibp copied and processed (${PARMgfs}/wave/wave_${NET}.buoys)." set_trace else set +x @@ -188,9 +188,9 @@ source "$HOMEgfs/ush/preamble.sh" # 1.d Input template files - if [ -f $PARMwave/ww3_outp_spec.inp.tmpl ] + if [ -f ${PARMgfs}/wave/ww3_outp_spec.inp.tmpl ] then - cp -f $PARMwave/ww3_outp_spec.inp.tmpl ww3_outp_spec.inp.tmpl + cp -f ${PARMgfs}/wave/ww3_outp_spec.inp.tmpl ww3_outp_spec.inp.tmpl fi if [ -f ww3_outp_spec.inp.tmpl ] @@ -211,9 +211,9 @@ source "$HOMEgfs/ush/preamble.sh" DOBLL_WAV='NO' fi - if [ -f $PARMwave/ww3_outp_bull.inp.tmpl ] + if [ -f ${PARMgfs}/wave/ww3_outp_bull.inp.tmpl ] then - cp -f $PARMwave/ww3_outp_bull.inp.tmpl ww3_outp_bull.inp.tmpl + cp -f ${PARMgfs}/wave/ww3_outp_bull.inp.tmpl ww3_outp_bull.inp.tmpl fi if [ -f ww3_outp_bull.inp.tmpl ] @@ -266,7 +266,7 @@ source "$HOMEgfs/ush/preamble.sh" ln -fs ./out_pnt.${waveuoutpGRD} ./out_pnt.ww3 ln -fs ./mod_def.${waveuoutpGRD} ./mod_def.ww3 export pgm=ww3_outp;. prep_step - $EXECwave/ww3_outp > buoy_lst.loc 2>&1 + ${EXECgfs}/ww3_outp > buoy_lst.loc 2>&1 export err=$?;err_chk @@ -387,7 +387,7 @@ source "$HOMEgfs/ush/preamble.sh" export dtspec=3600. for buoy in $buoys do - echo "$USHwave/wave_outp_spec.sh $buoy $ymdh spec $SPECDATA > $SPECDATA/spec_$buoy.out 2>&1" >> tmpcmdfile.$FH3 + echo "${USHgfs}/wave_outp_spec.sh $buoy $ymdh spec $SPECDATA > $SPECDATA/spec_$buoy.out 2>&1" >> tmpcmdfile.$FH3 done fi @@ -396,7 +396,7 @@ source "$HOMEgfs/ush/preamble.sh" export dtspec=3600. for buoy in $buoys do - echo "$USHwave/wave_outp_spec.sh $buoy $ymdh bull $SPECDATA > $SPECDATA/bull_$buoy.out 2>&1" >> tmpcmdfile.$FH3 + echo "${USHgfs}/wave_outp_spec.sh $buoy $ymdh bull $SPECDATA > $SPECDATA/bull_$buoy.out 2>&1" >> tmpcmdfile.$FH3 done fi @@ -514,7 +514,7 @@ source "$HOMEgfs/ush/preamble.sh" then for buoy in $buoys do - echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT spec > ${CATOUTDIR}/spec_cat_$buoy.out 2>&1" >> cmdfile.bouy + echo "${USHgfs}/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT spec > ${CATOUTDIR}/spec_cat_$buoy.out 2>&1" >> cmdfile.bouy done fi @@ -522,7 +522,7 @@ source "$HOMEgfs/ush/preamble.sh" then for buoy in $buoys do - echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT bull > ${CATOUTDIR}/bull_cat_$buoy.out 2>&1" >> cmdfile.bouy + echo "${USHgfs}/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT bull > ${CATOUTDIR}/bull_cat_$buoy.out 2>&1" >> cmdfile.bouy done fi @@ -614,43 +614,43 @@ source "$HOMEgfs/ush/preamble.sh" if [ ${CFP_MP:-"NO"} = "YES" ] && [ "$DOBLL_WAV" = "YES" ]; then if [ "$DOBNDPNT_WAV" = YES ]; then if [ "$DOSPC_WAV" = YES ]; then - echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "$nm ${USHgfs}/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile nm=$(( nm + 1 )) fi if [ "$DOBLL_WAV" = YES ]; then - echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "$nm ${USHgfs}/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile nm=$(( nm + 1 )) - echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "$nm ${USHgfs}/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile nm=$(( nm + 1 )) fi else if [ "$DOSPC_WAV" = YES ]; then - echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "$nm ${USHgfs}/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile nm=$(( nm + 1 )) fi if [ "$DOBLL_WAV" = YES ]; then - echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "$nm ${USHgfs}/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile nm=$(( nm + 1 )) - echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "$nm ${USHgfs}/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile nm=$(( nm + 1 )) fi fi else if [ "$DOBNDPNT_WAV" = YES ]; then if [ "$DOSPC_WAV" = YES ]; then - echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "${USHgfs}/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile fi if [ "$DOBLL_WAV" = YES ]; then - echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile - echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "${USHgfs}/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "${USHgfs}/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile fi else if [ "$DOSPC_WAV" = YES ]; then - echo "$USHwave/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "${USHgfs}/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile fi if [ "$DOBLL_WAV" = YES ]; then - echo "$USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile - echo "$USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "${USHgfs}/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile + echo "${USHgfs}/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile fi fi fi diff --git a/scripts/exgfs_wave_prdgen_bulls.sh b/scripts/exgfs_wave_prdgen_bulls.sh index bcad75a660..2bf90cdf2b 100755 --- a/scripts/exgfs_wave_prdgen_bulls.sh +++ b/scripts/exgfs_wave_prdgen_bulls.sh @@ -18,7 +18,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -29,11 +29,6 @@ source "$HOMEgfs/ush/preamble.sh" export cycle=${cycle:-t${cyc}z} export pgmout=OUTPUT.$$ export DATA=${DATA:-${DATAROOT:?}/${job}.$$} - #export CODEwave=${CODEwave:-${PACKAGEROOT}/${NET}_code.${wave_code_ver}/${code_pkg}} - export EXECwave=${EXECwave:-$HOMEgfs/exec} - export PARMwave=${PARMwave:-$HOMEgfs/parm/parm_wave} - export USHwave=${USHwave:-$HOMEgfs/ush} - #export EXECcode=${EXECcode:-CODEwave/exec} mkdir -p $DATA cd $DATA @@ -116,8 +111,8 @@ source "$HOMEgfs/ush/preamble.sh" echo ' --------------------------' echo ' ' # 1.c Get the datat cards - if [ -f $PARMwave/bull_awips_gfswave ]; then - cp $PARMwave/bull_awips_gfswave awipsbull.data + if [ -f ${PARMgfs}/wave/bull_awips_gfswave ]; then + cp ${PARMgfs}/wave/bull_awips_gfswave awipsbull.data else msg="ABNORMAL EXIT: NO AWIPS BULLETIN HEADER DATA FILE" set +x diff --git a/scripts/exgfs_wave_prdgen_gridded.sh b/scripts/exgfs_wave_prdgen_gridded.sh index 54efb639d6..55c5b36827 100755 --- a/scripts/exgfs_wave_prdgen_gridded.sh +++ b/scripts/exgfs_wave_prdgen_gridded.sh @@ -19,7 +19,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -31,8 +31,6 @@ source "$HOMEgfs/ush/preamble.sh" export FHOUT_WAV=${FHOUT_WAV:-6} #from 72 to 180 inc=6 export FHOUT_HF_WAV=${FHOUT_HF_WAV:-3} export maxtries=720 - export PARMwave=${PARMwave:-$HOMEgfs/parm/parm_wave} - export USHwave=${USHwave:-$HOMEgfs/ush} export cyc=${cyc:-00} export cycle=${cycle:-t${cyc}z} export pgmout=OUTPUT.$$ @@ -157,7 +155,7 @@ grids=${grids:-ak_10m at_10m ep_10m wc_10m glo_30m} # # 1.d Input template files - parmfile=$PARMwave/grib2_${RUNwave}.$grdOut.f${fhr} + parmfile=${PARMgfs}/wave/grib2_${RUNwave}.$grdOut.f${fhr} if [ -f $parmfile ]; then ln -s $parmfile awipsgrb.$grdID.f${fhr} else diff --git a/scripts/exgfs_wave_prep.sh b/scripts/exgfs_wave_prep.sh index f6cb610559..1fbe7dd767 100755 --- a/scripts/exgfs_wave_prep.sh +++ b/scripts/exgfs_wave_prep.sh @@ -40,7 +40,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation @@ -207,16 +207,16 @@ source "$HOMEgfs/ush/preamble.sh" ;; esac - if [ -f $PARMwave/ww3_prnc.${type}.$grdID.inp.tmpl ] + if [ -f ${PARMgfs}/wave/ww3_prnc.${type}.$grdID.inp.tmpl ] then - cp $PARMwave/ww3_prnc.${type}.$grdID.inp.tmpl . + cp ${PARMgfs}/wave/ww3_prnc.${type}.$grdID.inp.tmpl . fi if [ -f ww3_prnc.${type}.$grdID.inp.tmpl ] then set +x echo ' ' - echo " ww3_prnc.${type}.$grdID.inp.tmpl copied ($PARMwave)." + echo " ww3_prnc.${type}.$grdID.inp.tmpl copied (${PARMgfs}/wave)." echo ' ' set_trace else @@ -247,7 +247,7 @@ source "$HOMEgfs/ush/preamble.sh" if [ "${RUNMEM}" = "-1" ] || [ "${WW3ICEIENS}" = "T" ] || [ "$waveMEMB" = "00" ] then - $USHwave/wave_prnc_ice.sh > wave_prnc_ice.out + ${USHgfs}/wave_prnc_ice.sh > wave_prnc_ice.out ERR=$? if [ -d ice ] @@ -389,10 +389,10 @@ source "$HOMEgfs/ush/preamble.sh" fi if [ ${CFP_MP:-"NO"} = "YES" ]; then - echo "$nm $USHwave/wave_prnc_cur.sh $ymdh_rtofs $curfile $fhr_rtofs $FLGFIRST > cur_$ymdh_rtofs.out 2>&1" >> cmdfile + echo "$nm ${USHgfs}/wave_prnc_cur.sh $ymdh_rtofs $curfile $fhr_rtofs $FLGFIRST > cur_$ymdh_rtofs.out 2>&1" >> cmdfile nm=$(expr $nm + 1) else - echo "$USHwave/wave_prnc_cur.sh $ymdh_rtofs $curfile $fhr_rtofs $FLGFIRST > cur_$ymdh_rtofs.out 2>&1" >> cmdfile + echo "${USHgfs}/wave_prnc_cur.sh $ymdh_rtofs $curfile $fhr_rtofs $FLGFIRST > cur_$ymdh_rtofs.out 2>&1" >> cmdfile fi if [ "${FLGFIRST}" = "T" ] ; then diff --git a/scripts/exglobal_archive.sh b/scripts/exglobal_archive.sh index 833b06bd98..4cc123111c 100755 --- a/scripts/exglobal_archive.sh +++ b/scripts/exglobal_archive.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ############################################## # Begin JOB SPECIFIC work @@ -29,7 +29,7 @@ PDY_MOS="${CDATE_MOS:0:8}" ############################################################### # Archive online for verification and diagnostics ############################################################### -source "${HOMEgfs}/ush/file_utils.sh" +source "${USHgfs}/file_utils.sh" [[ ! -d ${ARCDIR} ]] && mkdir -p "${ARCDIR}" nb_copy "${COM_ATMOS_ANALYSIS}/${APREFIX}gsistat" "${ARCDIR}/gsistat.${RUN}.${PDY}${cyc}" @@ -158,10 +158,10 @@ if [[ ${HPSSARCH} = "YES" || ${LOCALARCH} = "YES" ]]; then cd "${DATA}" || exit 2 - "${HOMEgfs}/ush/hpssarch_gen.sh" "${RUN}" + "${USHgfs}/hpssarch_gen.sh" "${RUN}" status=$? if [ "${status}" -ne 0 ]; then - echo "${HOMEgfs}/ush/hpssarch_gen.sh ${RUN} failed, ABORT!" + echo "${USHgfs}/hpssarch_gen.sh ${RUN} failed, ABORT!" exit "${status}" fi diff --git a/scripts/exglobal_atmos_analysis.sh b/scripts/exglobal_atmos_analysis.sh index b12046f9e2..575c112675 100755 --- a/scripts/exglobal_atmos_analysis.sh +++ b/scripts/exglobal_atmos_analysis.sh @@ -19,7 +19,7 @@ # Set environment. -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -42,7 +42,7 @@ export NCP=${NCP:-"/bin/cp"} export NMV=${NMV:-"/bin/mv"} export NLN=${NLN:-"/bin/ln -sf"} export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} -export NCLEN=${NCLEN:-${HOMEgfs}/ush/getncdimlen} +export NCLEN=${NCLEN:-${USHgfs}/getncdimlen} COMPRESS=${COMPRESS:-gzip} UNCOMPRESS=${UNCOMPRESS:-gunzip} APRUNCFP=${APRUNCFP:-""} @@ -68,19 +68,19 @@ DOIAU=${DOIAU:-"NO"} export IAUFHRS=${IAUFHRS:-"6"} # Dependent Scripts and Executables -GSIEXEC=${GSIEXEC:-${HOMEgfs}/exec/gsi.x} +GSIEXEC=${GSIEXEC:-${EXECgfs}/gsi.x} export NTHREADS_CALCINC=${NTHREADS_CALCINC:-1} export APRUN_CALCINC=${APRUN_CALCINC:-${APRUN:-""}} export APRUN_CALCANL=${APRUN_CALCANL:-${APRUN:-""}} export APRUN_CHGRES=${APRUN_CALCANL:-${APRUN:-""}} -export CALCINCEXEC=${CALCINCEXEC:-${HOMEgfs}/exec/calc_increment_ens.x} -export CALCINCNCEXEC=${CALCINCNCEXEC:-${HOMEgfs}/exec/calc_increment_ens_ncio.x} -export CALCANLEXEC=${CALCANLEXEC:-${HOMEgfs}/exec/calc_analysis.x} -export CHGRESNCEXEC=${CHGRESNCEXEC:-${HOMEgfs}/exec/enkf_chgres_recenter_nc.x} -export CHGRESINCEXEC=${CHGRESINCEXEC:-${HOMEgfs}/exec/interp_inc.x} -CHGRESEXEC=${CHGRESEXEC:-${HOMEgfs}/exec/enkf_chgres_recenter.x} +export CALCINCEXEC=${CALCINCEXEC:-${EXECgfs}/calc_increment_ens.x} +export CALCINCNCEXEC=${CALCINCNCEXEC:-${EXECgfs}/calc_increment_ens_ncio.x} +export CALCANLEXEC=${CALCANLEXEC:-${EXECgfs}/calc_analysis.x} +export CHGRESNCEXEC=${CHGRESNCEXEC:-${EXECgfs}/enkf_chgres_recenter_nc.x} +export CHGRESINCEXEC=${CHGRESINCEXEC:-${EXECgfs}/interp_inc.x} +CHGRESEXEC=${CHGRESEXEC:-${EXECgfs}/enkf_chgres_recenter.x} export NTHREADS_CHGRES=${NTHREADS_CHGRES:-24} -CALCINCPY=${CALCINCPY:-${HOMEgfs}/ush/calcinc_gfs.py} +CALCINCPY=${CALCINCPY:-${USHgfs}/calcinc_gfs.py} # OPS flags RUN=${RUN:-""} @@ -89,6 +89,8 @@ SENDDBN=${SENDDBN:-"NO"} RUN_GETGES=${RUN_GETGES:-"NO"} GETGESSH=${GETGESSH:-"getges.sh"} export gesenvir=${gesenvir:-${envir}} + +export hofx_2m_sfcfile=${hofx_2m_sfcfile:-".false."} # Observations OPREFIX=${OPREFIX:-""} @@ -748,6 +750,7 @@ cat > gsiparm.anl << EOF / &OBS_INPUT dmesh(1)=145.0,dmesh(2)=150.0,dmesh(3)=100.0,dmesh(4)=50.0,time_window_max=3.0, + hofx_2m_sfcfile=${hofx_2m_sfcfile}, ${OBSINPUT} / OBS_INPUT:: diff --git a/scripts/exglobal_atmos_analysis_calc.sh b/scripts/exglobal_atmos_analysis_calc.sh index a2228f0425..771221ce1d 100755 --- a/scripts/exglobal_atmos_analysis_calc.sh +++ b/scripts/exglobal_atmos_analysis_calc.sh @@ -19,7 +19,7 @@ # Set environment. -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -33,7 +33,7 @@ export NCP=${NCP:-"/bin/cp"} export NMV=${NMV:-"/bin/mv"} export NLN=${NLN:-"/bin/ln -sf"} export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} -export NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} +export NCLEN=${NCLEN:-${USHgfs}/getncdimlen} COMPRESS=${COMPRESS:-gzip} UNCOMPRESS=${UNCOMPRESS:-gunzip} APRUNCFP=${APRUNCFP:-""} @@ -52,16 +52,16 @@ export APRUN_CALCINC=${APRUN_CALCINC:-${APRUN:-""}} export APRUN_CALCANL=${APRUN_CALCANL:-${APRUN:-""}} export APRUN_CHGRES=${APRUN_CALCANL:-${APRUN:-""}} -export CALCANLEXEC=${CALCANLEXEC:-$HOMEgfs/exec/calc_analysis.x} -export CHGRESNCEXEC=${CHGRESNCEXEC:-$HOMEgfs/exec/enkf_chgres_recenter_nc.x} -export CHGRESINCEXEC=${CHGRESINCEXEC:-$HOMEgfs/exec/interp_inc.x} +export CALCANLEXEC=${CALCANLEXEC:-${EXECgfs}/calc_analysis.x} +export CHGRESNCEXEC=${CHGRESNCEXEC:-${EXECgfs}/enkf_chgres_recenter_nc.x} +export CHGRESINCEXEC=${CHGRESINCEXEC:-${EXECgfs}/interp_inc.x} export NTHREADS_CHGRES=${NTHREADS_CHGRES:-1} -CALCINCPY=${CALCINCPY:-$HOMEgfs/ush/calcinc_gfs.py} -CALCANLPY=${CALCANLPY:-$HOMEgfs/ush/calcanl_gfs.py} +CALCINCPY=${CALCINCPY:-${USHgfs}/calcinc_gfs.py} +CALCANLPY=${CALCANLPY:-${USHgfs}/calcanl_gfs.py} DOGAUSFCANL=${DOGAUSFCANL-"NO"} -GAUSFCANLSH=${GAUSFCANLSH:-$HOMEgfs/ush/gaussian_sfcanl.sh} -export GAUSFCANLEXE=${GAUSFCANLEXE:-$HOMEgfs/exec/gaussian_sfcanl.x} +GAUSFCANLSH=${GAUSFCANLSH:-${USHgfs}/gaussian_sfcanl.sh} +export GAUSFCANLEXE=${GAUSFCANLEXE:-${EXECgfs}/gaussian_sfcanl.x} NTHREADS_GAUSFCANL=${NTHREADS_GAUSFCANL:-1} APRUN_GAUSFCANL=${APRUN_GAUSFCANL:-${APRUN:-""}} diff --git a/scripts/exglobal_atmos_pmgr.sh b/scripts/exglobal_atmos_pmgr.sh index 86afed962e..7f348474b6 100755 --- a/scripts/exglobal_atmos_pmgr.sh +++ b/scripts/exglobal_atmos_pmgr.sh @@ -6,7 +6,7 @@ # This script monitors the progress of the gfs_fcst job # -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" hour=00 diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 5ebc7432f0..9067819380 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -1,13 +1,13 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Programs used export WGRIB2=${WGRIB2:-${wgrib2_ROOT}/bin/wgrib2} # Scripts used -INTERP_ATMOS_MASTERSH=${INTERP_ATMOS_MASTERSH:-"${HOMEgfs}/ush/interp_atmos_master.sh"} -INTERP_ATMOS_SFLUXSH=${INTERP_ATMOS_SFLUXSH:-"${HOMEgfs}/ush/interp_atmos_sflux.sh"} +INTERP_ATMOS_MASTERSH=${INTERP_ATMOS_MASTERSH:-"${USHgfs}/interp_atmos_master.sh"} +INTERP_ATMOS_SFLUXSH=${INTERP_ATMOS_SFLUXSH:-"${USHgfs}/interp_atmos_sflux.sh"} # Variables used in this job downset=${downset:-1} # No. of groups of pressure grib2 products to create @@ -133,7 +133,7 @@ for (( nset=1 ; nset <= downset ; nset++ )); do # Run with MPMD or serial if [[ "${USE_CFP:-}" = "YES" ]]; then - OMP_NUM_THREADS=1 "${HOMEgfs}/ush/run_mpmd.sh" "${DATA}/poescript" + OMP_NUM_THREADS=1 "${USHgfs}/run_mpmd.sh" "${DATA}/poescript" export err=$? else chmod 755 "${DATA}/poescript" diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index 60869181f3..fd358f4508 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -19,7 +19,7 @@ # Set environment. -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -37,7 +37,7 @@ export NCP=${NCP:-"/bin/cp"} export NMV=${NMV:-"/bin/mv"} export NLN=${NLN:-"/bin/ln -sf"} export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} -export NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} +export NCLEN=${NCLEN:-${USHgfs}/getncdimlen} COMPRESS=${COMPRESS:-gzip} UNCOMPRESS=${UNCOMPRESS:-gunzip} APRUNCFP=${APRUNCFP:-""} @@ -47,8 +47,8 @@ DOIAU=${DOIAU:-"NO"} export IAUFHRS=${IAUFHRS:-"6"} # Surface cycle related parameters -CYCLESH=${CYCLESH:-${HOMEgfs}/ush/global_cycle.sh} -export CYCLEXEC=${CYCLEXEC:-${HOMEgfs}/exec/global_cycle} +CYCLESH=${CYCLESH:-${USHgfs}/global_cycle.sh} +export CYCLEXEC=${CYCLEXEC:-${EXECgfs}/global_cycle} NTHREADS_CYCLE=${NTHREADS_CYCLE:-24} APRUN_CYCLE=${APRUN_CYCLE:-${APRUN:-""}} export SNOW_NUDGE_COEFF=${SNOW_NUDGE_COEFF:-'-2.'} @@ -70,15 +70,15 @@ export APRUN_CALCINC=${APRUN_CALCINC:-${APRUN:-""}} export APRUN_CALCANL=${APRUN_CALCANL:-${APRUN:-""}} export APRUN_CHGRES=${APRUN_CALCANL:-${APRUN:-""}} -export CALCANLEXEC=${CALCANLEXEC:-${HOMEgfs}/exec/calc_analysis.x} -export CHGRESNCEXEC=${CHGRESNCEXEC:-${HOMEgfs}/exec/enkf_chgres_recenter_nc.x} -export CHGRESINCEXEC=${CHGRESINCEXEC:-${HOMEgfs}/exec/interp_inc.x} +export CALCANLEXEC=${CALCANLEXEC:-${EXECgfs}/calc_analysis.x} +export CHGRESNCEXEC=${CHGRESNCEXEC:-${EXECgfs}/enkf_chgres_recenter_nc.x} +export CHGRESINCEXEC=${CHGRESINCEXEC:-${EXECgfs}/interp_inc.x} export NTHREADS_CHGRES=${NTHREADS_CHGRES:-1} -CALCINCPY=${CALCINCPY:-${HOMEgfs}/ush/calcinc_gfs.py} -CALCANLPY=${CALCANLPY:-${HOMEgfs}/ush/calcanl_gfs.py} +CALCINCPY=${CALCINCPY:-${USHgfs}/calcinc_gfs.py} +CALCANLPY=${CALCANLPY:-${USHgfs}/calcanl_gfs.py} export APRUN_CHGRES=${APRUN_CALCANL:-${APRUN:-""}} -CHGRESEXEC=${CHGRESEXEC:-${HOMEgfs}/exec/enkf_chgres_recenter.x} +CHGRESEXEC=${CHGRESEXEC:-${EXECgfs}/enkf_chgres_recenter.x} # OPS flags RUN=${RUN:-""} diff --git a/scripts/exglobal_atmos_tropcy_qc_reloc.sh b/scripts/exglobal_atmos_tropcy_qc_reloc.sh index 380441a6c9..f1272b1844 100755 --- a/scripts/exglobal_atmos_tropcy_qc_reloc.sh +++ b/scripts/exglobal_atmos_tropcy_qc_reloc.sh @@ -10,7 +10,7 @@ # echo " Oct 2013 - Use main USH vars as part of minor pkg cleanup" ############################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Make sure we are in the $DATA directory cd $DATA @@ -50,7 +50,7 @@ if [ "$PROCESS_TROPCY" = 'YES' ]; then #echo $PDY - ${USHSYND:-$HOMEgfs/ush}/syndat_qctropcy.sh $cdate10 + ${USHgfs}/syndat_qctropcy.sh $cdate10 errsc=$? if [ "$errsc" -ne '0' ]; then echo "syndat_qctropcy.sh failed. exit" @@ -95,7 +95,7 @@ if [ "$DO_RELOCATE" = 'YES' ]; then ################################################### export MP_LABELIO=${MP_LABELIO:-yes} - $USHRELO/tropcy_relocate.sh $cdate10 + ${USHgfs}/tropcy_relocate.sh $cdate10 errsc=$? [ "$errsc" -ne '0' ] && exit $errsc diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index aac63f3fb3..b4307c8af9 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ #### UNIX Script Documentation Block diff --git a/scripts/exglobal_cleanup.sh b/scripts/exglobal_cleanup.sh index 5d7c0a9788..8141de771a 100755 --- a/scripts/exglobal_cleanup.sh +++ b/scripts/exglobal_cleanup.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ############################################################### # Clean up previous cycles; various depths diff --git a/scripts/exglobal_diag.sh b/scripts/exglobal_diag.sh index 3836643afc..ad4c4be4a8 100755 --- a/scripts/exglobal_diag.sh +++ b/scripts/exglobal_diag.sh @@ -19,7 +19,7 @@ # Set environment. -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Directories. pwd=$(pwd) @@ -34,7 +34,7 @@ export NCP=${NCP:-"/bin/cp"} export NMV=${NMV:-"/bin/mv"} export NLN=${NLN:-"/bin/ln -sf"} export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} -export NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} +export NCLEN=${NCLEN:-${USHgfs}/getncdimlen} export CATEXEC=${CATEXEC:-${ncdiag_ROOT:-${gsi_ncdiag_ROOT}}/bin/ncdiag_cat_serial.x} COMPRESS=${COMPRESS:-gzip} UNCOMPRESS=${UNCOMPRESS:-gunzip} diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index c548b827e5..0a6329910e 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -77,14 +77,14 @@ # Main body starts here ####################### -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # include all subroutines. Executions later. -source "${HOMEgfs}/ush/forecast_predet.sh" # include functions for variable definition -source "${HOMEgfs}/ush/forecast_det.sh" # include functions for run type determination -source "${HOMEgfs}/ush/forecast_postdet.sh" # include functions for variables after run type determination -source "${HOMEgfs}/ush/parsing_ufs_configure.sh" # include functions for ufs_configure processing -source "${HOMEgfs}/ush/parsing_model_configure_FV3.sh" +source "${USHgfs}/forecast_predet.sh" # include functions for variable definition +source "${USHgfs}/forecast_det.sh" # include functions for run type determination +source "${USHgfs}/forecast_postdet.sh" # include functions for variables after run type determination +source "${USHgfs}/parsing_ufs_configure.sh" # include functions for ufs_configure processing +source "${USHgfs}/parsing_model_configure_FV3.sh" # Coupling control switches, for coupling purpose, off by default cpl=${cpl:-.false.} @@ -149,7 +149,7 @@ if [[ "${esmf_profile:-}" = ".true." ]]; then export ESMF_RUNTIME_PROFILE_OUTPUT=SUMMARY fi -${NCP} "${FCSTEXECDIR}/${FCSTEXEC}" "${DATA}/" +${NCP} "${EXECgfs}/${FCSTEXEC}" "${DATA}/" ${APRUN_UFS} "${DATA}/${FCSTEXEC}" 1>&1 2>&2 export ERR=$? export err=${ERR} diff --git a/scripts/exglobal_oceanice_products.py b/scripts/exglobal_oceanice_products.py index 0f8e2e0d6d..9bb2b09596 100755 --- a/scripts/exglobal_oceanice_products.py +++ b/scripts/exglobal_oceanice_products.py @@ -19,8 +19,8 @@ def main(): # Pull out all the configuration keys needed to run the rest of steps keys = ['HOMEgfs', 'DATA', 'current_cycle', 'RUN', 'NET', - 'COM_OCEAN_HISTORY', 'COM_OCEAN_GRIB', - 'COM_ICE_HISTORY', 'COM_ICE_GRIB', + f'COM_{oceanice.task_config.component.upper()}_HISTORY', + f'COM_{oceanice.task_config.component.upper()}_GRIB', 'APRUN_OCNICEPOST', 'component', 'forecast_hour', 'valid_datetime', 'avg_period', 'model_grid', 'product_grids', 'oceanice_yaml'] diff --git a/scripts/exglobal_stage_ic.sh b/scripts/exglobal_stage_ic.sh index c12eaa84e0..6a1be22e71 100755 --- a/scripts/exglobal_stage_ic.sh +++ b/scripts/exglobal_stage_ic.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Locally scoped variables and functions # shellcheck disable=SC2153 diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 37a28d114c..dd350d7e4d 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 37a28d114c9be6dccff890b33d742b03c22f07c1 +Subproject commit dd350d7e4daab0977407e388711807f13b204f6f diff --git a/sorc/gsi_monitor.fd b/sorc/gsi_monitor.fd index 4e0f72b8f6..149cd811f2 160000 --- a/sorc/gsi_monitor.fd +++ b/sorc/gsi_monitor.fd @@ -1 +1 @@ -Subproject commit 4e0f72b8f6117d278c1414de8cb265cb2f41145d +Subproject commit 149cd811f273883e7d6400eded7b980acd65ca2b diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index 97af110077..2b54f3ea10 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -323,6 +323,10 @@ if [[ -d "${HOMEgfs}/sorc/gdas.cd/build" ]]; then "fv3jedi_enshofx.x" \ "fv3jedi_hofx_nomodel.x" \ "fv3jedi_testdata_downloader.py" \ + "gdas_ens_handler.x" \ + "gdas_incr_handler.x" \ + "gdas_obsprovider2ioda.x" \ + "gdas_socahybridweights.x" \ "soca_convertincrement.x" \ "soca_error_covariance_training.x" \ "soca_setcorscales.x" \ diff --git a/sorc/ufs_utils.fd b/sorc/ufs_utils.fd index 47956a96a7..1dac85544d 160000 --- a/sorc/ufs_utils.fd +++ b/sorc/ufs_utils.fd @@ -1 +1 @@ -Subproject commit 47956a96a7dc14e33fbccbb7fe74422f9bf542bf +Subproject commit 1dac85544dd4134de7cb899214c7db67bbe8c0b4 diff --git a/sorc/wxflow b/sorc/wxflow index dd9ca24a5b..942b90bfaa 160000 --- a/sorc/wxflow +++ b/sorc/wxflow @@ -1 +1 @@ -Subproject commit dd9ca24a5bb14b75acde685e5fa23b300fd47770 +Subproject commit 942b90bfaa14f6b6d7374310dbdfd421ddb30548 diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 644a2180da..1e244ab433 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -11,6 +11,8 @@ ## for execution. ##### +# Disable variable not used warnings +# shellcheck disable=SC2034 FV3_postdet(){ echo "SUB ${FUNCNAME[0]}: Entering for RUN = ${RUN}" @@ -190,7 +192,7 @@ EOF fi # NoahMP table - local noahmptablefile="${HOMEgfs}/parm/ufs/noahmptable.tbl" + local noahmptablefile="${PARMgfs}/ufs/noahmptable.tbl" if [[ ! -f ${noahmptablefile} ]]; then echo "FATAL ERROR: missing noahmp table file ${noahmptablefile}" exit 1 @@ -488,7 +490,7 @@ FV3_nml(){ # namelist output for a certain component echo "SUB ${FUNCNAME[0]}: Creating name lists and model configure file for FV3" # Call child scripts in current script directory - source "${HOMEgfs}/ush/parsing_namelists_FV3.sh" + source "${USHgfs}/parsing_namelists_FV3.sh" FV3_namelists echo "SUB ${FUNCNAME[0]}: FV3 name lists and model configure file created" } @@ -652,7 +654,7 @@ WW3_nml() { exit 4 fi fi - source "${HOMEgfs}/ush/parsing_namelists_WW3.sh" + source "${USHgfs}/parsing_namelists_WW3.sh" WW3_namelists } @@ -803,7 +805,7 @@ MOM6_postdet() { MOM6_nml() { echo "SUB ${FUNCNAME[0]}: Creating name list for MOM6" - source "${HOMEgfs}/ush/parsing_namelists_MOM6.sh" + source "${USHgfs}/parsing_namelists_MOM6.sh" MOM6_namelists } @@ -884,7 +886,7 @@ CICE_postdet() { CICE_nml() { echo "SUB ${FUNCNAME[0]}: Creating name list for CICE" - source "${HOMEgfs}/ush/parsing_namelists_CICE.sh" + source "${USHgfs}/parsing_namelists_CICE.sh" CICE_namelists } @@ -929,7 +931,7 @@ GOCART_rc() { GOCART_postdet() { echo "SUB ${FUNCNAME[0]}: Linking output data for GOCART" - for fhr in ${FV3_OUTPUT_FH}; do + for fhr in ${GOCART_OUTPUT_FH}; do local vdate=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${fhr} hours" +%Y%m%d%H) # Temporarily delete existing files due to noclobber in GOCART @@ -950,7 +952,7 @@ GOCART_out() { # TO DO: this should be linked but there were issues where gocart was crashing if it was linked local fhr local vdate - for fhr in ${FV3_OUTPUT_FH}; do + for fhr in ${GOCART_OUTPUT_FH}; do if (( fhr == 0 )); then continue; fi vdate=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${fhr} hours" +%Y%m%d%H) ${NCP} "${DATA}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" \ diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index ab02270b46..b5e1ad8e82 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -10,30 +10,33 @@ to_seconds() { # Function to convert HHMMSS to seconds since 00Z - local hhmmss=${1:?} - local hh=${hhmmss:0:2} - local mm=${hhmmss:2:2} - local ss=${hhmmss:4:2} - local seconds=$((10#${hh}*3600+10#${mm}*60+10#${ss})) - local padded_seconds=$(printf "%05d" "${seconds}") + local hhmmss hh mm ss seconds padded_seconds + hhmmss=${1:?} + hh=${hhmmss:0:2} + mm=${hhmmss:2:2} + ss=${hhmmss:4:2} + seconds=$((10#${hh}*3600+10#${mm}*60+10#${ss})) + padded_seconds=$(printf "%05d" "${seconds}") echo "${padded_seconds}" } middle_date(){ # Function to calculate mid-point date in YYYYMMDDHH between two dates also in YYYYMMDDHH - local date1=${1:?} - local date2=${2:?} - local date1s=$(date --utc -d "${date1:0:8} ${date1:8:2}:00:00" +%s) - local date2s=$(date --utc -d "${date2:0:8} ${date2:8:2}:00:00" +%s) - local dtsecsby2=$(( $((date2s - date1s)) / 2 )) - local mid_date=$(date --utc -d "${date1:0:8} ${date1:8:2} + ${dtsecsby2} seconds" +%Y%m%d%H%M%S) + local date1 date2 date1s date2s dtsecsby2 mid_date + date1=${1:?} + date2=${2:?} + date1s=$(date --utc -d "${date1:0:8} ${date1:8:2}:00:00" +%s) + date2s=$(date --utc -d "${date2:0:8} ${date2:8:2}:00:00" +%s) + dtsecsby2=$(( $((date2s - date1s)) / 2 )) + mid_date=$(date --utc -d "${date1:0:8} ${date1:8:2} + ${dtsecsby2} seconds" +%Y%m%d%H%M%S) echo "${mid_date:0:10}" } nhour(){ # Function to calculate hours between two dates (This replicates prod-util NHOUR) - local date1=${1:?} - local date2=${2:?} + local date1 date2 seconds1 seconds2 hours + date1=${1:?} + date2=${2:?} # Convert dates to UNIX timestamps seconds1=$(date --utc -d "${date1:0:8} ${date1:8:2}:00:00" +%s) seconds2=$(date --utc -d "${date2:0:8} ${date2:8:2}:00:00" +%s) @@ -41,21 +44,17 @@ nhour(){ echo "${hours}" } +# shellcheck disable=SC2034 common_predet(){ echo "SUB ${FUNCNAME[0]}: Defining variables for shared through model components" - # Ignore "not used" warning - # shellcheck disable=SC2034 pwd=$(pwd) CDUMP=${CDUMP:-gdas} - CASE=${CASE:-C96} CDATE=${CDATE:-"${PDY}${cyc}"} ENSMEM=${ENSMEM:-000} # Define significant cycles current_cycle="${PDY}${cyc}" previous_cycle=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} - ${assim_freq} hours" +%Y%m%d%H) - # ignore errors that variable isn't used - # shellcheck disable=SC2034 next_cycle=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${assim_freq} hours" +%Y%m%d%H) forecast_end_cycle=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${FHMAX} hours" +%Y%m%d%H) @@ -89,6 +88,7 @@ common_predet(){ cd "${DATA}" || ( echo "FATAL ERROR: Unable to 'cd ${DATA}', ABORT!"; exit 8 ) } +# shellcheck disable=SC2034 FV3_predet(){ echo "SUB ${FUNCNAME[0]}: Defining variables for FV3" @@ -105,8 +105,6 @@ FV3_predet(){ fi # Convert output settings into an explicit list for FV3 - # Ignore "not used" warning - # shellcheck disable=SC2034 FV3_OUTPUT_FH="" local fhr=${FHMIN} if (( FHOUT_HF > 0 && FHMAX_HF > 0 )); then @@ -116,8 +114,6 @@ FV3_predet(){ FV3_OUTPUT_FH="${FV3_OUTPUT_FH} $(seq -s ' ' "${fhr}" "${FHOUT}" "${FHMAX}")" # Other options - # ignore errors that variable isn't used - # shellcheck disable=SC2034 MEMBER=$(( 10#${ENSMEM:-"-1"} )) # -1: control, 0: ensemble mean, >0: ensemble member $MEMBER PREFIX_ATMINC=${PREFIX_ATMINC:-""} # allow ensemble to use recentered increment @@ -169,7 +165,6 @@ FV3_predet(){ nstf_name=${nstf_name:-"${NST_MODEL},${NST_SPINUP},${NST_RESV},${ZSEA1},${ZSEA2}"} nst_anl=${nst_anl:-".false."} - # blocking factor used for threading and general physics performance #nyblocks=$(expr \( $npy - 1 \) \/ $layout_y ) #nxblocks=$(expr \( $npx - 1 \) \/ $layout_x \/ 32) @@ -215,6 +210,7 @@ WW3_predet(){ ${NLN} "${COM_WAVE_RESTART}" "restart_wave" } +# shellcheck disable=SC2034 CICE_predet(){ echo "SUB ${FUNCNAME[0]}: CICE before run type determination" @@ -227,12 +223,11 @@ CICE_predet(){ # CICE does not have a concept of high frequency output like FV3 # Convert output settings into an explicit list for CICE - # Ignore "not used" warning - # shellcheck disable=SC2034 CICE_OUTPUT_FH=$(seq -s ' ' "${FHMIN}" "${FHOUT_OCNICE}" "${FHMAX}") } +# shellcheck disable=SC2034 MOM6_predet(){ echo "SUB ${FUNCNAME[0]}: MOM6 before run type determination" @@ -245,8 +240,6 @@ MOM6_predet(){ # MOM6 does not have a concept of high frequency output like FV3 # Convert output settings into an explicit list for MOM6 - # Ignore "not used" warning - # shellcheck disable=SC2034 MOM6_OUTPUT_FH=$(seq -s ' ' "${FHMIN}" "${FHOUT_OCNICE}" "${FHMAX}") } @@ -260,9 +253,12 @@ CMEPS_predet(){ } +# shellcheck disable=SC2034 GOCART_predet(){ echo "SUB ${FUNCNAME[0]}: GOCART before run type determination" if [[ ! -d "${COM_CHEM_HISTORY}" ]]; then mkdir -p "${COM_CHEM_HISTORY}"; fi + GOCART_OUTPUT_FH=$(seq -s ' ' "${FHMIN}" "6" "${FHMAX}") + # TODO: AERO_HISTORY.rc has hardwired output frequency to 6 hours } diff --git a/ush/fv3gfs_remap.sh b/ush/fv3gfs_remap.sh deleted file mode 100755 index eaf2c64a01..0000000000 --- a/ush/fv3gfs_remap.sh +++ /dev/null @@ -1,116 +0,0 @@ -#! /usr/bin/env bash - -#-------------------------------------- -#-- remap FV3 6 tiles to global array -#-- Fanglin Yang, October 2016 -#-------------------------------------- - -source "$HOMEgfs/ush/preamble.sh" - -export CDATE=${CDATE:-"2016100300"} -export CASE=${CASE:-"C192"} # C48 C96 C192 C384 C768 C1152 C3072 -export GG=${master_grid:-"0p25deg"} # 1deg 0p5deg 0p25deg 0p125deg - -pwd=$(pwd) -export DATA=${DATA:-$pwd} -export HOMEgfs=${HOMEgfs:-$PACKAGEROOT} -export REMAPEXE=${REMAPEXE:-$HOMEgfs/exec/fregrid_parallel} -export IPD4=${IPD4:-"YES"} - -cycn=$(echo $CDATE | cut -c 9-10) -export TCYC=${TCYC:-".t${cycn}z."} -export CDUMP=${CDUMP:-gfs} -export PREFIX=${PREFIX:-${CDUMP}${TCYC}} - -#-------------------------------------------------- -export grid_loc=${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc -export weight_file=${FIXgfs}/orog/${CASE}/remap_weights_${CASE}_${GG}.nc - -export APRUN_REMAP=${APRUN_REMAP:-${APRUN:-""}} -export NTHREADS_REMAP=${NTHREADS_REMAP:-${NTHREADS:-1}} - -#-------------------------------------------------- -if [ $GG = 1deg ]; then export nlon=360 ; export nlat=180 ; fi -if [ $GG = 0p5deg ]; then export nlon=720 ; export nlat=360 ; fi -if [ $GG = 0p25deg ]; then export nlon=1440 ; export nlat=720 ; fi -if [ $GG = 0p125deg ]; then export nlon=2880 ; export nlat=1440 ; fi - -#-------------------------------------------------- -hgt=h; if [ $IPD4 = YES ]; then hgt=z; fi - -#--for non-hydrostatic case -export atmos_4xdaily_nh="slp, vort850, vort200,\ - us, u1000, u850, u700, u500, u200, u100, u50, u10,\ - vs, v1000, v850, v700, v500, v200, v100, v50, v10,\ - tm, t1000, t850, t700, t500, t200, t100, t50, t10,\ - ${hgt}1000, ${hgt}850, ${hgt}700, ${hgt}500, ${hgt}200, ${hgt}100, ${hgt}50, ${hgt}10,\ - q1000, q850, q700, q500, q200, q100, q50, q10,\ - rh1000, rh850, rh700, rh500, rh200,\ - omg1000, omg850, omg700, omg500, omg200, omg100, omg50, omg10,\ - w700,w850,w500, w200" - -#--for hydrostatic case -export atmos_4xdaily_hy="slp, vort850, vort200,\ - us, u1000, u850, u700, u500, u200, u100, u50, u10,\ - vs, v1000, v850, v700, v500, v200, v100, v50, v10,\ - tm, t1000, t850, t700, t500, t200, t100, t50, t10,\ - ${hgt}1000, ${hgt}850, ${hgt}700, ${hgt}500, ${hgt}200, ${hgt}100, ${hgt}50, ${hgt}10,\ - q1000, q850, q700, q500, q200, q100, q50, q10,\ - rh1000, rh850, rh700, rh500, rh200,\ - omg1000, omg850, omg700, omg500, omg200, omg100, omg50, omg10,\ - w700" - -export nggps2d_nh="ALBDOsfc, CPRATsfc, PRATEsfc, DLWRFsfc, ULWRFsfc,\ - DSWRFsfc, USWRFsfc, DSWRFtoa, USWRFtoa, ULWRFtoa,\ - GFLUXsfc, HGTsfc, HPBLsfc, ICECsfc, SLMSKsfc,\ - LHTFLsfc, SHTFLsfc, PRESsfc, PWATclm, SOILM,\ - SOILW1, SOILW2, SOILW3, SOILW4, SPFH2m,\ - TCDCclm, TCDChcl, TCDClcl, TCDCmcl,\ - SOILT1, SOILT2, SOILT3, SOILT4,\ - TMP2m, TMPsfc, UGWDsfc, VGWDsfc, UFLXsfc,\ - VFLXsfc, UGRD10m, VGRD10m, WEASDsfc, SNODsfc,\ - ZORLsfc, VFRACsfc, F10Msfc, VTYPEsfc, STYPEsfc" -export nggps2d_hy="$nggps2d_nh" - -export nggps3d_nh="ucomp, vcomp, temp, delp, sphum, o3mr, clwmr, nhpres, w, delz" #for non-hydrostatic case -export nggps3d_hy="ucomp, vcomp, temp, delp, sphum, o3mr, clwmr, hypres" #for hydrostatic case - -#-------------------------------------------------- -cd $DATA || exit 8 - -testfile=nggps3d.tile4.nc -nhrun=$(ncdump -c $testfile | grep nhpres) -nhrun=$? - -export OMP_NUM_THREADS=$NTHREADS_REMAP - -#-------------------------------------------------- -err=0 -for type in atmos_4xdaily nggps2d nggps3d ; do - - export in_file="$type" - export out_file=${PREFIX}${type}.${GG}.nc - [[ -s $DATA/$out_file ]] && rm -f $DATA/$out_file - if [ $nhrun -eq 0 ]; then - export fld=$(eval echo \${${type}_nh}) - else - export fld=$(eval echo \${${type}_hy}) - fi - - $APRUN_REMAP $REMAPEXE --input_dir $DATA \ - --input_file $in_file \ - --output_dir $DATA \ - --output_file $out_file \ - --input_mosaic $grid_loc \ - --scalar_field "$fld" \ - --interp_method conserve_order1 \ - --remap_file $weight_file \ - --nlon $nlon \ - --nlat $nlat - rc=$? - ((err+=$rc)) - -done - -exit $err - diff --git a/ush/gaussian_sfcanl.sh b/ush/gaussian_sfcanl.sh index 79b2cb5b7d..5c6c842845 100755 --- a/ush/gaussian_sfcanl.sh +++ b/ush/gaussian_sfcanl.sh @@ -23,13 +23,7 @@ # OUTPUT_FILE Output gaussian analysis file format. Default is "nemsio" # Set to "netcdf" for netcdf output file # Otherwise, output in nemsio. -# BASEDIR Root directory where all scripts and fixed files reside. -# Default is /nwprod2. -# HOMEgfs Directory for gfs version. Default is -# $BASEDIR/gfs_ver.v15.0.0} # FIXWGTS Weight file to use for interpolation -# EXECgfs Directory of the program executable. Defaults to -# $HOMEgfs/exec # DATA Working directory # (if nonexistent will be made, used and deleted) # Defaults to current working directory @@ -106,7 +100,7 @@ # ################################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" CASE=${CASE:-C768} res=$(echo $CASE | cut -c2-) @@ -117,11 +111,6 @@ LATB_SFC=${LATB_SFC:-$LATB_CASE} DONST=${DONST:-"NO"} LEVS=${LEVS:-64} LEVSP1=$(($LEVS+1)) -# Directories. -gfs_ver=${gfs_ver:-v16.3.0} -BASEDIR=${BASEDIR:-${PACKAGEROOT:-/lfs/h1/ops/prod/packages}} -HOMEgfs=${HOMEgfs:-$BASEDIR/gfs.${gfs_ver}} -EXECgfs=${EXECgfs:-$HOMEgfs/exec} FIXWGTS=${FIXWGTS:-${FIXgfs}/orog/${CASE}/fv3_SCRIP_${CASE}_GRIDSPEC_lon${LONB_SFC}_lat${LATB_SFC}.gaussian.neareststod.nc} DATA=${DATA:-$(pwd)} diff --git a/ush/getdump.sh b/ush/getdump.sh index 462ca5e755..7ab241ca1a 100755 --- a/ush/getdump.sh +++ b/ush/getdump.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" COMPONENT=${COMPONENT:-atmos} diff --git a/ush/getges.sh b/ush/getges.sh index 2fb54fccc7..d960354bf4 100755 --- a/ush/getges.sh +++ b/ush/getges.sh @@ -76,7 +76,7 @@ ################################################################################ #------------------------------------------------------------------------------- -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Set some default parameters. fhbeg=03 # hour to begin searching backward for guess diff --git a/ush/gfs_bfr2gpk.sh b/ush/gfs_bfr2gpk.sh index add68536ec..dbd8defb0e 100755 --- a/ush/gfs_bfr2gpk.sh +++ b/ush/gfs_bfr2gpk.sh @@ -10,7 +10,7 @@ # Log: # # K. Brill/HPC 04/12/05 # ######################################################################### -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Set GEMPAK paths. diff --git a/ush/gfs_bufr.sh b/ush/gfs_bufr.sh index 5ed05f9beb..54e8ec52b5 100755 --- a/ush/gfs_bufr.sh +++ b/ush/gfs_bufr.sh @@ -17,9 +17,10 @@ # 2018-05-22 Guang Ping Lou: Making it work for both GFS and FV3GFS # 2018-05-30 Guang Ping Lou: Make sure all files are available. # 2019-10-10 Guang Ping Lou: Read in NetCDF files +# 2024-03-03 Bo Cui: Add options to use different bufr table for different resolution NetCDF files # echo "History: February 2003 - First implementation of this utility script" # -source "${HOMEgfs:?}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" if [[ "${F00FLAG}" == "YES" ]]; then f00flag=".true." @@ -76,11 +77,23 @@ for (( hr = 10#${FSTART}; hr <= 10#${FEND}; hr = hr + 10#${FINT} )); do done # define input BUFR table file. -ln -sf "${PARMbufrsnd}/bufr_gfs_${CLASS}.tbl" fort.1 -ln -sf "${STNLIST:-${PARMbufrsnd}/bufr_stalist.meteo.gfs}" fort.8 -ln -sf "${PARMbufrsnd}/bufr_ij13km.txt" fort.7 +ln -sf "${PARMgfs}/product/bufr_gfs_${CLASS}.tbl" fort.1 +ln -sf "${STNLIST:-${PARMgfs}/product/bufr_stalist.meteo.gfs}" fort.8 -${APRUN_POSTSND} "${EXECbufrsnd}/${pgm}" < gfsparm > "out_gfs_bufr_${FEND}" +case "${CASE}" in + "C768") + ln -sf "${PARMbufrsnd}/bufr_ij13km.txt" fort.7 + ;; + "C1152") + ln -sf "${PARMbufrsnd}/bufr_ij9km.txt" fort.7 + ;; + *) + echo "FATAL ERROR: Unrecognized bufr_ij*km.txt For CASE ${CASE}, ABORT!" + exit 1 + ;; +esac + +${APRUN_POSTSND} "${EXECgfs}/${pgm}" < gfsparm > "out_gfs_bufr_${FEND}" export err=$? if [ $err -ne 0 ]; then diff --git a/ush/gfs_bufr_netcdf.sh b/ush/gfs_bufr_netcdf.sh index b358c6b69a..843922e53b 100755 --- a/ush/gfs_bufr_netcdf.sh +++ b/ush/gfs_bufr_netcdf.sh @@ -19,7 +19,7 @@ # 2019-10-10 Guang Ping Lou: Read in NetCDF files # echo "History: February 2003 - First implementation of this utility script" # -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" if test "$F00FLAG" = "YES" then @@ -105,11 +105,11 @@ do done # define input BUFR table file. -ln -sf $PARMbufrsnd/bufr_gfs_${CLASS}.tbl fort.1 -ln -sf ${STNLIST:-$PARMbufrsnd/bufr_stalist.meteo.gfs} fort.8 -ln -sf $PARMbufrsnd/bufr_ij13km.txt fort.7 +ln -sf ${PARMgfs}/product/bufr_gfs_${CLASS}.tbl fort.1 +ln -sf ${STNLIST:-${PARMgfs}/product/bufr_stalist.meteo.gfs} fort.8 +ln -sf ${PARMgfs}/product/bufr_ij13km.txt fort.7 -${APRUN_POSTSND} "${EXECbufrsnd}/${pgm}" < gfsparm > "out_gfs_bufr_${FEND}" +${APRUN_POSTSND} "${EXECgfs}/${pgm}" < gfsparm > "out_gfs_bufr_${FEND}" export err=$? exit ${err} diff --git a/ush/gfs_sndp.sh b/ush/gfs_sndp.sh index e07b3eb42c..ade49eec36 100755 --- a/ush/gfs_sndp.sh +++ b/ush/gfs_sndp.sh @@ -7,7 +7,7 @@ # 1) 2004-09-10 Steve Gilbert First Implementation ################################################################ -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Create "collectives" consisting of groupings of the soundings # into files designated by geographical region. Each input @@ -16,7 +16,7 @@ source "$HOMEgfs/ush/preamble.sh" export m=$1 mkdir $DATA/$m cd $DATA/$m - cp ${HOMEgfs}/fix/product/gfs_collective${m}.list $DATA/$m/. + cp ${FIXgfs}/product/gfs_collective${m}.list $DATA/$m/. CCCC=KWBC file_list=gfs_collective${m}.list @@ -37,7 +37,7 @@ cd $DATA/$m #. prep_step export FORT11=$DATA/${m}/bufrin export FORT51=./bufrout - ${EXECbufrsnd}/${pgm} << EOF + ${EXECgfs}/${pgm} << EOF &INPUT BULHED="$WMOHEAD",KWBX="$CCCC", NCEP2STD=.TRUE., diff --git a/ush/gfs_truncate_enkf.sh b/ush/gfs_truncate_enkf.sh index 8aa47e26e2..6102ada75d 100755 --- a/ush/gfs_truncate_enkf.sh +++ b/ush/gfs_truncate_enkf.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" member=$1 export SIGINP=$2 diff --git a/ush/global_savefits.sh b/ush/global_savefits.sh index f26132dd8a..973d27a358 100755 --- a/ush/global_savefits.sh +++ b/ush/global_savefits.sh @@ -3,7 +3,7 @@ ######################################################## # save fit and horiz files for all analysis cycles ######################################################## -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" export FIT_DIR=${FIT_DIR:-$COMOUT/fits} export HORZ_DIR=${HORZ_DIR:-$COMOUT/horiz} diff --git a/ush/hpssarch_gen.sh b/ush/hpssarch_gen.sh index 903c2d63fb..eadd465421 100755 --- a/ush/hpssarch_gen.sh +++ b/ush/hpssarch_gen.sh @@ -4,7 +4,7 @@ # Fanglin Yang, 20180318 # --create bunches of files to be archived to HPSS ################################################### -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" type=${1:-gfs} ##gfs, gdas, enkfgdas or enkfggfs diff --git a/ush/interp_atmos_master.sh b/ush/interp_atmos_master.sh index 0abc6ad185..4c4ee4b03c 100755 --- a/ush/interp_atmos_master.sh +++ b/ush/interp_atmos_master.sh @@ -4,7 +4,7 @@ # Generate 0.25 / 0.5 / 1 degree interpolated grib2 files for each input grib2 file # trim's RH and tweaks sea-ice cover -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" input_file=${1:-"pgb2file_in"} # Input pressure grib2 file output_file_prefix=${2:-"pgb2file_out"} # Prefix for output grib2 file; the prefix is appended by resolution e.g. _0p25 @@ -29,7 +29,7 @@ grid0p50="latlon 0:720:0.5 90:361:-0.5" grid1p00="latlon 0:360:1.0 90:181:-1.0" # "Import" functions used in this script -source "${HOMEgfs}/ush/product_functions.sh" +source "${USHgfs}/product_functions.sh" # Transform the input ${grid_string} into an array for processing IFS=':' read -ra grids <<< "${grid_string}" diff --git a/ush/interp_atmos_sflux.sh b/ush/interp_atmos_sflux.sh index 516a2f5e4a..cdf748f666 100755 --- a/ush/interp_atmos_sflux.sh +++ b/ush/interp_atmos_sflux.sh @@ -3,7 +3,7 @@ # This script takes in a master flux file and creates interpolated flux files at various interpolated resolutions # Generate 0.25 / 0.5 / 1 degree interpolated grib2 flux files for each input sflux grib2 file -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" input_file=${1:-"sfluxfile_in"} # Input sflux grib2 file output_file_prefix=${2:-"sfluxfile_out"} # Prefix for output sflux grib2 file; the prefix is appended by resolution e.g. _0p25 @@ -46,4 +46,4 @@ ${WGRIB2} "${input_file}" ${defaults} \ ${output_grids} export err=$?; err_chk -exit 0 \ No newline at end of file +exit 0 diff --git a/ush/link_crtm_fix.sh b/ush/link_crtm_fix.sh index 61ac3f7870..5204c3e3da 100755 --- a/ush/link_crtm_fix.sh +++ b/ush/link_crtm_fix.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # Get CRTM fix directory from (in this order): # 1. First argument to script, or diff --git a/ush/oceanice_nc2grib2.sh b/ush/oceanice_nc2grib2.sh index 1d0e5ae274..2afd0e07f2 100755 --- a/ush/oceanice_nc2grib2.sh +++ b/ush/oceanice_nc2grib2.sh @@ -3,7 +3,7 @@ # This script contains functions to convert ocean/ice rectilinear netCDF files to grib2 format # This script uses the wgrib2 utility to convert the netCDF files to grib2 format and then indexes it -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" ################################################################################ function _ice_nc2grib2 { diff --git a/ush/ozn_xtrct.sh b/ush/ozn_xtrct.sh index 57ff87be5f..0c623bf03c 100755 --- a/ush/ozn_xtrct.sh +++ b/ush/ozn_xtrct.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "${HOMEgfs}/ush/preamble.sh" +source "${USHgfs}/preamble.sh" #------------------------------------------------------------------ # ozn_xtrct.sh @@ -132,12 +132,12 @@ else #-------------------------------------------------------------------- # Copy extraction programs to working directory # - ${NCP} "${HOMEgfs}/exec/oznmon_time.x" ./oznmon_time.x + ${NCP} "${EXECgfs}/oznmon_time.x" ./oznmon_time.x if [[ ! -e oznmon_time.x ]]; then iret=2 exit ${iret} fi - ${NCP} "${HOMEgfs}/exec/oznmon_horiz.x" ./oznmon_horiz.x + ${NCP} "${EXECgfs}/oznmon_horiz.x" ./oznmon_horiz.x if [[ ! -e oznmon_horiz.x ]]; then iret=3 exit ${iret} diff --git a/ush/parsing_model_configure_FV3.sh b/ush/parsing_model_configure_FV3.sh index cd4f68df8b..0ec3517099 100755 --- a/ush/parsing_model_configure_FV3.sh +++ b/ush/parsing_model_configure_FV3.sh @@ -44,12 +44,12 @@ local OUTPUT_FH=${FV3_OUTPUT_FH} local IAU_OFFSET=${IAU_OFFSET:-0} # Ensure the template exists -template="${HOMEgfs}/parm/ufs/model_configure.IN" +template="${PARMgfs}/ufs/model_configure.IN" if [[ ! -f ${template} ]]; then echo "FATAL ERROR: template '${template}' does not exist, ABORT!" exit 1 fi -source "${HOMEgfs}/ush/atparse.bash" +source "${USHgfs}/atparse.bash" rm -f "${DATA}/model_configure" atparse < "${template}" >> "${DATA}/model_configure" echo "Rendered model_configure" diff --git a/ush/parsing_namelists_CICE.sh b/ush/parsing_namelists_CICE.sh index d749e6d890..ec44c7cdca 100755 --- a/ush/parsing_namelists_CICE.sh +++ b/ush/parsing_namelists_CICE.sh @@ -104,12 +104,12 @@ local CICE_BLCKY=${block_size_y} local CICE_DECOMP=${processor_shape} # Ensure the template exists -local template=${CICE_TEMPLATE:-"${HOMEgfs}/parm/ufs/ice_in.IN"} +local template=${CICE_TEMPLATE:-"${PARMgfs}/ufs/ice_in.IN"} if [[ ! -f "${template}" ]]; then echo "FATAL ERROR: template '${template}' does not exist, ABORT!" exit 1 fi -source "${HOMEgfs}/ush/atparse.bash" +source "${USHgfs}/atparse.bash" rm -f "${DATA}/ice_in" atparse < "${template}" >> "${DATA}/ice_in" echo "Rendered ice_in:" diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 88a0065076..14610f1201 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -14,10 +14,10 @@ FV3_namelists(){ # setup the tables -DIAG_TABLE=${DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table} -DIAG_TABLE_APPEND=${DIAG_TABLE_APPEND:-${HOMEgfs}/parm/ufs/fv3/diag_table_aod} -DATA_TABLE=${DATA_TABLE:-${HOMEgfs}/parm/ufs/MOM6_data_table.IN} -FIELD_TABLE=${FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table} +DIAG_TABLE=${DIAG_TABLE:-${PARMgfs}/ufs/fv3/diag_table} +DIAG_TABLE_APPEND=${DIAG_TABLE_APPEND:-${PARMgfs}/ufs/fv3/diag_table_aod} +DATA_TABLE=${DATA_TABLE:-${PARMgfs}/ufs/MOM6_data_table.IN} +FIELD_TABLE=${FIELD_TABLE:-${PARMgfs}/ufs/fv3/field_table} # ensure non-prognostic tracers are set dnats=${dnats:-0} @@ -42,7 +42,7 @@ local SYEAR=${current_cycle:0:4} local SMONTH=${current_cycle:4:2} local SDAY=${current_cycle:6:2} local CHOUR=${current_cycle:8:2} -source "${HOMEgfs}/ush/atparse.bash" +source "${USHgfs}/atparse.bash" atparse < "${template}" >> "diag_table" diff --git a/ush/parsing_namelists_MOM6.sh b/ush/parsing_namelists_MOM6.sh index ca93edb526..9c1378fec4 100755 --- a/ush/parsing_namelists_MOM6.sh +++ b/ush/parsing_namelists_MOM6.sh @@ -55,7 +55,7 @@ echo "Rendered input.nml:" cat input.nml # Source functions from this file for filling in templates -source "${HOMEgfs}/ush/atparse.bash" +source "${USHgfs}/atparse.bash" # ================================================================ # MOM_input @@ -107,7 +107,7 @@ else local PERT_EPBL="False" fi # Ensure the template exists -local template=${MOM6_INPUT_TEMPLATE:-"${HOMEgfs}/parm/ufs/MOM_input_${OCNRES}.IN"} +local template=${MOM6_INPUT_TEMPLATE:-"${PARMgfs}/ufs/MOM_input_${OCNRES}.IN"} if [[ ! -f "${template}" ]]; then echo "FATAL ERROR: template '${template}' does not exist, ABORT!" exit 1 @@ -124,7 +124,7 @@ cat "${DATA}/INPUT/MOM_input" local MOM6_FRUNOFF=${FRUNOFF} # Ensure the template exists -local template=${MOM6_DATA_TABLE_TEMPLATE:-"${HOMEgfs}/parm/ufs/MOM6_data_table.IN"} +local template=${MOM6_DATA_TABLE_TEMPLATE:-"${PARMgfs}/ufs/MOM6_data_table.IN"} if [[ ! -f "${template}" ]]; then echo "FATAL ERROR: template '${template}' does not exist, ABORT!" exit 1 diff --git a/ush/parsing_namelists_WW3.sh b/ush/parsing_namelists_WW3.sh index 9b0a94695c..a01d694710 100755 --- a/ush/parsing_namelists_WW3.sh +++ b/ush/parsing_namelists_WW3.sh @@ -79,8 +79,8 @@ WW3_namelists(){ if [ $waveMULTIGRID = ".true." ]; then # ww3_multi template - if [ -f $PARMwave/ww3_multi.inp.tmpl ]; then - cp $PARMwave/ww3_multi.inp.tmpl ww3_multi.inp.tmpl + if [ -f ${PARMgfs}/wave/ww3_multi.inp.tmpl ]; then + cp ${PARMgfs}/wave/ww3_multi.inp.tmpl ww3_multi.inp.tmpl fi if [ ! -f ww3_multi.inp.tmpl ]; then echo "ABNORMAL EXIT: NO TEMPLATE FOR WW3 MULTI INPUT FILE" @@ -88,8 +88,8 @@ WW3_namelists(){ fi else # ww3_multi template - if [ -f $PARMwave/ww3_shel.inp.tmpl ]; then - cp $PARMwave/ww3_shel.inp.tmpl ww3_shel.inp.tmpl + if [ -f ${PARMgfs}/wave/ww3_shel.inp.tmpl ]; then + cp ${PARMgfs}/wave/ww3_shel.inp.tmpl ww3_shel.inp.tmpl fi if [ ! -f ww3_shel.inp.tmpl ]; then echo "ABNORMAL EXIT: NO TEMPLATE FOR WW3 SHEL INPUT FILE" @@ -99,18 +99,18 @@ WW3_namelists(){ # Buoy location file - if [ -f $PARMwave/wave_${NET}.buoys ] + if [ -f ${PARMgfs}/wave/wave_${NET}.buoys ] then - cp $PARMwave/wave_${NET}.buoys buoy.loc + cp ${PARMgfs}/wave/wave_${NET}.buoys buoy.loc fi if [ -f buoy.loc ] then set +x - echo " buoy.loc copied ($PARMwave/wave_${NET}.buoys)." + echo " buoy.loc copied (${PARMgfs}/wave/wave_${NET}.buoys)." set_trace else - echo " FATAL ERROR : buoy.loc ($PARMwave/wave_${NET}.buoys) NOT FOUND" + echo " FATAL ERROR : buoy.loc (${PARMgfs}/wave/wave_${NET}.buoys) NOT FOUND" exit 12 fi diff --git a/ush/parsing_ufs_configure.sh b/ush/parsing_ufs_configure.sh index bec5c8f0f6..ade07c52bf 100755 --- a/ush/parsing_ufs_configure.sh +++ b/ush/parsing_ufs_configure.sh @@ -93,7 +93,7 @@ else echo "INFO: using ufs.configure template: '${ufs_configure_template}'" fi -source "${HOMEgfs}/ush/atparse.bash" +source "${USHgfs}/atparse.bash" rm -f "${DATA}/ufs.configure" atparse < "${ufs_configure_template}" >> "${DATA}/ufs.configure" echo "Rendered ufs.configure:" diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index 0e515a0df4..a61b7c82f3 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -12,7 +12,7 @@ add_to_datetime, to_fv3time, to_timedelta, chdir, to_fv3time, - YAMLFile, parse_yamltmpl, parse_j2yaml, save_as_yaml, + YAMLFile, parse_j2yaml, save_as_yaml, logit, Executable, WorkflowException) @@ -32,7 +32,7 @@ def __init__(self, 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.aerovar.yaml") + _jedi_yaml = os.path.join(self.runtime_config.DATA, f"{self.runtime_config.CDUMP}.t{self.runtime_config['cyc']:02d}z.aerovar.yaml") # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( @@ -46,11 +46,11 @@ def __init__(self, config): 'npz_anl': self.config['LEVS'] - 1, 'AERO_WINDOW_BEGIN': _window_begin, 'AERO_WINDOW_LENGTH': f"PT{self.config['assim_freq']}H", - 'aero_bkg_fhr': map(int, self.config['aero_bkg_times'].split(',')), + 'aero_bkg_fhr': map(int, str(self.config['aero_bkg_times']).split(',')), '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, + 'jedi_yaml': _jedi_yaml, } ) @@ -73,15 +73,13 @@ def initialize(self: Analysis) -> None: super().initialize() # stage CRTM fix files - crtm_fix_list_path = os.path.join(self.task_config['HOMEgfs'], 'parm', 'gdas', 'aero_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', 'aero_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 berror files @@ -93,10 +91,9 @@ def initialize(self: Analysis) -> None: FileHandler(self.get_bkg_dict(AttrDict(self.task_config, **self.task_config))).sync() # generate variational YAML file - logger.debug(f"Generate variational YAML file: {self.task_config.fv3jedi_yaml}") - varda_yaml = parse_j2yaml(self.task_config['AEROVARYAML'], 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") @@ -114,7 +111,7 @@ def execute(self: Analysis) -> None: exec_cmd = Executable(self.task_config.APRUN_AEROANL) exec_name = os.path.join(self.task_config.DATA, 'fv3jedi_var.x') exec_cmd.add_default_arg(exec_name) - exec_cmd.add_default_arg(self.task_config.fv3jedi_yaml) + exec_cmd.add_default_arg(self.task_config.jedi_yaml) try: logger.debug(f"Executing {exec_cmd}") @@ -212,7 +209,7 @@ def _add_fms_cube_sphere_increments(self: Analysis) -> None: inc_template = os.path.join(self.task_config.DATA, 'anl', 'aeroinc.' + increment_template) bkg_template = os.path.join(self.task_config.COM_ATMOS_RESTART_PREV, restart_template) # get list of increment vars - incvars_list_path = os.path.join(self.task_config['HOMEgfs'], 'parm', 'gdas', 'aeroanl_inc_vars.yaml') + incvars_list_path = os.path.join(self.task_config['PARMgfs'], 'gdas', 'aeroanl_inc_vars.yaml') incvars = YAMLFile(path=incvars_list_path)['incvars'] super().add_fv3_increments(inc_template, bkg_template, incvars) diff --git a/ush/python/pygfs/task/analysis.py b/ush/python/pygfs/task/analysis.py index 5709bc130e..2221fb7b34 100644 --- a/ush/python/pygfs/task/analysis.py +++ b/ush/python/pygfs/task/analysis.py @@ -4,6 +4,7 @@ import glob import tarfile from logging import getLogger +from pprint import pformat from netCDF4 import Dataset from typing import List, Dict, Any, Union @@ -26,10 +27,14 @@ def __init__(self, config: Dict[str, Any]) -> None: super().__init__(config) self.config.ntiles = 6 # Store location of GDASApp jinja2 templates - self.gdasapp_j2tmpl_dir = os.path.join(self.config.HOMEgfs, 'parm/gdas') + self.gdasapp_j2tmpl_dir = os.path.join(self.config.PARMgfs, 'gdas') def initialize(self) -> None: super().initialize() + + # all JEDI analyses need a JEDI config + self.task_config.jedi_config = self.get_jedi_config() + # all analyses need to stage observations obs_dict = self.get_obs_dict() FileHandler(obs_dict).sync() @@ -41,13 +46,33 @@ def initialize(self) -> None: # link jedi executable to run directory self.link_jediexe() + @logit(logger) + def get_jedi_config(self) -> Dict[str, Any]: + """Compile a dictionary of JEDI configuration from JEDIYAML template file + + Parameters + ---------- + + Returns + ---------- + jedi_config : Dict + a dictionary containing the fully rendered JEDI yaml configuration + """ + + # generate JEDI YAML file + logger.info(f"Generate JEDI YAML config: {self.task_config.jedi_yaml}") + jedi_config = parse_j2yaml(self.task_config.JEDIYAML, self.task_config, searchpath=self.gdasapp_j2tmpl_dir) + logger.debug(f"JEDI config:\n{pformat(jedi_config)}") + + return jedi_config + @logit(logger) def get_obs_dict(self) -> Dict[str, Any]: """Compile a dictionary of observation files to copy - This method uses the OBS_LIST configuration variable to generate a dictionary - from a list of YAML files that specify what observation files are to be - copied to the run directory from the observation input directory + This method extracts 'observers' from the JEDI yaml and from that list, extracts a list of + observation files that are to be copied to the run directory + from the observation input directory Parameters ---------- @@ -57,13 +82,13 @@ def get_obs_dict(self) -> Dict[str, Any]: obs_dict: Dict a dictionary containing the list of observation files to copy for FileHandler """ - logger.debug(f"OBS_LIST: {self.task_config['OBS_LIST']}") - obs_list_config = parse_j2yaml(self.task_config["OBS_LIST"], self.task_config, searchpath=self.gdasapp_j2tmpl_dir) - logger.debug(f"obs_list_config: {obs_list_config}") - # get observers from master dictionary - observers = obs_list_config['observers'] + + logger.info(f"Extracting a list of observation files from {self.task_config.JEDIYAML}") + observations = find_value_in_nested_dict(self.task_config.jedi_config, 'observations') + logger.debug(f"observations:\n{pformat(observations)}") + copylist = [] - for ob in observers: + for ob in observations['observers']: obfile = ob['obs space']['obsdatain']['engine']['obsfile'] basename = os.path.basename(obfile) copylist.append([os.path.join(self.task_config['COM_OBS'], basename), obfile]) @@ -77,9 +102,11 @@ def get_obs_dict(self) -> Dict[str, Any]: def get_bias_dict(self) -> Dict[str, Any]: """Compile a dictionary of observation files to copy - This method uses the OBS_LIST configuration variable to generate a dictionary - from a list of YAML files that specify what observation bias correction files - are to be copied to the run directory from the observation input directory + This method extracts 'observers' from the JEDI yaml and from that list, extracts a list of + observation bias correction files that are to be copied to the run directory + from the component directory. + TODO: COM_ATMOS_ANALYSIS_PREV is hardwired here and this method is not appropriate in + `analysis.py` and should be implemented in the component where this is applicable. Parameters ---------- @@ -89,13 +116,13 @@ def get_bias_dict(self) -> Dict[str, Any]: bias_dict: Dict a dictionary containing the list of observation bias files to copy for FileHandler """ - logger.debug(f"OBS_LIST: {self.task_config['OBS_LIST']}") - obs_list_config = parse_j2yaml(self.task_config["OBS_LIST"], self.task_config, searchpath=self.gdasapp_j2tmpl_dir) - logger.debug(f"obs_list_config: {obs_list_config}") - # get observers from master dictionary - observers = obs_list_config['observers'] + + logger.info(f"Extracting a list of bias correction files from {self.task_config.JEDIYAML}") + observations = find_value_in_nested_dict(self.task_config.jedi_config, 'observations') + logger.debug(f"observations:\n{pformat(observations)}") + copylist = [] - for ob in observers: + for ob in observations['observers']: if 'obs bias' in ob.keys(): obfile = ob['obs bias']['input file'] obdir = os.path.dirname(obfile) @@ -104,6 +131,7 @@ def get_bias_dict(self) -> Dict[str, Any]: for file in ['satbias.nc', 'satbias_cov.nc', 'tlapse.txt']: bfile = f"{prefix}.{file}" copylist.append([os.path.join(self.task_config.COM_ATMOS_ANALYSIS_PREV, bfile), os.path.join(obdir, bfile)]) + # TODO: Why is this specific to ATMOS? bias_dict = { 'mkdir': [os.path.join(self.runtime_config.DATA, 'bc')], @@ -328,3 +356,74 @@ def tgz_diags(statfile: str, diagdir: str) -> None: # Add diag files to tarball for diagfile in diags: tgz.add(diagfile, arcname=os.path.basename(diagfile)) + + +@logit(logger) +def find_value_in_nested_dict(nested_dict: Dict, target_key: str) -> Any: + """ + Recursively search through a nested dictionary and return the value for the target key. + This returns the first target key it finds. So if a key exists in a subsequent + nested dictionary, it will not be found. + + Parameters + ---------- + nested_dict : Dict + Dictionary to search + target_key : str + Key to search for + + Returns + ------- + Any + Value of the target key + + Raises + ------ + KeyError + If key is not found in dictionary + + TODO: if this gives issues due to landing on an incorrect key in the nested + dictionary, we will have to implement a more concrete method to search for a key + given a more complete address. See resolved conversations in PR 2387 + + # Example usage: + nested_dict = { + 'a': { + 'b': { + 'c': 1, + 'd': { + 'e': 2, + 'f': 3 + } + }, + 'g': 4 + }, + 'h': { + 'i': 5 + }, + 'j': { + 'k': 6 + } + } + + user_key = input("Enter the key to search for: ") + result = find_value_in_nested_dict(nested_dict, user_key) + """ + + if not isinstance(nested_dict, dict): + raise TypeError(f"Input is not of type(dict)") + + result = nested_dict.get(target_key) + if result is not None: + return result + + for value in nested_dict.values(): + if isinstance(value, dict): + try: + result = find_value_in_nested_dict(value, target_key) + if result is not None: + return result + except KeyError: + pass + + raise KeyError(f"Key '{target_key}' not found in the nested dictionary") diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index 7e2ae87b6b..6348bdf319 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) @@ -31,7 +31,7 @@ def __init__(self, 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") + _jedi_yaml = os.path.join(self.runtime_config.DATA, f"{self.runtime_config.CDUMP}.t{self.runtime_config.cyc:02d}z.atmvar.yaml") # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( @@ -48,7 +48,7 @@ def __init__(self, config): '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, + 'jedi_yaml': _jedi_yaml, } ) @@ -71,19 +71,17 @@ 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}") + logger.info(f"Stage files for STATICB_TYPE {self.task_config.STATICB_TYPE}") FileHandler(self.get_berror_dict(self.task_config)).sync() # stage ensemble files for use in hybrid background error @@ -102,10 +100,9 @@ def initialize(self: Analysis) -> None: FileHandler(self.get_bkg_dict(AttrDict(self.task_config))).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") @@ -123,7 +120,7 @@ def execute(self: Analysis) -> None: exec_cmd = Executable(self.task_config.APRUN_ATMANL) exec_name = os.path.join(self.task_config.DATA, 'fv3jedi_var.x') exec_cmd.add_default_arg(exec_name) - exec_cmd.add_default_arg(self.task_config.fv3jedi_yaml) + exec_cmd.add_default_arg(self.task_config.jedi_yaml) try: logger.debug(f"Executing {exec_cmd}") @@ -170,7 +167,7 @@ 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}") + 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.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.debug(f"Copying {src} to {dest}") diff --git a/ush/python/pygfs/task/atmens_analysis.py b/ush/python/pygfs/task/atmens_analysis.py index 7b81a10f32..1037b557c2 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, @@ -31,7 +31,7 @@ def __init__(self, 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") + _jedi_yaml = os.path.join(self.runtime_config.DATA, f"{self.runtime_config.CDUMP}.t{self.runtime_config.cyc:02d}z.atmens.yaml") # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( @@ -45,7 +45,7 @@ def __init__(self, config): '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, + 'jedi_yaml': _jedi_yaml, } ) @@ -96,19 +96,17 @@ def initialize(self: Analysis) -> None: 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") + logger.info(f"Stage ensemble member background files") localconf = AttrDict() keys = ['COM_ATMOS_RESTART_TMPL', 'previous_cycle', 'ROTDIR', 'RUN', 'NMEM_ENS', 'DATA', 'current_cycle', 'ntiles'] @@ -118,10 +116,9 @@ def initialize(self: Analysis) -> None: FileHandler(self.get_fv3ens_dict(localconf)).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") @@ -153,7 +150,7 @@ def execute(self: Analysis) -> None: exec_cmd = Executable(self.task_config.APRUN_ATMENSANL) exec_name = os.path.join(self.task_config.DATA, 'fv3jedi_letkf.x') exec_cmd.add_default_arg(exec_name) - exec_cmd.add_default_arg(self.task_config.fv3jedi_yaml) + exec_cmd.add_default_arg(self.task_config.jedi_yaml) try: logger.debug(f"Executing {exec_cmd}") @@ -206,7 +203,7 @@ 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}") + 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.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.debug(f"Copying {src} to {dest}") diff --git a/ush/python/pygfs/task/snow_analysis.py b/ush/python/pygfs/task/snow_analysis.py index 9eee8314c3..c149f140b6 100644 --- a/ush/python/pygfs/task/snow_analysis.py +++ b/ush/python/pygfs/task/snow_analysis.py @@ -260,20 +260,18 @@ def initialize(self) -> None: FileHandler({'mkdir': dirlist}).sync() # stage fix files - jedi_fix_list_path = os.path.join(self.task_config.HOMEgfs, 'parm', 'gdas', 'snow_jedi_fix.yaml.j2') - logger.info(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.info("Staging ensemble backgrounds") FileHandler(self.get_ens_bkg_dict(localconf)).sync() - # generate letkfoi YAML file - logger.info(f"Generate JEDI LETKF YAML file: {self.task_config.jedi_yaml}") - letkfoi_yaml = parse_j2yaml(self.task_config.JEDIYAML, self.task_config, searchpath=self.gdasapp_j2tmpl_dir) - save_as_yaml(letkfoi_yaml, self.task_config.jedi_yaml) + # 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 = [ 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 1066627787..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 @@ -100,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 b6fd82dff2..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 diff --git a/ush/radmon_verf_bcor.sh b/ush/radmon_verf_bcor.sh index 7aec48e2b3..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 diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index 0df8029166..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 @@ -77,7 +75,7 @@ source "${HOMEgfs}/ush/preamble.sh" # File names 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 3ea56db72a..6596c6ef96 100755 --- a/ush/syndat_getjtbul.sh +++ b/ush/syndat_getjtbul.sh @@ -18,13 +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 -source "$HOMEgfs/ush/preamble.sh" - -EXECSYND=${EXECSYND:-${HOMESYND}/exec} +source "${USHgfs}/preamble.sh" cd $DATA @@ -117,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 @@ -132,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 9d9b2ad69b..8ec8f70b14 100755 --- a/ush/syndat_qctropcy.sh +++ b/ush/syndat_qctropcy.sh @@ -44,9 +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 -# USHSYND - path to syndat ush directory # Imported variables that can be passed in: # ARCHSYND - path to syndat archive directory @@ -66,17 +63,12 @@ # (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} -USHSYND=${USHSYND:-$HOMEgfs/ush} -EXECSYND=${EXECSYND:-$HOMEgfs/exec} -PARMSYND=${PARMSYND:-$HOMEgfs/parm/relo} - slmask=${slmask:-${FIXgfs}/am/syndat_slmask.t126.gaussian} copy_back=${copy_back:-YES} files_override=${files_override:-""} @@ -186,7 +178,7 @@ 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 @@ -203,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 @@ -219,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 @@ -243,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 @@ -257,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 @@ -321,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 @@ -355,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 cdcc777c47..29ffc32797 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,31 +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" -# 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 @@ -163,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 @@ -201,7 +183,7 @@ # #### -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" MACHINE=${MACHINE:-$(hostname -s | cut -c 1-3)} @@ -272,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} @@ -292,19 +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} - -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 @@ -350,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 @@ -400,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 @@ -434,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}" @@ -454,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 @@ -536,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 @@ -545,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 diff --git a/ush/tropcy_relocate_extrkr.sh b/ush/tropcy_relocate_extrkr.sh index c4efad1d73..8e6bc5283a 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]') diff --git a/ush/wave_grib2_sbs.sh b/ush/wave_grib2_sbs.sh index af28760269..6b459cb1b0 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 @@ -82,7 +82,7 @@ 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}" ]] || \ + if [[ -z "${PDY}" ]] || [[ -z ${cyc} ]] || [[ -z "${cycle}" ]] || [[ -z "${EXECgfs}" ]] || \ [[ -z "${COM_WAVE_GRID}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${gribflags}" ]] || \ [[ -z "${GRIDNR}" ]] || [[ -z "${MODNR}" ]] || \ [[ -z "${SENDDBN}" ]]; then @@ -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 diff --git a/ush/wave_grid_interp_sbs.sh b/ush/wave_grid_interp_sbs.sh index e690cbc4ad..db2918f924 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,7 +65,7 @@ source "$HOMEgfs/ush/preamble.sh" echo " Model ID : $WAV_MOD_TAG" set_trace - if [[ -z "${PDY}" ]] || [[ -z "${cyc}" ]] || [[ -z "${cycle}" ]] || [[ -z "${EXECwave}" ]] || \ + if [[ -z "${PDY}" ]] || [[ -z "${cyc}" ]] || [[ -z "${cycle}" ]] || [[ -z "${EXECgfs}" ]] || \ [[ -z "${COM_WAVE_PREP}" ]] || [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${SENDDBN}" ]] || \ [ -z "${waveGRD}" ] then @@ -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} ${COM_WAVE_PREP} ${WAV_MOD_TAG} ${SENDDBN} ${waveGRD}" set_trace exit 1 fi @@ -85,7 +85,7 @@ 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} fi ln -sf ${DATA}/${grdID}_interp.inp.tmpl . @@ -137,11 +137,11 @@ source "$HOMEgfs/ush/preamble.sh" 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 diff --git a/ush/wave_grid_moddef.sh b/ush/wave_grid_moddef.sh index 390860c960..e895666d66 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" ] + if [ -z "$grdID" ] || [ -z "${EXECgfs}" ] then set +x echo ' ' @@ -77,7 +77,7 @@ 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 @@ -92,7 +92,7 @@ source "$HOMEgfs/ush/preamble.sh" - "${EXECwave}/ww3_grid" 1> "grid_${grdID}.out" 2>&1 + "${EXECgfs}/ww3_grid" 1> "grid_${grdID}.out" 2>&1 err=$? if [ "$err" != '0' ] 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..91cd722c10 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 @@ -104,7 +104,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 @@ -170,11 +170,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 diff --git a/ush/wave_prnc_cur.sh b/ush/wave_prnc_cur.sh index a8f9f67d62..652d1be817 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 @@ -65,9 +65,9 @@ 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 @@ -75,7 +75,7 @@ ln -s "cur_glo_uv_${PDY}_${fext}${fh3}_5min.nc" "cur.nc" ln -s "${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 d0a6371d5b..e5efaf3042 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 @@ -55,7 +55,7 @@ source "$HOMEgfs/ush/preamble.sh" echo "Making ice fields." if [[ -z "${YMDH}" ]] || [[ -z "${cycle}" ]] || \ - [[ -z "${COM_WAVE_PREP}" ]] || [[ -z "${FIXgfs}" ]] || [[ -z "${EXECwave}" ]] || \ + [[ -z "${COM_WAVE_PREP}" ]] || [[ -z "${FIXgfs}" ]] || [[ -z "${EXECgfs}" ]] || \ [[ -z "${WAV_MOD_TAG}" ]] || [[ -z "${WAVEICE_FID}" ]] || [[ -z "${COM_OBS}" ]]; then set +x @@ -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' ] diff --git a/ush/wave_tar.sh b/ush/wave_tar.sh index 1a8d6d6cc5..bb8836df2c 100755 --- a/ush/wave_tar.sh +++ b/ush/wave_tar.sh @@ -25,7 +25,7 @@ # --------------------------------------------------------------------------- # # 0. Preparations -source "$HOMEgfs/ush/preamble.sh" +source "${USHgfs}/preamble.sh" # 0.a Basic modes of operation diff --git a/versions/fix.ver b/versions/fix.ver index a2a9caf8e3..d2828518bc 100644 --- a/versions/fix.ver +++ b/versions/fix.ver @@ -12,7 +12,7 @@ export gdas_fv3jedi_ver=20220805 export gdas_gsibec_ver=20221031 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 orog_ver=20231027 diff --git a/versions/run.hercules.ver b/versions/run.hercules.ver index 549bb47df0..ee8e4f8aea 100644 --- a/versions/run.hercules.ver +++ b/versions/run.hercules.ver @@ -3,7 +3,5 @@ export stack_impi_ver=2021.9.0 export intel_mkl_ver=2023.1.0 export spack_env=gsi-addon-env -export perl_ver=5.36.0 - source "${HOMEgfs:-}/versions/run.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/workflow/applications/applications.py b/workflow/applications/applications.py index d45b6a9abc..b20c5a7c28 100644 --- a/workflow/applications/applications.py +++ b/workflow/applications/applications.py @@ -145,6 +145,10 @@ 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', 'atmanlrun']: + files += ['config.atmanl', f'config.{config}'] + elif config in ['atmensanlinit', 'atmensanlrun']: + files += ['config.atmensanl', f'config.{config}'] elif 'wave' in config: files += ['config.wave', f'config.{config}'] else: diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index b91e974c74..36b57bd6dc 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -2661,7 +2661,7 @@ def earc(self): # 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)]) + groups = ' '.join([f'{grp:02d}' for grp in range(0, n_groups + 1)]) cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump.replace('enkf', '') diff --git a/workflow/rocoto/tasks.py b/workflow/rocoto/tasks.py index ac70c6e4fc..01bf586af1 100644 --- a/workflow/rocoto/tasks.py +++ b/workflow/rocoto/tasks.py @@ -63,6 +63,7 @@ def __init__(self, app_config: AppConfig, cdump: str) -> None: 'cyc': '@H', 'COMROOT': self._base.get('COMROOT'), 'DATAROOT': self._base.get('DATAROOT')} + self.envars = self._set_envars(envar_dict) @staticmethod @@ -192,7 +193,11 @@ def get_resource(self, task_name): 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'