"""Однопараметрическая оптимизация чашечного электромагнита.

Среда: встроенный Python FEMM 5.
Проверяется только авторский аналитический эталон, полевой решатель не вызывается.
Полученные числа не являются квитанцией расчёта электромагнита или машины.
"""

# Длины магнитной цепи переводим в метры, площади — в квадратные метры.
# Из требуемой силы находим эффективную и центральную площади; проверяем достижимость перед делением.
import math
mu0 = 4 * math.pi * 1e-7
R_mm, t_mm, gap_m = 25.0, 4.0, 0.001
turns, current_a, force_n = 400, 1.5, 50.0
return_area = math.pi * (R_mm**2 - (R_mm - t_mm)**2) * 1e-6
effective_area = 2 * gap_m**2 * force_n / (mu0 * (turns * current_a)**2)
if effective_area >= return_area:
    raise ValueError("Требуемая сила недостижима в этой идеализации")
central_area = effective_area * return_area / (return_area - effective_area)
radius_mm = math.sqrt(central_area / math.pi) * 1000
print("Радиус аналитической цепи, мм:", radius_mm)
