docs: def Gorenflo(P, Pc, q=None, Te=None, CASRN=None, h0=None, Ra=4E-7):
      r'''Calculates heat transfer coefficient for a pool boiling according to 
      [1]_ and also presented in [2]_. Calculation is based on the corresponding
      states law, with a single regression constant per fluid. P and Pc are 
      always required.
      
      Either `q` or `Te` may be specified. Either `CASRN` or `h0` may be 
      specified as well. If `CASRN` is specified and the fluid is not in the
      list of those studied, an error is raises.
  
      .. math::
          \frac{h}{h_0} = C_W F(p^*) \left(\frac{q}{q_0}\right)^n
          
          C_W = \left(\frac{R_a}{R_{ao}}\right)^{0.133}
  
          q_0 = 20 \;000 \frac{\text{W}}{\text{m}^{2}}
          
          R_{ao} = 0.4 \mu\text{m}
          
      For fluids other than water:
      
      .. math::
          n = 0.9 - 0.3 p^{*0.3}
          
          f(p^*) = 1.2p^{*0.27} + \left(2.5 + \frac{1}{1-p^*}\right)p^*
      
      For water:
      
      .. math::
          n = 0.9 - 0.3 p^{*0.15}
          
          f(p^*) = 1.73p^{*0.27} + \left(6.1 + \frac{0.68}{1-p^*}\right)p^2
  
      Parameters
      ----------
      P : float
          Saturation pressure of fluid, [Pa]
      Pc : float
          Critical pressure of fluid, [Pa]
      q : float, optional
          Heat flux, [W/m^2]
      Te : float, optional
          Excess wall temperature, [K]
      CASRN : str, optional
          CASRN of fluid
      h0 : float
          Reference heat transfer coefficient, [W/m^2/K]
      Ra : float, optional
          Roughness parameter of the surface (0.4 micrometer default), [m]
  
      Returns
      -------
      h : float
          Heat transfer coefficient [W/m^2/K]
  
      Notes
      -----
      A more recent set of reference heat fluxes is available. Where a range of
      values was listed for reference heat fluxes in [1]_, values from the
      second edition of [1]_ were used instead. 44 values are available, all
      listed in the dictionary `h0_Gorenflow_1993`. Values range from 2000
      to 24000 W/m^2/K.
  
      Examples
      --------
      Water boiling at 3 bar and a heat flux of 2E4 W/m^2/K.
  
      >>> Gorenflo(3E5, 22048320., q=2E4, CASRN='7732-18-5')
      3043.344595525422
  
      References
      ----------
      .. [1] Schlunder, Ernst U, VDI. VDI Heat Atlas. Dusseldorf: V.D.I. Verlag, 
         1993. http://digital.ub.uni-paderborn.de/hs/download/pdf/41898?originalFilename=true
      .. [2] Bertsch, Stefan S., Eckhard A. Groll, and Suresh V. Garimella. 
         "Review and Comparative Analysis of Studies on Saturated Flow Boiling in
         Small Channels." Nanoscale and Microscale Thermophysical Engineering 12,
         no. 3 (September 4, 2008): 187-227. doi:10.1080/15567260802317357.
      '''
      Pr = P/Pc
      Ra0 = 0.4E-6
      q0 = 2E4
      if CASRN not in h0_Gorenflow_1993 and h0 is None:
          raise Exception('Reference heat transfer coefficient not known')
      if not h0:
          h0 = h0_Gorenflow_1993[CASRN]
      if CASRN != '7732-18-5':
          # Case for not dealing with water
          n = 0.9 - 0.3*Pr**0.3
          Fp = 1.2*Pr**0.27 + (2.5 + 1/(1-Pr))*Pr
      else:
          # Case for water
          n = 0.9 - 0.3*Pr**0.15
          Fp = 1.73*Pr**0.27 + (6.1 + 0.68/(1-Pr))*Pr**2
      CW = (Ra/Ra0)**0.133
      if q:
          return h0*CW*Fp*(q/q0)**n
      elif Te:
          A = h0*CW*Fp*(Te/q0)**n
          return A**(-1./(n - 1.))
      else:
          raise Exception('Either q or Te is needed for this correlation')