@sh.add_function(
dsp,
inputs=[
'cycle_type', 'velocity_speed_ratios', 'MVL', 'idle_engine_speed',
'full_load_curve', 'engine_speed_at_max_power'
],
outputs=['correct_gear']
)
def correct_gear_v4(
cycle_type, velocity_speed_ratios, mvl, idle_engine_speed,
full_load_curve, engine_speed_at_max_power):
"""
Returns a function to correct the gear predicted according to
:func:`correct_gear_mvl`, :func:`correct_gear_full_load` and driveability
rules.
:param cycle_type:
Cycle type (WLTP or NEDC).
:type cycle_type: str
:param velocity_speed_ratios:
Constant velocity speed ratios of the gear box [km/(h*RPM)].
:type velocity_speed_ratios: dict[int | float]
:param mvl:
Matrix velocity limits (upper and lower bound) [km/h].
:type mvl: MVL
:param idle_engine_speed:
Engine speed idle median and std [RPM].
:type idle_engine_speed: (float, float)
:param full_load_curve:
Vehicle full load curve.
:type full_load_curve: function
:param engine_speed_at_max_power:
Rated engine speed [RPM].
:type engine_speed_at_max_power: float
:return:
A function to correct the predicted gear.
:rtype: callable
"""
from .at_gear import correct_gear_v0
cg = correct_gear_v0(
cycle_type, velocity_speed_ratios, mvl, idle_engine_speed,
full_load_curve
)
cg.fit_correct_driveability_rules(engine_speed_at_max_power)
return cg