Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ability to cycle GOCART aerosols #334

Commits on Jun 7, 2021

  1. Improve cycle cadence specification in CROW

    Replaces the old gfs_cyc method for determining cycling frequency with one that
    explicitly sets the step length. In place of gfs_cyc there are two new variables
    to determine step sizing: STEP_GFS and STEP_DA. Both are of the timedelta type.
    
    STEP_GFS determines the frequency of GFS and defaults to 6 hours
    STEP_DA determines the frequency of DA and also defaults to 6 hours
    
    If STEP_GFS is set to 00:00:00, only the DA system is run
    If STEP_DA is set to 00:00:00, only the GFS system is run (free-forecast mode)
    
    Note that this new method currently requires the additional setting of STEP_DA
    to zero, in addition to using free forecast layout.
    
    If STEP_DA is non-zero, the first cycle is DA-only, so this should be kept in
    mind when setting up your experiments (especially if you want GFS to run at
    certain times of day). If both are non-zero, STEP_GFS should always be an
    integer multiple of STEP_DA, otherwise unexpected behavior may occur. Other
    than setting STEP_DA to zero for free forecast, STEP_DA is unlikely to be
    changed from its default value in the near-future for GFS, but the new method
    is flexible for any future incorporation of LAM system that requires faster DA
    cycling.
    
    Examples:
    
    Full-cycling with DA & GFS:
    STEP_GFS: !timedelta "06:00:00"
    STEP_DA: !timedelta "06:00:00"
    (since these are defaults, nothing needs to be placed in the case file, but you may
    wish to for clarity)
    
    Normal DA with GFS at each 00z starting 2013-04-01:
    SDATE: 2013-03-31t18:00:00
    STEP_GFS: !timedelta "24:00:00"
    
    Free forecast with GFS every 24h at 00z starting 2013-04-01:
    SDATE: 2013-04-01t00:00:00
    STEP_GFS: !timedelta "24:00:00"
    STEP_DA: !timedelta "00:00:00"
    
    CROW ss updated to add a new tool that converts a timedelta to a string.
    
    The wave model, which formerly used gfs_cyc to determine the wave cycling interval,
    now determines WAVHCYC directly from STEP_GFS. Since this variable is only a number
    of hours, this will only work for whole-hour GFS frequencies.
    
    Case files have been updated to use the new settings in place of gfs_cyc, as well as
    set STEP_DA to zero for free forecast cases. However, they have not all been tested.
    
    Additional testing is needed to ensure these changes are fully operational for DA
    cycling runs.
    
    Refs: NOAA-EMC#260, NOAA-EMC#314
    WalterKolczynski-NOAA committed Jun 7, 2021
    Configuration menu
    Copy the full SHA
    c196176 View commit details
    Browse the repository at this point in the history
  2. Add restart output for aerosol cycling

    Updates the restart_interval setting to make sure it always includes the
    STEP_GFS time if GOCART is on. This is done using the advanced functionality
    of restart_interval, which allows for an explicit list of restart times
    instead of a single interval.
    
    If STEP_GFS is a multiple of restart_interval, it is left unchanged.
    If STEP_GFS is not a multiple of restart_interval, restart_interval is
    converted to an explicit sequence of restart times, then STEP_GFS is added.
    If restart_interval is already an explicit list, STEP_GFS is just added to it.
    This may add a redundant restart time, but that is ignored by FV3.
    
    In order to complete this update, the CROW type for restart_interval had to be
    changed from int to string to accomodate lists of numbers. This has the added
    benefit of allowing explicit definition of restart times in other applications
    as well.
    
    As part of this update, the values for restart_interval in the forecast config
    were updated to use the appropriate settings rather than hardcoded values.
    The default value for the gfs restart_interval was also changed from 6 to 0 to
    maintain the previous behavior when the setting was ignored.
    
    Refs: NOAA-EMC#314
    WalterKolczynski-NOAA committed Jun 7, 2021
    Configuration menu
    Copy the full SHA
    45def8c View commit details
    Browse the repository at this point in the history
  3. Add init_chem job to coupled workflow

    A new init_chem job is added to the coupled workflow to cycle tracer
    concentrations from the previous cycle's restart files. The new job
    doesn't run for the first cycle (since there are no previous cycle
    restart files to use). If aerosol initialization is desired for the
    first cycle, they need to be added manually, though the new scripts
    may be reutilized to do so.
    
    Tracer concentrations are merely copied from the restart files to the
    cold-start initial conditions. There is no adjustment to ensure mass
    conservation or any other property. The list of tracers copied is
    determined by the new parm/chem/gocart_tracer.list file, which is a
    plain-text list of NetCDF variables to copy. If any are missing in the
    restart files, the job will fail.
    
    The NetCDF4 module for python3 is required for the init job to work.
    This module is not part of the default installation of python on Hera
    (though it is on WCOSS), so in addition to now loading python, the
    base modulefile also adds the location of a personal copy of the
    needed python module to the PYTHONPATH.
    
    Most of the new scripts are recycled from the GEFS-aerosol development,
    though this method was abandoned there in favor of true warm start for
    the aerosol member.
    
    Refs: NOAA-EMC#314
    WalterKolczynski-NOAA committed Jun 7, 2021
    Configuration menu
    Copy the full SHA
    84101b0 View commit details
    Browse the repository at this point in the history

Commits on Jun 14, 2021

  1. Fix print statement in chem init

    The print statement for the tracer (restart) file search was missing
    an f, so variables were not being substituted.
    
    Refs: NOAA-EMC#314
    WalterKolczynski-NOAA committed Jun 14, 2021
    Configuration menu
    Copy the full SHA
    062888e View commit details
    Browse the repository at this point in the history
  2. Fix minor issue with restart interval

    The restart_interval export needed to be enclosed in quotation marks
    so bash will properly assign the whole list to the variable.
    
    Refs: NOAA-EMC#314
    WalterKolczynski-NOAA committed Jun 14, 2021
    Configuration menu
    Copy the full SHA
    19a8f96 View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2021

  1. Correct cycling interval issues for aerosols

    FHCYC was being used to determine the forecast interval for the aerosol
    cycling, but this appears to be an appropriate setting to use. Added a
    new exported environment variable STEP_GFS, which is the number of hours
    between GFS forecasts. While it is derived from the workflow STEP_GFS
    setting, it is only the integer number of hours, not a timedelta like
    the workflow setting. May want to revist this later to avoid confusion.
    
    Additionally, the restart file written at the end of the forecast does
    not have the timestamp as part of the filename like the intermediary
    restart files do. The chem init script is adjusted to not use the time-
    stamp when looking for the final restart file. And, since it now has to
    read in FHMAX anyway, also added a short-circuit so the search doesn't
    bother trying to search previous cycles that can't include the restart
    time needed.
    
    Refs: NOAA-EMC#314
    WalterKolczynski-NOAA committed Jun 16, 2021
    Configuration menu
    Copy the full SHA
    c73040c View commit details
    Browse the repository at this point in the history