def Nu_horizontal_plate_VDI(Pr, Gr, buoyancy=True):
    """Calculates the Nusselt number for natural convection above a horizontal
    plate according to the VDI [1]_ correlations. The plate must be
    isothermal. Three different equations are used, one each for laminar and
    turbulent for the heat transfer happening at upper surface case and one for
    the case of heat transfer happening at the lower surface. The lower surface
    correlation is recommened for the laminar flow regime.
    The two different sets of correlations are required because if the plate
    is hot, buoyancy lifts the fluid off the plate and enhances free convection
    whereas if the plate is cold, the cold fluid above it settles on it and
    decreases the free convection.

    Parameters
    ----------
    Pr : float
        Prandtl number with respect to fluid properties [-]
    Gr : float
        Grashof number with respect to fluid properties and plate - fluid
        temperature difference [-]
    buoyancy : bool, optional
        Whether or not the plate's free convection is buoyancy assisted (hot 
        plate) or not, [-]

    Returns
    -------
    Nu : float
        Nusselt number with respect to length, [-]

    Notes
    -----
    The characteristic length suggested for use is as follows, with `a` and
    `b` being the length and width of the plate.
        
    .. math::
        L = \\frac{ab}{2(a+b)}
        
    The buoyancy enhanced cases are from [2]_; the other is said to be from 
    [3]_, although the equations there not quite the same and do not include
    the Prandtl number correction.

    Examples
    --------
    >>> Nu_horizontal_plate_VDI(5.54, 3.21e8, buoyancy=True)
    203.89681224927565
    >>> Nu_horizontal_plate_VDI(5.54, 3.21e8, buoyancy=False)
    39.16864971535617
    
    References
    ----------
    .. [1] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd ed. 2010 edition.
       Berlin ; New York: Springer, 2010.   
    .. [2] Stewartson, Keith. "On the Free Convection from a Horizontal Plate."
       Zeitschrift Für Angewandte Mathematik Und Physik ZAMP 9, no. 3 
       (September 1, 1958): 276-82. https://doi.org/10.1007/BF02033031.
    .. [3] Schlunder, Ernst U, and International Center for Heat and Mass
       Transfer. Heat Exchanger Design Handbook. Washington:
       Hemisphere Pub. Corp., 1987.
    """
    Ra = Pr * Gr
    if buoyancy:
        f2 = (1.0 + (0.322 / Pr) ** 0.55) ** (20.0 / 11.0)
        if Ra * f2 < 70000.0:
            return 0.766 * (Ra * f2) ** 0.2
        else:
            return 0.15 * (Ra * f2) ** (1.0 / 3.0)
    else:
        f1 = (1.0 + (0.492 / Pr) ** (9.0 / 16.0)) ** (-16.0 / 9.0)
        return 0.6 * (Ra * f1) ** 0.2
