def DBundle_for_Ntubes_HEDH(N, Do, pitch, angle=30):
    """A rough equation presented in the HEDH for estimating the tube bundle
    diameter necessary to fit a given number of tubes. 
    No accuracy estimation given. Only 1 pass is supported.

    .. math::
        D_{bundle} = (D_o + (\\text{pitch})\\sqrt{\\frac{1}{0.78}}\\cdot
        \\sqrt{C_1\\cdot N})


    C1 = 0.866 for 30° and 60° layouts, and 1 for 45 and 90° layouts.

    Parameters
    ----------
    N : float
        Number of tubes, [-]
    Do : float
        Tube outer diameter, [m]
    pitch : float
        Pitch; distance between two orthogonal tube centers, [m]
    angle : float
        The angle the tubes are positioned; 30, 45, 60 or 90, [degrees]

    Returns
    -------
    DBundle : float
        Outer diameter of tube bundle, [m]

    Notes
    -----
    Easily reversed from the main formulation.

    Examples
    --------
    >>> DBundle_for_Ntubes_HEDH(N=928, Do=.028, pitch=.036, angle=30)
    1.1839930795640605

    References
    ----------
    .. [1] Schlunder, Ernst U, and International Center for Heat and Mass
       Transfer. Heat Exchanger Design Handbook. Washington:
       Hemisphere Pub. Corp., 1983.
    """
    if angle == 30 or angle == 60:
        C1 = 13 / 15.0
    elif angle == 45 or angle == 90:
        C1 = 1.0
    else:
        raise Exception('Only 30, 60, 45 and 90 degree layouts are supported')
    return Do + (1.0 / 0.78) ** 0.5 * pitch * (C1 * N) ** 0.5
