def pmv_hoppe_iso( t, rh, wind, mtrad, iclo): eta = 0.01; # Mechanical efficiency age = 35.0; # Age mbody = 75.0; # Weigth in kg ht = 1.75; # Heigth in m tcl = 30.005 MAX_LOOP = 200 MAX_LOOP_HALF = MAX_LOOP / 2 tcl_eps = 0.05 eps = 0.97 sigm = 5.67e-8 adu = 0.203 * math.pow(mbody, 0.425) * math.pow(ht, 0.725) metbf = 3.19 * math.pow(mbody, (3.0/4.0)) * (1.0 + 0.004* (30.0- age)+0.018 * ((ht * 100.0/ math.pow(mbody, (1.0/3.0))) - 42.1)) metbm = 3.45 * math.pow(mbody, (3.0/4.0)) * (1.0 + 0.004* (30.0- age)+0.010 * ((ht * 100.0/ math.pow(mbody, (1.0/3.0))) - 43.4)) vpa = (rh / 100) * 6.105 * math.pow(2.718281828, ( 17.27*t / ( 237.7 + t ) )) fcl = 1.0 + iclo * 0.15 metb = metabolism(t) metf = metbf + metb metm = metbm + metb metb = (metf+metm)/2.0 h = metb * (1.0 - eta) aef = 0.71 * fcl * adu p1 = 35.7 - 0.032 * (metb / (adu * 1.16))* (1 - eta) tcl1 = tcl for x in range(0, MAX_LOOP_HALF): if x < MAX_LOOP_HALF: hc = 12.06 * math.sqrtf(wind) abhc = 0.0 else: hc = 2.38 * math.pow(fabsf(tcl1 - t), 4.0) abhc = 0.6 * fabsf(math.pow((tcl1 - t), -0.75)) tcl2 = p1 - 0.155 * iclo * (3.94 * 0.00000001* fcl *(math.pow((tcl1 + 273.2),4.0)- math.pow((mtrad+ 273.2), 4.0))+fcl * hc* (tcl1 - t)) diff = math.abs(tcl1 - tcl2) if diff < tcl_eps: break abtcl = -0.155 * iclo * (4.0 * 3.94* 0.00000001* fcl *math.pow((tcl1+ 273.2),3.0) + fcl * hc- fcl *(tcl1 - t)* abhc)- 1.0 tcl1 = tcl1 - (tcl2 - tcl1) / abtcl difhc = (12.06 * math.sqrt(wind)) - (2.38 * (math.pow(math.abs(t - tcl1), 0.25))) if difhc > 0.0 and i == MAX_LOOP_HALF: break tsk = 35.7 - (0.028 * h / adu) esw = 0.42 * adu * (h / adu - 58.08) if esw < 0.0: esw= 0.0 rsum = aef * eps * sigm * (math.pow((tcl1 + 273.2), 4.0) - math.pow((mtrad + 273.2),4.0)) csum = adu * fcl * hc * (tcl1 - t) erel = 0.0023 * metb * (44.0 - 0.75 * vpa) eres = 0.0014 * metb * (34.0 - t) ed = 0.406 * adu * (1.92 * tsk - 25.3- 0.75 * vpa) load = (h - ed - erel - eres - esw - rsum - csum) / adu ts = (0.303 * math.expf(-0.036 * (metb / adu)) + 0.028) pmv= ts * load return pmv
def ppd( pmv): ppd = 100.0 - 95.0 * math.expf(-0.2179 * math.pow(pmv, 2.0)) - 0.03353* math.pow(pmv, 4.0) return ppd
def pmv_hoppe_iso(t, rh, wind, mtrad, iclo): eta = 0.01 # Mechanical efficiency age = 35.0 # Age mbody = 75.0 # Weigth in kg ht = 1.75 # Heigth in m tcl = 30.005 MAX_LOOP = 200 MAX_LOOP_HALF = MAX_LOOP / 2 tcl_eps = 0.05 eps = 0.97 sigm = 5.67e-8 adu = 0.203 * math.pow(mbody, 0.425) * math.pow(ht, 0.725) metbf = 3.19 * math.pow( mbody, (3.0 / 4.0)) * (1.0 + 0.004 * (30.0 - age) + 0.018 * ((ht * 100.0 / math.pow(mbody, (1.0 / 3.0))) - 42.1)) metbm = 3.45 * math.pow( mbody, (3.0 / 4.0)) * (1.0 + 0.004 * (30.0 - age) + 0.010 * ((ht * 100.0 / math.pow(mbody, (1.0 / 3.0))) - 43.4)) vpa = (rh / 100) * 6.105 * math.pow(2.718281828, (17.27 * t / (237.7 + t))) fcl = 1.0 + iclo * 0.15 metb = metabolism(t) metf = metbf + metb metm = metbm + metb metb = (metf + metm) / 2.0 h = metb * (1.0 - eta) aef = 0.71 * fcl * adu p1 = 35.7 - 0.032 * (metb / (adu * 1.16)) * (1 - eta) tcl1 = tcl for x in range(0, MAX_LOOP_HALF): if x < MAX_LOOP_HALF: hc = 12.06 * math.sqrtf(wind) abhc = 0.0 else: hc = 2.38 * math.pow(fabsf(tcl1 - t), 4.0) abhc = 0.6 * fabsf(math.pow((tcl1 - t), -0.75)) tcl2 = p1 - 0.155 * iclo * (3.94 * 0.00000001 * fcl * (math.pow( (tcl1 + 273.2), 4.0) - math.pow( (mtrad + 273.2), 4.0)) + fcl * hc * (tcl1 - t)) diff = math.abs(tcl1 - tcl2) if diff < tcl_eps: break abtcl = -0.155 * iclo * (4.0 * 3.94 * 0.00000001 * fcl * math.pow( (tcl1 + 273.2), 3.0) + fcl * hc - fcl * (tcl1 - t) * abhc) - 1.0 tcl1 = tcl1 - (tcl2 - tcl1) / abtcl difhc = (12.06 * math.sqrt(wind)) - (2.38 * (math.pow(math.abs(t - tcl1), 0.25))) if difhc > 0.0 and i == MAX_LOOP_HALF: break tsk = 35.7 - (0.028 * h / adu) esw = 0.42 * adu * (h / adu - 58.08) if esw < 0.0: esw = 0.0 rsum = aef * eps * sigm * (math.pow((tcl1 + 273.2), 4.0) - math.pow( (mtrad + 273.2), 4.0)) csum = adu * fcl * hc * (tcl1 - t) erel = 0.0023 * metb * (44.0 - 0.75 * vpa) eres = 0.0014 * metb * (34.0 - t) ed = 0.406 * adu * (1.92 * tsk - 25.3 - 0.75 * vpa) load = (h - ed - erel - eres - esw - rsum - csum) / adu ts = (0.303 * math.expf(-0.036 * (metb / adu)) + 0.028) pmv = ts * load return pmv