72 T latticeTemp = this->_blockLattice.get( input[0], input[1], input[2]).computeRho();
73 T physTemp = this->_converter.getPhysTemperature(latticeTemp);
75 auto latticeVel = this->_blockLattice.get(input[0], input[1], input[2]).template getFieldPointer<descriptors::VELOCITY>();
77 physVel[0]= this->_converter.getPhysVelocity(latticeVel[0]);
78 physVel[1]= this->_converter.getPhysVelocity(latticeVel[1]);
79 physVel[2]= this->_converter.getPhysVelocity(latticeVel[2]);
89 T temp_Clo = temp_Bod;
90 T temp_Clo_old = temp_Clo;
93 temp_Air = physTemp - 273.15;
94 vel_Air =
util::sqrt(physVel[0]*physVel[0] + physVel[1]*physVel[1] + physVel[2]*physVel[2]);
100 f_clo = 1.0 + 1.290 * i_clo;
103 f_clo = 1.05 + 0.645 * i_clo;
109 T ppk = 673.4 - 1.8 * temp_Air;
110 T ppa = (3.2437814 + 0.00326014*ppk) + (2.00658 * 0.000000001 * ppk * ppk * ppk);
111 T ppb = (1165.09 - ppk) * (1.0 + 0.00121547 * ppk);
112 press_Vapor = rel_Hum/100.0 * 22105.8416/
util::exp(2.302585 * ppk * ppa / ppb) * 1000.0;
120 for (
int iter = 0; iter < iterMax; iter++) {
121 temp_Clo = 0.8 * temp_Clo_old + 0.2 * temp_Clo;
129 temp_Clo_old = temp_Clo;
130 temp_Clo = 35.7 - 0.028 * mw -
131 i_clo * (3.96e-8 * f_clo * (
util::pow(temp_Clo + 273.0, 4) -
util::pow(temp_Mrt + 273.0, 4)) +
132 f_clo * h_c * (temp_Clo - temp_Air));
134 if ((
util::fabs((temp_Clo_old - temp_Clo) / temp_Clo)) < eps) {
137 if (iter == (iterMax-1)) {
138 clout <<
"WARNING: Maximal iteration step limit: PMV calculation not possible!" << std::endl;
143 pmv = (0.303 *
util::exp(-0.036 * mw) + 0.028) * (mw
144 -3.05e-3*(5733.0 - 6.99*mw - press_Vapor)
146 -1.7e-5 * mw * (5867.0 - press_Vapor) - 0.0014 * mw * (34.0 - temp_Air)
148 -f_clo * h_c * (temp_Clo - temp_Air));