This function is called to calculate soil temperature (C) as in Beckman et al. (1973) . This function calls soil_temperature_function, which uses ODEs to calculate a soil profile using equations from deVries (1963)

soil_temperature(
  z_r.intervals = 12,
  z_r,
  z,
  T_a,
  u,
  Tsoil0,
  z0,
  SSA,
  TimeIn,
  S,
  water_content = 0.2,
  air_pressure,
  rho_so = 1620,
  shade = FALSE
)

Arguments

z_r.intervals

numeric the number of intervals in the soil profile to calculate, defaults to 12.

z_r

numeric reference height (m).

z

numeric interval of the soil profile to return (1 to z_r.intervals).

T_a

numeric vector of air temperature (degrees C), Note: missing values will be linearly interpolated.

u

numeric vector of wind speeds (m s-1).

Tsoil0

numeric initial soil temperature (degrees C).

z0

numeric surface roughness (m).

SSA

numeric solar absorptivity of soil surface as a fraction.

TimeIn

numeric vector of time periods for the model.

S

numeric vector of solar radiation (W m-2).

water_content

numeric percent water content (percent).

air_pressure

numeric air pressure (kPa).

rho_so

numeric particle density of soil.

shade

logical whether or not soil temperature should be calculated in the shade.

Value

numeric soil temperature (C).

References

Beckman WA, Mitchell JW, Porter WP (1973). “Thermal Model for Prediction of a Desert Iguana's Daily and Seasonal Behavior.” Journal of Heat Transfer, 95(2), 257-262. doi:10.1115/1.3450037 .

deVries DA (1963). “Thermal Properties of Soils.” In Physics of Plant Environment. North Holland Publishing Company. doi:10.1002/qj.49709038628 .

Author

Joseph Grigg

Examples

  set.seed(123)
  temp_vector       <- runif(48, min = -10, max = 10)
  wind_speed_vector <- runif(48, min = 0, max = 0.4)
  time_vector       <- rep(1:24, 2)
  solrad_vector     <- rep(c(rep(0, 6), 
                             seq(10, 700, length.out = 6), 
                             seq(700, 10, length.out = 6), 
                             rep(0, 6)),
                           2)

  soil_temperature(z_r.intervals = 12, 
                   z_r           = 1.5, 
                   z             = 2, 
                   T_a           = temp_vector, 
                   u             = wind_speed_vector, 
                   Tsoil0        = 20, 
                   z0            = 0.02, 
                   SSA           = 0.7, 
                   TimeIn        = time_vector, 
                   S             = solrad_vector, 
                   water_content = 0.2, 
                   air_pressure  = 85, 
                   rho_so        = 1620, 
                   shade         = FALSE)
#>  [1] 20.000000 12.337271 11.177472  9.282924  9.515928  9.273568  5.871879
#>  [8]  5.846617 10.016769 12.986571 15.659899 22.008877 26.224605 28.457155
#> [15] 28.642127 23.760024 23.084324 15.599727 10.396339  8.164182  9.717859
#> [22]  9.109165  7.805942  6.678911  7.768406  6.065471  5.831465  4.620950
#> [29]  4.296691  2.627543  1.032975  3.941641  7.261893 10.726785 15.266850
#> [36] 17.520869 22.642117 28.046496 24.642633 20.342835 16.389316 11.765335
#> [43]  9.446022  7.772388  5.767417  4.131153  2.547758  2.282975