"""Синхронная реактивная машина и перекрёстное насыщение.

Среда: встроенный MicroPython FEMM 5.
Аналитический учебный пример; полевой решатель не вызывается.
Параметры, единицы величин и порядок вывода пояснены по стадиям.
"""

import math

# Линейная синхронная реактивная машина: число пар полюсов; Ld и Lq, Гн; амплитуда тока, А.
pole_pairs, ld, lq, current = 2, 0.020, 0.008, 10.0
# Исследуем три направления вектора тока при неизменной амплитуде.
for angle_deg in [30, 45, 60]:
    angle = math.radians(angle_deg)
    # Разложение на продольную и поперечную составляющие сохраняет id² + iq² = I².
    id_a, iq_a = current * math.cos(angle), current * math.sin(angle)
    # Момент связан с разностью индуктивностей по осям; постоянных магнитов в эталоне нет.
    torque = 1.5 * pole_pairs * (ld - lq) * id_a * iq_a
    # Порядок вывода: угол, градусы; продольный ток, А; поперечный ток, А; момент, Н·м.
    print(angle_deg, id_a, iq_a, torque)
