ectoR_devel: Ectotherm heat budget model

View source: R/ectoR_devel.R

ectoR_develR Documentation

Ectotherm heat budget model

Description

A modularised implementation of the heat budget of the Niche Mapper ectotherm model that computes body temperature, and water loss for a single environment with no behaviour. Like endoR_devel, it can be used to develop customised versions of the NicheMapR ectotherm model.

Usage

ectoR_devel(Ww_g = 40, shape = 3, alpha = 0.85, postur = 0, TA = 20, TGRD = 40, TSKY = -5, VEL = 1, RH = 30, QSOLR = 800, Z = 20 ...)

Arguments

Ww_g

= 40, Wet weight of animal (g), note this model is 'steady state' so no lags in heating/cooling due to mass

alpha

= 0.85, Solar absorptivity, 0-1

shape

= 3, Organism shape, 0-5, Determines whether standard or custom shapes/surface area/volume relationships are used: 0=plate, 1=cyl, 2=ellips, 3=lizard (desert iguana), 4=frog (leopard frog), 5=custom (see details)

M_1

= 0.013, Metabolic rate parameter 1 V_O2=M_1*M^M_2*10^(M_3*Tb), in ml O2 / h, default parameters for lizards based on Eq. 2 from Andrews & Pough 1985. Physiol. Zool. 58:214-231

M_2

= 0.800, Metabolic rate parameter 2

M_3

= 0.038, Metabolic rate parameter 3

pct_wet

= 0.1, % of surface area acting as a free-water exchanger, for computing cutaneous water loss

pct_eyes

= 0, % of surface area taken up by open eyes, for computing ocular water loss (only when active)

pct_mouth

= 0, % of surface area taken up by open mouth, for computing panting water loss

psi_body

= -7.07 * 100, water potential of body (J/kg) - affects skin humidity for water vapour exchange

pantmax

= 1, maximum multiplier on breathing rate, for respiratory water loss via panting (>1 invokes panting)

F_O2

= 20, % oxygen extraction efficiency, for respiratory water loss

delta_air

= 0.1, temperature difference (°C) between expired and inspired air, for computing respiratory water loss

leaf

= 0, use vapour conductance for evaporation (leaf mode = 1, non-leaf mode = 0)

g_vs_ab

= 0.3, leaf vapour conductance, abaxial (bottom of leaf), mol/m2/s

g_vs_ad

= 0, leaf vapour conductance, adaxial (top of leaf), mol/m2/s

O2gas

= 20.95, % O2 in air

CO2gas

= 0.03, % CO2 in air

N2gas

= 79.02, % nitrogen in air

SHADE

= 0, shade level (%)

QSOLR

= 1000, solar radiation, horizontal plane (W/m2)

Z

= 20, zenith angle of sun (degrees from overhead)

TA

= 20, air temperature at local height (°C)

TGRD

= 30, ground temperature (°C)

TSKY

= -5, sky temperature (°C)

VEL

= 1, wind speed (m/s)

RH

= 30, relative humidity (%)

Details

Environmental inputs:

  • elev = 0, elevation (m)

  • alpha_sub = 0.8, solar absorptivity of substrate (fractional, 0-1)

  • fluid = 0, fluid type: 0 = air; 1 = water

  • TSUBST = TGRD, surface temperature for conduction (°C)

  • K_sub = 0.5, substrate thermal conductivity (W/m°C)

  • pres = 101325, atmospheric pressure (Pa)

  • O2gas = 20.95, oxygen concentration of air, to account for non-atmospheric concentrations e.g. in burrows (%)

  • N2gas = 79.02, nitrogen concetration of air, to account for non-atmospheric concentrations e.g. in burrows (%)

  • CO2gas = 0.0412, carbon dioxide concentration of air, to account for non-atmospheric concentrations e.g. in burrows (%)

  • PDIF = 0.15, proportion of solar radiation that is diffuse (fractional, 0-1)

Morphological parameters:

  • custom_shape = c(10.4713,.688,0.425,0.85,3.798,.683,0.694,.743), Custom shape coefficients. Operates if shape=5, and consists of 4 pairs of values representing the parameters a and b of a relationship AREA=a*mass^b, where AREA is in cm2 and mass is in g. The first pair are a and b for total surface area, then a and b for ventral area, then for sillhouette area normal to the sun, then sillhouette area perpendicular to the sun

  • shape_a = 1, Proportionality factor (-) for going from volume to area, keep this 1 (redundant parameter that should be removed)

  • shape_b = 3, Proportionality factor (-) for going from volume to area, represents ratio of width:height for a plate, length:diameter for cylinder, b axis:a axis for ellipsoid

  • shape_c = 0.6666666667, Proportionality factor (-) for going from volume to area, represents ratio of length:height for a plate, c axis:a axis for ellipsoid

  • conv_enhance = 1, convective enhancement factor, accounting for enhanced turbulent convection in outdoor conditions compared to what is measured in wind tunnles, see Kolowski & Mitchell 1976 10.1115/1.3450614 and Mitchell 1976 https://doi.org/10.1016/S0006-3495(76)85711-6

  • fatosk = 0.4, Configuration factor to sky (-) for infrared calculations

  • fatosb = 0.4, Configuration factor to subsrate for infrared calculations

  • pct_cond = 10, Percentage of animal surface contacting the substrate (%)

  • pct_touch = 0, Percentage of animal surface area contacting another animal of same temperature (%)

  • k_flesh = 0.5, Thermal conductivity of flesh (W/mC, range: 0.412-2.8)

  • rho_body = 1000, Density of flesh (kg/m3)

  • epsilon = 0.95, Emissivity of animal (0-1)

  • postur = 1, postural orientation to sun, 1 = perpendicular, 2 = parallel, 0 = half way between (foraging)

Outputs:

temperature variables:

TC - Body temperature (°C)

TSKIN - Skin temperature (°C)

TLUNG - Lung temperature (°C)

enbal variables:

  • 1 QSOL - Solar radiation absorbed (W)

  • 2 QIRIN - Infrared radiation absorbed (W)

  • 3 QMET - Metabolic heat production (W)

  • 4 QEVAP - Evaporative heat loss (W)

  • 5 QIROUT - Infrared radiation lost (W)

  • 6 QCONV - Heat lost by convection (W)

  • 7 QCOND - Heat lost by conduction (W)

  • 8 ENB - Energy balance (W)

  • 9 NTRY - Iterations that were required for solution to heat balance equation

masbal variables:

  • 1 O2_ml - Oxygen consumption rate (ml/h)

  • 2 H2OResp_g - Respiratory water loss (g/h)

  • 3 H2OCut_g - Cutaneous water loss (g/h)

  • 4 H2OEye_g - Ocular water loss (g/h)

Examples

library(NicheMapR)

# parameters
Ww_g <- 40
shape <- 3
alpha <- 0.85
ectoR.out <- ectoR_devel(Ww_g = Ww_g, # wet weight, g
                         shape = shape, # using lizard geometry
                         alpha = alpha, # solar absorptivity
                         postur = 0, # average posture, half way between normal and parallel to sun
                         TA = 20, # air temperature at lizard height, deg C
                         TGRD = 40, # ground temperature, deg C
                         TSKY = -5, # sky temperature, deg C
                         VEL = 1, # wind speed, m/s
                         RH = 30, # relative humidity, %
                         QSOLR = 800, # total horizontal plane solar radiation, W/m2
                         Z = 20 # solar zenith angle, degrees
)
# return body temperature
ectoR.out$TC
# return skin temperature
ectoR.out$TS
# return heat budget
ectoR.out$enbal
# return O2 consumption rate and water loss
ectoR.out$masbal

# run microclimate model in monthly mode at default site (Madison, Wisconsin, USA)
micro <- micro_global()

# extract full sun conditions
metout <- as.data.frame(micro$metout)
soil <- as.data.frame(micro$soil)

# get required inputs
TAs <- metout$TALOC
TGRDs <- soil$D0cm
TSKYs <- metout$TSKYC
VELs <- metout$VLOC
RHs <- metout$RHLOC
QSOLRs <- metout$SOLR
Zs <- metout$ZEN

# use ectoR_devel to compute body temperature in open without respiratory heat loss,
# conduction, or metabolic heat gain
TC <- unlist(lapply(1:length(TAs), function(x){ectoR_devel(
  Ww_g = Ww_g, # wet weight, g
  shape = shape, # using lizard geometry
  alpha = alpha, # solar absorptivity
  M_1 = 0, # turn of metabolic heat
  postur = 0, # average posture, half way between normal and parallel to sun
  pantmax = 0, # turn off respiratory heat exchange
  pct_cond = 0, # negligible conduction to substrate
  alpha_sub = (1 - micro$REF), # substrate absorptivity used in microclimate model
  elev = micro$elev, # elevation from microclimate model
  TA = TAs[x], # air temperature at lizard height from microclimate model, deg C
  TGRD = TGRDs[x], # ground temperature from microclimate model, deg C
  TSKY = TSKYs[x], # sky temperature from microclimate model, deg C
  VEL = VELs[x], # wind speed from microclimate model, m/s
  RH = RHs[x], # relative humidity from microclimate model, %
  QSOLR = QSOLRs[x], # total horizontal plane solar radiation from microclimate model, W/m2
  Z = Zs[x] # solar zenith angle from microclimate model, degrees
)$TC})) # run ectoR_devel across environments

# run ectotherm model for a non-behaving animal without respiratory heat loss,
# conduction or metabolic heat gain
ecto <- ectotherm(
  Ww_g = Ww_g, # wet weight, g
  shape = shape, # using lizard geometry
  alpha_min = alpha, # minimum solar absorptivity
  alpha_max = alpha, # maximum solar absorptivity
  M_1 = 0, # turn of metabolic heat
  postur = 0, # average posture, half way between normal and parallel to sun
  pantmax = 0, # turn off respiratory heat exchange
  pct_cond = 0, # negligible conduction to substrate
  live = 0
)

# extract results
environ <- as.data.frame(ecto$environ)
enbal <- as.data.frame(ecto$enbal)
masbal <- as.data.frame(ecto$masbal)
TC_ectotherm <- environ$TC

# compare
time <- micro$dates
plot(time, TC, type = 'l', ylim = c(-25, 55), ylab = 'body temperature, deg C', xlab = 'month of year')
points(time, TC_ectotherm, type = 'l', col = 2)


mrke/NicheMapR documentation built on April 3, 2024, 10:05 a.m.