"""Метод Арккио: момент по воздушному кольцу.
Встроенный Python FEMM 5. Аналитический контроль; не квитанция полевого решения.
"""
from math import pi, sqrt, sin, cos

# Исходные данные приведены в СИ; результат сравнивается с примером урока.
result = 0.1*2*pi*0.1*0.02*(0.03**3-0.02**3)/(3*4*pi*1e-7*(0.03-0.02))
# Контрольный вывод: Н·м.
print(result)

# Интегрирование открытого магнитостатического Planar-решения.
# r1, r2, length_m — метры; coord_m — метров в единице координат FEMM.
def arkkio(r1, r2, length_m, coord_m, nr=20, nt=1440):
    if not (0 < r1 < r2 and length_m > 0 and coord_m > 0):
        raise ValueError("Проверьте радиусы, глубину и единицы")
    if nr < 2 or nt < 8:
        raise ValueError("Недостаточная квадратура")
    dr = (r2-r1)/nr
    dt = 2*pi/nt
    total = 0.0
    for j in range(nr):
        r = r1+(j+0.5)*dr
        for k in range(nt):
            a = (k+0.5)*dt
            values = mo_getpointvalues(r*cos(a)/coord_m, r*sin(a)/coord_m)
            bx, by = values[1], values[2]
            br = bx*cos(a)+by*sin(a)
            bt = -bx*sin(a)+by*cos(a)
            total += r*r*br*bt*dr*dt
    return length_m*total/(4*pi*1e-7*(r2-r1))

# После открытия решения вызовите arkkio с параметрами именно его воздушного кольца.
# Повторите с удвоенными nr и nt; радиусы при проверке квадратуры не меняются.
