def buildup_function(p, E_max, p_half):
    """Calculate asymptotic buildup curve

    Args:
        p (array): power series
        E_max (float): maximum enhancement
        p_half (float): power at half saturation

    Returns:
        ndarray: buildup curve

    .. math::
        f(p) = 1 + E_{max} * p / (p_{1/2} + p)
    """

    return 1 + E_max * p / (p_half + p)