Introducing diameter as a vectorised parameter of Expiration. Providing equivalent diameters for each expiration type (gives the same emission rate as before)

This commit is contained in:
Nicolas Mounet 2021-09-12 08:09:56 +02:00
parent 936c72f76c
commit ab90b04349

View file

@ -562,8 +562,11 @@ class Expiration(_ExpirationBase):
#: total concentration of aerosols (cm^-3)
cn: float = 1.
#: diameter of the aerosol in microns
diameter: _VectorisedFloat
@cached()
def aerosols(self, mask: Mask):
def aerosols_(self, mask: Mask):
""" Result is in mL.cm^-3 """
def volume(d):
return (np.pi * d**3) / 6.
@ -572,6 +575,15 @@ class Expiration(_ExpirationBase):
return self.cn * (volume(self.diameter) *
(1 - mask.exhale_efficiency(self.diameter))) * 1e-12
@cached()
def aerosols(self, mask: Mask):
""" Result is in mL.cm^-3 """
def volume(d):
return (np.pi * d**3) / 6.
return (volume(self.diameter) *
(1 - mask.exhale_efficiency(self.diameter))) * 1e-12
@dataclass(frozen=True)
class MultipleExpiration(_ExpirationBase):