docs: def Grashof(L, beta, T1, T2=0, rho=None, mu=None, nu=None, g=g):
      r'''Calculates Grashof number or `Gr` for a fluid with the given
      properties, temperature difference, and characteristic length.
  
      .. math::
          Gr = \frac{g\beta (T_s-T_\infty)L^3}{\nu^2}
          = \frac{g\beta (T_s-T_\infty)L^3\rho^2}{\mu^2}
  
      Inputs either of any of the following sets:
  
      * L, beta, T1 and T2, and density `rho` and kinematic viscosity `mu`
      * L, beta, T1 and T2, and dynamic viscosity `nu`
  
      Parameters
      ----------
      L : float
          Characteristic length [m]
      beta : float
          Volumetric thermal expansion coefficient [1/K]
      T1 : float
          Temperature 1, usually a film temperature [K]
      T2 : float, optional
          Temperature 2, usually a bulk temperature (or 0 if only a difference
          is provided to the function) [K]
      rho : float, optional
          Density, [kg/m^3]
      mu : float, optional
          Dynamic viscosity, [Pa*s]
      nu : float, optional
          Kinematic viscosity, [m^2/s]
      g : float, optional
          Acceleration due to gravity, [m/s^2]
  
      Returns
      -------
      Gr : float
          Grashof number []
  
      Notes
      -----
      .. math::
          Gr = \frac{\text{Buoyancy forces}}{\text{Viscous forces}}
  
      An error is raised if none of the required input sets are provided.
      Used in free convection problems only.
  
      Examples
      --------
      Example 4 of [1]_, p. 1-21 (matches):
  
      >>> Grashof(L=0.9144, beta=0.000933, T1=178.2, rho=1.1613, mu=1.9E-5)
      4656936556.178915
      >>> Grashof(L=0.9144, beta=0.000933, T1=378.2, T2=200, nu=1.636e-05)
      4657491516.530312
  
      References
      ----------
      .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook,
         Eighth Edition. McGraw-Hill Professional, 2007.
      .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and
         Applications. Boston: McGraw Hill Higher Education, 2006.
      '''
      if rho and mu:
          nu = mu/rho
      elif not nu:
          raise Exception('Either density and viscosity, or dynamic viscosity, \
          is needed')
      return g*beta*abs(T2-T1)*L**3/nu**2