Settling Velocity¶
Particula Index / Particula / Particles / Properties / Settling Velocity
Auto-generated documentation for particula.particles.properties.settling_velocity module.
_drag_coefficient¶
Show source in settling_velocity.py:407
Return drag coefficient c_d given a Reynolds number Re.
Arguments¶
- reynolds_number : Reynolds number [-].
Returns¶
- Drag coefficient c_d [-].
Signature¶
def _drag_coefficient(reynolds_number: float) -> float: ...
_velocity_mismatch¶
Show source in settling_velocity.py:428
Calculate the mismatch between predicted and actual velocities.
Arguments¶
- velocity : Current estimate of particle velocity [m/s].
- radius : Particle radius [m].
- rho_p : Particle density [kg/m³].
- fluid_density : Fluid density [kg/m³].
- dynamic_viscosity : Dynamic viscosity of the fluid [Pa·s].
- gravitational_acceleration : Gravitational acceleration [m/s²].
Returns¶
- Squared difference between predicted and actual velocities.
Signature¶
def _velocity_mismatch(
velocity: float,
radius: float,
rho_p: float,
fluid_density: float,
kinematic_viscosity: float,
gravitational_acceleration: float,
) -> float: ...
get_particle_settling_velocity¶
Show source in settling_velocity.py:31
Calculate the settling velocity of a particle in a fluid using Stokes' law.
The settling velocity (vₛ) is given by the equation:
- vₛ = (2 × r² × (ρₚ − ρ_f) × g × C_c) / (9 × μ)
- vₛ : Settling velocity in m/s
- r : Particle radius in m
- ρₚ : Particle density in kg/m³
- ρ_f : Fluid density in kg/m³
- g : Gravitational acceleration in m/s²
- C_c : Cunningham slip correction factor (dimensionless)
- μ : Dynamic viscosity in Pa·s
Arguments¶
- particle_radius : The radius of the particle in meters.
- particle_density : The density of the particle in kg/m³.
- slip_correction_factor : Account for non-continuum effects (dimensionless).
- dynamic_viscosity : Dynamic viscosity of the fluid in Pa·s.
- gravitational_acceleration : Gravitational acceleration in m/s².
- fluid_density : The fluid density in kg/m³. Defaults to 0.0.
Returns¶
- Settling velocity of the particle in m/s.
Examples¶
import numpy as np
import particula as par
par.particles.particle_settling_velocity(
particle_radius=np.array([1e-6, 1e-5, 1e-4]),
particle_density=np.array([1000, 2000, 3000]),
slip_correction_factor=np.array([1, 1, 1]),
dynamic_viscosity=1.0e-3
)
# Output: array([...])
References¶
- "Stokes' Law," Wikipedia, https://en.wikipedia.org/wiki/Stokes%27_law
Signature¶
@validate_inputs(
{
"particle_radius": "nonnegative",
"particle_density": "positive",
"slip_correction_factor": "positive",
"dynamic_viscosity": "nonnegative",
}
)
def get_particle_settling_velocity(
particle_radius: Union[float, NDArray[np.float64]],
particle_density: Union[float, NDArray[np.float64]],
slip_correction_factor: Union[float, NDArray[np.float64]],
dynamic_viscosity: float,
gravitational_acceleration: float = STANDARD_GRAVITY,
fluid_density: float = 0.0,
) -> Union[float, NDArray[np.float64]]: ...
See also¶
get_particle_settling_velocity_via_inertia¶
Show source in settling_velocity.py:104
Calculate gravitational settling velocity using particle inertia time.
The settling velocity (vₛ) is determined by:
- vₛ = (g × τₚ × C_c) / f(Reₚ)
- g is gravitational acceleration (m/s²).
- τₚ is particle inertia time (s).
- C_c is the Cunningham slip correction factor (dimensionless).
- f(Reₚ) is the drag correction factor, 1 + 0.15 × Reₚ^0.687.
- Reₚ is particle Reynolds number (dimensionless).
Arguments¶
- particle_inertia_time : Particle inertia time in seconds (s).
- particle_radius : Particle radius in meters (m).
- relative_velocity : Relative velocity between particle and fluid (m/s).
- slip_correction_factor : Cunningham slip correction factor (dimensionless).
- gravitational_acceleration : Gravitational acceleration (m/s²).
- kinematic_viscosity : Kinematic viscosity of the fluid (m²/s).
Returns¶
- Particle settling velocity in m/s.
Examples¶
import particula as par
par.particles.get_particle_settling_velocity_via_inertia(
particle_inertia_time=0.002,
particle_radius=1.0e-6,
relative_velocity=0.1,
slip_correction_factor=1.05,
gravitational_acceleration=9.81,
kinematic_viscosity=1.5e-5
)
# Output: ...
References¶
- Ayala, O., Rosa, B., Wang, L. P., & Grabowski, W. W. (2008). "Effects of turbulence on the geometric collision rate of sedimenting droplets. Part 1. Results from direct numerical simulation." New Journal of Physics, 10. https://doi.org/10.1088/1367-2630/10/7/075015
Signature¶
@validate_inputs(
{
"particle_inertia_time": "positive",
"gravitational_acceleration": "positive",
"slip_correction_factor": "positive",
}
)
def get_particle_settling_velocity_via_inertia(
particle_inertia_time: Union[float, NDArray[np.float64]],
particle_radius: Union[float, NDArray[np.float64]],
relative_velocity: Union[float, NDArray[np.float64]],
slip_correction_factor: Union[float, NDArray[np.float64]],
gravitational_acceleration: float,
kinematic_viscosity: float,
) -> Union[float, NDArray[np.float64]]: ...
get_particle_settling_velocity_via_system_state¶
Show source in settling_velocity.py:181
Compute the particle settling velocity based on system state parameters.
This function calculates the dynamic viscosity from temperature, the mean free path from the same system state, and the Knudsen number of the particle, then applies the slip correction factor. Finally, it returns the settling velocity from Stokes' law with slip correction.
Arguments¶
- particle_radius : Particle radius in meters (m).
- particle_density : Particle density in kg/m³.
- temperature : Temperature of the system in Kelvin (K).
- pressure : Pressure of the system in Pascals (Pa).
Returns¶
- Settling velocity of the particle in m/s.
Examples¶
import particula as par
par.particles.particle_settling_velocity_via_system_state(
particle_radius=1e-6,
particle_density=1200,
temperature=298.15,
pressure=101325
)
# Output: ...
References¶
- Gas viscosity property estimation: https://en.wikipedia.org/wiki/Viscosity#Gases
- Slip correction and Knudsen number relations from: Seinfeld, J. H., & Pandis, S. N. (2016). Atmospheric Chemistry and Physics. Wiley-Interscience.
Signature¶
def get_particle_settling_velocity_via_system_state(
particle_radius: Union[float, NDArray[np.float64]],
particle_density: Union[float, NDArray[np.float64]],
temperature: float,
pressure: float,
) -> Union[float, NDArray[np.float64]]: ...
get_particle_settling_velocity_with_drag¶
Show source in settling_velocity.py:253
Calculate the particle's terminal settling velocity with a full drag model.
For low Reynolds numbers (Re < re_threshold), the Stokes settling velocity (with slip correction) is used:
- vₛ(Stokes) = (2/9) × [r² × (ρₚ − ρ_f) × g × C_c] / μ
For higher Reynolds numbers, a force-balance approach is solved numerically, using a variable drag coefficient (c_d).
- vₛ = fminbound(mismatch, 0, v_upper)
- mismatch = (v_pred - v)²
- v_pred = sqrt((8 × r × (ρₚ - ρ_f) × g) / (3 × ρ_f × c_d))
Arguments¶
- particle_radius : Particle radius (m).
- particle_density : Particle density (kg/m³).
- fluid_density : Fluid density (kg/m³).
- dynamic_viscosity : Fluid dynamic viscosity (Pa·s).
- slip_correction_factor : Slip correction factor, dimensionless.
- gravitational_acceleration : Gravitational acceleration (m/s²), default is 9.80665.
- re_threshold : Reynolds number threshold (dimensionless), default is 0.1.
- tol : Numeric tolerance for solver (dimensionless), default is 1e-6.
- max_iter : Maximum function evaluations in numeric solver, default is 100.
Returns¶
- Terminal settling velocity (m/s). Scalar or NDArray.
Examples¶
import numpy as np
import particula as par
r_array = np.array([1e-6, 5e-5, 2e-4])
rho_array = np.array([1500, 2000, 1850])
par.particles.get_particle_settling_velocity_with_drag(
particle_radius=r_array,
particle_density=rho_array,
fluid_density=1.225,
dynamic_viscosity=1.8e-5,
slip_correction_factor=np.array([1.0, 0.95, 1.1])
)
# Output: array([...])
References¶
- "Drag Coefficient," Wikipedia, https://en.wikipedia.org/wiki/Drag_coefficient
- Seinfeld, J. H., & Pandis, S. N. (2016). Atmospheric Chemistry and Physics, 3rd ed., John Wiley & Sons.
Signature¶
@validate_inputs(
{
"particle_radius": "positive",
"particle_density": "positive",
"fluid_density": "positive",
"dynamic_viscosity": "nonnegative",
}
)
def get_particle_settling_velocity_with_drag(
particle_radius: Union[float, NDArray[np.float64]],
particle_density: Union[float, NDArray[np.float64]],
fluid_density: float,
dynamic_viscosity: float,
slip_correction_factor: Union[float, NDArray[np.float64]],
gravitational_acceleration: float = STANDARD_GRAVITY,
re_threshold: float = 0.1,
tol: float = 1e-06,
max_iter: int = 100,
) -> Union[float, NDArray[np.float64]]: ...