particula.particles.activity_strategies¶
activity_strategies
¶
Common interface for activity calculations.
Class strategies for activities and vapor pressure over mixture of liquids surface Using Raoult's Law, and strategies ideal, non-ideal, kappa hygroscopic parameterizations.
ActivityIdealMass
¶
Bases: ActivityStrategy
Calculate ideal activity based on mass fractions (Raoult's Law).
- activity : Computes activity from mass concentration, treating mass fractions as ideal.
Examples:
import particula as par
strategy = par.particles.ActivityIdealMass()
a = strategy.activity([0.5, 1.0, 1.5])
# a -> ...
References: - "Raoult's Law," Wikipedia.
activity
¶
activity(mass_concentration: Union[float, NDArray[float64]]) -> Union[float, NDArray[np.float64]]
Calculate the activity of a species based on mass concentration.
Parameters:
-
- mass_concentration–Concentration of the species in kg/m^3.
Returns:
-
Union[float, NDArray[float64]]–- Activity of the species, unitless.
Source code in particula/particles/activity_strategies.py
165 166 167 168 169 170 171 172 173 174 175 176 | |
ActivityIdealMolar
¶
ActivityIdealMolar(molar_mass: Union[float, NDArray[float64]] = 0.0)
Bases: ActivityStrategy
Calculate ideal activity based on mole fractions (Raoult's Law).
Attributes:
-
-(molar_mass) –Molar mass of the species in kg/mol.
Methods:
-
- activity–Computes ideal activity from mass concentration and molar mass.
Examples:
import particula as par
strategy = par.particles.ActivityIdealMolar(molar_mass=0.018)
# mass_concentration in kg/m^3
a = strategy.activity(np.array([1.2, 2.5, 3.0]))
# a -> ...
References
- "Raoult's Law," Wikipedia.
Initialize the ActivityIdealMolar strategy.
Parameters:
-
- molar_mass–Molar mass in kg/mol.
Source code in particula/particles/activity_strategies.py
118 119 120 121 122 123 124 | |
activity
¶
activity(mass_concentration: Union[float, NDArray[float64]]) -> Union[float, NDArray[np.float64]]
Calculate the activity of a species based on mass concentration.
Parameters:
-
- mass_concentration–Concentration of the species in kg/m^3.
Returns:
-
Union[float, NDArray[float64]]–- Activity of the species, unitless.
Source code in particula/particles/activity_strategies.py
126 127 128 129 130 131 132 133 134 135 136 137 138 139 | |
ActivityIdealVolume
¶
ActivityIdealVolume(density: Union[float, NDArray[float64]] = 0.0)
Bases: ActivityStrategy
Calculate ideal activity based on volume fractions (Raoult's Law).
Attributes:
-
-(density) –The density of the species in kg/m^3, used to derive volume fractions from mass concentrations.
Methods: - activity : Computes activity from mass concentration and density.
Examples:
strategy = ActivityIdealVolume(density=1000.0)
a = strategy.activity(2.5)
# a -> ...
References: - "Raoult's Law," Wikipedia.
Initialize the ActivityIdealVolume strategy.
Parameters:
-
- density–Density of the species in kg/m^3.
Source code in particula/particles/activity_strategies.py
201 202 203 204 205 206 207 | |
activity
¶
activity(mass_concentration: Union[float, NDArray[float64]]) -> Union[float, NDArray[np.float64]]
Calculate the activity of a species based on mass concentration.
Parameters:
-
- mass_concentration–Concentration of the species in kg/m^3.
-
- density–Density of the species in kg/m^3.
Returns:
-
Union[float, NDArray[float64]]–- Activity of the species, unitless.
Source code in particula/particles/activity_strategies.py
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | |
ActivityKappaParameter
¶
ActivityKappaParameter(kappa: NDArray[float64] | None = None, density: NDArray[float64] | None = None, molar_mass: NDArray[float64] | None = None, water_index: int = 0)
Bases: ActivityStrategy
Non-ideal activity strategy using the kappa hygroscopic parameter.
Attributes:
-
-(kappa) –Kappa hygroscopic parameters (array or scalar).
-
-(density) –Densities (array or scalar) in kg/m^3.
-
-(molar_mass) –Molar masses (array or scalar) in kg/mol.
-
-(water_index) –Index identifying the water species in arrays.
- activity : Computes non-ideal activity using kappa hygroscopicity approach.
Examples:
import particula as par
import numpy as np
strategy = par.particles.ActivityKappaParameter(
kappa=np.array([0.1, 0.0]),
density=np.array([1000.0, 1200.0]),
molar_mass=np.array([0.018, 0.058]),
water_index=0,
)
a = strategy.activity(np.array([1.0, 2.0]))
# a -> ...
References
- Petters, M. D., & Kreidenweis, S. M. (2007). A single parameter representation of hygroscopic growth and cloud condensation nucleus activity. Atmospheric Chemistry and Physics, 7(8), 1961-1971. DOI.
Initialize the ActivityKappaParameter strategy.
Parameters:
-
- kappa–Kappa hygroscopic parameters (array or scalar).
-
- density–Densities in kg/m^3 (array or scalar).
-
- molar_mass–Molar masses in kg/mol (array or scalar).
-
- water_index–Index of the water species.
Source code in particula/particles/activity_strategies.py
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 | |
activity
¶
activity(mass_concentration: Union[float, NDArray[float64]]) -> Union[float, NDArray[np.float64]]
Calculate the activity of a species based on mass concentration.
Parameters:
-
- mass_concentration–Concentration of the species in kg/m^3.
Returns:
-
Union[float, NDArray[float64]]–- Activity of the species, unitless.
References
- Petters, M. D., & Kreidenweis, S. M. (2007). A single parameter representation of hygroscopic growth and cloud condensation nucleus activity. Atmospheric Chemistry and Physics, 7(8), 1961-1971. DOI.
Source code in particula/particles/activity_strategies.py
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 | |
ActivityStrategy
¶
Bases: ABC
Abstract base class for vapor pressure and activity calculations.
This interface is used by subclasses for computing particle activity and partial pressures. General methods include activity() and partial_pressure().
Methods: - get_name : Return the type of the activity strategy. - activity : Calculate the activity of a species. (abstract method) - partial_pressure : Calculate the partial pressure of a species using its pure vapor pressure and computed activity.
Examples:
class CustomActivity(ActivityStrategy):
def activity(self, mass_concentration):
return 1.0
my_activity = CustomActivity()
pvap = my_activity.partial_pressure(101325.0, 1.0)
# pvap -> 101325.0
References: - "Vapor Pressure," Wikipedia.
activity
abstractmethod
¶
activity(mass_concentration: Union[float, NDArray[float64]]) -> Union[float, NDArray[np.float64]]
Calculate the activity of a species based on its mass concentration.
Parameters:
-
- mass_concentration–Concentration of the species in kg/m^3.
Returns:
-
Union[float, NDArray[float64]]–- Activity of the species, unitless.
Source code in particula/particles/activity_strategies.py
57 58 59 60 61 62 63 64 65 66 67 68 | |
get_name
¶
get_name() -> str
Return the type of the activity strategy.
Source code in particula/particles/activity_strategies.py
70 71 72 | |
partial_pressure
¶
partial_pressure(pure_vapor_pressure: Union[float, NDArray[float64]], mass_concentration: Union[float, NDArray[float64]]) -> Union[float, NDArray[np.float64]]
Calculate the vapor pressure of species in the particle phase.
Parameters:
-
- pure_vapor_pressure–Pure vapor pressure of the species in Pa.
-
- mass_concentration–Concentration of the species in kg/m^3.
Returns:
-
Union[float, NDArray[float64]]–- Vapor pressure of the particle in Pa.
Source code in particula/particles/activity_strategies.py
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | |