@sh.add_function(dsp, outputs=['engine_power_losses_function'])
def define_engine_power_losses_function(
engine_moment_inertia, auxiliaries_torque_loss, auxiliaries_power_loss):
"""
Define engine power losses function.
:param engine_moment_inertia:
Engine moment of inertia [kg*m2].
:type engine_moment_inertia: float
:param auxiliaries_torque_loss:
Constant torque loss due to engine auxiliaries [N*m].
:type auxiliaries_torque_loss: float
:param auxiliaries_power_loss:
Constant power loss due to engine auxiliaries [kW].
:type auxiliaries_power_loss: float
:return:
Engine power losses function.
:rtype: function
"""
from ..engine import (
calculate_auxiliaries_power_losses as aux_p,
calculate_auxiliaries_torque_losses as aux_t,
calculate_engine_inertia_powers_losses as ine_p
)
# noinspection PyMissingOrEmptyDocstring
def engine_power_losses_function(times, engine_speeds, inertia=True):
p = 0
if inertia:
p = ine_p(times, engine_speeds, engine_moment_inertia)
return p + aux_p(
aux_t(times, auxiliaries_torque_loss), engine_speeds,
np.ones_like(engine_speeds, bool), auxiliaries_power_loss
)
return engine_power_losses_function