Skip to article frontmatterSkip to article content

Bankhead National Forest - CMAC/RadClss Rain Rates Investigation

ARM Logo

Bankhead National Forest - CMAC/RadClss Rain Rates Investigation

Overview

The Corrected Moments to Antenna Coordinates (CMAC) Value-Added Product (VAP) is designed to provide a quality assured dataset which includes pre-processing and corrections for the significant influence of attenuation in rain, specific differential phase measurements to better account for non-uniform beam filling and anticipated beam blockage, and the anticipated need to de-aliasing Doppler velocities in severe convective cloud contexts

The Extracted Radar Columns and In-Situ Sensors (RadClss) Value-Added Product (VAP) is a dataset containing in-situ ground observations matched to CSAPR-2 radar columns above ARM Mobile Facility (AMF-3) supplemental sites of interest.

Together, these products allow for the investigation of radar derived rain rates within BNF.

Prerequisites

ConceptsImportanceNotes
Intro to CartopyNecessary
Understanding of NetCDFHelpfulFamiliarity with metadata structure
GeoPandasNecessaryFamiliarity with Geospatial Plotting
Py-ART / Radar FoundationsNecessaryBasics of Weather Radar
  • Time to learn: 30 minutes

Current List of Supported RadCLss Sites

SiteLatLon
M134.34525-87.33842
S434.46451-87.23598
S2034.65401-87.29264
S3034.38501-86.92757
S4034.17932-87.45349

BNF Mosaic Radar Display

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

import glob
import os
import datetime
import tempfile
from datetime import timedelta

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import xarray as xr
import pandas as pd
import dask
import cartopy.crs as ccrs

from math import atan2 as atan2
from cartopy import crs as ccrs, feature as cfeature
from cartopy.io.img_tiles import OSM
from matplotlib.transforms import offset_copy
from mpl_toolkits.axes_grid1 import make_axes_locatable
from matplotlib import colors
from dask.distributed import Client, LocalCluster
from metpy.plots import USCOUNTIES
from PIL import Image

import act
import pyart

dask.config.set({'logging.distributed': 'error'})
<dask.config.set at 0x7f025450c2d0>

Define Processing Variables

# Define the desired processing date for the BNF CSAPR-2 in YYYY-MM-DD format.
DATE = "2025-03-05"
# Define the directory where the BNF CSAPR-2 CMAC files are located.
RADAR_DIR = os.getenv("BNF_RADAR_R5_DIR") + "202503/"
# Define an output directory for downloaded ground instrumentation
INSITU_DIR = os.getenv("BNF_INSITU_DIR")
# Define the RadCLss file
RADCLSS = sorted(glob.glob("data/bnf-csapr2-radclss.c2." + "*" + DATE.replace('-', '') + '*.nc'))

Define Functions

def create_gif(file_location, out_dir, date):
    # Define files created and define movie path
    map_images = sorted(glob.glob(file_location + f"/bnf-cmac-radclss-moasic*"))
    gif_title = out_dir + f"bnf-cmac-radclss-moasic-" + date + ".gif"

    # Check to see if the file exists - if it does, delete it
    if os.path.exists(gif_title):
        os.remove(gif_title)

    # Step 2: Open images using Pillow
    frames = [Image.open(f) for f in map_images]

    # Step 3: Save as GIF with 2.5s per frame
    frames[0].save(
        gif_title,
        save_all=True,
        append_images=frames[1:],
        duration=850,  # Duration in ms
        loop=0          # Loop forever
    )
def gc_latlon_bear_dist(lat1, lon1, bear, dist):
    """
    Input lat1/lon1 as decimal degrees, as well as bearing and distance from
    the coordinate. Returns lat2/lon2 of final destination. Cannot be
    vectorized due to atan2.
    """
    re = 6371.1  # km
    lat1r = np.deg2rad(lat1)
    lon1r = np.deg2rad(lon1)
    bearr = np.deg2rad(bear)
    lat2r = np.arcsin((np.sin(lat1r) * np.cos(dist/re)) +
                      (np.cos(lat1r) * np.sin(dist/re) * np.cos(bearr)))
    lon2r = lon1r + atan2(np.sin(bearr) * np.sin(dist/re) *
                          np.cos(lat1r), np.cos(dist/re) - np.sin(lat1r) *
                          np.sin(lat2r))
    return np.rad2deg(lat2r), np.rad2deg(lon2r)
 
    
def add_scale_line(scale, ax, projection, color='k',
                  linewidth=None, fontsize=None, fontweight=None):
    """
    Adds a line that shows the map scale in km. The line will automatically
    scale based on zoom level of the map. Works with cartopy.
 
    Parameters
    ----------
    scale : scalar
        Length of line to draw, in km.
    ax : matplotlib.pyplot.Axes instance
        Axes instance to draw line on. It is assumed that this was created
        with a map projection.
    projection : cartopy.crs projection
        Cartopy projection being used in the plot.
 
    Other Parameters
    ----------------
    color : str
        Color of line and text to draw. Default is black.
    """
    frac_lat = 0.1  # distance fraction from bottom of plot
    frac_lon = 0.5  # distance fraction from left of plot
    e1 = ax.get_extent()
    center_lon = e1[0] + frac_lon * (e1[1] - e1[0])
    center_lat = e1[2] + frac_lat * (e1[3] - e1[2])
    # Main line
    lat1, lon1 = gc_latlon_bear_dist(
        center_lat, center_lon, -90, scale / 2.0)  # left point
    lat2, lon2 = gc_latlon_bear_dist(
        center_lat, center_lon, 90, scale / 2.0)  # right point
    if lon1 <= e1[0] or lon2 >= e1[1]:
        warnings.warn('Scale line longer than extent of plot! ' +
                      'Try shortening for best effect.')
    ax.plot([lon1, lon2], [lat1, lat2], linestyle='-',
            color=color, transform=projection, 
            linewidth=linewidth)
    # Draw a vertical hash on the left edge
    lat1a, lon1a = gc_latlon_bear_dist(
        lat1, lon1, 180, frac_lon * scale / 20.0)  # bottom left hash
    lat1b, lon1b = gc_latlon_bear_dist(
        lat1, lon1, 0, frac_lon * scale / 20.0)  # top left hash
    ax.plot([lon1a, lon1b], [lat1a, lat1b], linestyle='-',
            color=color, transform=projection, linewidth=linewidth)
    # Draw a vertical hash on the right edge
    lat2a, lon2a = gc_latlon_bear_dist(
        lat2, lon2, 180, frac_lon * scale / 20.0)  # bottom right hash
    lat2b, lon2b = gc_latlon_bear_dist(
        lat2, lon2, 0, frac_lon * scale / 20.0)  # top right hash
    ax.plot([lon2a, lon2b], [lat2a, lat2b], linestyle='-',
            color=color, transform=projection, linewidth=linewidth)
    # Draw scale label
    ax.text(center_lon, center_lat - frac_lat * (e1[3] - e1[2]) / 3.0,
            str(int(scale)) + ' km', horizontalalignment='center',
            verticalalignment='center', color=color, fontweight=fontweight,
            fontsize=fontsize)

RadCLss Corrected Reflectivity Display

ds = xr.open_dataset(RADCLSS[0])
fig, axarr = plt.subplots(3, 2, figsize=[16, 10])
plt.subplots_adjust(hspace=0.8)

fig.suptitle("BNF RadCLss - " + DATE)

ds.sel(station="M1").sel(time=slice("2025-03-05T00:00:00", "2025-03-05T08:30:00")).corrected_reflectivity.plot(y="height", ax=axarr[0, 0], vmin=-30, vmax=65, cmap="ChaseSpectral")
ds.sel(station="S4").sel(time=slice("2025-03-05T00:00:00", "2025-03-05T08:30:00")).corrected_reflectivity.plot(y="height", ax=axarr[0, 1], vmin=-30, vmax=65, cmap="ChaseSpectral")
ds.sel(station="S20").sel(time=slice("2025-03-05T00:00:00", "2025-03-05T08:30:00")).corrected_reflectivity.plot(y="height", ax=axarr[1, 0], vmin=-30, vmax=65, cmap="ChaseSpectral")
ds.sel(station="S30").sel(time=slice("2025-03-05T00:00:00", "2025-03-05T08:30:00")).corrected_reflectivity.plot(y="height", ax=axarr[1, 1], vmin=-30, vmax=65, cmap="ChaseSpectral")
ds.sel(station="S40").sel(time=slice("2025-03-05T00:00:00", "2025-03-05T08:30:00")).corrected_reflectivity.plot(y="height", ax=axarr[2, 0], vmin=-30, vmax=65, cmap="ChaseSpectral")

axarr[2, 1].set_visible(False)
<Figure size 1600x1000 with 11 Axes>

Mosaic Display - CMAC Parameters with RadCLss Extracted Column

def bnf_mosasic_display(cmac, 
                        radclss, 
                        field="corrected_reflectivity", 
                        vmin=-5, 
                        vmax=65, 
                        dis_site="M1",
                        out_dir="./"):
    """
    Create a display to visualize CMAC Reflectivity across
    the domain, marking locations of the extracted columns,
    and displaying slices over the site of interest. 

    Input
    -----
    cmac : str
        Path to Corrected Moments to Antenna Coordinates (CMAC) file 
    radclss : str
        Path to Extracted Radar Columns and In-Situ Sensors (RadCLss)
    field : str
        Specific radar parameter to display
    vmin : int
        Minimum value to display between all subplots for the specific radar
        parameter
    vmax : int
        Maximum value to display between all subplots for the specific radar
        parameter
    dis_site : str
        Identifer of the supported location for lat/lon slices
    out_dir : str
        Path to location to save figure to

    Returns
    -------
    STATUS : bool
        bool flag to determine if generated plot saved
    """
    #------------------
    # Inputs
    #------------------
    
    # Open the files
    try:
        radar = pyart.io.read(cmac)
        # skip the RHI scans for now
        if radar.scan_type != "sector":
            return
        # check for those weird files
        if radar.elevation['data'].shape[0] < 1:
            return
    except:
        return
    
    ds = xr.open_dataset(radclss)

    # define the sites of interest
    nsite = {"M1" : [34.34525, -87.33842],
             "S4" : [34.46451, -87.23598],
             "S3" : [34.63080, -87.13311],
             "S20" : [34.65401, -87.29264],
             "S30" : [34.38501, -86.92757],
             "S40" : [34.17932, -87.45349]}

    # define the center of the map to be the CSAPR2
    central_lon = -87.13076
    central_lat = 34.63080

    #---------------------------------------------------
    # Define the GridSpec for Detailed Subplot Placement
    #---------------------------------------------------

    fig = plt.figure(figsize=(18, 8))
    tiler = OSM()
    mercator = tiler.crs

    # define the main subplot
    gs0 = gridspec.GridSpec(1, 2, figure=fig)
    gs00 = gs0[1].subgridspec(3, 1, hspace=.32, wspace=0.75)

    # update the extent of the subplot
    #gs0.update(top=.90, bottom=0.1, left=0.1, right=.95)
     # update the extent of the subplot
    #gs0.update(top=.90, bottom=0.1, left=0.1, right=.95)

    #--------------------------------------
    # Main Plot - Display the CMAC Field
    #--------------------------------------
    # Create a subplot and define projection
    ax = fig.add_subplot(gs0[0], projection=ccrs.PlateCarree())

    # Add some various map elements to the plot to make it recognizable.
    ax.add_feature(cfeature.COASTLINE)
    ax.add_image(tiler, 9, zorder=2, alpha=0.35)
    # Set the BNF Domain (adjust later for various groups)
    ax.set_extent([272.0, 274.0, 35.1, 34.1])
    gl = ax.gridlines(draw_labels=True)
    # Hide the right side ticks
    ax.tick_params(labeltop=False, labelright=False)

    # Add the column sites
    markers = ["p", "*", "+", "D", "o", "s"]
    for i, site in enumerate(nsite):
            ax.scatter(nsite[site][1],
                       nsite[site][0],
                       marker=markers[i],
                       color="black",
                       s=75,
                       label=site,
                       zorder=3,
                       transform=ccrs.PlateCarree())
        
            # Use the cartopy interface to create a matplotlib transform object
            # for the Geodetic coordinate system. We will use this along with
            # matplotlib's offset_copy function to define a coordinate system which
            # translates the text by 25 pixels to the left.
            # note - taken from cartopy examples
            geodetic_transform = ccrs.PlateCarree()._as_mpl_transform(ax)
            text_transform = offset_copy(geodetic_transform, units='dots', x=+50, y=+15)

            if site == "S3":
                # Add text 25 pixels to the left of the volcano.
                ax.text(nsite[site][1]+0.07, 
                        nsite[site][0]+0.035, 
                        "CSAPR-2", 
                        verticalalignment='center', 
                        horizontalalignment='right', 
                        transform=text_transform,
                        bbox=dict(facecolor='sandybrown', 
                        alpha=0.5, 
                        boxstyle='round'))
            else:
                # Add text 25 pixels to the left of the volcano.
                ax.text(nsite[site][1]-0.035, 
                        nsite[site][0]+0.04, 
                        site, 
                        verticalalignment='center', 
                        horizontalalignment='right', 
                        transform=text_transform,
                        bbox=dict(facecolor='sandybrown', 
                        alpha=0.5, 
                        boxstyle='round'))

    display = pyart.graph.RadarMapDisplay(radar)
    display.plot_ppi_map(field,  
                         vmin=vmin, 
                         vmax=vmax,
                         ax=ax,
                         cmap="ChaseSpectral",
                         zorder=1,
                         colorbar_flag=False,
                        )

    ims = display.plots[0]
    cbar = fig.colorbar(ims, ax=ax, location="bottom", shrink=0.6, pad=0.1)
    cbar_label = ("CMAC " +
                  radar.fields["corrected_reflectivity"]["long_name"] +  
                 '\n [' + 
                 radar.fields["corrected_reflectivity"]["units"] + ']'
    )
    cbar.set_label(cbar_label)

    # Add our scale bar
    add_scale_line(35.0, ax, projection=ccrs.PlateCarree(), 
                   color='black', linewidth=3,
                   fontsize=12,
                   fontweight='bold')

    #------------------------------
    # Cumulative Subplot Parameters
    #------------------------------
    # Define the time of the radar file we are plotting against
    radar_time = pyart.util.datetimes_from_radar(radar)[-1]
    final_time = radar_time + timedelta(days=1)

    #-----------------------------------------------
    # Side Plot A - Display the RadClss Radar Field
    #-----------------------------------------------
    # Top right hand subplot - Radar TimeSeries
    ax2 = fig.add_subplot(gs00[0])

    ds[field].sel(station=dis_site).sel(
         time=slice(radar_time.strftime("%Y-%m-%dT00:00:00"), radar_time.strftime("%Y-%m-%dT%H:%M:%S"))
         ).plot(x="time", 
                ax=ax2, 
                cmap="ChaseSpectral",
                vmin=vmin,
                vmax=vmax
    )
    
    ax2.set_title("BNF Site: " + dis_site)
    ax2.set_ylabel("Height [m]")
    ax2.set_xlabel("Time [UTC]")
    ax2.set_xlim([radar_time.strftime("%Y-%m-%dT00:00:00"), final_time.strftime("%Y-%m-%dT00:00:00")])

    #--------------------------------------
    # Side Plot B - Display the Rain Rates
    #--------------------------------------
    # Top right hand subplot - Radar TimeSeries
    ax3 = fig.add_subplot(gs00[1])

    # CMAC derived rain rate
    ds["rain_rate_A"].sel(station=dis_site).sel(height=100, method="nearest").sel(
         time=slice(radar_time.strftime("%Y-%m-%dT00:00:00"), radar_time.strftime("%Y-%m-%dT%H:%M:%S"))
         ).plot(x="time", 
                ax=ax3,
                label="CMAC"
    )

    # Pluvio2 Weighing Bucket Rain Gauge
    if dis_site == "M1":
        ds["intensity_rtnrt"].sel(station=dis_site).sel(
            time=slice(radar_time.strftime("%Y-%m-%dT00:00:00"), radar_time.strftime("%Y-%m-%dT%H:%M:%S"))
            ).plot(x="time",
                   ax=ax3,
                   label="PLUVIO2"
        )

    # LDQUANTS derived rain rate
    if dis_site == "M1" or dis_site == "S30":
        ds["rain_rate"].sel(station=dis_site).sel(
            time=slice(radar_time.strftime("%Y-%m-%dT00:00:00"), radar_time.strftime("%Y-%m-%dT%H:%M:%S"))
            ).plot(x="time",
                   ax=ax3,
                   label="LDQUANTS"
        )
            
    ax3.set_title(" ")
    ax3.set_ylabel("Precipitation Rate [mm/hr]")
    ax3.set_xlabel("Time [UTC]")
    ax3.set_xlim([radar_time.strftime("%Y-%m-%dT00:00:00"), final_time.strftime("%Y-%m-%dT00:00:00")])
    ax3.legend(loc="upper right")
    ax3.grid(True)
    # Add a blank space next to the subplot to shape it as the above plot
    divider = make_axes_locatable(ax3)
    cax = divider.append_axes("right", size="3%", pad=1.05)
    cax.set_visible(False)

    #------------------------------------------
    # Side Plot C - Precipitation Accumulation
    #------------------------------------------
    ax4 = fig.add_subplot(gs00[2])
   
    # CMAC Accumulated Rain Rates
    radar_accum = act.utils.accumulate_precip(ds.sel(station=dis_site).isel(height=4), 'rain_rate_A').compute()
    # CMAC Accumulated Rain Rates
    radar_accum['rain_rate_A_accumulated'].sel(
         time=slice(radar_time.strftime("%Y-%m-%dT00:00:00"), radar_time.strftime("%Y-%m-%dT%H:%M:%S"))
         ).plot(x="time", 
                ax=ax4,
                label="CMAC"
    )

    # PLUVIO2 Accumulation 
    if dis_site == "M1":
        gauge_precip_accum = act.utils.accumulate_precip(ds.sel(station=dis_site), 'intensity_rtnrt').intensity_rtnrt_accumulated.compute()
        gauge_precip_accum.sel(
            time=slice(radar_time.strftime("%Y-%m-%dT00:00:00"), radar_time.strftime("%Y-%m-%dT%H:%M:%S"))
            ).plot(x="time", 
                   ax=ax4,
                   label="PLUVIO2"
        )

    # LDQUANTS Accumulation
    if dis_site == "M1" or dis_site == "S30":
         ld_precip_accum = act.utils.accumulate_precip(ds.sel(station=dis_site), 'rain_rate').rain_rate_accumulated.compute()
         ld_precip_accum.sel(
            time=slice(radar_time.strftime("%Y-%m-%dT00:00:00"), radar_time.strftime("%Y-%m-%dT%H:%M:%S"))
            ).plot(x="time", 
                   ax=ax4,
                   label="LDQUANTS"
        )  
    
    ax4.set_title(" ")
    ax4.set_ylabel("Accumulated Precipitation [mm]")
    ax4.set_xlabel("Time [UTC]")
    ax4.set_xlim([radar_time.strftime("%Y-%m-%dT00:00:00"), final_time.strftime("%Y-%m-%dT00:00:00")])
    ax4.legend(loc="upper left")
    ax4.grid(True)
    ax4.set_ylim(0, radar_accum["rain_rate_A_accumulated"].max()+0.25)
    # Add a blank space next to the subplot to shape it as the above plot
    divider = make_axes_locatable(ax4)
    cax = divider.append_axes("right", size="3%", pad=1.05)
    cax.set_visible(False)

    # Set the DPI to a higher value (e.g., 300)
    plt.rcParams['figure.dpi'] = 300
    plt.rcParams['savefig.dpi'] = 300

    # save the figure
    try:
        fig.savefig(out_dir + 
                    'bnf-cmac-radclss-moasic.' + 
                    radar_time.strftime("%Y%m%d.%H%M%S") +
                    '.png')
        plt.close(fig)
        STATUS = True
    except:
        STATUS = False

    # Clean up this function 
    del fig, ax, ax2, ax3, ax4
    del gauge_precip_accum, ld_precip_accum, radar_accum
    del radar_time, final_time, tiler
    del radar, ds

    return STATUS

Create a Daily Mosaic Figure to visualize timeseries

templocation = tempfile.mkdtemp() + "/"
for cmac in file_list[2:]:
    print(cmac)
    mosaic = bnf_mosasic_display(cmac, 
                                 RADCLSS[0],
                                 out_dir=templocation)
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.001255.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.001313.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.002258.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.002316.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.003301.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.003319.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.004303.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.004321.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.005306.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.005324.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.010308.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.011001.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.011947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.012004.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.012949.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.013007.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.013952.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.014010.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.015003.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.015934.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.020002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.020948.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.021006.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.021950.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.022008.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.022956.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.023013.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.023947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.024005.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.024913.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.025002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.025948.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.030006.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.030956.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.031014.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.031958.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.032016.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.033004.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.033937.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.034002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.034911.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.035002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.035947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.040005.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.040950.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.041008.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.041952.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.042010.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.042955.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.043013.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.043957.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.044015.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.045000.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.045018.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.050030.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.050048.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.051033.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.051051.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.052035.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.052053.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.053038.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.053056.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.054040.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.054058.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.055043.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.055101.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.060112.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.060130.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.061039.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.061057.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.062042.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.062100.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.063044.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.063102.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.064047.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.064105.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.065001.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.065947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.070005.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.070950.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.071008.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.071952.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.072010.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.072955.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.073013.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.073957.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.074015.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.075000.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.075018.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.080002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.080020.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.081005.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.081023.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.082007.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.082025.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.083010.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.083028.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.084012.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.084030.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.085015.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.085033.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.090017.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.090035.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.091020.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.091038.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.092022.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.092040.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.093025.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.093043.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.094027.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.094045.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.095030.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.095048.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.100032.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.100050.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.101035.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.101053.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.102037.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.102055.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.103019.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.103037.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.104022.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.104040.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.105024.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.105042.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.110027.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.110045.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.111048.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.111106.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.112050.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.112108.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.113053.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.113111.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.114055.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.114113.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.115058.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.115116.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.120024.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.120042.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.121027.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.121045.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.122029.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.122047.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.123032.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.123050.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.124034.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.124052.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.125049.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.125107.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.130051.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.130109.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.131117.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.131135.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.132119.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.132137.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.133122.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.133140.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.134125.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.134143.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.135127.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.135145.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.140129.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.140147.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.141118.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.141136.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.142001.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.143006.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.143024.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.144008.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.144026.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.145011.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.145028.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.150013.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.150031.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.151016.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.151034.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.152018.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.152036.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.152945.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.153002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.153911.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.154002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.154947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.155005.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.155950.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.160008.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.160952.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.161010.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.162003.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.162934.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.163002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.163947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.164005.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.165007.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.165025.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.170010.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.170027.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.171012.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.171030.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.172015.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.172033.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.173017.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.173035.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.174020.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.174037.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.175022.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.175040.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.180025.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.180042.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.181027.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.181045.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.182106.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.182124.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.183109.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.183127.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.184045.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.185030.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.185048.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.190032.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.190050.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.191101.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.191119.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.192103.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.193000.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.194006.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.194023.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.195008.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.195026.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.200011.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.200028.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.201017.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.201034.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.202041.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.202059.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.203044.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.203126.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.204111.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.204129.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.205114.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.205131.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.210116.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.210134.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.211119.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.211137.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.212122.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.212139.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.213001.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.214003.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.214942.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.215002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.215947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.220005.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.221014.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.221032.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.222016.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.222034.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.223016.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.223034.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.223956.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.224014.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.224958.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.225016.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.230003.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.230939.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.231002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.232004.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.233002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.233935.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.234002.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.234947.nc
/nfs/gce/globalscratch/obrienj/bnf-cmac-r4/bnfcsapr2cmacS3.c1.20250305.235005.nc
create_gif(templocation, "./", DATE)
BNF CMAC RadCLss Mosaic GIF

References

Surface Meteorological Instrumentation (MET)

  • Kyrouac, J., Shi, Y., & Tuftedal, M. Surface Meteorological Instrumentation (MET), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, AMF3 (Main Site) (M1). Atmospheric Radiation Measurement (ARM) User Facility. Kyrouac et al. (2021)

  • Kyrouac, J., Shi, Y., & Tuftedal, M. Surface Meteorological Instrumentation (MET), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, Supplemental facility at Courtland (S20). Atmospheric Radiation Measurement (ARM) User Facility. Kyrouac et al. (2021)

  • Kyrouac, J., Shi, Y., & Tuftedal, M. Surface Meteorological Instrumentation (MET), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, Supplemental facility at Falkville (S30). Atmospheric Radiation Measurement (ARM) User Facility. Kyrouac et al. (2021)

  • Kyrouac, J., Shi, Y., & Tuftedal, M. Surface Meteorological Instrumentation (MET), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, Supplemental facility at Double Springs (S40). Atmospheric Radiation Measurement (ARM) User Facility. Kyrouac et al. (2021)

Balloon-Borne Sounding System (SONDEWNPN)

  • Keeler, E., Burk, K., & Kyrouac, J. Balloon-Borne Sounding System (SONDEWNPN), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, AMF3 (Main Site) (M1). Atmospheric Radiation Measurement (ARM) User Facility. Keeler et al. (2022)

Weighing Bucket Preciptiation Gauge (WBPLUVIO2)

  • Zhu, Z., Wang, D., Jane, M., Cromwell, E., Sturm, M., Irving, K., & Delamere, J. Weighing Bucket Precipitation Gauge (WBPLUVIO2), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, AMF3 (Main Site) (M1). Atmospheric Radiation Measurement (ARM) User Facility. Zhu et al. (2016)

Laser Disdrometer Quantities (LDQUANTS)

  • Hardin, J., Giangrande, S., & Zhou, A. Laser Disdrometer Quantities (LDQUANTS), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, AMF3 (Main Site) (M1). Atmospheric Radiation Measurement (ARM) User Facility. Hardin et al. (2019)

  • Hardin, J., Giangrande, S., & Zhou, A. Laser Disdrometer Quantities (LDQUANTS), 2025-03-05 to 2025-03-05, Bankhead National Forest, AL, USA; Long-term Mobile Facility (BNF), Bankhead National Forest, AL, Supplemental facility at Falkville (S30). Atmospheric Radiation Measurement (ARM) User Facility. Hardin et al. (2019)

References
  1. Kyrouac, J., Shi, Y., & Tuftedal, M. (2021). met.b1. Atmospheric Radiation Measurement (ARM) Archive, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (US); ARM Data Center, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (United States). 10.5439/1786358
  2. Keeler, E., Burk, K., & Kyrouac, J. (2022). Balloon-borne sounding system (BBSS), WNPN output data. Atmospheric Radiation Measurement (ARM) Archive, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (US); ARM Data Center, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (United States). 10.5439/1595321
  3. Zhu, Z., Wang, D., Jane, M., Cromwell, E., Sturm, M., Irving, K., & Delamere, J. (2016). wbpluvio2.a1. Atmospheric Radiation Measurement (ARM) Archive, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (US); ARM Data Center, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (United States). 10.5439/1338194
  4. Hardin, J., Giangrande, S., & Zhou, A. (2019). ldquants. Atmospheric Radiation Measurement (ARM) Archive, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (US); ARM Data Center, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (United States). 10.5439/1432694