docs: def Hooper2K(Di, Re, name=None, K1=None, Kinfty=None):
      r'''Returns loss coefficient for any various fittings, depending
      on the name input. Alternatively, the Hooper constants K1, Kinfty
      may be provided and used instead. Source of data is [1]_.
      Reviews of this model are favorable less favorable than the Darby method
      but superior to the constant-K method.
  
      .. math::
          K = \frac{K_1}{Re} + K_\infty\left(1 + \frac{1\text{ inch}}{D_{in}}\right)
  
      Note this model uses actual inside pipe diameter in inches.
  
      Parameters
      ----------
      Di : float
          Actual inside diameter of the pipe, [in]
      Re : float
          Reynolds number, [-]
      name : str, optional
          String from Hooper dict representing a fitting
      K1 : float, optional
          K1 parameter of Hooper model, optional [-]
      Kinfty : float, optional
          Kinfty parameter of Hooper model, optional [-]
  
      Returns
      -------
      K : float
          Loss coefficient [-]
  
      Notes
      -----
      Also described in Ludwig's Applied Process Design.
      Relatively uncommon to see it used.
      No actual example found.
  
      Examples
      --------
      >>> Hooper2K(Di=2., Re=10000., name='Valve, Globe, Standard')
      6.15
      >>> Hooper2K(Di=2., Re=10000., K1=900, Kinfty=4)
      6.09
  
      References
      ----------
      .. [1] Hooper, W. B., "The 2-K Method Predicts Head Losses in Pipe
         Fittings," Chem. Eng., p. 97, Aug. 24 (1981).
      .. [2] Hooper, William B. "Calculate Head Loss Caused by Change in Pipe
         Size." Chemical Engineering 95, no. 16 (November 7, 1988): 89.
      .. [3] Kayode Coker. Ludwig's Applied Process Design for Chemical and
         Petrochemical Plants. 4E. Amsterdam ; Boston: Gulf Professional
         Publishing, 2007.
      '''
      if name:
          if name in Hooper:
              d = Hooper[name]
              K1, Kinfty = d['K1'], d['Kinfty']
          else:
              raise Exception('Name of fitting not in list')
      elif K1 and Kinfty:
          pass
      else:
          raise Exception('Name of fitting or constants are required')
      return K1/Re + Kinfty*(1. + 1./Di)