Removed co2 activities and adapted formula
This commit is contained in:
parent
2e5559d017
commit
a7a9ca43da
2 changed files with 8 additions and 14 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue