docs: def Ntubes_Perrys(DBundle, Do, Ntp, angle=30):
      r'''A rough equation presented in Perry's Handbook [1]_ for estimating
      the number of tubes in a tube bundle of differing geometries and tube
      sizes. Claimed accuracy of 24 tubes.
  
      Parameters
      ----------
      DBundle : float
          Outer diameter of tube bundle, [m]
      Do : int
          Tube outer diameter, [m]
      Ntp : float
          Number of tube passes, [-]
      angle : float
          The angle the tubes are positioned; 30, 45, 60 or 90, [degrees]
  
      Returns
      -------
      Nt : int
          Number of tubes, [-]
  
      Notes
      -----
      Perry's equation 11-74.
      Pitch equal to 1.25 times the tube outside diameter
      No other source for this equation is given.
      Experience suggests this is accurate to 40 tubes, but is often around 20 
      tubes off.
  
      Examples
      --------
      >>> Ntubes_Perrys(DBundle=1.184, Do=.028, Ntp=2, angle=45)
      803
      
      References
      ----------
      .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook,
         Eighth Edition. New York: McGraw-Hill Education, 2007.
      '''
      if angle == 30 or angle == 60:
          C = 0.75*DBundle/Do - 36.
          if Ntp == 1:
              Nt = 1298. + 74.86*C + 1.283*C**2 - .0078*C**3 - .0006*C**4
          elif Ntp == 2:
              Nt = 1266. + 73.58*C + 1.234*C**2 - .0071*C**3 - .0005*C**4
          elif Ntp == 4:
              Nt = 1196. + 70.79*C + 1.180*C**2 - .0059*C**3 - .0004*C**4
          elif Ntp == 6:
              Nt = 1166. + 70.72*C + 1.269*C**2 - .0074*C**3 - .0006*C**4
          else:
              raise Exception('N passes not 1, 2, 4 or 6')
      elif angle == 45 or angle == 90:
          C = DBundle/Do - 36.
          if Ntp == 1:
              Nt = 593.6 + 33.52*C + .3782*C**2 - .0012*C**3 + .0001*C**4
          elif Ntp == 2:
              Nt = 578.8 + 33.36*C + .3847*C**2 - .0013*C**3 + .0001*C**4
          elif Ntp == 4:
              Nt = 562.0 + 33.04*C + .3661*C**2 - .0016*C**3 + .0002*C**4
          elif Ntp == 6:
              Nt = 550.4 + 32.49*C + .3873*C**2 - .0013*C**3 + .0001*C**4
          else:
              raise Exception('N passes not 1, 2, 4 or 6')
      return int(Nt)