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:
parent
936c72f76c
commit
ab90b04349
1 changed files with 13 additions and 1 deletions
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Reference in a new issue