"""Работа на сеть и выбор независимых условий.

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

import math

# Фазное напряжение и ЭДС — действующие значения, В; синхронное реактивное сопротивление — Ом.
# Учебный ориентир пренебрегает активным сопротивлением и насыщением.
voltage_rms, emf_rms, reactance = 230.0, 260.0, 5.0
# Угол между ЭДС и напряжением сначала переводим из градусов в радианы.
angle = math.radians(20)
active_w = 3 * voltage_rms * emf_rms / reactance * math.sin(angle)
reactive_var = 3 * voltage_rms * (emf_rms * math.cos(angle) - voltage_rms) / reactance
# Порядок вывода: активная мощность, Вт; реактивная мощность, вар.
print(active_w, reactive_var)
# Обратная задача: определяем угол для заданной активной мощности, Вт.
target_w = 10000.0
ratio = target_w * reactance / (3 * voltage_rms * emf_rms)
# Аргумент арксинуса должен находиться в диапазоне от −1 до 1.
if abs(ratio) > 1:
    raise ValueError("Заданная мощность вне линейного диапазона")
print("Угол для 10 кВт, градусы:", math.degrees(math.asin(ratio)))
