docs: def shell_clearance(DBundle=None, DShell=None):
      r'''Looks up the recommended clearance between a shell and tube bundle in 
      a TEMA HX [1]. Either the bundle diameter or the shell diameter are needed 
      provided.
  
      Parameters
      ----------
      DBundle : float, optional
          Outer diameter of tube bundle, [m]
      DShell : float, optional
          Shell inner diameter, [m]
  
      Returns
      -------
      c : float
          Shell-tube bundle clearance, [m]
  
      Notes
      -----
      Lower limits are extended up to the next limit where intermediate limits
      are not provided. 
      
      Examples
      --------
      >>> shell_clearance(DBundle=1.245)
      0.0064
  
      References
      ----------
      .. [1] Standards of the Tubular Exchanger Manufacturers Association,
         Ninth edition, 2007, TEMA, New York.
      '''
      DShell_data = [(0.457, 0.0032), (1.016, 0.0048), (1.397, 0.0064),
                     (1.778, 0.0079), (2.159, 0.0095)]
      DBundle_data = [(0.457 - 0.0048, 0.0032), (1.016 - 0.0064, 0.0048),
                      (1.397 - 0.0079, 0.0064), (1.778 - 0.0095, 0.0079),
                      (2.159 - 0.011, 0.0095)]
      if DShell:
          for DShell_tabulated, c in DShell_data:
              if DShell < DShell_tabulated:
                  return c
          return 0.011
      elif DBundle:
          for DBundle_tabulated, c in DBundle_data:
              if DBundle < DBundle_tabulated:
                  return c
          return 0.011
      else:
          raise Exception('Either DShell or DBundle must be specified')