Skip to content

particula.activity.convert_functional_group

convert_functional_group

OH equivalent for the oxygen to carbon ratio and molar mass ratio.

Gorkowski, K., Preston, T. C., & Zuend, A. (2019). Relative-humidity-dependent organic aerosol thermodynamics Via an efficient reduced-complexity model. Atmospheric Chemistry and Physics https://doi.org/10.5194/acp-19-13383-2019

convert_to_oh_equivalent

convert_to_oh_equivalent(oxygen2carbon: FloatArray, molar_mass_ratio: FloatArray, functional_group: Optional[Union[str, Sequence[str]]] = None) -> Tuple[FloatArray, FloatArray]

Convert oxygen and molar mass ratios for BAT functional groups.

Parameters:

  • oxygen2carbon (FloatArray) –

    The oxygen to carbon ratio.

  • molar_mass_ratio (FloatArray) –

    The molar mass ratio of water to organic matter.

  • functional_group (Optional[Union[str, Sequence[str]]], default: None ) –

    Optional functional group requiring adjustments. Supported values are None, "alcohol", "ether", and "carboxylic_acid".

Returns:

  • FloatArray

    Tuple containing the converted oxygen2carbon and molar_mass_ratio.

  • FloatArray

    Scalar inputs return scalars, array inputs return np.ndarray.

Raises:

  • ValueError

    If functional_group is not one of the supported values.

Examples:

>>> from particula.activity.convert_functional_group import (
...     convert_to_oh_equivalent,
... )
>>> convert_to_oh_equivalent(
...     oxygen2carbon=0.3,
...     molar_mass_ratio=0.1,
...     functional_group="carboxylic_acid",
... )
(2.3, 45.1)
Source code in particula/activity/convert_functional_group.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
def convert_to_oh_equivalent(
    oxygen2carbon: FloatArray,
    molar_mass_ratio: FloatArray,
    functional_group: Optional[Union[str, Sequence[str]]] = None,
) -> Tuple[FloatArray, FloatArray]:
    """Convert oxygen and molar mass ratios for BAT functional groups.

    Args:
        oxygen2carbon: The oxygen to carbon ratio.
        molar_mass_ratio: The molar mass ratio of water to organic matter.
        functional_group: Optional functional group requiring adjustments.
            Supported values are ``None``, ``"alcohol"``, ``"ether"``, and
            ``"carboxylic_acid"``.

    Returns:
        Tuple containing the converted oxygen2carbon and molar_mass_ratio.
        Scalar inputs return scalars, array inputs return ``np.ndarray``.

    Raises:
        ValueError: If ``functional_group`` is not one of the supported values.

    Examples:
        >>> from particula.activity.convert_functional_group import (
        ...     convert_to_oh_equivalent,
        ... )
        >>> convert_to_oh_equivalent(
        ...     oxygen2carbon=0.3,
        ...     molar_mass_ratio=0.1,
        ...     functional_group="carboxylic_acid",
        ... )
        (2.3, 45.1)
    """
    normalized_group = _normalize_functional_group(functional_group)
    if normalized_group is None:
        return oxygen2carbon, molar_mass_ratio

    adjustments = _FUNCTIONAL_GROUP_ADJUSTMENTS.get(normalized_group)
    if adjustments is None:
        supported_values = ", ".join(
            "None" if value is None else f'"{value}"'
            for value in SUPPORTED_FUNCTIONAL_GROUPS
        )
        raise ValueError(
            f"BAT functional group must be one of: {supported_values}."
        )

    delta_oxygen, delta_mass = adjustments
    return oxygen2carbon + delta_oxygen, molar_mass_ratio + delta_mass