dimensionless_coagulation
#
from particula.util import dimensionless_coagulation
help(dimensionless_coagulation)
Help on module particula.util.dimensionless_coagulation in particula.util:
NAME
particula.util.dimensionless_coagulation - A class with methods for dimensionless coagulation
CLASSES
particula.util.diffusive_knudsen.DiffusiveKnudsen(particula.util.coulomb_enhancement.CoulombEnhancement)
DimensionlessCoagulation
class DimensionlessCoagulation(particula.util.diffusive_knudsen.DiffusiveKnudsen)
| DimensionlessCoagulation(dkn_val=None, coag_approx='hardsphere', **kwargs)
|
| dimensionless coagulation
|
| Method resolution order:
| DimensionlessCoagulation
| particula.util.diffusive_knudsen.DiffusiveKnudsen
| particula.util.coulomb_enhancement.CoulombEnhancement
| builtins.object
|
| Methods defined here:
|
| __init__(self, dkn_val=None, coag_approx='hardsphere', **kwargs)
| Dimensionless particle--particle coagulation kernel.
|
| Attributes:
| diff_knu (float) [dimensionless]
|
| Notes:
| The dimensionless coagulation kernel is defined as
| a function of the diffusive knudsen number; for more info,
| please see the documentation of the respective function:
| - particula.util.diffusive_knudsen.diff_knu(**kwargs)
|
| coag_full(self)
| Retrun the dimensioned coagulation kernel
|
| coag_less(self)
| Return the dimensionless coagulation kernel.
|
| ----------------------------------------------------------------------
| Methods inherited from particula.util.diffusive_knudsen.DiffusiveKnudsen:
|
| get_celimits(self)
| get coag enh limits
|
| get_ces(self)
| get coulomb enhancement parameters
|
| get_diff_knu(self)
| calculate it
|
| get_red_frifac(self)
| get the reduced friction factor
|
| get_red_mass(self)
| get the reduced mass
|
| get_rxr(self)
| add two radii
|
| ----------------------------------------------------------------------
| Methods inherited from particula.util.coulomb_enhancement.CoulombEnhancement:
|
| coulomb_enhancement_continuum_limit(self)
| Coulombic coagulation enhancement continuum limit.
|
| Args:
| radius (float) [m]
| other_radius (float) [m] (default: radius)
| charge (float) [dimensionless] (default: 0)
| other_charge (float) [dimensionless] (default: 0)
| temperature (float) [K] (default: 298)
|
| Returns:
| (float) [dimensionless]
|
| coulomb_enhancement_kinetic_limit(self)
| Coulombic coagulation enhancement kinetic limit.
|
| Args:
| radius (float) [m]
| other_radius (float) [m] (default: radius)
| charge (float) [dimensionless] (default: 0)
| other_charge (float) [dimensionless] (default: 0)
| temperature (float) [K] (default: 298)
|
| Returns:
| (float) [dimensionless]
|
| coulomb_potential_ratio(self)
| Calculates the Coulomb potential ratio.
|
| Args:
| radius (float) [m]
| other_radius (float) [m] (default: radius)
| charge (int) [dimensionless] (default: 0)
| other_charge (int) [dimensionless] (default: 0)
| temperature (float) [K] (default: 298)
|
| Returns:
| (float) [dimensionless]
|
| ----------------------------------------------------------------------
| Data descriptors inherited from particula.util.coulomb_enhancement.CoulombEnhancement:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
FUNCTIONS
full_coag(**kwargs)
Return the dimensioned coagulation kernel
less_coag(**kwargs)
Return the dimensionless coagulation kernel.
The dimensionless coagulation kernel is defined as
a function of the diffusive knudsen number; for more info,
please see the documentation of the respective function:
- particula.util.diffusive_knudsen.diff_knu(**kwargs)
Examples:
```
>>> from particula import u
>>> from particula.util.dimensionless_coagulation import less_coag
>>> # only for hardsphere coagulation for now
>>> # with only one radius
>>> less_coag(radius=1e-9)
<Quantity(147.877572, 'dimensionless')>
>>> # with two radii
>>> less_coag(radius=1e-9, other_radius=1e-8)
<Quantity(18.4245966, 'dimensionless')>
>>> # with two radii and charges
>>> less_coag(
... radius=1e-9, other_radius=1e-8, charge=1, other_charge=-1
... )
<Quantity(22.0727435, 'dimensionless')>
FILE
/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/particula/util/dimensionless_coagulation.py
import inspect
print(inspect.getsource(dimensionless_coagulation))
""" A class with methods for dimensionless coagulation
"""
from particula.util.input_handling import in_scalar
from particula.util.diffusive_knudsen import DiffusiveKnudsen as DKn
from particula.util.diffusive_knudsen import celimits
# from particula.util.diffusive_knudsen import diff_knu as dknu
from particula.util.diffusive_knudsen import red_frifac, red_mass, rxr
from particula.util.approx_coagulation import approx_coag_less
class DimensionlessCoagulation(DKn):
""" dimensionless coagulation
"""
def __init__(
self,
dkn_val=None,
coag_approx="hardsphere",
**kwargs
):
""" Dimensionless particle--particle coagulation kernel.
Attributes:
diff_knu (float) [dimensionless]
Notes:
The dimensionless coagulation kernel is defined as
a function of the diffusive knudsen number; for more info,
please see the documentation of the respective function:
- particula.util.diffusive_knudsen.diff_knu(**kwargs)
"""
super().__init__(**kwargs)
self.diff_knu = DKn(**kwargs).get_diff_knu() if dkn_val is None \
else in_scalar(dkn_val)
self.coag_approx = coag_approx
self.kwargs = kwargs
def coag_less(self):
""" Return the dimensionless coagulation kernel.
"""
impls = ["hardsphere", "gh2012", "cg2019", "dy2007", "gk2008"]
if self.coag_approx not in impls:
raise ValueError(f"{self.coag_approx} not recognized!")
return approx_coag_less(
diff_knu=self.diff_knu,
cpr=self.coulomb_potential_ratio(),
approx=self.coag_approx
)
def coag_full(self):
""" Retrun the dimensioned coagulation kernel
"""
coag = self.coag_less()
redff = red_frifac(**self.kwargs)
redm = red_mass(**self.kwargs)
cekl, cecl = celimits(**self.kwargs)
xrxr = rxr(**self.kwargs)
return (
coag * redff * xrxr**3 * cekl**2 / (redm * cecl)
)
def less_coag(**kwargs):
""" Return the dimensionless coagulation kernel.
The dimensionless coagulation kernel is defined as
a function of the diffusive knudsen number; for more info,
please see the documentation of the respective function:
- particula.util.diffusive_knudsen.diff_knu(**kwargs)
Examples:
```
>>> from particula import u
>>> from particula.util.dimensionless_coagulation import less_coag
>>> # only for hardsphere coagulation for now
>>> # with only one radius
>>> less_coag(radius=1e-9)
<Quantity(147.877572, 'dimensionless')>
>>> # with two radii
>>> less_coag(radius=1e-9, other_radius=1e-8)
<Quantity(18.4245966, 'dimensionless')>
>>> # with two radii and charges
>>> less_coag(
... radius=1e-9, other_radius=1e-8, charge=1, other_charge=-1
... )
<Quantity(22.0727435, 'dimensionless')>
"""
return DimensionlessCoagulation(**kwargs).coag_less()
def full_coag(**kwargs):
""" Return the dimensioned coagulation kernel
"""
return DimensionlessCoagulation(**kwargs).coag_full()