def speaking(T,RH): NaCl_con = 80.0/1000; # 80.0 mmol/L converted to mol/L for saliva, from Kallapur et al. sizeclass = [3,6,12,20,28,36,45,62.5,87.5,112.5,137.5,175,225,375,750] # in um numcon = [4.59,66.21,22.23,11.33,7.87,4.32,3.37,4.57,3.44,4.52,4.31,4.52,3.85,3.45,1.11] # in cm^-3 #sizeclass = [12,20,28,36,45,62.5,87.5,112.5,137.5,175,225,375,750,1500] # in um #numcon = [22.23,11.33,7.87,4.32,3.37,4.57,3.44,4.52,4.31,4.52,3.85,3.45,1.11,0.00] # in cm^-3 t_settle = [] sizepeak = 6 for binnum in range(15): size = sizeclass[binnum] #eqsize = 2*10**6 * settle.kohler(T, RH, size, NaCl_con) count = numcon[binnum] settime = settle.settling_time(T,RH,size,NaCl_con,1.5,model='sc') #if eqsize > 10: # settime = settle.settling_time(T,RH,size,NaCl_con,1.5,model='empirical_big') #else: # settime = settle.settling_time(T,RH,size,NaCl_con,1.5,model='empirical_small') #print(eqsize,settime) t_settle.append(settime) t_peak = settle.settling_time(T,RH,sizepeak,NaCl_con,1.5,model='sc') #eqsizepeak = 2*10**6 * settle.kohler(T, RH, sizepeak, NaCl_con) #if eqsizepeak > 10: #t_peak = settle.settling_time(T,RH,sizepeak,NaCl_con,1.5,model='empirical_big') #else: #t_peak = settle.settling_time(T,RH,sizepeak,NaCl_con,1.5,model='empirical_small') return(sizeclass,numcon,t_settle,sizepeak,t_peak)
def riskfactor2(T, RH, mode): mode_to_test = mode risk_fac = 0 if mode_to_test == 'speaking': [sizeclass, numcon, t_settle, sizepeak, t_peak] = module_initsize.speaking(T, RH) NaCl_con = 80.0 / 1000 # 80.0 mmol/L converted to mol/L for saliva, from Kallapur et al. elif mode_to_test == 'coughing': [sizeclass, numcon, t_settle, sizepeak, t_peak] = module_initsize.coughing(T, RH) NaCl_con = 91.0 / 1000 # Didn't find any data on dry cough droplet sodium level, here I assume it's close to mouth breathing? elif mode_to_test == 'breathing': [sizeclass, numcon, t_settle, sizepeak, t_peak] = module_initsize.breathing(T, RH) viralload = 10**8 # viral particles per mL saliva for binnum in range(len(sizeclass)): size = sizeclass[binnum] count = numcon[binnum] dropvol = 4 / 3 * np.pi * ( (size / 2)**3) * (10**(-12)) # droplet volume converted to mL poi_lambda = viralload * dropvol # in viral particles per droplet decay_rate = viability.kdecay(T, RH, 1.9) if size > 10: settling_time = settle.settling_time(T, RH, size, NaCl_con, 1.5, model='empirical_big') else: settling_time = settle.settling_time(T, RH, size, NaCl_con, 1.5, model='empirical_small') viable_numcon_10min = count * poi_lambda * np.exp(-decay_rate * (1 / 6) * 60) risk_10min = viable_numcon_10min * (np.maximum( 1 - ((1 / 6) / settling_time), 0)**2) risk_fac = risk_fac + risk_10min # sum up the risk factors for a total risk at this T and RH condition return risk_fac
def coughing(T,RH): NaCl_con = 91.0/1000; # Didn't find any data on dry cough droplet sodium level, here I assume it's close to mouth breathing? sizeclass = [3,6,12,20,28,36,45,62.5,87.5,112.5,137.5,175,225,375,750,1500] # in um numcon = [86,1187,444,144,54,50,41,43,30,36,34,93,53,44,30,0] # in cm^-3 t_settle = [] sizepeak = 6 for binnum in range(16): size = sizeclass[binnum] count = numcon[binnum] if size > 10: settling_time = settle.settling_time(T,RH,size,NaCl_con,1.5,model='empirical_big') else: settling_time = settle.settling_time(T,RH,size,NaCl_con,1.5,model='empirical_small') t_settle.append(settling_time) t_peak = settle.settling_time(T,RH,sizepeak,NaCl_con,1.5,model='empirical_big') return(sizeclass,numcon,t_settle,sizepeak,t_peak)
import settle # input T[C], RH[%], d0[um], cNaCl[mol/L], fall_height[m], model='sc' # default model selection of stokes cunningham # output settling time [hr] t_stl = settle.settling_time(25, 90, 10, 0.08, 1.5, 'sc') print(t_stl) print(type(t_stl)) # model parameter takes other arguments t_stl = settle.settling_time(25, 90, 10, 0.08, 1.5, 'epstein') print(t_stl) print(type(t_stl)) # get Knudsen number of air for T in [273, 278, 283, 288, 293, 298, 303, 308, 313]: print(settle.Kn_atm_air(T))
import settle import viability import weather import matplotlib.pyplot as plt # In[15]: # Weather data for LA downtown in Febuary filename = 'LADTweather.csv' # Input the .csv data file here [tempC, RH] = weather.weatherdataprocess(filename) t_settle = [] for day in range(len(tempC)): daily_T = tempC[day] daily_RH = RH[day] t = settle.settling_time(daily_T, daily_RH, 10, 0.05, 1.5) t_settle.append(t) # In[16]: plt.plot(t_settle) plt.ylabel('Daily Droplet Settling Time in hr') plt.show() weather.weatherdatapplot(tempC, RH) # In[ ]: # In[ ]: # In[ ]: