docs: def nu_mu_converter(rho, mu=None, nu=None):
      r'''Calculates either kinematic or dynamic viscosity, depending on inputs.
      Used when one type of viscosity is known as well as density, to obtain
      the other type. Raises an error if both types of viscosity or neither type
      of viscosity is provided.
  
      .. math::
          \nu = \frac{\mu}{\rho}
  
      .. math::
          \mu = \nu\rho
  
      Parameters
      ----------
      rho : float
          Density, [kg/m^3]
      mu : float, optional
          Dynamic viscosity, [Pa*s]
      nu : float, optional
          Kinematic viscosity, [m^2/s]
  
      Returns
      -------
      mu or nu : float
          Dynamic viscosity, Pa*s or Kinematic viscosity, m^2/s
  
      Examples
      --------
      >>> nu_mu_converter(998., nu=1.0E-6)
      0.000998
  
      References
      ----------
      .. [1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and
         Applications. Boston: McGraw Hill Higher Education, 2006.
      '''
      if (nu and mu) or not rho or (not nu and not mu):
          raise Exception('Inputs must be rho and one of mu and nu.')
      if mu:
          return mu/rho
      elif nu:
          return nu*rho