@sh.add_function(dsp, outputs=['torque_converter_speed_model'])
def define_tc_speed_model(
normalized_VDI253_model, m1000_curve_factor, idle_engine_speed):
"""
Define torque converter speed model.
:param normalized_VDI253_model:
Normalized VDI253 model function.
:type normalized_VDI253_model: scipy.interpolate.LinearNDInterpolator
:param m1000_curve_factor:
Rescaling factor of m1000 curve [N*m/1e6].
:type m1000_curve_factor: float
:param idle_engine_speed:
Idle engine speed and its standard deviation [RPM].
:type idle_engine_speed: (float, float)
:return:
Torque converter speed model.
:rtype: callable
"""
# noinspection PyMissingOrEmptyDocstring,PyUnusedLocal
def model(times, **kwargs):
gbs, gbt = kwargs['gear_box_speeds_in'], kwargs['gear_box_torques_in']
es = normalized_VDI253_model((gbs, gbt / m1000_curve_factor))
return np.nan_to_num(es - np.maximum(gbs, idle_engine_speed[0]))
return model