Removed co2 activities and adapted formula

This commit is contained in:
Luis Aleixo 2022-09-28 14:28:47 +02:00
parent 2e5559d017
commit a7a9ca43da
2 changed files with 8 additions and 14 deletions

View file

@ -1004,7 +1004,7 @@ class ConcentrationModel:
return 1. / (IVRR * V)
@method_cache
def _CO2_concentration_limit(self, time: float) -> _VectorisedFloat:
def _CO2_normed_concentration_limit(self, time: float) -> _VectorisedFloat:
if not self.infected.person_present(time):
return 0.
V = self.room.volume
@ -1416,20 +1416,22 @@ class ExposureModel:
return self._CO2_concentration(time)
def _CO2_concentration(self, time: float) -> _VectorisedFloat:
make_up_air_concentration = 440.44e-6 # carbon dioxide concentration in the make up air (m3/m3 person) - 440ppm
if time <= self.concentration_model._first_presence_time():
return 440.44e-6 # carbon dioxide concentration in the make up air (m3/m3 person) - 440ppm
return make_up_air_concentration
next_state_change_time = self.concentration_model._next_state_change(time)
IVRR = self.concentration_model.air_exch_virus_removal_rate(next_state_change_time)
co2_conc_limit = (self.concentration_model._CO2_concentration_limit(next_state_change_time) *
(self.concentration_model.infected.activity.exhalation_rate * (self.exposed.number + self.concentration_model.infected.number)))
co2_conc_limit = (self.concentration_model._CO2_normed_concentration_limit(next_state_change_time) *
((self.exposed.number*self.exposed.activity.exhalation_rate*0.1 +
self.concentration_model.infected.number*self.concentration_model.infected.activity.exhalation_rate*0.1)))
t_last_state_change = self.concentration_model.last_state_change(time)
co2_conc_at_last_state_change = self._CO2_concentration_cached(t_last_state_change) # CO2 contribution in the room at start
delta_time = time - t_last_state_change
fac = np.exp(-IVRR * delta_time)
return co2_conc_limit * (1 - fac) + ((co2_conc_at_last_state_change - 440.44e-6) * fac) + 440.44e-6
return co2_conc_limit * (1 - fac) + ((co2_conc_at_last_state_change - make_up_air_concentration) * fac) + make_up_air_concentration
def CO2_concentration(self, time: float) -> _VectorisedFloat:
# Correction due to the number of generated points.

View file

@ -86,14 +86,6 @@ activity_distributions = {
}
co2_activity = {
'Sleep': mc.Activity(0.013, 0.013),
'Resting': mc.Activity(0.02, 0.02),
'Normal work': mc.Activity(LogNormal(0.08, 0.13), LogNormal(0.08, 0.13)),
'Hard work': mc.Activity(LogNormal(0.33, 0.38), LogNormal(0.33, 0.38)),
}
# From https://doi.org/10.1101/2021.10.14.21264988 and references therein
symptomatic_vl_frequencies = LogCustomKernel(
np.array((2.46032, 2.67431, 2.85434, 3.06155, 3.25856, 3.47256, 3.66957, 3.85979, 4.09927, 4.27081,