def bowers(v, obp, u, start_idx, a, b, vmax, end_idx=None):
    """
    Compute pressure using Bowers equation.

    Parameters
    ----------
    v : 1-d ndarray
        velocity array whose unit is m/s.
    obp : 1-d ndarray
        Overburden pressure whose unit is Pa.
    v0 : float, optional
        the velocity of unconsolidated regolith whose unit is m/s.
    a : float, optional
        coefficient a
    b : float, optional
        coefficient b

    Notes
    -----
    .. math:: P = S - \\left[\\frac{(V-V_{0})}{a}\\right]^{\\frac{1}{b}}

    [3]_

    .. [3] Bowers, G. L. (1994). Pore pressure estimation from velocity data:
       accounting from overpressure mechanisms besides undercompaction:
       Proceedings of the IADC/SPE drilling conference, Dallas, 1994,
       (IADC/SPE), 1994, pp 515–530. In International Journal of Rock
       Mechanics and Mining Sciences & Geomechanics Abstracts (Vol. 31,
       p. 276). Pergamon.
    """
    sigma_max = ((vmax-1524)/a)**(1/b)
    ves = ((v - 1524) / a)**(1.0 / b)
    ves_fe = sigma_max*(((v-1524)/a)**(1/b)/sigma_max)**u
    ves[start_idx: end_idx] = ves_fe[start_idx: end_idx]
    return obp - ves