#' Viscosity of water
#'
#' Calculates the viscosity of water as a function of temperature and atmospheric
#' pressure.
#'
#' @param tc numeric, air temperature (tc), degrees C
#' @param p numeric, atmospheric pressure (p), Pa
#'
#' @return numeric, viscosity of water (mu), Pa s
#'
#' @examples print("Density of water at 20 degrees C and standard atmospheric pressure:")
#' print(calc_density_h2o(20, 101325))
#'
#' @references Huber, M. L., R. A. Perkins, A. Laesecke, D. G. Friend, J. V.
#' Sengers, M. J. Assael, ..., K. Miyagawa (2009) New
#' international formulation for the viscosity of H2O, J. Phys.
#' Chem. Ref. Data, Vol. 38(2), pp. 101-125.
#'
#' @export
#'
calc_viscosity_h2o <- function( tc, p ) {
# Define reference temperature, density, and pressure values:
tk_ast <- 647.096 # Kelvin
rho_ast <- 322.0 # kg/m^3
mu_ast <- 1e-6 # Pa s
# Get the density of water, kg/m^3
rho <- calc_density_h2o(tc, p)
# Calculate dimensionless parameters:
tbar <- (tc + 273.15)/tk_ast
tbarx <- tbar^(0.5)
tbar2 <- tbar^2
tbar3 <- tbar^3
rbar <- rho/rho_ast
# Calculate mu0 (Eq. 11 & Table 2, Huber et al., 2009):
mu0 <- 1.67752 + 2.20462/tbar + 0.6366564/tbar2 - 0.241605/tbar3
mu0 <- 1e2*tbarx/mu0
# Create Table 3, Huber et al. (2009):
h_array <- array(0.0, dim=c(7,6))
h_array[1,] <- c(0.520094, 0.0850895, -1.08374, -0.289555, 0.0, 0.0) # hj0
h_array[2,] <- c(0.222531, 0.999115, 1.88797, 1.26613, 0.0, 0.120573) # hj1
h_array[3,] <- c(-0.281378, -0.906851, -0.772479, -0.489837, -0.257040, 0.0) # hj2
h_array[4,] <- c(0.161913, 0.257399, 0.0, 0.0, 0.0, 0.0) # hj3
h_array[5,] <- c(-0.0325372, 0.0, 0.0, 0.0698452, 0.0, 0.0) # hj4
h_array[6,] <- c(0.0, 0.0, 0.0, 0.0, 0.00872102, 0.0) # hj5
h_array[7,] <- c(0.0, 0.0, 0.0, -0.00435673, 0.0, -0.000593264) # hj6
# Calculate mu1 (Eq. 12 & Table 3, Huber et al., 2009):
mu1 <- 0.0
ctbar <- (1.0/tbar) - 1.0
# print(paste("ctbar",ctbar))
# for i in xrange(6):
for (i in 1:6){
coef1 <- ctbar^(i-1)
# print(paste("i, coef1", i, coef1))
coef2 <- 0.0
for (j in 1:7){
coef2 <- coef2 + h_array[j,i] * (rbar - 1.0)^(j-1)
}
mu1 <- mu1 + coef1 * coef2
}
mu1 <- exp( rbar * mu1 )
# print(paste("mu1",mu1))
# Calculate mu_bar (Eq. 2, Huber et al., 2009)
# assumes mu2 = 1
mu_bar <- mu0 * mu1
# Calculate mu (Eq. 1, Huber et al., 2009)
mu <- mu_bar * mu_ast # Pa s
return( mu )
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.