Title: | Models and Equations for Human Comfort Research |
---|---|
Description: | Calculation of various common and less common comfort indices such as predicted mean vote or the two node model. Converts physical variables such as relative to absolute humidity and evaluates the performance of comfort indices. |
Authors: | Marcel Schweiker [aut, cre] |
Maintainer: | Marcel Schweiker <[email protected]> |
License: | GPL-2 |
Version: | 0.1.12 |
Built: | 2025-02-19 05:44:23 UTC |
Source: | https://github.com/marcelschweiker/comf |
This package contains several functions to calculate and evaluate a series of comfort indices.
Package: | comf |
Type: | Package |
Version: | 0.1.12 |
Date: | 2024-01-29 |
License: | GPL-2 |
LazyLoad: | yes |
To create input parameters, the function createCond
, which creates a list of input parameters may be helpful.
The main function of this packages is calcComfInd
, which returns the desired comfort parameters. However, each index can be computed using its own function, e.g. to calculate only PMV the function calcPMV
can be used.
The comfort indices calculated within this package are for example as follows. To get further information, go to the help page, which can be accessed using the index below e.g. ?pmv:
Index | Description |
pmv | Predicted mean vote (PMV) |
ppd | Predicted precentage dissatisfied (PPD) |
tnHumphreysNV | Neutral temperature in naturally ventilated buildings according to Humphreys 1978 |
tnHumphreysAC | Neutral temperature in climate-controlled buildings according to Humphreys 1978 |
tnAuliciems | Neutral temperature according to Auliciems 1981 |
tAdapt15251 | Adaptive comfort temperature according to EN 15251 |
dTNZ | Distance to thermoneutral zone |
ATHBpmv | Adaptive thermal heat balance vote based on pmv |
ATHBset | Adaptive standard effective temperature |
ATHBpts | Adaptive thermal heat balance vote based on set |
apmv | Adaptive predicted mean vote according to Yao et al. |
ptsa | Adaptive predicted thermal sensation vote according to Gao et al. |
epmv | PMV adjusted with expectancy factor based on Fanger and toftum |
ptse | Predicted thermal sensation vote based on set and adjusted with expectancy factor according to Gao et al. |
set | standard effective temperature based on two node model by Gagge et al. |
et | Effective temperature based on two node model by Gagge et al. |
tsens | Predicted thermal sensation |
disc | Predicted discomfort |
ps | Predicted percentage satisfied with the level of air movement |
pd | Predicted percentage dissatisfied due to draft |
pts | Predicted thermal sensation vote based on set |
HBxst | Human body exergy consumption rate using steady state method |
PHS | Predicted heat strain |
The performance criteria included in this package are presented below. Again you can get further information on the corresponding help pages:
Index | Description |
meanBias | Mean bias between predicted and observed thermal sensation vote |
TPR | True positive rate |
avgAcc | Average accuracy of predicted thermal sensation vote |
Marcel Schweiker in cooperation with Sophia Mueller and many others.
Contact: [email protected]
See references in function descriptions.
see also createCond
, calcComfInd
calc2Node
calculates Comfort Indices based on the 2-Node-Model by Gagge et al.
calc2Node(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, sa = NULL, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5, varOut = "else", bodyPosition = 'sitting')
calc2Node(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, sa = NULL, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5, varOut = "else", bodyPosition = 'sitting')
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
sa |
(optional)surface Area according to mosteller formula [m^2] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
varOut |
a string value either "else" for normal output of SET or "skinWet" to report value of skin wettedness |
bodyPosition |
a string representing body position, has to be 'sitting' or 'standing'. Default value is 'sitting' |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
returns a data.frame with the following items:
et -
Effective temperaturetsens -
Predicted thermal sensationdisc -
Predicted discomfortps -
Predicted percentage satisfied with the level of air movementpd -
Predicted percentage dissatisfied due to draftpts -
Predicted thermal sensation vote based on setpmvg -
Gagge's version of Fanger's PMVpmvstar -
Same as Fanger's PMV except that dry is calculated
using SET* rather than the operative temperatureThe other functions return a single index, e.g. code(calcSET) returns the standard effective temperature.
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details.
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Calculation of a single set of values. calc2Node(22, 25, .50, 50)
## Calculation of a single set of values. calc2Node(22, 25, .50, 50)
Function to calculate ankle draft using the predicted percentage of dissatisfied.
calcAD(ta, tr, vel, rh, clo, met, vAnkle)
calcAD(ta, tr, vel, rh, clo, met, vAnkle)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
vAnkle |
air speed at the 0.1 m (4 in.) above the floor [m/s] |
Calculates the percentage of thermally dissatisfied people with the ankle draft (0.1 m) above floor level.This equation is only applicable for velocity < 0.2 m/s (40 fps)
Predicted Percentage of Dissatisfied occupants with ankle draft in [%]
Acceptability in [boolean]
Code implemented in to R by Shoaib Sarwar. Further contribution by Marcel Schweiker.
Original code in Python by Tartarini & Schiavon (2020) <doi:10.1016/j.softx.2020.100578>
calcAD(25,25,0.2,50,0.5,1.2,0.3) # returns Ankle_draft_ppd:18.6, Acceptability:TRUE
calcAD(25,25,0.2,50,0.5,1.2,0.3) # returns Ankle_draft_ppd:18.6, Acceptability:TRUE
Function to calculate adaptive Predicted Mean Vote (aPMV) adjusted through the adaptive coefficient.
calcaPMV(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, apCoeff)
calcaPMV(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, apCoeff)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
apCoeff |
adaptive coefficient lambda |
apCoeff
can be derived using calcapCoeff
.
calcaPMV
returns the predicted mean vote adjusted through the adaptive coefficients.
In case one of apCoeff
is not given, a standard value will be taken from a list (see createCond
for details.
Code implemented in to R by Marcel Schweiker. Further contribution by Sophia Mueller and Shoaib Sarwar.
aPMV is based on Yao, Li and Liu (2009) <doi:10.1016/j.buildenv.2009.02.014>
## Note. Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values tr <- ta # vector with radiant temperature values vel <- rep(.1,5) # vector with air velocities rh <- rep(50,5) # vector with relative humidity values clo <- rep(1.0,5) # vector with clo values met <- rep(1.1,5) # vector with metabolic rates asv <- rnorm(5) # vector with actual sensation votes lsCond <- as.list(data.frame(ta,tr,vel,rh,clo,met,asv)) ## Calculate coefficient apCoeff for data set apCoeff <- calcapCoeff(lsCond) ## calculate apmv apmv <- NULL for (i in 1:length(ta)){ apmv[i] <- calcaPMV(ta[i], tr[i], vel[i], rh[i], clo[i], met[i], apCoeff = apCoeff)$apmv} apmv
## Note. Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values tr <- ta # vector with radiant temperature values vel <- rep(.1,5) # vector with air velocities rh <- rep(50,5) # vector with relative humidity values clo <- rep(1.0,5) # vector with clo values met <- rep(1.1,5) # vector with metabolic rates asv <- rnorm(5) # vector with actual sensation votes lsCond <- as.list(data.frame(ta,tr,vel,rh,clo,met,asv)) ## Calculate coefficient apCoeff for data set apCoeff <- calcapCoeff(lsCond) ## calculate apmv apmv <- NULL for (i in 1:length(ta)){ apmv[i] <- calcaPMV(ta[i], tr[i], vel[i], rh[i], clo[i], met[i], apCoeff = apCoeff)$apmv} apmv
calcATHBpmv
calculates the PMV based on adaptive thermal heat balance framework
based on the newest version (2022)
calcATHBpmv(trm, ta, tr, vel, rh, met, coolingStrategyBuilding = 'naturallyventilated', buildingTypeSimple = 'office', seasonSimple = 'spring')
calcATHBpmv(trm, ta, tr, vel, rh, met, coolingStrategyBuilding = 'naturallyventilated', buildingTypeSimple = 'office', seasonSimple = 'spring')
trm |
- Running mean outdoor temperature in [degree C] |
ta |
- a numeric value presenting air temperature in [degree C] |
tr |
- a numeric value presenting mean radiant temperature in [degree C] |
vel |
- a numeric value presenting air velocity in [m/s] |
rh |
- a numeric value presenting relative humidity [%] |
met |
- a numeric value presenting metabolic rate in [met] |
coolingStrategyBuilding |
- the process in which the building was ventilated. Value can be among Mixed Mode','Naturally Ventilated' as a String |
buildingTypeSimple |
- simple building type. Value can be among Multifamily housing, Office as a string |
seasonSimple |
- season. Value can be among 'Spring','Summer', 'Winter' as a String |
aliases athb ATHB calcATHBPmvModel1, calcATHBPmvModel2, calcATHBPmvModel3
calcATHBpmv
an array of PMV values of different models adapted
through the ATHB appoach
Code implemented in to R by Shaomi Rahman. Further contribution by Marcel Schweiker.
Schweiker & Wagner (2015) <doi:10.1016/j.buildenv.2015.08.018> Schweiker (2022) <doi:10.1111/ina.13018>
see also calcComfInd
, link{calcATHBpts}
, link{calcATHBset}
,
link{calcATHBpmv2015}
, link{calcATHBPmvModel1}
,
link{calcATHBPmvModel2}
, link{calcATHBPmvModel3}
calcATHBpmv(20, 25, 25, .1, 50, 1.1, 'naturallyventilated','office', 'spring')
calcATHBpmv(20, 25, 25, .1, 50, 1.1, 'naturallyventilated','office', 'spring')
calcATHBpmv2015
calculates the PMV based on adaptive thermal heat balance framework
based on the original method published 2015
calcATHBpmv2015(trm, psych, ta, tr, vel, rh, met, wme = 0)
calcATHBpmv2015(trm, psych, ta, tr, vel, rh, met, wme = 0)
trm |
- Running mean outdoor temperature in [degree C] |
psych |
- factor related to fixed effect on perceived control |
ta |
- a numeric value presenting air temperature in [degree C] |
tr |
- a numeric value presenting mean radiant temperature in [degree C] |
vel |
- a numeric value presenting air velocity in [m/s] |
rh |
- a numeric value presenting relative humidity [%] |
met |
- a numeric value presenting metabolic rate in [met] |
wme |
- a numeric value presenting external work in [met] |
aliases athb2015 ATHB2015 athbOld ATHBOLD
All variables must have the same length 1. For the calculation of several values use function calcComfInd
.
calcATHBpmv2015
PMV value adapted through the ATHB appoach
Marcel Schweiker
Schweiker & Wagner (2015) <doi:10.1016/j.buildenv.2015.08.018> Schweiker & Wagner (2016) Exploring potentials and limitations of the adaptive thermal heat balance framework Proceedings of 9th Windsor Conference: making comfort relevant Cumberland Lodge, Windsor, UK, 2016
see also calcComfInd
, link{calcATHBpts}
, link{calcATHBset}
calcATHBpmv2015(20, 0, 25, 25, .1, 50, 1.1)
calcATHBpmv2015(20, 0, 25, 25, .1, 50, 1.1)
calcATHB
calculates predicted thermal sensation based on the adaptive thermal heat balance approach
using Gagge's 2 Node Model
calcATHBpts(trm, psych, ta, tr, vel, rh, met, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 69.9)
calcATHBpts(trm, psych, ta, tr, vel, rh, met, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 69.9)
trm |
- Running mean outdoor temperature in [degree C] |
psych |
- factor related to fixed effect on perceived control |
ta |
- a numeric value presenting air temperature in [degree C] |
tr |
- a numeric value presenting mean radiant temperature in [degree C] |
vel |
- a numeric value presenting air velocity in [m/s] |
rh |
- a numeric value presenting relative humidity [%] |
met |
- a numeric value presenting metabolic rate in [met] |
wme |
- a numeric value presenting external work in [met] |
pb |
- a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
- a numeric value presenting exposure time in [minutes] |
ht |
- a numeric value presenting body height in [cm] |
wt |
- a numeric value presenting body weight in [kg] |
All variables must have the same length 1. For the calculation of several values use function calcComfInd
.
calcATHBpts
returns the predicted thermal sensation adapted through the ATHB approach
Marcel Schweiker
Schweiker & Wagner (2015) <doi:10.1016/j.buildenv.2015.08.018> Schweiker & Wagner (2016) Exploring potentials and limitations of the adaptive thermal heat balance framework Proceedings of 9th Windsor Conference: making comfort relevant Cumberland Lodge, Windsor, UK, 2016
see also calcComfInd
, link{calcATHBpmv}
, link{calcATHBset}
calcATHBpts(20, 0, 25, 25, .1, 50, 1.1, 0, 760, 60, 171, 70)
calcATHBpts(20, 0, 25, 25, .1, 50, 1.1, 0, 760, 60, 171, 70)
Calculation of SET based on Adaptive Thermal Heat Balance framework using Gagge's 2-node model
calcATHBset(trm, psych, ta, tr, vel, rh, met, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 69.9)
calcATHBset(trm, psych, ta, tr, vel, rh, met, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 69.9)
trm |
- Running mean outdoor temperature in [degree C] |
psych |
- factor related to fixed effect on perceived control |
ta |
- a numeric value presenting air temperature in [degree C] |
tr |
- a numeric value presenting mean radiant temperature in [degree C] |
vel |
- a numeric value presenting air velocity in [m/s] |
rh |
- a numeric value presenting relative humidity [%] |
met |
- a numeric value presenting metabolic rate in [met] |
wme |
- a numeric value presenting external work in [met] |
pb |
- a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
- a numeric value presenting exposure time in [minutes] |
ht |
- a numeric value presenting body height in [cm] |
wt |
- a numeric value presenting body weight in [kg] |
All variables must have the same length 1. For the calculation of several values use function calcComfInd
.
ATHBset set value adapted through the ATHB appoach
Marcel Schweiker
Schweiker & Wagner (2015) <doi:10.1016/j.buildenv.2015.08.018> Schweiker & Wagner (2016) Exploring potentials and limitations of the adaptive thermal heat balance framework Proceedings of 9th Windsor Conference: making comfort relevant Cumberland Lodge, Windsor, UK, 2016
see also calcComfInd
, link{calcATHBpmv}
, link{calcATHBpts}
calcATHBset(20, 0, 25, 25, .1, 50, 1.1, 0, 760, 60, 171, 70)
calcATHBset(20, 0, 25, 25, .1, 50, 1.1, 0, 760, 60, 171, 70)
calcATHBstandard
calculates the PMV based on adaptive thermal heat balance framework
based on the newest version (2022)
calcATHBstandard(trm, ta, tr, vel, rh, met)
calcATHBstandard(trm, ta, tr, vel, rh, met)
trm |
- Running mean outdoor temperature in [degree C] |
ta |
- a numeric value presenting air temperature in [degree C] |
tr |
- a numeric value presenting mean radiant temperature in [degree C] |
vel |
- a numeric value presenting air velocity in [m/s] |
rh |
- a numeric value presenting relative humidity [%] |
met |
- a numeric value presenting metabolic rate in [met] |
aliases athb ATHB
calcATHBstandard
PMV value adapted through the ATHB approach with standard model
Code implemented in to R by Shaomi Rahman. Further contribution by Marcel Schweiker.
Schweiker & Wagner (2015) <doi:10.1016/j.buildenv.2015.08.018> Schweiker (2022) <doi:10.1111/ina.13018>
see also calcComfInd
, link{calcATHBpts}
, link{calcATHBset}
,
link{calcATHBpmv2015}
calcATHBstandard(20, 25, 25, .1, 50, 1.1)
calcATHBstandard(20, 25, 25, .1, 50, 1.1)
calcATHBx
calculates the PMV based on adaptive thermal heat balance framework
based on the newest version (2022)
calcATHBx(trm, ta, tr, vel, rh, met, buildingTypeSimple, coolingStrategyBuilding, seasonSimple)
calcATHBx(trm, ta, tr, vel, rh, met, buildingTypeSimple, coolingStrategyBuilding, seasonSimple)
trm |
- Running mean outdoor temperature in [degree C] |
ta |
- a numeric value presenting air temperature in [degree C] |
tr |
- a numeric value presenting mean radiant temperature in [degree C] |
vel |
- a numeric value presenting air velocity in [m/s] |
rh |
- a numeric value presenting relative humidity [%] |
met |
- a numeric value presenting metabolic rate in [met] |
buildingTypeSimple |
- simple building type. Value can be among Multifamily housing, Office as a string |
coolingStrategyBuilding |
- the process in which the building was ventilated. Value can be among Mixed Mode','Naturally Ventilated' as a String |
seasonSimple |
- season. Value can be among 'Spring','Summer', 'Winter' as a String |
aliases athb ATHB
calcATHBx
PMV value adapted through the ATHB approach with extended model
Code implemented in to R by Shaomi Rahman. Further contribution by Marcel Schweiker.
Schweiker & Wagner (2015) <doi:10.1016/j.buildenv.2015.08.018> Schweiker (2022) <doi:10.1111/ina.13018>
see also calcComfInd
, link{calcATHBpts}
, link{calcATHBset}
,
link{calcATHBpmv2015}
calcATHBx(20, 25, 25, .1, 50, 1.1, 'Office', 'Mixed Mode', 'winter')
calcATHBx(20, 25, 25, .1, 50, 1.1, 'Office', 'Mixed Mode', 'winter')
calcAvgAcc
calculates the average accuracy between predicted thermal sensation votes and actual obtained sensation votes
calcAvgAcc(ref, pred) calcavgacc(ref, pred) AvgAcc(ref, pred) avgacc(ref, pred)
calcAvgAcc(ref, pred) calcavgacc(ref, pred) AvgAcc(ref, pred) avgacc(ref, pred)
ref |
a numeric item or vector containing categorical actual thermal sensation votes coded from -3 'cold' to +3 'hot' |
pred |
a numeric item or vector containing categorical predicted thermal sensation votes coded from -3 'cold' to +3 'hot' |
calcAvgAcc
returns a single value presenting the average accuracy between actual and predicted thermal sensation votes.
The outcome heavily depends on the distribution of actual votes, i.e. in case most of the actual votes are in the same category, e.g. 'neutral', the average accuray is very high due to the fact that for the other categories the number of TRUE negative predicted votes is high as well.
Marcel Schweiker. Further contribution by Shoaib Sarwar.
Sokolova and Lapalme (2009) <doi:10.1016/j.ipm.2009.03.002>
## Define data ref <- rnorm(5) # actual thermal sensation votes ref <- cutTSV(ref) pred <- rnorm(5) # predicted thermal sensation votes pred <- cutTSV(pred) calcAvgAcc(ref, pred)
## Define data ref <- rnorm(5) # actual thermal sensation votes ref <- cutTSV(ref) pred <- rnorm(5) # predicted thermal sensation votes pred <- cutTSV(pred) calcAvgAcc(ref, pred)
calcMeanBias
calculates the mean bias and its standard deviation and standard error between predicted thermal sensation votes and actual obtained sensation votes
calcBias(ref, pred) calcbias(ref, pred) calcMeanBias(ref, pred) MeanBias(ref, pred) meanBias(ref, pred) meanbias(ref, pred) bias(ref, pred) calcSdBias(ref, pred) calcSeBias(ref, pred)
calcBias(ref, pred) calcbias(ref, pred) calcMeanBias(ref, pred) MeanBias(ref, pred) meanBias(ref, pred) meanbias(ref, pred) bias(ref, pred) calcSdBias(ref, pred) calcSeBias(ref, pred)
ref |
a numeric item or vector containing categorical actual thermal sensation votes coded from -3 'cold' to +3 'hot' |
pred |
a numeric item or vector containing categorical predicted thermal sensation votes coded from -3 'cold' to +3 'hot' |
calcMeanBias
returns a dataframe with the following items:
meanBias |
single value presenting the mean bias between actual and predicted thermal sensation votes |
sdBias |
single value presenting the standard deviation of the mean bias |
seBias |
single value presenting the standard error of the mean bias |
Marcel Schweiker. Further contribution by Shoaib Sarwar.
Humphreys & Nicol (2002) <doi:10.1016/S0378-7788(02)00018-X>
Schweiker & Wagner (2016) Exploring potentials and limitations of the adaptive thermal heat balance framework Proceedings of 9th Windsor Conference: Making Comfort Relevant Cumberland Lodge, Windsor, UK, 2016.
## Define data ref <- rnorm(5) # actual thermal sensation votes pred <- rnorm(5) # predicted thermal sensation votes calcBias(ref, pred)
## Define data ref <- rnorm(5) # actual thermal sensation votes pred <- rnorm(5) # predicted thermal sensation votes calcBias(ref, pred)
Function to calculate cooling effect (CE) of elevated air velocities using the standard effective temperature (SET).
calcCE(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0)
calcCE(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
The CE of the elevated air velocity is the difference in SET between conditions with given air velocities and still air. The cooling effect should be calculated only for air velocities higher than 0.2 m/s.
ce - Cooling Effect in [degree C]
Code implemented in to R by Shoaib Sarwar. Further contribution by Marcel Schweiker.
Original code in Python by Tartarini & Schiavon (2020) <doi:10.1016/j.softx.2020.100578>
calcCE(25,25,0.3,50,0.5,1) # returns Cooling Effect: 1.3
calcCE(25,25,0.3,50,0.5,1) # returns Cooling Effect: 1.3
calcComfInd
calculates one or more thermal comfort indices using a list of climatic conditions.
calcComfInd(lsCond, request = "all") comfind(lsCond, request = "all")
calcComfInd(lsCond, request = "all") comfind(lsCond, request = "all")
lsCond |
a list of climatic conditions and additional variables necessary for one or more of the indices (see details below). |
request |
a vector with one or more comfort indices (see details below). |
The list lsCond
could contain one or more of the following variables:
ta | Air temperature in (degree C) |
tr | mean radiant temperature in (degree C) |
vel | Air velocity in (m/s) |
rh | Relative Humidity (%) |
clo | clothing (clo) |
met | metabolic rate (met) |
wme | External work (met) |
tu | turbulence intensity (%) |
tmmo | mean monthly outdoor temperature in (degree C) |
ltime | Exposure time (min) |
pb | Barometric pressure (torr) |
wt | weight (kg) |
ht | height (cm) |
trm | Running mean outdoor temperature in (degree C) |
age | age (years) |
gender | gender (female = 1) |
tsk | mean skin temperature in (degree C) |
psych | factor related to fixed effect on perceived control |
apCoeff | adaptive coefficient for pmv |
epCoeff | expectancy factor for pmv |
asCoeff | adaptive coefficient for set |
esCoeff | expectancy factor for set |
asv | actual sensation vote (0 = neutral) |
tao | outdoor air temperature |
rho | outdoor relative humidity |
frad | 0.7(for seating), 0.73(for standing) [-] |
eps | emissivity [-] |
ic | 1.084 (average permeability), 0.4 (low permeability) |
tcr | initial values for core temp |
tsk | initial values for skin temperature |
basMet | basal metabolic rate |
warmUp | length of warm up period, i.e. number of times, loop is running for HBx calculation |
cdil | value for cdil in 2-node model of Gagge (applied in calculation of HbEx) |
sigmatr | value for cdil in 2-node model of Gagge (applied in calculation of HbEx) In case a variable is not given, but necessary for the respective index, a standard value from a list of values is used. |
The vector request
can contain the following elements:
Element | Description | Required variables |
"all" | Calculation of all indices described below | all variables |
"pmv" | Predicted mean vote | ta, tr, vel, rh, clo, met, wme |
"ppd" | Predicted precentage dissatisfied | ta, tr, vel, rh, clo, met, wme |
"tnhumphreys" | Neutral temperature according to Humphreys | tmmo |
"tAdapt15251" | Adaptive comfort temperature according to EN 15251 | trm |
"dTNZ" | Distance to thermoneutral zone | ht, wt, age, gender, clo, vel, tsk, ta |
"ATHBpmv" | Adaptive thermal heat balance vote based on pmv | ta, tr, vel, rh, met, wme, psych, trm |
"ATHBset" | Adaptive standard effective temperature | ta, tr, vel, rh, trm, met, wme, pb, ltime, ht, wt, psych |
"ATHBpts" | Adaptive thermal heat balance vote based on set | ta, tr, vel, rh, trm, met, wme, pb, ltime, ht, wt, psych |
"apmv" | Adaptive predicted mean vote according to Yao et al. | ta, tr, vel, rh, clo, met, wme, apCoeff |
"ptsa" | Adaptive predicted thermal sensation vote according to Gao et al. | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt, asCoeff |
"epmv" | pmv adjusted with expectancy factor based on Fanger and toftum | ta, tr, vel, rh, clo, met, wme, epCoeff, asv |
"ptse" | Predicted thermal sensation vote based on set and adjusted with expectancy factor according to Gao et al. | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt, esCoeff, asv |
"set" | standard effective temperature based on two node model by Gagge et al. | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt |
"et" | Effective temperature based on two node model by Gagge et al. | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt |
"tsens" | Predicted thermal sensation | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt |
"disc" | Predicted discomfort | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt |
"ps" | Predicted percentage satisfied with the level of air movement | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt |
"pd" | Predicted percentage dissatisfied due to draft | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt, tu |
"pts" | Predicted thermal sensation vote based on set | ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt |
"HBxst" | Human body exergy consumPtion rate using steady state method | ta, tr, vel, rh, clo, met, tao, rho, frad, eps, ic, ht, wt, tcr, tsk, basMet, warmUp, cdil, sigmatr |
calcComfInd
returns one or more rows with the comfort indices listed as request
. For details see details above.
In case one of the variables is not given, a standard value will be taken from a list (see createCond
for details.
Sophia Mueller and Marcel Schweiker. Further contribution by Shaomi Rahman.
For references see individual functions.
see also calcPMVPPD
, calc2Node
, calcHbExSteady
, calcATHBpmv2015
, calcdTNZ
, calcPMVadj
, calcPtsa
, calctAdapt
## Creating list with all values lsCond <- createCond() ## Requesting all comfort indices calcComfInd(lsCond, request="all") ## Requesting a single index calcComfInd(lsCond, request="pmv") ## Requesting multiple indices calcComfInd(lsCond, request=c("pmv", "ptse"))
## Creating list with all values lsCond <- createCond() ## Requesting all comfort indices calcComfInd(lsCond, request="all") ## Requesting a single index calcComfInd(lsCond, request="pmv") ## Requesting multiple indices calcComfInd(lsCond, request=c("pmv", "ptse"))
calcDisc
calculates Predicted Discomfort based on the 2-Node-Model by
Gagge et al.
calcDisc(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcDisc(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcDisc
returns the Predicted Discomfort
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) Disc <- sapply(seq(maxLength), function(x) { calcDisc(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) Disc <- sapply(seq(maxLength), function(x) { calcDisc(ta[x], tr[x], vel[x], rh[x]) } )
calcdTNZ calculates the distance from the thermoneutral zone, either skin temperature or room air related.
calcdTNZ(ht, wt, age, gender, clo, vel, tskObs, taObs, met, rh, deltaT =.1, fBasMet = "rosa", fSA = "duBois", percCov = 0, TcMin = 36, TcMax = 38, plotZone = FALSE)
calcdTNZ(ht, wt, age, gender, clo, vel, tskObs, taObs, met, rh, deltaT =.1, fBasMet = "rosa", fSA = "duBois", percCov = 0, TcMin = 36, TcMax = 38, plotZone = FALSE)
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
age |
a numeric value presenting the age in [years] |
gender |
a numeric value presenting sex (female = 1, male = 2) |
clo |
a numeric value presenting clothing insulation level in [clo] |
vel |
a numeric value presenting air velocity in [m/s] |
tskObs |
a numeric value presenting actual mean skin temperature in [degree C] |
taObs |
a numeric value presenting air temperaturein [degree C] |
met |
a numeric value presenting metabolic rate (activity related) in [met] |
rh |
a numeric value presenting realtive humidity in [%] |
deltaT |
a numeric value presenting the resolution of the matrix to be used |
fBasMet |
a string presenting the method of calculating basal metbolic rate. Needs to be one of "rosa", "harris", "miflin", or "fixed". Fixed will result in the value of 58.2 W/m2. |
fSA |
a string presenting the method of calculating the surface area. Needs to be one of "duBois" or "mosteller". |
percCov |
a numeric value between 0 and 1 presenting the percentage of the body covered by clothes in [%] |
TcMin |
a numeric value presenting the minimum allowed core temperature in [degree C]. |
TcMax |
a numeric value presenting the maximum allowed core temperature in [degree C]. |
plotZone |
a boolean variable TRUE or FALSE stating, wether TNZ should be plotted or not. |
The percentage of the body covered by clothes can be estimated e.g. based on ISO 9920 Appendix H (Figure H.1). A typical winter case leads to a value of around .86, in the summer case this goes down to values around .68.
calcdTNZ
returns a dataframe with the columns dTNZ, dTNZTs, dTNZTa. Thereby dTNZ
The absolute distance to the centroid of the thermoneutral zone dTNZTs
Relative value of distance assuming skin temperature to be dominant for sensationdTNZTa
Relative value of distance assuming ambient temperature to be dominant for sensation
This function was used in earlier versions of TNZ calculation (see references
above). The newest version is calcTNZPDF
.In case one of the variables
is not given, a standard value will be taken from a list (see
createCond
for details.
Marcel Schweiker and Boris Kingma
Kingma, Schweiker, Wagner & van Marken Lichtenbelt Exploring the potential of a biophysical model to understand thermal sensation Proceedings of 9th Windsor Conference: Making Comfort Relevant Cumberland Lodge, Windsor, UK, 2016. Kingma & van Marken Lichtenbelt (2015) <doi:10.1038/nclimate2741> Kingma, Frijns, Schellen & van Marken Lichtenbelt (2014) <doi:10.4161/temp.29702>
see also calcTNZPDF
and calcComfInd
## Calculate all values calcdTNZ(171, 71, 45, 1, .6, .12, 37.8, 25.3, 1.1, 50)
## Calculate all values calcdTNZ(171, 71, 45, 1, .6, .12, 37.8, 25.3, 1.1, 50)
The functions calcCOEFF
calculate the coefficients necessary for apmv, epmv, apts, and epts based on a given dataset with actual comfort votes. calcapCoeff
calculates lambda the adaptive coefficients for apmv, calcepCoeff
calculates e the expectancy factor for epmv, calcasCoeff
calculates lambda the adaptive coefficients for apts, calcesCoeff
calculates e the expectancy factor for epts.
calcapCoeff(lsCond) calcepCoeff(lsCond) calcasCoeff(lsCond) calcesCoeff(lsCond)
calcapCoeff(lsCond) calcepCoeff(lsCond) calcasCoeff(lsCond) calcesCoeff(lsCond)
lsCond |
a list with vectors for the necessary variables (see details) . |
calcCOEFF
returns the adaptive coefficient lambda or expectancy factor depending on its call.
For calcapCoeff
and calcepCoeff
, lsCond should contain the following variables: ta, tr, vel, rh, clo, met, wme, asv (see createCond
for details). In case one or more of these variables are not included in the list, standard values will be used.
For calcasCoeff
and calcesCoeff
, lsCond should contain the following variables: ta, tr, vel, rh, clo, met, wme, pb, ltime, ht, wt, asv (see createCond
for details). In case one or more of these variables are not included in the list, standard values will be used.
Marcel Schweiker.
Coefficients are calculated based on Gao, J.; Wang, Y. and Wargocki, P. Comparative analysis of modified PMV models and set models to predict human thermal sensation in naturally ventilated buildings Building and Environment, 2015, 92, 200-208.
The aPMV concept was introduced by Yao, Li & Liu (2009) <doi:10.1016/j.buildenv.2009.02.014>
The epmv concept was introudced by Fanger & Toftum (2002) <doi:10.1016/S0378-7788(02)00003-8>
see also calcaPMV
, calcePMV
, calcPtsa
, calcPtse
## Note. Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values tr <- ta # vector with radiant temperature values vel <- rep(.1,5) # vector with air velocities rh <- rep(50,5) # vector with relative humidity values clo <- rep(1.0,5) # vector with clo values met <- rep(1.1,5) # vector with metabolic rates asv <- rnorm(5) # vector with actual sensation votes lsCond <- as.list(data.frame(ta,tr,vel,rh,clo,met,asv)) ## Calculate coefficients calcapCoeff(lsCond) calcepCoeff(lsCond) calcasCoeff(lsCond) calcesCoeff(lsCond) ## use coefficients to calculate apmv lsCond$apCoeff[1] <- calcapCoeff(lsCond)$apCoeff calcComfInd(lsCond, request="apmv")
## Note. Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values tr <- ta # vector with radiant temperature values vel <- rep(.1,5) # vector with air velocities rh <- rep(50,5) # vector with relative humidity values clo <- rep(1.0,5) # vector with clo values met <- rep(1.1,5) # vector with metabolic rates asv <- rnorm(5) # vector with actual sensation votes lsCond <- as.list(data.frame(ta,tr,vel,rh,clo,met,asv)) ## Calculate coefficients calcapCoeff(lsCond) calcepCoeff(lsCond) calcasCoeff(lsCond) calcesCoeff(lsCond) ## use coefficients to calculate apmv lsCond$apCoeff[1] <- calcapCoeff(lsCond)$apCoeff calcComfInd(lsCond, request="apmv")
Function to calculate Predicted Mean Votes (PMV) adjusted by the expectancy factor.
calcePMV(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, epCoeff) ePMV(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, epCoeff) epmv(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, epCoeff)
calcePMV(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, epCoeff) ePMV(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, epCoeff) epmv(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, epCoeff)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
epCoeff |
expectancy factor e |
epCoeff
can be derived using calcepCoeff
.
calcePMV
requires the actual sensation vote related to the physical data as it is required to alter the metabolic rate.
calcePMV
returns the predicted mean vote adjusted by the expectancy factor.
In case one of epCoeff
is not given, a standard value will be taken from a list (see createCond
for details.
Code implemented in to R by Marcel Schweiker. Further contribution by Sophia Mueller and Shoaib Sarwar.
epmv is based on Fanger & Toftum (2002) <doi:10.1016/S0378-7788(02)00003-8>
## Note. Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values tr <- ta # vector with radiant temperature values vel <- rep(.1,5) # vector with air velocities rh <- rep(50,5) # vector with relative humidity values clo <- rep(1.0,5) # vector with clo values met <- rep(1.1,5) # vector with metabolic rates asv <- rnorm(5) # vector with actual sensation votes lsCond <- as.list(data.frame(ta,tr,vel,rh,clo,met,asv)) ## Calculate coefficient epCoeff for data set epCoeff <- calcepCoeff(lsCond) ## calculate epmv epmv <- NULL for (i in 1:length(ta)){ epmv[i] <- calcePMV(ta[i], tr[i], vel[i], rh[i], clo[i], met[i], epCoeff = epCoeff)$epmv} epmv
## Note. Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values tr <- ta # vector with radiant temperature values vel <- rep(.1,5) # vector with air velocities rh <- rep(50,5) # vector with relative humidity values clo <- rep(1.0,5) # vector with clo values met <- rep(1.1,5) # vector with metabolic rates asv <- rnorm(5) # vector with actual sensation votes lsCond <- as.list(data.frame(ta,tr,vel,rh,clo,met,asv)) ## Calculate coefficient epCoeff for data set epCoeff <- calcepCoeff(lsCond) ## calculate epmv epmv <- NULL for (i in 1:length(ta)){ epmv[i] <- calcePMV(ta[i], tr[i], vel[i], rh[i], clo[i], met[i], epCoeff = epCoeff)$epmv} epmv
calcET
calculates Effective temperature based on the 2-Node-Model
by Gagge et al.
calcET(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171,wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcET(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171,wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcET
returns the Effective temperature
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) ET <- sapply(seq(maxLength), function(x) { calcET(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) ET <- sapply(seq(maxLength), function(x) { calcET(ta[x], tr[x], vel[x], rh[x]) } )
calcHbExSteady
calculates the human body exergy
consumption rate in W/m2 using steady state method based on a set of
environmental variables.
calcHbExSteady(ta, tr, rh, vel, clo, met, tao, rho, frad = 0.7, eps = 0.95, ic = 1.085, ht = 171, wt = 70, tcr = 37, tsk = 36, basMet = 58.2, warmUp = 60, cdil = 100, sigmatr = 0.25)
calcHbExSteady(ta, tr, rh, vel, clo, met, tao, rho, frad = 0.7, eps = 0.95, ic = 1.085, ht = 171, wt = 70, tcr = 37, tsk = 36, basMet = 58.2, warmUp = 60, cdil = 100, sigmatr = 0.25)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
rh |
a numeric value presenting relative humidity [%] |
vel |
a numeric value presenting air velocity in [m/s] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
tao |
a numeric value presenting outdoor air temperature in [degree C] |
rho |
a numeric value presenting outdoor relative humidity [%] |
frad |
a numeric value presenting the fraction of body exposed to radiation 0.7(for seating), 0.73(for standing) [-] |
eps |
a numeric value presenting emissivity [-] |
ic |
a numeric value presenting permeability of clothing: 1.084 (average permeability), 0.4 (low permeability) |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tcr |
a numeric value presenting initial value for core temperature in [degree C] |
tsk |
a numeric value presenting initial value for skin temperature in [degree C] |
basMet |
a numeric value presenting basal metabolic rate in [met] |
warmUp |
a numeric value presenting length of warm up period, i.e. number of times, loop is running for HBx calculation |
cdil |
a numeric value presenting value for cdil in 2-node model of Gagge |
sigmatr |
a numeric value presenting value for cdil in 2-node model of Gagge |
Returns a data.frame with the following columns
Exergy inputxInmets
Exergy input through metabolism [W/m2]xInmetwcs
Label warm/ cold for exergy input through metabolism [W/m2]xInAIRwcs
Exergy input through inhaled humid air [W/m2]xInAIRwcwcs
Label warm/ cold for exergy input through inhaled humid air [W/m2]xInAIRwds
Exergy input through inhaled dry air [W/m2]xInAIRwdwds
Label wet/ dry for exergy input through inhaled dry air [W/m2]xInLUNGwcs
Exergy input through water lung [W/m2]xInLUNGwcwcs
Label warm/ cold for exergy input through water lung [W/m2]xInLUNGwds
Exergy input through water lung [W/m2]xInLUNGwdwds
Label wet/ dry for exergy input through water lung [W/m2]xInsheLLwcs
Exergy input through water from sweat [W/m2]xInsheLLwcwcs
Label warm/ cold for exergy input through water from sweat [W/m2]xInsheLLwds
Exergy input through water from sweat [W/m2]xInsheLLwdwds
Label wet/ dry for exergy input through water from sweat [W/m2]xInraDs
Exergy input through radiation [W/m2]xInraDwcs
Label warm/ cold for exergy input through radiation [W/m2]xIntotaLs
total exergy input [W/m2]
Exergy outputxoutstorecores
Exergy stored in core [W/m2]xoutstoreshels
Exergy stored in shell [W/m2]xoutaIRwcs
Exergy output through exhaled humid air [W/m2]xoutaIRwcwcs
Label warm/ cold for exergy output through exhaled humid air [W/m2]xoutaIRwds
Exergy output through exhaled dry air [W/m2]xoutaIRwdwds
Label wet/ dry for exergy output through exhaled dry air [W/m2]xoutswEATwcs
Exergy output through water vapour from sweat [W/m2]xoutswEATwcwcs
Label warm/ cold for exergy output through water vapour from sweat [W/m2]xoutswEATwds
Exergy output through water vapour from sweat [W/m2]xoutswEATwdwds
Label wet/ dry for exergy output through water vapour from sweat [W/m2]xoutraDs
Exergy output through radiation [W/m2]xoutraDwcs
Label warm/ cold for exergy output through radiation [W/m2]xoutCONVs
Exergy output through convection [W/m2]xoutCONVwcs
Label warm/ cold for exergy output through convection [W/m2]xouttotaLs
total exergy output [W/m2]
Exergy balancexconss
total exergy consumption [W/m2]xConsumption
total exergy consumption [W/m2]
Additional valuestsks
Calculated skin temperature [degree C]tcrs
Calculated core temperature [degree C]ws
Calculated skin wettedness [degree C]
According to Gagge's paper (1973), the value of 'cdil' may vary between 75 and 225 and 'sigma-tr' between 0.25 and 0.75. There is a note in the appendix of his paper saying two things: 1) whatever the values taken for cdil and sigma-tr, there must be no significant change in resulting thermal equilibrium. But, the values taken for cdil and sigmaTr do affect time to equilibrium. According to the analysis of Schweiker et al. (2016), the values of 100 and .25 lead to the best fit of calculated and observed skin temperature.
This function is based on a VBA code developed by Masanori Shukuya. transformation of VBA-code and Excel procedures into R syntax by Marcel Schweiker.
Schweiker, Kolarik, Dovjak & Shukuya (2016) <doi:10.1016/j.enbuild.2016.01.002>
Shukuya (2015) Calculation of human body-core and skin-layer temperatures under unsteady-state conditions-for unsteady-state human-body exergy analysis-, internal report of exergy-research group, Tech. rep.
see also calcComfInd
, calcHbExUnsteady
## Calculation of human body exergy consumption rate calcHbExSteady(22, 24, 50, .1, .8, 1.2, 5, 80) ## Calculation of multiple values dfData <- data.frame(ta=c(20:25), tr=c(20:25)) dfResult <- calcHbExSteady(22, 24, 50, .1, .8, 1.2, 5, 80) for(i in 1:nrow(dfData)){ dfResult[i,] <- calcHbExSteady(dfData$ta[i], dfData$tr[i], 50, .1, .5, 1.1, 5, 80) }
## Calculation of human body exergy consumption rate calcHbExSteady(22, 24, 50, .1, .8, 1.2, 5, 80) ## Calculation of multiple values dfData <- data.frame(ta=c(20:25), tr=c(20:25)) dfResult <- calcHbExSteady(22, 24, 50, .1, .8, 1.2, 5, 80) for(i in 1:nrow(dfData)){ dfResult[i,] <- calcHbExSteady(dfData$ta[i], dfData$tr[i], 50, .1, .5, 1.1, 5, 80) }
calcHbExUnsteady
Function calculates the human body exergy consumPtion rate using unsteady state method based on a series of environmental variables.
calcHbExUnsteady(ta, tr, rh, vel, clo, met, tao, rho, frad = 0.7, eps = 0.95, ic = 1.085, ht = 171, wt = 70, tcr = 37, tsk = 36, basMet = 58.2, warmUp = 60, cdil = 100, sigmatr = 0.25, dateTime)
calcHbExUnsteady(ta, tr, rh, vel, clo, met, tao, rho, frad = 0.7, eps = 0.95, ic = 1.085, ht = 171, wt = 70, tcr = 37, tsk = 36, basMet = 58.2, warmUp = 60, cdil = 100, sigmatr = 0.25, dateTime)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
rh |
a numeric value presenting relative humidity [%] |
vel |
a numeric value presenting air velocity in [m/s] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
tao |
a numeric vector presenting outdoor air temperature in [degree C] |
rho |
numeric vector presenting outdoor relative humidity [%] |
frad |
a numeric vector presenting the fraction of body exposed to radiation 0.7(for seating), 0.73(for standing) [-] |
eps |
a numeric vector presenting emissivity [-] |
ic |
a numeric vector presenting permeability of clothing: 1.084 (average permeability), 0.4 (low permeability) |
ht |
a numeric vector presenting body height in [cm] |
wt |
a numeric vector presenting body weight in [kg] |
tcr |
a numeric vector presenting initial value for core temperature in [degree C] |
tsk |
a numeric vector presenting initial value for skin temperature in [degree C] |
basMet |
a numeric vector presenting basal metabolic rate in [met] |
warmUp |
a numeric vector presenting length of warm up period, i.e. number of times, loop is running for HBx calculation. |
cdil |
a numeric vector presenting value for cdil in 2-node model of Gagge |
sigmatr |
a numeric vector presenting value for cdil in 2-node model of Gagge. |
dateTime |
a POsIxct vector of the times of measurement. |
This function requires vectors of data including the corresponding time stamp. In case the time between two measurements is more than a minute, intermediate values are interpolated.
Returns a data.frame with the following columns. Exergy input
xInmetu |
Exergy input through metabolism |
xInmetwcu |
Label warm/ cold for exergy input through metabolism |
xInAIRwcu |
Exergy input through inhaled humid air |
xInAIRwcwcu |
Label warm/ cold for exergy input through inhaled humid air |
xInAIRwdu |
Exergy input through inhaled dry air |
xInAIRwdwdu |
Label wet/ dry for exergy input through inhaled dry air |
xInLUNGwcu |
Exergy input through water lung |
xInLUNGwcwcu |
Label warm/ cold for exergy input through water lung |
xInLUNGwdu |
Exergy input through water lung |
xInLUNGwdwdu |
Label wet/ dry for exergy input through water lung |
xInsheLLwcu |
Exergy input through water from sweat |
xInsheLLwcwcu |
Label warm/ cold for exergy input through water from sweat |
xInsheLLwdu |
Exergy input through water from sweat |
xInsheLLwdwdu |
Label wet/ dry for exergy input through water from sweat |
xInraDu |
Exergy input through radiation |
xInraDwcu |
Label warm/ cold for exergy input through radiation |
xIntotaLu |
total exergy input |
Exergy output
xoutstorecoreu |
Exergy stored in core |
xoutstoreshelu |
Exergy stored in shell |
xoutaIRwcu |
Exergy output through exhaled humid air |
xoutaIRwcwcu |
Label warm/ cold for exergy output through exhaled humid air |
xoutaIRwdu |
Exergy output through exhaled dry air |
xoutaIRwdwdu |
Label wet/ dry for exergy output through exhaled dry air |
xoutswEATwcu |
Exergy output through water vapour from sweat |
xoutswEATwcwcu |
Label warm/ cold for exergy output through water vapour from sweat |
xoutswEATwdu |
Exergy output through water vapour from sweat |
xoutswEATwdwdu |
Label wet/ dry for exergy output through water vapour from sweat |
xoutraDu |
Exergy output through radiation |
xoutraDwcu |
Label warm/ cold for exergy output through radiation |
xoutCONVu |
Exergy output through convection |
xoutCONVwcu |
Label warm/ cold for exergy output through convection |
xouttotaLu |
total exergy output |
Exergy balance
xconsu |
total exergy consumPtion |
Additional values
tsku |
Calculated skin temperature |
tcru |
Calculated core temperature |
wu |
Calculated skin wettedness |
According to Gagge's paper (1973), the value of 'cdil' may vary between 75 and 225 and 'sigma-tr' between 0.25 and 0.75. There is a note in the appendix of his paper saying two things: 1) whatever the values taken for cdil and sigma-tr, there must be no significant change in resulting thermal equilibrium. But, the values taken for cdil and sigmaTr do affect time to equilibrium. According to the analysis of schweiker et al. (2015), the values of 100 and .25 lead to the best fit of calculated and observed skin temperature.
This function is based on a VBA code developed by masanori Shukuya. transformation of VBA-code and Excel procedures into R syntax by Marcel Schweiker.
Schweiker, Kolarik, Dovjak & Shukuya (2016) <doi:10.1016/j.enbuild.2016.01.002>
Shukuya (2015) Calculation of human body-core and skin-layer temperatures under unsteady-state conditions-for unsteady-state human-body exergy analysis-, internal report of exergy-research group, Tech. rep.
see also calcComfInd
## Define environmental parameters ta <- seq(20,25,.1) tr <- ta rh <- rep(50, length(ta)) vel <- rep(.1, length(ta)) clo <- rep(.8, length(ta)) met <- rep(1.2, length(ta)) tao <- rep(5, length(ta)) rho <- rep(80, length(ta)) dateTime <- as.POSIXct(seq(0,by=60,length.out=length(ta)), origin="1970-01-01") ## Calculation of human body exergy consumPtion rate calcHbExUnsteady(ta, tr, rh, vel, clo, met, tao, rho, dateTime = dateTime)$xconsu
## Define environmental parameters ta <- seq(20,25,.1) tr <- ta rh <- rep(50, length(ta)) vel <- rep(.1, length(ta)) clo <- rep(.8, length(ta)) met <- rep(1.2, length(ta)) tao <- rep(5, length(ta)) rho <- rep(80, length(ta)) dateTime <- as.POSIXct(seq(0,by=60,length.out=length(ta)), origin="1970-01-01") ## Calculation of human body exergy consumPtion rate calcHbExUnsteady(ta, tr, rh, vel, clo, met, tao, rho, dateTime = dateTime)$xconsu
Calculate minimal and neutral values of REQUIRED CLOTHING INSULATION (IREQ) and DURATION LIMITED EXPOSURE (Dlim).
calcIREQ(M,W,ta,tr,p,w,v,rh,clo)
calcIREQ(M,W,ta,tr,p,w,v,rh,clo)
M |
a numeric value presenting metabolic energy production (58 to 400 W/m2) in [W/m2] |
W |
a numeric value presenting Rate of mechanical work, (normally 0) in [W/m2] |
ta |
a numeric value presenting ambiant air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
p |
a numeric value presenting air permeability (low < 5, medium 50, high > 100 l/m2s) in [l/m2s] |
w |
a numeric value presenting walking speed (or calculated work created air movements) in [m/s] |
v |
a numeric value presenting relative air velocity(0.4 to 18 m/s) in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
The function gives IREQ Insulation of clothing required to maintain thermal equilibrium of the body at specified levels of physiological stress.
calcIREQ
returns
IREQminimal |
Lower bound of insulation required in [clo] |
IREQneutral |
Upper bound of insulation required in [clo] |
ICLminimal |
Lower bound of REQUIRED basic clothing insulation (ISO 9920) in [clo] |
ICLneutral |
Upper bound of REQUIRED basic clothing insulation (ISO 9920) in [clo] |
DLEminimal |
Lower bound of duration limited exposure in [hours] |
DLEneutral |
upper bound of duration limited exposure in [hours] |
The authors disclaim all obligations and liabilities for damages arising from the use or attempted use of the information, including, but not limited to, direct, indirect, special and consequential damages, and attorneys' and experts' fees and court costs. Any use of the information will be at the risk of the user.
Developed by Ingvar Holmer and Hakan O. Nilsson, 1990 in java and transferred to R by Shoaib Sarwar. Further contribution by Marcel Schweiker.
ISO 11079, 2007-12-15, ERGONOMICS OF THE THERMAL ENVIRONMENT - DETERMINATION AND INTERPRETATION OF COLD STRESS WHEN USING REQUIRED CLOTHING INSULATION (IREQ) AND LOCAL COOLING EFFECTS
calcIREQ(116,0,-15,-15,8,0.3,0.4,85,2.5)
calcIREQ(116,0,-15,-15,8,0.3,0.4,85,2.5)
calcISO7933
calculates Tre, SWtotg, Dlimtre, Dlimloss50 and Dlimloss95 based
on ISO 7933. It additionally provides intermediate results from the
calculation: Cres, Eres, Ep, SWp, Texp, Tskeq, Tsk, wp
calcIso7933(accl, posture, Ta, Pa, Tr, Va, Met, Icl, THETA, Walksp, Duration, weight, height, DRINK, Adu, spHeat, SWp, Tre, Tcr, Tsk, Tcreq, Work, imst, Ap, Fr, defspeed, defdir, HR, pb)
calcIso7933(accl, posture, Ta, Pa, Tr, Va, Met, Icl, THETA, Walksp, Duration, weight, height, DRINK, Adu, spHeat, SWp, Tre, Tcr, Tsk, Tcreq, Work, imst, Ap, Fr, defspeed, defdir, HR, pb)
accl |
a numeric value presenting state of acclimation [100 if acclimatised subject, 0 otherwise] |
posture |
a numeric value presenting posture of person [sitting=1, standing=2, crouching=3] |
Ta |
a numeric value presenting air temperature in [degrees celsius] |
Pa |
a numeric value presenting partial water vapour pressure [kPa] |
Tr |
a numeric value presenting mean radiant temperature in [degrees celsius] |
Va |
a numeric value presenting air velocity in [m/s] |
Met |
a numeric value presenting metabolic rate in [W/(m*m)] |
Icl |
a numeric value presenting static thermal insulation of clothing [clo] |
THETA |
a numeric value presenting angle between walking direction and wind direction in [degrees] |
Walksp |
a numeric value presenting walking speed in [m/s] |
Duration |
a numeric value presenting the duration of the work sequence in [min] |
weight |
a numeric value presenting the body mass in [kg] |
height |
a numeric value presenting the body height in [m] |
DRINK |
a numeric value presenting if workers can drink as they want [1 if they can drink without restriction, 0 if restricted] |
Adu |
a numeric value presenting body surface area according to Du Bois [m*m] |
spHeat |
a numeric value presenting specific body heat [(W/(m*m))/K] |
SWp |
a numeric value presenting predicted sweat rate [W/(m*m)] |
Tre |
a numeric value presenting rectal temperature [degrees celsius] |
Tcr |
a numeric value presenting temperature of body core [degrees celsius] |
Tsk |
a numeric value presenting skin temperature at start [degrees celsius] |
Tcreq |
a numeric value presenting temperature of body core dependent on energy metabolism [degrees celsius] |
Work |
a numeric value presenting effective mechanical power [W/(m*m)] |
imst |
a numeric value presenting static moisture permeability index [-] |
Ap |
a numeric value presenting fraction of the body surface covered by the reflective clothing [-] |
Fr |
a numeric value presenting emissivity of the reflective clothing [-] |
defspeed |
a numeric value presenting if walking speed entered [1 if walking speed entered, 0 otherwise] |
defdir |
a numeric value presenting if walking direction entered [1 if walking direction entered, 0 otherwise] |
HR |
a numeric value presenting humidity ratio [g/kg] |
pb |
a numeric value presenting normal barometric pressure in [Pa] |
All variables must have the same length 1.
calcISO7933
returns a data.frame with the following items: Tre final
rectal temperature [degrees Celsius] SWtotg
total water loss [g]Dlimtre
time when limit for rectal temperature is reached [min]Dlimloss50
time when limit for water loss Dmax50 (7.5 percent of
body mass of an average person) is reached [min]Dlimloss95
time when limit for water loss Dmax95 (5 percent of body
mass of 95 percent of the working people) is reached [min]Cres
convective heat flow at respiration [W/(m*m)]Eres
evaporative heat flow at respiration [W/(m*m)]Ep
predicted evaporative heat flow [W/(m*m)]SWp
predicted sweating rate [W/(m*m)]Texp
temperature of the exhaled air [degrees Celsius]Tskeq
skin Temperature in equilibrium [degrees Celsius]Tsk
skin Temperature at the minute [degrees Celsius]wp
predicted skin wettedness [-]
In case one of the variables is not given, a standard value according to ISO 7933 will be taken.
The code for calcISO7933 is based on the code in BASIC presented in Addendum E of EN ISO 7933. The translation into R-language conducted by Michael Kleber.
ISO 7933 (2004) Ergonomics of the thermal environment - Analytical determination and interpretation of heat stress using calculation of the predicted heat strain Malchaire, Piette, Kampmann, Mehnert, Gebhardt, Havenith, Den Hartog, Holmer, Parsons, Alfano, Griefahn (2000) <doi:10.1016/S0003-4878(00)00030-2> Malchaire, Kampmann, Havenith, Mehnert, Gebhardt (2000) <doi:10.1007/s004200050420>
## Calculation of a single set of values. calcIso7933(accl = 100, posture = 2, Ta = 35, Pa = 4, Tr = 35, Va = 0.3, Met = 150, Icl = 0.5, THETA = 0, Walksp = 0, Duration = 480) calcIso7933(100,2,35,4,35,0.3,150,0.5,0,0,480) ## Using several rows of data: accl <- 100 posture <- 2 Ta <- c(40,35) Pa <- c(2.5,4) Tr <- c(40,35) Va <- 0.3 Met <- 150 Icl <- 0.5 THETA <- 0 Walksp <- 0 Duration <- 480 maxLength <- max(sapply(list(accl, posture, Ta, Pa, Tr, Va, Met, Icl, THETA, Walksp, Duration), length)) PHI <- sapply(seq(maxLength), function(x) {calcIso7933(accl, posture, Ta[x], Pa[x], Tr[x], Va, Met, Icl, THETA, Walksp, Duration) } )
## Calculation of a single set of values. calcIso7933(accl = 100, posture = 2, Ta = 35, Pa = 4, Tr = 35, Va = 0.3, Met = 150, Icl = 0.5, THETA = 0, Walksp = 0, Duration = 480) calcIso7933(100,2,35,4,35,0.3,150,0.5,0,0,480) ## Using several rows of data: accl <- 100 posture <- 2 Ta <- c(40,35) Pa <- c(2.5,4) Tr <- c(40,35) Va <- 0.3 Met <- 150 Icl <- 0.5 THETA <- 0 Walksp <- 0 Duration <- 480 maxLength <- max(sapply(list(accl, posture, Ta, Pa, Tr, Va, Met, Icl, THETA, Walksp, Duration), length)) PHI <- sapply(seq(maxLength), function(x) {calcIso7933(accl, posture, Ta[x], Pa[x], Tr[x], Va, Met, Icl, THETA, Walksp, Duration) } )
This set of functions calculates different humidity related values based on the given entities.
calcDewp(ta, rh) calcEnth(ta, rh, pb) calcHumx(ta, rh) calcMixR(ta, rh, pb) calcRH(ta, mr, pb) calcSVP(ta) calcVP(ta, mr, pb) calcVapourpressure(ta, rh)
calcDewp(ta, rh) calcEnth(ta, rh, pb) calcHumx(ta, rh) calcMixR(ta, rh, pb) calcRH(ta, mr, pb) calcSVP(ta) calcVP(ta, mr, pb) calcVapourpressure(ta, rh)
ta |
a numeric value or vector presenting air temperature in [degree C]. |
rh |
a numeric value or vector presenting relative humidity in [%], except for |
pb |
a numeric value or vector presenting barometric pressure in [torr]. |
mr |
a numeric value or vector presenting the mixIng ratio in [g/kg. |
The length of the arguments must be either the same or they must have the length one and one common second length.
calcDewp
returns the dew point temperature in [degree C]
calcEnth
returns a single value or a vector of values of enthalpy in [J]
calcHumx
returns a single value or a vector of values of the humidex of air [ ]
calcMixR
returns a single value or a vector of mixIng ratio in [g/kg]
calcRH
returns a single value or a vector of relative humidities in [%]
calcSVP
returns a single value or a vector of saturation vapor pressure in [kpa]
calcVP
returns a single value or a vector of vapor pressure in [kpa]
calcVapourpressure
returns a single value or a vector of vapor pressure in [kpa]
Michael Kleber (code and documentation), Marcel Schweiker (documentation).
Ranaa, Kusya, Jurdaka, Wallb & Hua (2013) <doi:10.1016/j.enbuild.2013.04.019>
Masterton & Richardson (1979) Humidex a method of quantifying humandiscomfort due to excessive heat and humidity, clI 1-79. Downsview, Ont: Environment Canada. Atmosheric Environment Service.
## Calc single value of absolute humidity ta <- 25 rh <- 50 calcMixR(ta, rh, 760) ## Calc set of values of absolute humidity ta <- 25:30 rh <- 50 calcMixR(ta, rh, 760) ## Calculating dew point temperature with single values for ta and rh calcDewp(25, 50) ## Calculating dew point temperature with a vector of values for ta and a single value for rh calcDewp(25:29, 50) ## Calc single value of enthalpy ta <- 25 rh <- 50 calcEnth(ta, rh, 760) ## Calc set of values of enthalpy ta <- 25:30 rh <- 50 calcEnth(ta, rh, 760)
## Calc single value of absolute humidity ta <- 25 rh <- 50 calcMixR(ta, rh, 760) ## Calc set of values of absolute humidity ta <- 25:30 rh <- 50 calcMixR(ta, rh, 760) ## Calculating dew point temperature with single values for ta and rh calcDewp(25, 50) ## Calculating dew point temperature with a vector of values for ta and a single value for rh calcDewp(25:29, 50) ## Calc single value of enthalpy ta <- 25 rh <- 50 calcEnth(ta, rh, 760) ## Calc set of values of enthalpy ta <- 25:30 rh <- 50 calcEnth(ta, rh, 760)
calcMRTglobe
calculates the mean radiant temperature considering mixed convection
calcMRTglobe(tg, ta, vel, x = 0.15)
calcMRTglobe(tg, ta, vel, x = 0.15)
tg |
- a numeric value presenting globe temperature in [degree C] |
ta |
- a numeric value presenting air temperature in [degree C] |
vel |
- a numeric value presenting air velocity in [m/s] |
x |
- a numeric value presenting globe diameter in [m] |
aliases MRT globe
This model has only been validated from x = 0.040m (ping pong ball) to
x = 0.150m (standard globe thermometer) globes
calcMRTglobe
MRT with standard and mixed correction
code implemented into R by Shaomi Rahman and Marcel Schweiker.
Teitelbaum et al. (2022) <10.1038/s41598-022-10172-5> Teitelbaum (2022) <https://github.com/eteitelb/MixedConvection>
#Globe temperature [C] tg <- 30 #Air temperature [C] ta <- 24 #Air speed [m/s] vel <- 0.0 calcMRTglobe(tg, ta, vel)
#Globe temperature [C] tg <- 30 #Air temperature [C] ta <- 24 #Air speed [m/s] vel <- 0.0 calcMRTglobe(tg, ta, vel)
calcPD
calculates Predicted Percentage Dissatisfied due to Draft based
on the 2-Node-Model by Gagge et al.
calcPD(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcPD(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcPD
returns the Predicted Percentage Dissatisfied due to Draft
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pd <- sapply(seq(maxLength), function(x) { calcPD(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pd <- sapply(seq(maxLength), function(x) { calcPD(ta[x], tr[x], vel[x], rh[x]) } )
Function to calculate Predicted Mean Vote (PMV).
calcPMV(ta, tr, vel, rh, clo=.5, met=1, wme=0, basMet=58.15)
calcPMV(ta, tr, vel, rh, clo=.5, met=1, wme=0, basMet=58.15)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
basMet |
a numeric value presenting basal metabolic rate [w/m2] |
The PMV is an index that predicts the mean value of the thermal sensation of a large group of people on a sensation scale expressed from (-3) to (+3) corresponding to the categories cold, cool, slightly cool, neutral, slightly warm, warm and hot. PMV model is limited to air speeds below 0.20 m/s.
Note that the adjustments in the value for basMet need to be made with great cautiousness as the PMV calculation is an empirical model and might not be valid for other values of basMet than the one commonly used.
PMV - Predicted Mean Vote
Code implemented in to R by Marcel Schweiker. Further contribution by Sophia Mueller and Shoaib Sarwar.
Fanger (1970) Thermal Comfort Analysis and Applications in Environmental Engineering McGraw-Hill, New York.
ISO 7730 (2005) Ergonomics of the thermal environment analytical determination and interpretation of thermal comfort using calculation of the pmv and ppd indices and local thermal comfort criteria.
calcPMV(25,25,0.3,50,0.5,1)
calcPMV(25,25,0.3,50,0.5,1)
Function to calculate Predicted Mean Votes (PMV) adjusted for cooling effect of elevated air speed.
calcPMVadj(ta, tr, vel, rh, clo, met, wme = 0)
calcPMVadj(ta, tr, vel, rh, clo, met, wme = 0)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
Calculated through function Two node model(calc2Node
calcpmvadj
returns the predicted mean vote adjusted for the cooling effect of elevated air speed.
Code implemented in to R by Marcel Schweiker. Further contribution by Sophia Mueller and Shoaib Sarwar.
pmvadj is based on ASHRAE standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
calcPMVadj(25,25,0.3,50,0.5,1)
calcPMVadj(25,25,0.3,50,0.5,1)
calcPMVGagge
calculates Gagge's Version of Fanger's PMV based on the
2-Node-Model by Gagge et al.
calcPMVGagge(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcPMVGagge(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcPMVGagge
returns Gagge's Version of Fanger's PMV
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pmvg <- sapply(seq(maxLength), function(x) { calcPMVGagge(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pmvg <- sapply(seq(maxLength), function(x) { calcPMVGagge(ta[x], tr[x], vel[x], rh[x]) } )
Function to calculate Predicted Mean Vote (PMV) and Predicted Percentage of Dissatisfied (PPD).
calcPMVPPD(ta, tr, vel, rh, clo=.5, met=1, wme=0, basMet=58.15, getLoad = FALSE)
calcPMVPPD(ta, tr, vel, rh, clo=.5, met=1, wme=0, basMet=58.15, getLoad = FALSE)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
basMet |
a numeric value presenting basal metabolic rate [w/m2] |
getLoad |
a boolean value. Set to true to get thermal load as output instead of PMV/PPD |
The PMV is an index that predicts the mean value of the thermal sensation of a large group of people on a sensation scale expressed from (-3) to (+3) corresponding to the categories cold, cool, slightly cool, neutral, slightly warm, warm and hot. The PPD is an index that establishes a quantitative prediction of the percentage of thermally dissatisfied people determined from PMV.
Note that the adjustments in the value for basMet need to be made with great cautiousness as the PMV calculation is an empirical model and might not be valid for other values of basMet than the one commonly used.
PMV - Predicted Mean Vote
PPD - Predicted Percentage of Dissatisfied occupants in [%]
Lraw - thermal load (only when getLoad was set to TRUE)
Code implemented in to R by Marcel Schweiker. Further contribution by Sophia Mueller and Shoaib Sarwar.
Fanger (1970) Thermal Comfort Analysis and Applications in Environmental Engineering McGraw-Hill, New York.
ISO 7730 Ergonomics of the thermal environment analytical determination and interpretation of thermal comfort using calculation of the pmv and ppd indices and local thermal comfort criteria 2005.
see also calcComfInd
calcPMVPPD(25,25,0.3,50,0.5,1)
calcPMVPPD(25,25,0.3,50,0.5,1)
calcPMVStar
calculates Fanger's PMV based on the 2-Node-Model by
Gagge et al. except that DRY is calculated using SET* rather than
the operative temperature
calcPMVStar(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcPMVStar(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcPMVStar
returns Fanger's PMV except that DRY is calculated
using SET* rather than the operative temperature
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pmvstar <- sapply(seq(maxLength), function(x) { calcPMVStar(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pmvstar <- sapply(seq(maxLength), function(x) { calcPMVStar(ta[x], tr[x], vel[x], rh[x]) } )
Function to calculate Predicted Percentage of Dissatisfied (PPD).
calcPPD(ta, tr, vel, rh, clo=.5, met=1, wme=0, basMet=58.15)
calcPPD(ta, tr, vel, rh, clo=.5, met=1, wme=0, basMet=58.15)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
basMet |
a numeric value presenting basal metabolic rate [w/m2] |
The PPD is an index that establishes a quantitative prediction of the percentage of thermally dissatisfied people determined from PMV.
Note that the adjustments in the value for basMet need to be made with great cautiousness as the PMV calculation is an empirical model and might not be valid for other values of basMet than the one commonly used.
PPD - Predicted Percentage of Dissatisfied occupants in [%]
Code implemented in to R by Marcel Schweiker. Further contribution by Sophia Mueller and Shoaib Sarwar.
Fanger (1970) Thermal Comfort Analysis and Applications in Environmental Engineering McGraw-Hill, New York.
ISO 7730 Ergonomics of the thermal environment analytical determination and interpretation of thermal comfort using calculation of the pmv and ppd indices and local thermal comfort criteria 2005.
calcPPD(25,25,0.3,50,0.5,1)
calcPPD(25,25,0.3,50,0.5,1)
calcPS
calculates Predicted Percentage Satisfied with the Level of Air
Movement based on the 2-Node-Model by Gagge et al.
calcPS(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcPS(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcPS
returns the Predicted Percentage Satisfied with the Level of
Air Movement
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) ps <- sapply(seq(maxLength), function(x) { calcPS(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) ps <- sapply(seq(maxLength), function(x) { calcPS(ta[x], tr[x], vel[x], rh[x]) } )
calcPTS
calculates Predicted Thermal Sensation Vote based on SET by
the 2-Node-Model by Gagge et al.
calcPTS(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcPTS(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcPTS
returns the Predicted Thermal Sensation Vote based on SET
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain, M. & Huizenga, C. A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report, 1995
Gagge, A. P., Fobelets, A. P. and Berglund, L. G. A standard predictive index of human response to the thermal environment, ASHRAE transactions, 1986, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pts <- sapply(seq(maxLength), function(x) { calcPTS(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) pts <- sapply(seq(maxLength), function(x) { calcPTS(ta[x], tr[x], vel[x], rh[x]) } )
calcPtsa
calculates Predicted Thermal Sensation based on the
2-Node-Model by Gagge et al. and adjusts its output according to adaptive
coefficient
calcPtsa(ta, tr, vel, rh, clo = .5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, asCoeff)
calcPtsa(ta, tr, vel, rh, clo = .5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, asCoeff)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
asCoeff |
a numeric values presenting adaptive coefficient [-] |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcPtsa
returns a dataframe containing the Predicted Thermal
Sensation value
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013. Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731. Coefficients are calculated based on Gao, Wang & Wargocki (2015) <doi:10.1016/j.buildenv.2015.04.030> The aPMV concept was introduced by Yao, Li & Liu (2009) <doi:10.1016/j.buildenv.2009.02.014> The ePMV concept was introudced by Fanger & Toftum (2002) <doi:10.1016/S0378-7788(02)00003-8>
see also calcComfInd
and calc2Node
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) asCoeff <- 0.5 maxLength <- max(sapply(list(ta, tr, vel, rh,asCoeff), length)) ptsa <- sapply(seq(maxLength), function(x) { calcPtsa(ta[x], tr[x], vel[x], rh[x], asCoeff=asCoeff) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) asCoeff <- 0.5 maxLength <- max(sapply(list(ta, tr, vel, rh,asCoeff), length)) ptsa <- sapply(seq(maxLength), function(x) { calcPtsa(ta[x], tr[x], vel[x], rh[x], asCoeff=asCoeff) } )
calcPtse
calculates Predicted Thermal Sensation based on the
2-Node-Model by Gagge et al. and adjusts its output according to expectancy
factor
calcPtse(ta, tr, vel, rh, clo = .5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, esCoeff)
calcPtse(ta, tr, vel, rh, clo = .5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, esCoeff)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
esCoeff |
a numeric values presenting expectancy factor [-] |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcPtse
returns a dataframe containing the Predicted Thermal
Sensation value
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013. Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731. Coefficients are calculated based on Gao, Wang & Wargocki (2015) <doi:10.1016/j.buildenv.2015.04.030> The aPMV concept was introduced by Yao, Li & Liu (2009) <doi:10.1016/j.buildenv.2009.02.014> The ePMV concept was introudced by Fanger & Toftum (2002) <doi:10.1016/S0378-7788(02)00003-8>
see also calcComfInd
and calc2Node
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) esCoeff <- 0.5 maxLength <- max(sapply(list(ta, tr, vel, rh), length)) ptse <- sapply(seq(maxLength), function(x) { calcPtse(ta[x], tr[x], vel[x], rh[x], esCoeff=esCoeff) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) esCoeff <- 0.5 maxLength <- max(sapply(list(ta, tr, vel, rh), length)) ptse <- sapply(seq(maxLength), function(x) { calcPtse(ta[x], tr[x], vel[x], rh[x], esCoeff=esCoeff) } )
Function to calculate Required recovery time, RT in hours.
calcRT(M,W,ta,tr,p,w,v,rh,clo)
calcRT(M,W,ta,tr,p,w,v,rh,clo)
M |
a numeric value presenting metabolic energy production (58 to 400 W/m2) in [W/m2] |
W |
a numeric value presenting Rate of mechanical work, (normally 0) in [W/m2] |
ta |
a numeric value presenting ambiant air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
p |
a numeric value presenting air permeability (low < 5, medium 50, high > 100 l/m2s) in [l/m2s] |
w |
a numeric value presenting walking speed (or calculated work created air movements) in [m/s] |
v |
a numeric value presenting relative air velocity(0.4 to 18 m/s) in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
returns required recovery time in [hours]
The authors disclaim all obligations and liabilities for damages arising from the use or attempted use of the information, including, but not limited to, direct, indirect, special and consequential damages, and attorneys' and experts' fees and court costs. Any use of the information will be at the risk of the user.
Developed by Ingvar Holmer and Hakan O. Nilsson, 1990 in java and transferred to R by Shoaib Sarwar. Further contribution by Marcel Schweiker.
ISO 11079, 2007-12-15, ERGONOMICS OF THE THERMAL ENVIRONMENT - DETERMINATION AND INTERPRETATION OF COLD STRESS WHEN USING REQUIRED CLOTHING INSULATION (IREQ) AND LOCAL COOLING EFFECTS
calcRT(90,0,25,25,8,0.2,0.4,50,1.5)
calcRT(90,0,25,25,8,0.2,0.4,50,1.5)
calcSET
calculates Standard Effective Temperature based on the
2-Node-Model by Gagge et al.
calcSET(ta, tr, vel, rh, clo = .5, met = 1, wme = 0, sa = NULL, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = .5, bodyPosition = 'sitting')
calcSET(ta, tr, vel, rh, clo = .5, met = 1, wme = 0, sa = NULL, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = .5, bodyPosition = 'sitting')
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
sa |
(optional)surface Area according to mosteller formula [m^2] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
bodyPosition |
a string representing body position, has to be 'sitting' or 'standing'. Default value is 'sitting' |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcSET
returns the Standard Effective Temperature (SET)
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) SET <- sapply(seq(maxLength), function(x) { calcSET(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) SET <- sapply(seq(maxLength), function(x) { calcSET(ta[x], tr[x], vel[x], rh[x]) } )
calcSkinWettedness
calculates Skin Wettedness based on the 2-Node-Model
by Gagge et al.
calcSkinWettedness(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5, varOut="skinWet")
calcSkinWettedness(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5, varOut="skinWet")
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
varOut |
a string value "skinWet" to report value of skin wettedness |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcSkinWettedness
returns the Skin Wettedness
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) skinWet <- sapply(seq(maxLength), function(x) { calcSkinWettedness(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) skinWet <- sapply(seq(maxLength), function(x) { calcSkinWettedness(ta[x], tr[x], vel[x], rh[x]) } )
Function to calculate effective radiant field and delta mean radiant temperature.
calcSolarGain(solAlt, solAzi, solRadDir, solTrans, fSvv, fBes, asw=0.7, posture="seated", floorRef=0.6)
calcSolarGain(solAlt, solAzi, solRadDir, solTrans, fSvv, fBes, asw=0.7, posture="seated", floorRef=0.6)
solAlt |
a numeric value presenting solar altitude, degrees from horizontal in [degree C] |
solAzi |
a numeric value presenting solar azimuth, degrees clockwise from North in [degree C] |
solRadDir |
a numeric value presenting direct-beam solar radiation [W/m2] |
solTrans |
a numeric value presenting total solar transmittance. Ranges from 0 to 1. |
fSvv |
a numeric value presenting fraction of sky vault exposed to body. Ranges from 0 to 1. |
fBes |
a numeric value presenting fraction of the possible body surface exposed to sun. Ranges from 0 to 1. |
asw |
a numeric value presenting the average short-wave absorptivity of the occupant. |
posture |
a list of available options 'standing', 'supine' or 'seated'. |
floorRef |
a numeric value presenting floor reflectance. Usually assumed to be constant and equal to 0.6. |
An array of two values
First values represents erf
- Net energy flux to or from the human body using the Effective Radiant Field [W/m2]
Second value represents delMrt
- Delta mean radiant temperature, the increase
in radiant temperature required without solar radiation [Degree C]
Code implemented in to R by Shaomi Rahman. Further contribution by Marcel Schweiker.
Original code in Python by Tartarini & Schiavon (2020) <doi:10.1016/j.softx.2020.100578>
see also calcComfInd
calcSolarGain(0, 120, 800, 0.5, 0.5, 0.5, asw=0.7, posture="seated") # Returns [42.9, 10.3]
calcSolarGain(0, 120, 800, 0.5, 0.5, 0.5, asw=0.7, posture="seated") # Returns [42.9, 10.3]
calctadapt
are three functions to calculate adaptive comfort or neutral temperatures based on a given outdoor temperature value.
calctAdapt15251(trm = 20) calctAdaptASHRAE(tmmo) calctnAuliciems(ta, tmmo) calctnHumphreysNV(tmmo) calctnHumphreysAC(tmmo)
calctAdapt15251(trm = 20) calctAdaptASHRAE(tmmo) calctnAuliciems(ta, tmmo) calctnHumphreysNV(tmmo) calctnHumphreysAC(tmmo)
trm |
numerical value presenting the running mean outdoor temperature in [degree C]. |
ta |
numerical value presenting the indoor air temperature in [degree C]. |
tmmo |
numerical value presenting the mean monthly outdoor temperature in [degree C]. |
returns the adaptive comfort or neutral temperature with respect to the given outdoor temperature value
The difference between calctnHumphreysNV
and calctnHumphreysAC
is that the former was found for natural ventilated buildings (NV), while the latter was found for climate-controlled buildings (AC).
Code implemented in to R by Marcel Schweiker. Further contribution by Sophia Mueller and Shoaib Sarwar.
calctAdapt15251
is based on DIN EN 15251 Indoor environmental input parameters for design and assessment of energy performance of buildings addressing indoor air quality, thermal environment, lighting and acoustics; German version EN 15251:2012 2012.
calcAdaptASHRAE
is based on Brager & de Dear (2001) Climate, comfort, & natural ventilation: a new adaptive comfort standard for ASHRAE standard 55.
calctnAuliciems
is based on Auliciems (1981) Psycho-physiological criteria for global thermal zones of building design.
calctnHumphreysNV
and calctnHumphreysAC
are based on Humphreys (1978) Outdoor temperatures and comfort indoors. Batiment International, Building Research and Practice, Taylor and Francis.
see also calcComfInd
## define variable trm <- 21.2 ## calculate adaptive comfort temperature calctAdapt15251(trm)
## define variable trm <- 21.2 ## calculate adaptive comfort temperature calctAdapt15251(trm)
calcTNZPDF
calculates the distance from the thermoneutral zone, either skin temperature or room air related. Also calculates the probability function (PDF) of the thermoneutral zone.
calcTNZPDF(ht, wt, age, gender, clo, vel, tskObs, taObs, met, rh, fBasMet = "rosa", fSA = "duBois", percCov = 0, TcMin = 36, TcMax = 38, plotZone = FALSE, gridTaMin = 20, gridTaMax = 30, gridTskMin = 30, gridTskMax = 42, gridTa = 1000, gridTsk = 1000, sa = 1.86, IbMax = 0.124, IbMin = 0.03, alphaIn = 0.08, metMin = 55.3, metMax = 57.3, metDiff = .1, forPDF = FALSE, metAdapt = "none", trm = 15, TcPreAdapt = 37.2)
calcTNZPDF(ht, wt, age, gender, clo, vel, tskObs, taObs, met, rh, fBasMet = "rosa", fSA = "duBois", percCov = 0, TcMin = 36, TcMax = 38, plotZone = FALSE, gridTaMin = 20, gridTaMax = 30, gridTskMin = 30, gridTskMax = 42, gridTa = 1000, gridTsk = 1000, sa = 1.86, IbMax = 0.124, IbMin = 0.03, alphaIn = 0.08, metMin = 55.3, metMax = 57.3, metDiff = .1, forPDF = FALSE, metAdapt = "none", trm = 15, TcPreAdapt = 37.2)
ht |
a numeric value presenting body height in [cm]. |
wt |
a numeric value presenting body weight in [kg]. |
age |
a numeric value presenting the age in [years]. |
gender |
a numeric value presenting sex (female = 1, male = 2) |
clo |
a numeric value presenting clothing insulation level in [clo]. |
vel |
a numeric value presenting air velocity in [m/s]. |
tskObs |
a numeric value presenting actual mean skin temperature in [degree C]. |
taObs |
a numeric value presenting actual air temperature in [degree C]. |
met |
a numeric value presenting metabolic rate (activity related) in [met]. |
rh |
a numeric value presenting realtive humidity in [%]. |
fBasMet |
a string presenting the method of calculating basal metbolic rate. Needs to be one of "rosa", "harris", "miflin", "fixed", or "direct". Fixed will result in the value of 58.2 W/m2. Direct requires definition of metMin and metMax. |
fSA |
a string presenting the method of calculating the surface area. Needs to be one of "duBois", "mosteller", or "direct". |
percCov |
a numeric value between 0 and 1 presenting the percentage of the body covered by clothes in [%]. |
TcMin |
a numeric value presenting the minimum allowed core temperature in [degree C]. |
TcMax |
a numeric value presenting the maximum allowed core temperature in [degree C]. |
plotZone |
a boolean variable TRUE or FALSE stating, wether TNZ should be plotted or not. |
gridTaMin |
a numeric value defining the minimum grid value for Ta, ambient temperature, in [degree C]. |
gridTaMax |
a numeric value defining the maximum grid value for Ta, ambient temperature, in [degree C]. |
gridTskMin |
a numeric value defining the minimum grid value for Tsk, skin temperature, in [degree C]. |
gridTskMax |
a numeric value defining the maximum grid value for Tsk, skin temperature, in [degree C]. |
gridTa |
a numeric value defining the grid size in Ta dimension. |
gridTsk |
a numeric value defining the grid size in Tsk dimension. |
sa |
a numeric value for surface area (only used with method fSA: direct) in [m2]. |
IbMax |
a numeric value for maximum body tissue insulation in [m2K/W]. |
IbMin |
a numeric value for minimum body tissue insulation in [m2K/W]. |
alphaIn |
a numeric value for alpha (if 0, alpha will be calculated according to Fanger. |
metMin |
a numeric value for minimum metabolic rate (only used with method fBasMet:direct) in [W/m2]. |
metMax |
a numeric value for maximum metabolic rate (only used with method fBasMet:direct) in [W/m2]. |
metDiff |
a numeric value for difference between minimum and maximum metabolic rate (not used with method fBasMet:direct) in [W/m2]. |
forPDF |
a boolean value. If TRUE, matrix for drawing of PDF will be output, if FALSE, values for dTNZ and others will be output. |
metAdapt |
a string presenting the method of calculating the surface area. Needs to be one of 'Hori', 'Q10', 'ATHB', or 'none'. NOTE: all methods applied here still in development and need further validation. |
trm |
numerical value presenting the running mean outdoor temperature in [degree C]. Only used with metAdapt: Hori and ATHB. |
TcPreAdapt |
numerical value presenting the initial core temperature before adaptation in [degree C]. Only used with metAdapt: Q10. |
The percentage of the body covered by clothes can be estimated e.g. based on ISO 9920 Appendix H (Figure H.1). A typical winter case leads to a value of around .86, in the summer case this goes down to values around .68.
calcTNZPDF
returns either a dataframe suitbale to draw the pdf of TNZ (by setting forPDF to TURE) or a dataframe with the columns dTNZ, dTNZTs, dTNZTa and others. Thereby
dTNZ |
The absolute distance to the centroid of the thermoneutral zone |
dTNZTs |
Relative value of distance assuming skin temperature to be dominant for sensation |
dTNZTa |
Relative value of distance assuming ambient temperature to be dominant for sensation |
This function was used for the review paper by Schweiker et al. (2018) (see reference above). Some of the equations implemented are still to be validated further - therefore, use this function and its parameters with great care.
This function is not (yet) implemented in calcComfInd
, calcdTNZ
is applied there.
Marcel Schweiker and Boris Kingma
Schweiker, Huebner, Kingma, Kramer & Pallubinsky (2018) <doi:10.1080/23328940.2018.1534490> Kingma, Schweiker, Wagner & van Marken Lichtenbelt Exploring the potential of a biophysical model to understand thermal sensation Proceedings of 9th Windsor Conference: Making Comfort Relevant Cumberland Lodge, Windsor, UK, 2016. Kingma & van Marken Lichtenbelt (2015) <doi:10.1038/nclimate2741> Kingma, Frijns, Schellen & van Marken Lichtenbelt (2014) <doi:10.4161/temp.29702>
## Calculate and draw pdf of TNZ for a young non-obese male longTcYoungMale <- calcTNZPDF(ht = 178, wt = 70, age = 30, gender = 2, clo = 0.5, vel = 0.2, tskObs = 36.2, taObs = 26, met = 1, rh = 50, fBasMet = "rosa", fSA = "duBois", percCov = 0.6, TcMin = 36, TcMax = 38, plotZone = FALSE, gridTaMin = 20, gridTaMax = 30, gridTskMin = 20, gridTskMax = 42, gridTa = 1000, gridTsk = 1000, sa = 2.0335, IbMax = 0.124, IbMin = 0.03, alphaIn = 0, metMin = 55.3, metMax = 57.3, metDiff = 0.1, forPDF = TRUE) plot(density(longTcYoungMale$X2), main="", xlim=c(14,36), ylim=c(0,.50), xlab="Operative temperature [degree C]")
## Calculate and draw pdf of TNZ for a young non-obese male longTcYoungMale <- calcTNZPDF(ht = 178, wt = 70, age = 30, gender = 2, clo = 0.5, vel = 0.2, tskObs = 36.2, taObs = 26, met = 1, rh = 50, fBasMet = "rosa", fSA = "duBois", percCov = 0.6, TcMin = 36, TcMax = 38, plotZone = FALSE, gridTaMin = 20, gridTaMax = 30, gridTskMin = 20, gridTskMax = 42, gridTa = 1000, gridTsk = 1000, sa = 2.0335, IbMax = 0.124, IbMin = 0.03, alphaIn = 0, metMin = 55.3, metMax = 57.3, metDiff = 0.1, forPDF = TRUE) plot(density(longTcYoungMale$X2), main="", xlim=c(14,36), ylim=c(0,.50), xlab="Operative temperature [degree C]")
calcTPRTSV
calculates the true positive rate between
predicted thermal sensation votes and actual obtained sensation votes
calcTPRTSV(ref, pred)
calcTPRTSV(ref, pred)
ref |
a numeric item or vector containing categorical actual thermal sensation votes coded from -3 'cold' to +3 'hot' |
pred |
a numeric item or vector containing categorical predicted thermal sensation votes coded from -3 'cold' to +3 'hot' |
calcTPRTSV
returns a single value presenting the true positive
rate between actual and predicted thermal sensation votes.
Marcel Schweiker
Schweiker & Wagner (2015) <doi:10.1016/j.buildenv.2015.08.018>
see also calcMeanBias
, calcAvgAcc
## Define data ref <- rnorm(5) # actual thermal sensation votes ref <- cutTSV(ref) pred <- rnorm(5) # predicted thermal sensation votes pred <- cutTSV(pred) calcTPRTSV(ref, pred)
## Define data ref <- rnorm(5) # actual thermal sensation votes ref <- cutTSV(ref) pred <- rnorm(5) # predicted thermal sensation votes pred <- cutTSV(pred) calcTPRTSV(ref, pred)
The functions calcTroin
calculates radiative and operative temperature based on air temperature, globe temperature, air velocity and metabolic rate. Globe temperature needs to be measured using a standard globe with a diameter of 0.15m and an emissivity of .95 (black coloured).
calcTroin(vel, tg, ta, met) calctroin(vel, tg, ta, met) Troin(vel, tg, ta, met) troin(vel, tg, ta, met)
calcTroin(vel, tg, ta, met) calctroin(vel, tg, ta, met) Troin(vel, tg, ta, met) troin(vel, tg, ta, met)
vel |
a numeric value presenting air velocity in [m/s] |
tg |
a numeric value or vector presenting the globe temperature in [degree C] |
ta |
a numeric value presenting air temperature in [degree C] |
met |
a numeric value presenting metabolic rate in [met] |
Calculation of the radiative temperature is based on ISO 7726:2001, equation (9). Calculation of operative temperature is based on ISO 7726:2001, Appendix G.3. The adjustment of air velocity to present relative air velocity based on metabolic rate is based on ISO 7730:2005 Appendix C.2.
calcTroin
returns a data.frame with radiative and operative temperature.
Marcel Schweiker. Further contribution by Shoaib Sarwar.
ISO 7726 Ergonomics of the Thermal Environment, Instruments for measuring Physical Quantities Geneva: International standard Organization, 1998.
ISO 7730 Ergonomics of the thermal environment - analytical determination and interpretation of thermal comfort using calculation of the pmv and ppd indices and local thermal comfort criteria 2005.
## Note: Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values vel <- rep(.1,5) # vector with air velocities met <- rep(1.1,5) # vector with metabolic rates tg <- 25:29 # vector with globe temperature values calcTroin(vel, tg, ta, met)
## Note: Due to random generated asv values. The values for the coefficients will not be meaningful. ## Create sample data ta <- 20:24 # vector with air temperature values vel <- rep(.1,5) # vector with air velocities met <- rep(1.1,5) # vector with metabolic rates tg <- 25:29 # vector with globe temperature values calcTroin(vel, tg, ta, met)
calcTSens
calculates Predicted Thermal Sensation based on the
2-Node-Model by Gagge et al.
calcTSens(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
calcTSens(ta, tr, vel, rh, clo = 0.5, met = 1, wme = 0, pb = 760, ltime = 60, ht = 171, wt = 70, tu = 40, obj = "set", csw = 170, cdil = 120, cstr = 0.5)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
wme |
a numeric value presenting external work in [met] |
pb |
a numeric value presenting barometric pressure in [torr] or [mmHg] |
ltime |
a numeric value presenting exposure time in [minutes] |
ht |
a numeric value presenting body height in [cm] |
wt |
a numeric value presenting body weight in [kg] |
tu |
a numeric value presenting turbulence intensity in [%] |
obj |
a character element, either "set" or "pmvadj" |
csw |
a numeric value presenting the driving coefficient for regulatory sweating |
cdil |
a numeric value presenting the driving coefficient for vasodilation |
cstr |
a numeric value presenting the driving coefficient for vasoconstriction |
All variables must have the same length 1. For the calculation of several
values use function calcComfInd
. The value of obj
defines
whether the function will use the version presented in ASHRAE 55-2013 for
adjustment of pmv (obj = "pmvadj"), or the original code by Gagge to calculate
set (obj = "set"). In the version presented in ASHRAE 55-2013, the lines of
code related to self-generated convection is deleted. Therefore, a difference
can only be seen at higher values of met.
calcTSens
returns the Predicted Thermal Sensation
In case one of the variables is not given, a standard value will be taken
from a list (see createCond
for details).
The code for calc2Node
is based on the code in BASIC and C++ presented
by Fountain and Huizenga (1995). The translation into R-language and comparison
with ASHRAE 55-2013 conducted by Marcel Schweiker.
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
Fountain & Huizenga (1995) A thermal sensation model for use by the engineering profession ASHRAE RP-781 Final report.
Gagge, Fobelets & Berglund (1986) A standard predictive index of human response to the thermal environment, ASHRAE transactions, 92 (2B), 709-731.
see also calcComfInd
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) TSens <- sapply(seq(maxLength), function(x) { calcTSens(ta[x], tr[x], vel[x], rh[x]) } )
## Using several rows of data: ta <- c(20,22,24) tr <- ta vel <- rep(.15,3) rh <- rep(50,3) maxLength <- max(sapply(list(ta, tr, vel, rh), length)) TSens <- sapply(seq(maxLength), function(x) { calcTSens(ta[x], tr[x], vel[x], rh[x]) } )
Function to calculate windchill temperature, TWC, in Degrees.
calcTWC(v,ta) windchill(v,ta)
calcTWC(v,ta) windchill(v,ta)
v |
a numeric value presenting meteorological wind speed (at 10 m) in [km/h] |
ta |
a numeric value presenting ambient air temperature in [degree C] |
The function returns the temperature that considers the cooling effect on a localized skin segment.
returns (twc) Wind chill temperature in [Degree C]
The authors disclaim all obligations and liabilities for damages arising from the use or attempted use of the information, including, but not limited to, direct, indirect, special and consequential damages, and attorneys' and experts' fees and court costs. Any use of the information will be at the risk of the user.
Developed by Ingvar Holmer and Hakan O. Nilsson, 1990 in java and transferred to R by Shoaib Sarwar. Further contribution by Marcel Schweiker.
ISO 11079, 2007-12-15, ERGONOMICS OF THE THERMAL ENVIRONMENT - DETERMINATION AND INTERPRETATION OF COLD STRESS WHEN USING REQUIRED CLOTHING INSULATION (IREQ) AND LOCAL COOLING EFFECTS
calcTWC(6.8,-25)
calcTWC(6.8,-25)
Functions to calculate UTCI.
calcUTCI(ta, tr, vel, rh)
calcUTCI(ta, tr, vel, rh)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
air temperature and mean radiant temperature should be in Degree C unit. Air velocity has to be in m/s unit and relative humidity has to be put in percentage value.
the utciValue
value rounded to one decimal
Code implemented in to R by Shaomi Rahman. Further contribution by Marcel Schweiker.
UTCI project page on http://www.utci.org/ Original code in Python by Tartarini & Schiavon (2020) <doi:10.1016/j.softx.2020.100578>
see also calcComfInd
calcUTCI(25, 25, 1.0, 50) # Returns 24.6
calcUTCI(25, 25, 1.0, 50) # Returns 24.6
Function to calculate vertical air temperature gradient using the predicted percentage of dissatisfied.
calcVTG(ta, tr, vel, rh, clo, met, v_tmp_grad)
calcVTG(ta, tr, vel, rh, clo, met, v_tmp_grad)
ta |
a numeric value presenting air temperature in [degree C] |
tr |
a numeric value presenting mean radiant temperature in [degree C] |
vel |
a numeric value presenting air velocity in [m/s] |
rh |
a numeric value presenting relative humidity [%] |
clo |
a numeric value presenting clothing insulation level in [clo] |
met |
a numeric value presenting metabolic rate in [met] |
v_tmp_grad |
vertical temperature gradient between the feet and the head [degree C/m] |
Calculates the percentage of thermally dissatisfied persons with a vertical temperature gradient between feet and head. Applicable only for velocity(vel) < 0.2 m/s
Predicted Percentage of Dissatisfied with vertical temperature gradient in [%]
Acceptability in [boolean]
Code implemented in to R by Shoaib Sarwar. Further contribution by Marcel Schweiker.
Original code in Python by Tartarini & Schiavon (2020) <doi:10.1016/j.softx.2020.100578>
calcVTG(25,25,0.1,50,0.5,1.2,7) # returns Vertical Air Temperature Gradient:12.4, Acceptability:FALSE
calcVTG(25,25,0.1,50,0.5,1.2,7) # returns Vertical Air Temperature Gradient:12.4, Acceptability:FALSE
createCond
creates a list with standard variables to be used as an input parameter for calculating comfort indices using the function calcComfInd
.
createCond(a = TRUE) createcond(a = TRUE)
createCond(a = TRUE) createcond(a = TRUE)
a |
logical. If a = TRUE, function returns a list of standard conditions. If a = FALSE, function returns a list of empty variables which may be edited manually. See details for further information. |
lsstrd
and lsEmpty
contain the following elements
Variable name | values in lsstrd |
values in lsEmpty |
description |
ta | 25 | NA | Air temperature in (degree C) |
tr | 25 | NA | mean radiant temperature in (degree C) |
vel | .1 | NA | Air velocity (m/s) |
rh | 50 | NA | Relative Humidity (%) |
clo | .5 | NA | clothing (do) |
met | 1 | NA | metabolic rate (met) |
wme | 0 | NA | External work (met) |
tu | 40 | NA | turbulence intensity (%) |
tmmo | 15 | NA | mean monthly outdoor temperature in (degree C) |
ltime | 60 | NA | Exposure time (min) |
pb | 760 | NA | Barometric pressure (torr) |
wt | 70 | NA | weight (Kg) |
ht | 171 | NA | height (cm) |
trm | 15 | NA | Running mean outdoor temperature in (degree C) |
age | 21 | NA | age (years) |
gender | 1 | NA | gender (female = 1) |
tsk | 35 | NA | mean skin temperature in (degree C) |
psych | -1.4 | NA | factor related to fixed effect on perceived control |
apCoeff | .293 | NA | adaptive coefficient for pmv |
epCoeff | .9 | NA | expectancy factor for pmv |
asCoeff | .2 | NA | adaptive coefficient for set |
esCoeff | 1.3 | NA | expectancy factor for set |
asv | 1.5 | NA | actual sensation vote (0 = neutral) |
tao | 5 | NA | outdoor air temperature |
rho | 70 | NA | outdoor relative humidity |
frad | .7 | NA | 0.7(for seating), 0.73(for standing) [-] |
eps | .95 | NA | emissivity [-] |
ic | 1.085 | NA | 1.084 (average permeability), 0.4 (low permeability) |
tcr | 37 | NA | initial values for core temp |
tsk | 36 | NA | initial values for skin temperature |
basMet | 58.2 | NA | basal metabolic rate |
warmUp | 60 | NA | length of warm up period, i.e. number of times, loop is running for HBx calculation |
cdil | 100 | NA | value for cdil in 2-node model of Gagge (applied in calculation of HbEx) |
sigmatr | .25 | NA | value for cdil in 2-node model of Gagge (applied in calculation of HbEx) |
lsstrd |
List, which is created for a = TRUE; contains standard conditions. |
lsEmpty |
List, which is created for a = FALSE; contains empty variables to be modified manually. |
indices listed as request
. For details see details above.
Sophia Mueller and Marcel Schweiker.
For references see individual functions.
see also calcComfInd
## Creating list with standard variables createCond() ## Creating list with empty values createCond(a = FALSE)
## Creating list with standard variables createCond() ## Creating list with empty values createCond(a = FALSE)
cutTSV
converts continuous thermal sensation votes to
categorical ones.
cutTSV(pred)
cutTSV(pred)
pred |
a numeric item or vector containing continuous thermal sensation votes coded from -3 'cold' to +3 'hot' |
Categorization is realized with intervals closed on the right, e.g. setting all values lower and equal then -2.5 to a value of -3, higher than -2.5 and lower or equal -1.5 to -2, and so on.
cutTSV
returns an item or a vector with categorical thermal
sensation votes.
Marcel Schweiker
## define example data pred <- rnorm(5) ## bin values cutTSV(pred)
## define example data pred <- rnorm(5) ## bin values cutTSV(pred)
Data from ASHRAE 55-2013 to calibrate values given by SET model
data(dfASHRAETableG11)
data(dfASHRAETableG11)
A data frame with 22 rows and 11 variables:
ta
a numeric vector of air temperature [degree C]
taF
a numeric vector of air temperature [degree F]
tr
a numeric vector of radiant temperature [degree C]
trF
a numeric vector of radiant temperature [degree F]
vel
a numeric vector of indoor air velocity [m/s]
velFPM
a numeric vector of indoor air velocity [fpm]
rh
a numeric vector of relative humidity [%]
met
a numeric vector of metabolic rate [MET]
clo
a numeric vector of clothing insulation level [CLO]
set
a numeric vector of standard effective temperature (SET) [degree C]
setF
a numeric vector of standard effective temperature (SET) [degree F]
ASHRAE Standard 55-2013. Thermal environmental conditions for human occupancy. American society of heating, Refrigerating and Air-Conditioning Engineering, Atlanta, USA, 2013.
data(dfASHRAETableG11) head(dfASHRAETableG11)
data(dfASHRAETableG11) head(dfASHRAETableG11)
Randomly sampled data from a field study campaign with data from 156 samples. For further description, see the reference given.
data(dfField)
data(dfField)
A data frame with 156 rows and 9 variables:
air temperature [degree C]
radiant temperature [degree C] - same as ta
relative humidity [%]
running mean outdoor temperature [degree C]
clothing insulation level [CLO]
outdoor air temperature [degree C]
indoor air velocity [m/s]
metabolic rate [MET]
actual thermal sensation vote on ASHRAE scale [ ]
Schweiker, M. and Wagner, A. Exploring potentials and limitations of the adaptive thermal heat balance framework. Proceedings of 9th Windsor Conference: Making Comfort Relevant Cumberland Lodge, Windsor, UK, 2016. <https://windsorconference.com/>
data(dfField) head(dfField)
data(dfField) head(dfField)
Data from ISO 7730 Appendix E to calibrate values given by PMV model
data(dfISO7730AppE)
data(dfISO7730AppE)
A data frame with 13 rows and 8 variables:
top
a numeric vector of operative temperature [degree C]
vel
a numeric vector of indoor air velocity [m/s]
rh
a numeric vector of relative humidity [%]
met
a numeric vector of metabolic rate [MET]
clo
a numeric vector of clothing insulation level [CLO]
pmv
a numeric vector of Predicted mean vote (PMV)
ISO 7730 Ergonomics of the thermal environment analytical determination and interpretation of thermal comfort using calculation of the pmv and ppd indices and local thermal comfort criteria 2005.
data(dfISO7730AppE) head(dfISO7730AppE)
data(dfISO7730AppE) head(dfISO7730AppE)
Data from ISO 7730 to calibrate values given by PMV / PPD model
data(dfISO7730TableD1)
data(dfISO7730TableD1)
A data frame with 13 rows and 8 variables:
ta
a numeric vector of air temperature [degree C]
tr
a numeric vector of radiant temperature [degree C]
vel
a numeric vector of indoor air velocity [m/s]
rh
a numeric vector of relative humidity [%]
met
a numeric vector of metabolic rate [MET]
clo
a numeric vector of clothing insulation level [CLO]
pmv
a numeric vector of Predicted mean vote (PMV)
ppd
a numeric vector of Predicted percentage dissatisfied (PPD)
ISO 7730 Ergonomics of the thermal environment analytical determination and interpretation of thermal comfort using calculation of the pmv and ppd indices and local thermal comfort criteria 2005.
data(dfISO7730TableD1) head(dfISO7730TableD1)
data(dfISO7730TableD1) head(dfISO7730TableD1)
Data from ISO 7933 Appendix F to calibrate values given by the proposed model
data(dfISO7933AppF)
data(dfISO7933AppF)
A data frame with 10 rows and 16 variables:
accl
a numeric vector of state of acclimatised subject, 100 if acclimatised, 0 otherwise [-]
posture
a numeric vector of posture of subject, posture = 1 sitting, =2 standing, =3 crouching [-]
Ta
a numeric vector of air temperature [degree C]
Pa
a numeric vector of partial water vapour pressure [kPa]
Tr
a numeric vector of mean radiant temperature [degree C]
Va
a numeric vector of air velocity (m/s)
Met
a numeric vector of metabolic rate (W/(m*m))
Icl
a numeric vector of static thermal insulation (clo)
THETA
a numeric vector of angle between walking direction and wind direction (degrees)
Walksp
a numeric vector of walking speed (m/s)
Duration
a numeric vector of the duration of the work sequence (min)
Tre
a numeric vector of final rectal temperature (degree C)
SWtotg
a numeric vector of total water loss (g)
Dlimtre
a numeric vector of maximum allowed exposition time for heat storage (min)
Dlimloss50
a numeric vector of maximum water loss for protection of an average person (g)
Dlimloss95
a numeric vector of maximum water loss for protection of 95% of the working people (g)
ISO 7933 Ergonomics of the thermal environment - Analytical determination and interpretation of heat stress using calculation of the predicted heat strain 2004
data(dfISO7933AppF) head(dfISO7933AppF)
data(dfISO7933AppF) head(dfISO7933AppF)
Dataset with Different Combinations of Inputs to Calculate UTCI
data(dfUTCIValues)
data(dfUTCIValues)
A data frame with 81 rows and 5 variables:
ta
a numeric value presenting air temperature in [degree C]
tr
a numeric value presenting mean radiant temperature in [degree C]
vel
a numeric value presenting air velocity in [m/s]
rh
a numeric value presenting relative humidity [%]
utci
a numeric value presenting the UTCI value
see also calcUTCI
data(dfUTCIValues) head(dfUTCIValues)
data(dfUTCIValues) head(dfUTCIValues)