docs: def Nu_horizontal_cylinder(Pr, Gr, Method=None, AvailableMethods=False):
      r'''This function handles choosing which horizontal cylinder free convection
      correlation is used. Generally this is used by a helper class, but can be
      used directly. Will automatically select the correlation to use if none is
      provided; returns None if insufficient information is provided.
  
      Prefered functions are 'Morgan' when discontinuous results are acceptable
      and 'Churchill-Chu' otherwise.
  
      Parameters
      ----------
      Pr : float
          Prandtl number [-]
      Gr : float
          Grashof number [-]
  
      Returns
      -------
      Nu : float
          Nusselt number, [-]
      methods : list, only returned if AvailableMethods == True
          List of methods which can be used to calculate Nu with the given inputs
  
      Other Parameters
      ----------------
      Method : string, optional
          A string of the function name to use, as in the dictionary
          horizontal_cylinder_correlations
      AvailableMethods : bool, optional
          If True, function will consider which methods which can be used to
          calculate Nu with the given inputs
  
      Examples
      --------
      >>> Nu_horizontal_cylinder(0.72, 1E7)
      24.864192615468973
      '''
      def list_methods():
          methods = []
          for key, values in horizontal_cylinder_correlations.items():
                  methods.append(key)
          if 'Morgan' in methods:
              methods.remove('Morgan')
              methods.insert(0, 'Morgan')
          return methods
  
      if AvailableMethods:
          return list_methods()
      if not Method:
          Method = list_methods()[0]
  
      if Method in horizontal_cylinder_correlations:
          return horizontal_cylinder_correlations[Method](Pr=Pr, Gr=Gr)
      else:
          raise Exception("Correlation name not recognized; see the "
                          "documentation for the available options.")