def umf_ergun(dp, ep, mu, phi, rhog, rhos):
    """
    Determine minimum fluidization velocity from particle and gas properties.
    This approach is based on the Ergun pressure drop equation for a bed of
    particles. Refer to Equations 18 and 19 in Chapter 3 of Kunii and Levenspiel
    [2]_,

    Parameters
    ----------
    dp : float
        Diameter of bed particle [m]
    ep : float
        Void fraction of the bed [-]
    mu : float
        Viscosity of gas [kg/ms]
    phi : float
        Sphericity of bed particle [-]
    rhog : float
        Density of gas [kg/m³]
    rhos : float
        Density of bed particle [kg/m³]

    Returns
    -------
    umf : float
        Minimum fluidization velocity [m/s]

    Example
    -------
    >>> umf_ergun(0.0005, 0.46, 3.6e-5, 0.86, 0.44, 2500)
    0.1488

    References
    ----------
    .. [2] Daizo Kunii and Octave Levenspiel. Fluidization Engineering.
       Butterworth-Heinemann, 2nd edition, 1991.
    """
    g = 9.81
    K1 = 1.75 / (ep ** 3 * phi)
    K2 = 150 * (1 - ep) / (ep ** 3 * phi ** 2)
    a = K2 / (2 * K1)
    b = 1 / K1
    Ar = dp ** 3 * rhog * (rhos - rhog) * g / mu ** 2
    Re = (a ** 2 + b * Ar) ** 0.5 - a
    umf = Re * mu / (rhog * dp)
    return umf
