A convex programming approach for ridesharing user equilibrium under fixed driver/rider demand. (July 2021)