Energy irradiance for one or more wavebands of a light source spectrum.

e_irrad(spct, w.band, quantity, time.unit, scale.factor, wb.trim,
  use.cached.mult, use.hinges, allow.scaled, ...)

# S3 method for default
e_irrad(spct, w.band, quantity, time.unit, scale.factor,
  wb.trim, use.cached.mult, use.hinges, allow.scaled, ...)

# S3 method for source_spct
e_irrad(spct, w.band = NULL, quantity = "total",
  time.unit = NULL, scale.factor = 1,
  wb.trim = getOption("photobiology.waveband.trim", default = TRUE),
  use.cached.mult = getOption("photobiology.use.cached.mult", default =
  FALSE), use.hinges = NULL, allow.scaled = !quantity %in%
  c("average", "mean", "total"), ...)

# S3 method for source_mspct
e_irrad(spct, w.band = NULL, quantity = "total",
  time.unit = NULL, scale.factor = 1,
  wb.trim = getOption("photobiology.waveband.trim", default = TRUE),
  use.cached.mult = getOption("photobiology.use.cached.mult", default =
  FALSE), use.hinges = NULL, allow.scaled = !quantity %in%
  c("average", "mean", "total"), ..., attr2tb = NULL, idx = "spct.idx",
  .parallel = FALSE, .paropts = NULL)

Arguments

spct

an R object.

w.band

a list of waveband objects or a waveband object.

quantity

character string One of "total", "average" or "mean", "contribution", "contribution.pc", "relative" or "relative.pc".

time.unit

character or lubridate::duration object.

scale.factor

numeric vector of length 1, or length equal to that of w.band. Numeric multiplier applied to returned values.

wb.trim

logical if TRUE wavebands crossing spectral data boundaries are trimmed, if FALSE, they are discarded.

use.cached.mult

logical indicating whether multiplier values should be cached between calls.

use.hinges

logical Flag indicating whether to insert "hinges" into the spectral data before integration so as to reduce interpolation errors at the boundaries of the wavebands.

allow.scaled

logical indicating whether scaled or normalized spectra as argument to spct are flagged as an error.

...

other arguments (possibly used by derived methods).

attr2tb

character vector, see add_attr2tb for the syntax for attr2tb passed as is to formal parameter col.names.

idx

character Name of the column with the names of the members of the collection of spectra.

.parallel

if TRUE, apply function in parallel, using parallel backend provided by foreach

.paropts

a list of additional options passed into the foreach function when parallel computation is enabled. This is important if (for example) your code relies on external data or packages: use the .export and .packages arguments to supply them so that all cluster nodes have the correct environment set up for computing.

Value

A named numeric vector in the case of methods for individual spectra, with one value for each waveband passed to parameter w.band. A data.frame in the case of collections of spectra, containing one column for each waveband object, an index column with the names of the spectra, and optionally additional columns with metadata values retrieved from the attributes of the member spectra.

By default values are only integrated, but depending on the argument passed to parameter quantity they can be re-expressed as relative fractions or percentages. In the case of vector output, names attribute is set to the name of the corresponding waveband unless a named list is supplied in which case the names of the list members are used. The time.unit attribute is copied from the spectrum object to the output. Units are as follows: If units are absolute and time.unit is second, [W m-2 nm-1] -> [W m-2] If time.unit is day, [J d-1 m-2 nm-1] -> [J m-2]; if units are relative, fraction of one or percent.

Methods (by class)

  • default: Default for generic function

  • source_spct: Calculates energy irradiance from a source_spct object.

  • source_mspct: Calculates energy irradiance from a source_mspct object.

Note

The last two parameters control speed optimizations. The defaults should be suitable in most cases. If you will use repeatedly the same SWFs on many spectra measured at exactly the same wavelengths you may obtain some speed up by setting use.cached.mult=TRUE. However, be aware that you are responsible for ensuring that the wavelengths are the same in each call, as the only test done is for the length of the w.length vector.

See also

Other irradiance functions: e_fluence, fluence, irrad, q_fluence, q_irrad

Examples

e_irrad(sun.spct, waveband(c(400,700)))
#> range.400.700 #> 196.6343 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance total"
e_irrad(sun.spct, split_bands(c(400,700), length.out = 3))
#> range.400.500 range.500.600 range.600.700 #> 69.69043 68.48950 58.45434 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance total"
e_irrad(sun.spct, split_bands(c(400,700), length.out = 3), quantity = "total")
#> range.400.500 range.500.600 range.600.700 #> 69.69043 68.48950 58.45434 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance total"
e_irrad(sun.spct, split_bands(c(400,700), length.out = 3), quantity = "average")
#> range.400.500 range.500.600 range.600.700 #> 0.6969043 0.6848950 0.5845434 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance average"
e_irrad(sun.spct, split_bands(c(400,700), length.out = 3), quantity = "relative")
#> range.400.500 range.500.600 range.600.700 #> 0.3544165 0.3483091 0.2972744 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance relative"
e_irrad(sun.spct, split_bands(c(400,700), length.out = 3), quantity = "relative.pc")
#> range.400.500 range.500.600 range.600.700 #> 35.44165 34.83091 29.72744 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance relative.pc"
e_irrad(sun.spct, split_bands(c(400,700), length.out = 3), quantity = "contribution")
#> range.400.500 range.500.600 range.600.700 #> 0.2589520 0.2544897 0.2172015 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance contribution"
e_irrad(sun.spct, split_bands(c(400,700), length.out = 3), quantity = "contribution.pc")
#> range.400.500 range.500.600 range.600.700 #> 25.89520 25.44897 21.72015 #> attr(,"time.unit") #> [1] "second" #> attr(,"radiation.unit") #> [1] "energy irradiance contribution.pc"