docs: def Reynolds(V, D, rho=None, mu=None, nu=None):
      r'''Calculates Reynolds number or `Re` for a fluid with the given
      properties for the specified velocity and diameter.
  
      .. math::
          Re = \frac{D \cdot V}{\nu} = \frac{\rho V D}{\mu}
  
      Inputs either of any of the following sets:
  
      * V, D, density `rho` and kinematic viscosity `mu`
      * V, D, and dynamic viscosity `nu`
  
      Parameters
      ----------
      V : float
          Velocity [m/s]
      D : float
          Diameter [m]
      rho : float, optional
          Density, [kg/m^3]
      mu : float, optional
          Dynamic viscosity, [Pa*s]
      nu : float, optional
          Kinematic viscosity, [m^2/s]
  
      Returns
      -------
      Re : float
          Reynolds number []
  
      Notes
      -----
      .. math::
          Re = \frac{\text{Momentum}}{\text{Viscosity}}
  
      An error is raised if none of the required input sets are provided.
  
      Examples
      --------
      >>> Reynolds(2.5, 0.25, 1.1613, 1.9E-5)
      38200.65789473684
      >>> Reynolds(2.5, 0.25, nu=1.636e-05)
      38202.93398533008
  
      References
      ----------
      .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook,
         Eighth Edition. McGraw-Hill Professional, 2007.
      .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and
         Applications. Boston: McGraw Hill Higher Education, 2006.
      '''
      if rho and mu:
          nu = mu/rho
      elif not nu:
          raise Exception('Either density and viscosity, or dynamic viscosity, \
          is needed')
      return V*D/nu