docs: def Graetz_heat(V, D, x, rho=None, Cp=None, k=None, alpha=None):
      r'''Calculates Graetz number or `Gz` for a specified velocity
      `V`, diameter `D`, axial distance `x`, and specified properties for the
      given fluid.
  
      .. math::
          Gz = \frac{VD^2\cdot C_p \rho}{x\cdot k} = \frac{VD^2}{x \alpha}
  
      Inputs either of any of the following sets:
  
      * V, D, x, density `rho`, heat capacity `Cp`, and thermal conductivity `k`
      * V, D, x, and thermal diffusivity `alpha`
  
      Parameters
      ----------
      V : float
          Velocity, [m/s]
      D : float
          Diameter [m]
      x : float
          Axial distance [m]
      rho : float, optional
          Density, [kg/m^3]
      Cp : float, optional
          Heat capacity, [J/kg/K]
      k : float, optional
          Thermal conductivity, [W/m/K]
      alpha : float, optional
          Thermal diffusivity, [m^2/s]
  
      Returns
      -------
      Gz : float
          Graetz number []
  
      Notes
      -----
      .. math::
          Gz = \frac{\text{Time for radial heat diffusion in a fluid by conduction}}
          {\text{Time taken by fluid to reach distance x}}
  
      .. math::
          Gz = \frac{D}{x}RePr
  
      An error is raised if none of the required input sets are provided.
  
      Examples
      --------
      >>> Graetz_heat(1.5, 0.25, 5, 800., 2200., 0.6)
      55000.0
      >>> Graetz_heat(1.5, 0.25, 5, alpha=1E-7)
      187500.0
  
      References
      ----------
      .. [1] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and
         David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ:
         Wiley, 2011.
      '''
      if rho and Cp and k:
          alpha =  k/(rho*Cp)
      elif not alpha:
          raise Exception('Either heat capacity and thermal conductivity and\
          density, or thermal diffusivity is needed')
      return V*D**2/(x*alpha)