The British Columbia Continental Margin (BCCM) model is a physical biogeochemical oceanographic model, implemented using the Regional Ocean Modeling System (ROMS; Peña et al., 2019). Results restricted to Canada’s Exclusive Economic Zone and mapped to a 2 km x 2 km grid onshore and 6 x 6 km grid offshore are discussed in the BCCM Results vignette, which should be looked at to understand more about the model. The restrictions and varying of the gridsize were done to reduce file sizes.
Due to several requests from users we have now also mapped the BCCM results for its full domain (extending north and south into US waters) onto a 2 km x 2km grid. These requests included:
These requests are now mostly fulfilled, and include the BCCM results on the full domain. The results are in the same format as those for the restricted domain described in the BCCM Results vignette vignette. The file sizes are much larger (each variable is about 120 Mb rather than about 30 Mb), but only need to be downloaded once.
We have kept consistent terminology and functionality as for the
restricted BCCM results. Basically: - variable names are appended with
_full - plotting and analysis functions should still work
on the _full variables.
Deciding if you need the _full outputs or just the
original over Canada’s EEZ:
_full
variables described here.For the restricted domain, the available variables are given in the
data object bccm_data. For the full domain, the variables
are therefore given in bccm_data_full:
bccm_data_full
# data_name
# 1 bccm_surface_oxygen_full
# 2 bccm_surface_ph_full
# 3 bccm_surface_salinity_full
# 4 bccm_surface_temperature_full
# 5 bccm_avg0to40m_oxygen_full
# 6 bccm_avg0to40m_ph_full
# 7 bccm_avg0to40m_salinity_full
# 8 bccm_avg0to40m_temperature_full
# 9 bccm_avg40to100m_oxygen_full
# 10 bccm_avg40to100m_ph_full
# 11 bccm_avg40to100m_salinity_full
# 12 bccm_avg40to100m_temperature_full
# 13 bccm_avg100mtoBot_oxygen_full
# 14 bccm_avg100mtoBot_ph_full
# 15 bccm_avg100mtoBot_salinity_full
# 16 bccm_avg100mtoBot_temperature_full
# 17 bccm_bottom_oxygen_full
# 18 bccm_bottom_ph_full
# 19 bccm_bottom_salinity_full
# 20 bccm_bottom_temperature_full
# 21 bccm_phytoplankton_full
# 22 bccm_primaryproduction_fullThe bccm_data object gives the same 22 names, but
without the _full.
The 22 BCCM full model results are stored on Zenodo at https://zenodo.org/records/14031460. Each can be downloaded individually (if you only want certain variables) as described below. It is easiest to just just simply download them all to your computer in one go, using
This places them into a cache directory on your local machine, given
by by paste0(pacea_cache(), "/bccm_full"). It only took
about 10 minutes to download them all (the code uses parallel cores on
Windows) on a home network, but could be longer on a work network. You
can check progress in your local cache directory, where files should
gradually appear. Any files that are already present in your cache
directory are not re-downloaded. See
?bccm_all_variables_full if you have problems.
As an example, let’s look at the estimates of primary production,
calling the object pp locally:
Note the (). The
bccm_primaryproduction_full() function assigns the output
to our designated variable simply named pp.
If you have not already previously downloaded the relevant results it
will first download them into your cache folder (i.e. it will get just
the specified model results, rather than all of them as in the
bccm_all_variables_full() described above). If you have
previously downloaded the results the function will simply load them in
from your cached folder.
View the data help for more information
(e.g. ?bccm_primaryproduction_full); similar help functions
all point to a common help file for all bccm_full
objects.
So, what does the object look like?
pp
# Simple feature collection with 161025 features and 324 fields
# Geometry type: POLYGON
# Dimension: XY
# Bounding box: xmin: 108882.9 ymin: -165260 xmax: 1160883 ymax: 1192740
# Projected CRS: NAD83 / BC Albers
# # A tibble: 161,025 × 325
# `1993_1` `1993_2` `1993_3` `1993_4` `1993_5` `1993_6` `1993_7` `1993_8`
# * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 0.0840 0.335 0.726 0.796 1.05 0.827 0.845 0.792
# 2 0.0827 0.328 0.747 0.831 1.05 0.834 0.852 0.800
# 3 0.0866 0.344 0.717 0.801 1.07 0.860 0.872 0.813
# 4 0.0855 0.337 0.753 0.861 1.07 0.858 0.867 0.813
# 5 0.0841 0.332 0.757 0.858 1.07 0.848 0.860 0.807
# 6 0.0903 0.349 0.747 0.862 1.09 0.870 0.881 0.823
# 7 0.0887 0.344 0.775 0.904 1.09 0.874 0.878 0.822
# 8 0.0870 0.339 0.773 0.900 1.09 0.867 0.873 0.816
# 9 0.0637 0.251 0.579 0.668 0.807 0.642 0.650 0.606
# 10 0.0691 0.266 0.570 0.649 0.821 0.651 0.658 0.616
# # ℹ 161,015 more rows
# # ℹ 317 more variables: `1993_9` <dbl>, `1993_10` <dbl>, `1993_11` <dbl>,
# # `1993_12` <dbl>, `1994_1` <dbl>, `1994_2` <dbl>, `1994_3` <dbl>,
# # `1994_4` <dbl>, `1994_5` <dbl>, `1994_6` <dbl>, `1994_7` <dbl>,
# # `1994_8` <dbl>, `1994_9` <dbl>, `1994_10` <dbl>, `1994_11` <dbl>,
# # `1994_12` <dbl>, `1995_1` <dbl>, `1995_2` <dbl>, `1995_3` <dbl>,
# # `1995_4` <dbl>, `1995_5` <dbl>, `1995_6` <dbl>, `1995_7` <dbl>, …
head(pp[, 1:5]) # note that the geometry column is included when selecting columns from
# Simple feature collection with 6 features and 5 fields
# Geometry type: POLYGON
# Dimension: XY
# Bounding box: xmin: 626882.9 ymin: 1186740 xmax: 634882.9 ymax: 1192740
# Projected CRS: NAD83 / BC Albers
# # A tibble: 6 × 6
# `1993_1` `1993_2` `1993_3` `1993_4` `1993_5` geometry
# <dbl> <dbl> <dbl> <dbl> <dbl> <POLYGON [m]>
# 1 0.0840 0.335 0.726 0.796 1.05 ((630882.9 1192740, 632882.9 119…
# 2 0.0827 0.328 0.747 0.831 1.05 ((632882.9 1192740, 634882.9 119…
# 3 0.0866 0.344 0.717 0.801 1.07 ((628882.9 1190740, 630882.9 119…
# 4 0.0855 0.337 0.753 0.861 1.07 ((630882.9 1190740, 632882.9 119…
# 5 0.0841 0.332 0.757 0.858 1.07 ((632882.9 1190740, 634882.9 119…
# 6 0.0903 0.349 0.747 0.862 1.09 ((626882.9 1188740, 628882.9 118…
# an `sf` object.The object is in wide format, with each column representing a unique
year-month combination, and is a ‘simple features’ (sf) R
object, and so contains a geometry column. The data also
have various attributes, such as the units for the data values, and some
extra ones to automate some plotting. (This is useful but not essential
for users to know).
We give some examples here, and then refer users to the BCCM Results vignette since the examples shown
there should work for the _full results. (Note we have not
tested every potential idea you might have, but by keeping the structure
of the outputs the same, our custom plotting and analysis functions
should work).
plot()Results can be plotted using the plot() function (that
we have customised). The default settings are to plot results for April,
2018. However, users can specify any time period(s) available in the
results. Examples are:
To see the estimated primary production for each month of 2018
This shows the production ramping up through the spring.
Let’s have a quick look at anomalies, say for oxygen at the bottom of the water column, adapting the examples from the BCCM vignette. Again, see that vignette for extra details.
So let’s ask: how do the anomalies of bottom oxygen for April and September in 2010 and 2018, look compared to a climatology (for each month) from 1993 to 2010 (the full range of years currently available).
We can easily load the model results and calculate the anomalies for
a climatology (see ?calc_clim to obtain the climatology
also):
bottom_oxygen <- bccm_bottom_oxygen_full()
anom <- calc_anom(bottom_oxygen,
clim_years = 1993:2010,
time_period_return = c("Apr", "Sep"),
years_return = c(2010, 2018))
anom
# Simple feature collection with 161025 features and 4 fields
# Geometry type: POLYGON
# Dimension: XY
# Bounding box: xmin: 108882.9 ymin: -165260 xmax: 1160883 ymax: 1192740
# Projected CRS: NAD83 / BC Albers
# # A tibble: 161,025 × 5
# `2010_4` `2010_9` `2018_4` `2018_9` geometry
# <dbl> <dbl> <dbl> <dbl> <POLYGON [m]>
# 1 21.3 8.75 -24.7 -23.3 ((630882.9 1192740, 632882.9 1192740, 63…
# 2 21.3 8.75 -24.7 -23.3 ((632882.9 1192740, 634882.9 1192740, 63…
# 3 21.3 8.70 -24.8 -23.2 ((628882.9 1190740, 630882.9 1190740, 63…
# 4 21.3 8.75 -24.7 -23.3 ((630882.9 1190740, 632882.9 1190740, 63…
# 5 21.3 8.75 -24.7 -23.3 ((632882.9 1190740, 634882.9 1190740, 63…
# 6 21.4 9.09 -25.2 -22.4 ((626882.9 1188740, 628882.9 1188740, 62…
# 7 21.4 8.83 -25.1 -22.8 ((628882.9 1188740, 630882.9 1188740, 63…
# 8 21.4 8.89 -24.9 -22.9 ((630882.9 1188740, 632882.9 1188740, 63…
# 9 21.3 8.75 -24.7 -23.3 ((632882.9 1188740, 634882.9 1188740, 63…
# 10 21.4 9.77 -25.8 -21.2 ((624882.9 1186740, 626882.9 1186740, 62…
# # ℹ 161,015 more rowsSo some areas are relatively oxygen rich (green) in these months compared to the same areas from 1993 to 2010, whereas others are lower in oxygen (red). This varies spatially and by month. Along the coast there looks to be more oxygen than normal in April 2010, generally a bit less in September 2010, and even less in April and September 2018.
See the BCCM vignette for further example calculations, which hopefully stimulate your own ideas.
Peña, M.A., Fine, I. and Callendar, W. 2019. Interannual variability in primary production and shelf-offshore transport of nutrients along the northeast Pacific Ocean margin. Deep-Sea Research II, doi:10.1016/j.dsr2.2019.104637.