stoch_crm {stochLAB} | R Documentation |
Stochastic collision risk model for a single species and one wind farm scenario
Description
Runs a Stochastic Collision Risk Model (SCRM) for estimating the number of in-flight collisions with offshore windfarm turbines, for given species and windfarm scenario. Core calculations follow the work developed by Masden (2015). See Background and Updates section below for more details.
Usage
stoch_crm(
model_options = c("1", "2", "3", "4"),
n_iter = 1000,
flt_speed_pars,
body_lt_pars,
wing_span_pars,
avoid_bsc_pars = NULL,
avoid_ext_pars = NULL,
noct_act_pars,
prop_crh_pars = NULL,
bird_dens_opt = c("tnorm", "resample", "qtiles"),
bird_dens_dt,
flight_type,
prop_upwind,
gen_fhd_boots = NULL,
site_fhd_boots = NULL,
n_blades,
air_gap_pars,
rtr_radius_pars,
bld_width_pars,
bld_chord_prf = chord_prof_5MW,
rtn_pitch_opt = c("probDist", "windSpeedReltn"),
bld_pitch_pars = NULL,
rtn_speed_pars = NULL,
windspd_pars = NULL,
rtn_pitch_windspd_dt = NULL,
trb_wind_avbl,
trb_downtime_pars,
wf_n_trbs,
wf_width,
wf_latitude,
tidal_offset,
lrg_arr_corr = TRUE,
xinc = 0.05,
yinc = 0.05,
out_format = c("draws", "summaries"),
out_sampled_pars = FALSE,
out_period = c("months", "seasons", "annum"),
season_specs = NULL,
verbose = TRUE,
log_file = NULL,
seed = NULL
)
Arguments
model_options |
Character vector, the model options for calculating collision risk (see Details section below). |
n_iter |
An integer. The number of iterations for the model simulation. |
flt_speed_pars |
A single row data frame with columns |
body_lt_pars |
A single row data frame with columns |
wing_span_pars |
A single row data frame with columns |
avoid_bsc_pars , avoid_ext_pars |
Single row data frames with columns
|
noct_act_pars |
A single row data frame with columns |
prop_crh_pars |
Required only for model Option 1, a single row data
frame with columns |
bird_dens_opt |
Option for specifying the random sampling mechanism for bird densities:
|
bird_dens_dt |
A data frame with monthly estimates of bird density within the windfarm footprint, expressed as the number of daytime in-flight birds/km^2 per month. Data frame format requirements:
|
flight_type |
A character string, either 'flapping' or 'gliding', indicating the species' characteristic flight type. |
prop_upwind |
Numeric value between 0-1 giving the proportion of flights upwind - defaults to 0.5. |
gen_fhd_boots |
Required only for model Options 2 and 3, a data frame
with bootstrap samples of flight height distributions (FHD) of the species
derived from general (country/regional level) data. FHD provides relative
frequency distribution of bird flights at 1-+
-metre height bands, starting
from sea surface. The first column must be named as NOTE: generic_fhd_bootstraps is a list object with generic FHD bootstrap estimates for 25 seabird species from Johnson et al (2014) doi:10.1111/1365-2664.12191 (see usage in Example Section below). |
site_fhd_boots |
Required only for model Option 4, a data frame similar
to |
n_blades |
An integer, the number of blades in rotor ( |
air_gap_pars |
A single row data frame with columns |
rtr_radius_pars |
A single row data frame with columns |
bld_width_pars |
A single row data frame with columns |
bld_chord_prf |
A data frame with the chord taper profile of the rotor blade. It must contain the columns:
Defaults to a generic profile for a typical modern 5MW turbine. See
|
rtn_pitch_opt |
a character string, the option for specifying the sampling mechanism for rotation speed and blade pitch:
|
bld_pitch_pars |
Only required if |
rtn_speed_pars |
Only required if |
windspd_pars |
Only required if |
rtn_pitch_windspd_dt |
Only required if
|
trb_wind_avbl |
A data frame with the monthly estimates of operational wind availability. It must contain the columns:
|
trb_downtime_pars |
A data frame with monthly estimates of maintenance downtime, assumed to follow a tnorm-lw0 distribution. It must contain the following columns:
|
wf_n_trbs |
Integer, the number of turbines on the windfarm. |
wf_width |
Numeric value, the approximate longitudinal width of the
wind farm, in kilometres ( |
wf_latitude |
A decimal value. The latitude of the centroid of the windfarm, in degrees. |
tidal_offset |
A numeric value, the tidal offset, the difference between HAT and mean sea level, in metres. |
lrg_arr_corr |
Boolean value. If TRUE, the large array correction will be applied. This is a correction factor to account for the decay in bird density at later rows in wind farms with a large array of turbines. |
yinc , xinc |
numeric values, the increments along the y-axis and x-axis for numerical integration across segments of the rotor circle. Chosen values express proportion of rotor radius. By default these are set to 0.05, i.e. integration will be performed at a resolution of one twentieth of the rotor radius. |
out_format |
Output format specification. Possible values are:
|
out_sampled_pars |
Logical, whether to output summary statistics of values sampled for each stochastic model parameter. |
out_period |
Controls level of temporal aggregation of collision outputs. Possible values are:
|
season_specs |
Only required if
|
verbose |
Logical, print model run progress on the console? |
log_file |
Path to log file to store session info and main model run options. If set to NULL (default value), log file is not created. |
seed |
Integer, the random seed for random number generation, for analysis reproducibility. |
Details
Collision risk can be calculated under 4 options, specified by model_options
:
-
Option 1 - Basic model with proportion at collision risk height derived from site survey (
prop_crh_surv
). -
Option 2 - Basic model with proportion at collision risk height derived from a generic flight height distribution (
gen_fhd
). -
Option 3 - Extended model using a generic flight height distribution (
gen_fhd
). -
Option 4 - Extended model using a site-specific flight height distribution (
site_fhd
).
Where,
Basic model - assumes a uniform distribution of bird flights at collision risk height (i.e. above the minimum and below the maximum height of the rotor blade).
Extended model - takes into account the distribution of bird flight heights at collision risk height.
Value
If out_sampled_pars = FALSE
, returns a list with estimates of number of
collisions per chosen time periods, with elements containing the outputs for
each CRM Option.
If out_sampled_pars = TRUE
, returns a list object with two top-level
elements:
-
collisions
, a list comprising collision estimates for each CRM Option, -
sampled_pars
, a list with summary statistics of values sampled for stochastic model parameters.
Examples
# ------------------------------------------------------
# Run with arbitrary parameter values, for illustration
# ------------------------------------------------------
# ------------------------------------------------------
# Setting some of the required inputs upfront
b_dens <- data.frame(
month = month.abb,
mean = runif(12, 0.8, 1.5),
sd = runif(12, 0.2, 0.3)
)
head(b_dens)
# Generic FHD bootstraps from Johnson et al (2014)
fhd_boots <- generic_fhd_bootstraps[[1]]
head(fhd_boots)
# wind speed vs rotation speed vs blade pitch
wind_rtn_ptch <- data.frame(
wind_speed = seq_len(30),
rtn_speed = 10/(30:1),
bld_pitch = c(rep(90, 4), rep(0, 8), 5:22)
)
head(wind_rtn_ptch)
# wind availability
windavb <- data.frame(
month = month.abb,
pctg = runif(12, 85, 98)
)
head(windavb)
# maintenance downtime
dwntm <- data.frame(
month = month.abb,
mean = runif(12, 6, 10),
sd = rep(2, 12))
head(dwntm)
# seasons specification
seas_dt <- data.frame(
season_id = c("a", "b", "c"),
start_month = c("Jan", "May", "Oct"), end_month = c("Apr", "Sep", "Dec")
)
head(seas_dt)
# ----------------------------------------------------------
# Run stochastic CRM, treating rotor radius, air gap and
# blade width as fixed parameters (i.e. not stochastic)
stoch_crm(
model_options = c(1, 2, 3),
n_iter = 1000,
flt_speed_pars = data.frame(mean = 7.26, sd = 1.5),
body_lt_pars = data.frame(mean = 0.39, sd = 0.005),
wing_span_pars = data.frame(mean = 1.08, sd = 0.04),
avoid_bsc_pars = data.frame(mean = 0.99, sd = 0.001),
avoid_ext_pars = data.frame(mean = 0.96, sd = 0.002),
noct_act_pars = data.frame(mean = 0.033, sd = 0.005),
prop_crh_pars = data.frame(mean = 0.06, sd = 0.009),
bird_dens_opt = "tnorm",
bird_dens_dt = b_dens,
flight_type = "flapping",
prop_upwind = 0.5,
gen_fhd_boots = fhd_boots,
n_blades = 3,
rtr_radius_pars = data.frame(mean = 80, sd = 0), # sd = 0, rotor radius is fixed
air_gap_pars = data.frame(mean = 36, sd = 0), # sd = 0, air gap is fixed
bld_width_pars = data.frame(mean = 8, sd = 0), # sd = 0, blade width is fixed
rtn_pitch_opt = "windSpeedReltn",
windspd_pars = data.frame(mean = 7.74, sd = 3),
rtn_pitch_windspd_dt = wind_rtn_ptch,
trb_wind_avbl = windavb,
trb_downtime_pars = dwntm,
wf_n_trbs = 200,
wf_width = 15,
wf_latitude = 56.9,
tidal_offset = 2.5,
lrg_arr_corr = TRUE,
verbose = TRUE,
seed = 1234,
out_format = "summaries",
out_sampled_pars = TRUE,
out_period = "seasons",
season_specs = seas_dt,
log_file = NULL
)