docs: def drag_sphere(Re, Method=None, AvailableMethods=False):
      r'''This function handles calculation of drag coefficient on spheres.
      Twenty methods are available, all requiring only the Reynolds number of the
      sphere. Most methods are valid from Re=0 to Re=200,000. A correlation will
      be automatically selected if none is specified. The full list of correlations
      valid for a given Reynolds number can be obtained with the `AvailableMethods`
      flag.
  
      If no correlation is selected, the following rules are used:
  
          * If Re < 0.01, use Stoke's solution.
          * If 0.01 <= Re < 0.1, linearly combine 'Barati' with Stokes's solution
            such that at Re = 0.1 the solution is 'Barati', and at Re = 0.01 the
            solution is 'Stokes'.
          * If 0.1 <= Re <= ~212963, use the 'Barati' solution.
          * If ~212963 < Re <= 1E6, use the 'Barati_high' solution.
          * For Re > 1E6, raises an exception; no valid results have been found.
  
      Examples
      --------
      >>> drag_sphere(200)
      0.7682237950389874
  
      Parameters
      ----------
      Re : float
          Particle Reynolds number of the sphere using the surrounding fluid
          density and viscosity, [-]
  
      Returns
      -------
      Cd : float
          Drag coefficient [-]
      methods : list, only returned if AvailableMethods == True
          List of methods which can be used to calculate `Cd` with the given `Re`
  
      Other Parameters
      ----------------
      Method : string, optional
          A string of the function name to use, as in the dictionary
          drag_sphere_correlations
      AvailableMethods : bool, optional
          If True, function will consider which methods which can be used to
          calculate `Cd` with the given `Re`
      '''
      def list_methods():
          methods = []
          for key, (func, Re_min, Re_max) in drag_sphere_correlations.items():
              if (Re_min is None or Re > Re_min) and (Re_max is None or Re < Re_max):
                  methods.append(key)
          return methods
      if AvailableMethods:
          return list_methods()
      if not Method:
          if Re > 0.1:
              # Smooth transition point between the two models
              if Re <= 212963.26847812787:
                  return Barati(Re)
              elif Re <= 1E6:
                  return Barati_high(Re)
              else:
                  raise ValueError('No models implement a solution for Re > 1E6')
          elif Re >= 0.01:
              # Re from 0.01 to 0.1
              ratio = (Re - 0.01)/(0.1 - 0.01)
              # Ensure a smooth transition by linearly switching to Stokes' law
              return ratio*Barati(Re) + (1-ratio)*Stokes(Re)
          else:
              return Stokes(Re)
  
      if Method in drag_sphere_correlations:
          return drag_sphere_correlations[Method][0](Re)
      else:
          raise Exception('Failure in in function')