@sh.add_function(dsp, outputs=['MGS', 'MVL'])
def define_msg_and_mvl(
full_load_curve, road_loads, velocity_speed_ratios,
engine_max_speed_95, idle_engine_speed, engine_speed_at_max_power):
"""
Calculates the maximum velocity from full load curve.
:param full_load_curve:
Vehicle full load curve.
:type full_load_curve: function
:param road_loads:
Cycle road loads [N, N/(km/h), N/(km/h)^2].
:type road_loads: list, tuple
:param velocity_speed_ratios:
Constant velocity speed ratios of the gear box [km/(h*RPM)].
:type velocity_speed_ratios: dict[int | float]
:param engine_max_speed_95:
Maximum engine speed [RPM] at 95% of the nominal power.
:type engine_max_speed_95: float
:param idle_engine_speed:
Engine speed idle median and std [RPM].
:type idle_engine_speed: (float, float)
:param engine_speed_at_max_power:
Engine speed at engine nominal power [RPM].
:type engine_speed_at_max_power: float
:return:
Maximum velocity and gear at maximum velocity [km/h, -].
:return: float, int
"""
from .at_gear import MVL
mgs = MGS().fit(
full_load_curve, engine_speed_at_max_power, road_loads,
engine_max_speed_95, velocity_speed_ratios, idle_engine_speed
)
mvl = MVL()
mvl.update(mgs)
mvl.velocity_speed_ratios = velocity_speed_ratios
return mgs, mvl