"""Оптимизация геометрии машины с поверхностными постоянными магнитами.

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

# Геометрию задаём в миллиметрах и градусах, затем переводим угол в радианы, объём — в см³.
# Независимая аналитическая волна момента в Н·м показывает потерю экстремумов на редкой сетке углов.
import math
p, length_mm, radius_mm, thickness_mm, arc_deg = 2, 80.0, 57.0, 7.0, 72.0
arc_rad = arc_deg * math.pi / 180
volume_cm3 = p * length_mm * arc_rad * (radius_mm**2 - (radius_mm - thickness_mm)**2) / 1000
print("Объем всех магнитов, см³:", volume_cm3)
for count in (4, 12, 24):
    torque = [10 + 2 * math.cos(8 * math.pi * k / count) for k in range(count)]
    print("Число углов:", count, "Среднее, Н·м:", sum(torque) / count, "Размах, Н·м:", max(torque) - min(torque))
