docs: def Cooper(P, Pc, MW, Te=None, q=None, Rp=1E-6):
      r'''Calculates heat transfer coefficient for a evaporator operating
      in the nucleate boiling regime according to [2]_ as presented in [1]_.
  
      Either heat flux or excess temperature is required.
  
      With `Te` specified:
  
      .. math::
          h = \left(55\Delta Te^{0.67} \frac{P}{P_c}^{(0.12 - 0.2\log_{10} R_p)}
          (-\log_{10} \frac{P}{P_c})^{-0.55} MW^{-0.5}\right)^{1/0.33}
  
      With `q` specified:
  
      .. math::
          h = 55q^{0.67} \frac{P}{P_c}^{(0.12 - 0.2\log_{10} R_p)}(-\log_{10} 
          \frac{P}{P_c})^{-0.55} MW^{-0.5}
  
      Parameters
      ----------
      P : float
          Saturation pressure of fluid, [Pa]
      Pc : float
          Critical pressure of fluid, [Pa]
      MW : float
          Molecular weight of fluid, [g/mol]
      Te : float, optional
          Excess wall temperature, [K]
      q : float, optional
          Heat flux, [W/m^2]
      Rp : float
          Roughness parameter of the surface (1 micrometer default), [m]
  
      Returns
      -------
      h : float
          Heat transfer coefficient [W/m^2/K]
  
      Notes
      -----
      Examples 1 and 2 are for water and benzene, from [1]_.
      Roughness parameter is with an old definition. Accordingly, it is
      not used by the h function.
      If unchanged, the roughness parameter's logarithm gives a value of 0.12
      as an exponent of reduced pressure.
  
      Examples
      --------
      Water boiling at 1 atm, with excess temperature of 4.3 K from [1]_.
  
      >>> Cooper(P=101325., Pc=22048321.0, MW=18.02, Te=4.3)
      1558.1435442153575
  
      References
      ----------
      .. [1] Rohsenow, Warren and James Hartnett and Young Cho. Handbook of Heat
         Transfer, 3E. New York: McGraw-Hill, 1998.
      .. [2] M. G. Cooper, "Saturation and Nucleate Pool Boiling: A Simple
         Correlation," Inst. Chem. Eng. Syrup. Ser. (86/2): 785, 1984.
      .. [3] Serth, R. W., Process Heat Transfer: Principles,
         Applications and Rules of Thumb. 2E. Amsterdam: Academic Press, 2014.
      '''
      Rp*= 1E6
      if Te:
          return (55*Te**0.67*(P/Pc)**(0.12 - 0.2*log10(Rp))*(
               -log10(P/Pc))**-0.55*MW**-0.5)**(1/0.33)
      elif q:
          return (55*q**0.67*(P/Pc)**(0.12 - 0.2*log10(Rp))*(
               -log10(P/Pc))**-0.55*MW**-0.5)
      else:
          raise Exception('Either q or Te is needed for this correlation')