@sh.add_function(dsp, outputs=['drive_battery_n_parallel_cells'], weight=5)
def calculate_drive_battery_n_parallel_cells_v1(
drive_battery_technology, drive_battery_nominal_voltage,
drive_battery_n_cells):
"""
Calculate the number of battery cells in parallel [-].
:param drive_battery_technology:
Drive battery technology type (e.g., NiMH, Li-NCA (Li-Ni-Co-Al), etc.).
:type drive_battery_technology: str
:param drive_battery_n_cells:
Number of battery cells [-].
:type drive_battery_n_cells: int
:param drive_battery_nominal_voltage:
Drive battery nominal voltage [V].
:type drive_battery_nominal_voltage: float
:return:
Number of battery cells in parallel [-].
:rtype: int
"""
v = dfl.functions.calculate_drive_battery_n_parallel_cells_v1.reference_volt
v = v.get(drive_battery_technology, v['unknown'])
n = np.ceil(v / drive_battery_nominal_voltage * drive_battery_n_cells)
n = int(min(n, drive_battery_n_cells))
while n < drive_battery_n_cells and drive_battery_n_cells % n:
n += 1
return n