Skip to content

Clutch Model Torque Converter Model

stefanosts edited this page Aug 6, 2016 · 1 revision

Both models are "disabled" on Parametric CO2MPAS, and they return zeros as output.

Inputs

Name Units Source / Comments Parameter

Outputs

  • Delta Speeds Clutch / Torque Converter [RPM] / clutch_tc_speeds_delta
  • Powers Clutch / Torque Converter [kW] / clutch_tc_powers

Source Code

def define_clutch_prediction_model_parametric():

    def no_clutch(X):
        return np.zeros(X.shape[0])

    return no_clutch, (0, 0)

def predict_clutch_speeds_delta(clutch_model, clutch_phases, accelerations):

    delta = np.zeros_like(accelerations, dtype=float)
    X = np.array([accelerations[clutch_phases]]).T
    delta[clutch_phases] = clutch_model(X)

    return delta


def define_torque_converter_model_parametric():
    
    def no_torque_converter(X):
        return np.zeros(X.shape[0])

    return no_torque_converter

def predict_torque_converter_speeds_delta(
        torque_converter_model, accelerations, velocities, gear_box_speeds_in,
        gears):

    X = np.array([accelerations, velocities, gear_box_speeds_in, gears]).T

    return torque_converter_model(X)


def calculate_clutch_TC_powers(
        clutch_tc_speeds_delta, k_factor_curve, gear_box_speeds_in,
        gear_box_powers_in, engine_speeds_out):

    is_not_eng2gb = gear_box_speeds_in >= engine_speeds_out
    speed_out = np.where(is_not_eng2gb, engine_speeds_out, gear_box_speeds_in)
    speed_in = np.where(is_not_eng2gb, gear_box_speeds_in, engine_speeds_out)

    ratios = np.ones_like(gear_box_powers_in, dtype=float)
    b = (speed_in > 0) & (clutch_tc_speeds_delta != 0)
    ratios[b] = speed_out[b] / speed_in[b]

    eff = k_factor_curve(ratios) * ratios
    eff[is_not_eng2gb] = np.nan_to_num(1 / eff[is_not_eng2gb])

    powers = gear_box_powers_in.copy()
    b = eff > 0
    powers[b] = gear_box_powers_in[b] / eff[b]

    return powers