def calculate_mixing_param_constants(asm_obj):
    """Calculate the constants Cs and Cm required for the
    determination of the Cheng-Todreas mixing parameters

    Parameters
    ----------
    asm_obj : DASSH Assembly object
        Contains the geometry and flow parameters

    Returns
    -------
    tuple
        tuple of two dicts, each containing the laminar and turbulent
        constants for the calculation of eddy diffusivity and the swirl
        velocity for the assembly

    Notes
    -----
    Implemented as a separate method so that it can be tested against
    the results in Tables 1 and 2 of the Cheng-Todreas 1986 paper.

    """
    try:
        c_over_d = (asm_obj.d['pin-pin'] / asm_obj.pin_diameter)**-0.5
    except ZeroDivisionError:  # single pin, d['pin-pin'] = 0
        c_over_d = 0.0

    h_over_d = (asm_obj.wire_pitch / asm_obj.pin_diameter)**0.3
    cm = {}
    cs = {}
    if asm_obj.n_pin >= 19:
        # Laminar
        cm['laminar'] = 0.077 * c_over_d
        cs['laminar'] = 0.413 * h_over_d
        # Turbulent
        cm['turbulent'] = 0.14 * c_over_d
        cs['turbulent'] = 0.75 * h_over_d
    else:
        # Laminar
        cm['laminar'] = 0.055 * c_over_d
        cs['laminar'] = 0.33 * h_over_d
        # Turbulent
        cm['turbulent'] = 0.1 * c_over_d
        cs['turbulent'] = 0.6 * h_over_d

    return cm, cs