| Type: | Package |
| Title: | Simulation of Bird Flight Range |
| Version: | 0.2.3 |
| Description: | Functions for range estimation in birds based on Pennycuick (2008) and Pennycuick (1975), 'Flight' program which compliments Pennycuick (2008) requires manual entry of birds which can be tedious when there are hundreds of birds to estimate. Implemented are two ODE methods discussed in Pennycuick (1975) and time-marching computation methods as in Pennycuick (1998) and Pennycuick (2008). See Pennycuick (1975, ISBN:978-0-12-249405-5), Pennycuick (1998) <doi:10.1006/jtbi.1997.0572>, and Pennycuick (2008, ISBN:9780080557816). |
| License: | Apache License version 1.1 | Apache License version 2.0 [expanded from: Apache License] |
| Encoding: | UTF-8 |
| LazyData: | true |
| Imports: | utils, Rcpp (≥ 1.0.2), |
| Suggests: | testthat, covr, knitr, kableExtra, rmarkdown, dplyr, ggplot2 |
| RoxygenNote: | 7.3.2 |
| Depends: | R (≥ 2.10) |
| VignetteBuilder: | knitr |
| Collate: | 'FlyingR.R' 'RcppExports.R' 'birds_documentation.R' 'constant_muscle_mass.R' 'constant_specific_power.R' 'constant_specific_work.R' 'control.R' 'curlew_sandpiper.R' 'method_2.R' 'method_1.R' 'input_match.R' 'lookup_table2.R' 'misc_functions.R' 'flight_simulation.R' 'garden_wablers.R' 'lesser_whitethroats.R' 'migrate.R' 'stopover_mass_calculator.R' 'zzz.R' |
| LinkingTo: | Rcpp |
| URL: | https://github.com/BMasinde/FlyingR |
| BugReports: | https://github.com/BMasinde/FlyingR/issues |
| NeedsCompilation: | yes |
| Packaged: | 2026-03-09 13:16:22 UTC; masinde |
| Author: | Brian Masinde [aut, cre], Krzysztof Bartoszek [ctb, ths] |
| Maintainer: | Brian Masinde <masindeb@live.com> |
| Repository: | CRAN |
| Date/Publication: | 2026-03-13 11:10:02 UTC |
Sample 28 birds
Description
Preset birds data, extracted from Flight Pennycuick(2008). Fat mass percentage generated randomly where zero.
Usage
birds
Format
A data frame with 28 observations and 5 variables not counting the name.
- Scientific.name
Name of bird species
- Empty.mass
Body mass in Kg. Includes fuel (fat mass). In this case the crops were empty but otherwise one should always use the all-up mass (body mass + crop)
- Wing.span
Length of wings spread out in meters
- Fat.mass
Mass of fat that is consumable as fuel in Kg
- Order
Order of the species (passerine = 1 vs non-passerine = 2)
- Wing.area
Area of both wing projected on a flat surface in meters squared
- Muscle.mass
Mass in Kg. of flight muscles
Curlew Sandpiper Data
Description
A sample of 12 individuals observed in lab conditions over five days at the University of Gdansk. Birds were fed ad-libitum with mealworm larvae Tenebrio molitor. To determine the maximum body mass gain sandpipers were weighed every day in the morning
Usage
curlew_sandpiper
Format
A dataframe with 60 rows and 9 columns:
- day
Day of observation of bird
- name
Unique name of individual bird
- empty mass
Body mass in Kg. of the birds
- fat.mass
Mass of fat that is consumable as fuel in Kg
- Wing.area
Area of both wing projected on a flat surface in meters squared
- Wing.span
Length of wings spread out in meters
- order
Order of the species (passerine = 1 vs non-passerine = 2)
- Muscle.mass
Mass in Kg. of flight muscles calculated as 0.17 fraction of body mass
Range Estimation
Description
Practical range estimation of birds using methods in Pennycuick (1975) Mechanics of Flight. These methods are based on Breguet equations.
Usage
flysim(file, header = TRUE, sep = ",", quote = "\"", dec = ".",
fill = TRUE, comment.char = "", ..., data = NULL,
settings = list())
Arguments
file |
Arguments for path to data. |
header |
Logical. If TRUE use first row as column headers |
sep |
separator |
quote |
The set of quoting characters. see read.csv |
dec |
The character used in the file for decimal points. |
fill |
See read.csv |
comment.char |
For more details see read.csv |
... |
further arguments see read.csv |
data |
A data frame. |
settings |
A list for re-defining constants. See details. |
Details
The option *settings takes the arguments (those particularly required by this function)
ppc: Profile power constant
fed: Energy content of fuel from fat
g: Acceleration due to gravity
mce: Mechanical conversion efficiency [0,1]
ipf: Induced power factor
vcp: Ventilation and circulation power
airDensity: Air density at cruising altitude
bdc: Body drag coefficient
alpha: Basal metabolism factors in passerines and non passerines
delta: Basal metabolism factors in passerines and non passerines alpha*bodyMass^delta
Value
S3 class object with range estimates based on methods defined and settings used
range estimates (Km)
settings used
data
Author(s)
Brian Masinde
Examples
flysim(data = birds, settings = list(fatEnergy = 3.89*10^7))
flysim(data = birds, settings = list(airDensity = 0.905))
Garden Wablers Data
Description
A subset of data on Garden Wablers captured during autumn migration across several ringing stations in along the southern eastern migration flyway (See Ożarowska, A. 2015).
Usage
garden_wablers
Format
A dataframe with 119 rows and 9 columns:
- Region
Region of ringing station where bird was captured for measurements
- body mass
Body mass in Kg. of the birds
- Fat.mass
Mass of fat that is consumable as fuel in Kg
- Wing.span
Length of wings spread out in meters
- Wing.area
Area of both wing projected on a flat surface in meters squared
- Muscle.mass
Mass in Kg. of flight muscles calculated as 0.17 fraction of body mass
- taxon
Order of the species (passerine = 1 vs non-passerine = 2)
Lesser Whitethroats Data
Description
A subset of data on Lesser Whitethroats captured during autumn migration across several ringing stations in along the southern eastern migration flyway (See Ożarowska, A. 2015).
Usage
lesser_whitethroats
Format
A dataframe with 84 rows and 9 columns:
- Region
Region of ringing station where bird was captured for measurements
- body mass
Body mass in Kg. of the birds
- Fat.mass
Mass of fat that is consumable as fuel in Kg
- Wing.span
Length of wings spread out in meters
- Wing.area
Area of both wing projected on a flat surface in meters squared
- Muscle.mass
Mass in Kg. of flight muscles calculated as 0.17 fraction of body mass
- taxon
Order of the species (passerine = 1 vs non-passerine = 2)
Range Estimation
Description
Practical range estimation of birds using methods from Pennycuick (2008).
Usage
migrate(file, header = TRUE, sep = ",", quote = "\"", dec = ".",
fill = TRUE, comment.char = "", ...,
data = NULL, settings = list(), method = "cmm",
speed_control = 1, min_energy_protein = 0.05)
Arguments
file |
Path to file where data resides. |
header |
Logical. If TRUE use first row as column headers |
sep |
separator |
quote |
The set of quoting characters. see read.csv |
dec |
The character used in the file for decimal points |
fill |
See read.csv |
comment.char |
For more details see read.csv |
... |
further arguments see read.csv |
data |
A data frame with required columns: body mass (Kg), fat mass (Kg), muscle mass (Kg), wing span (m), wing area (m^2), order / taxon (passerines = 1, non passerines = 2). |
settings |
A list for re-defining constants. See details for these with default values from Pennycuick(2008) and Pennycuick(1998). |
method |
Methods for protein energy consumption from muscle mass |
speed_control |
One of two speed control methods. By default 1 is used. 0 is the alternative. The former holds the true airspeed constant while the latter holds the ratio of true airspeed to the minimum power speed constant (V:Vmp constant). |
min_energy_protein |
Percentage of energy attributed to protein due to metabolism. Default value is 5 percent (0.05). If method "csw" or "csp" is chosen, 2 would be attained from consuming protein in the airframe mass. |
Details
The option *control takes the following arguments
ppc: Profile power constant (8.4).
fed: Energy content of fuel from fat (3.9E+07).
ped: Energy content of protein (1.8E+07).
g: Acceleration due to gravity (9.81).
mce: Mechanical conversion efficiency [0,1]. Efficiency at which mechanical power is converted to chemical power (0.23).
ipf: Induced power factor (1.2).
vcp: Ventilation and circulation power (1.1).
airDensity: Air density at cruising altitude (1.00).
bdc: Body drag coefficient (0.1).
alpha: Basal metabolism factors in passerines and non passerines (6.25, 3.79).
delta: Basal metabolism factors in passerines and non passerines (0.724, 0.723) alpha*bodyMass^delta.
mipd: Inverse power density of the mitochondria (1.2E-06).
speedRatio: True air speed to minimum power speed ratio (1.2).
muscDensity: Density of the flight muscles (1060).
phr: Protein hydration ratio (2.2). Whenever protein is consumed from the muscle mass some amount of water is lost in the process. This water is estimated as the mass of dry protein time the phr.
Value
S3 class object with range estimates based on methods defined and settings
range estimates (Km)
remaining body mass (Kg)
remaining fat mass (Kg)
remaining muscle mass (Kg)
minimum power speed at start of flight (m/s)
minimum power speed at end of flight (m/s)
taxon (order)
Author(s)
Brian Masinde
Examples
migrate(data = birds, settings = list(fed = 3.89*10^7))
migrate(data = birds, method = "cmm", settings = list(airDensity = 0.905))
Stopover mass calculator
Description
During stop-overs birds replenish fat mass. Using simplifications from Lindström 1991. The implementation here is simplistic in that muscle mass is not restored as theory and field experiments have shown.
Usage
stopover.mass.calculator(bodyMass, fatMass, taxon, duration)
Arguments
bodyMass |
left-over after running function migrate |
fatMass |
left-over after running function migrate |
taxon |
(or order) classified into two categories (passerines and non-passerines) |
duration |
number of hours spent at stop-over site. This must be an integer see example |
Value
fat_mass, body_mass
Examples
stopover.mass.calculator(bodyMass = c(2.2, 3.4), fatMass = c(0.34, 0.42),
taxon = c(1,2), duration = 36L)