"""Функция аналитического состояния линейной катушки.

Аргументы: ток [А], неотрицательная постоянная индуктивность [Гн].
Результат: кортеж (потокосцепление [Вб·виток], энергия [Дж]). Отрицательный
ток меняет знак Ψ, энергия остаётся неотрицательной. Насыщения и магнитов нет.
"""

# 1. Функция отделяет расчёт от вывода; значение L по умолчанию равно 0,12 Гн.
def coil_state(current_a, inductance_h=0.12):
    """Вернуть потокосцепление, Вб, и энергию, Дж, линейной катушки."""
    # Отрицательная L выходит за рамки этой пассивной аналитической модели.
    if inductance_h < 0:
        raise ValueError('Индуктивность должна быть неотрицательной')
    # Обе величины вычисляются из одних исходных данных и возвращаются вместе.
    return (inductance_h * current_a, inductance_h * current_a ** 2 / 2)

# 2. Распаковываем кортеж и проверяем режим 4 А и нулевое возбуждение.
linkage_wb, energy_j = coil_state(4.0)
assert abs(linkage_wb - 0.48) < 1e-12
assert abs(energy_j - 0.96) < 1e-12
assert coil_state(0.0) == (0.0, 0.0)
print('Потокосцепление, Вб:', linkage_wb, 'энергия, Дж:', energy_j, sep=' ')
