flowtube.kinetics

Kinetics calculations for flow tube experiments.

Citations:

Knopf, D.A., Pöschl, U., Shiraiwa, M., 2015. Radial Diffusion and Penetration of Gas Molecules and Aerosol Particles through Laminar Flow Reactors, Denuders, and Sampling Tubes. Anal. Chem. 87, 3746–3754. https://doi.org/10.1021/ac5042395

Functions

diffusion_limited_rate_constant(→ float)

Calculate diffusion limited rate constant (s-1) - eq. 10 from Knopf

diffusion_limited_uptake_coefficient(→ float)

Calculate diffusion limited effective uptake coefficient - eq. 19

correction_factor_from_gamma(...)

Calculate correction factor (gamma_eff/gamma)for uptake coefficient

correction_factor_from_effective_gamma(...)

Calculate correction factor (gamma_eff/gamma) for uptake coefficient

observed_loss_rate(...)

Calculate observed loss rate (s-1) - eq. 19 from Knopf et al., 2015.

cylinder_loss(...)

Calculate penetration (unitless) - eq. 21 from Knopf et al., 2015.

gamma_from_k(→ float)

Calculate effective uptake coefficient from rate constant.

fit_first_order_kinetics(→ tuple[float, float, float, ...)

Fits the observed loss to a first order kinetic model to extract the

Module Contents

flowtube.kinetics.diffusion_limited_rate_constant(obj: flowtube.flow_calc.full_attrs, N_eff_Shw: float, diameter: float) float[source]

Calculate diffusion limited rate constant (s-1) - eq. 10 from Knopf et al., 2015.

Parameters:
  • obj (full_attrs) – Object with full attributes (P in Pa, T in K, reactant_diffusion_rate in cm2 s-1, carrier_dynamic_viscosity in kg m-1 s-1, carrier_density in kg m-3).

  • N_eff_Shw (float) – Effective Sherwood number.

  • diameter (float) – Diameter of the cylinder (cm).

Returns:

Diffusion limited rate constant (s-1).

Return type:

float

flowtube.kinetics.diffusion_limited_uptake_coefficient(obj: flowtube.flow_calc.full_attrs, diameter: float, k_diff: float) float[source]

Calculate diffusion limited effective uptake coefficient - eq. 19 from Knopf et al., 2015.

Parameters:
  • obj (full_attrs) – Object with full attributes (P in Pa, T in K, reactant_diffusion_rate in cm2 s-1, carrier_dynamic_viscosity in kg m-1 s-1, carrier_density in kg m-3).

  • diameter (float) – Diameter of the cylinder (cm).

  • k_diff (float) – Diffusion limited rate constant (s-1).

Returns:

Diffusion limited effective uptake coefficient (cm s-1).

Return type:

float

flowtube.kinetics.correction_factor_from_gamma(N_eff_Shw: float, Kn: float, gamma: numpy.typing.NDArray[numpy.float64] | float) numpy.typing.NDArray[numpy.float64] | float[source]

Calculate correction factor (gamma_eff/gamma)for uptake coefficient - eq. 15 from Knopf et al., 2015.

Parameters:
  • N_eff_Shw (float) – Effective Sherwood number (unitless).

  • Kn (float) – Knudsen number (unitless).

  • hypothetical_gamma (float) – Hypothetical uptake coefficient (unitless).

Returns:

Correction factor (unitless).

Return type:

float

flowtube.kinetics.correction_factor_from_effective_gamma(N_eff_Shw: float, Kn: float, effective_gamma: numpy.typing.NDArray[numpy.float64] | float) numpy.typing.NDArray[numpy.float64] | float[source]

Calculate correction factor (gamma_eff/gamma) for uptake coefficient - eq. 20 from Knopf et al., 2015.

Parameters:
  • N_eff_Shw (float) – Effective Sherwood number (unitless).

  • Kn (float) – Knudsen number (unitless).

  • effective_gamma (float) – Effective uptake coefficient (unitless).

Returns:

Correction factor (unitless).

Return type:

float

flowtube.kinetics.observed_loss_rate(obj: flowtube.flow_calc.full_attrs, diameter: float, gamma_eff: numpy.typing.NDArray[numpy.float64] | float) numpy.typing.NDArray[numpy.float64] | float[source]

Calculate observed loss rate (s-1) - eq. 19 from Knopf et al., 2015.

Parameters:
  • obj (full_attrs) – Object with full attributes (P in Pa, T in K, reactant_diffusion_rate in cm2 s-1, carrier_dynamic_viscosity in kg m-1 s-1, carrier_density in kg m-3).

  • diameter (float) – Diameter of the cylinder (cm).

  • gamma_eff (float) – Effective uptake coefficient (unitless).

Returns:

Observed loss rate (s-1).

Return type:

float

flowtube.kinetics.cylinder_loss(obj: flowtube.flow_calc.full_attrs, diameter: float, N_eff_Shw: float, Kn: float, gamma: numpy.typing.NDArray[numpy.float64] | float, time: float) numpy.typing.NDArray[numpy.float64] | float[source]

Calculate penetration (unitless) - eq. 21 from Knopf et al., 2015.

Parameters:
  • obj (full_attrs) – Object with full attributes (P in Pa, T in K, reactant_diffusion_rate in cm2 s-1, carrier_dynamic_viscosity in kg m-1 s-1, carrier_density in kg m-3).

  • time (float) – Residence time in cylinder (s).

Returns:

Penetration - fraction of initial reactant after passing

through cylinder (unitless).

Return type:

float

flowtube.kinetics.gamma_from_k(obj: flowtube.flow_calc.full_attrs, k: float, diameter: float) float[source]

Calculate effective uptake coefficient from rate constant.

Parameters:
  • obj (full_attrs) – Object with full attributes (P in Pa, T in K, reactant_diffusion_rate in cm2 s-1, carrier_dynamic_viscosity in kg m-1 s-1, carrier_density in kg m-3).

  • k (float) – Rate constant (s-1).

  • diameter (float) – Diameter of the cylinder (cm).

Returns:

Effective uptake coefficient (unitless).

Return type:

float

flowtube.kinetics.fit_first_order_kinetics(obj: flowtube.flow_calc.carrier_attrs, concentrations: numpy.typing.ArrayLike, exposure: numpy.typing.ArrayLike, exposure_units: str) tuple[float, float, float, float, float][source]

Fits the observed loss to a first order kinetic model to extract the uptake coefficient.

Parameters:
  • obj (carrier_attrs) – Object with carrier attributes (flow_velocity in cm s-1 needed). carrier_dynamic_viscosity in kg m-1 s-1, carrier_density in kg m-3).

  • concentrations (ArrayLike) – Array of observed concentrations (unitless).

  • exposure (ArrayLike) – Array of exposures (s or cm).

  • exposure_units (str) – Units of exposure (“s”, “sec”, “second”, “seconds”, “cm”, “centimeter”, “centimeters”).

Returns:

Slope of the linear regression. float: Intercept of the linear regression. float: R-value of the linear regression. float: P-value of the linear regression. float: Standard error of the linear regression.

Return type:

float