示例#1
0
def cp2eff(prop, Cp, J, tip_mach):
    """
    Returns prop efficiency, given power coefficient (Cp), advance ratio
    (J) and the mach number of the blade tip.
    """
    mach_low = max(
        prop.eff_mach_min,
        prop.prop_eff_map[max(min(N.searchsorted(prop.prop_eff_map[:, 0, 0], tip_mach) - 1, prop.z_size - 1), 0), 0, 0],
    )
    if mach_low == prop.eff_mach_max:
        mach_low = prop.prop_eff_map[-2, 0, 0]
    mach_high = min(
        prop.eff_mach_max,
        prop.prop_eff_map[min(N.searchsorted(prop.prop_eff_map[:, 0, 0], tip_mach), prop.z_size - 1), 0, 0],
    )
    if mach_high == prop.eff_mach_min:
        mach_high = prop.prop_eff_map[1, 0, 0]

    J_low = max(
        prop.eff_J_min,
        prop.prop_eff_map[0, 0, max(min(N.searchsorted(prop.prop_eff_map[0, 0, 1:], J), prop.x_size - 2), 1)],
    )
    if J_low == prop.eff_J_max:
        J_low = prop.prop_eff_map[0, 0, -2]
    J_high = min(
        prop.eff_J_max,
        prop.prop_eff_map[0, 0, min(N.searchsorted(prop.prop_eff_map[0, 0, 1:], J), prop.x_size - 2) + 1],
    )
    if J_high == prop.eff_J_min:
        J_high = prop.prop_eff_map[0, 0, 2]
    if J_high == J_low:
        J_high = J_low + 0.1

    Cp_low = max(
        prop.eff_Cp_min,
        prop.prop_eff_map[0, max(min(N.searchsorted(prop.prop_eff_map[0, 1:, 0], Cp), prop.y_size - 1), 1), 0],
    )
    if Cp_low == prop.eff_Cp_max:
        # print 'in CP-low'
        Cp_low = prop.prop_eff_map[0, -2, 0]
    Cp_high = min(
        prop.eff_Cp_max,
        prop.prop_eff_map[0, min(N.searchsorted(prop.prop_eff_map[0, 1:, 0], Cp), prop.y_size - 1) + 1, 0],
    )
    if Cp_high == prop.eff_Cp_min:
        # print 'in CP-high'
        Cp_high = prop.prop_eff_map[0, 2, 0]
    if Cp_high == Cp_low:
        Cp_high = Cp_low + 0.01

    # get eff for mach_low, J_low and Cp_low
    eff_low_low_low = pull_eff_data_point(prop, mach_low, J_low, Cp_low)

    # get eff for mach_low, J_high and Cp_low
    eff_low_high_low = pull_eff_data_point(prop, mach_low, J_high, Cp_low)

    # get eff for mach_low, J_low and Cp_high
    eff_low_low_high = pull_eff_data_point(prop, mach_low, J_low, Cp_high)

    # get eff for mach_low, J_high and Cp_high
    eff_low_high_high = pull_eff_data_point(prop, mach_low, J_high, Cp_high)

    # get eff for mach_high, J_low and Cp_low
    eff_high_low_low = pull_eff_data_point(prop, mach_high, J_low, Cp_low)

    # get eff for mach_high, J_high and Cp_low
    eff_high_high_low = pull_eff_data_point(prop, mach_high, J_high, Cp_low)

    # get eff for mach_high, J_low and Cp_high
    eff_high_low_high = pull_eff_data_point(prop, mach_high, J_low, Cp_high)

    # get eff for mach_high, J_high and Cp_high
    eff_high_high_high = pull_eff_data_point(prop, mach_high, J_high, Cp_high)

    x = [J_low, J_high]
    y = [Cp_low, Cp_high]
    z = [mach_low, mach_high]

    values = [
        [[eff_low_low_low, eff_low_high_low], [eff_low_low_high, eff_low_high_high]],
        [[eff_high_low_low, eff_high_high_low], [eff_high_low_high, eff_high_high_high]],
    ]

    # print '[J_low, J_high]:', x
    # print '[Cp_low, Cp_high]:', y
    # print '[mach_low, mach_high:]', z
    # print '[[[eff_low_low_low, eff_low_high_low], [eff_low_low_high, eff_low_high_high]], [[eff_high_low_low, eff_high_high_low], [eff_high_low_high, eff_high_high_high]]]:', values
    # print 'J:', J
    # print 'Cp:', Cp
    # print 'tip mach:', tip_mach

    eff = I.interpolate3(x, y, z, values, J, Cp, tip_mach)

    return eff
示例#2
0
def cp2ct(prop, Cp, J, tip_mach):
    """
    Returns thrust coefficient, given power coefficient (Cp), advance ratio
    (J) and the mach number of the blade tip.
    """
    mach_low = max(
        prop.Ct_mach_min,
        prop.prop_CT_map[max(min(N.searchsorted(prop.prop_CT_map[:, 0, 0], tip_mach) - 1, prop.z_size - 1), 0), 0, 0],
    )
    if mach_low == prop.Ct_mach_max:
        mach_low = prop.prop_CT_map[-2, 0, 0]
    mach_high = min(
        prop.Ct_mach_max,
        prop.prop_CT_map[min(N.searchsorted(prop.prop_CT_map[:, 0, 0], tip_mach), prop.z_size - 1), 0, 0],
    )
    if mach_high == prop.Ct_mach_min:
        mach_high = prop.prop_CT_map[1, 0, 0]

    J_low = max(
        prop.Ct_J_min,
        prop.prop_CT_map[0, 0, max(min(N.searchsorted(prop.prop_CT_map[0, 0, 1:], J), prop.x_size - 2), 1)],
    )
    if J_low == prop.Ct_J_max:
        J_low = prop.prop_CT_map[0, 0, -2]
    J_high = min(
        prop.Ct_J_max, prop.prop_CT_map[0, 0, min(N.searchsorted(prop.prop_CT_map[0, 0, 1:], J), prop.x_size - 2) + 1]
    )
    if J_high == prop.Ct_J_min:
        J_high = prop.prop_CT_map[0, 0, 2]

    Cp_low = max(
        prop.Ct_Cp_min,
        prop.prop_CT_map[0, max(min(N.searchsorted(prop.prop_CT_map[0, 1:, 0], Cp), prop.y_size - 2), 1), 0],
    )
    if Cp_low == prop.Ct_Cp_max:
        Cp_low = prop.prop_CT_map[0, -2, 0]
    Cp_high = min(
        prop.Ct_Cp_max, prop.prop_CT_map[0, min(N.searchsorted(prop.prop_CT_map[0, 1:, 0], Cp), prop.y_size - 2) + 1, 0]
    )
    if Cp_high == prop.Ct_Cp_min:
        Cp_high = prop.prop_CT_map[0, 2, 0]

    # get Ct for mach_low, J_low and Cp_low
    Ct_low_low_low = pull_Ct_data_point(prop, mach_low, J_low, Cp_low)

    # get Ct for mach_low, J_high and Cp_low
    Ct_low_high_low = pull_Ct_data_point(prop, mach_low, J_high, Cp_low)

    # get Ct for mach_low, J_low and Cp_high
    Ct_low_low_high = pull_Ct_data_point(prop, mach_low, J_low, Cp_high)

    # get Ct for mach_low, J_high and Cp_high
    Ct_low_high_high = pull_Ct_data_point(prop, mach_low, J_high, Cp_high)

    # get Ct for mach_high, J_low and Cp_low
    Ct_high_low_low = pull_Ct_data_point(prop, mach_high, J_low, Cp_low)

    # get Ct for mach_high, J_high and Cp_low
    Ct_high_high_low = pull_Ct_data_point(prop, mach_high, J_high, Cp_low)

    # get Ct for mach_high, J_low and Cp_high
    Ct_high_low_high = pull_Ct_data_point(prop, mach_high, J_low, Cp_high)

    # get Ct for mach_high, J_high and Cp_high
    Ct_high_high_high = pull_Ct_data_point(prop, mach_high, J_high, Cp_high)

    x = [J_low, J_high]
    y = [Cp_low, Cp_high]
    z = [mach_low, mach_high]

    values = [
        [[Ct_low_low_low, Ct_low_high_low], [Ct_low_low_high, Ct_low_high_high]],
        [[Ct_high_low_low, Ct_high_high_low], [Ct_high_low_high, Ct_high_high_high]],
    ]

    Ct = I.interpolate3(x, y, z, values, J, Cp, tip_mach)

    return Ct
示例#3
0
def cp2blade_angle(prop, Cp, J, tip_mach):
    """
    Returns blade angle, given power coefficient (Cp), advance ratio
    (J) and the mach number of the blade tip.
    """
    mach_low = max(
        prop.blade_angle_mach_min,
        prop.blade_angle_map[
            max(min(N.searchsorted(prop.blade_angle_map[:, 0, 0], tip_mach) - 1, prop.z_size - 1), 0), 0, 0
        ],
    )
    if mach_low == prop.blade_angle_mach_max:
        mach_low = prop.blade_angle_map[-2, 0, 0]
    mach_high = min(
        prop.blade_angle_mach_max,
        prop.blade_angle_map[min(N.searchsorted(prop.blade_angle_map[:, 0, 0], tip_mach), prop.z_size - 1), 0, 0],
    )
    if mach_high == prop.blade_angle_mach_min:
        mach_high = prop.blade_angle_map[1, 0, 0]

    J_low = max(
        prop.blade_angle_J_min,
        prop.blade_angle_map[0, 0, max(min(N.searchsorted(prop.blade_angle_map[0, 0, 1:], J), prop.x_size - 2), 1)],
    )
    if J_low == prop.blade_angle_J_max:
        J_low = prop.blade_angle_map[0, 0, -2]
    J_high = min(
        prop.blade_angle_J_max,
        prop.blade_angle_map[0, 0, min(N.searchsorted(prop.blade_angle_map[0, 0, 1:], J), prop.x_size - 2) + 1],
    )
    if J_high == prop.blade_angle_J_min:
        J_high = prop.blade_angle_map[0, 0, 2]

    Cp_low = max(
        prop.blade_angle_Cp_min,
        prop.blade_angle_map[0, max(min(N.searchsorted(prop.blade_angle_map[0, 1:, 0], Cp), prop.y_size - 1), 1), 0],
    )
    if Cp_low == prop.blade_angle_Cp_max:
        # print 'in CP-low'
        Cp_low = prop.blade_angle_map[0, -2, 0]
    Cp_high = min(
        prop.blade_angle_Cp_max,
        prop.blade_angle_map[0, min(N.searchsorted(prop.blade_angle_map[0, 1:, 0], Cp), prop.y_size - 1) + 1, 0],
    )
    if Cp_high == prop.blade_angle_Cp_min:
        # print 'in CP-high'
        Cp_high = prop.blade_angle_map[0, 2, 0]

    # get eff for mach_low, J_low and Cp_low
    blade_angle_low_low_low = pull_blade_angle_data_point(prop, mach_low, J_low, Cp_low)

    # get eff for mach_low, J_high and Cp_low
    blade_angle_low_high_low = pull_blade_angle_data_point(prop, mach_low, J_high, Cp_low)

    # get eff for mach_low, J_low and Cp_high
    blade_angle_low_low_high = pull_blade_angle_data_point(prop, mach_low, J_low, Cp_high)

    # get eff for mach_low, J_high and Cp_high
    blade_angle_low_high_high = pull_blade_angle_data_point(prop, mach_low, J_high, Cp_high)

    # get eff for mach_high, J_low and Cp_low
    blade_angle_high_low_low = pull_blade_angle_data_point(prop, mach_high, J_low, Cp_low)

    # get eff for mach_high, J_high and Cp_low
    blade_angle_high_high_low = pull_blade_angle_data_point(prop, mach_high, J_high, Cp_low)

    # get eff for mach_high, J_low and Cp_high
    blade_angle_high_low_high = pull_blade_angle_data_point(prop, mach_high, J_low, Cp_high)

    # get eff for mach_high, J_high and Cp_high
    blade_angle_high_high_high = pull_blade_angle_data_point(prop, mach_high, J_high, Cp_high)

    x = [J_low, J_high]
    y = [Cp_low, Cp_high]
    z = [mach_low, mach_high]

    values = [
        [[blade_angle_low_low_low, blade_angle_low_high_low], [blade_angle_low_low_high, blade_angle_low_high_high]],
        [
            [blade_angle_high_low_low, blade_angle_high_high_low],
            [blade_angle_high_low_high, blade_angle_high_high_high],
        ],
    ]

    blade_angle = I.interpolate3(x, y, z, values, J, Cp, tip_mach)

    return blade_angle
示例#4
0
def cp2ct(prop, Cp, J, tip_mach):
    """
    Returns thrust coefficient, given power coefficient (Cp), advance ratio
    (J) and the mach number of the blade tip.
    """
    mach_low = max(
        prop.Ct_mach_min, prop.prop_CT_map[max(
            min(
                N.searchsorted(prop.prop_CT_map[:, 0, 0], tip_mach) -
                1, prop.z_size - 1), 0), 0, 0])
    if mach_low == prop.Ct_mach_max:
        mach_low = prop.prop_CT_map[-2, 0, 0]
    mach_high = min(
        prop.Ct_mach_max, prop.prop_CT_map[
            min(N.searchsorted(prop.prop_CT_map[:, 0,
                                                0], tip_mach), prop.z_size -
                1), 0, 0])
    if mach_high == prop.Ct_mach_min:
        mach_high = prop.prop_CT_map[1, 0, 0]

    J_low = max(
        prop.Ct_J_min,
        prop.prop_CT_map[0, 0,
                         max(
                             min(N.searchsorted(prop.prop_CT_map[
                                 0, 0, 1:], J), prop.x_size - 2), 1)])
    if J_low == prop.Ct_J_max:
        J_low = prop.prop_CT_map[0, 0, -2]
    J_high = min(
        prop.Ct_J_max, prop.prop_CT_map[
            0, 0,
            min(N.searchsorted(prop.prop_CT_map[0, 0,
                                                1:], J), prop.x_size - 2) + 1])
    if J_high == prop.Ct_J_min:
        J_high = prop.prop_CT_map[0, 0, 2]

    Cp_low = max(
        prop.Ct_Cp_min, prop.prop_CT_map[
            0,
            max(
                min(N.searchsorted(prop.prop_CT_map[0, 1:,
                                                    0], Cp), prop.y_size -
                    2), 1), 0])
    if Cp_low == prop.Ct_Cp_max:
        Cp_low = prop.prop_CT_map[0, -2, 0]
    Cp_high = min(
        prop.Ct_Cp_max,
        prop.prop_CT_map[0,
                         min(N.searchsorted(prop.prop_CT_map[
                             0, 1:, 0], Cp), prop.y_size - 2) + 1, 0])
    if Cp_high == prop.Ct_Cp_min:
        Cp_high = prop.prop_CT_map[0, 2, 0]

    # get Ct for mach_low, J_low and Cp_low
    Ct_low_low_low = pull_Ct_data_point(prop, mach_low, J_low, Cp_low)

    # get Ct for mach_low, J_high and Cp_low
    Ct_low_high_low = pull_Ct_data_point(prop, mach_low, J_high, Cp_low)

    # get Ct for mach_low, J_low and Cp_high
    Ct_low_low_high = pull_Ct_data_point(prop, mach_low, J_low, Cp_high)

    # get Ct for mach_low, J_high and Cp_high
    Ct_low_high_high = pull_Ct_data_point(prop, mach_low, J_high, Cp_high)

    # get Ct for mach_high, J_low and Cp_low
    Ct_high_low_low = pull_Ct_data_point(prop, mach_high, J_low, Cp_low)

    # get Ct for mach_high, J_high and Cp_low
    Ct_high_high_low = pull_Ct_data_point(prop, mach_high, J_high, Cp_low)

    # get Ct for mach_high, J_low and Cp_high
    Ct_high_low_high = pull_Ct_data_point(prop, mach_high, J_low, Cp_high)

    # get Ct for mach_high, J_high and Cp_high
    Ct_high_high_high = pull_Ct_data_point(prop, mach_high, J_high, Cp_high)

    x = [J_low, J_high]
    y = [Cp_low, Cp_high]
    z = [mach_low, mach_high]

    values = [[[Ct_low_low_low, Ct_low_high_low],
               [Ct_low_low_high, Ct_low_high_high]],
              [[Ct_high_low_low, Ct_high_high_low],
               [Ct_high_low_high, Ct_high_high_high]]]

    Ct = I.interpolate3(x, y, z, values, J, Cp, tip_mach)

    return Ct
示例#5
0
def cp2blade_angle(prop, Cp, J, tip_mach):
    """
    Returns blade angle, given power coefficient (Cp), advance ratio
    (J) and the mach number of the blade tip.
    """
    mach_low = max(
        prop.blade_angle_mach_min, prop.blade_angle_map[max(
            min(
                N.searchsorted(prop.blade_angle_map[:, 0, 0], tip_mach) -
                1, prop.z_size - 1), 0), 0, 0])
    if mach_low == prop.blade_angle_mach_max:
        mach_low = prop.blade_angle_map[-2, 0, 0]
    mach_high = min(
        prop.blade_angle_mach_max, prop.blade_angle_map[
            min(N.searchsorted(prop.blade_angle_map[:, 0, 0], tip_mach
                               ), prop.z_size - 1), 0, 0])
    if mach_high == prop.blade_angle_mach_min:
        mach_high = prop.blade_angle_map[1, 0, 0]

    J_low = max(
        prop.blade_angle_J_min, prop.blade_angle_map[
            0, 0,
            max(
                min(N.searchsorted(prop.blade_angle_map[0, 0,
                                                        1:], J), prop.x_size -
                    2), 1)])
    if J_low == prop.blade_angle_J_max:
        J_low = prop.blade_angle_map[0, 0, -2]
    J_high = min(
        prop.blade_angle_J_max, prop.blade_angle_map[
            0, 0,
            min(N.searchsorted(prop.blade_angle_map[0, 0,
                                                    1:], J), prop.x_size - 2) +
            1])
    if J_high == prop.blade_angle_J_min:
        J_high = prop.blade_angle_map[0, 0, 2]

    Cp_low = max(
        prop.blade_angle_Cp_min, prop.blade_angle_map[
            0,
            max(
                min(N.searchsorted(prop.blade_angle_map[0, 1:,
                                                        0], Cp), prop.y_size -
                    1), 1), 0])
    if Cp_low == prop.blade_angle_Cp_max:
        # print 'in CP-low'
        Cp_low = prop.blade_angle_map[0, -2, 0]
    Cp_high = min(
        prop.blade_angle_Cp_max, prop.blade_angle_map[
            0,
            min(N.searchsorted(prop.blade_angle_map[0, 1:,
                                                    0], Cp), prop.y_size - 1) +
            1, 0])
    if Cp_high == prop.blade_angle_Cp_min:
        # print 'in CP-high'
        Cp_high = prop.blade_angle_map[0, 2, 0]

    # get eff for mach_low, J_low and Cp_low
    blade_angle_low_low_low = pull_blade_angle_data_point(
        prop, mach_low, J_low, Cp_low)

    # get eff for mach_low, J_high and Cp_low
    blade_angle_low_high_low = pull_blade_angle_data_point(
        prop, mach_low, J_high, Cp_low)

    # get eff for mach_low, J_low and Cp_high
    blade_angle_low_low_high = pull_blade_angle_data_point(
        prop, mach_low, J_low, Cp_high)

    # get eff for mach_low, J_high and Cp_high
    blade_angle_low_high_high = pull_blade_angle_data_point(
        prop, mach_low, J_high, Cp_high)

    # get eff for mach_high, J_low and Cp_low
    blade_angle_high_low_low = pull_blade_angle_data_point(
        prop, mach_high, J_low, Cp_low)

    # get eff for mach_high, J_high and Cp_low
    blade_angle_high_high_low = pull_blade_angle_data_point(
        prop, mach_high, J_high, Cp_low)

    # get eff for mach_high, J_low and Cp_high
    blade_angle_high_low_high = pull_blade_angle_data_point(
        prop, mach_high, J_low, Cp_high)

    # get eff for mach_high, J_high and Cp_high
    blade_angle_high_high_high = pull_blade_angle_data_point(
        prop, mach_high, J_high, Cp_high)

    x = [J_low, J_high]
    y = [Cp_low, Cp_high]
    z = [mach_low, mach_high]

    values = [[[blade_angle_low_low_low, blade_angle_low_high_low],
               [blade_angle_low_low_high, blade_angle_low_high_high]],
              [[blade_angle_high_low_low, blade_angle_high_high_low],
               [blade_angle_high_low_high, blade_angle_high_high_high]]]

    blade_angle = I.interpolate3(x, y, z, values, J, Cp, tip_mach)

    return blade_angle
示例#6
0
def cp2eff(prop, Cp, J, tip_mach):
    """
    Returns prop efficiency, given power coefficient (Cp), advance ratio
    (J) and the mach number of the blade tip.
    """
    mach_low = max(
        prop.eff_mach_min, prop.prop_eff_map[max(
            min(
                N.searchsorted(prop.prop_eff_map[:, 0, 0], tip_mach) -
                1, prop.z_size - 1), 0), 0, 0])
    if mach_low == prop.eff_mach_max:
        mach_low = prop.prop_eff_map[-2, 0, 0]
    mach_high = min(
        prop.eff_mach_max, prop.prop_eff_map[
            min(N.searchsorted(prop.prop_eff_map[:, 0,
                                                 0], tip_mach), prop.z_size -
                1), 0, 0])
    if mach_high == prop.eff_mach_min:
        mach_high = prop.prop_eff_map[1, 0, 0]

    J_low = max(
        prop.eff_J_min, prop.prop_eff_map[
            0, 0,
            max(
                min(N.searchsorted(prop.prop_eff_map[0, 0,
                                                     1:], J), prop.x_size -
                    2), 1)])
    if J_low == prop.eff_J_max:
        J_low = prop.prop_eff_map[0, 0, -2]
    J_high = min(
        prop.eff_J_max,
        prop.prop_eff_map[0, 0,
                          min(N.searchsorted(prop.prop_eff_map[
                              0, 0, 1:], J), prop.x_size - 2) + 1])
    if J_high == prop.eff_J_min:
        J_high = prop.prop_eff_map[0, 0, 2]
    if J_high == J_low:
        J_high = J_low + 0.1

    Cp_low = max(
        prop.eff_Cp_min, prop.prop_eff_map[
            0,
            max(
                min(N.searchsorted(prop.prop_eff_map[0, 1:,
                                                     0], Cp), prop.y_size -
                    1), 1), 0])
    if Cp_low == prop.eff_Cp_max:
        # print 'in CP-low'
        Cp_low = prop.prop_eff_map[0, -2, 0]
    Cp_high = min(
        prop.eff_Cp_max,
        prop.prop_eff_map[0,
                          min(N.searchsorted(prop.prop_eff_map[
                              0, 1:, 0], Cp), prop.y_size - 1) + 1, 0])
    if Cp_high == prop.eff_Cp_min:
        # print 'in CP-high'
        Cp_high = prop.prop_eff_map[0, 2, 0]
    if Cp_high == Cp_low:
        Cp_high = Cp_low + 0.01

    # get eff for mach_low, J_low and Cp_low
    eff_low_low_low = pull_eff_data_point(prop, mach_low, J_low, Cp_low)

    # get eff for mach_low, J_high and Cp_low
    eff_low_high_low = pull_eff_data_point(prop, mach_low, J_high, Cp_low)

    # get eff for mach_low, J_low and Cp_high
    eff_low_low_high = pull_eff_data_point(prop, mach_low, J_low, Cp_high)

    # get eff for mach_low, J_high and Cp_high
    eff_low_high_high = pull_eff_data_point(prop, mach_low, J_high, Cp_high)

    # get eff for mach_high, J_low and Cp_low
    eff_high_low_low = pull_eff_data_point(prop, mach_high, J_low, Cp_low)

    # get eff for mach_high, J_high and Cp_low
    eff_high_high_low = pull_eff_data_point(prop, mach_high, J_high, Cp_low)

    # get eff for mach_high, J_low and Cp_high
    eff_high_low_high = pull_eff_data_point(prop, mach_high, J_low, Cp_high)

    # get eff for mach_high, J_high and Cp_high
    eff_high_high_high = pull_eff_data_point(prop, mach_high, J_high, Cp_high)

    x = [J_low, J_high]
    y = [Cp_low, Cp_high]
    z = [mach_low, mach_high]

    values = [[[eff_low_low_low, eff_low_high_low],
               [eff_low_low_high, eff_low_high_high]],
              [[eff_high_low_low, eff_high_high_low],
               [eff_high_low_high, eff_high_high_high]]]

    # print '[J_low, J_high]:', x
    # print '[Cp_low, Cp_high]:', y
    # print '[mach_low, mach_high:]', z
    # print '[[[eff_low_low_low, eff_low_high_low], [eff_low_low_high, eff_low_high_high]], [[eff_high_low_low, eff_high_high_low], [eff_high_low_high, eff_high_high_high]]]:', values
    # print 'J:', J
    # print 'Cp:', Cp
    # print 'tip mach:', tip_mach

    eff = I.interpolate3(x, y, z, values, J, Cp, tip_mach)

    return eff